@envive-ai/react-hooks 0.1.5 → 0.1.7

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 (747) hide show
  1. package/dist/NewOrgConfig-C5YL4Y62.cjs +20 -0
  2. package/dist/NewOrgConfig-CRyIfb_l.js +15 -0
  3. package/dist/SystemSettingsContext-Cb9YHln8.cjs +20 -0
  4. package/dist/SystemSettingsContext-D3mmGGcv.js +13 -0
  5. package/dist/TrackComponentVisibleEvent-C7c_rHFW.cjs +59 -0
  6. package/dist/TrackComponentVisibleEvent-DXTEBjGM.js +52 -0
  7. package/dist/amplitudeContext-CB_F-nJY.d.cts +52 -0
  8. package/dist/amplitudeContext-Cak6ijMq.js +287 -0
  9. package/dist/amplitudeContext-DFYBDc0h.d.ts +52 -0
  10. package/dist/amplitudeContext-sTEsPaVG.cjs +309 -0
  11. package/dist/api-DSFlctlc.cjs +269 -0
  12. package/dist/api-JTNjuOfc.js +190 -0
  13. package/dist/app-D_upYeqF.js +132 -0
  14. package/dist/app-KXTMPa4s.cjs +178 -0
  15. package/dist/application/models/graphql/index.cjs +4 -12
  16. package/dist/application/models/graphql/index.d.cts +1 -1
  17. package/dist/application/models/graphql/index.d.ts +1 -1
  18. package/dist/application/models/graphql/index.js +2 -10
  19. package/dist/application/models/guards/api/index.cjs +2 -2
  20. package/dist/application/models/guards/api/index.d.cts +2 -2
  21. package/dist/application/models/guards/api/index.d.ts +2 -2
  22. package/dist/application/models/guards/api/index.js +2 -2
  23. package/dist/application/models/index.cjs +52 -56
  24. package/dist/application/models/index.d.cts +10 -8
  25. package/dist/application/models/index.d.ts +11 -9
  26. package/dist/application/models/index.js +10 -11
  27. package/dist/application/models/utilityTypes/index.cjs +1 -1
  28. package/dist/application/models/utilityTypes/index.d.cts +1 -1
  29. package/dist/application/models/utilityTypes/index.d.ts +1 -1
  30. package/dist/application/models/utilityTypes/index.js +1 -1
  31. package/dist/application/models/variantInfo/index.cjs +1 -1
  32. package/dist/application/models/variantInfo/index.d.ts +1 -1
  33. package/dist/application/models/variantInfo/index.js +1 -1
  34. package/dist/application/utils/index.cjs +46 -37
  35. package/dist/application/utils/index.d.cts +21 -13
  36. package/dist/application/utils/index.d.ts +21 -13
  37. package/dist/application/utils/index.js +19 -10
  38. package/dist/{atomStore-JwGb7pcy.cjs → atomStore-DEZyFCNz.cjs} +1 -1
  39. package/dist/{atomStore-B1cgmbP0.js → atomStore-DnPEioF4.js} +1 -1
  40. package/dist/atoms/app/index.cjs +18 -16
  41. package/dist/atoms/app/index.d.cts +23 -18
  42. package/dist/atoms/app/index.d.ts +24 -19
  43. package/dist/atoms/app/index.js +14 -11
  44. package/dist/atoms/atomStore/index.cjs +2 -1
  45. package/dist/atoms/atomStore/index.d.cts +24 -2
  46. package/dist/atoms/atomStore/index.d.ts +24 -2
  47. package/dist/atoms/atomStore/index.js +2 -1
  48. package/dist/atoms/chat/index.cjs +50 -40
  49. package/dist/atoms/chat/index.d.cts +38 -35
  50. package/dist/atoms/chat/index.d.ts +39 -36
  51. package/dist/atoms/chat/index.js +20 -10
  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 +18 -38
  57. package/dist/atoms/org/index.d.cts +36 -54
  58. package/dist/atoms/org/index.d.ts +36 -54
  59. package/dist/atoms/org/index.js +5 -11
  60. package/dist/atoms/search/index.cjs +57 -41
  61. package/dist/atoms/search/index.d.cts +11 -8
  62. package/dist/atoms/search/index.d.ts +12 -9
  63. package/dist/atoms/search/index.js +26 -10
  64. package/dist/atoms/search/types.cjs +5 -0
  65. package/dist/atoms/search/types.d.cts +2 -0
  66. package/dist/atoms/search/types.d.ts +2 -0
  67. package/dist/atoms/search/types.js +3 -0
  68. package/dist/cdnContext-BMjVfBft.cjs +53 -0
  69. package/dist/cdnContext-DgsJ00Tb.js +38 -0
  70. package/dist/{chat-CHmD79E1.js → chat-B4lkFIxz.js} +1 -1
  71. package/dist/chat-D1Eat8Ih.cjs +394 -0
  72. package/dist/chat-DPJGdUkz.js +258 -0
  73. package/dist/{chat-_NzpO_Hn.cjs → chat-zA-K4tR_.cjs} +1 -1
  74. package/dist/chatElementDisplayLocation-9SW40Dd3.d.cts +25 -0
  75. package/dist/chatElementDisplayLocation-C1tRM5OD.d.ts +25 -0
  76. package/dist/chatSearch-B5jMnCYX.js +315 -0
  77. package/dist/chatSearch-DWMiyWN0.cjs +444 -0
  78. package/dist/chatState-BisPJd5g.cjs +120 -0
  79. package/dist/chatState-BrmBYY8l.js +34 -0
  80. package/dist/commerce-api-CxDIfeME.cjs +318 -0
  81. package/dist/commerce-api-DagLj3D_.js +311 -0
  82. package/dist/{components-Dl-TMD9k.js → components-B1edduHz.js} +1 -1
  83. package/dist/{components-D0XDRcaN.cjs → components-g0G58Kat.cjs} +1 -1
  84. package/dist/config/locators/components/chat/index.cjs +1 -1
  85. package/dist/config/locators/components/chat/index.d.cts +1 -1
  86. package/dist/config/locators/components/chat/index.d.ts +1 -1
  87. package/dist/config/locators/components/chat/index.js +1 -1
  88. package/dist/config/locators/components/chat/variants/index.d.cts +1 -1
  89. package/dist/config/locators/components/chat/variants/index.d.ts +1 -1
  90. package/dist/config/locators/components/index.cjs +1 -1
  91. package/dist/config/locators/components/index.d.cts +1 -1
  92. package/dist/config/locators/components/index.d.ts +1 -1
  93. package/dist/config/locators/components/index.js +1 -1
  94. package/dist/config/locators/components/search/index.d.cts +1 -1
  95. package/dist/config/locators/components/search/index.d.ts +1 -1
  96. package/dist/config/locators/index.cjs +42 -22
  97. package/dist/config/locators/index.d.cts +2 -2
  98. package/dist/config/locators/index.d.ts +3 -3
  99. package/dist/config/locators/index.js +25 -5
  100. package/dist/contexts/amplitudeContext/index.cjs +21 -0
  101. package/dist/contexts/amplitudeContext/index.d.cts +2 -0
  102. package/dist/contexts/amplitudeContext/index.d.ts +2 -0
  103. package/dist/contexts/amplitudeContext/index.js +19 -0
  104. package/dist/contexts/cdnContext/index.cjs +7 -0
  105. package/dist/contexts/cdnContext/index.d.cts +15 -0
  106. package/dist/contexts/cdnContext/index.d.ts +15 -0
  107. package/dist/contexts/cdnContext/index.js +6 -0
  108. package/dist/contexts/chatContext/index.cjs +329 -0
  109. package/dist/contexts/chatContext/index.d.cts +15 -0
  110. package/dist/contexts/chatContext/index.d.ts +15 -0
  111. package/dist/contexts/chatContext/index.js +322 -0
  112. package/dist/contexts/enviveConfigContext/index.cjs +7 -0
  113. package/dist/contexts/enviveConfigContext/index.d.cts +30 -0
  114. package/dist/contexts/enviveConfigContext/index.d.ts +30 -0
  115. package/dist/contexts/enviveConfigContext/index.js +6 -0
  116. package/dist/contexts/enviveCssContext/index.cjs +65 -0
  117. package/dist/contexts/enviveCssContext/index.d.cts +10 -0
  118. package/dist/contexts/enviveCssContext/index.d.ts +10 -0
  119. package/dist/contexts/enviveCssContext/index.js +62 -0
  120. package/dist/contexts/featureFlagContext/index.cjs +107 -0
  121. package/dist/contexts/featureFlagContext/index.d.cts +20 -0
  122. package/dist/contexts/featureFlagContext/index.d.ts +20 -0
  123. package/dist/contexts/featureFlagContext/index.js +103 -0
  124. package/dist/contexts/featureFlagServiceContext/index.cjs +6 -0
  125. package/dist/contexts/featureFlagServiceContext/index.d.cts +5 -0
  126. package/dist/contexts/featureFlagServiceContext/index.d.ts +5 -0
  127. package/dist/contexts/featureFlagServiceContext/index.js +5 -0
  128. package/dist/contexts/graphqlContext/index.cjs +15 -0
  129. package/dist/contexts/graphqlContext/index.d.cts +12 -0
  130. package/dist/contexts/graphqlContext/index.d.ts +12 -0
  131. package/dist/contexts/graphqlContext/index.js +14 -0
  132. package/dist/contexts/localStorageContext/index.cjs +6 -0
  133. package/dist/contexts/localStorageContext/index.d.cts +30 -0
  134. package/dist/contexts/localStorageContext/index.d.ts +30 -0
  135. package/dist/contexts/localStorageContext/index.js +4 -0
  136. package/dist/contexts/newOrgConfigContext/index.cjs +19 -0
  137. package/dist/contexts/newOrgConfigContext/index.d.cts +30 -0
  138. package/dist/contexts/newOrgConfigContext/index.d.ts +30 -0
  139. package/dist/contexts/newOrgConfigContext/index.js +18 -0
  140. package/dist/contexts/searchContext/index.cjs +23 -0
  141. package/dist/contexts/searchContext/index.d.cts +16 -0
  142. package/dist/contexts/searchContext/index.d.ts +16 -0
  143. package/dist/contexts/searchContext/index.js +22 -0
  144. package/dist/contexts/sessionStorageContext/index.cjs +5 -0
  145. package/dist/contexts/sessionStorageContext/index.d.cts +15 -0
  146. package/dist/contexts/sessionStorageContext/index.d.ts +15 -0
  147. package/dist/contexts/sessionStorageContext/index.js +4 -0
  148. package/dist/contexts/shopifyUrlContext/index.cjs +5 -0
  149. package/dist/contexts/shopifyUrlContext/index.d.cts +20 -0
  150. package/dist/contexts/shopifyUrlContext/index.d.ts +20 -0
  151. package/dist/contexts/shopifyUrlContext/index.js +4 -0
  152. package/dist/contexts/systemSettingsContext/index.cjs +8 -0
  153. package/dist/contexts/systemSettingsContext/index.d.cts +36 -0
  154. package/dist/contexts/systemSettingsContext/index.d.ts +36 -0
  155. package/dist/contexts/systemSettingsContext/index.js +6 -0
  156. package/dist/contexts/types.cjs +7 -0
  157. package/dist/contexts/types.d.cts +4 -0
  158. package/dist/contexts/types.d.ts +4 -0
  159. package/dist/contexts/types.js +3 -0
  160. package/dist/contexts/userIdentityContext/index.cjs +26 -0
  161. package/dist/contexts/userIdentityContext/index.d.cts +2 -0
  162. package/dist/contexts/userIdentityContext/index.d.ts +2 -0
  163. package/dist/contexts/userIdentityContext/index.js +25 -0
  164. package/dist/domObserver-B6cRGTny.js +285 -0
  165. package/dist/domObserver-DQZwhPrc.cjs +304 -0
  166. package/dist/enviveConfig-BJZ4zTJo.js +62 -0
  167. package/dist/enviveConfig-DdBrcGSQ.cjs +130 -0
  168. package/dist/enviveConfigContext-78orE_uH.cjs +60 -0
  169. package/dist/enviveConfigContext-jBCCWQH9.js +45 -0
  170. package/dist/events/index.cjs +1 -1
  171. package/dist/events/index.d.ts +1 -1
  172. package/dist/events/index.js +1 -1
  173. package/dist/{events-ClCDFK7t.js → events-BHJJjPDN.js} +1 -1
  174. package/dist/{events-Da7gpmGv.cjs → events-B_fJZf9E.cjs} +1 -1
  175. package/dist/featureFlagServiceContext-ChL7DJ53.cjs +56 -0
  176. package/dist/featureFlagServiceContext-D1PzHsEs.d.ts +23 -0
  177. package/dist/featureFlagServiceContext-DQwlCTde.d.cts +23 -0
  178. package/dist/featureFlagServiceContext-DzFfmb1Z.js +42 -0
  179. package/dist/featureGates-Blx10fwB.js +27 -0
  180. package/dist/featureGates-DcZNrUma.cjs +33 -0
  181. package/dist/frontendConfig-DrvrQSm8.d.ts +857 -0
  182. package/dist/frontendConfig-wg41mBok.d.cts +857 -0
  183. package/dist/{globalSearch-BTeZxvk1.cjs → globalSearch-Bnjlxtr5.cjs} +1 -1
  184. package/dist/{globalSearch-b0wC7ZEO.js → globalSearch-CRWUqnjq.js} +1 -1
  185. package/dist/graphql-B9HhDXYt.cjs +53 -0
  186. package/dist/graphql-W7GMIHUu.js +36 -0
  187. package/dist/graphqlConfig-Bn-HLHsh.cjs +39 -0
  188. package/dist/graphqlConfig-DtZm_YaH.js +14 -0
  189. package/dist/graphqlContext-BJg7B--J.js +96 -0
  190. package/dist/graphqlContext-DI-_VRmb.cjs +111 -0
  191. package/dist/hooks/AmplitudeOperations/index.cjs +21 -0
  192. package/dist/hooks/AmplitudeOperations/index.d.cts +12 -0
  193. package/dist/hooks/AmplitudeOperations/index.d.ts +12 -0
  194. package/dist/hooks/AmplitudeOperations/index.js +21 -0
  195. package/dist/hooks/AppDetails/index.cjs +18 -0
  196. package/dist/hooks/AppDetails/index.d.cts +26 -0
  197. package/dist/hooks/AppDetails/index.d.ts +26 -0
  198. package/dist/hooks/AppDetails/index.js +18 -0
  199. package/dist/hooks/BlockBackButton/index.cjs +29 -0
  200. package/dist/hooks/BlockBackButton/index.d.cts +5 -0
  201. package/dist/hooks/BlockBackButton/index.d.ts +5 -0
  202. package/dist/hooks/BlockBackButton/index.js +27 -0
  203. package/dist/hooks/CdnOperations/index.cjs +24 -0
  204. package/dist/hooks/CdnOperations/index.d.cts +7 -0
  205. package/dist/hooks/CdnOperations/index.d.ts +7 -0
  206. package/dist/hooks/CdnOperations/index.js +22 -0
  207. package/dist/hooks/ChatToggle/index.cjs +63 -0
  208. package/dist/hooks/ChatToggle/index.d.cts +12 -0
  209. package/dist/hooks/ChatToggle/index.d.ts +12 -0
  210. package/dist/hooks/ChatToggle/index.js +61 -0
  211. package/dist/hooks/ChatToggleAnalytics/index.cjs +37 -0
  212. package/dist/hooks/ChatToggleAnalytics/index.d.cts +9 -0
  213. package/dist/hooks/ChatToggleAnalytics/index.d.ts +9 -0
  214. package/dist/hooks/ChatToggleAnalytics/index.js +35 -0
  215. package/dist/hooks/CustomerSupportHandoff/index.cjs +36 -0
  216. package/dist/hooks/CustomerSupportHandoff/index.d.cts +16 -0
  217. package/dist/hooks/CustomerSupportHandoff/index.d.ts +16 -0
  218. package/dist/hooks/CustomerSupportHandoff/index.js +34 -0
  219. package/dist/hooks/Debounce/index.cjs +3 -0
  220. package/dist/hooks/Debounce/index.d.cts +5 -0
  221. package/dist/hooks/Debounce/index.d.ts +5 -0
  222. package/dist/hooks/Debounce/index.js +3 -0
  223. package/dist/hooks/ElementObserver/index.cjs +179 -0
  224. package/dist/hooks/ElementObserver/index.d.cts +29 -0
  225. package/dist/hooks/ElementObserver/index.d.ts +29 -0
  226. package/dist/hooks/ElementObserver/index.js +177 -0
  227. package/dist/hooks/GrabAndScroll/index.cjs +99 -0
  228. package/dist/hooks/GrabAndScroll/index.d.cts +14 -0
  229. package/dist/hooks/GrabAndScroll/index.d.ts +14 -0
  230. package/dist/hooks/GrabAndScroll/index.js +97 -0
  231. package/dist/hooks/GraphQLConfig/index.cjs +16 -0
  232. package/dist/hooks/GraphQLConfig/index.d.cts +15 -0
  233. package/dist/hooks/GraphQLConfig/index.d.ts +15 -0
  234. package/dist/hooks/GraphQLConfig/index.js +15 -0
  235. package/dist/hooks/IdentifyUser/index.cjs +59 -0
  236. package/dist/hooks/IdentifyUser/index.d.cts +10 -0
  237. package/dist/hooks/IdentifyUser/index.d.ts +10 -0
  238. package/dist/hooks/IdentifyUser/index.js +57 -0
  239. package/dist/hooks/ImageResolver/index.cjs +54 -0
  240. package/dist/hooks/ImageResolver/index.d.cts +7 -0
  241. package/dist/hooks/ImageResolver/index.d.ts +7 -0
  242. package/dist/hooks/ImageResolver/index.js +52 -0
  243. package/dist/hooks/Intersection/index.cjs +3 -0
  244. package/dist/hooks/Intersection/index.d.cts +7 -0
  245. package/dist/hooks/Intersection/index.d.ts +7 -0
  246. package/dist/hooks/Intersection/index.js +3 -0
  247. package/dist/hooks/IsSmallScreen/index.cjs +22 -0
  248. package/dist/hooks/IsSmallScreen/index.d.cts +5 -0
  249. package/dist/hooks/IsSmallScreen/index.d.ts +5 -0
  250. package/dist/hooks/IsSmallScreen/index.js +20 -0
  251. package/dist/hooks/LocalStorageOperations/index.cjs +79 -0
  252. package/dist/hooks/LocalStorageOperations/index.d.cts +17 -0
  253. package/dist/hooks/LocalStorageOperations/index.d.ts +17 -0
  254. package/dist/hooks/LocalStorageOperations/index.js +74 -0
  255. package/dist/hooks/MessageFilter/index.cjs +53 -0
  256. package/dist/hooks/MessageFilter/index.d.cts +29 -0
  257. package/dist/hooks/MessageFilter/index.d.ts +29 -0
  258. package/dist/hooks/MessageFilter/index.js +53 -0
  259. package/dist/hooks/MessageScrollObserver/index.cjs +36 -0
  260. package/dist/hooks/MessageScrollObserver/index.d.cts +5 -0
  261. package/dist/hooks/MessageScrollObserver/index.d.ts +5 -0
  262. package/dist/hooks/MessageScrollObserver/index.js +34 -0
  263. package/dist/hooks/NewOrgConfig/index.cjs +19 -0
  264. package/dist/hooks/NewOrgConfig/index.d.cts +22 -0
  265. package/dist/hooks/NewOrgConfig/index.d.ts +22 -0
  266. package/dist/hooks/NewOrgConfig/index.js +19 -0
  267. package/dist/hooks/Search/index.cjs +324 -0
  268. package/dist/hooks/Search/index.d.cts +66 -0
  269. package/dist/hooks/Search/index.d.ts +66 -0
  270. package/dist/hooks/Search/index.js +321 -0
  271. package/dist/hooks/SearchOperations/index.cjs +101 -0
  272. package/dist/hooks/SearchOperations/index.d.cts +22 -0
  273. package/dist/hooks/SearchOperations/index.d.ts +22 -0
  274. package/dist/hooks/SearchOperations/index.js +98 -0
  275. package/dist/hooks/SessionStorageOperations/index.cjs +30 -0
  276. package/dist/hooks/SessionStorageOperations/index.d.cts +8 -0
  277. package/dist/hooks/SessionStorageOperations/index.d.ts +8 -0
  278. package/dist/hooks/SessionStorageOperations/index.js +28 -0
  279. package/dist/hooks/ShopifyUrlOperations/index.cjs +53 -0
  280. package/dist/hooks/ShopifyUrlOperations/index.d.cts +23 -0
  281. package/dist/hooks/ShopifyUrlOperations/index.d.ts +23 -0
  282. package/dist/hooks/ShopifyUrlOperations/index.js +49 -0
  283. package/dist/hooks/SnapCalculator/index.cjs +29 -0
  284. package/dist/hooks/SnapCalculator/index.d.cts +12 -0
  285. package/dist/hooks/SnapCalculator/index.d.ts +12 -0
  286. package/dist/hooks/SnapCalculator/index.js +27 -0
  287. package/dist/hooks/SystemSettingsContext/index.cjs +7 -0
  288. package/dist/hooks/SystemSettingsContext/index.d.cts +22 -0
  289. package/dist/hooks/SystemSettingsContext/index.d.ts +22 -0
  290. package/dist/hooks/SystemSettingsContext/index.js +7 -0
  291. package/dist/hooks/TrackComponentVisibleEvent/index.cjs +21 -0
  292. package/dist/hooks/TrackComponentVisibleEvent/index.d.cts +18 -0
  293. package/dist/hooks/TrackComponentVisibleEvent/index.d.ts +18 -0
  294. package/dist/hooks/TrackComponentVisibleEvent/index.js +21 -0
  295. package/dist/hooks/UpdateAnalyticsProps/index.cjs +61 -0
  296. package/dist/hooks/UpdateAnalyticsProps/index.d.cts +9 -0
  297. package/dist/hooks/UpdateAnalyticsProps/index.d.ts +9 -0
  298. package/dist/hooks/UpdateAnalyticsProps/index.js +58 -0
  299. package/dist/index-BCLaqnc2.d.cts +689 -0
  300. package/dist/{index-D2VaMPA3.d.ts → index-BS7-_CW4.d.ts} +1 -1
  301. package/dist/{index-BTK5uzs6.d.cts → index-Bmub8e38.d.cts} +1 -1
  302. package/dist/index-Bs0QtkSu.d.ts +689 -0
  303. package/dist/{index-BzgkfbNO.d.cts → index-CESxqFso.d.cts} +1 -1
  304. package/dist/index-CKeS9dud.d.ts +28 -0
  305. package/dist/{index-ClJ0nMsR.d.cts → index-CiWEYzXl.d.cts} +2 -2
  306. package/dist/index-CyXULMyI.d.cts +186 -0
  307. package/dist/index-Cz10TYQA.d.cts +28 -0
  308. package/dist/{index-CSIOQD-A.d.ts → index-D8ThXrqI.d.ts} +1 -1
  309. package/dist/{index-Dxpscrvz.d.ts → index-D9VegTU-.d.ts} +1 -1
  310. package/dist/{index-Cr2y08f1.d.ts → index-DBqgBV9N.d.ts} +1 -1
  311. package/dist/{index-CKKkTsms.d.ts → index-DNUKSg6R.d.ts} +1 -1
  312. package/dist/{index-BdNKc2ix.d.cts → index-DO0s5KNA.d.cts} +1 -1
  313. package/dist/{index-Cx9e-fRi.d.ts → index-DuyZQOE1.d.ts} +2 -2
  314. package/dist/{index-BrXuc_Ck.d.cts → index-REhT-Pls.d.cts} +1 -1
  315. package/dist/index-fKJB9EFb.d.ts +186 -0
  316. package/dist/interceptors/index.cjs +3 -12
  317. package/dist/interceptors/index.d.cts +12 -18
  318. package/dist/interceptors/index.d.ts +13 -19
  319. package/dist/interceptors/index.js +3 -11
  320. package/dist/interceptors/types.cjs +1 -0
  321. package/dist/interceptors/types.d.cts +12 -0
  322. package/dist/interceptors/types.d.ts +12 -0
  323. package/dist/interceptors/types.js +3 -0
  324. package/dist/localStorageContext-6OrGDFid.js +95 -0
  325. package/dist/localStorageContext-Bld0OWmG.cjs +115 -0
  326. package/dist/{logger-Dln20ans.cjs → logger-CSL2jqI9.cjs} +1 -1
  327. package/dist/{logger-pdEEY8T2.js → logger-D5MFf3nW.js} +1 -1
  328. package/dist/models-Dn8Emdzc.js +1295 -0
  329. package/dist/models-ZpQcRZQK.cjs +1536 -0
  330. package/dist/newOrgConfigAtom--tewb_G0.js +8 -0
  331. package/dist/newOrgConfigAtom-DkSi45_Q.cjs +15 -0
  332. package/dist/newOrgConfigContext-B3aeblfE.cjs +68 -0
  333. package/dist/newOrgConfigContext-B5mzHKTG.js +53 -0
  334. package/dist/{nodeSelector-vKB44CDB.d.cts → nodeSelector-XsUa5vNH.d.cts} +1 -1
  335. package/dist/org-B2uRkPt3.js +12 -0
  336. package/dist/org-ClUxpHPZ.cjs +43 -0
  337. package/dist/orgAnalyticsConfig-CuWXijsr.cjs +39 -0
  338. package/dist/orgAnalyticsConfig-DOceTdNp.js +14 -0
  339. package/dist/search-BIomqYy6.d.ts +20 -0
  340. package/dist/search-B_Hg-Es2.d.cts +20 -0
  341. package/dist/search-Bn4x-3TG.js +126 -0
  342. package/dist/search-DsQm_pAi.cjs +205 -0
  343. package/dist/{search-filter-types-C-zZSpGo.d.ts → search-filter-types-B5xcaEit.d.ts} +1 -1
  344. package/dist/{search-filter-types-9rTb3jMj.d.cts → search-filter-types-Byd0lEUa.d.cts} +1 -1
  345. package/dist/searchContext-Cn-pCoDy.cjs +145 -0
  346. package/dist/searchContext-fQDGSvUF.js +129 -0
  347. package/dist/searchServiceAdapter-BSPZOg1r.js +16 -0
  348. package/dist/searchServiceAdapter-DrjFCiw8.cjs +34 -0
  349. package/dist/sessionStorageContext-C5MUl2zf.js +52 -0
  350. package/dist/sessionStorageContext-CXE7iHtP.cjs +66 -0
  351. package/dist/shopifyUrlContext-7ppKx1jJ.cjs +75 -0
  352. package/dist/shopifyUrlContext-BSYWsoX9.js +61 -0
  353. package/dist/spiffyWidgets-CdxRcXhW.d.ts +20 -0
  354. package/dist/spiffyWidgets-DxGuuuCG.d.cts +20 -0
  355. package/dist/systemSettingsContext-BdAe_3Ll.cjs +60 -0
  356. package/dist/systemSettingsContext-Cjyo2o3N.js +39 -0
  357. package/dist/{test-types-CuOq25VT.d.cts → test-types-DQB1JqOf.d.cts} +1 -1
  358. package/dist/{test-types-CXVJxTeu.d.ts → test-types-ZuRAYwox.d.ts} +1 -1
  359. package/dist/types/index.cjs +33 -5
  360. package/dist/types/index.d.cts +2 -2
  361. package/dist/types/index.d.ts +2 -2
  362. package/dist/types/index.js +30 -3
  363. package/dist/types-BCz-hOvv.d.ts +51 -0
  364. package/dist/types-BwNrLPSZ.cjs +106 -0
  365. package/dist/types-D3uOF0Oy.js +76 -0
  366. package/dist/types-DIk0FLwd.js +30 -0
  367. package/dist/types-DNLkuGWZ.cjs +48 -0
  368. package/dist/types-DzwBmZHy.d.cts +10 -0
  369. package/dist/types-Eip78dWv.d.cts +51 -0
  370. package/dist/types-YvACLe2e.d.ts +10 -0
  371. package/dist/types.cjs +0 -0
  372. package/dist/types.d.cts +15 -0
  373. package/dist/types.d.ts +15 -0
  374. package/dist/types.js +1 -0
  375. package/dist/unsupportedProductExceptions--t7AQFou.js +20 -0
  376. package/dist/unsupportedProductExceptions-Dak4AD-t.cjs +32 -0
  377. package/dist/urlsParser-BV5yF8sa.cjs +78 -0
  378. package/dist/urlsParser-DUgV_Qy9.js +42 -0
  379. package/dist/useAmplitudeOperations-C6Osqkso.js +34 -0
  380. package/dist/useAmplitudeOperations-Cco_B3A5.cjs +41 -0
  381. package/dist/useAppDetails-CGqtN6sJ.cjs +38 -0
  382. package/dist/useAppDetails-DwX2Rhed.js +30 -0
  383. package/dist/useDebounce-BJqnCBcl.cjs +26 -0
  384. package/dist/useDebounce-Ce31ph7m.js +19 -0
  385. package/dist/useGraphQLConfig-ByOZb3oZ.js +63 -0
  386. package/dist/useGraphQLConfig-DItL4BgM.cjs +76 -0
  387. package/dist/useIntersection-Czeo04jt.js +21 -0
  388. package/dist/useIntersection-DnZNLcnu.cjs +28 -0
  389. package/dist/useMessageInterceptor-C9p9No1n.cjs +33 -0
  390. package/dist/useMessageInterceptor-tntd2rvB.js +25 -0
  391. package/dist/userIdentityContext-C1HzZFb2.cjs +125 -0
  392. package/dist/userIdentityContext-CDfosvOO.js +109 -0
  393. package/dist/userIdentityContext-DBXoLrFu.d.cts +20 -0
  394. package/dist/userIdentityContext-W1OWF3cG.d.ts +20 -0
  395. package/dist/utilityTypes-CWJZb9BZ.js +1 -0
  396. package/dist/utilityTypes-YGiMSyV7.cjs +0 -0
  397. package/dist/utils-BA5HXmkL.cjs +74 -0
  398. package/dist/utils-BTDw2aMx.cjs +715 -0
  399. package/dist/utils-C7S9YiFp.js +54 -0
  400. package/dist/utils-CF13DfA1.js +606 -0
  401. package/dist/variantInfo-58JLeDJb.js +1 -0
  402. package/dist/variantInfo-DRFLcGc7.cjs +0 -0
  403. package/package.json +278 -25
  404. package/src/{adapters/spiffy/commerce/api.ts → application/commerce-api.ts} +31 -23
  405. package/src/application/models/colorsConfig.ts +18 -18
  406. package/src/application/models/frontendConfig.ts +3 -3
  407. package/src/application/models/graphql/queries/getMerchantColorsQuery.ts +1 -1
  408. package/src/application/models/graphql/queries/getMerchantFrontendConfigQuery.ts +1 -1
  409. package/src/application/models/index.ts +0 -3
  410. package/src/application/models/localStorageEventListener.ts +2 -2
  411. package/src/application/models/utils/snakeToCamelTransformer.ts +8 -8
  412. package/src/application/models/validators/validateGraphQLColorsConfig.ts +0 -21
  413. package/src/application/models/validators/validateGraphQLFrontendConfig.ts +2 -2
  414. package/src/application/utils/analyticsUtils.ts +53 -22
  415. package/src/application/utils/cdnUtils.ts +11 -0
  416. package/src/atoms/amplitude/amplitudeTrackEventAtom.ts +15 -0
  417. package/src/atoms/app/index.ts +7 -17
  418. package/src/atoms/app/variant.ts +13 -4
  419. package/src/atoms/chat/chatState.ts +28 -18
  420. package/src/atoms/chat/messageQueue.ts +36 -5
  421. package/src/atoms/chat/replies.ts +45 -37
  422. package/src/atoms/envive/enviveConfig.ts +10 -6
  423. package/src/atoms/org/graphqlConfig.ts +6 -38
  424. package/src/atoms/org/index.ts +3 -4
  425. package/src/atoms/org/newOrgConfigAtom.ts +4 -0
  426. package/src/atoms/search/chatSearch.ts +11 -5
  427. package/src/atoms/search/searchAPI.ts +22 -12
  428. package/src/atoms/search/searchServiceAdapter.ts +25 -0
  429. package/src/contexts/amplitudeContext/amplitudeContext.tsx +465 -0
  430. package/src/contexts/amplitudeContext/index.ts +1 -0
  431. package/src/contexts/cdnContext/cdnContext.tsx +48 -0
  432. package/src/contexts/cdnContext/index.ts +1 -0
  433. package/src/contexts/{chatContext.tsx → chatContext/chatContext.tsx} +16 -13
  434. package/src/contexts/chatContext/index.ts +1 -0
  435. package/src/contexts/{enviveConfigContext.tsx → enviveConfigContext/enviveConfigContext.tsx} +23 -18
  436. package/src/contexts/enviveConfigContext/index.ts +1 -0
  437. package/src/contexts/enviveCssContext/enviveCssContext.tsx +49 -0
  438. package/src/contexts/enviveCssContext/index.ts +1 -0
  439. package/src/contexts/featureFlagContext/featureFlagContext.tsx +193 -0
  440. package/src/contexts/featureFlagContext/index.ts +1 -0
  441. package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +87 -0
  442. package/src/contexts/featureFlagServiceContext/index.ts +1 -0
  443. package/src/contexts/graphqlContext/graphqlContext.tsx +165 -0
  444. package/src/contexts/graphqlContext/index.ts +1 -0
  445. package/src/contexts/localStorageContext/index.ts +1 -0
  446. package/src/contexts/localStorageContext/localStorageContext.tsx +159 -0
  447. package/src/contexts/newOrgConfigContext/index.ts +1 -0
  448. package/src/contexts/newOrgConfigContext/newOrgConfigContext.tsx +70 -0
  449. package/src/contexts/searchContext/index.ts +1 -0
  450. package/src/contexts/searchContext/searchContext.tsx +187 -0
  451. package/src/contexts/sessionStorageContext/index.ts +1 -0
  452. package/src/contexts/sessionStorageContext/sessionStorageContext.tsx +80 -0
  453. package/src/contexts/shopifyUrlContext/index.ts +1 -0
  454. package/src/contexts/shopifyUrlContext/shopifyUrlContext.tsx +97 -0
  455. package/src/contexts/systemSettingsContext/index.ts +1 -0
  456. package/src/contexts/types.ts +12 -8
  457. package/src/contexts/userIdentityContext/index.ts +1 -0
  458. package/src/contexts/userIdentityContext/userIdentityContext.tsx +197 -0
  459. package/src/events/registerAnalyticsListeners.ts +32 -38
  460. package/src/favicon.ico +0 -0
  461. package/src/hooks/AmplitudeOperations/index.ts +1 -0
  462. package/src/hooks/AmplitudeOperations/useAmplitudeOperations.ts +35 -0
  463. package/src/hooks/AppDetails/index.ts +1 -0
  464. package/src/hooks/AppDetails/useAppDetails.ts +47 -0
  465. package/src/hooks/BlockBackButton/index.ts +1 -0
  466. package/src/hooks/CdnOperations/index.ts +1 -0
  467. package/src/hooks/CdnOperations/useCdnOperations.ts +16 -0
  468. package/src/hooks/ChatToggle/index.ts +1 -0
  469. package/src/hooks/{useChatToggle.ts → ChatToggle/useChatToggle.ts} +5 -4
  470. package/src/hooks/ChatToggleAnalytics/index.ts +1 -0
  471. package/src/hooks/ChatToggleAnalytics/useChatToggleAnalytics.ts +15 -0
  472. package/src/hooks/CustomerSupportHandoff/index.ts +1 -0
  473. package/src/hooks/Debounce/index.ts +1 -0
  474. package/src/hooks/ElementObserver/index.ts +1 -0
  475. package/src/hooks/GrabAndScroll/index.ts +1 -0
  476. package/src/hooks/GraphQLConfig/index.ts +1 -0
  477. package/src/hooks/GraphQLConfig/useGraphQLConfig.ts +63 -0
  478. package/src/hooks/IdentifyUser/index.ts +1 -0
  479. package/src/hooks/IdentifyUser/useIdentifyUser.ts +33 -0
  480. package/src/hooks/ImageResolver/index.ts +1 -0
  481. package/src/hooks/{useImageResolver.ts → ImageResolver/useImageResolver.ts} +7 -7
  482. package/src/hooks/Intersection/index.ts +1 -0
  483. package/src/hooks/IsSmallScreen/index.ts +1 -0
  484. package/src/hooks/LocalStorageOperations/index.ts +1 -0
  485. package/src/hooks/LocalStorageOperations/useLocalStorageOperations.ts +92 -0
  486. package/src/hooks/MessageFilter/index.ts +1 -0
  487. package/src/hooks/MessageScrollObserver/index.ts +1 -0
  488. package/src/hooks/NewOrgConfig/index.ts +1 -0
  489. package/src/hooks/NewOrgConfig/useNewOrgConfig.ts +7 -0
  490. package/src/hooks/Search/index.ts +1 -0
  491. package/src/hooks/{useSearch.tsx → Search/useSearch.tsx} +24 -20
  492. package/src/hooks/SearchOperations/index.ts +1 -0
  493. package/src/hooks/SearchOperations/useSearchOperations.ts +97 -0
  494. package/src/hooks/SessionStorageOperations/index.ts +1 -0
  495. package/src/hooks/SessionStorageOperations/useSessionStorageOperations.ts +28 -0
  496. package/src/hooks/ShopifyUrlOperations/index.ts +1 -0
  497. package/src/hooks/ShopifyUrlOperations/useShopifyUrlOperations.ts +45 -0
  498. package/src/hooks/SnapCalculator/index.ts +1 -0
  499. package/src/hooks/SystemSettingsContext/index.ts +1 -0
  500. package/src/hooks/SystemSettingsContext/useSystemSettingsContext.ts +14 -0
  501. package/src/hooks/TrackComponentVisibleEvent/index.ts +1 -0
  502. package/src/hooks/{useTrackComponentVisibleEvent.ts → TrackComponentVisibleEvent/useTrackComponentVisibleEvent.ts} +12 -8
  503. package/src/hooks/UpdateAnalyticsProps/index.ts +1 -0
  504. package/src/hooks/{useUpdateAnalyticsProps.ts → UpdateAnalyticsProps/useUpdateAnalyticsProps.ts} +28 -17
  505. package/src/interceptors/index.ts +0 -1
  506. package/src/interceptors/useMessageInterceptor.ts +5 -8
  507. package/src/merchants/domInsertion.ts +30 -0
  508. package/src/merchants/gridInsertion.ts +19 -0
  509. package/src/types/config-versions.ts +6 -0
  510. package/src/types.ts +0 -53
  511. package/dist/adapters/amplitude/index.cjs +0 -14
  512. package/dist/adapters/amplitude/index.d.cts +0 -6
  513. package/dist/adapters/amplitude/index.d.ts +0 -6
  514. package/dist/adapters/amplitude/index.js +0 -12
  515. package/dist/api-B2euFL-5.cjs +0 -269
  516. package/dist/api-XRr_lAG6.js +0 -190
  517. package/dist/application/config/index.cjs +0 -43
  518. package/dist/application/config/index.d.cts +0 -15
  519. package/dist/application/config/index.d.ts +0 -15
  520. package/dist/application/config/index.js +0 -41
  521. package/dist/application/service/customerService/index.cjs +0 -4
  522. package/dist/application/service/customerService/index.d.cts +0 -3
  523. package/dist/application/service/customerService/index.d.ts +0 -3
  524. package/dist/application/service/customerService/index.js +0 -4
  525. package/dist/application/service/index.cjs +0 -42
  526. package/dist/application/service/index.d.cts +0 -413
  527. package/dist/application/service/index.d.ts +0 -413
  528. package/dist/application/service/index.js +0 -12
  529. package/dist/atomStore-ONYy0XuA.d.cts +0 -24
  530. package/dist/atomStore-kOKiEcNl.d.ts +0 -24
  531. package/dist/bandolier-Da4wt6sm.cjs +0 -1230
  532. package/dist/bandolier-DzEmYWcz.js +0 -1230
  533. package/dist/carpe-AXipz0Xl.cjs +0 -608
  534. package/dist/carpe-CaUKwcEa.js +0 -606
  535. package/dist/contexts/index.cjs +0 -26
  536. package/dist/contexts/index.d.cts +0 -10
  537. package/dist/contexts/index.d.ts +0 -10
  538. package/dist/contexts/index.js +0 -12
  539. package/dist/contexts-CtRlNXaS.js +0 -7674
  540. package/dist/contexts-CtgmnYNn.cjs +0 -9088
  541. package/dist/coterie--MGvWeVh.cjs +0 -240
  542. package/dist/coterie-oKHAT0lx.js +0 -240
  543. package/dist/customerService-BG1uNZZ1.cjs +0 -36
  544. package/dist/customerService-BHQRnLhC.js +0 -23
  545. package/dist/custservice-types-C8-9vKWb.cjs +0 -35
  546. package/dist/custservice-types-CamCiXjq.js +0 -23
  547. package/dist/default-B4fINY5_.cjs +0 -4
  548. package/dist/default-BrTQxA0c.js +0 -4
  549. package/dist/default-C3LrcbZB.cjs +0 -199
  550. package/dist/default-CXkYrLEr.js +0 -176
  551. package/dist/divIds-0Vj9g-fM.js +0 -23
  552. package/dist/divIds-CjceLRD9.cjs +0 -131
  553. package/dist/dreamlandBaby-BEqt0eKF.js +0 -347
  554. package/dist/dreamlandBaby-DBDjEJCc.cjs +0 -347
  555. package/dist/embedded-B5Wi9g0T.cjs +0 -131
  556. package/dist/embedded-_cLpd6FK.js +0 -23
  557. package/dist/entrypoints-CNUvSgnk.js +0 -7
  558. package/dist/entrypoints-DM9Sm18O.cjs +0 -19
  559. package/dist/featureFlagService-5wdmW02z.d.ts +0 -18
  560. package/dist/featureFlagService-DaelrXEk.d.cts +0 -18
  561. package/dist/fiveCbd-CdqNt16h.cjs +0 -614
  562. package/dist/fiveCbd-D6B-sgnX.js +0 -614
  563. package/dist/forLoveAndLemons-C7GsJG7f.cjs +0 -668
  564. package/dist/forLoveAndLemons-gNDlMtPR.js +0 -666
  565. package/dist/greenpan-B5AaW4M_.js +0 -398
  566. package/dist/greenpan-DrORpYms.cjs +0 -398
  567. package/dist/grooveLife-BJqsfH2H.cjs +0 -343
  568. package/dist/grooveLife-xIUmDM8s.js +0 -343
  569. package/dist/homegrownCannabis-8TZ21u6L.cjs +0 -411
  570. package/dist/homegrownCannabis-BtMuEvbZ.js +0 -411
  571. package/dist/hooks/index.cjs +0 -37
  572. package/dist/hooks/index.d.cts +0 -232
  573. package/dist/hooks/index.d.ts +0 -232
  574. package/dist/hooks/index.js +0 -12
  575. package/dist/index-CKUpnyJQ.d.ts +0 -72
  576. package/dist/index-CbJZOEU4.d.ts +0 -203
  577. package/dist/index-DFL1dIT_.d.ts +0 -7
  578. package/dist/index-DXpgMVpp.d.ts +0 -749
  579. package/dist/index-K2kNsOTw.d.cts +0 -203
  580. package/dist/index-MFbPQ8Ji.d.ts +0 -95
  581. package/dist/index-VHFMGkO-.d.cts +0 -72
  582. package/dist/index-VSFakgAI.d.cts +0 -95
  583. package/dist/index-aNW5V9fh.d.cts +0 -749
  584. package/dist/index-zZjcds15.d.cts +0 -7
  585. package/dist/jackArcher-WtkbLBZj.cjs +0 -728
  586. package/dist/jackArcher-sO9EbgrZ.js +0 -728
  587. package/dist/jordanCraig-471FcgqF.cjs +0 -1787
  588. package/dist/jordanCraig-DNOncplU.js +0 -1787
  589. package/dist/kindredBravely-BlLyHGMX.cjs +0 -491
  590. package/dist/kindredBravely-cqZ4OvXp.js +0 -491
  591. package/dist/kutFromTheKloth-3mOIryvt.cjs +0 -370
  592. package/dist/kutFromTheKloth-DtVNCMKa.js +0 -370
  593. package/dist/larryAndSerges-88Bvq-Us.cjs +0 -262
  594. package/dist/larryAndSerges-cvak6May.js +0 -262
  595. package/dist/leapsAndRebounds-Dmf8eUPq.js +0 -361
  596. package/dist/leapsAndRebounds-iWKc923H.cjs +0 -361
  597. package/dist/longevityrx-BTMI9vn-.js +0 -321
  598. package/dist/longevityrx-CobPyigd.cjs +0 -321
  599. package/dist/lookOptic-C4H_c0JZ.cjs +0 -283
  600. package/dist/lookOptic-Jwf7EAU8.js +0 -283
  601. package/dist/mantraBrand-CySGqbn6.cjs +0 -751
  602. package/dist/mantraBrand-DoaVj837.js +0 -751
  603. package/dist/medterra-BnZ5p27n.cjs +0 -584
  604. package/dist/medterra-DaICcPPp.js +0 -584
  605. package/dist/modells-CZ1L6dD_.js +0 -485
  606. package/dist/modells-DF0SndHr.cjs +0 -485
  607. package/dist/orgConfigResults--dAwtw3W.d.ts +0 -881
  608. package/dist/orgConfigResults-BL0XBA6x.d.cts +0 -881
  609. package/dist/pressedFloral-B3t2cYzs.cjs +0 -662
  610. package/dist/pressedFloral-Dsws2Kfb.js +0 -662
  611. package/dist/skinPerfection-CILQM2bR.cjs +0 -335
  612. package/dist/skinPerfection-DmQCntRf.js +0 -335
  613. package/dist/snapSupplements--X_v0KRM.js +0 -286
  614. package/dist/snapSupplements-Djuzl0Ed.cjs +0 -286
  615. package/dist/socialProofClasses-DdzG1tZy.js +0 -10
  616. package/dist/socialProofClasses-ky69yppk.cjs +0 -40
  617. package/dist/spanx-Bo81yXSF.cjs +0 -664
  618. package/dist/spanx-DauxB8KE.js +0 -662
  619. package/dist/spanxStaging-BucYQvR1.cjs +0 -849
  620. package/dist/spanxStaging-CfXUukdP.js +0 -846
  621. package/dist/suggestionBarV2-types-B3lwrENK.cjs +0 -16
  622. package/dist/suggestionBarV2-types-Penx3Y67.js +0 -10
  623. package/dist/supergoop-8qa_NV3F.cjs +0 -338
  624. package/dist/supergoop-DOaui-A6.js +0 -336
  625. package/dist/types-CD4LFta-.d.cts +0 -33
  626. package/dist/types-CGC6Oozp.cjs +0 -231
  627. package/dist/types-CnTCkyvK.js +0 -177
  628. package/dist/types-DBdI0j89.d.ts +0 -33
  629. package/dist/uniqueVintage-BWkDgt1z.js +0 -1212
  630. package/dist/uniqueVintage-DAne8XcL.cjs +0 -1214
  631. package/dist/variant-CC1nrywd.d.ts +0 -13
  632. package/dist/variant-CQTuQQSq.d.cts +0 -13
  633. package/dist/venaCbd-B1HO_Pkr.cjs +0 -366
  634. package/dist/venaCbd-CnByO-5R.js +0 -366
  635. package/dist/westonJonBoucher-BAGXegsX.js +0 -423
  636. package/dist/westonJonBoucher-BRfHWMbs.cjs +0 -423
  637. package/dist/wineEnthusiast-DW8JVwV8.cjs +0 -941
  638. package/dist/wineEnthusiast-EJbhMeKQ.js +0 -941
  639. package/dist/wolfMattress-B6INZNRJ.cjs +0 -373
  640. package/dist/wolfMattress-D9P7ErH_.js +0 -373
  641. package/dist/wolfTactical-C5Pupi3J.js +0 -350
  642. package/dist/wolfTactical-TMthZM93.cjs +0 -350
  643. package/src/adapters/amplitude/amplitudeAdapter.ts +0 -477
  644. package/src/adapters/amplitude/index.ts +0 -2
  645. package/src/adapters/amplitude/stubAmplitudeAdapter.ts +0 -34
  646. package/src/adapters/spiffy/commerce/graphql.ts +0 -219
  647. package/src/application/config/generalStaticConfig.ts +0 -40
  648. package/src/application/config/index.ts +0 -1
  649. package/src/application/models/domMutationContinuation.ts +0 -7
  650. package/src/application/models/domObservationStrategy.ts +0 -9
  651. package/src/application/models/supportedOrgs.ts +0 -161
  652. package/src/application/service/cachingService.ts +0 -84
  653. package/src/application/service/cdnService.ts +0 -20
  654. package/src/application/service/customerService/index.ts +0 -8
  655. package/src/application/service/customerService/providers/UnsupportedCustomerService.ts +0 -15
  656. package/src/application/service/domMutationObserver.ts +0 -320
  657. package/src/application/service/domMutations/GridInsertionService.ts +0 -123
  658. package/src/application/service/domMutations/dataLayer/dataLayerEventsListener.ts +0 -99
  659. package/src/application/service/domMutations/domInsertionService.ts +0 -90
  660. package/src/application/service/domMutations/domMutationListener.ts +0 -15
  661. package/src/application/service/domMutations/domMutationListenerState.ts +0 -52
  662. package/src/application/service/domMutations/floatingChat/embeddedChatsPlacementsListener.ts +0 -41
  663. package/src/application/service/domMutations/gladly/gladlyListener.ts +0 -61
  664. package/src/application/service/domMutations/spiffy/orgs/common/kustomerVisibilityListener.ts +0 -41
  665. package/src/application/service/domMutations/spiffy/orgs/common/orgsCommonDataLayerListener.ts +0 -119
  666. package/src/application/service/featureFlagService.ts +0 -130
  667. package/src/application/service/graphqlConfigService.ts +0 -59
  668. package/src/application/service/index.ts +0 -32
  669. package/src/application/service/kustomerIntegrationService.ts +0 -111
  670. package/src/application/service/localStorageService.ts +0 -77
  671. package/src/application/service/pageVariantService.ts +0 -866
  672. package/src/application/service/searchService.ts +0 -147
  673. package/src/application/service/sessionStorageService.ts +0 -27
  674. package/src/application/service/shopifyUrlService.ts +0 -63
  675. package/src/application/service/userIdentityService.ts +0 -114
  676. package/src/application/service/windowChatToggleService.ts +0 -80
  677. package/src/application/service/windowDataLayerService.ts +0 -181
  678. package/src/application/service/windowFrontendConfigService.ts +0 -129
  679. package/src/atoms/org/merchantCss.ts +0 -161
  680. package/src/atoms/org/org.ts +0 -251
  681. package/src/atoms/org/orgPageConfig.ts +0 -41
  682. package/src/atoms/org/orgUIConfig.ts +0 -142
  683. package/src/contexts/enviveCssContext.tsx +0 -20
  684. package/src/contexts/index.ts +0 -6
  685. package/src/contexts/orgConfigContext.tsx +0 -106
  686. package/src/enabled-features.ts +0 -83
  687. package/src/hooks/index.ts +0 -21
  688. package/src/hooks/useDynamicVariants.ts +0 -226
  689. package/src/hooks/useFileUpload.ts +0 -63
  690. package/src/hooks/useHideElements.ts +0 -85
  691. package/src/hooks/useNewOrgConfig.ts +0 -80
  692. package/src/hooks/useSystemSettingsContext.ts +0 -12
  693. package/src/interceptors/useFormEscalation.ts +0 -57
  694. package/src/merchants/bandolier/bandolier.ts +0 -1389
  695. package/src/merchants/carpe/carpe.ts +0 -656
  696. package/src/merchants/coterie/coterie.ts +0 -280
  697. package/src/merchants/default.ts +0 -193
  698. package/src/merchants/dreamlandBaby/dreamlandBaby.ts +0 -375
  699. package/src/merchants/fiveCbd/fiveCbd.ts +0 -697
  700. package/src/merchants/forLoveAndLemons/forLoveAndLemons.ts +0 -721
  701. package/src/merchants/greenpan/greenpan.ts +0 -440
  702. package/src/merchants/grooveLife/grooveLife.ts +0 -386
  703. package/src/merchants/homegrownCannabis/homegrownCannabis.ts +0 -468
  704. package/src/merchants/init-merchant.sh +0 -53
  705. package/src/merchants/jackArcher/jackArcher.ts +0 -974
  706. package/src/merchants/jordanCraig/jordanCraig.ts +0 -1927
  707. package/src/merchants/kindredBravely/kindredBravely.ts +0 -529
  708. package/src/merchants/kutFromTheKloth/kutFromTheKloth.ts +0 -418
  709. package/src/merchants/larryAndSerges/larryAndSerges.ts +0 -314
  710. package/src/merchants/leapsAndRebounds/leapsAndRebounds.ts +0 -424
  711. package/src/merchants/longevityrx/longevityrx.ts +0 -368
  712. package/src/merchants/lookOptic/lookOptic.ts +0 -323
  713. package/src/merchants/mantraBrand/mantraBrand.ts +0 -838
  714. package/src/merchants/medterra/medterra.ts +0 -670
  715. package/src/merchants/modells/modells.ts +0 -546
  716. package/src/merchants/pressedFloral/pressedFloral.ts +0 -734
  717. package/src/merchants/skinPerfection/skinPerfection.ts +0 -379
  718. package/src/merchants/snapSupplements/snapSupplements.ts +0 -325
  719. package/src/merchants/spanx/spanx.ts +0 -810
  720. package/src/merchants/spanx/spanxStaging.ts +0 -942
  721. package/src/merchants/supergoop/supergoop.ts +0 -376
  722. package/src/merchants/uniqueVintage/uniqueVintage.ts +0 -1314
  723. package/src/merchants/venaCbd/venaCbd.ts +0 -410
  724. package/src/merchants/westonJonBoucher/westonJonBoucher.ts +0 -473
  725. package/src/merchants/wineEnthusiast/wineEnthusiast.ts +0 -990
  726. package/src/merchants/wolfMattress/wolfMattress.ts +0 -411
  727. package/src/merchants/wolfTactical/wolfTactical.ts +0 -389
  728. /package/dist/{locators-CugndTUM.cjs → AmplitudeOperations-CgIVPUlr.cjs} +0 -0
  729. /package/dist/{locators-DnKpajbY.js → AmplitudeOperations-YpyaR7Mp.js} +0 -0
  730. /package/dist/{utilityTypes-BVikejDo.js → atomStore-C2OI76yN.js} +0 -0
  731. /package/dist/{utilityTypes-C4h2wgAK.cjs → atomStore-DWmT1six.cjs} +0 -0
  732. /package/dist/{variantInfo-CzhR5W6h.js → types-DQoXDiso.js} +0 -0
  733. /package/dist/{variantInfo-CNRTY0gH.cjs → types-o3zWarRp.cjs} +0 -0
  734. /package/src/contexts/{systemSettingsContext.tsx → systemSettingsContext/systemSettingsContext.tsx} +0 -0
  735. /package/src/hooks/{useBlockBackButton.ts → BlockBackButton/useBlockBackButton.ts} +0 -0
  736. /package/src/hooks/{useCustomerSupportHandoff.ts → CustomerSupportHandoff/useCustomerSupportHandoff.ts} +0 -0
  737. /package/src/hooks/{useDebounce.ts → Debounce/useDebounce.ts} +0 -0
  738. /package/src/hooks/{useElementObserver.ts → ElementObserver/useElementObserver.ts} +0 -0
  739. /package/src/hooks/{useGrabAndScroll.ts → GrabAndScroll/useGrabAndScroll.ts} +0 -0
  740. /package/src/hooks/{useIntersection.ts → Intersection/useIntersection.ts} +0 -0
  741. /package/src/hooks/{useIsSmallScreen.ts → IsSmallScreen/useIsSmallScreen.ts} +0 -0
  742. /package/src/hooks/{useMessageFilter.ts → MessageFilter/useMessageFilter.ts} +0 -0
  743. /package/src/hooks/{useMessageScrollObserver.ts → MessageScrollObserver/useMessageScrollObserver.ts} +0 -0
  744. /package/src/hooks/{useSnapCalculator.ts → SnapCalculator/useSnapCalculator.ts} +0 -0
  745. /package/src/{application/service/customerService/types.ts → types/customerService.ts} +0 -0
  746. /package/src/{adapters/spiffy/commerce → types}/exceptions/sessionExceptions.ts +0 -0
  747. /package/src/{adapters/spiffy/commerce → types}/exceptions/unsupportedProductExceptions.ts +0 -0
@@ -1,231 +0,0 @@
1
-
2
- //#region src/application/models/colorsConfig.ts
3
- var ColorNames = /* @__PURE__ */ function(ColorNames$1) {
4
- ColorNames$1["TextPrimary"] = "text-primary";
5
- ColorNames$1["TextSecondary"] = "text-secondary";
6
- ColorNames$1["TextAccent"] = "text-accent";
7
- ColorNames$1["TextLink"] = "text-link";
8
- ColorNames$1["TextLight"] = "text-light";
9
- ColorNames$1["BackgroundPrimary"] = "background-primary";
10
- ColorNames$1["BackgroundSecondary"] = "background-secondary";
11
- ColorNames$1["BackgroundSecondaryDark"] = "background-secondary-dark";
12
- ColorNames$1["BackgroundTertiary"] = "background-tertiary";
13
- ColorNames$1["BackgroundDark"] = "background-dark";
14
- ColorNames$1["BackgroundLight"] = "background-light";
15
- ColorNames$1["BackgroundSaturated"] = "background-saturated";
16
- ColorNames$1["BorderLight"] = "border-light";
17
- ColorNames$1["BorderMedium"] = "border-medium";
18
- ColorNames$1["BorderDark"] = "border-dark";
19
- ColorNames$1["BorderOutline"] = "border-outline";
20
- ColorNames$1["AccentPrimary"] = "accent-primary";
21
- ColorNames$1["AccentSecondary"] = "accent-secondary";
22
- return ColorNames$1;
23
- }(ColorNames || {});
24
- const colorVar = (color) => `var(--spiffy-colors-${color})`;
25
-
26
- //#endregion
27
- //#region src/application/models/orgsEnum.ts
28
- const OrgShortName = {
29
- Coterie: "coterie",
30
- ForLoveAndLemons: "for-love-and-lemons",
31
- Greenpan: "greenpan",
32
- JordanCraig: "jordan-craig",
33
- LarryAndSerges: "larry_and_serges",
34
- LeapsAndRebounds: "leaps-and-rebounds",
35
- MantraBrand: "mantra-brand",
36
- Spanx: "spanx",
37
- SpanxStaging: "staging-spanx",
38
- Supergoop: "supergoop",
39
- UniqueVintage: "unique-vintage",
40
- JackArcher: "jack-archer",
41
- SkinPerfection: "skin-perfection",
42
- LookOptic: "look-optic",
43
- FiveCbd: "five-cbd",
44
- SnapSupplements: "snap-supplements",
45
- Longevityrx: "longevityrx",
46
- VenaCbd: "vena-cbd",
47
- Medterra: "medterra",
48
- Modells: "modells",
49
- PressedFloral: "pressed-floral",
50
- KindredBravely: "kindred-bravely",
51
- WineEnthusiast: "wine-enthusiast",
52
- HomegrownCannabis: "homegrown-cannabis",
53
- DreamlandBaby: "dreamland-baby",
54
- Bandolier: "bandolier",
55
- WestonJonBoucher: "weston-jon-boucher",
56
- KutFromTheKloth: "kut-from-the-kloth",
57
- GrooveLife: "groove-life",
58
- Carpe: "carpe",
59
- WolfTactical: "wolf-tactical",
60
- WolfMattress: "wolfmattress",
61
- Default: "default"
62
- };
63
-
64
- //#endregion
65
- //#region src/application/models/supportedOrgs.ts
66
- const getOrgInfo = async (orgShortName) => {
67
- switch (orgShortName) {
68
- case OrgShortName.Bandolier: return Promise.resolve().then(() => require("./bandolier-Da4wt6sm.cjs")).then((module$1) => module$1.bandolierOrgInfo);
69
- case OrgShortName.Carpe: return Promise.resolve().then(() => require("./carpe-AXipz0Xl.cjs")).then((module$1) => module$1.carpeOrgInfo);
70
- case OrgShortName.Coterie: return Promise.resolve().then(() => require("./coterie--MGvWeVh.cjs")).then((module$1) => module$1.coterieOrgInfo);
71
- case OrgShortName.DreamlandBaby: return Promise.resolve().then(() => require("./dreamlandBaby-DBDjEJCc.cjs")).then((module$1) => module$1.dreamlandBabyOrgInfo);
72
- case OrgShortName.ForLoveAndLemons: return Promise.resolve().then(() => require("./forLoveAndLemons-C7GsJG7f.cjs")).then((module$1) => module$1.forLoveAndLemonsOrgInfo);
73
- case OrgShortName.Greenpan: return Promise.resolve().then(() => require("./greenpan-DrORpYms.cjs")).then((module$1) => module$1.greenpanOrgInfo);
74
- case OrgShortName.GrooveLife: return Promise.resolve().then(() => require("./grooveLife-BJqsfH2H.cjs")).then((module$1) => module$1.grooveLifeOrgInfo);
75
- case OrgShortName.JackArcher: return Promise.resolve().then(() => require("./jackArcher-WtkbLBZj.cjs")).then((module$1) => module$1.jackArcherOrgInfo);
76
- case OrgShortName.JordanCraig: return Promise.resolve().then(() => require("./jordanCraig-471FcgqF.cjs")).then((module$1) => module$1.jordanCraigOrgInfo);
77
- case OrgShortName.KutFromTheKloth: return Promise.resolve().then(() => require("./kutFromTheKloth-3mOIryvt.cjs")).then((module$1) => module$1.kutFromTheKlothOrgInfo);
78
- case OrgShortName.LarryAndSerges: return Promise.resolve().then(() => require("./larryAndSerges-88Bvq-Us.cjs")).then((module$1) => module$1.larryAndSergesOrgInfo);
79
- case OrgShortName.LeapsAndRebounds: return Promise.resolve().then(() => require("./leapsAndRebounds-iWKc923H.cjs")).then((module$1) => module$1.leapsAndReboundsOrgInfo);
80
- case OrgShortName.MantraBrand: return Promise.resolve().then(() => require("./mantraBrand-CySGqbn6.cjs")).then((module$1) => module$1.mantraBrandOrgInfo);
81
- case OrgShortName.Spanx: return Promise.resolve().then(() => require("./spanx-Bo81yXSF.cjs")).then((module$1) => module$1.spanxOrgInfo);
82
- case OrgShortName.SpanxStaging: return Promise.resolve().then(() => require("./spanxStaging-BucYQvR1.cjs")).then((module$1) => module$1.spanxOrgInfo);
83
- case OrgShortName.Supergoop: return Promise.resolve().then(() => require("./supergoop-8qa_NV3F.cjs")).then((module$1) => module$1.supergoopOrgInfo);
84
- case OrgShortName.UniqueVintage: return Promise.resolve().then(() => require("./uniqueVintage-DAne8XcL.cjs")).then((module$1) => module$1.uniqueVintageOrgInfo);
85
- case OrgShortName.WestonJonBoucher: return Promise.resolve().then(() => require("./westonJonBoucher-BRfHWMbs.cjs")).then((module$1) => module$1.westonJonBoucherOrgInfo);
86
- case OrgShortName.WolfMattress: return Promise.resolve().then(() => require("./wolfMattress-B6INZNRJ.cjs")).then((module$1) => module$1.wolfMattressOrgInfo);
87
- case OrgShortName.WolfTactical: return Promise.resolve().then(() => require("./wolfTactical-TMthZM93.cjs")).then((module$1) => module$1.wolfTacticalOrgInfo);
88
- case OrgShortName.SkinPerfection: return Promise.resolve().then(() => require("./skinPerfection-CILQM2bR.cjs")).then((module$1) => module$1.skinPerfectionOrgInfo);
89
- case OrgShortName.LookOptic: return Promise.resolve().then(() => require("./lookOptic-C4H_c0JZ.cjs")).then((module$1) => module$1.lookOpticOrgInfo);
90
- case OrgShortName.FiveCbd: return Promise.resolve().then(() => require("./fiveCbd-CdqNt16h.cjs")).then((module$1) => module$1.fiveCbdOrgInfo);
91
- case OrgShortName.SnapSupplements: return Promise.resolve().then(() => require("./snapSupplements-Djuzl0Ed.cjs")).then((module$1) => module$1.snapSupplementsOrgInfo);
92
- case OrgShortName.Longevityrx: return Promise.resolve().then(() => require("./longevityrx-CobPyigd.cjs")).then((module$1) => module$1.longevityrxOrgInfo);
93
- case OrgShortName.VenaCbd: return Promise.resolve().then(() => require("./venaCbd-B1HO_Pkr.cjs")).then((module$1) => module$1.venaCbdOrgInfo);
94
- case OrgShortName.Medterra: return Promise.resolve().then(() => require("./medterra-BnZ5p27n.cjs")).then((module$1) => module$1.medterraOrgInfo);
95
- case OrgShortName.Modells: return Promise.resolve().then(() => require("./modells-DF0SndHr.cjs")).then((module$1) => module$1.modellsOrgInfo);
96
- case OrgShortName.PressedFloral: return Promise.resolve().then(() => require("./pressedFloral-B3t2cYzs.cjs")).then((module$1) => module$1.pressedFloralOrgInfo);
97
- case OrgShortName.KindredBravely: return Promise.resolve().then(() => require("./kindredBravely-BlLyHGMX.cjs")).then((module$1) => module$1.kindredBravelyOrgInfo);
98
- case OrgShortName.WineEnthusiast: return Promise.resolve().then(() => require("./wineEnthusiast-DW8JVwV8.cjs")).then((module$1) => module$1.wineEnthusiastOrgInfo);
99
- case OrgShortName.HomegrownCannabis: return Promise.resolve().then(() => require("./homegrownCannabis-8TZ21u6L.cjs")).then((module$1) => module$1.homegrownCannabisOrgInfo);
100
- default: return Promise.resolve().then(() => require("./default-B4fINY5_.cjs")).then((module$1) => module$1.defaultOrgInfo);
101
- }
102
- };
103
-
104
- //#endregion
105
- //#region src/contexts/types.ts
106
- var CategoryExtractorType = /* @__PURE__ */ function(CategoryExtractorType$1) {
107
- CategoryExtractorType$1["VisitCategoryMap"] = "VisitCategoryMap";
108
- CategoryExtractorType$1["VisitCategoryDefault"] = "VisitCategoryDefault";
109
- return CategoryExtractorType$1;
110
- }(CategoryExtractorType || {});
111
- var PageVariantTestType = /* @__PURE__ */ function(PageVariantTestType$1) {
112
- PageVariantTestType$1["ShopifyPLP"] = "ShopifyPLP";
113
- PageVariantTestType$1["ShopifyPDP"] = "ShopifyPDP";
114
- PageVariantTestType$1["PageCategory"] = "PageCategory";
115
- PageVariantTestType$1["CatalogCategory"] = "CatalogCategory";
116
- PageVariantTestType$1["TopCatalogCategory"] = "TopCatalogCategory";
117
- PageVariantTestType$1["HasReviews"] = "HasReviews";
118
- PageVariantTestType$1["InCollection"] = "InCollection";
119
- PageVariantTestType$1["HasMerchantTag"] = "HasMerchantTag";
120
- PageVariantTestType$1["FeatureGate"] = "FeatureGate";
121
- PageVariantTestType$1["PlpId"] = "PlpId";
122
- PageVariantTestType$1["QueryParam"] = "QueryParam";
123
- PageVariantTestType$1["ProductId"] = "ProductId";
124
- PageVariantTestType$1["UserHasInteracted"] = "UserHasInteracted";
125
- PageVariantTestType$1["UserHasNotInteracted"] = "UserHasNotInteracted";
126
- PageVariantTestType$1["isLoading"] = "isLoading";
127
- PageVariantTestType$1["isProductComparison"] = "isProductComparison";
128
- PageVariantTestType$1["Fallback"] = "Fallback";
129
- PageVariantTestType$1["UrlResolver"] = "UrlResolver";
130
- PageVariantTestType$1["Null"] = "null";
131
- return PageVariantTestType$1;
132
- }(PageVariantTestType || {});
133
- var WidgetType = /* @__PURE__ */ function(WidgetType$1) {
134
- WidgetType$1["ChatPreview"] = "ChatPreview";
135
- WidgetType$1["SocialProofV2"] = "SocialProofV2";
136
- WidgetType$1["ChatPreviewV2"] = "ChatPreviewV2";
137
- WidgetType$1["ChatPreviewIsLoading"] = "ChatPreviewIsLoading";
138
- WidgetType$1["ChatPreviewPostInteraction"] = "ChatPreviewPostInteraction";
139
- WidgetType$1["ChatPreviewProductComparison"] = "ChatPreviewProductComparison";
140
- WidgetType$1["SuggestionBar"] = "SuggestionBar";
141
- WidgetType$1["SuggestionBarV2"] = "SuggestionBarV2";
142
- WidgetType$1["ImagePromptCard"] = "ImagePromptCard";
143
- WidgetType$1["ImageBanner"] = "ImageBanner";
144
- WidgetType$1["SingleImagePrompt"] = "SingleImagePrompt";
145
- WidgetType$1["SearchPrompt"] = "SearchPrompt";
146
- WidgetType$1["SearchZeroStateEntryPoint"] = "SearchZeroStateEntryPoint";
147
- WidgetType$1["SearchResultsEntryPoint"] = "SearchResultsEntryPoint";
148
- WidgetType$1["SearchOverlayHost"] = "SearchOverlayHost";
149
- WidgetType$1["NoOp"] = "NoOp";
150
- return WidgetType$1;
151
- }(WidgetType || {});
152
-
153
- //#endregion
154
- //#region src/application/service/customerService/types.ts
155
- let CustomerServiceType = /* @__PURE__ */ function(CustomerServiceType$1) {
156
- CustomerServiceType$1["shopify"] = "shopify";
157
- CustomerServiceType$1["gorgias"] = "gorgias";
158
- CustomerServiceType$1["kustomer"] = "kustomer";
159
- CustomerServiceType$1["groove"] = "groove";
160
- CustomerServiceType$1["tidio"] = "tidio";
161
- CustomerServiceType$1["zowie"] = "zowie";
162
- CustomerServiceType$1["redo"] = "redo";
163
- CustomerServiceType$1["gladly"] = "gladly";
164
- CustomerServiceType$1["richpanel"] = "richpanel";
165
- CustomerServiceType$1["zendesk"] = "zendesk";
166
- CustomerServiceType$1["unsupported"] = "unsupported";
167
- return CustomerServiceType$1;
168
- }({});
169
- let CustomerServiceIntegrationMode = /* @__PURE__ */ function(CustomerServiceIntegrationMode$1) {
170
- CustomerServiceIntegrationMode$1["none"] = "none";
171
- CustomerServiceIntegrationMode$1["simple"] = "simple";
172
- CustomerServiceIntegrationMode$1["full"] = "full";
173
- return CustomerServiceIntegrationMode$1;
174
- }({});
175
-
176
- //#endregion
177
- Object.defineProperty(exports, 'CategoryExtractorType', {
178
- enumerable: true,
179
- get: function () {
180
- return CategoryExtractorType;
181
- }
182
- });
183
- Object.defineProperty(exports, 'ColorNames', {
184
- enumerable: true,
185
- get: function () {
186
- return ColorNames;
187
- }
188
- });
189
- Object.defineProperty(exports, 'CustomerServiceIntegrationMode', {
190
- enumerable: true,
191
- get: function () {
192
- return CustomerServiceIntegrationMode;
193
- }
194
- });
195
- Object.defineProperty(exports, 'CustomerServiceType', {
196
- enumerable: true,
197
- get: function () {
198
- return CustomerServiceType;
199
- }
200
- });
201
- Object.defineProperty(exports, 'OrgShortName', {
202
- enumerable: true,
203
- get: function () {
204
- return OrgShortName;
205
- }
206
- });
207
- Object.defineProperty(exports, 'PageVariantTestType', {
208
- enumerable: true,
209
- get: function () {
210
- return PageVariantTestType;
211
- }
212
- });
213
- Object.defineProperty(exports, 'WidgetType', {
214
- enumerable: true,
215
- get: function () {
216
- return WidgetType;
217
- }
218
- });
219
- Object.defineProperty(exports, 'colorVar', {
220
- enumerable: true,
221
- get: function () {
222
- return colorVar;
223
- }
224
- });
225
- Object.defineProperty(exports, 'getOrgInfo', {
226
- enumerable: true,
227
- get: function () {
228
- return getOrgInfo;
229
- }
230
- });
231
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMtQ0dDNk9venAuY2pzIiwibmFtZXMiOlsibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9jb2xvcnNDb25maWcudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL29yZ3NFbnVtLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9zdXBwb3J0ZWRPcmdzLnRzIiwiLi4vc3JjL2NvbnRleHRzL3R5cGVzLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2UvY3VzdG9tZXJTZXJ2aWNlL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImVudW0gQ29sb3JOYW1lcyB7XG4gIFRleHRQcmltYXJ5ID0gJ3RleHQtcHJpbWFyeScsXG4gIFRleHRTZWNvbmRhcnkgPSAndGV4dC1zZWNvbmRhcnknLFxuICBUZXh0QWNjZW50ID0gJ3RleHQtYWNjZW50JyxcbiAgVGV4dExpbmsgPSAndGV4dC1saW5rJyxcbiAgVGV4dExpZ2h0ID0gJ3RleHQtbGlnaHQnLFxuICBCYWNrZ3JvdW5kUHJpbWFyeSA9ICdiYWNrZ3JvdW5kLXByaW1hcnknLFxuICBCYWNrZ3JvdW5kU2Vjb25kYXJ5ID0gJ2JhY2tncm91bmQtc2Vjb25kYXJ5JyxcbiAgQmFja2dyb3VuZFNlY29uZGFyeURhcmsgPSAnYmFja2dyb3VuZC1zZWNvbmRhcnktZGFyaycsXG4gIEJhY2tncm91bmRUZXJ0aWFyeSA9ICdiYWNrZ3JvdW5kLXRlcnRpYXJ5JyxcbiAgQmFja2dyb3VuZERhcmsgPSAnYmFja2dyb3VuZC1kYXJrJyxcbiAgQmFja2dyb3VuZExpZ2h0ID0gJ2JhY2tncm91bmQtbGlnaHQnLFxuICBCYWNrZ3JvdW5kU2F0dXJhdGVkID0gJ2JhY2tncm91bmQtc2F0dXJhdGVkJyxcbiAgQm9yZGVyTGlnaHQgPSAnYm9yZGVyLWxpZ2h0JyxcbiAgQm9yZGVyTWVkaXVtID0gJ2JvcmRlci1tZWRpdW0nLFxuICBCb3JkZXJEYXJrID0gJ2JvcmRlci1kYXJrJyxcbiAgQm9yZGVyT3V0bGluZSA9ICdib3JkZXItb3V0bGluZScsXG4gIEFjY2VudFByaW1hcnkgPSAnYWNjZW50LXByaW1hcnknLFxuICBBY2NlbnRTZWNvbmRhcnkgPSAnYWNjZW50LXNlY29uZGFyeScsXG59XG5cbnR5cGUgQ29sb3JNYXBwaW5nID0ge1xuICBba2V5IGluIENvbG9yTmFtZXNdOiBzdHJpbmc7XG59O1xuXG5jb25zdCBjb2xvclZhciA9IChjb2xvcjogQ29sb3JOYW1lcyk6IHN0cmluZyA9PiBgdmFyKC0tc3BpZmZ5LWNvbG9ycy0ke2NvbG9yfSlgO1xuZXhwb3J0IHsgQ29sb3JOYW1lcywgY29sb3JWYXIgfTtcbmV4cG9ydCB0eXBlIHsgQ29sb3JNYXBwaW5nIH07XG4iLCJleHBvcnQgY29uc3QgT3JnU2hvcnROYW1lID0ge1xuICBDb3RlcmllOiAnY290ZXJpZScsXG4gIEZvckxvdmVBbmRMZW1vbnM6ICdmb3ItbG92ZS1hbmQtbGVtb25zJyxcbiAgR3JlZW5wYW46ICdncmVlbnBhbicsXG4gIEpvcmRhbkNyYWlnOiAnam9yZGFuLWNyYWlnJyxcbiAgTGFycnlBbmRTZXJnZXM6ICdsYXJyeV9hbmRfc2VyZ2VzJyxcbiAgTGVhcHNBbmRSZWJvdW5kczogJ2xlYXBzLWFuZC1yZWJvdW5kcycsXG4gIE1hbnRyYUJyYW5kOiAnbWFudHJhLWJyYW5kJyxcbiAgU3Bhbng6ICdzcGFueCcsXG4gIFNwYW54U3RhZ2luZzogJ3N0YWdpbmctc3BhbngnLFxuICBTdXBlcmdvb3A6ICdzdXBlcmdvb3AnLFxuICBVbmlxdWVWaW50YWdlOiAndW5pcXVlLXZpbnRhZ2UnLFxuICBKYWNrQXJjaGVyOiAnamFjay1hcmNoZXInLFxuICAvKiAtLSBCZWxvdyBpdGVtcyBhcmUgZ2VuZXJhdGVkIGJ5IHBsb3AgLS0gKi9cbiAgU2tpblBlcmZlY3Rpb246ICdza2luLXBlcmZlY3Rpb24nLFxuICBMb29rT3B0aWM6ICdsb29rLW9wdGljJyxcbiAgRml2ZUNiZDogJ2ZpdmUtY2JkJyxcbiAgU25hcFN1cHBsZW1lbnRzOiAnc25hcC1zdXBwbGVtZW50cycsXG4gIExvbmdldml0eXJ4OiAnbG9uZ2V2aXR5cngnLFxuICBWZW5hQ2JkOiAndmVuYS1jYmQnLFxuICBNZWR0ZXJyYTogJ21lZHRlcnJhJyxcbiAgTW9kZWxsczogJ21vZGVsbHMnLFxuICBQcmVzc2VkRmxvcmFsOiAncHJlc3NlZC1mbG9yYWwnLFxuICBLaW5kcmVkQnJhdmVseTogJ2tpbmRyZWQtYnJhdmVseScsXG4gIFdpbmVFbnRodXNpYXN0OiAnd2luZS1lbnRodXNpYXN0JyxcbiAgSG9tZWdyb3duQ2FubmFiaXM6ICdob21lZ3Jvd24tY2FubmFiaXMnLFxuICBEcmVhbWxhbmRCYWJ5OiAnZHJlYW1sYW5kLWJhYnknLFxuICBCYW5kb2xpZXI6ICdiYW5kb2xpZXInLFxuICBXZXN0b25Kb25Cb3VjaGVyOiAnd2VzdG9uLWpvbi1ib3VjaGVyJyxcbiAgS3V0RnJvbVRoZUtsb3RoOiAna3V0LWZyb20tdGhlLWtsb3RoJyxcbiAgR3Jvb3ZlTGlmZTogJ2dyb292ZS1saWZlJyxcbiAgQ2FycGU6ICdjYXJwZScsXG4gIFdvbGZUYWN0aWNhbDogJ3dvbGYtdGFjdGljYWwnLFxuICBXb2xmTWF0dHJlc3M6ICd3b2xmbWF0dHJlc3MnLFxuICBEZWZhdWx0OiAnZGVmYXVsdCcsXG59IGFzIGNvbnN0O1xuIiwiaW1wb3J0IHsgT3JnU2hvcnROYW1lIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHMvb3Jnc0VudW1cIjtcbmltcG9ydCB7IENvbG9yTWFwcGluZywgT3JnUGFnZUNvbmZpZywgT3JnVUlDb25maWcgfSBmcm9tIFwic3JjL2NvbnRleHRzL3R5cGVzXCI7XG5cbmV4cG9ydCB7IE9yZ1Nob3J0TmFtZSB9IGZyb20gXCIuL29yZ3NFbnVtXCI7XG5cbmV4cG9ydCB0eXBlIEJhc2ljT3JnSW5mb1R5cGUgPSB7XG4gIHNob3J0TmFtZTogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRvbWFpbjogc3RyaW5nO1xuICBkZWZhdWx0UHJvZHVjdElkOiBzdHJpbmc7XG4gIGFsd2F5c0VuYWJsZWRNZXJjaGFudHM6IGJvb2xlYW47XG4gIG9yZ1VJQ29uZmlnOiAoKSA9PiBPcmdVSUNvbmZpZyB8IHVuZGVmaW5lZDtcbiAgb3JnUGFnZUNvbmZpZzogKCkgPT4gT3JnUGFnZUNvbmZpZztcbiAgb3JnQ29sb3JzOiAoKSA9PiBDb2xvck1hcHBpbmcgfCB7fTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPcmdJbmZvID0gYXN5bmMgKFxuICBvcmdTaG9ydE5hbWU/OiBzdHJpbmdcbik6IFByb21pc2U8QmFzaWNPcmdJbmZvVHlwZT4gPT4ge1xuICBzd2l0Y2ggKG9yZ1Nob3J0TmFtZSkge1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLkJhbmRvbGllcjpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL2JhbmRvbGllci9iYW5kb2xpZXJcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLmJhbmRvbGllck9yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuQ2FycGU6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9jYXJwZS9jYXJwZVwiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUuY2FycGVPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLkNvdGVyaWU6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9jb3RlcmllL2NvdGVyaWVcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLmNvdGVyaWVPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLkRyZWFtbGFuZEJhYnk6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9kcmVhbWxhbmRCYWJ5L2RyZWFtbGFuZEJhYnlcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLmRyZWFtbGFuZEJhYnlPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLkZvckxvdmVBbmRMZW1vbnM6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9mb3JMb3ZlQW5kTGVtb25zL2ZvckxvdmVBbmRMZW1vbnNcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLmZvckxvdmVBbmRMZW1vbnNPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLkdyZWVucGFuOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvZ3JlZW5wYW4vZ3JlZW5wYW5cIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLmdyZWVucGFuT3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5Hcm9vdmVMaWZlOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvZ3Jvb3ZlTGlmZS9ncm9vdmVMaWZlXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5ncm9vdmVMaWZlT3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5KYWNrQXJjaGVyOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvamFja0FyY2hlci9qYWNrQXJjaGVyXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5qYWNrQXJjaGVyT3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5Kb3JkYW5DcmFpZzpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL2pvcmRhbkNyYWlnL2pvcmRhbkNyYWlnXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5qb3JkYW5DcmFpZ09yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuS3V0RnJvbVRoZUtsb3RoOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMva3V0RnJvbVRoZUtsb3RoL2t1dEZyb21UaGVLbG90aFwiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUua3V0RnJvbVRoZUtsb3RoT3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5MYXJyeUFuZFNlcmdlczpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL2xhcnJ5QW5kU2VyZ2VzL2xhcnJ5QW5kU2VyZ2VzXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5sYXJyeUFuZFNlcmdlc09yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuTGVhcHNBbmRSZWJvdW5kczpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL2xlYXBzQW5kUmVib3VuZHMvbGVhcHNBbmRSZWJvdW5kc1wiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUubGVhcHNBbmRSZWJvdW5kc09yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuTWFudHJhQnJhbmQ6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9tYW50cmFCcmFuZC9tYW50cmFCcmFuZFwiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUubWFudHJhQnJhbmRPcmdJbmZvXG4gICAgICApO1xuXG4gICAgLy8gLS0tLSBTUEFOWCAtLS0tXG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuU3Bhbng6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9zcGFueC9zcGFueFwiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUuc3BhbnhPcmdJbmZvXG4gICAgICApO1xuICAgIC8vIFNwYW54IHN0YWdpbmcgKGhlYWRsZXNzIHNob3BpZnkpXG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuU3BhbnhTdGFnaW5nOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvc3Bhbngvc3BhbnhTdGFnaW5nXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5zcGFueE9yZ0luZm9cbiAgICAgICk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5TdXBlcmdvb3A6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9zdXBlcmdvb3Avc3VwZXJnb29wXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5zdXBlcmdvb3BPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLlVuaXF1ZVZpbnRhZ2U6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy91bmlxdWVWaW50YWdlL3VuaXF1ZVZpbnRhZ2VcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLnVuaXF1ZVZpbnRhZ2VPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLldlc3RvbkpvbkJvdWNoZXI6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy93ZXN0b25Kb25Cb3VjaGVyL3dlc3RvbkpvbkJvdWNoZXJcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLndlc3RvbkpvbkJvdWNoZXJPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLldvbGZNYXR0cmVzczpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL3dvbGZNYXR0cmVzcy93b2xmTWF0dHJlc3NcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLndvbGZNYXR0cmVzc09yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuV29sZlRhY3RpY2FsOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvd29sZlRhY3RpY2FsL3dvbGZUYWN0aWNhbFwiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUud29sZlRhY3RpY2FsT3JnSW5mb1xuICAgICAgKTtcbiAgICAvKiAtLSBCZWxvdyBpdGVtcyBhcmUgZ2VuZXJhdGVkIGJ5IHBsb3AgLS0gKi9cbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5Ta2luUGVyZmVjdGlvbjpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL3NraW5QZXJmZWN0aW9uL3NraW5QZXJmZWN0aW9uXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5za2luUGVyZmVjdGlvbk9yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuTG9va09wdGljOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvbG9va09wdGljL2xvb2tPcHRpY1wiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUubG9va09wdGljT3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5GaXZlQ2JkOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvZml2ZUNiZC9maXZlQ2JkXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5maXZlQ2JkT3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5TbmFwU3VwcGxlbWVudHM6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9zbmFwU3VwcGxlbWVudHMvc25hcFN1cHBsZW1lbnRzXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5zbmFwU3VwcGxlbWVudHNPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLkxvbmdldml0eXJ4OlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvbG9uZ2V2aXR5cngvbG9uZ2V2aXR5cnhcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLmxvbmdldml0eXJ4T3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5WZW5hQ2JkOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvdmVuYUNiZC92ZW5hQ2JkXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS52ZW5hQ2JkT3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5NZWR0ZXJyYTpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL21lZHRlcnJhL21lZHRlcnJhXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5tZWR0ZXJyYU9yZ0luZm9cbiAgICAgICk7XG5cbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5Nb2RlbGxzOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvbW9kZWxscy9tb2RlbGxzXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5tb2RlbGxzT3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5QcmVzc2VkRmxvcmFsOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvcHJlc3NlZEZsb3JhbC9wcmVzc2VkRmxvcmFsXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5wcmVzc2VkRmxvcmFsT3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5LaW5kcmVkQnJhdmVseTpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL2tpbmRyZWRCcmF2ZWx5L2tpbmRyZWRCcmF2ZWx5XCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5raW5kcmVkQnJhdmVseU9yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuV2luZUVudGh1c2lhc3Q6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy93aW5lRW50aHVzaWFzdC93aW5lRW50aHVzaWFzdFwiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUud2luZUVudGh1c2lhc3RPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLkhvbWVncm93bkNhbm5hYmlzOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvaG9tZWdyb3duQ2FubmFiaXMvaG9tZWdyb3duQ2FubmFiaXNcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLmhvbWVncm93bkNhbm5hYmlzT3JnSW5mb1xuICAgICAgKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvZGVmYXVsdFwiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUuZGVmYXVsdE9yZ0luZm9cbiAgICAgICk7XG4gIH1cbn07XG4iLCJpbXBvcnQgeyBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvbiB9IGZyb20gXCJzcmMvYXBwbGljYXRpb24vbW9kZWxzL2NoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uXCI7XG5pbXBvcnQge1xuICBDb2xvck1hcHBpbmcsXG4gIENvbG9yTmFtZXMsXG4gIGNvbG9yVmFyLFxufSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL21vZGVscy9jb2xvcnNDb25maWdcIjtcbmltcG9ydCB7IEZlYXR1cmVHYXRlcyB9IGZyb20gXCJzcmMvYXBwbGljYXRpb24vbW9kZWxzL2ZlYXR1cmVHYXRlc1wiO1xuaW1wb3J0IHtcbiAgQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb25Nb2RlLFxuICBDdXN0b21lclNlcnZpY2VUeXBlLFxufSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL3NlcnZpY2UvY3VzdG9tZXJTZXJ2aWNlL3R5cGVzXCI7XG5pbXBvcnQgeyBHcmlkSW5zZXJ0aW9uVHlwZSB9IGZyb20gXCJzcmMvYXBwbGljYXRpb24vc2VydmljZS9kb21NdXRhdGlvbnMvR3JpZEluc2VydGlvblNlcnZpY2VcIjtcbmltcG9ydCB7IERPTUluc2VydGlvblR5cGUgfSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL3NlcnZpY2UvZG9tTXV0YXRpb25zL2RvbUluc2VydGlvblNlcnZpY2VcIjtcblxuaW1wb3J0IHR5cGUge1xuICBQYWdlVmlzaXRDYXRlZ29yeSxcbiAgU3VwcG9ydGVkRXZlbnRQcm9kdWN0Q2F0ZWdvcnksXG59IGZyb20gXCJAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnRcIjtcbmltcG9ydCB7IENoYXRTdGF0ZSB9IGZyb20gXCJzcmMvdHlwZXMvY3VzdHNlcnZpY2UtdHlwZXNcIjtcbmltcG9ydCB7IFN1Z2dlc3Rpb25CYXJMb2NhdGlvbkZvck1ldHJpY3MgfSBmcm9tIFwic3JjL3R5cGVzL3N1Z2dlc3Rpb25CYXJWMi10eXBlc1wiO1xuaW1wb3J0IHsgVGVzdFByb3BzIH0gZnJvbSBcInNyYy90eXBlcy90ZXN0LXR5cGVzXCI7XG5cbnR5cGUgU2hvd0Zsb2F0aW5nQnV0dG9uT3B0aW9ucyA9XG4gIHwgXCJhbHdheXNcIlxuICB8IFwiYWZ0ZXItaW50ZXJhY3Rpb24tb24tbW9iaWxlLWFsd2F5cy1kZXNrdG9wXCJcbiAgfCBcImFmdGVyLWludGVyYWN0aW9uLWFueXdoZXJlXCJcbiAgfCBcIm5ldmVyXCI7XG5cbnR5cGUgRmxvYXRpbmdFbnRyeVBvaW50Q29uZmlnID0ge1xuICBwb3NpdGlvbjogXCJib3R0b20tbGVmdFwiIHwgXCJtaWRkbGUtbGVmdFwiIHwgXCJtaWRkbGUtcmlnaHRcIiB8IFwiYm90dG9tLXJpZ2h0XCI7XG4gIGV4cGFuc2lvblRleHQ/OiB7XG4gICAgcGRwOiBzdHJpbmc7XG4gICAgcGxwOiBzdHJpbmc7XG4gIH07XG4gIG1pbmltaXplZENvbG9yOiBzdHJpbmc7XG4gIGV4cGFuZGVkQ29sb3I6IHN0cmluZztcbiAgdGV4dENvbG9yPzogc3RyaW5nO1xuICBzaG93T3B0aW9uOiBTaG93RmxvYXRpbmdCdXR0b25PcHRpb25zO1xuICBpY29uU1ZHU3JjPzogc3RyaW5nO1xuICBpY29uU2l6ZT86IG51bWJlcjtcbiAgaWNvblN0cm9rZUNvbG9yPzogc3RyaW5nO1xuICBpY29uRmlsbENvbG9yPzogc3RyaW5nO1xuICBoZWlnaHQ/OiBudW1iZXI7XG4gIGZvbnRTaXplPzogbnVtYmVyO1xufTtcblxudHlwZSBXZWxjb21lU2VjdGlvblZhcmlhbnQgPSBcInN0YW5kYXJkXCIgfCBcIm91dGxpbmVkXCI7XG5cbnR5cGUgV2VsY29tZVNlY3Rpb25Db2xvclZhcmlhbnQgPSBcInN0YW5kYXJkXCIgfCBcImFjY2VudFwiIHwgXCJicmFuZFwiIHwgXCJsaWdodFwiO1xuXG50eXBlIFdlbGNvbWVTZWN0aW9uQ29uZmlnID0ge1xuICB2YXJpYW50OiBXZWxjb21lU2VjdGlvblZhcmlhbnQ7XG4gIGNvbG9yVmFyaWFudD86IFdlbGNvbWVTZWN0aW9uQ29sb3JWYXJpYW50O1xuICB0aXRsZT86IHN0cmluZztcbiAgc3VidGl0bGU/OiBzdHJpbmc7XG4gIC8vIGljb24/OiBSZWFjdC5GdW5jdGlvbkNvbXBvbmVudDxSZWFjdC5TVkdQcm9wczxTVkdTVkdFbGVtZW50Pj47XG4gIC8qIFNlcmlhbGl6YWJsZSBpY29uIG5hbWUgdGhhdCBtYXBzIHRvIGEgUmVhY3QgY29tcG9uZW50LiBQcmVmZXJyZWQgb3ZlciBpY29uIGZvciBkYXRhYmFzZSBzdG9yYWdlLiAqL1xuICBpY29uTmFtZT86IHN0cmluZztcbiAgaW1hZ2VTcmM/OiBzdHJpbmc7XG59O1xuXG50eXBlIENoYXRQcmV2aWV3Q29uZmlnID0ge1xuICB2YXJpYW50OiBcImZsYXRcIiB8IFwiZmlsbGVkXCIgfCBcIm91dGxpbmVkXCI7XG4gIGxhcmdlUHJvZHVjdENvbXBhcmlzb24/OiBib29sZWFuO1xuICBmaWxsZWRCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgaWNvbkZpbGxDb2xvcjogc3RyaW5nO1xuICBidXR0b25UZXh0Q29sb3I/OiBzdHJpbmc7XG4gIGJ1dHRvblRleHRTZWNvbmRhcnlDb2xvcj86IHN0cmluZztcbiAgYnV0dG9uVGV4dEhvdmVyQ29sb3I/OiBzdHJpbmc7XG4gIGJ1dHRvbkJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICBidXR0b25CYWNrZ3JvdW5kSG92ZXJDb2xvcjogc3RyaW5nO1xuICBidXR0b25Cb3JkZXJDb2xvcj86IHN0cmluZztcbiAgYnV0dG9uQm9yZGVySG92ZXJDb2xvcj86IHN0cmluZztcbiAgY29waWVzOiB7IHBkcDogc3RyaW5nW107IHBscDogc3RyaW5nW10gfTtcbiAgc3RhdGljU3VnZ2VzdGlvbkNvcGllcz86IHsgcGRwOiBzdHJpbmdbXTsgcGxwOiBzdHJpbmdbXSB9O1xuICBzdGF0aWNQTFBJbWFnZXM/OiBzdHJpbmdbXTtcbiAgZm9vdGVyQ29uZmlnPzogQ2hhdFByZXZpZXdGb290ZXJDb25maWc7XG4gIGhlYWRlckNvbmZpZz86IENoYXRQcmV2aWV3SGVhZGVyQ29uZmlnO1xuICB0b3BNYXJnaW4/OiBudW1iZXI7XG59O1xuXG50eXBlIENoYXRQcmV2aWV3SGVhZGVyQ29uZmlnID0ge1xuICB0aXRsZT86IHN0cmluZztcbiAgaW1hZ2VTcmM/OiBzdHJpbmc7XG4gIGltYWdlSGVpZ2h0PzogbnVtYmVyO1xuICBzcGFya2xlc0NvbG9yPzogc3RyaW5nOyAvLyB1c2VkIGJ5OiBzcGFueCwgdW5pcXVlVmludGFnZSwgZHJlYW1sYW5kQmFieVxuICBmb250U2l6ZT86IHN0cmluZztcbiAgaWNvbldpZHRoPzogc3RyaW5nO1xuICBpY29uSGVpZ2h0Pzogc3RyaW5nO1xufTtcblxuaW50ZXJmYWNlIENoYXRQcmV2aWV3Rm9vdGVyQ29uZmlnIHtcbiAgaGFzRmFkZT86IGJvb2xlYW47IC8vIHVzZWQgYnk6IHNwYW54LCB1bmlxdWVWaW50YWdlXG4gIHN1Z2dlc3Rpb25CdXR0b25WYXJpYW50PzogXCJkYXJrXCIgfCBcImxpZ2h0XCIgfCBcIm91dGxpbmVkXCI7XG4gIHN1Z2dlc3Rpb25zQmFja2dyb3VuZD86IHN0cmluZzsgLy8gdXNlZCBieTogY2FyYmFoblxuICByZXBseUJ1dHRvbkljb24/OlxuICAgIHwgXCJzZW5kXCJcbiAgICB8IFwibWFnbmlmeWluZ0dsYXNzXCJcbiAgICB8IFwidGhpbk1hZ25pZnlpbmdHbGFzc1wiXG4gICAgfCBcInNlYXJjaEljb25cIjtcbiAgcmVwbHlCdXR0b25UZXh0Pzogc3RyaW5nO1xuICByZXBseUlucHV0SGFzU2hhZG93PzogYm9vbGVhbjsgLy8gdXNlZCBieTogc3BhbnhcbiAgcmVwbHlJbnB1dEhhc0JvcmRlcj86IGJvb2xlYW47IC8vIHVzZWQgYnk6IHNwYW54XG4gIGJhY2tncm91bmRDb2xvcj86IHN0cmluZzsgLy8gdXNlZCBieSBzcGFueCwgdHVzaGJhYnksIHdpbGwgbmVlZCBjdXN0b20gQ1NTIHdoZW4gc3dpdGNoaW5nIG92ZXJcbn1cblxudHlwZSBQcm9kdWN0UmV2aWV3U3R5bGVWYXJpYW50ID0gXCJzdGFuZGFyZFwiIHwgXCJib3JkZXJlZFwiO1xuXG50eXBlIFByb2R1Y3RSZXZpZXdDb2xvclZhcmlhbnQgPSBcIm5ldXRyYWxcIiB8IFwiYnJhbmRcIiB8IFwicHJlbWl1bVwiO1xuXG5pbnRlcmZhY2UgUHJvZHVjdFJldmlld0NvbmZpZyB7XG4gIHN0eWxlVmFyaWFudDogUHJvZHVjdFJldmlld1N0eWxlVmFyaWFudDtcbiAgY29sb3JWYXJpYW50OiBQcm9kdWN0UmV2aWV3Q29sb3JWYXJpYW50O1xuICB2ZXJpZmllZEJ1eWVyVGl0bGU6IHN0cmluZztcbiAgaW5jZW50aXZpemVkUmV2aWV3RmxhZz86IGJvb2xlYW47XG59XG5cbnR5cGUgUGFnZUNhcmRWYXJpYW50ID0gXCJmaWxsZWRcIiB8IFwib3V0bGluZWRcIiB8IFwibWluaW1hbFwiO1xuXG50eXBlIFBhZ2VDYXJkSG92ZXJWYXJpYW50ID0gXCJub25lXCIgfCBcInNoYWRvd1wiIHwgXCJsaWZ0XCI7XG5cbnR5cGUgUGFnZUNhcmRJY29uVmFyaWFudCA9IFwicHJpbWFyeVwiIHwgXCJhY2NlbnRcIiB8IFwiYmFja2dyb3VuZFwiIHwgXCJub25lXCI7XG5cbnR5cGUgUGFnZUNhcmRDb25maWcgPSB7XG4gIHZhcmlhbnQ6IFBhZ2VDYXJkVmFyaWFudDtcbiAgaG92ZXJWYXJpYW50OiBQYWdlQ2FyZEhvdmVyVmFyaWFudDtcbiAgaWNvblZhcmlhbnQ6IFBhZ2VDYXJkSWNvblZhcmlhbnQ7XG59O1xuXG50eXBlIFByb2R1Y3RDYXJkVmFyaWFudCA9XG4gIHwgXCJmaWxsZWRcIlxuICB8IFwiYm9yZGVyZWRcIlxuICB8IFwibWluaW1hbFwiXG4gIHwgXCJ0cmFuc3BhcmVudEJvcmRlcmVkXCI7XG5cbnR5cGUgUHJvZHVjdENhcmRIb3ZlclZhcmlhbnQgPSBcImJhY2tncm91bmREYXJrXCIgfCBcIm5vbmVcIjtcblxudHlwZSBQcm9kdWN0Q2FyZExheW91dFZhcmlhbnQgPSBcIm5vcm1hbFwiIHwgXCJ0YWxsXCIgfCBcInNxdWFyZVwiO1xuXG5pbnRlcmZhY2UgUHJvZHVjdENhcmRDb25maWcge1xuICB2YXJpYW50OiBQcm9kdWN0Q2FyZFZhcmlhbnQ7XG4gIGhvdmVyVmFyaWFudDogUHJvZHVjdENhcmRIb3ZlclZhcmlhbnQ7XG4gIGxheW91dFZhcmlhbnQ6IFByb2R1Y3RDYXJkTGF5b3V0VmFyaWFudDtcbiAgcHJpY2VQcmVmaXg/OiBzdHJpbmc7XG59XG5cbnR5cGUgQ1NTd2l0Y2hDb25maWcgPSB7XG4gIHZhcmlhbnQ6IFwiYXR0YWNoZWRcIiB8IFwiZGV0YWNoZWRcIjtcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIGJvcmRlckNvbG9yOiBzdHJpbmc7XG4gIHNlbGVjdGVkVGV4dENvbG9yOiBzdHJpbmc7XG4gIHNlbGVjdGVkQmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICB1bnNlbGVjdGVkVGV4dENvbG9yOiBzdHJpbmc7XG4gIHVuc2VsZWN0ZWRCYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIHN1cHBvcnRUaXRsZT86IHN0cmluZztcbiAgc3BpZmZ5VGl0bGU/OiBzdHJpbmc7XG4gIHNwaWZmeVRpdGxlSGFzTG9nbz86IGJvb2xlYW47XG59O1xuXG50eXBlIENoYXRIZWFkZXJDb25maWcgPSB7XG4gIGNvbGxhcHNlZENvbG9yOiBzdHJpbmc7XG4gIGV4cGFuZGVkQ29sb3I6IHN0cmluZztcbiAgY2hldnJvbkNvbG9yOiBzdHJpbmc7XG4gIGltYWdlU3JjPzogc3RyaW5nO1xuICBpY29uPzogUmVhY3QuRnVuY3Rpb25Db21wb25lbnQ8UmVhY3QuU1ZHUHJvcHM8U1ZHU1ZHRWxlbWVudD4+O1xuICBjbG9zZUljb24/OiBSZWFjdC5GdW5jdGlvbkNvbXBvbmVudDxSZWFjdC5TVkdQcm9wczxTVkdTVkdFbGVtZW50Pj47XG4gIGJvcmRlckJvdHRvbT86IHN0cmluZztcbiAgaGVhZGVyQmFySGVpZ2h0UGFydGlhbFZpZXc6IG51bWJlcjtcbiAgaGVhZGVyQmFySGVpZ2h0RnVsbFZpZXc6IG51bWJlcjtcbiAgY3VzdG9tZXJTdXBwb3J0U3dpdGNoQ29uZmlnPzogQ1NTd2l0Y2hDb25maWc7XG59O1xuXG50eXBlIFNpbXBsZUN1c3RvbWVyU2VydmljZUludGVncmF0aW9uID0ge1xuICBpbnRlZ3JhdGlvbk1vZGU6IEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uTW9kZTtcbiAgcHJvdmlkZXI6IEN1c3RvbWVyU2VydmljZVR5cGU7XG4gIHVzZVVuaWZpZWRCdXR0b24/OiBib29sZWFuO1xufTtcblxudHlwZSBGdWxsQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb24gPSB7XG4gIGludGVncmF0aW9uTW9kZTogQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb25Nb2RlO1xuICBwcm92aWRlcjogQ3VzdG9tZXJTZXJ2aWNlVHlwZTtcbiAgdXNlVW5pZmllZEJ1dHRvbj86IGJvb2xlYW47XG4gIGNoYXRFbmFibGVkRHVyaW5nQnVzaW5lc3NIb3Vycz86IGJvb2xlYW47XG4gIHNob3dOYW1lSW5wdXQ/OiBib29sZWFuO1xuICBmb3JtQWlOYW1lPzogc3RyaW5nO1xuICB3ZWxjb21lVGl0bGU6IHN0cmluZztcbiAgd2VsY29tZURlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHNob3dXZWxjb21lT25Gb3JtPzogYm9vbGVhbjtcbiAgY29udGFjdFN1YmplY3RPcHRpb25zPzogc3RyaW5nW107XG4gIGdldEN1c3RvbVdhaXRpbmdNZXNzYWdlPzogKG5hbWU/OiBzdHJpbmcpID0+IHN0cmluZztcbiAgd2l0aGluQnVzaW5lc3NIb3Vyc01lc3NhZ2U/OiBzdHJpbmc7XG4gIHdpdGhpbkJ1c2luZXNzSG91cnNXYWl0aW5nTWVzc2FnZT86IHN0cmluZztcbiAgb3V0c2lkZUJ1c2luZXNzSG91cnNNZXNzYWdlPzogc3RyaW5nO1xuICBvdXRzaWRlQnVzaW5lc3NIb3Vyc1dhaXRpbmdNZXNzYWdlPzogc3RyaW5nO1xuICB3aXRoaW5CdXNpbmVzc0hvdXJzRm9ybU1lc3NhZ2U/OiBzdHJpbmc7XG4gIG91dHNpZGVCdXNpbmVzc0hvdXJzRm9ybU1lc3NhZ2U/OiBzdHJpbmc7XG4gIHN1Z2dlc3RlZEFJUXVlc3Rpb25zPzogc3RyaW5nW107XG4gIGJ1c2luZXNzSG91cnNQb2xsaW5nPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIGlzIGhhbmRsZWQgYnkgdGhlIEJFLlxuICAgKi9cbiAgYnVzaW5lc3NIb3Vyc1N0YXJ0VVRDPzogc3RyaW5nO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBpcyBoYW5kbGVkIGJ5IHRoZSBCRS5cbiAgICovXG4gIGJ1c2luZXNzSG91cnNFbmRVVEM/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIGlzIGhhbmRsZWQgYnkgdGhlIEJFLlxuICAgKi9cbiAgYnVzaW5lc3NIb3Vyc1RpbWV6b25lPzogc3RyaW5nO1xuXG4gIHNob3dBSVN1Z2dlc3Rpb25zV2l0aGluQnVzaW5lc3NIb3Vycz86IGJvb2xlYW47XG4gIHdhaXRpbmdNZXNzYWdlUG9zaXRpb24/OiBcIkJFRk9SRV9NRVNTQUdFU1wiIHwgXCJBRlRFUl9NRVNTQUdFU1wiO1xuICBsZWdhbE1lc3NhZ2U/OiBzdHJpbmc7XG4gIHdpdGhpbkJ1c2luZXNzSG91cnNJbml0aWFsU3RhdGU/OiBDaGF0U3RhdGU7XG4gIG91dHNpZGVCdXNpbmVzc0hvdXJzSW5pdGlhbFN0YXRlPzogQ2hhdFN0YXRlO1xuICB3aXRoaW5CdXNpbmVzc0hvdXJzQnV0dG9udGV4dD86IHN0cmluZztcbiAgb3V0c2lkZUJ1c2luZXNzSG91cnNCdXR0b250ZXh0Pzogc3RyaW5nO1xuICByZW9wZW5DaGF0TWVzc2FnZTogc3RyaW5nO1xufTtcblxudHlwZSBDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbiA9XG4gIHwgU2ltcGxlQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb25cbiAgfCBGdWxsQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb247XG5cbnR5cGUgQ29udmVyc2F0aW9uYWxTZWFjaCA9IHtcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIHJlcGx5SW5wdXQ/OiBSZXBseUlucHV0Q29uZmlnO1xuICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdO1xuICBlbnRyeXBvaW50QmdDb2xvcj86IHN0cmluZztcbiAgZW50cnlwb2ludFRleHRDb2xvcj86IHN0cmluZztcbiAgZW50cnlwb2ludEJ0bkNvbG9yPzogc3RyaW5nO1xuICBlbnRyeXBvaW50QnRuVGV4dENvbG9yPzogc3RyaW5nO1xuICBlbnRyeXBvaW50QnRuQm9yZGVyQ29sb3I/OiBzdHJpbmc7XG4gIGVudHJ5cG9pbnRDb250YWluZXI/OiBzdHJpbmc7XG4gIGVudHJ5cG9pbnRUcmlnZ2VyPzogc3RyaW5nO1xuICBwcm9kdWN0R3JpZENvbnRhaW5lcj86IHN0cmluZztcbiAgZ2VuZXJhbFNlYXJjaEJ0bj86IHN0cmluZztcbiAgcGFnZUNvbnRlbnQ/OiBzdHJpbmc7XG4gIHNlYXJjaENvbnRlbnQ/OiBzdHJpbmc7XG4gIHNvcnRpbmdUaXRsZT86IHN0cmluZztcbiAgc2VsZWN0aW9uVGl0bGU/OiBzdHJpbmc7XG4gIHNvcnRpbmdGb250Pzogc3RyaW5nO1xuICBvcHRpb25zRm9udD86IHN0cmluZztcbiAgc29ydGluZ0J1dHRvblRleHQ/OiBzdHJpbmc7XG59O1xuXG50eXBlIENoYXRNZXNzYWdlVmFyaWFudCA9IFwic3RhbmRhcmRcIiB8IFwicHJlbWl1bVwiIHwgXCJhY2NlbnRcIjtcblxuaW50ZXJmYWNlIENoYXRNZXNzYWdlQ29uZmlnIHtcbiAgYXNzaXN0YW50Q2hhdFRpdGxlOiBzdHJpbmc7XG4gIHZhcmlhbnQ6IENoYXRNZXNzYWdlVmFyaWFudDtcbiAgcHJvZHVjdExpbms6IHtcbiAgICB2YXJpYW50OiBQcm9kdWN0TGlua1ZhcmlhbnQ7XG4gICAgaG92ZXJWYXJpYW50OiBQcm9kdWN0TGlua0hvdmVyVmFyaWFudDtcbiAgICBpY29uVmFyaWFudDogUHJvZHVjdExpbmtJY29uVmFyaWFudDtcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFJlcGx5SW5wdXRDb25maWcge1xuICAvLyBUT0RPIGNvbnNpZGVyIG1ha2luZyB0aGlzIGEgbnVtYmVyXG4gIHNpemU/OiBcIm1kXCIgfCBcImxnXCI7XG4gIHNlbmRJY29uOiBcImFycm93VXBcIiB8IFwic2VuZFwiIHwgXCJzZWFyY2hcIjtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBQYXJ0aWFsVmlld0NvbmZpZyB7XG4gIC8vIG1heGltdW0gaGVpZ2h0IG9mIHRoZSBwYXJ0aWFsIHZpZXcgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBzY3JlZW4gaGVpZ2h0XG4gIG1heEhlaWdodDogbnVtYmVyO1xuICBib3JkZXJSYWRpdXM/OiBzdHJpbmc7XG59XG5cbnR5cGUgUHJvZHVjdExpbmtJY29uVmFyaWFudCA9XG4gIHwgXCJhY2NlbnRQcmltYXJ5XCJcbiAgfCBcImJhY2tncm91bmRQcmltYXJ5XCJcbiAgfCBcImJhY2tncm91bmRQcmltYXJ5RGFya1wiXG4gIHwgXCJib3JkZXJMaWdodFwiXG4gIHwgXCJiYWNrZ3JvdW5kU2F0dXJhdGVkXCI7XG5cbnR5cGUgUHJvZHVjdExpbmtWYXJpYW50ID0gXCJ0ZXh0TGlua1wiO1xuXG50eXBlIFByb2R1Y3RMaW5rSG92ZXJWYXJpYW50ID0gXCJiYWNrZ3JvdW5kRGFya1wiO1xuXG50eXBlIFNlYXJjaENhcmRWYXJpYW50ID1cbiAgfCBcImJhY2tncm91bmRQcmltYXJ5XCJcbiAgfCBcImJhY2tncm91bmRTZWNvbmRhcnlcIlxuICB8IFwiYmFja2dyb3VuZFNlY29uZGFyeURhcmtcIlxuICB8IFwiYmFja2dyb3VuZExpZ2h0XCJcbiAgfCBcImJhY2tncm91bmRTYXR1cmF0ZWRcIjtcblxudHlwZSBTdWdnZXN0aW9uQnV0dG9uVmFyaWFudCA9XG4gIHwgXCJvdXRsaW5lZFwiXG4gIHwgXCJvdXRsaW5lZExpZ2h0XCJcbiAgfCBcInByaW1hcnlcIlxuICB8IFwic2Vjb25kYXJ5XCJcbiAgfCBcInRlcnRpYXJ5XCJcbiAgfCBcImRhcmtcIlxuICB8IFwiZGFya0FjY2VudFwiXG4gIHwgXCJkYXJrUHJpbWFyeVwiXG4gIHwgXCJzZWNvbmRhcnlEYXJrXCJcbiAgfCBcInNlY29uZGFyeUFjY2VudFwiXG4gIHwgXCJ0cmFuc3BhcmVudFwiXG4gIHwgXCJ0cmFuc3BhcmVudERhcmtcIlxuICB8IFwibGlnaHREYXJrXCI7XG5cbmludGVyZmFjZSBTdWdnZXN0aW9uQnV0dG9uQ29uZmlnIHtcbiAgdmFyaWFudD86IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICBob3ZlclZhcmlhbnQ/OiBTdWdnZXN0aW9uQnV0dG9uVmFyaWFudDtcbiAgYW5zd2VyVmFyaWFudD86IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICBib3JkZXJSYWRpdXM/OiBcInNtXCIgfCBcIm1kXCIgfCBcImxnXCI7XG59XG5cbnR5cGUgTnVtUm93cyA9IFwiZGVmYXVsdFwiIHwgXCJhbHdheXNPbmVSb3dcIiB8IFwiYWx3YXlzVHdvUm93c1wiIHwgXCJ0d29Sb3dzT25Nb2JpbGVcIjtcblxuaW50ZXJmYWNlIEFscGhhYmV0aWNGaWx0ZXJTb3J0aW5nIHtcbiAgdHlwZTogXCJhbHBoYWJldGljXCI7XG59XG5pbnRlcmZhY2UgUHJvZHVjdENvdW50RmlsdGVyU29ydGluZyB7XG4gIHR5cGU6IFwicHJvZHVjdENvdW50XCI7XG59XG5pbnRlcmZhY2UgQ3VzdG9tRmlsdGVyU29ydGluZyB7XG4gIHR5cGU6IFwiY3VzdG9tXCI7XG4gIG1hcDogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbn1cblxudHlwZSBGaWx0ZXJTb3J0aW5nID1cbiAgfCBBbHBoYWJldGljRmlsdGVyU29ydGluZ1xuICB8IFByb2R1Y3RDb3VudEZpbHRlclNvcnRpbmdcbiAgfCBDdXN0b21GaWx0ZXJTb3J0aW5nO1xuXG5pbnRlcmZhY2UgQmFzZUZpbHRlckNvbmZpZyB7XG4gIGZpbHRlcklkOiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG59XG5pbnRlcmZhY2UgRHluYW1pY0ZpbHRlckNvbmZpZyBleHRlbmRzIEJhc2VGaWx0ZXJDb25maWcge1xuICB0eXBlOiBcImR5bmFtaWNcIjtcbiAgYXR0cmlidXRlOiBzdHJpbmc7XG4gIHNvcnRpbmc6IEZpbHRlclNvcnRpbmc7XG59XG5cbmludGVyZmFjZSBQcmljZUZpbHRlckNvbmZpZyBleHRlbmRzIEJhc2VGaWx0ZXJDb25maWcge1xuICB0eXBlOiBcInByaWNlXCI7XG4gIGJ1Y2tldFNpemU6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgRmlsdGVyQXR0cmlidXRlID0gRHluYW1pY0ZpbHRlckNvbmZpZyB8IFByaWNlRmlsdGVyQ29uZmlnO1xuXG5leHBvcnQgdHlwZSBTZWFyY2haZXJvU3RhdGVWYXJpYW50ID1cbiAgfCBcImJhY2tncm91bmRUZXJ0aWFyeVwiXG4gIHwgXCJiYWNrZ3JvdW5kRGFya1wiXG4gIHwgXCJiYWNrZ3JvdW5kUHJpbWFyeVwiO1xuZXhwb3J0IHR5cGUgU2VhcmNoWmVyb1N0YXRlTGF5b3V0ID0gXCJpbnB1dFwiIHwgXCJpY29uXCI7XG5cbmV4cG9ydCB0eXBlIFNlYXJjaElucHV0VmFyaWFudCA9IFwic3RhbmRhcmRcIjtcblxuZXhwb3J0IHR5cGUgU2VhcmNoSWNvblZhcmlhbnQgPSBcInRoaW5cIiB8IFwiYm9sZFwiO1xuXG5leHBvcnQgdHlwZSBTZWFyY2hGaWx0ZXJTaWRlYmFyVmFyaWFudCA9IFwiZGFya0J1dHRvblwiIHwgXCJsaWdodEJ1dHRvblwiO1xuXG5leHBvcnQgdHlwZSBQcm9kdWN0R3JpZFZhcmlhbnQgPSBcInN0YW5kYXJkXCIgfCBcInNxdWFyZVwiO1xuXG50eXBlIFVzZXJRdWVyeUJ1dHRvbkljb24gPVxuICB8IFwibWFnbmlmeWluZ0dsYXNzXCJcbiAgfCBcInNlbmRcIlxuICB8IFwibWFnbmlmeWluZ0dsYXNzVGhpblwiXG4gIHwgXCJzZW5kQXJyb3dcIlxuICB8IFwic2VhcmNoSWNvblwiO1xuXG5pbnRlcmZhY2UgVXNlclF1ZXJ5QnV0dG9uQ29uZmlnIHtcbiAgdmFyaWFudD86IFwiYm94XCIgfCBcInVuZGVybGluZUxpZ2h0XCIgfCBcInVuZGVybGluZURhcmtcIjtcbiAgcGxhY2Vob2xkZXJUZXh0Pzogc3RyaW5nO1xuICBpY29uOiBVc2VyUXVlcnlCdXR0b25JY29uO1xufVxuXG4vLyBUT0RPOiB0aGlzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgdG9wLWxldmVsIHdpZGdldCBjb25maWdcbmludGVyZmFjZSBUZXJtc0FuZENvbmRpdGlvbnNDb25maWcge1xuICBjb3B5OiBzdHJpbmc7XG4gIGxpbms6IHN0cmluZztcbiAgbGlua1RleHQ6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIE1lcmNoYW50VmFyaWFudFNldHRpbmdzIHtcbiAgZHluYW1pY1ZhcmlhbnRzOiB7XG4gICAgZW5hYmxlZDogYm9vbGVhbjsgLy8gVGhpcyBmZWF0dXJlIHdpbGwgZW5hYmxlIGR5bmFtaWMgdmFyaWFudHMgZm9yIHRoZSBtZXJjaGFudC4gVXNlZnVsIGZvciBTUEEnc1xuICAgIHJlZnJlc2hJbnRlcnZhbD86IG51bWJlcjsgLy8gVGhlIGludGVydmFsIGluIG1pbGxpc2Vjb25kcyB0byBjaGVjayBmb3IgY2hhbmdlcyBpbiB0aGUgVVJMXG4gIH07XG59XG5cbmludGVyZmFjZSBGbG9hdGluZ0NoYXRDb25maWcge1xuICBlbmFibGVXYXRlcm1hcms6IGJvb2xlYW47XG4gIHVzZXJRdWVyeUlucHV0RW5hYmxlZDogYm9vbGVhbjtcbiAgaWdub3JlRmlyc3RNb2RlbFJlc3BvbnNlPzogYm9vbGVhbjtcbiAgbmV2ZXJTaG93U2luZ2xlUHJvZHVjdENhcmRzPzogYm9vbGVhbjtcbiAgdGVybXNBbmRDb25kaXRpb25zQ29uZmlnPzogVGVybXNBbmRDb25kaXRpb25zQ29uZmlnO1xuXG4gIC8vIEZvb3RlciBjb25maWdcbiAgc3VnZ2VzdGlvbkJ1dHRvbkNvbmZpZz86IFN1Z2dlc3Rpb25CdXR0b25Db25maWc7XG4gIHJlcGx5SW5wdXRDb25maWc6IFJlcGx5SW5wdXRDb25maWc7XG59XG5cbmludGVyZmFjZSBTZWFyY2hDb25maWcge1xuICBlbmFibGVHbG9iYWxTZWFyY2g6IGJvb2xlYW47XG4gIHNlYXJjaEZpbHRlckNvbmZpZzogRmlsdGVyQXR0cmlidXRlW107XG4gIHJlZGlyZWN0U2VhcmNoUmVzdWx0c1VybD86IHN0cmluZztcbiAgYWRkaXRpdmVEeW5hbWljRmlsdGVycz86IGJvb2xlYW47XG59XG5cbnR5cGUgT3JnVUlDb25maWcgPSB7XG4gIHNob3J0TmFtZTogc3RyaW5nO1xuICBpZD86IHN0cmluZztcbiAgZmxvYXRpbmdFbnRyeXBvaW50Q29uZmlnPzogRmxvYXRpbmdFbnRyeVBvaW50Q29uZmlnO1xuICAvLyBEZXByZWNhdGVkIC0gcmVtb3ZlIHdpdGggQ2hhdFByZXZpZXcgcmV3cml0ZVxuICBjaGF0UHJldmlld0NvbmZpZz86IENoYXRQcmV2aWV3Q29uZmlnO1xuXG4gIGN1c3RvbWVyU2VydmljZUludGVncmF0aW9uOiBDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbjtcbiAgLy8gRGVwcmVjYXRlZCAtIHJlbW92ZSB3aGVuIEdsb2JhbCBTZWFyY2ggaXMgZnVsbHkgbGF1bmNoZWRcbiAgY29udmVyc2F0aW9uYWxTZWFyY2g/OiBDb252ZXJzYXRpb25hbFNlYWNoO1xuXG4gIG1lcmNoYW50T3ZlcnJpZGVDc3M/OiBzdHJpbmc7XG5cbiAgLy8gRGVwcmVjYXRlZCBUT0RPOiBSZW1vdmUgdGhpcyBkZXByZWNhdGVkIHZhbHVlIHdoZW4gR3Jvb3ZlIENYIGhhcyBwcm9wZXIgdW5pZmllZCBidXR0b24gc3VwcG9ydFxuICAvLyBzZWxlY3RvcnMgZm9yIGVsZW1lbnRzIHRoYXQgc2hvdWxkIGJlIGhpZGRlbiB3aGVuIHRoZSBjaGF0IGlzIG9wZW5cbiAgLy8gZS5nLiBDUyB3aWRnZXRzIHdpdGggbWF4IHotaW5kZXggKFwiZGl2W2lkKj0nY3MtY29udGFpbmVyJ11cIilcbiAgaGlkZGVuRWxlbWVudFNlbGVjdG9ycz86IHN0cmluZ1tdO1xuXG4gIG1lcmNoYW50VmFyaWFudFNldHRpbmdzPzogTWVyY2hhbnRWYXJpYW50U2V0dGluZ3M7XG4gIC8vIFRPRE86IE1pZ3JhdGUgYWxsIGZsb2F0aW5nIGNoYXQgY29uZmlnIGludG8gdGhpcyB0b3AtbGV2ZWwga2V5XG4gIC8vXG4gIGZsb2F0aW5nQ2hhdENvbmZpZzogRmxvYXRpbmdDaGF0Q29uZmlnO1xuXG4gIC8vIENvbnRhaW4gYWxsIHNlYXJjaCBjb25maWcgaGVyZVxuICBzZWFyY2hDb25maWc6IFNlYXJjaENvbmZpZztcbiAgLy8gVE9ETzogTW92ZSB0aGVzZSBpbnRvIEZsb2F0aW5nQ2hhdENvbmZpZ1xuICAvLyBDaGF0IEhlYWRlciByZWxhdGVkIHZhbHVlc1xuICBjaGF0SGVhZGVyOiBDaGF0SGVhZGVyQ29uZmlnO1xuICBzdGlja3lBZ2VudFN3aXRjaFN1Z2dlc3Rpb24/OiBib29sZWFuO1xuICBwYXJ0aWFsVmlld0NvbmZpZzogUGFydGlhbFZpZXdDb25maWc7XG4gIHdlbGNvbWVTZWN0aW9uQ29uZmlnPzogV2VsY29tZVNlY3Rpb25Db25maWc7XG4gIC8vIERpZmZlcmVudCByZXNwb25zZSB2YWx1ZXNcbiAgcHJvZHVjdENhcmRDb25maWc/OiBQcm9kdWN0Q2FyZENvbmZpZztcbiAgcHJvZHVjdFJldmlld0NvbmZpZz86IFByb2R1Y3RSZXZpZXdDb25maWc7XG4gIHBhZ2VDYXJkQ29uZmlnPzogUGFnZUNhcmRDb25maWc7XG4gIGNoYXRNZXNzYWdlQ29uZmlnOiBDaGF0TWVzc2FnZUNvbmZpZztcbn07XG5cbnR5cGUgSW5zZXJ0aW9uUG9pbnQgPSB7XG4gIHNlbGVjdG9yOiBzdHJpbmc7XG4gIC8vIHRoaXMgaXMgdGhlIGluZGV4IG9mIHRoZSB0YXJnZXQgZWxlbWVudCwgMCBpZiBtaXNzaW5nXG4gIHNlbGVjdGlvbkluZGV4PzogbnVtYmVyO1xuICBpbnNlcnRpb25UeXBlOiBET01JbnNlcnRpb25UeXBlO1xufTtcblxudHlwZSBVUkxUZXN0ID0gXCJzaG9waWZ5XCIgfCBcIm51bGxcIjtcblxudHlwZSBJZEV4dHJhY3RvciA9XG4gIHwgXCJzaG9waWZ5LXByb2R1Y3QtaWRcIlxuICB8IFwic2hvcGlmeS1jb2xsZWN0aW9uLWlkXCJcbiAgfCBcInNob3BpZnktcHJvZHVjdC12YXJpYW50LWlkXCJcbiAgfCBcInVybC1yZXNvbHZlci1wcm9kdWN0LWlkXCJcbiAgfCBcInVybC1yZXNvbHZlci1wbHAtaWRcIlxuICB8IFwibnVsbFwiO1xuXG4vLyBUaGlzIGNvbnRhaW5zIGEgbWFwIGJldHdlZW4gUGFnZVZpc2l0Q2F0ZWdvcnkgYW5kIGEgbGlzdCBvZiBVUkwncyB0aGF0IGFyZSBjbGFzc2lmaWVkIGFzIHRoZSB2YWx1ZVxuZW51bSBDYXRlZ29yeUV4dHJhY3RvclR5cGUge1xuICBWaXNpdENhdGVnb3J5TWFwID0gXCJWaXNpdENhdGVnb3J5TWFwXCIsXG4gIFZpc2l0Q2F0ZWdvcnlEZWZhdWx0ID0gXCJWaXNpdENhdGVnb3J5RGVmYXVsdFwiLFxufVxuXG5pbnRlcmZhY2UgQmFzZUNhdGVnb3J5RXh0cmFjdG9yPFQgZXh0ZW5kcyBDYXRlZ29yeUV4dHJhY3RvclR5cGU+IHtcbiAgdHlwZTogVDtcbn1cblxuLy8gVGhpcyBtYXAgYmV0d2VlbnMgYSBjYXRlZ29yeSBhbmQgYSBsaXN0IG9mIHVybCBwYXR0ZXJuc1xuaW50ZXJmYWNlIFZpc2l0Q2F0ZWdvcnlNYXBcbiAgZXh0ZW5kcyBCYXNlQ2F0ZWdvcnlFeHRyYWN0b3I8Q2F0ZWdvcnlFeHRyYWN0b3JUeXBlLlZpc2l0Q2F0ZWdvcnlNYXA+IHtcbiAgbWFwOiB7XG4gICAgW2tleSBpbiBQYWdlVmlzaXRDYXRlZ29yeV0/OiBzdHJpbmdbXTtcbiAgfTtcbn1cblxuLy8gVGhpcyB3aWxsIHJldHVybiBhIGhhcmQtY29kZWQgZGVmYXVsdCBQYWdlVmlzaXRDYXRlZ29yeS4gSXQgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSBmYWxsYmFjayBwYWdlIHR5cGVzXG5pbnRlcmZhY2UgVmlzaXRDYXRlZ29yeURlZmF1bHRcbiAgZXh0ZW5kcyBCYXNlQ2F0ZWdvcnlFeHRyYWN0b3I8Q2F0ZWdvcnlFeHRyYWN0b3JUeXBlLlZpc2l0Q2F0ZWdvcnlEZWZhdWx0PiB7XG4gIHZhbHVlOiBQYWdlVmlzaXRDYXRlZ29yeTtcbn1cblxudHlwZSBDYXRlZ29yeUV4dHJhY3RvciA9IFZpc2l0Q2F0ZWdvcnlNYXAgfCBWaXNpdENhdGVnb3J5RGVmYXVsdDtcblxudHlwZSBXcmFwcGluZ0VsZW1lbnQgPSB7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xuICBlbGVtZW50OiBzdHJpbmc7XG4gIGluc2VydGlvblR5cGU6IERPTUluc2VydGlvblR5cGU7XG59O1xuXG5lbnVtIFBhZ2VWYXJpYW50VGVzdFR5cGUge1xuICBTaG9waWZ5UExQID0gXCJTaG9waWZ5UExQXCIsXG4gIFNob3BpZnlQRFAgPSBcIlNob3BpZnlQRFBcIixcbiAgUGFnZUNhdGVnb3J5ID0gXCJQYWdlQ2F0ZWdvcnlcIixcbiAgQ2F0YWxvZ0NhdGVnb3J5ID0gXCJDYXRhbG9nQ2F0ZWdvcnlcIixcbiAgVG9wQ2F0YWxvZ0NhdGVnb3J5ID0gXCJUb3BDYXRhbG9nQ2F0ZWdvcnlcIixcbiAgSGFzUmV2aWV3cyA9IFwiSGFzUmV2aWV3c1wiLFxuICBJbkNvbGxlY3Rpb24gPSBcIkluQ29sbGVjdGlvblwiLFxuICBIYXNNZXJjaGFudFRhZyA9IFwiSGFzTWVyY2hhbnRUYWdcIixcbiAgRmVhdHVyZUdhdGUgPSBcIkZlYXR1cmVHYXRlXCIsXG4gIFBscElkID0gXCJQbHBJZFwiLFxuICBRdWVyeVBhcmFtID0gXCJRdWVyeVBhcmFtXCIsXG4gIFByb2R1Y3RJZCA9IFwiUHJvZHVjdElkXCIsXG4gIFVzZXJIYXNJbnRlcmFjdGVkID0gXCJVc2VySGFzSW50ZXJhY3RlZFwiLFxuICBVc2VySGFzTm90SW50ZXJhY3RlZCA9IFwiVXNlckhhc05vdEludGVyYWN0ZWRcIixcbiAgaXNMb2FkaW5nID0gXCJpc0xvYWRpbmdcIixcbiAgaXNQcm9kdWN0Q29tcGFyaXNvbiA9IFwiaXNQcm9kdWN0Q29tcGFyaXNvblwiLFxuICBGYWxsYmFjayA9IFwiRmFsbGJhY2tcIixcbiAgVXJsUmVzb2x2ZXIgPSBcIlVybFJlc29sdmVyXCIsXG4gIE51bGwgPSBcIm51bGxcIixcbn1cblxuaW50ZXJmYWNlIEJhc2VQYWdlVmFyaWFudFRlc3Q8VCBleHRlbmRzIFBhZ2VWYXJpYW50VGVzdFR5cGU+IHtcbiAgdGVzdFR5cGU6IFQ7XG59XG5cbmludGVyZmFjZSBUb3BDYXRhbG9nQ2F0ZWdvcnlcbiAgZXh0ZW5kcyBCYXNlUGFnZVZhcmlhbnRUZXN0PFBhZ2VWYXJpYW50VGVzdFR5cGUuVG9wQ2F0YWxvZ0NhdGVnb3J5PiB7XG4gIHRvcENhdGVnb3J5OiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIENhdGFsb2dDYXRlZ29yeVRlc3RcbiAgZXh0ZW5kcyBCYXNlUGFnZVZhcmlhbnRUZXN0PFBhZ2VWYXJpYW50VGVzdFR5cGUuQ2F0YWxvZ0NhdGVnb3J5PiB7XG4gIGNhdGVnb3J5OiBTdXBwb3J0ZWRFdmVudFByb2R1Y3RDYXRlZ29yeTtcbn1cblxuaW50ZXJmYWNlIEhhc1Jldmlld3NUZXN0XG4gIGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLkhhc1Jldmlld3M+IHtcbiAgcmV2aWV3TWluaW11bT86IG51bWJlcjtcbn1cblxuLy8gVGhpcyB3aWxsIHJldHVybiB0cnVlIGlmIHRoZSBwcm9kdWN0IGlzIGluIGFueSBvZiB0aGUgbGlzdGVkIGNvbGxlY3Rpb25zXG5pbnRlcmZhY2UgSW5Db2xsZWN0aW9uVGVzdFxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5JbkNvbGxlY3Rpb24+IHtcbiAgY29sbGVjdGlvbnM6IHN0cmluZ1tdO1xufVxuXG4vLyBUaGlzIHdpbGwgcmV0dXJuIHRydWUgaWYgdGhlIHByb2R1Y3QgaGFzIGFueSBvZiB0aGUgbGlzdGVkIG1lcmNoYW50IHRhZ3NcbmludGVyZmFjZSBIYXNNZXJjaGFudFRhZ1Rlc3RcbiAgZXh0ZW5kcyBCYXNlUGFnZVZhcmlhbnRUZXN0PFBhZ2VWYXJpYW50VGVzdFR5cGUuSGFzTWVyY2hhbnRUYWc+IHtcbiAgbWVyY2hhbnRUYWdzOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIFNob3BpZnlQTFBVUkxUZXN0XG4gIGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLlNob3BpZnlQTFA+IHt9XG5cbmludGVyZmFjZSBTaG9waWZ5UERQVVJMVGVzdFxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5TaG9waWZ5UERQPiB7fVxuXG5pbnRlcmZhY2UgUGFnZUNhdGVnb3J5VGVzdFxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5QYWdlQ2F0ZWdvcnk+IHtcbiAgZXh0cmFjdG9yOiBDYXRlZ29yeUV4dHJhY3Rvcjtcbn1cblxuaW50ZXJmYWNlIEZlYXR1cmVHYXRlVGVzdFxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5GZWF0dXJlR2F0ZT4ge1xuICBmZWF0dXJlR2F0ZTogRmVhdHVyZUdhdGVzO1xufVxuXG5pbnRlcmZhY2UgUHJvZHVjdElkVGVzdFxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5Qcm9kdWN0SWQ+IHtcbiAgcHJvZHVjdElkRXh0cmFjdG9yOiBJZEV4dHJhY3RvcjtcbiAgcHJvZHVjdElkczogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBQbHBJZFRlc3QgZXh0ZW5kcyBCYXNlUGFnZVZhcmlhbnRUZXN0PFBhZ2VWYXJpYW50VGVzdFR5cGUuUGxwSWQ+IHtcbiAgcGxwSWRFeHRyYWN0b3I6IElkRXh0cmFjdG9yO1xuICBwbHBJZHM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgUXVlcnlQYXJhbVRlc3RcbiAgZXh0ZW5kcyBCYXNlUGFnZVZhcmlhbnRUZXN0PFBhZ2VWYXJpYW50VGVzdFR5cGUuUXVlcnlQYXJhbT4ge1xuICBxdWVyeVBhcmFtOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBVc2VySGFzSW50ZXJhY3RlZFRlc3RcbiAgZXh0ZW5kcyBCYXNlUGFnZVZhcmlhbnRUZXN0PFBhZ2VWYXJpYW50VGVzdFR5cGUuVXNlckhhc0ludGVyYWN0ZWQ+IHt9XG5cbmludGVyZmFjZSBVc2VySGFzTm90SW50ZXJhY3RlZFRlc3RcbiAgZXh0ZW5kcyBCYXNlUGFnZVZhcmlhbnRUZXN0PFBhZ2VWYXJpYW50VGVzdFR5cGUuVXNlckhhc05vdEludGVyYWN0ZWQ+IHt9XG5cbmludGVyZmFjZSBJc0xvYWRpbmdUZXN0XG4gIGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLmlzTG9hZGluZz4ge31cblxuaW50ZXJmYWNlIElzUHJvZHVjdENvbXBhcmlzb25cbiAgZXh0ZW5kcyBCYXNlUGFnZVZhcmlhbnRUZXN0PFBhZ2VWYXJpYW50VGVzdFR5cGUuaXNQcm9kdWN0Q29tcGFyaXNvbj4ge31cblxuaW50ZXJmYWNlIFBhZ2VGYWxsYmFja1Rlc3RcbiAgZXh0ZW5kcyBCYXNlUGFnZVZhcmlhbnRUZXN0PFBhZ2VWYXJpYW50VGVzdFR5cGUuRmFsbGJhY2s+IHt9XG5cbmludGVyZmFjZSBVcmxSZXNvbHZlclRlc3RcbiAgZXh0ZW5kcyBCYXNlUGFnZVZhcmlhbnRUZXN0PFBhZ2VWYXJpYW50VGVzdFR5cGUuVXJsUmVzb2x2ZXI+IHt9XG5cbmV4cG9ydCB0eXBlIFBhZ2VWYXJpYW50VGVzdCA9XG4gIHwgUGFnZUNhdGVnb3J5VGVzdFxuICB8IFNob3BpZnlQTFBVUkxUZXN0XG4gIHwgU2hvcGlmeVBEUFVSTFRlc3RcbiAgfCBDYXRhbG9nQ2F0ZWdvcnlUZXN0XG4gIHwgVG9wQ2F0YWxvZ0NhdGVnb3J5XG4gIHwgSGFzUmV2aWV3c1Rlc3RcbiAgfCBJbkNvbGxlY3Rpb25UZXN0XG4gIHwgSGFzTWVyY2hhbnRUYWdUZXN0XG4gIHwgRmVhdHVyZUdhdGVUZXN0XG4gIHwgUHJvZHVjdElkVGVzdFxuICB8IFBscElkVGVzdFxuICB8IFF1ZXJ5UGFyYW1UZXN0XG4gIHwgVXNlckhhc0ludGVyYWN0ZWRUZXN0XG4gIHwgVXNlckhhc05vdEludGVyYWN0ZWRUZXN0XG4gIHwgSXNMb2FkaW5nVGVzdFxuICB8IElzUHJvZHVjdENvbXBhcmlzb25cbiAgfCBQYWdlRmFsbGJhY2tUZXN0XG4gIHwgVXJsUmVzb2x2ZXJUZXN0O1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBzb2NpYWwgcHJvb2YgZW1iZWRkZWQgd2lkZ2V0XG4gKlxuICogQHBhcmFtIGhlYWRlclRpdGxlIC0gVGhlIHRpdGxlIHRleHQgdG8gZGlzcGxheSBpbiB0aGUgd2lkZ2V0IGhlYWRlclxuICogQHBhcmFtIHN0YXRpY1N1Z2dlc3Rpb25zIC0gQSBsaXN0IG9mIHN0cmluZ3MgdG8gZGlzcGxheSBhcyBzdWdnZXN0aW9ucyBpbiB0aGUgd2lkZ2V0XG4gKiBAcGFyYW0gc3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnREZWZhdWx0IC0gVGhlIHZhcmlhbnQgb2YgdGhlIHN1Z2dlc3Rpb24gYnV0dG9uIHRvIGRpc3BsYXkgaW4gdGhlIHdpZGdldCBmb290ZXJcbiAqIEBwYXJhbSBzdWdnZXN0aW9uQnV0dG9uVmFyaWFudEFjY2VudCAtIFRoZSB2YXJpYW50IG9mIHRoZSBzdWdnZXN0aW9uIGJ1dHRvbiB0byBkaXNwbGF5IGluIHRoZSB3aWRnZXQgYm9keVxuICogQHBhcmFtIHN0YXRpY0ltYWdlSW5kZXggLSBJbmRleCBvZiB0aGUgaW1hZ2VVcmwgdG8gdXNlIGZyb20gdGhlIHByb2R1Y3QgcmVzcG9uc2VcbiAqL1xuaW50ZXJmYWNlIFNvY2lhbFByb29mQ29uZmlnIHtcbiAgY3VzdG9tZXJRdWVyeTogc3RyaW5nO1xuICBoZWFkZXJUaXRsZTogc3RyaW5nO1xuICBzdGF0aWNQTFBJbWFnZXNMYXlvdXQ/OiBcImdyaWRcIiB8IFwiaG9yaXpvbnRhbFwiO1xuICBoZWFkZXJGb250RmFtaWx5Pzogc3RyaW5nO1xuICBzdGF0aWNQTFBJbWFnZU5hbWVzPzogc3RyaW5nW107XG4gIHN0YXRpY0ltYWdlSW5kZXg/OiBudW1iZXI7XG4gIHN1Z2dlc3Rpb25CdXR0b25TdHJpbmdzOiBzdHJpbmdbXTtcbiAgc3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnREZWZhdWx0OiBTdWdnZXN0aW9uQnV0dG9uVmFyaWFudDtcbiAgc3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnRBY2NlbnQ/OiBTdWdnZXN0aW9uQnV0dG9uVmFyaWFudDtcbiAgc3VnZ2VzdGlvbkJ1dHRvbkRhdGFBdHRyaWJ1dGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgdXNlclF1ZXJ5QnV0dG9uQ29uZmlnPzogVXNlclF1ZXJ5QnV0dG9uQ29uZmlnO1xuICBsb2dvTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBjcmVhdGluZyB0aGUgbW91bnQgcG9pbnQgZm9yIGEgd2lkZ2V0XG4gKlxuICogQHBhcmFtIGNsYXNzTmFtZSAtIE9wdGlvbmFsIGNsYXNzIG5hbWUgdG8gYXBwbHkgdG8gdGhlIG1vdW50IHBvaW50LiBUYWlsd2luZCBjbGFzc2VzIGFyZSBzdXBwb3J0ZWRcbiAqIGFuZCBlbmNvdXJhZ2VkLiBVc2UgdGhpcyBwYXJhbWV0ZXIgdG8gc3R5bGUgdGhlIG1vdW50aW5nIGNvbnRhaW5lciBmb3IgdGhlIHdpZGdldC5cbiAqL1xuZXhwb3J0IHR5cGUgV2lkZ2V0TW91bnRpbmdDb25maWcgPSB7XG4gIG1vdW50aW5nQ29uZmlnSWQ6IHN0cmluZztcbiAgY29udGFpbmVySWQ6IHN0cmluZztcbiAgdGVzdElkOiBzdHJpbmc7XG4gIHBhcmVudEluc2VydGlvblBvaW50PzogSW5zZXJ0aW9uUG9pbnQ7XG4gIGluc2VydGlvblBvaW50OiBJbnNlcnRpb25Qb2ludDtcbiAgZ3JpZEluc2VydGlvblR5cGU/OiBHcmlkSW5zZXJ0aW9uVHlwZTtcbiAgd3JhcHBpbmdFbGVtZW50PzogV3JhcHBpbmdFbGVtZW50O1xuICBkaXZDaGVja1NlbGVjdG9yPzogc3RyaW5nO1xuICBzdXBwcmVzc2lvblNlbGVjdG9yPzogc3RyaW5nO1xuICBzdHlsZT86IFBhcnRpYWw8Q1NTU3R5bGVEZWNsYXJhdGlvbj47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgZGF0YUF0dHJpYnV0ZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufTtcblxudHlwZSBTdGF0aWNXaWRnZXRNb3VudGluZyA9IHtcbiAgbW91bnRpbmdDb25maWdJZDogc3RyaW5nO1xuICB3aWRnZXRDb25maWdJZDogc3RyaW5nO1xufTtcbnR5cGUgRHluYW1pY1dpZGdldE1vdW50aW5nID0ge1xuICBtb3VudGluZ0NvbmZpZ0lkOiBzdHJpbmc7XG4gIG1vdW50aW5nUG9pbnRXaWRnZXRzOiBXaWRnZXREaXNwbGF5VGVzdHNbXTtcbn07XG5cbnR5cGUgV2lkZ2V0RGlzcGxheVRlc3RzID0ge1xuICB0ZXN0czogUGFnZVZhcmlhbnRUZXN0W107XG4gIHdpZGdldENvbmZpZ0lkOiBzdHJpbmc7XG59O1xuXG50eXBlIFdpZGdldE1vdW50aW5nID0gU3RhdGljV2lkZ2V0TW91bnRpbmcgfCBEeW5hbWljV2lkZ2V0TW91bnRpbmc7XG5cbmVudW0gV2lkZ2V0VHlwZSB7XG4gIENoYXRQcmV2aWV3ID0gXCJDaGF0UHJldmlld1wiLFxuICBTb2NpYWxQcm9vZlYyID0gXCJTb2NpYWxQcm9vZlYyXCIsXG4gIENoYXRQcmV2aWV3VjIgPSBcIkNoYXRQcmV2aWV3VjJcIixcbiAgQ2hhdFByZXZpZXdJc0xvYWRpbmcgPSBcIkNoYXRQcmV2aWV3SXNMb2FkaW5nXCIsXG4gIENoYXRQcmV2aWV3UG9zdEludGVyYWN0aW9uID0gXCJDaGF0UHJldmlld1Bvc3RJbnRlcmFjdGlvblwiLFxuICBDaGF0UHJldmlld1Byb2R1Y3RDb21wYXJpc29uID0gXCJDaGF0UHJldmlld1Byb2R1Y3RDb21wYXJpc29uXCIsXG4gIFN1Z2dlc3Rpb25CYXIgPSBcIlN1Z2dlc3Rpb25CYXJcIixcbiAgU3VnZ2VzdGlvbkJhclYyID0gXCJTdWdnZXN0aW9uQmFyVjJcIixcbiAgSW1hZ2VQcm9tcHRDYXJkID0gXCJJbWFnZVByb21wdENhcmRcIixcbiAgSW1hZ2VCYW5uZXIgPSBcIkltYWdlQmFubmVyXCIsXG4gIFNpbmdsZUltYWdlUHJvbXB0ID0gXCJTaW5nbGVJbWFnZVByb21wdFwiLFxuICBTZWFyY2hQcm9tcHQgPSBcIlNlYXJjaFByb21wdFwiLFxuICBTZWFyY2haZXJvU3RhdGVFbnRyeVBvaW50ID0gXCJTZWFyY2haZXJvU3RhdGVFbnRyeVBvaW50XCIsXG4gIFNlYXJjaFJlc3VsdHNFbnRyeVBvaW50ID0gXCJTZWFyY2hSZXN1bHRzRW50cnlQb2ludFwiLFxuICBTZWFyY2hPdmVybGF5SG9zdCA9IFwiU2VhcmNoT3ZlcmxheUhvc3RcIixcbiAgTm9PcCA9IFwiTm9PcFwiLFxufVxuXG50eXBlIFdpZGdldENvbmZpZyA9XG4gIHwgQ2hhdFByZXZpZXdXaWRnZXRDb25maWdcbiAgfCBTb2NpYWxQcm9vZlYyV2lkZ2V0Q29uZmlnXG4gIHwgQ2hhdFByZXZpZXdWMldpZGdldENvbmZpZ1xuICB8IENoYXRQcmV2aWV3UG9zdEludGVyYWN0aW9uV2lkZ2V0Q29uZmlnXG4gIHwgQ2hhdFByZXZpZXdJc0xvYWRpbmdXaWRnZXRDb25maWdcbiAgfCBDaGF0UHJldmlld1Byb2R1Y3RDb21wYXJpc29uV2lkZ2V0Q29uZmlnXG4gIHwgU3VnZ2VzdGlvbkJhcldpZGdldFYyQ29uZmlnXG4gIHwgSW1hZ2VQcm9tcHRXaWRnZXRDb25maWdcbiAgfCBJbWFnZUJhbm5lcldpZGdldENvbmZpZ1xuICB8IFNpbmdsZUltYWdlUHJvbXB0V2lkZ2V0Q29uZmlnXG4gIHwgU2VhcmNoUHJvbXB0V2lkZ2V0Q29uZmlnXG4gIHwgU2VhcmNoRW50cnlQb2ludFdpZGdldENvbmZpZ1xuICB8IFNlYXJjaFJlc3VsdHNFbnRyeVBvaW50V2lkZ2V0Q29uZmlnXG4gIHwgU2VhcmNoT3ZlcmxheUhvc3RXaWRnZXRDb25maWdcbiAgfCBOb09wV2lkZ2V0Q29uZmlnO1xuXG5pbnRlcmZhY2UgQmFzZVdpZGdldENvbmZpZzxUIGV4dGVuZHMgV2lkZ2V0VHlwZT4ge1xuICB3aWRnZXRDb25maWdJZDogc3RyaW5nO1xuICB0eXBlOiBUO1xuICBjb250ZW50SWQ/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJbWFnZUJhbm5lcldpZGdldENvbmZpZ1xuICBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5JbWFnZUJhbm5lcj4ge1xuICBpbWFnZVNyYzogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBzdWJ0aXRsZTogc3RyaW5nO1xuICBhc3Npc3RhbnRNZXNzYWdlOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBDaGF0UHJldmlld1dpZGdldENvbmZpZ1xuICBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5DaGF0UHJldmlldz4ge1xuICB2YXJpYW50OiBcImZpbGxlZFwiIHwgXCJmbGF0XCIgfCBcIm91dGxpbmVkXCI7XG4gIGFkZFNlcGFyYXRvcnM/OiBib29sZWFuO1xuICBzb2NpYWxQcm9vZkNvbmZpZz86IFNvY2lhbFByb29mQ29uZmlnO1xuICBmb290ZXJDb25maWc/OiBDaGF0UHJldmlld0Zvb3RlckNvbmZpZztcbn1cblxuaW50ZXJmYWNlIENoYXRQcmV2aWV3SGVhZGVyVjJDb25maWcge1xuICB0aXRsZT86IHN0cmluZzsgLy8gRGVmYXVsdDogJ1Nob3BwaW5nIEFzc2lzdGFudCdcbiAgaW1hZ2VTcmM/OiBzdHJpbmc7XG4gIGltYWdlSGVpZ2h0PzogbnVtYmVyO1xufVxuXG50eXBlIFNpbmdsZUltYWdlQ29uZmlnID0ge1xuICBsYXlvdXQ6IFwic2luZ2xlXCI7XG4gIGltYWdlSW5kZXg6IG51bWJlcjtcbn07XG50eXBlIE11bHRpSW1hZ2VDb25maWcgPSB7XG4gIGxheW91dDogXCJncmlkXCIgfCBcImhvcml6b250YWxcIjtcbiAgaW1hZ2VOYW1lczogc3RyaW5nW107XG59O1xudHlwZSBTb2NpYWxQcm9vZkltYWdlQ29uZmlnID0gU2luZ2xlSW1hZ2VDb25maWcgfCBNdWx0aUltYWdlQ29uZmlnO1xuXG50eXBlIENoYXRQcmV2aWV3U3VnZ2VzdGlvbkJ1dHRvbkNvbmZpZyA9IHtcbiAgYnV0dG9uU3RyaW5nczogc3RyaW5nW107XG4gIGFjY2VudEJ1dHRvblZhcmlhbnRzPzoge1xuICAgIGJ1dHRvbjogU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ7XG4gICAgaG92ZXI6IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICB9O1xuICBidXR0b25WYXJpYW50czoge1xuICAgIGJ1dHRvbjogU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ7XG4gICAgaG92ZXI6IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICB9O1xuICBudW1Sb3dzPzogTnVtUm93cztcbn07XG5cbnR5cGUgQ2hhdFByZXZpZXdBbmltYXRlZFRleHRDb25maWcgPSB7XG4gIGxlYWRpbmdUZXh0OiBzdHJpbmc7XG4gIGFuaW1hdGVkU3RyaW5nczogc3RyaW5nW107XG59O1xuXG50eXBlIENoYXRQcmV2aWV3VmFyaWFudCA9XG4gIHwgeyB2YXJpYW50OiBcImZsYXRcIiB9XG4gIHwgeyB2YXJpYW50OiBcImZpbGxlZFwiOyBiYWNrZ3JvdW5kRmlsbENvbG9yOiBzdHJpbmcgfVxuICB8IHsgdmFyaWFudDogXCJvdXRsaW5lZFwiIH07XG5cbi8vIEJhc2UgaW50ZXJmYWNlIGZvciBjb21tb24gY2hhdCBwcmV2aWV3IHByb3BlcnRpZXNcbmludGVyZmFjZSBCYXNlQ2hhdFByZXZpZXdDb25maWcge1xuICBoZWFkZXJDb25maWc6IENoYXRQcmV2aWV3SGVhZGVyVjJDb25maWc7XG4gIHN1Z2dlc3Rpb25CdXR0b25zQ29uZmlnOiBDaGF0UHJldmlld1N1Z2dlc3Rpb25CdXR0b25Db25maWc7XG4gIHVzZXJRdWVyeUJ1dHRvbkNvbmZpZzogVXNlclF1ZXJ5QnV0dG9uQ29uZmlnO1xuICBjaGF0UHJldmlld1ZhcmlhbnQ6IENoYXRQcmV2aWV3VmFyaWFudDtcbiAgYWRkU2VwYXJhdG9ycz86IGJvb2xlYW47XG59XG5cbi8vIFNwZWNpZmljIGNoYXQgcHJldmlldyB3aWRnZXQgY29uZmlndXJhdGlvbnNcbmludGVyZmFjZSBDaGF0UHJldmlld1Bvc3RJbnRlcmFjdGlvbldpZGdldENvbmZpZ1xuICBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5DaGF0UHJldmlld1Bvc3RJbnRlcmFjdGlvbj4sXG4gICAgQmFzZUNoYXRQcmV2aWV3Q29uZmlnIHtcbiAgY2hhdFByZXZpZXdWYXJpYW50OiBDaGF0UHJldmlld1ZhcmlhbnQ7XG4gIGFkZFNlcGFyYXRvcnM/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ2hhdFByZXZpZXdJc0xvYWRpbmdXaWRnZXRDb25maWdcbiAgZXh0ZW5kcyBCYXNlV2lkZ2V0Q29uZmlnPFdpZGdldFR5cGUuQ2hhdFByZXZpZXdJc0xvYWRpbmc+LFxuICAgIEJhc2VDaGF0UHJldmlld0NvbmZpZyB7fVxuXG5pbnRlcmZhY2UgQ2hhdFByZXZpZXdQcm9kdWN0Q29tcGFyaXNvbldpZGdldENvbmZpZ1xuICBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5DaGF0UHJldmlld1Byb2R1Y3RDb21wYXJpc29uPixcbiAgICBCYXNlQ2hhdFByZXZpZXdDb25maWcge1xuICB1c2VMYXJnZVByb2R1Y3RDb21wYXJpc29uPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENoYXRQcmV2aWV3VjJXaWRnZXRDb25maWdcbiAgZXh0ZW5kcyBCYXNlV2lkZ2V0Q29uZmlnPFdpZGdldFR5cGUuQ2hhdFByZXZpZXdWMj4sXG4gICAgQmFzZUNoYXRQcmV2aWV3Q29uZmlnIHtcbiAgYW5pbWF0ZWRUZXh0Q29uZmlnOiBDaGF0UHJldmlld0FuaW1hdGVkVGV4dENvbmZpZztcbn1cblxuaW50ZXJmYWNlIFNvY2lhbFByb29mVjJXaWRnZXRDb25maWdcbiAgZXh0ZW5kcyBCYXNlV2lkZ2V0Q29uZmlnPFdpZGdldFR5cGUuU29jaWFsUHJvb2ZWMj4sXG4gICAgQmFzZUNoYXRQcmV2aWV3Q29uZmlnIHtcbiAgY3VzdG9tZXJRdWVyeT86IHN0cmluZzsgLy8gRGVmYXVsdDogJ2Fza2VkIHdoaWNoIHByb2R1Y3RzIGFyZSB0aGUgYmVzdCdcbiAgaW1hZ2VDb25maWc6IFNvY2lhbFByb29mSW1hZ2VDb25maWc7XG59XG5cbmludGVyZmFjZSBTdWdnZXN0aW9uQmFyV2lkZ2V0VjJDb25maWdcbiAgZXh0ZW5kcyBCYXNlV2lkZ2V0Q29uZmlnPFdpZGdldFR5cGUuU3VnZ2VzdGlvbkJhclYyPiB7XG4gIG1ldHJpY0Rpc3BsYXlMb2NhdGlvbjogQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb247XG4gIGxvY2F0aW9uOiBTdWdnZXN0aW9uQmFyTG9jYXRpb25Gb3JNZXRyaWNzO1xuICB2YXJpYW50OiBTdWdnZXN0aW9uQnV0dG9uVmFyaWFudDtcbiAgaG92ZXJWYXJpYW50OiBTdWdnZXN0aW9uQnV0dG9uVmFyaWFudDtcbiAgYnV0dG9uVGV4dHM6IHtcbiAgICBkZWZhdWx0OiBzdHJpbmdbXTtcbiAgICBwcm9kdWN0U3BlY2lmaWM/OiB7IFtwcm9kdWN0SWQ6IHN0cmluZ106IHN0cmluZ1tdIH07XG4gIH07XG4gIGJvbGRGaXJzdEJ1dHRvbj86IGJvb2xlYW47XG4gIHR3b1Jvd3NPbk1vYmlsZT86IGJvb2xlYW47XG4gIGFuaW1hdGlvblNwZWVkPzogXCJzdGFuZGFyZFwiIHwgXCJzbG93XCIgfCBcIm5vbmVcIjtcbiAgYnV0dG9uQm9yZGVyUmFkaXVzPzogXCJzbVwiIHwgXCJtZFwiIHwgXCJsZ1wiO1xufVxuXG5pbnRlcmZhY2UgSW1hZ2VQcm9tcHRXaWRnZXRDb25maWdcbiAgZXh0ZW5kcyBCYXNlV2lkZ2V0Q29uZmlnPFdpZGdldFR5cGUuSW1hZ2VQcm9tcHRDYXJkPiB7XG4gIHVybDogc3RyaW5nO1xuICBsaWdodFRleHQ/OiBib29sZWFuO1xuICB0aXRsZTogc3RyaW5nO1xuICBzdWJ0aXRsZTogc3RyaW5nW107XG4gIHN0YXRpY1N1Z2dlc3Rpb25Db3BpZXM6IHN0cmluZ1tdO1xuICB1c2VyUXVlcnlCdXR0b25Db25maWc6IFVzZXJRdWVyeUJ1dHRvbkNvbmZpZztcbiAgZmFsbGJhY2tCYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBTaW5nbGVJbWFnZVByb21wdFdpZGdldENvbmZpZ1xuICBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5TaW5nbGVJbWFnZVByb21wdD4ge1xuICB0aXRsZTogc3RyaW5nO1xuICBzdGF0aWNTdWdnZXN0aW9uQ29waWVzOiBzdHJpbmdbXTtcbiAgdXNlclF1ZXJ5QnV0dG9uQ29uZmlnOiBVc2VyUXVlcnlCdXR0b25Db25maWc7XG59XG5cbmludGVyZmFjZSBTZWFyY2hFbnRyeVBvaW50V2lkZ2V0Q29uZmlnXG4gIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLlNlYXJjaFplcm9TdGF0ZUVudHJ5UG9pbnQ+IHtcbiAgc2VhcmNoWmVyb1N0YXRlVmFyaWFudDogU2VhcmNoWmVyb1N0YXRlVmFyaWFudDtcbiAgc2VhcmNoSW5wdXRWYXJpYW50OiBTZWFyY2hJbnB1dFZhcmlhbnQ7XG4gIHNlYXJjaEljb25WYXJpYW50PzogU2VhcmNoSWNvblZhcmlhbnQ7XG4gIHNlYXJjaEljb25TaXplPzogbnVtYmVyO1xuICBzdWdnZXN0aW9uQnV0dG9uQ29uZmlnOiBTdWdnZXN0aW9uQnV0dG9uQ29uZmlnO1xuICBsYXlvdXQ6IFNlYXJjaFplcm9TdGF0ZUxheW91dDtcbiAgc2VhcmNoQm94UGxhY2Vob2xkZXI6IHN0cmluZztcbiAgYW5pbWF0aW9uU3BlZWQ/OiBcInN0YW5kYXJkXCIgfCBcInNsb3dcIiB8IFwibm9uZVwiO1xuICBjb21wYWN0TGFiZWw/OiBzdHJpbmc7XG4gIGluaXRpYWxTdWdnZXN0aW9ucz86IHN0cmluZ1tdO1xuICB1c2luZ1BvcnRhbD86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBOb09wV2lkZ2V0Q29uZmlnIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLk5vT3A+IHt9XG5pbnRlcmZhY2UgU2VhcmNoT3ZlcmxheUhvc3RXaWRnZXRDb25maWdcbiAgZXh0ZW5kcyBCYXNlV2lkZ2V0Q29uZmlnPFdpZGdldFR5cGUuU2VhcmNoT3ZlcmxheUhvc3Q+IHt9XG5cbmludGVyZmFjZSBTZWFyY2hSZXN1bHRzRW50cnlQb2ludFdpZGdldENvbmZpZ1xuICBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5TZWFyY2hSZXN1bHRzRW50cnlQb2ludD4ge1xuICBzZWFyY2hJbnB1dFZhcmlhbnQ6IFNlYXJjaElucHV0VmFyaWFudDtcbiAgc2VhcmNoRmlsdGVyU2lkZWJhclZhcmlhbnQ6IFNlYXJjaEZpbHRlclNpZGViYXJWYXJpYW50O1xuICBwcm9kdWN0R3JpZFZhcmlhbnQ6IFByb2R1Y3RHcmlkVmFyaWFudDtcbiAgc2VhcmNoQm94UGxhY2Vob2xkZXI6IHN0cmluZztcbiAgbm9SZXN1bHRzRm91bmRUZXh0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdpZGdldEhlYWRlclByb3BzIGV4dGVuZHMgVGVzdFByb3BzIHtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGxvZ28/OiBzdHJpbmc7XG4gIGxvZ29IZWlnaHQ/OiBudW1iZXI7XG4gIG9yZ1Nob3J0TmFtZTogc3RyaW5nO1xuICB2YXJpYW50PzogU2VhcmNoUHJvbXB0VmFyaWFudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyUXVlcnlPcHRpb25zIHtcbiAgZm9vdGVyVmFyaWFudD86IFwic3RhbmRhcmRcIjtcbiAgcmVwbHlCdXR0b25UZXh0Pzogc3RyaW5nO1xuICByZXBseUJ1dHRvbkljb24/OlxuICAgIHwgXCJtYWduaWZ5aW5nR2xhc3NcIlxuICAgIHwgXCJzZW5kXCJcbiAgICB8IFwidGhpbk1hZ25pZnlpbmdHbGFzc1wiXG4gICAgfCBcImFpLXNlYXJjaFwiO1xufVxuXG50eXBlIFNlYXJjaFByb21wdFZhcmlhbnQgPSBcInByaW1hcnlcIjtcbmludGVyZmFjZSBTZWFyY2hQcm9tcHRXaWRnZXRDb25maWdcbiAgZXh0ZW5kcyBCYXNlV2lkZ2V0Q29uZmlnPFdpZGdldFR5cGUuU2VhcmNoUHJvbXB0PiB7XG4gIHZhcmlhbnQ6IFNlYXJjaFByb21wdFZhcmlhbnQ7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGhlYWRlckNvbmZpZzogV2lkZ2V0SGVhZGVyUHJvcHM7XG4gIHN1Z2dlc3Rpb25CdXR0b25zOiB7XG4gICAgdmFyaWFudDogU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ7XG4gICAgaG92ZXJWYXJpYW50OiBTdWdnZXN0aW9uQnV0dG9uVmFyaWFudDtcbiAgICBidXR0b25UZXh0czogc3RyaW5nW107XG4gIH07XG4gIGZvb3RlckNvbmZpZz86IFVzZXJRdWVyeU9wdGlvbnM7XG59XG5cbnR5cGUgUGFnZVZhcmlhbnRCYXNlID0ge1xuICAvLyBVbmlxdWUgaWRlbnRpZmllciBmb3IgZWFjaCBlbnRyeSB3aXRoaW4gdGhlIHBhZ2VWYXJpYW50cy5cbiAgLy8gVXNlZnVsIHRvIGRpZmZlcmVudGlhdGUgd2hpY2ggdmFyaWFudCBpcyBsb2FkZWQgd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGVzIG9mIGEgc2luZ2xlIHR5cGUuXG4gIHZhcmlhbnRJZDogc3RyaW5nO1xuICB3aWRnZXRNb3VudGluZzogV2lkZ2V0TW91bnRpbmdbXTtcbiAgdmFyaWFudFRlc3RzOiBQYWdlVmFyaWFudFRlc3RbXTtcbn07XG5cbnR5cGUgUExQUGFnZVZhcmlhbnQgPSBQYWdlVmFyaWFudEJhc2UgJiB7XG4gIHZhcmlhbnRUeXBlOiBcInBscFwiO1xuICBwbHBJZEV4dHJhY3RvcjogSWRFeHRyYWN0b3I7XG59O1xuXG50eXBlIFBEUFBhZ2VWYXJpYW50ID0gUGFnZVZhcmlhbnRCYXNlICYge1xuICB2YXJpYW50VHlwZTogXCJwZHBcIjtcbiAgcGFyZW50UHJvZHVjdElkRXh0cmFjdG9yPzogSWRFeHRyYWN0b3I7XG4gIHByb2R1Y3RJZEV4dHJhY3RvcjogSWRFeHRyYWN0b3I7XG59O1xuXG50eXBlIFZpc2l0UGFnZVZhcmlhbnQgPSBQYWdlVmFyaWFudEJhc2UgJiB7XG4gIHZhcmlhbnRUeXBlOiBcInBhZ2VfdmlzaXRcIjtcbn07XG5cbnR5cGUgT3RoZXJQYWdlVmFyaWFudCA9IFBhZ2VWYXJpYW50QmFzZSAmIHtcbiAgdmFyaWFudFR5cGU6IFwib3RoZXJcIjtcbn07XG5cbnR5cGUgSG9tZVBhZ2VWYXJpYW50ID0gUGFnZVZhcmlhbnRCYXNlICYge1xuICB2YXJpYW50VHlwZTogXCJob21lcGFnZVwiO1xufTtcblxudHlwZSBTZWFyY2hQYWdlVmFyaWFudCA9IFBhZ2VWYXJpYW50QmFzZSAmIHtcbiAgdmFyaWFudFR5cGU6IFwic2VhcmNoXCI7XG59O1xuXG5leHBvcnQgdHlwZSBQYWdlVmFyaWFudENvbmZpZyA9XG4gIHwgUExQUGFnZVZhcmlhbnRcbiAgfCBQRFBQYWdlVmFyaWFudFxuICB8IFZpc2l0UGFnZVZhcmlhbnRcbiAgfCBPdGhlclBhZ2VWYXJpYW50XG4gIHwgSG9tZVBhZ2VWYXJpYW50XG4gIHwgU2VhcmNoUGFnZVZhcmlhbnQ7XG5cbmV4cG9ydCB0eXBlIE9yZ1BhZ2VDb25maWcgPSB7XG4gIC8vIHBhZ2VWYXJpYW50cyBpcyBhIGxpc3Qgb2YgcGFnZSB2YXJpYW50cyB0aGF0IHdlIHN1cHBvcnQuXG4gIHBhZ2VWYXJpYW50czogUGFnZVZhcmlhbnRDb25maWdbXTtcbiAgLy8gd2lkZ2V0Q29uZmlncyBpcyBhIG5hbWVkIHNldCBvZiB3aWRnZXQgY29uZmlnc1xuICB3aWRnZXRDb25maWdzOiBSZWNvcmQ8c3RyaW5nLCBXaWRnZXRDb25maWc+O1xuICBtb3VudGluZ0NvbmZpZ3M6IFJlY29yZDxzdHJpbmcsIFdpZGdldE1vdW50aW5nQ29uZmlnPjtcbn07XG5cbmludGVyZmFjZSBPcmdDb25maWdDb250ZXh0VHlwZSB7XG4gIG9yZ1VJQ29uZmlnOiBPcmdVSUNvbmZpZztcbn1cblxuZXhwb3J0IHR5cGUgT3JnQ29uZmlnID0gT3JnVUlDb25maWc7XG5cbmV4cG9ydCB7XG4gIENhdGVnb3J5RXh0cmFjdG9yVHlwZSxcbiAgQ29sb3JOYW1lcyxcbiAgY29sb3JWYXIsXG4gIFBhZ2VWYXJpYW50VGVzdFR5cGUsXG4gIFdpZGdldFR5cGUsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudml2ZUNvbmZpZyB7XG4gIGFtcGxpdHVkZUFwaUtleT86IHN0cmluZztcbiAgZGF0YVJlc2lkZW5jeT86IHN0cmluZztcbiAgZW52Pzogc3RyaW5nO1xuICBiYXNlVXJsPzogc3RyaW5nO1xuICByZWFjdEFwcE5hbWU/OiBzdHJpbmc7XG4gIGNkblVybD86IHN0cmluZztcbiAgY29udGV4dFNvdXJjZT86IHN0cmluZztcbiAgb3JnTGV2ZWxBcGlLZXk/OiBzdHJpbmc7XG4gIG9yZ1Nob3J0TmFtZT86IHN0cmluZztcbiAgaWRlbnRpZnlpbmdQcmVmaXg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIHtcbiAgQ2F0ZWdvcnlFeHRyYWN0b3IsXG4gIENoYXRNZXNzYWdlVmFyaWFudCxcbiAgQ2hhdE1lc3NhZ2VDb25maWcsXG4gIENoYXRQcmV2aWV3Q29uZmlnLFxuICBDaGF0UHJldmlld0lzTG9hZGluZ1dpZGdldENvbmZpZyxcbiAgQ2hhdFByZXZpZXdQb3N0SW50ZXJhY3Rpb25XaWRnZXRDb25maWcsXG4gIENoYXRQcmV2aWV3UHJvZHVjdENvbXBhcmlzb25XaWRnZXRDb25maWcsXG4gIENoYXRQcmV2aWV3U3VnZ2VzdGlvbkJ1dHRvbkNvbmZpZyxcbiAgU29jaWFsUHJvb2ZWMldpZGdldENvbmZpZyxcbiAgQ2hhdFByZXZpZXdIZWFkZXJWMkNvbmZpZyxcbiAgQ2hhdFByZXZpZXdWMldpZGdldENvbmZpZyxcbiAgQ2hhdFByZXZpZXdGb290ZXJDb25maWcsXG4gIENoYXRQcmV2aWV3SGVhZGVyQ29uZmlnLFxuICBDaGF0UHJldmlld1dpZGdldENvbmZpZyxcbiAgQ2hhdFByZXZpZXdWYXJpYW50LFxuICBDb2xvck1hcHBpbmcsXG4gIEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uLFxuICBGbG9hdGluZ0VudHJ5UG9pbnRDb25maWcsXG4gIEZ1bGxDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbixcbiAgSWRFeHRyYWN0b3IsXG4gIEltYWdlQmFubmVyV2lkZ2V0Q29uZmlnLFxuICBJbWFnZVByb21wdFdpZGdldENvbmZpZyxcbiAgSW5zZXJ0aW9uUG9pbnQsXG4gIE11bHRpSW1hZ2VDb25maWcsXG4gIE9yZ0NvbmZpZ0NvbnRleHRUeXBlLFxuICBPcmdVSUNvbmZpZyxcbiAgUGFnZUNhcmRDb25maWcsXG4gIFBhZ2VDYXJkVmFyaWFudCxcbiAgUGFnZUNhcmRIb3ZlclZhcmlhbnQsXG4gIFBhZ2VDYXJkSWNvblZhcmlhbnQsXG4gIFByb2R1Y3RDYXJkQ29uZmlnLFxuICBQcm9kdWN0Q2FyZFZhcmlhbnQsXG4gIFByb2R1Y3RDYXJkTGF5b3V0VmFyaWFudCxcbiAgUHJvZHVjdENhcmRIb3ZlclZhcmlhbnQsXG4gIFByb2R1Y3RMaW5rSG92ZXJWYXJpYW50LFxuICBQcm9kdWN0TGlua0ljb25WYXJpYW50LFxuICBQcm9kdWN0TGlua1ZhcmlhbnQsXG4gIFByb2R1Y3RSZXZpZXdDb25maWcsXG4gIFByb2R1Y3RSZXZpZXdTdHlsZVZhcmlhbnQsXG4gIFByb2R1Y3RSZXZpZXdDb2xvclZhcmlhbnQsXG4gIFNlYXJjaFByb21wdFZhcmlhbnQsXG4gIFNlYXJjaFByb21wdFdpZGdldENvbmZpZyxcbiAgU2VhcmNoUmVzdWx0c0VudHJ5UG9pbnRXaWRnZXRDb25maWcsXG4gIFNob3dGbG9hdGluZ0J1dHRvbk9wdGlvbnMsXG4gIFNpbmdsZUltYWdlUHJvbXB0V2lkZ2V0Q29uZmlnLFxuICBTZWFyY2hFbnRyeVBvaW50V2lkZ2V0Q29uZmlnLFxuICBTZWFyY2hPdmVybGF5SG9zdFdpZGdldENvbmZpZyxcbiAgU29jaWFsUHJvb2ZDb25maWcsXG4gIFN1Z2dlc3Rpb25CYXJXaWRnZXRWMkNvbmZpZyxcbiAgU3VnZ2VzdGlvbkJ1dHRvbkNvbmZpZyxcbiAgU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQsXG4gIFVSTFRlc3QsXG4gIFVzZXJRdWVyeUJ1dHRvbkNvbmZpZyxcbiAgVXNlclF1ZXJ5QnV0dG9uSWNvbixcbiAgV2VsY29tZVNlY3Rpb25Db25maWcsXG4gIFdlbGNvbWVTZWN0aW9uVmFyaWFudCxcbiAgV2VsY29tZVNlY3Rpb25Db2xvclZhcmlhbnQsXG4gIFdpZGdldENvbmZpZyxcbiAgV3JhcHBpbmdFbGVtZW50LFxuICBTZWFyY2hDYXJkVmFyaWFudCxcbiAgV2lkZ2V0RGlzcGxheVRlc3RzLFxuICBOb09wV2lkZ2V0Q29uZmlnLFxuICBXaWRnZXRNb3VudGluZyxcbiAgU3RhdGljV2lkZ2V0TW91bnRpbmcsXG4gIER5bmFtaWNXaWRnZXRNb3VudGluZyxcbiAgUERQUGFnZVZhcmlhbnQsXG4gIFBMUFBhZ2VWYXJpYW50LFxuICBWaXNpdFBhZ2VWYXJpYW50LFxuICBPdGhlclBhZ2VWYXJpYW50LFxuICBIb21lUGFnZVZhcmlhbnQsXG4gIFNlYXJjaFBhZ2VWYXJpYW50LFxuICBOdW1Sb3dzLFxufTtcbiIsImltcG9ydCB7IEN1c3RvbWVyU2VydmljZVByb3ZpZGVyIH0gZnJvbSBcIkBzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudFwiO1xuXG5leHBvcnQgZW51bSBDdXN0b21lclNlcnZpY2VUeXBlIHtcbiAgc2hvcGlmeSA9IFwic2hvcGlmeVwiLFxuICBnb3JnaWFzID0gXCJnb3JnaWFzXCIsXG4gIGt1c3RvbWVyID0gXCJrdXN0b21lclwiLFxuICBncm9vdmUgPSBcImdyb292ZVwiLFxuICB0aWRpbyA9IFwidGlkaW9cIixcbiAgem93aWUgPSBcInpvd2llXCIsXG4gIHJlZG8gPSBcInJlZG9cIixcbiAgZ2xhZGx5ID0gXCJnbGFkbHlcIixcbiAgcmljaHBhbmVsID0gXCJyaWNocGFuZWxcIixcbiAgemVuZGVzayA9IFwiemVuZGVza1wiLFxuICB1bnN1cHBvcnRlZCA9IFwidW5zdXBwb3J0ZWRcIixcbn1cbmV4cG9ydCBlbnVtIEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uTW9kZSB7XG4gIG5vbmUgPSBcIm5vbmVcIixcbiAgc2ltcGxlID0gXCJzaW1wbGVcIixcbiAgZnVsbCA9IFwiZnVsbFwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uIHtcbiAgcHJvdmlkZXI6IEN1c3RvbWVyU2VydmljZVByb3ZpZGVyO1xuICBzdXBwb3J0ZWRJbnRlZ3JhdGlvbk1vZGVzOiBDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbk1vZGVbXTtcbiAgYWxsb3dGaWxlVXBsb2FkPzogYm9vbGVhbjtcbiAgbWF4ZmlsZVVwbG9hZFNpemU/OiBudW1iZXI7XG4gIC8vIFRPRE86IFJlbW92ZSB0aGlzIG1ldGhvZCB3aGVuIG1pZ3JhdGluZyBvdGhlciBwcm92aWRlcnMgdG8gdGhlIG5ldyB1bmlmaWVkIENYIGJ1dHRvbi5cbiAgb25Td2l0Y2hUb0FnZW50OiAoKSA9PiB2b2lkO1xuICBpc0VuYWJsZWQ6ICgpID0+IGJvb2xlYW47XG4gIGlzQnVzaW5lc3NIb3VyczogKGFwaUtleT86IHN0cmluZywgYXBpRW5kcG9pbnQ/OiBzdHJpbmcpID0+IFByb21pc2U8Ym9vbGVhbj47XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBSyxvREFBTDtBQUNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7RUFsQkc7QUF5QkwsTUFBTSxZQUFZLFVBQThCLHVCQUF1QixNQUFNOzs7O0FDekI3RSxNQUFhLGVBQWU7Q0FDMUIsU0FBUztDQUNULGtCQUFrQjtDQUNsQixVQUFVO0NBQ1YsYUFBYTtDQUNiLGdCQUFnQjtDQUNoQixrQkFBa0I7Q0FDbEIsYUFBYTtDQUNiLE9BQU87Q0FDUCxjQUFjO0NBQ2QsV0FBVztDQUNYLGVBQWU7Q0FDZixZQUFZO0NBRVosZ0JBQWdCO0NBQ2hCLFdBQVc7Q0FDWCxTQUFTO0NBQ1QsaUJBQWlCO0NBQ2pCLGFBQWE7Q0FDYixTQUFTO0NBQ1QsVUFBVTtDQUNWLFNBQVM7Q0FDVCxlQUFlO0NBQ2YsZ0JBQWdCO0NBQ2hCLGdCQUFnQjtDQUNoQixtQkFBbUI7Q0FDbkIsZUFBZTtDQUNmLFdBQVc7Q0FDWCxrQkFBa0I7Q0FDbEIsaUJBQWlCO0NBQ2pCLFlBQVk7Q0FDWixPQUFPO0NBQ1AsY0FBYztDQUNkLGNBQWM7Q0FDZCxTQUFTO0NBQ1Y7Ozs7QUNuQkQsTUFBYSxhQUFhLE9BQ3hCLGlCQUM4QjtBQUM5QixTQUFRLGNBQVI7RUFDRSxLQUFLLGFBQWEsVUFDaEIsNkNBQU8sNkJBQTRDLE1BQ2hELGFBQVdBLFNBQU8saUJBQ3BCO0VBQ0gsS0FBSyxhQUFhLE1BQ2hCLDZDQUFPLHlCQUFvQyxNQUN4QyxhQUFXQSxTQUFPLGFBQ3BCO0VBQ0gsS0FBSyxhQUFhLFFBQ2hCLDZDQUFPLDJCQUF3QyxNQUM1QyxhQUFXQSxTQUFPLGVBQ3BCO0VBQ0gsS0FBSyxhQUFhLGNBQ2hCLDZDQUFPLGlDQUFvRCxNQUN4RCxhQUFXQSxTQUFPLHFCQUNwQjtFQUNILEtBQUssYUFBYSxpQkFDaEIsNkNBQU8sb0NBQTBELE1BQzlELGFBQVdBLFNBQU8sd0JBQ3BCO0VBQ0gsS0FBSyxhQUFhLFNBQ2hCLDZDQUFPLDRCQUEwQyxNQUM5QyxhQUFXQSxTQUFPLGdCQUNwQjtFQUNILEtBQUssYUFBYSxXQUNoQiw2Q0FBTyw4QkFBOEMsTUFDbEQsYUFBV0EsU0FBTyxrQkFDcEI7RUFDSCxLQUFLLGFBQWEsV0FDaEIsNkNBQU8sOEJBQThDLE1BQ2xELGFBQVdBLFNBQU8sa0JBQ3BCO0VBQ0gsS0FBSyxhQUFhLFlBQ2hCLDZDQUFPLCtCQUFnRCxNQUNwRCxhQUFXQSxTQUFPLG1CQUNwQjtFQUNILEtBQUssYUFBYSxnQkFDaEIsNkNBQU8sbUNBQXdELE1BQzVELGFBQVdBLFNBQU8sdUJBQ3BCO0VBQ0gsS0FBSyxhQUFhLGVBQ2hCLDZDQUFPLGtDQUFzRCxNQUMxRCxhQUFXQSxTQUFPLHNCQUNwQjtFQUNILEtBQUssYUFBYSxpQkFDaEIsNkNBQU8sb0NBQTBELE1BQzlELGFBQVdBLFNBQU8sd0JBQ3BCO0VBQ0gsS0FBSyxhQUFhLFlBQ2hCLDZDQUFPLCtCQUFnRCxNQUNwRCxhQUFXQSxTQUFPLG1CQUNwQjtFQUdILEtBQUssYUFBYSxNQUNoQiw2Q0FBTyx5QkFBb0MsTUFDeEMsYUFBV0EsU0FBTyxhQUNwQjtFQUVILEtBQUssYUFBYSxhQUNoQiw2Q0FBTyxnQ0FBMkMsTUFDL0MsYUFBV0EsU0FBTyxhQUNwQjtFQUdILEtBQUssYUFBYSxVQUNoQiw2Q0FBTyw2QkFBNEMsTUFDaEQsYUFBV0EsU0FBTyxpQkFDcEI7RUFDSCxLQUFLLGFBQWEsY0FDaEIsNkNBQU8saUNBQW9ELE1BQ3hELGFBQVdBLFNBQU8scUJBQ3BCO0VBQ0gsS0FBSyxhQUFhLGlCQUNoQiw2Q0FBTyxvQ0FBMEQsTUFDOUQsYUFBV0EsU0FBTyx3QkFDcEI7RUFDSCxLQUFLLGFBQWEsYUFDaEIsNkNBQU8sZ0NBQWtELE1BQ3RELGFBQVdBLFNBQU8sb0JBQ3BCO0VBQ0gsS0FBSyxhQUFhLGFBQ2hCLDZDQUFPLGdDQUFrRCxNQUN0RCxhQUFXQSxTQUFPLG9CQUNwQjtFQUVILEtBQUssYUFBYSxlQUNoQiw2Q0FBTyxrQ0FBc0QsTUFDMUQsYUFBV0EsU0FBTyxzQkFDcEI7RUFDSCxLQUFLLGFBQWEsVUFDaEIsNkNBQU8sNkJBQTRDLE1BQ2hELGFBQVdBLFNBQU8saUJBQ3BCO0VBQ0gsS0FBSyxhQUFhLFFBQ2hCLDZDQUFPLDJCQUF3QyxNQUM1QyxhQUFXQSxTQUFPLGVBQ3BCO0VBQ0gsS0FBSyxhQUFhLGdCQUNoQiw2Q0FBTyxtQ0FBd0QsTUFDNUQsYUFBV0EsU0FBTyx1QkFDcEI7RUFDSCxLQUFLLGFBQWEsWUFDaEIsNkNBQU8sK0JBQWdELE1BQ3BELGFBQVdBLFNBQU8sbUJBQ3BCO0VBQ0gsS0FBSyxhQUFhLFFBQ2hCLDZDQUFPLDJCQUF3QyxNQUM1QyxhQUFXQSxTQUFPLGVBQ3BCO0VBQ0gsS0FBSyxhQUFhLFNBQ2hCLDZDQUFPLDRCQUEwQyxNQUM5QyxhQUFXQSxTQUFPLGdCQUNwQjtFQUVILEtBQUssYUFBYSxRQUNoQiw2Q0FBTywyQkFBd0MsTUFDNUMsYUFBV0EsU0FBTyxlQUNwQjtFQUNILEtBQUssYUFBYSxjQUNoQiw2Q0FBTyxpQ0FBb0QsTUFDeEQsYUFBV0EsU0FBTyxxQkFDcEI7RUFDSCxLQUFLLGFBQWEsZUFDaEIsNkNBQU8sa0NBQXNELE1BQzFELGFBQVdBLFNBQU8sc0JBQ3BCO0VBQ0gsS0FBSyxhQUFhLGVBQ2hCLDZDQUFPLGtDQUFzRCxNQUMxRCxhQUFXQSxTQUFPLHNCQUNwQjtFQUNILEtBQUssYUFBYSxrQkFDaEIsNkNBQU8scUNBQTRELE1BQ2hFLGFBQVdBLFNBQU8seUJBQ3BCO0VBQ0gsUUFDRSw2Q0FBTywyQkFBZ0MsTUFDcEMsYUFBV0EsU0FBTyxlQUNwQjs7Ozs7O0FDa1RQLElBQUssMEVBQUw7QUFDRTtBQUNBOztFQUZHO0FBK0JMLElBQUssc0VBQUw7QUFDRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7RUFuQkc7QUF3TEwsSUFBSyxvREFBTDtBQUNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztFQWhCRzs7OztBQ3JxQkwsSUFBWSxzRUFBTDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVGLElBQVksNEZBQUw7QUFDTDtBQUNBO0FBQ0EifQ==