@codecademy/brand 4.0.0 → 5.0.0-alpha.19accb830.0

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 (1723) hide show
  1. package/README.md +6 -0
  2. package/dist/AbbreviatedCommunityEventCard/index.cjs +74 -0
  3. package/dist/AbbreviatedCommunityEventCard/index.cjs.map +1 -0
  4. package/dist/AbbreviatedCommunityEventCard/index.d.cts +12 -0
  5. package/dist/AbbreviatedCommunityEventCard/index.d.cts.map +1 -0
  6. package/dist/AbbreviatedCommunityEventCard/index.d.ts +11 -7
  7. package/dist/AbbreviatedCommunityEventCard/index.d.ts.map +1 -0
  8. package/dist/AbbreviatedCommunityEventCard/index.js +71 -98
  9. package/dist/AbbreviatedCommunityEventCard/index.js.map +1 -0
  10. package/dist/AppBar/AppBarSection.cjs +40 -0
  11. package/dist/AppBar/AppBarSection.cjs.map +1 -0
  12. package/dist/AppBar/AppBarSection.d.cts +16 -0
  13. package/dist/AppBar/AppBarSection.d.cts.map +1 -0
  14. package/dist/AppBar/AppBarSection.d.ts +16 -10
  15. package/dist/AppBar/AppBarSection.d.ts.map +1 -0
  16. package/dist/AppBar/AppBarSection.js +35 -39
  17. package/dist/AppBar/AppBarSection.js.map +1 -0
  18. package/dist/AppBar/index.cjs +21 -0
  19. package/dist/AppBar/index.cjs.map +1 -0
  20. package/dist/AppBar/index.d.cts +14 -0
  21. package/dist/AppBar/index.d.cts.map +1 -0
  22. package/dist/AppBar/index.d.ts +13 -8
  23. package/dist/AppBar/index.d.ts.map +1 -0
  24. package/dist/AppBar/index.js +19 -20
  25. package/dist/AppBar/index.js.map +1 -0
  26. package/dist/AppBarDeprecated/AppBarSectionDeprecated.cjs +24 -0
  27. package/dist/AppBarDeprecated/AppBarSectionDeprecated.cjs.map +1 -0
  28. package/dist/AppBarDeprecated/AppBarSectionDeprecated.d.cts +19 -0
  29. package/dist/AppBarDeprecated/AppBarSectionDeprecated.d.cts.map +1 -0
  30. package/dist/AppBarDeprecated/AppBarSectionDeprecated.d.ts +14 -9
  31. package/dist/AppBarDeprecated/AppBarSectionDeprecated.d.ts.map +1 -0
  32. package/dist/AppBarDeprecated/AppBarSectionDeprecated.js +18 -23
  33. package/dist/AppBarDeprecated/AppBarSectionDeprecated.js.map +1 -0
  34. package/dist/AppBarDeprecated/index.cjs +27 -0
  35. package/dist/AppBarDeprecated/index.cjs.map +1 -0
  36. package/dist/AppBarDeprecated/index.d.cts +19 -0
  37. package/dist/AppBarDeprecated/index.d.cts.map +1 -0
  38. package/dist/AppBarDeprecated/index.d.ts +14 -9
  39. package/dist/AppBarDeprecated/index.d.ts.map +1 -0
  40. package/dist/AppBarDeprecated/index.js +21 -24
  41. package/dist/AppBarDeprecated/index.js.map +1 -0
  42. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/MarketingBanner.cjs +84 -0
  43. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/MarketingBanner.cjs.map +1 -0
  44. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/MarketingBanner.js +82 -111
  45. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/MarketingBanner.js.map +1 -0
  46. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/NavPanels.cjs +267 -0
  47. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/NavPanels.cjs.map +1 -0
  48. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/NavPanels.js +255 -334
  49. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/NavPanels.js.map +1 -0
  50. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/consts.cjs +275 -0
  51. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/consts.cjs.map +1 -0
  52. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/consts.js +271 -226
  53. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/consts.js.map +1 -0
  54. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/index.cjs +100 -0
  55. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/index.cjs.map +1 -0
  56. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/index.d.cts +9 -0
  57. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/index.d.cts.map +1 -0
  58. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/index.d.ts +10 -5
  59. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/index.d.ts.map +1 -0
  60. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/index.js +98 -122
  61. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/index.js.map +1 -0
  62. package/dist/AppHeader/AppHeaderElements/AppHeaderDietCard/index.cjs +91 -0
  63. package/dist/AppHeader/AppHeaderElements/AppHeaderDietCard/index.cjs.map +1 -0
  64. package/dist/AppHeader/AppHeaderElements/AppHeaderDietCard/index.js +88 -123
  65. package/dist/AppHeader/AppHeaderElements/AppHeaderDietCard/index.js.map +1 -0
  66. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdown/index.cjs +96 -0
  67. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdown/index.cjs.map +1 -0
  68. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdown/index.d.cts +17 -0
  69. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdown/index.d.cts.map +1 -0
  70. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdown/index.d.ts +17 -11
  71. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdown/index.d.ts.map +1 -0
  72. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdown/index.js +92 -111
  73. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdown/index.js.map +1 -0
  74. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdownProvider/index.cjs +31 -0
  75. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdownProvider/index.cjs.map +1 -0
  76. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdownProvider/index.js +24 -27
  77. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdownProvider/index.js.map +1 -0
  78. package/dist/AppHeader/AppHeaderElements/AppHeaderFeatureCard/index.cjs +45 -0
  79. package/dist/AppHeader/AppHeaderElements/AppHeaderFeatureCard/index.cjs.map +1 -0
  80. package/dist/AppHeader/AppHeaderElements/AppHeaderFeatureCard/index.js +43 -56
  81. package/dist/AppHeader/AppHeaderElements/AppHeaderFeatureCard/index.js.map +1 -0
  82. package/dist/AppHeader/AppHeaderElements/AppHeaderLink/index.cjs +62 -0
  83. package/dist/AppHeader/AppHeaderElements/AppHeaderLink/index.cjs.map +1 -0
  84. package/dist/AppHeader/AppHeaderElements/AppHeaderLink/index.d.cts +57 -0
  85. package/dist/AppHeader/AppHeaderElements/AppHeaderLink/index.d.cts.map +1 -0
  86. package/dist/AppHeader/AppHeaderElements/AppHeaderLink/index.d.ts +54 -44
  87. package/dist/AppHeader/AppHeaderElements/AppHeaderLink/index.d.ts.map +1 -0
  88. package/dist/AppHeader/AppHeaderElements/AppHeaderLink/index.js +58 -69
  89. package/dist/AppHeader/AppHeaderElements/AppHeaderLink/index.js.map +1 -0
  90. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/elements.cjs +38 -0
  91. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/elements.cjs.map +1 -0
  92. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/elements.js +35 -35
  93. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/elements.js.map +1 -0
  94. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/index.cjs +46 -0
  95. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/index.cjs.map +1 -0
  96. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/index.js +44 -59
  97. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/index.js.map +1 -0
  98. package/dist/AppHeader/AppHeaderElements/AppHeaderListItem/index.cjs +28 -0
  99. package/dist/AppHeader/AppHeaderElements/AppHeaderListItem/index.cjs.map +1 -0
  100. package/dist/AppHeader/AppHeaderElements/AppHeaderListItem/index.js +24 -31
  101. package/dist/AppHeader/AppHeaderElements/AppHeaderListItem/index.js.map +1 -0
  102. package/dist/AppHeader/AppHeaderElements/AppHeaderLogo/index.cjs +53 -0
  103. package/dist/AppHeader/AppHeaderElements/AppHeaderLogo/index.cjs.map +1 -0
  104. package/dist/AppHeader/AppHeaderElements/AppHeaderLogo/index.d.cts +11 -0
  105. package/dist/AppHeader/AppHeaderElements/AppHeaderLogo/index.d.cts.map +1 -0
  106. package/dist/AppHeader/AppHeaderElements/AppHeaderLogo/index.d.ts +11 -5
  107. package/dist/AppHeader/AppHeaderElements/AppHeaderLogo/index.d.ts.map +1 -0
  108. package/dist/AppHeader/AppHeaderElements/AppHeaderLogo/index.js +49 -55
  109. package/dist/AppHeader/AppHeaderElements/AppHeaderLogo/index.js.map +1 -0
  110. package/dist/AppHeader/AppHeaderElements/AppHeaderMenuProvider/index.cjs +82 -0
  111. package/dist/AppHeader/AppHeaderElements/AppHeaderMenuProvider/index.cjs.map +1 -0
  112. package/dist/AppHeader/AppHeaderElements/AppHeaderMenuProvider/index.js +77 -86
  113. package/dist/AppHeader/AppHeaderElements/AppHeaderMenuProvider/index.js.map +1 -0
  114. package/dist/AppHeader/AppHeaderElements/AppHeaderNavButton/index.cjs +78 -0
  115. package/dist/AppHeader/AppHeaderElements/AppHeaderNavButton/index.cjs.map +1 -0
  116. package/dist/AppHeader/AppHeaderElements/AppHeaderNavButton/index.js +74 -101
  117. package/dist/AppHeader/AppHeaderElements/AppHeaderNavButton/index.js.map +1 -0
  118. package/dist/AppHeader/AppHeaderElements/AppHeaderProvider/index.cjs +22 -0
  119. package/dist/AppHeader/AppHeaderElements/AppHeaderProvider/index.cjs.map +1 -0
  120. package/dist/AppHeader/AppHeaderElements/AppHeaderProvider/index.js +17 -17
  121. package/dist/AppHeader/AppHeaderElements/AppHeaderProvider/index.js.map +1 -0
  122. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/NavPanels.cjs +88 -0
  123. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/NavPanels.cjs.map +1 -0
  124. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/NavPanels.js +80 -107
  125. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/NavPanels.js.map +1 -0
  126. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/consts.cjs +341 -0
  127. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/consts.cjs.map +1 -0
  128. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/consts.js +335 -291
  129. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/consts.js.map +1 -0
  130. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/index.cjs +98 -0
  131. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/index.cjs.map +1 -0
  132. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/index.d.cts +9 -0
  133. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/index.d.cts.map +1 -0
  134. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/index.d.ts +10 -5
  135. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/index.d.ts.map +1 -0
  136. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/index.js +96 -120
  137. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/index.js.map +1 -0
  138. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/AppHeaderSectionContext.cjs +18 -0
  139. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/AppHeaderSectionContext.cjs.map +1 -0
  140. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/AppHeaderSectionContext.js +15 -9
  141. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/AppHeaderSectionContext.js.map +1 -0
  142. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/MobileBackButton.cjs +68 -0
  143. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/MobileBackButton.cjs.map +1 -0
  144. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/MobileBackButton.js +66 -89
  145. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/MobileBackButton.js.map +1 -0
  146. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/MobileNavMenu.cjs +47 -0
  147. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/MobileNavMenu.cjs.map +1 -0
  148. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/MobileNavMenu.js +45 -61
  149. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/MobileNavMenu.js.map +1 -0
  150. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/NavTabs.cjs +92 -0
  151. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/NavTabs.cjs.map +1 -0
  152. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/NavTabs.js +85 -125
  153. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/NavTabs.js.map +1 -0
  154. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/PanelLayout.cjs +66 -0
  155. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/PanelLayout.cjs.map +1 -0
  156. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/PanelLayout.js +65 -81
  157. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/PanelLayout.js.map +1 -0
  158. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/elements.cjs +59 -0
  159. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/elements.cjs.map +1 -0
  160. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/elements.js +48 -118
  161. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/elements.js.map +1 -0
  162. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/index.cjs +102 -0
  163. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/index.cjs.map +1 -0
  164. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/index.js +100 -144
  165. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/index.js.map +1 -0
  166. package/dist/AppHeader/AppHeaderElements/AppHeaderSkillTile/index.cjs +55 -0
  167. package/dist/AppHeader/AppHeaderElements/AppHeaderSkillTile/index.cjs.map +1 -0
  168. package/dist/AppHeader/AppHeaderElements/AppHeaderSkillTile/index.js +52 -64
  169. package/dist/AppHeader/AppHeaderElements/AppHeaderSkillTile/index.js.map +1 -0
  170. package/dist/AppHeader/Search/DefaultResults.cjs +93 -0
  171. package/dist/AppHeader/Search/DefaultResults.cjs.map +1 -0
  172. package/dist/AppHeader/Search/DefaultResults.js +89 -111
  173. package/dist/AppHeader/Search/DefaultResults.js.map +1 -0
  174. package/dist/AppHeader/Search/QuizAndHelpCenterLinks.cjs +57 -0
  175. package/dist/AppHeader/Search/QuizAndHelpCenterLinks.cjs.map +1 -0
  176. package/dist/AppHeader/Search/QuizAndHelpCenterLinks.js +55 -79
  177. package/dist/AppHeader/Search/QuizAndHelpCenterLinks.js.map +1 -0
  178. package/dist/AppHeader/Search/SearchButton.cjs +50 -0
  179. package/dist/AppHeader/Search/SearchButton.cjs.map +1 -0
  180. package/dist/AppHeader/Search/SearchButton.js +46 -71
  181. package/dist/AppHeader/Search/SearchButton.js.map +1 -0
  182. package/dist/AppHeader/Search/SearchPane.cjs +472 -0
  183. package/dist/AppHeader/Search/SearchPane.cjs.map +1 -0
  184. package/dist/AppHeader/Search/SearchPane.js +461 -621
  185. package/dist/AppHeader/Search/SearchPane.js.map +1 -0
  186. package/dist/AppHeader/Search/SearchTrackingProvider/index.cjs +29 -0
  187. package/dist/AppHeader/Search/SearchTrackingProvider/index.cjs.map +1 -0
  188. package/dist/AppHeader/Search/SearchTrackingProvider/index.js +23 -23
  189. package/dist/AppHeader/Search/SearchTrackingProvider/index.js.map +1 -0
  190. package/dist/AppHeader/Search/SearchWorker/PromiseLookup.cjs +45 -0
  191. package/dist/AppHeader/Search/SearchWorker/PromiseLookup.cjs.map +1 -0
  192. package/dist/AppHeader/Search/SearchWorker/PromiseLookup.js +44 -35
  193. package/dist/AppHeader/Search/SearchWorker/PromiseLookup.js.map +1 -0
  194. package/dist/AppHeader/Search/SearchWorker/index.cjs +25 -0
  195. package/dist/AppHeader/Search/SearchWorker/index.cjs.map +1 -0
  196. package/dist/AppHeader/Search/SearchWorker/index.d.cts +11 -0
  197. package/dist/AppHeader/Search/SearchWorker/index.d.cts.map +1 -0
  198. package/dist/AppHeader/Search/SearchWorker/index.d.ts +10 -4
  199. package/dist/AppHeader/Search/SearchWorker/index.d.ts.map +1 -0
  200. package/dist/AppHeader/Search/SearchWorker/index.js +24 -23
  201. package/dist/AppHeader/Search/SearchWorker/index.js.map +1 -0
  202. package/dist/AppHeader/Search/SearchWorker/src.cjs +160 -0
  203. package/dist/AppHeader/Search/SearchWorker/src.cjs.map +1 -0
  204. package/dist/AppHeader/Search/SearchWorker/src.js +154 -305
  205. package/dist/AppHeader/Search/SearchWorker/src.js.map +1 -0
  206. package/dist/AppHeader/Search/SearchWorker/types.cjs +16 -0
  207. package/dist/AppHeader/Search/SearchWorker/types.cjs.map +1 -0
  208. package/dist/AppHeader/Search/SearchWorker/types.d.cts +31 -0
  209. package/dist/AppHeader/Search/SearchWorker/types.d.cts.map +1 -0
  210. package/dist/AppHeader/Search/SearchWorker/types.d.ts +24 -30
  211. package/dist/AppHeader/Search/SearchWorker/types.d.ts.map +1 -0
  212. package/dist/AppHeader/Search/SearchWorker/types.js +10 -5
  213. package/dist/AppHeader/Search/SearchWorker/types.js.map +1 -0
  214. package/dist/AppHeader/Search/SearchWorker/worker.cjs +27 -0
  215. package/dist/AppHeader/Search/SearchWorker/worker.cjs.map +1 -0
  216. package/dist/AppHeader/Search/SearchWorker/worker.js +25 -29
  217. package/dist/AppHeader/Search/SearchWorker/worker.js.map +1 -0
  218. package/dist/AppHeader/Search/consts.cjs +74 -0
  219. package/dist/AppHeader/Search/consts.cjs.map +1 -0
  220. package/dist/AppHeader/Search/consts.d.cts +27 -0
  221. package/dist/AppHeader/Search/consts.d.cts.map +1 -0
  222. package/dist/AppHeader/Search/consts.d.ts +24 -20
  223. package/dist/AppHeader/Search/consts.d.ts.map +1 -0
  224. package/dist/AppHeader/Search/consts.js +64 -40
  225. package/dist/AppHeader/Search/consts.js.map +1 -0
  226. package/dist/AppHeader/Search/hooks/useUrlChangeDetection.cjs +18 -0
  227. package/dist/AppHeader/Search/hooks/useUrlChangeDetection.cjs.map +1 -0
  228. package/dist/AppHeader/Search/hooks/useUrlChangeDetection.js +17 -14
  229. package/dist/AppHeader/Search/hooks/useUrlChangeDetection.js.map +1 -0
  230. package/dist/AppHeader/Search/safelyRedirect.cjs +39 -0
  231. package/dist/AppHeader/Search/safelyRedirect.cjs.map +1 -0
  232. package/dist/AppHeader/Search/safelyRedirect.js +32 -42
  233. package/dist/AppHeader/Search/safelyRedirect.js.map +1 -0
  234. package/dist/AppHeader/Search/types.d.cts +14 -0
  235. package/dist/AppHeader/Search/types.d.cts.map +1 -0
  236. package/dist/AppHeader/Search/types.d.ts +12 -19
  237. package/dist/AppHeader/Search/types.d.ts.map +1 -0
  238. package/dist/AppHeader/Search/useHeaderSearch.cjs +40 -0
  239. package/dist/AppHeader/Search/useHeaderSearch.cjs.map +1 -0
  240. package/dist/AppHeader/Search/useHeaderSearch.js +39 -40
  241. package/dist/AppHeader/Search/useHeaderSearch.js.map +1 -0
  242. package/dist/AppHeader/index.cjs +82 -0
  243. package/dist/AppHeader/index.cjs.map +1 -0
  244. package/dist/AppHeader/index.d.cts +29 -0
  245. package/dist/AppHeader/index.d.cts.map +1 -0
  246. package/dist/AppHeader/index.d.ts +29 -22
  247. package/dist/AppHeader/index.d.ts.map +1 -0
  248. package/dist/AppHeader/index.js +81 -98
  249. package/dist/AppHeader/index.js.map +1 -0
  250. package/dist/AppHeader/shared/elements.cjs +187 -0
  251. package/dist/AppHeader/shared/elements.cjs.map +1 -0
  252. package/dist/AppHeader/shared/elements.d.ts +8 -90
  253. package/dist/AppHeader/shared/elements.js +165 -241
  254. package/dist/AppHeader/shared/elements.js.map +1 -0
  255. package/dist/AppHeader/shared/index.cjs +3 -0
  256. package/dist/AppHeader/shared/index.d.ts +4 -4
  257. package/dist/AppHeader/shared/index.js +3 -4
  258. package/dist/AppHeader/shared/keyboardNav.cjs +69 -0
  259. package/dist/AppHeader/shared/keyboardNav.cjs.map +1 -0
  260. package/dist/AppHeader/shared/keyboardNav.d.ts +1 -23
  261. package/dist/AppHeader/shared/keyboardNav.js +64 -65
  262. package/dist/AppHeader/shared/keyboardNav.js.map +1 -0
  263. package/dist/AppHeader/shared/mockAppHeaderItems.d.ts +1 -2
  264. package/dist/AppHeader/shared/types.cjs +7 -0
  265. package/dist/AppHeader/shared/types.cjs.map +1 -0
  266. package/dist/AppHeader/shared/types.d.cts +110 -0
  267. package/dist/AppHeader/shared/types.d.cts.map +1 -0
  268. package/dist/AppHeader/shared/types.d.ts +107 -104
  269. package/dist/AppHeader/shared/types.d.ts.map +1 -0
  270. package/dist/AppHeader/shared/types.js +6 -1
  271. package/dist/AppHeader/shared/types.js.map +1 -0
  272. package/dist/AppHeader/shared/utils.cjs +82 -0
  273. package/dist/AppHeader/shared/utils.cjs.map +1 -0
  274. package/dist/AppHeader/shared/utils.js +81 -100
  275. package/dist/AppHeader/shared/utils.js.map +1 -0
  276. package/dist/AppHeaderMobile/AppHeaderMainMenuMobile/index.cjs +123 -0
  277. package/dist/AppHeaderMobile/AppHeaderMainMenuMobile/index.cjs.map +1 -0
  278. package/dist/AppHeaderMobile/AppHeaderMainMenuMobile/index.d.cts +13 -0
  279. package/dist/AppHeaderMobile/AppHeaderMainMenuMobile/index.d.cts.map +1 -0
  280. package/dist/AppHeaderMobile/AppHeaderMainMenuMobile/index.d.ts +13 -7
  281. package/dist/AppHeaderMobile/AppHeaderMainMenuMobile/index.d.ts.map +1 -0
  282. package/dist/AppHeaderMobile/AppHeaderMainMenuMobile/index.js +118 -139
  283. package/dist/AppHeaderMobile/AppHeaderMainMenuMobile/index.js.map +1 -0
  284. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/elements.cjs +31 -0
  285. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/elements.cjs.map +1 -0
  286. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/elements.js +27 -29
  287. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/elements.js.map +1 -0
  288. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/index.cjs +105 -0
  289. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/index.cjs.map +1 -0
  290. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/index.d.cts +13 -0
  291. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/index.d.cts.map +1 -0
  292. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/index.d.ts +12 -7
  293. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/index.d.ts.map +1 -0
  294. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/index.js +100 -121
  295. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/index.js.map +1 -0
  296. package/dist/AppHeaderMobile/AppHeaderSubMenuTarget/index.cjs +62 -0
  297. package/dist/AppHeaderMobile/AppHeaderSubMenuTarget/index.cjs.map +1 -0
  298. package/dist/AppHeaderMobile/AppHeaderSubMenuTarget/index.js +57 -58
  299. package/dist/AppHeaderMobile/AppHeaderSubMenuTarget/index.js.map +1 -0
  300. package/dist/AppHeaderMobile/index.cjs +167 -0
  301. package/dist/AppHeaderMobile/index.cjs.map +1 -0
  302. package/dist/AppHeaderMobile/index.d.cts +25 -0
  303. package/dist/AppHeaderMobile/index.d.cts.map +1 -0
  304. package/dist/AppHeaderMobile/index.d.ts +27 -19
  305. package/dist/AppHeaderMobile/index.d.ts.map +1 -0
  306. package/dist/AppHeaderMobile/index.js +163 -212
  307. package/dist/AppHeaderMobile/index.js.map +1 -0
  308. package/dist/Avatar/index.cjs +45 -0
  309. package/dist/Avatar/index.cjs.map +1 -0
  310. package/dist/Avatar/index.d.cts +41 -0
  311. package/dist/Avatar/index.d.cts.map +1 -0
  312. package/dist/Avatar/index.d.ts +38 -33
  313. package/dist/Avatar/index.d.ts.map +1 -0
  314. package/dist/Avatar/index.js +42 -45
  315. package/dist/Avatar/index.js.map +1 -0
  316. package/dist/AvatarChooser/index.cjs +80 -0
  317. package/dist/AvatarChooser/index.cjs.map +1 -0
  318. package/dist/AvatarChooser/index.d.cts +16 -0
  319. package/dist/AvatarChooser/index.d.cts.map +1 -0
  320. package/dist/AvatarChooser/index.d.ts +14 -10
  321. package/dist/AvatarChooser/index.d.ts.map +1 -0
  322. package/dist/AvatarChooser/index.js +75 -102
  323. package/dist/AvatarChooser/index.js.map +1 -0
  324. package/dist/BackToTopAnchor/index.cjs +31 -0
  325. package/dist/BackToTopAnchor/index.cjs.map +1 -0
  326. package/dist/BackToTopAnchor/index.d.cts +12 -0
  327. package/dist/BackToTopAnchor/index.d.cts.map +1 -0
  328. package/dist/BackToTopAnchor/index.d.ts +10 -11
  329. package/dist/BackToTopAnchor/index.d.ts.map +1 -0
  330. package/dist/BackToTopAnchor/index.js +29 -37
  331. package/dist/BackToTopAnchor/index.js.map +1 -0
  332. package/dist/Banner/CountdownTimer.cjs +96 -0
  333. package/dist/Banner/CountdownTimer.cjs.map +1 -0
  334. package/dist/Banner/CountdownTimer.d.cts +11 -0
  335. package/dist/Banner/CountdownTimer.d.cts.map +1 -0
  336. package/dist/Banner/CountdownTimer.d.ts +9 -5
  337. package/dist/Banner/CountdownTimer.d.ts.map +1 -0
  338. package/dist/Banner/CountdownTimer.js +90 -106
  339. package/dist/Banner/CountdownTimer.js.map +1 -0
  340. package/dist/Banner/EnhancedBanner.cjs +124 -0
  341. package/dist/Banner/EnhancedBanner.cjs.map +1 -0
  342. package/dist/Banner/EnhancedBanner.d.cts +21 -0
  343. package/dist/Banner/EnhancedBanner.d.cts.map +1 -0
  344. package/dist/Banner/EnhancedBanner.d.ts +20 -16
  345. package/dist/Banner/EnhancedBanner.d.ts.map +1 -0
  346. package/dist/Banner/EnhancedBanner.js +118 -169
  347. package/dist/Banner/EnhancedBanner.js.map +1 -0
  348. package/dist/Banner/index.cjs +90 -0
  349. package/dist/Banner/index.cjs.map +1 -0
  350. package/dist/Banner/index.d.cts +25 -0
  351. package/dist/Banner/index.d.cts.map +1 -0
  352. package/dist/Banner/index.d.ts +22 -18
  353. package/dist/Banner/index.d.ts.map +1 -0
  354. package/dist/Banner/index.js +81 -95
  355. package/dist/Banner/index.js.map +1 -0
  356. package/dist/BetaSticker/index.cjs +58 -0
  357. package/dist/BetaSticker/index.cjs.map +1 -0
  358. package/dist/BetaSticker/index.d.cts +10 -0
  359. package/dist/BetaSticker/index.d.cts.map +1 -0
  360. package/dist/BetaSticker/index.d.ts +8 -4
  361. package/dist/BetaSticker/index.d.ts.map +1 -0
  362. package/dist/BetaSticker/index.js +54 -56
  363. package/dist/BetaSticker/index.js.map +1 -0
  364. package/dist/CareerPathCard/index.cjs +33 -0
  365. package/dist/CareerPathCard/index.cjs.map +1 -0
  366. package/dist/CareerPathCard/index.d.cts +27 -0
  367. package/dist/CareerPathCard/index.d.cts.map +1 -0
  368. package/dist/CareerPathCard/index.d.ts +25 -20
  369. package/dist/CareerPathCard/index.d.ts.map +1 -0
  370. package/dist/CareerPathCard/index.js +32 -49
  371. package/dist/CareerPathCard/index.js.map +1 -0
  372. package/dist/Carousel/elements.cjs +16 -0
  373. package/dist/Carousel/elements.cjs.map +1 -0
  374. package/dist/Carousel/elements.js +14 -14
  375. package/dist/Carousel/elements.js.map +1 -0
  376. package/dist/Carousel/index.cjs +177 -0
  377. package/dist/Carousel/index.cjs.map +1 -0
  378. package/dist/Carousel/index.d.cts +28 -0
  379. package/dist/Carousel/index.d.cts.map +1 -0
  380. package/dist/Carousel/index.d.ts +25 -21
  381. package/dist/Carousel/index.d.ts.map +1 -0
  382. package/dist/Carousel/index.js +168 -247
  383. package/dist/Carousel/index.js.map +1 -0
  384. package/dist/CertificationPathCard/index.cjs +40 -0
  385. package/dist/CertificationPathCard/index.cjs.map +1 -0
  386. package/dist/CertificationPathCard/index.d.cts +28 -0
  387. package/dist/CertificationPathCard/index.d.cts.map +1 -0
  388. package/dist/CertificationPathCard/index.d.ts +25 -20
  389. package/dist/CertificationPathCard/index.d.ts.map +1 -0
  390. package/dist/CertificationPathCard/index.js +39 -52
  391. package/dist/CertificationPathCard/index.js.map +1 -0
  392. package/dist/CoachingSessionCard/index.cjs +54 -0
  393. package/dist/CoachingSessionCard/index.cjs.map +1 -0
  394. package/dist/CoachingSessionCard/index.d.cts +25 -0
  395. package/dist/CoachingSessionCard/index.d.cts.map +1 -0
  396. package/dist/CoachingSessionCard/index.d.ts +24 -20
  397. package/dist/CoachingSessionCard/index.d.ts.map +1 -0
  398. package/dist/CoachingSessionCard/index.js +51 -73
  399. package/dist/CoachingSessionCard/index.js.map +1 -0
  400. package/dist/CommunityEventCard/EventTypeIcon.cjs +60 -0
  401. package/dist/CommunityEventCard/EventTypeIcon.cjs.map +1 -0
  402. package/dist/CommunityEventCard/EventTypeIcon.js +58 -58
  403. package/dist/CommunityEventCard/EventTypeIcon.js.map +1 -0
  404. package/dist/CommunityEventCard/index.cjs +215 -0
  405. package/dist/CommunityEventCard/index.cjs.map +1 -0
  406. package/dist/CommunityEventCard/index.d.cts +32 -0
  407. package/dist/CommunityEventCard/index.d.cts.map +1 -0
  408. package/dist/CommunityEventCard/index.d.ts +31 -27
  409. package/dist/CommunityEventCard/index.d.ts.map +1 -0
  410. package/dist/CommunityEventCard/index.js +210 -304
  411. package/dist/CommunityEventCard/index.js.map +1 -0
  412. package/dist/CommunityEventToast/index.cjs +28 -0
  413. package/dist/CommunityEventToast/index.cjs.map +1 -0
  414. package/dist/CommunityEventToast/index.d.cts +10 -0
  415. package/dist/CommunityEventToast/index.d.cts.map +1 -0
  416. package/dist/CommunityEventToast/index.d.ts +8 -4
  417. package/dist/CommunityEventToast/index.d.ts.map +1 -0
  418. package/dist/CommunityEventToast/index.js +26 -32
  419. package/dist/CommunityEventToast/index.js.map +1 -0
  420. package/dist/ContentGroupBaseCard/helpers.cjs +16 -0
  421. package/dist/ContentGroupBaseCard/helpers.cjs.map +1 -0
  422. package/dist/ContentGroupBaseCard/helpers.d.cts +9 -0
  423. package/dist/ContentGroupBaseCard/helpers.d.cts.map +1 -0
  424. package/dist/ContentGroupBaseCard/helpers.d.ts +9 -4
  425. package/dist/ContentGroupBaseCard/helpers.d.ts.map +1 -0
  426. package/dist/ContentGroupBaseCard/helpers.js +13 -11
  427. package/dist/ContentGroupBaseCard/helpers.js.map +1 -0
  428. package/dist/ContentGroupBaseCard/index.cjs +167 -0
  429. package/dist/ContentGroupBaseCard/index.cjs.map +1 -0
  430. package/dist/ContentGroupBaseCard/index.d.cts +41 -0
  431. package/dist/ContentGroupBaseCard/index.d.cts.map +1 -0
  432. package/dist/ContentGroupBaseCard/index.d.ts +39 -31
  433. package/dist/ContentGroupBaseCard/index.d.ts.map +1 -0
  434. package/dist/ContentGroupBaseCard/index.js +160 -235
  435. package/dist/ContentGroupBaseCard/index.js.map +1 -0
  436. package/dist/ContentGroupBaseCard/shared.cjs +49 -0
  437. package/dist/ContentGroupBaseCard/shared.cjs.map +1 -0
  438. package/dist/ContentGroupBaseCard/shared.js +41 -66
  439. package/dist/ContentGroupBaseCard/shared.js.map +1 -0
  440. package/dist/ContentGroupBaseCard/types.cjs +29 -0
  441. package/dist/ContentGroupBaseCard/types.cjs.map +1 -0
  442. package/dist/ContentGroupBaseCard/types.d.cts +14 -0
  443. package/dist/ContentGroupBaseCard/types.d.cts.map +1 -0
  444. package/dist/ContentGroupBaseCard/types.d.ts +12 -8
  445. package/dist/ContentGroupBaseCard/types.d.ts.map +1 -0
  446. package/dist/ContentGroupBaseCard/types.js +17 -12
  447. package/dist/ContentGroupBaseCard/types.js.map +1 -0
  448. package/dist/CourseCard/index.cjs +32 -0
  449. package/dist/CourseCard/index.cjs.map +1 -0
  450. package/dist/CourseCard/index.d.cts +26 -0
  451. package/dist/CourseCard/index.d.cts.map +1 -0
  452. package/dist/CourseCard/index.d.ts +25 -19
  453. package/dist/CourseCard/index.d.ts.map +1 -0
  454. package/dist/CourseCard/index.js +31 -45
  455. package/dist/CourseCard/index.js.map +1 -0
  456. package/dist/CurriculumCard/BottomTag/index.cjs +28 -0
  457. package/dist/CurriculumCard/BottomTag/index.cjs.map +1 -0
  458. package/dist/CurriculumCard/BottomTag/index.d.cts +5 -0
  459. package/dist/CurriculumCard/BottomTag/index.d.cts.map +1 -0
  460. package/dist/CurriculumCard/BottomTag/index.d.ts +7 -7
  461. package/dist/CurriculumCard/BottomTag/index.d.ts.map +1 -0
  462. package/dist/CurriculumCard/BottomTag/index.js +24 -24
  463. package/dist/CurriculumCard/BottomTag/index.js.map +1 -0
  464. package/dist/CurriculumCard/Difficulty/helpers.cjs +17 -0
  465. package/dist/CurriculumCard/Difficulty/helpers.cjs.map +1 -0
  466. package/dist/CurriculumCard/Difficulty/helpers.d.cts +13 -0
  467. package/dist/CurriculumCard/Difficulty/helpers.d.cts.map +1 -0
  468. package/dist/CurriculumCard/Difficulty/helpers.d.ts +7 -2
  469. package/dist/CurriculumCard/Difficulty/helpers.d.ts.map +1 -0
  470. package/dist/CurriculumCard/Difficulty/helpers.js +15 -11
  471. package/dist/CurriculumCard/Difficulty/helpers.js.map +1 -0
  472. package/dist/CurriculumCard/Difficulty/index.cjs +51 -0
  473. package/dist/CurriculumCard/Difficulty/index.cjs.map +1 -0
  474. package/dist/CurriculumCard/Difficulty/index.d.cts +8 -0
  475. package/dist/CurriculumCard/Difficulty/index.d.cts.map +1 -0
  476. package/dist/CurriculumCard/Difficulty/index.d.ts +8 -3
  477. package/dist/CurriculumCard/Difficulty/index.d.ts.map +1 -0
  478. package/dist/CurriculumCard/Difficulty/index.js +45 -46
  479. package/dist/CurriculumCard/Difficulty/index.js.map +1 -0
  480. package/dist/CurriculumCard/Difficulty/types.cjs +31 -0
  481. package/dist/CurriculumCard/Difficulty/types.cjs.map +1 -0
  482. package/dist/CurriculumCard/Difficulty/types.d.cts +26 -0
  483. package/dist/CurriculumCard/Difficulty/types.d.cts.map +1 -0
  484. package/dist/CurriculumCard/Difficulty/types.d.ts +17 -13
  485. package/dist/CurriculumCard/Difficulty/types.d.ts.map +1 -0
  486. package/dist/CurriculumCard/Difficulty/types.js +17 -18
  487. package/dist/CurriculumCard/Difficulty/types.js.map +1 -0
  488. package/dist/CurriculumCard/Footer/index.cjs +39 -0
  489. package/dist/CurriculumCard/Footer/index.cjs.map +1 -0
  490. package/dist/CurriculumCard/Footer/index.js +37 -54
  491. package/dist/CurriculumCard/Footer/index.js.map +1 -0
  492. package/dist/CurriculumCard/Image/index.cjs +52 -0
  493. package/dist/CurriculumCard/Image/index.cjs.map +1 -0
  494. package/dist/CurriculumCard/Image/index.js +46 -52
  495. package/dist/CurriculumCard/Image/index.js.map +1 -0
  496. package/dist/CurriculumCard/Subtitle/helpers.cjs +10 -0
  497. package/dist/CurriculumCard/Subtitle/helpers.cjs.map +1 -0
  498. package/dist/CurriculumCard/Subtitle/helpers.js +9 -8
  499. package/dist/CurriculumCard/Subtitle/helpers.js.map +1 -0
  500. package/dist/CurriculumCard/Subtitle/index.cjs +29 -0
  501. package/dist/CurriculumCard/Subtitle/index.cjs.map +1 -0
  502. package/dist/CurriculumCard/Subtitle/index.d.cts +11 -0
  503. package/dist/CurriculumCard/Subtitle/index.d.cts.map +1 -0
  504. package/dist/CurriculumCard/Subtitle/index.d.ts +11 -7
  505. package/dist/CurriculumCard/Subtitle/index.d.ts.map +1 -0
  506. package/dist/CurriculumCard/Subtitle/index.js +26 -34
  507. package/dist/CurriculumCard/Subtitle/index.js.map +1 -0
  508. package/dist/CurriculumCard/index.cjs +105 -0
  509. package/dist/CurriculumCard/index.cjs.map +1 -0
  510. package/dist/CurriculumCard/index.d.cts +64 -0
  511. package/dist/CurriculumCard/index.d.cts.map +1 -0
  512. package/dist/CurriculumCard/index.d.ts +57 -52
  513. package/dist/CurriculumCard/index.d.ts.map +1 -0
  514. package/dist/CurriculumCard/index.js +98 -124
  515. package/dist/CurriculumCard/index.js.map +1 -0
  516. package/dist/DropdownButton/DropdownList.cjs +59 -0
  517. package/dist/DropdownButton/DropdownList.cjs.map +1 -0
  518. package/dist/DropdownButton/DropdownList.d.cts +20 -0
  519. package/dist/DropdownButton/DropdownList.d.cts.map +1 -0
  520. package/dist/DropdownButton/DropdownList.d.ts +17 -14
  521. package/dist/DropdownButton/DropdownList.d.ts.map +1 -0
  522. package/dist/DropdownButton/DropdownList.js +57 -73
  523. package/dist/DropdownButton/DropdownList.js.map +1 -0
  524. package/dist/DropdownButton/index.cjs +138 -0
  525. package/dist/DropdownButton/index.cjs.map +1 -0
  526. package/dist/DropdownButton/index.d.cts +81 -0
  527. package/dist/DropdownButton/index.d.cts.map +1 -0
  528. package/dist/DropdownButton/index.d.ts +76 -69
  529. package/dist/DropdownButton/index.d.ts.map +1 -0
  530. package/dist/DropdownButton/index.js +136 -169
  531. package/dist/DropdownButton/index.js.map +1 -0
  532. package/dist/DropdownButton/useDynamicPopoverPosition.cjs +42 -0
  533. package/dist/DropdownButton/useDynamicPopoverPosition.cjs.map +1 -0
  534. package/dist/DropdownButton/useDynamicPopoverPosition.js +35 -49
  535. package/dist/DropdownButton/useDynamicPopoverPosition.js.map +1 -0
  536. package/dist/EmptySection/index.cjs +153 -0
  537. package/dist/EmptySection/index.cjs.map +1 -0
  538. package/dist/EmptySection/index.d.cts +33 -0
  539. package/dist/EmptySection/index.d.cts.map +1 -0
  540. package/dist/EmptySection/index.d.ts +33 -27
  541. package/dist/EmptySection/index.d.ts.map +1 -0
  542. package/dist/EmptySection/index.js +146 -179
  543. package/dist/EmptySection/index.js.map +1 -0
  544. package/dist/ErrorContents/index.cjs +35 -0
  545. package/dist/ErrorContents/index.cjs.map +1 -0
  546. package/dist/ErrorContents/index.d.cts +13 -0
  547. package/dist/ErrorContents/index.d.cts.map +1 -0
  548. package/dist/ErrorContents/index.d.ts +12 -7
  549. package/dist/ErrorContents/index.d.ts.map +1 -0
  550. package/dist/ErrorContents/index.js +33 -48
  551. package/dist/ErrorContents/index.js.map +1 -0
  552. package/dist/FeatureList/index.cjs +33 -0
  553. package/dist/FeatureList/index.cjs.map +1 -0
  554. package/dist/FeatureList/index.d.cts +19 -0
  555. package/dist/FeatureList/index.d.cts.map +1 -0
  556. package/dist/FeatureList/index.d.ts +17 -9
  557. package/dist/FeatureList/index.d.ts.map +1 -0
  558. package/dist/FeatureList/index.js +31 -41
  559. package/dist/FeatureList/index.js.map +1 -0
  560. package/dist/GlobalFooter/FooterHeading.cjs +31 -0
  561. package/dist/GlobalFooter/FooterHeading.cjs.map +1 -0
  562. package/dist/GlobalFooter/FooterHeading.js +28 -29
  563. package/dist/GlobalFooter/FooterHeading.js.map +1 -0
  564. package/dist/GlobalFooter/FooterLegal/LegalLinks.cjs +58 -0
  565. package/dist/GlobalFooter/FooterLegal/LegalLinks.cjs.map +1 -0
  566. package/dist/GlobalFooter/FooterLegal/LegalLinks.js +55 -43
  567. package/dist/GlobalFooter/FooterLegal/LegalLinks.js.map +1 -0
  568. package/dist/GlobalFooter/FooterLegal/MadeIn.cjs +48 -0
  569. package/dist/GlobalFooter/FooterLegal/MadeIn.cjs.map +1 -0
  570. package/dist/GlobalFooter/FooterLegal/MadeIn.js +44 -63
  571. package/dist/GlobalFooter/FooterLegal/MadeIn.js.map +1 -0
  572. package/dist/GlobalFooter/FooterLegal/index.cjs +21 -0
  573. package/dist/GlobalFooter/FooterLegal/index.cjs.map +1 -0
  574. package/dist/GlobalFooter/FooterLegal/index.js +18 -22
  575. package/dist/GlobalFooter/FooterLegal/index.js.map +1 -0
  576. package/dist/GlobalFooter/FooterLinks.cjs +43 -0
  577. package/dist/GlobalFooter/FooterLinks.cjs.map +1 -0
  578. package/dist/GlobalFooter/FooterLinks.js +38 -52
  579. package/dist/GlobalFooter/FooterLinks.js.map +1 -0
  580. package/dist/GlobalFooter/FooterNavLinks/CatalogLinks.cjs +229 -0
  581. package/dist/GlobalFooter/FooterNavLinks/CatalogLinks.cjs.map +1 -0
  582. package/dist/GlobalFooter/FooterNavLinks/CatalogLinks.js +221 -293
  583. package/dist/GlobalFooter/FooterNavLinks/CatalogLinks.js.map +1 -0
  584. package/dist/GlobalFooter/FooterNavLinks/CompanyLinks.cjs +196 -0
  585. package/dist/GlobalFooter/FooterNavLinks/CompanyLinks.cjs.map +1 -0
  586. package/dist/GlobalFooter/FooterNavLinks/CompanyLinks.js +193 -286
  587. package/dist/GlobalFooter/FooterNavLinks/CompanyLinks.js.map +1 -0
  588. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferAFriendLinkWithModal.cjs +203 -0
  589. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferAFriendLinkWithModal.cjs.map +1 -0
  590. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferAFriendLinkWithModal.js +198 -270
  591. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferAFriendLinkWithModal.js.map +1 -0
  592. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralFields.cjs +27 -0
  593. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralFields.cjs.map +1 -0
  594. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralFields.js +25 -29
  595. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralFields.js.map +1 -0
  596. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralForm.cjs +70 -0
  597. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralForm.cjs.map +1 -0
  598. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralForm.js +65 -75
  599. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralForm.js.map +1 -0
  600. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralLinkSocialMediaSharing.cjs +68 -0
  601. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralLinkSocialMediaSharing.cjs.map +1 -0
  602. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralLinkSocialMediaSharing.js +67 -86
  603. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralLinkSocialMediaSharing.js.map +1 -0
  604. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/types.d.cts +8 -0
  605. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/types.d.cts.map +1 -0
  606. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/types.d.ts +7 -3
  607. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/types.d.ts.map +1 -0
  608. package/dist/GlobalFooter/FooterNavLinks/SocialMediaLinks.cjs +57 -0
  609. package/dist/GlobalFooter/FooterNavLinks/SocialMediaLinks.cjs.map +1 -0
  610. package/dist/GlobalFooter/FooterNavLinks/SocialMediaLinks.js +55 -50
  611. package/dist/GlobalFooter/FooterNavLinks/SocialMediaLinks.js.map +1 -0
  612. package/dist/GlobalFooter/FooterNavLinks/assets/download-on-the-app-store.cjs +12 -0
  613. package/dist/GlobalFooter/FooterNavLinks/assets/download-on-the-app-store.cjs.map +1 -0
  614. package/dist/GlobalFooter/FooterNavLinks/assets/download-on-the-app-store.js +6 -0
  615. package/dist/GlobalFooter/FooterNavLinks/assets/download-on-the-app-store.js.map +1 -0
  616. package/dist/GlobalFooter/FooterNavLinks/assets/get-it-on-google-play.cjs +12 -0
  617. package/dist/GlobalFooter/FooterNavLinks/assets/get-it-on-google-play.cjs.map +1 -0
  618. package/dist/GlobalFooter/FooterNavLinks/assets/get-it-on-google-play.js +6 -0
  619. package/dist/GlobalFooter/FooterNavLinks/assets/get-it-on-google-play.js.map +1 -0
  620. package/dist/GlobalFooter/FooterNavLinks/index.cjs +37 -0
  621. package/dist/GlobalFooter/FooterNavLinks/index.cjs.map +1 -0
  622. package/dist/GlobalFooter/FooterNavLinks/index.js +34 -43
  623. package/dist/GlobalFooter/FooterNavLinks/index.js.map +1 -0
  624. package/dist/GlobalFooter/index.cjs +34 -0
  625. package/dist/GlobalFooter/index.cjs.map +1 -0
  626. package/dist/GlobalFooter/index.d.cts +27 -0
  627. package/dist/GlobalFooter/index.d.cts.map +1 -0
  628. package/dist/GlobalFooter/index.d.ts +26 -21
  629. package/dist/GlobalFooter/index.d.ts.map +1 -0
  630. package/dist/GlobalFooter/index.js +31 -37
  631. package/dist/GlobalFooter/index.js.map +1 -0
  632. package/dist/GlobalFooter/types.d.cts +17 -0
  633. package/dist/GlobalFooter/types.d.cts.map +1 -0
  634. package/dist/GlobalFooter/types.d.ts +15 -11
  635. package/dist/GlobalFooter/types.d.ts.map +1 -0
  636. package/dist/GlobalHeader/GlobalHeaderItems.cjs +439 -0
  637. package/dist/GlobalHeader/GlobalHeaderItems.cjs.map +1 -0
  638. package/dist/GlobalHeader/GlobalHeaderItems.js +371 -377
  639. package/dist/GlobalHeader/GlobalHeaderItems.js.map +1 -0
  640. package/dist/GlobalHeader/GlobalHeaderVariants.cjs +344 -0
  641. package/dist/GlobalHeader/GlobalHeaderVariants.cjs.map +1 -0
  642. package/dist/GlobalHeader/GlobalHeaderVariants.js +297 -325
  643. package/dist/GlobalHeader/GlobalHeaderVariants.js.map +1 -0
  644. package/dist/GlobalHeader/context.cjs +83 -0
  645. package/dist/GlobalHeader/context.cjs.map +1 -0
  646. package/dist/GlobalHeader/context.js +70 -72
  647. package/dist/GlobalHeader/context.js.map +1 -0
  648. package/dist/GlobalHeader/index.cjs +132 -0
  649. package/dist/GlobalHeader/index.cjs.map +1 -0
  650. package/dist/GlobalHeader/index.d.cts +11 -0
  651. package/dist/GlobalHeader/index.d.cts.map +1 -0
  652. package/dist/GlobalHeader/index.d.ts +11 -7
  653. package/dist/GlobalHeader/index.d.ts.map +1 -0
  654. package/dist/GlobalHeader/index.js +126 -180
  655. package/dist/GlobalHeader/index.js.map +1 -0
  656. package/dist/GlobalHeader/types.d.cts +125 -0
  657. package/dist/GlobalHeader/types.d.cts.map +1 -0
  658. package/dist/GlobalHeader/types.d.ts +105 -99
  659. package/dist/GlobalHeader/types.d.ts.map +1 -0
  660. package/dist/GlobalHeader/urlHelpers.cjs +23 -0
  661. package/dist/GlobalHeader/urlHelpers.cjs.map +1 -0
  662. package/dist/GlobalHeader/urlHelpers.js +20 -20
  663. package/dist/GlobalHeader/urlHelpers.js.map +1 -0
  664. package/dist/GlobalPage/index.cjs +29 -0
  665. package/dist/GlobalPage/index.cjs.map +1 -0
  666. package/dist/GlobalPage/index.d.cts +52 -0
  667. package/dist/GlobalPage/index.d.cts.map +1 -0
  668. package/dist/GlobalPage/index.d.ts +47 -43
  669. package/dist/GlobalPage/index.d.ts.map +1 -0
  670. package/dist/GlobalPage/index.js +27 -60
  671. package/dist/GlobalPage/index.js.map +1 -0
  672. package/dist/Grid/GridCollapse.cjs +134 -0
  673. package/dist/Grid/GridCollapse.cjs.map +1 -0
  674. package/dist/Grid/GridCollapse.d.cts +50 -0
  675. package/dist/Grid/GridCollapse.d.cts.map +1 -0
  676. package/dist/Grid/GridCollapse.d.ts +48 -39
  677. package/dist/Grid/GridCollapse.d.ts.map +1 -0
  678. package/dist/Grid/GridCollapse.js +126 -195
  679. package/dist/Grid/GridCollapse.js.map +1 -0
  680. package/dist/Grid/Subgrid.cjs +41 -0
  681. package/dist/Grid/Subgrid.cjs.map +1 -0
  682. package/dist/Grid/Subgrid.d.cts +29 -0
  683. package/dist/Grid/Subgrid.d.cts.map +1 -0
  684. package/dist/Grid/Subgrid.d.ts +11 -5
  685. package/dist/Grid/Subgrid.d.ts.map +1 -0
  686. package/dist/Grid/Subgrid.js +37 -35
  687. package/dist/Grid/Subgrid.js.map +1 -0
  688. package/dist/Grid/getCSSFromColumnCount.cjs +11 -0
  689. package/dist/Grid/getCSSFromColumnCount.cjs.map +1 -0
  690. package/dist/Grid/getCSSFromColumnCount.d.cts +11 -0
  691. package/dist/Grid/getCSSFromColumnCount.d.cts.map +1 -0
  692. package/dist/Grid/getCSSFromColumnCount.d.ts +11 -6
  693. package/dist/Grid/getCSSFromColumnCount.d.ts.map +1 -0
  694. package/dist/Grid/getCSSFromColumnCount.js +10 -7
  695. package/dist/Grid/getCSSFromColumnCount.js.map +1 -0
  696. package/dist/Grid/index.cjs +3 -0
  697. package/dist/Grid/index.d.ts +3 -3
  698. package/dist/Grid/index.js +3 -3
  699. package/dist/HeaderHeightArea/index.cjs +40 -0
  700. package/dist/HeaderHeightArea/index.cjs.map +1 -0
  701. package/dist/HeaderHeightArea/index.js +36 -39
  702. package/dist/HeaderHeightArea/index.js.map +1 -0
  703. package/dist/HeaderHeightArea/useIsInHeaderRegion.cjs +18 -0
  704. package/dist/HeaderHeightArea/useIsInHeaderRegion.cjs.map +1 -0
  705. package/dist/HeaderHeightArea/useIsInHeaderRegion.js +16 -14
  706. package/dist/HeaderHeightArea/useIsInHeaderRegion.js.map +1 -0
  707. package/dist/HorizontalScrollMenu/index.cjs +57 -0
  708. package/dist/HorizontalScrollMenu/index.cjs.map +1 -0
  709. package/dist/HorizontalScrollMenu/index.d.cts +11 -0
  710. package/dist/HorizontalScrollMenu/index.d.cts.map +1 -0
  711. package/dist/HorizontalScrollMenu/index.d.ts +11 -6
  712. package/dist/HorizontalScrollMenu/index.d.ts.map +1 -0
  713. package/dist/HorizontalScrollMenu/index.js +55 -75
  714. package/dist/HorizontalScrollMenu/index.js.map +1 -0
  715. package/dist/HubCard/index.cjs +33 -0
  716. package/dist/HubCard/index.cjs.map +1 -0
  717. package/dist/HubCard/index.d.cts +13 -0
  718. package/dist/HubCard/index.d.cts.map +1 -0
  719. package/dist/HubCard/index.d.ts +12 -7
  720. package/dist/HubCard/index.d.ts.map +1 -0
  721. package/dist/HubCard/index.js +31 -38
  722. package/dist/HubCard/index.js.map +1 -0
  723. package/dist/InfoCard/index.cjs +99 -0
  724. package/dist/InfoCard/index.cjs.map +1 -0
  725. package/dist/InfoCard/index.d.cts +24 -0
  726. package/dist/InfoCard/index.d.cts.map +1 -0
  727. package/dist/InfoCard/index.d.ts +23 -18
  728. package/dist/InfoCard/index.d.ts.map +1 -0
  729. package/dist/InfoCard/index.js +93 -153
  730. package/dist/InfoCard/index.js.map +1 -0
  731. package/dist/InstructorCard/index.cjs +137 -0
  732. package/dist/InstructorCard/index.cjs.map +1 -0
  733. package/dist/InstructorCard/index.d.cts +17 -0
  734. package/dist/InstructorCard/index.d.cts.map +1 -0
  735. package/dist/InstructorCard/index.d.ts +16 -17
  736. package/dist/InstructorCard/index.d.ts.map +1 -0
  737. package/dist/InstructorCard/index.js +130 -171
  738. package/dist/InstructorCard/index.js.map +1 -0
  739. package/dist/Konamimojisplosion/Konamimojisplosion.cjs +11 -0
  740. package/dist/Konamimojisplosion/Konamimojisplosion.cjs.map +1 -0
  741. package/dist/Konamimojisplosion/Konamimojisplosion.d.cts +10 -0
  742. package/dist/Konamimojisplosion/Konamimojisplosion.d.cts.map +1 -0
  743. package/dist/Konamimojisplosion/Konamimojisplosion.d.ts +9 -4
  744. package/dist/Konamimojisplosion/Konamimojisplosion.d.ts.map +1 -0
  745. package/dist/Konamimojisplosion/Konamimojisplosion.js +11 -7
  746. package/dist/Konamimojisplosion/Konamimojisplosion.js.map +1 -0
  747. package/dist/Konamimojisplosion/index.cjs +2 -0
  748. package/dist/Konamimojisplosion/index.d.ts +2 -2
  749. package/dist/Konamimojisplosion/index.js +2 -2
  750. package/dist/Konamimojisplosion/useKonamimojisplosion.cjs +48 -0
  751. package/dist/Konamimojisplosion/useKonamimojisplosion.cjs.map +1 -0
  752. package/dist/Konamimojisplosion/useKonamimojisplosion.d.cts +5 -0
  753. package/dist/Konamimojisplosion/useKonamimojisplosion.d.cts.map +1 -0
  754. package/dist/Konamimojisplosion/useKonamimojisplosion.d.ts +5 -1
  755. package/dist/Konamimojisplosion/useKonamimojisplosion.d.ts.map +1 -0
  756. package/dist/Konamimojisplosion/useKonamimojisplosion.js +45 -32
  757. package/dist/Konamimojisplosion/useKonamimojisplosion.js.map +1 -0
  758. package/dist/LandingPage/Description.cjs +17 -0
  759. package/dist/LandingPage/Description.cjs.map +1 -0
  760. package/dist/LandingPage/Description.d.cts +11 -0
  761. package/dist/LandingPage/Description.d.cts.map +1 -0
  762. package/dist/LandingPage/Description.d.ts +10 -5
  763. package/dist/LandingPage/Description.d.ts.map +1 -0
  764. package/dist/LandingPage/Description.js +15 -14
  765. package/dist/LandingPage/Description.js.map +1 -0
  766. package/dist/LandingPage/PageFAQs.cjs +40 -0
  767. package/dist/LandingPage/PageFAQs.cjs.map +1 -0
  768. package/dist/LandingPage/PageFAQs.d.cts +17 -0
  769. package/dist/LandingPage/PageFAQs.d.cts.map +1 -0
  770. package/dist/LandingPage/PageFAQs.d.ts +14 -10
  771. package/dist/LandingPage/PageFAQs.d.ts.map +1 -0
  772. package/dist/LandingPage/PageFAQs.js +37 -44
  773. package/dist/LandingPage/PageFAQs.js.map +1 -0
  774. package/dist/LandingPage/Title.cjs +32 -0
  775. package/dist/LandingPage/Title.cjs.map +1 -0
  776. package/dist/LandingPage/Title.d.cts +28 -0
  777. package/dist/LandingPage/Title.d.cts.map +1 -0
  778. package/dist/LandingPage/Title.d.ts +24 -19
  779. package/dist/LandingPage/Title.d.ts.map +1 -0
  780. package/dist/LandingPage/Title.js +28 -27
  781. package/dist/LandingPage/Title.js.map +1 -0
  782. package/dist/LandingPage/TitleWithEyebrow.cjs +34 -0
  783. package/dist/LandingPage/TitleWithEyebrow.cjs.map +1 -0
  784. package/dist/LandingPage/TitleWithEyebrow.d.cts +16 -0
  785. package/dist/LandingPage/TitleWithEyebrow.d.cts.map +1 -0
  786. package/dist/LandingPage/TitleWithEyebrow.d.ts +15 -10
  787. package/dist/LandingPage/TitleWithEyebrow.d.ts.map +1 -0
  788. package/dist/LandingPage/TitleWithEyebrow.js +32 -40
  789. package/dist/LandingPage/TitleWithEyebrow.js.map +1 -0
  790. package/dist/LandingPage/index.cjs +5 -0
  791. package/dist/LandingPage/index.d.ts +6 -6
  792. package/dist/LandingPage/index.js +5 -6
  793. package/dist/LandingPage/types.d.cts +36 -0
  794. package/dist/LandingPage/types.d.cts.map +1 -0
  795. package/dist/LandingPage/types.d.ts +34 -30
  796. package/dist/LandingPage/types.d.ts.map +1 -0
  797. package/dist/LayoutMenu/AccordionMenu.cjs +63 -0
  798. package/dist/LayoutMenu/AccordionMenu.cjs.map +1 -0
  799. package/dist/LayoutMenu/AccordionMenu.d.cts +19 -0
  800. package/dist/LayoutMenu/AccordionMenu.d.cts.map +1 -0
  801. package/dist/LayoutMenu/AccordionMenu.d.ts +17 -24
  802. package/dist/LayoutMenu/AccordionMenu.d.ts.map +1 -0
  803. package/dist/LayoutMenu/AccordionMenu.js +57 -69
  804. package/dist/LayoutMenu/AccordionMenu.js.map +1 -0
  805. package/dist/LayoutMenu/LayoutMenu.cjs +87 -0
  806. package/dist/LayoutMenu/LayoutMenu.cjs.map +1 -0
  807. package/dist/LayoutMenu/LayoutMenu.d.cts +49 -0
  808. package/dist/LayoutMenu/LayoutMenu.d.cts.map +1 -0
  809. package/dist/LayoutMenu/LayoutMenu.d.ts +48 -43
  810. package/dist/LayoutMenu/LayoutMenu.d.ts.map +1 -0
  811. package/dist/LayoutMenu/LayoutMenu.js +84 -118
  812. package/dist/LayoutMenu/LayoutMenu.js.map +1 -0
  813. package/dist/LayoutMenu/LayoutMenuSection.cjs +30 -0
  814. package/dist/LayoutMenu/LayoutMenuSection.cjs.map +1 -0
  815. package/dist/LayoutMenu/LayoutMenuSection.js +28 -39
  816. package/dist/LayoutMenu/LayoutMenuSection.js.map +1 -0
  817. package/dist/LayoutMenu/SectionItemLink.cjs +18 -0
  818. package/dist/LayoutMenu/SectionItemLink.cjs.map +1 -0
  819. package/dist/LayoutMenu/SectionItemLink.d.cts +12 -0
  820. package/dist/LayoutMenu/SectionItemLink.d.cts.map +1 -0
  821. package/dist/LayoutMenu/SectionItemLink.d.ts +11 -6
  822. package/dist/LayoutMenu/SectionItemLink.d.ts.map +1 -0
  823. package/dist/LayoutMenu/SectionItemLink.js +16 -16
  824. package/dist/LayoutMenu/SectionItemLink.js.map +1 -0
  825. package/dist/LayoutMenu/SelectedSectionItem.cjs +18 -0
  826. package/dist/LayoutMenu/SelectedSectionItem.cjs.map +1 -0
  827. package/dist/LayoutMenu/SelectedSectionItem.d.cts +8 -0
  828. package/dist/LayoutMenu/SelectedSectionItem.d.cts.map +1 -0
  829. package/dist/LayoutMenu/SelectedSectionItem.d.ts +8 -3
  830. package/dist/LayoutMenu/SelectedSectionItem.d.ts.map +1 -0
  831. package/dist/LayoutMenu/SelectedSectionItem.js +16 -17
  832. package/dist/LayoutMenu/SelectedSectionItem.js.map +1 -0
  833. package/dist/LayoutMenu/index.cjs +3 -0
  834. package/dist/LayoutMenu/index.d.ts +3 -3
  835. package/dist/LayoutMenu/index.js +3 -3
  836. package/dist/LayoutMenuVariant/AccordionMenu.cjs +69 -0
  837. package/dist/LayoutMenuVariant/AccordionMenu.cjs.map +1 -0
  838. package/dist/LayoutMenuVariant/AccordionMenu.d.cts +20 -0
  839. package/dist/LayoutMenuVariant/AccordionMenu.d.cts.map +1 -0
  840. package/dist/LayoutMenuVariant/AccordionMenu.d.ts +18 -19
  841. package/dist/LayoutMenuVariant/AccordionMenu.d.ts.map +1 -0
  842. package/dist/LayoutMenuVariant/AccordionMenu.js +65 -86
  843. package/dist/LayoutMenuVariant/AccordionMenu.js.map +1 -0
  844. package/dist/LayoutMenuVariant/LayoutMenu.cjs +73 -0
  845. package/dist/LayoutMenuVariant/LayoutMenu.cjs.map +1 -0
  846. package/dist/LayoutMenuVariant/LayoutMenu.d.cts +44 -0
  847. package/dist/LayoutMenuVariant/LayoutMenu.d.cts.map +1 -0
  848. package/dist/LayoutMenuVariant/LayoutMenu.d.ts +43 -38
  849. package/dist/LayoutMenuVariant/LayoutMenu.d.ts.map +1 -0
  850. package/dist/LayoutMenuVariant/LayoutMenu.js +69 -92
  851. package/dist/LayoutMenuVariant/LayoutMenu.js.map +1 -0
  852. package/dist/LayoutMenuVariant/LayoutMenuSection.cjs +33 -0
  853. package/dist/LayoutMenuVariant/LayoutMenuSection.cjs.map +1 -0
  854. package/dist/LayoutMenuVariant/LayoutMenuSection.js +30 -42
  855. package/dist/LayoutMenuVariant/LayoutMenuSection.js.map +1 -0
  856. package/dist/LayoutMenuVariant/SectionItemLink.cjs +18 -0
  857. package/dist/LayoutMenuVariant/SectionItemLink.cjs.map +1 -0
  858. package/dist/LayoutMenuVariant/SectionItemLink.d.cts +13 -0
  859. package/dist/LayoutMenuVariant/SectionItemLink.d.cts.map +1 -0
  860. package/dist/LayoutMenuVariant/SectionItemLink.d.ts +12 -7
  861. package/dist/LayoutMenuVariant/SectionItemLink.d.ts.map +1 -0
  862. package/dist/LayoutMenuVariant/SectionItemLink.js +16 -17
  863. package/dist/LayoutMenuVariant/SectionItemLink.js.map +1 -0
  864. package/dist/LayoutMenuVariant/index.cjs +18 -0
  865. package/dist/LayoutMenuVariant/index.cjs.map +1 -0
  866. package/dist/LayoutMenuVariant/index.d.cts +10 -0
  867. package/dist/LayoutMenuVariant/index.d.cts.map +1 -0
  868. package/dist/LayoutMenuVariant/index.d.ts +10 -2
  869. package/dist/LayoutMenuVariant/index.d.ts.map +1 -0
  870. package/dist/LayoutMenuVariant/index.js +13 -2
  871. package/dist/LayoutMenuVariant/index.js.map +1 -0
  872. package/dist/LearningOutcomeAssessmentScores/AssessmentDetail.cjs +41 -0
  873. package/dist/LearningOutcomeAssessmentScores/AssessmentDetail.cjs.map +1 -0
  874. package/dist/LearningOutcomeAssessmentScores/AssessmentDetail.js +39 -55
  875. package/dist/LearningOutcomeAssessmentScores/AssessmentDetail.js.map +1 -0
  876. package/dist/LearningOutcomeAssessmentScores/index.cjs +24 -0
  877. package/dist/LearningOutcomeAssessmentScores/index.cjs.map +1 -0
  878. package/dist/LearningOutcomeAssessmentScores/index.d.cts +11 -0
  879. package/dist/LearningOutcomeAssessmentScores/index.d.cts.map +1 -0
  880. package/dist/LearningOutcomeAssessmentScores/index.d.ts +9 -6
  881. package/dist/LearningOutcomeAssessmentScores/index.d.ts.map +1 -0
  882. package/dist/LearningOutcomeAssessmentScores/index.js +23 -24
  883. package/dist/LearningOutcomeAssessmentScores/index.js.map +1 -0
  884. package/dist/LearningOutcomeBadges/LearningOutcomeLevelBadge.cjs +53 -0
  885. package/dist/LearningOutcomeBadges/LearningOutcomeLevelBadge.cjs.map +1 -0
  886. package/dist/LearningOutcomeBadges/LearningOutcomeLevelBadge.d.cts +22 -0
  887. package/dist/LearningOutcomeBadges/LearningOutcomeLevelBadge.d.cts.map +1 -0
  888. package/dist/LearningOutcomeBadges/LearningOutcomeLevelBadge.d.ts +18 -14
  889. package/dist/LearningOutcomeBadges/LearningOutcomeLevelBadge.d.ts.map +1 -0
  890. package/dist/LearningOutcomeBadges/LearningOutcomeLevelBadge.js +43 -56
  891. package/dist/LearningOutcomeBadges/LearningOutcomeLevelBadge.js.map +1 -0
  892. package/dist/LearningOutcomeBadges/LearningOutcomeLowAssessmentBadge.cjs +37 -0
  893. package/dist/LearningOutcomeBadges/LearningOutcomeLowAssessmentBadge.cjs.map +1 -0
  894. package/dist/LearningOutcomeBadges/LearningOutcomeLowAssessmentBadge.d.cts +19 -0
  895. package/dist/LearningOutcomeBadges/LearningOutcomeLowAssessmentBadge.d.cts.map +1 -0
  896. package/dist/LearningOutcomeBadges/LearningOutcomeLowAssessmentBadge.d.ts +17 -8
  897. package/dist/LearningOutcomeBadges/LearningOutcomeLowAssessmentBadge.d.ts.map +1 -0
  898. package/dist/LearningOutcomeBadges/LearningOutcomeLowAssessmentBadge.js +32 -33
  899. package/dist/LearningOutcomeBadges/LearningOutcomeLowAssessmentBadge.js.map +1 -0
  900. package/dist/LearningOutcomeBadges/index.cjs +2 -0
  901. package/dist/LearningOutcomeBadges/index.d.ts +2 -2
  902. package/dist/LearningOutcomeBadges/index.js +2 -2
  903. package/dist/LearningOutcomeCard/index.cjs +163 -0
  904. package/dist/LearningOutcomeCard/index.cjs.map +1 -0
  905. package/dist/LearningOutcomeCard/index.d.cts +31 -0
  906. package/dist/LearningOutcomeCard/index.d.cts.map +1 -0
  907. package/dist/LearningOutcomeCard/index.d.ts +28 -23
  908. package/dist/LearningOutcomeCard/index.d.ts.map +1 -0
  909. package/dist/LearningOutcomeCard/index.js +155 -197
  910. package/dist/LearningOutcomeCard/index.js.map +1 -0
  911. package/dist/LearningOutcomeFlyout/LearningOutcomeCardList.cjs +39 -0
  912. package/dist/LearningOutcomeFlyout/LearningOutcomeCardList.cjs.map +1 -0
  913. package/dist/LearningOutcomeFlyout/LearningOutcomeCardList.js +38 -42
  914. package/dist/LearningOutcomeFlyout/LearningOutcomeCardList.js.map +1 -0
  915. package/dist/LearningOutcomeFlyout/index.cjs +277 -0
  916. package/dist/LearningOutcomeFlyout/index.cjs.map +1 -0
  917. package/dist/LearningOutcomeFlyout/index.d.cts +13 -0
  918. package/dist/LearningOutcomeFlyout/index.d.cts.map +1 -0
  919. package/dist/LearningOutcomeFlyout/index.d.ts +13 -7
  920. package/dist/LearningOutcomeFlyout/index.d.ts.map +1 -0
  921. package/dist/LearningOutcomeFlyout/index.js +264 -346
  922. package/dist/LearningOutcomeFlyout/index.js.map +1 -0
  923. package/dist/LearningOutcomeFlyout/types.cjs +16 -0
  924. package/dist/LearningOutcomeFlyout/types.cjs.map +1 -0
  925. package/dist/LearningOutcomeFlyout/types.d.cts +67 -0
  926. package/dist/LearningOutcomeFlyout/types.d.cts.map +1 -0
  927. package/dist/LearningOutcomeFlyout/types.d.ts +59 -54
  928. package/dist/LearningOutcomeFlyout/types.d.ts.map +1 -0
  929. package/dist/LearningOutcomeFlyout/types.js +10 -5
  930. package/dist/LearningOutcomeFlyout/types.js.map +1 -0
  931. package/dist/LearningOutcomePopover/index.cjs +96 -0
  932. package/dist/LearningOutcomePopover/index.cjs.map +1 -0
  933. package/dist/LearningOutcomePopover/index.js +92 -122
  934. package/dist/LearningOutcomePopover/index.js.map +1 -0
  935. package/dist/LearningOutcomeTile/Tile.cjs +72 -0
  936. package/dist/LearningOutcomeTile/Tile.cjs.map +1 -0
  937. package/dist/LearningOutcomeTile/Tile.js +66 -75
  938. package/dist/LearningOutcomeTile/Tile.js.map +1 -0
  939. package/dist/LearningOutcomeTile/index.cjs +97 -0
  940. package/dist/LearningOutcomeTile/index.cjs.map +1 -0
  941. package/dist/LearningOutcomeTile/index.d.cts +8 -0
  942. package/dist/LearningOutcomeTile/index.d.cts.map +1 -0
  943. package/dist/LearningOutcomeTile/index.d.ts +8 -3
  944. package/dist/LearningOutcomeTile/index.d.ts.map +1 -0
  945. package/dist/LearningOutcomeTile/index.js +93 -114
  946. package/dist/LearningOutcomeTile/index.js.map +1 -0
  947. package/dist/LearningOutcomeTile/types.cjs +17 -0
  948. package/dist/LearningOutcomeTile/types.cjs.map +1 -0
  949. package/dist/LearningOutcomeTile/types.d.cts +46 -0
  950. package/dist/LearningOutcomeTile/types.d.cts.map +1 -0
  951. package/dist/LearningOutcomeTile/types.d.ts +36 -36
  952. package/dist/LearningOutcomeTile/types.d.ts.map +1 -0
  953. package/dist/LearningOutcomeTile/types.js +10 -10
  954. package/dist/LearningOutcomeTile/types.js.map +1 -0
  955. package/dist/ListSection/index.cjs +52 -0
  956. package/dist/ListSection/index.cjs.map +1 -0
  957. package/dist/ListSection/index.d.cts +26 -0
  958. package/dist/ListSection/index.d.cts.map +1 -0
  959. package/dist/ListSection/index.d.ts +26 -20
  960. package/dist/ListSection/index.d.ts.map +1 -0
  961. package/dist/ListSection/index.js +50 -64
  962. package/dist/ListSection/index.js.map +1 -0
  963. package/dist/Loading/index.cjs +81 -0
  964. package/dist/Loading/index.cjs.map +1 -0
  965. package/dist/Loading/index.d.cts +10 -0
  966. package/dist/Loading/index.d.cts.map +1 -0
  967. package/dist/Loading/index.d.ts +9 -4
  968. package/dist/Loading/index.d.ts.map +1 -0
  969. package/dist/Loading/index.js +76 -81
  970. package/dist/Loading/index.js.map +1 -0
  971. package/dist/LoadingCurriculumCard/index.cjs +71 -0
  972. package/dist/LoadingCurriculumCard/index.cjs.map +1 -0
  973. package/dist/LoadingCurriculumCard/index.d.cts +11 -0
  974. package/dist/LoadingCurriculumCard/index.d.cts.map +1 -0
  975. package/dist/LoadingCurriculumCard/index.d.ts +9 -5
  976. package/dist/LoadingCurriculumCard/index.d.ts.map +1 -0
  977. package/dist/LoadingCurriculumCard/index.js +69 -82
  978. package/dist/LoadingCurriculumCard/index.js.map +1 -0
  979. package/dist/Logos/LogoCodecademy/index.cjs +20 -0
  980. package/dist/Logos/LogoCodecademy/index.cjs.map +1 -0
  981. package/dist/Logos/LogoCodecademy/index.d.cts +7 -0
  982. package/dist/Logos/LogoCodecademy/index.d.cts.map +1 -0
  983. package/dist/Logos/LogoCodecademy/index.d.ts +7 -2
  984. package/dist/Logos/LogoCodecademy/index.d.ts.map +1 -0
  985. package/dist/Logos/LogoCodecademy/index.js +20 -22
  986. package/dist/Logos/LogoCodecademy/index.js.map +1 -0
  987. package/dist/Logos/LogoCodecademyMini/index.cjs +17 -0
  988. package/dist/Logos/LogoCodecademyMini/index.cjs.map +1 -0
  989. package/dist/Logos/LogoCodecademyMini/index.d.cts +7 -0
  990. package/dist/Logos/LogoCodecademyMini/index.d.cts.map +1 -0
  991. package/dist/Logos/LogoCodecademyMini/index.d.ts +7 -2
  992. package/dist/Logos/LogoCodecademyMini/index.d.ts.map +1 -0
  993. package/dist/Logos/LogoCodecademyMini/index.js +17 -18
  994. package/dist/Logos/LogoCodecademyMini/index.js.map +1 -0
  995. package/dist/Logos/LogoCodecademyPro/index.cjs +23 -0
  996. package/dist/Logos/LogoCodecademyPro/index.cjs.map +1 -0
  997. package/dist/Logos/LogoCodecademyPro/index.d.cts +7 -0
  998. package/dist/Logos/LogoCodecademyPro/index.d.cts.map +1 -0
  999. package/dist/Logos/LogoCodecademyPro/index.d.ts +7 -2
  1000. package/dist/Logos/LogoCodecademyPro/index.d.ts.map +1 -0
  1001. package/dist/Logos/LogoCodecademyPro/index.js +23 -25
  1002. package/dist/Logos/LogoCodecademyPro/index.js.map +1 -0
  1003. package/dist/Logos/LogoCodecademyTeams/index.cjs +41 -0
  1004. package/dist/Logos/LogoCodecademyTeams/index.cjs.map +1 -0
  1005. package/dist/Logos/LogoCodecademyTeams/index.d.cts +7 -0
  1006. package/dist/Logos/LogoCodecademyTeams/index.d.cts.map +1 -0
  1007. package/dist/Logos/LogoCodecademyTeams/index.d.ts +7 -2
  1008. package/dist/Logos/LogoCodecademyTeams/index.d.ts.map +1 -0
  1009. package/dist/Logos/LogoCodecademyTeams/index.js +41 -46
  1010. package/dist/Logos/LogoCodecademyTeams/index.js.map +1 -0
  1011. package/dist/Logos/LogoFromSkillsoft/index.cjs +42 -0
  1012. package/dist/Logos/LogoFromSkillsoft/index.cjs.map +1 -0
  1013. package/dist/Logos/LogoFromSkillsoft/index.d.cts +8 -0
  1014. package/dist/Logos/LogoFromSkillsoft/index.d.cts.map +1 -0
  1015. package/dist/Logos/LogoFromSkillsoft/index.d.ts +8 -3
  1016. package/dist/Logos/LogoFromSkillsoft/index.d.ts.map +1 -0
  1017. package/dist/Logos/LogoFromSkillsoft/index.js +40 -48
  1018. package/dist/Logos/LogoFromSkillsoft/index.js.map +1 -0
  1019. package/dist/Logos/LogoLXStudio/index.cjs +29 -0
  1020. package/dist/Logos/LogoLXStudio/index.cjs.map +1 -0
  1021. package/dist/Logos/LogoLXStudio/index.d.cts +8 -0
  1022. package/dist/Logos/LogoLXStudio/index.d.cts.map +1 -0
  1023. package/dist/Logos/LogoLXStudio/index.d.ts +8 -3
  1024. package/dist/Logos/LogoLXStudio/index.d.ts.map +1 -0
  1025. package/dist/Logos/LogoLXStudio/index.js +28 -40
  1026. package/dist/Logos/LogoLXStudio/index.js.map +1 -0
  1027. package/dist/Logos/ProLabel/ProLabelCutout/index.cjs +32 -0
  1028. package/dist/Logos/ProLabel/ProLabelCutout/index.cjs.map +1 -0
  1029. package/dist/Logos/ProLabel/ProLabelCutout/index.js +30 -31
  1030. package/dist/Logos/ProLabel/ProLabelCutout/index.js.map +1 -0
  1031. package/dist/Logos/ProLabel/ProLabelCutoutTransparent/index.cjs +33 -0
  1032. package/dist/Logos/ProLabel/ProLabelCutoutTransparent/index.cjs.map +1 -0
  1033. package/dist/Logos/ProLabel/ProLabelCutoutTransparent/index.js +31 -31
  1034. package/dist/Logos/ProLabel/ProLabelCutoutTransparent/index.js.map +1 -0
  1035. package/dist/Logos/ProLabel/index.cjs +27 -0
  1036. package/dist/Logos/ProLabel/index.cjs.map +1 -0
  1037. package/dist/Logos/ProLabel/index.d.cts +19 -0
  1038. package/dist/Logos/ProLabel/index.d.cts.map +1 -0
  1039. package/dist/Logos/ProLabel/index.d.ts +15 -11
  1040. package/dist/Logos/ProLabel/index.d.ts.map +1 -0
  1041. package/dist/Logos/ProLabel/index.js +25 -27
  1042. package/dist/Logos/ProLabel/index.js.map +1 -0
  1043. package/dist/Logos/index.cjs +7 -0
  1044. package/dist/Logos/index.d.ts +7 -7
  1045. package/dist/Logos/index.js +7 -7
  1046. package/dist/Logos/shared.cjs +23 -0
  1047. package/dist/Logos/shared.cjs.map +1 -0
  1048. package/dist/Logos/shared.d.cts +352 -0
  1049. package/dist/Logos/shared.d.cts.map +1 -0
  1050. package/dist/Logos/shared.d.ts +355 -989
  1051. package/dist/Logos/shared.d.ts.map +1 -0
  1052. package/dist/Logos/shared.js +19 -14
  1053. package/dist/Logos/shared.js.map +1 -0
  1054. package/dist/MarketingToaster/index.cjs +51 -0
  1055. package/dist/MarketingToaster/index.cjs.map +1 -0
  1056. package/dist/MarketingToaster/index.d.cts +12 -0
  1057. package/dist/MarketingToaster/index.d.cts.map +1 -0
  1058. package/dist/MarketingToaster/index.d.ts +10 -6
  1059. package/dist/MarketingToaster/index.d.ts.map +1 -0
  1060. package/dist/MarketingToaster/index.js +47 -66
  1061. package/dist/MarketingToaster/index.js.map +1 -0
  1062. package/dist/NotFoundContent/404.cjs +12 -0
  1063. package/dist/NotFoundContent/404.cjs.map +1 -0
  1064. package/dist/NotFoundContent/404.js +6 -0
  1065. package/dist/NotFoundContent/404.js.map +1 -0
  1066. package/dist/NotFoundContent/index.cjs +40 -0
  1067. package/dist/NotFoundContent/index.cjs.map +1 -0
  1068. package/dist/NotFoundContent/index.d.cts +12 -0
  1069. package/dist/NotFoundContent/index.d.cts.map +1 -0
  1070. package/dist/NotFoundContent/index.d.ts +10 -6
  1071. package/dist/NotFoundContent/index.d.ts.map +1 -0
  1072. package/dist/NotFoundContent/index.js +37 -55
  1073. package/dist/NotFoundContent/index.js.map +1 -0
  1074. package/dist/NotificationList/EmptyNotification/emptyNotificationContents.cjs +35 -0
  1075. package/dist/NotificationList/EmptyNotification/emptyNotificationContents.cjs.map +1 -0
  1076. package/dist/NotificationList/EmptyNotification/emptyNotificationContents.js +34 -23
  1077. package/dist/NotificationList/EmptyNotification/emptyNotificationContents.js.map +1 -0
  1078. package/dist/NotificationList/EmptyNotification/index.cjs +35 -0
  1079. package/dist/NotificationList/EmptyNotification/index.cjs.map +1 -0
  1080. package/dist/NotificationList/EmptyNotification/index.js +33 -38
  1081. package/dist/NotificationList/EmptyNotification/index.js.map +1 -0
  1082. package/dist/NotificationList/NotificationItem.cjs +122 -0
  1083. package/dist/NotificationList/NotificationItem.cjs.map +1 -0
  1084. package/dist/NotificationList/NotificationItem.d.cts +13 -0
  1085. package/dist/NotificationList/NotificationItem.d.cts.map +1 -0
  1086. package/dist/NotificationList/NotificationItem.d.ts +12 -7
  1087. package/dist/NotificationList/NotificationItem.d.ts.map +1 -0
  1088. package/dist/NotificationList/NotificationItem.js +118 -150
  1089. package/dist/NotificationList/NotificationItem.js.map +1 -0
  1090. package/dist/NotificationList/index.cjs +48 -0
  1091. package/dist/NotificationList/index.cjs.map +1 -0
  1092. package/dist/NotificationList/index.d.cts +14 -0
  1093. package/dist/NotificationList/index.d.cts.map +1 -0
  1094. package/dist/NotificationList/index.d.ts +13 -8
  1095. package/dist/NotificationList/index.d.ts.map +1 -0
  1096. package/dist/NotificationList/index.js +43 -45
  1097. package/dist/NotificationList/index.js.map +1 -0
  1098. package/dist/NotificationList/typings.d.cts +20 -0
  1099. package/dist/NotificationList/typings.d.cts.map +1 -0
  1100. package/dist/NotificationList/typings.d.ts +18 -14
  1101. package/dist/NotificationList/typings.d.ts.map +1 -0
  1102. package/dist/Notifications/NotificationBell.cjs +59 -0
  1103. package/dist/Notifications/NotificationBell.cjs.map +1 -0
  1104. package/dist/Notifications/NotificationBell.js +58 -72
  1105. package/dist/Notifications/NotificationBell.js.map +1 -0
  1106. package/dist/Notifications/NotificationsContents.cjs +67 -0
  1107. package/dist/Notifications/NotificationsContents.cjs.map +1 -0
  1108. package/dist/Notifications/NotificationsContents.js +66 -85
  1109. package/dist/Notifications/NotificationsContents.js.map +1 -0
  1110. package/dist/Notifications/NotificationsDropdown.cjs +23 -0
  1111. package/dist/Notifications/NotificationsDropdown.cjs.map +1 -0
  1112. package/dist/Notifications/NotificationsDropdown.js +22 -25
  1113. package/dist/Notifications/NotificationsDropdown.js.map +1 -0
  1114. package/dist/Notifications/constants.cjs +9 -0
  1115. package/dist/Notifications/constants.cjs.map +1 -0
  1116. package/dist/Notifications/constants.js +7 -3
  1117. package/dist/Notifications/constants.js.map +1 -0
  1118. package/dist/Notifications/elements.cjs +30 -0
  1119. package/dist/Notifications/elements.cjs.map +1 -0
  1120. package/dist/Notifications/elements.js +24 -18
  1121. package/dist/Notifications/elements.js.map +1 -0
  1122. package/dist/Notifications/types.d.cts +18 -0
  1123. package/dist/Notifications/types.d.cts.map +1 -0
  1124. package/dist/Notifications/types.d.ts +17 -22
  1125. package/dist/Notifications/types.d.ts.map +1 -0
  1126. package/dist/Notifications/useHeaderNotifications.cjs +39 -0
  1127. package/dist/Notifications/useHeaderNotifications.cjs.map +1 -0
  1128. package/dist/Notifications/useHeaderNotifications.js +38 -37
  1129. package/dist/Notifications/useHeaderNotifications.js.map +1 -0
  1130. package/dist/Notifications/useNotificationButtons.cjs +46 -0
  1131. package/dist/Notifications/useNotificationButtons.cjs.map +1 -0
  1132. package/dist/Notifications/useNotificationButtons.js +45 -56
  1133. package/dist/Notifications/useNotificationButtons.js.map +1 -0
  1134. package/dist/PageAlerts/PageAlerts.cjs +60 -0
  1135. package/dist/PageAlerts/PageAlerts.cjs.map +1 -0
  1136. package/dist/PageAlerts/PageAlerts.d.cts +17 -0
  1137. package/dist/PageAlerts/PageAlerts.d.cts.map +1 -0
  1138. package/dist/PageAlerts/PageAlerts.d.ts +16 -9
  1139. package/dist/PageAlerts/PageAlerts.d.ts.map +1 -0
  1140. package/dist/PageAlerts/PageAlerts.js +56 -74
  1141. package/dist/PageAlerts/PageAlerts.js.map +1 -0
  1142. package/dist/PageAlerts/PageAlertsProvider.cjs +38 -0
  1143. package/dist/PageAlerts/PageAlertsProvider.cjs.map +1 -0
  1144. package/dist/PageAlerts/PageAlertsProvider.d.cts +16 -0
  1145. package/dist/PageAlerts/PageAlertsProvider.d.cts.map +1 -0
  1146. package/dist/PageAlerts/PageAlertsProvider.d.ts +15 -10
  1147. package/dist/PageAlerts/PageAlertsProvider.d.ts.map +1 -0
  1148. package/dist/PageAlerts/PageAlertsProvider.js +33 -33
  1149. package/dist/PageAlerts/PageAlertsProvider.js.map +1 -0
  1150. package/dist/PageAlerts/index.cjs +2 -0
  1151. package/dist/PageAlerts/index.d.ts +3 -3
  1152. package/dist/PageAlerts/index.js +2 -3
  1153. package/dist/PageAlerts/types.d.cts +19 -0
  1154. package/dist/PageAlerts/types.d.cts.map +1 -0
  1155. package/dist/PageAlerts/types.d.ts +16 -14
  1156. package/dist/PageAlerts/types.d.ts.map +1 -0
  1157. package/dist/PageLayoutWithSidebarMenu/PageLayoutWithSidebarMenu.cjs +37 -0
  1158. package/dist/PageLayoutWithSidebarMenu/PageLayoutWithSidebarMenu.cjs.map +1 -0
  1159. package/dist/PageLayoutWithSidebarMenu/PageLayoutWithSidebarMenu.d.cts +23 -0
  1160. package/dist/PageLayoutWithSidebarMenu/PageLayoutWithSidebarMenu.d.cts.map +1 -0
  1161. package/dist/PageLayoutWithSidebarMenu/PageLayoutWithSidebarMenu.d.ts +21 -17
  1162. package/dist/PageLayoutWithSidebarMenu/PageLayoutWithSidebarMenu.d.ts.map +1 -0
  1163. package/dist/PageLayoutWithSidebarMenu/PageLayoutWithSidebarMenu.js +35 -53
  1164. package/dist/PageLayoutWithSidebarMenu/PageLayoutWithSidebarMenu.js.map +1 -0
  1165. package/dist/PageLayoutWithSidebarMenu/index.cjs +1 -0
  1166. package/dist/PageLayoutWithSidebarMenu/index.d.ts +1 -1
  1167. package/dist/PageLayoutWithSidebarMenu/index.js +1 -1
  1168. package/dist/PageSection/index.cjs +50 -0
  1169. package/dist/PageSection/index.cjs.map +1 -0
  1170. package/dist/PageSection/index.d.cts +21 -0
  1171. package/dist/PageSection/index.d.cts.map +1 -0
  1172. package/dist/PageSection/index.d.ts +18 -14
  1173. package/dist/PageSection/index.d.ts.map +1 -0
  1174. package/dist/PageSection/index.js +46 -65
  1175. package/dist/PageSection/index.js.map +1 -0
  1176. package/dist/PastDue/PastDueModalContents/index.cjs +18 -0
  1177. package/dist/PastDue/PastDueModalContents/index.cjs.map +1 -0
  1178. package/dist/PastDue/PastDueModalContents/index.d.cts +13 -0
  1179. package/dist/PastDue/PastDueModalContents/index.d.cts.map +1 -0
  1180. package/dist/PastDue/PastDueModalContents/index.d.ts +12 -7
  1181. package/dist/PastDue/PastDueModalContents/index.d.ts.map +1 -0
  1182. package/dist/PastDue/PastDueModalContents/index.js +16 -30
  1183. package/dist/PastDue/PastDueModalContents/index.js.map +1 -0
  1184. package/dist/PastDue/index.cjs +2 -0
  1185. package/dist/PastDue/index.d.ts +2 -2
  1186. package/dist/PastDue/index.js +2 -2
  1187. package/dist/PastDue/pastDueMessages.cjs +49 -0
  1188. package/dist/PastDue/pastDueMessages.cjs.map +1 -0
  1189. package/dist/PastDue/pastDueMessages.d.cts +9 -0
  1190. package/dist/PastDue/pastDueMessages.d.cts.map +1 -0
  1191. package/dist/PastDue/pastDueMessages.d.ts +7 -4
  1192. package/dist/PastDue/pastDueMessages.d.ts.map +1 -0
  1193. package/dist/PastDue/pastDueMessages.js +47 -48
  1194. package/dist/PastDue/pastDueMessages.js.map +1 -0
  1195. package/dist/PausableImage/BaseImage/index.cjs +55 -0
  1196. package/dist/PausableImage/BaseImage/index.cjs.map +1 -0
  1197. package/dist/PausableImage/BaseImage/index.js +48 -53
  1198. package/dist/PausableImage/BaseImage/index.js.map +1 -0
  1199. package/dist/PausableImage/index.cjs +32 -0
  1200. package/dist/PausableImage/index.cjs.map +1 -0
  1201. package/dist/PausableImage/index.d.cts +17 -0
  1202. package/dist/PausableImage/index.d.cts.map +1 -0
  1203. package/dist/PausableImage/index.d.ts +15 -9
  1204. package/dist/PausableImage/index.d.ts.map +1 -0
  1205. package/dist/PausableImage/index.js +26 -35
  1206. package/dist/PausableImage/index.js.map +1 -0
  1207. package/dist/PlanCard/PlanCardBanner.cjs +29 -0
  1208. package/dist/PlanCard/PlanCardBanner.cjs.map +1 -0
  1209. package/dist/PlanCard/PlanCardBanner.d.cts +11 -0
  1210. package/dist/PlanCard/PlanCardBanner.d.cts.map +1 -0
  1211. package/dist/PlanCard/PlanCardBanner.d.ts +9 -5
  1212. package/dist/PlanCard/PlanCardBanner.d.ts.map +1 -0
  1213. package/dist/PlanCard/PlanCardBanner.js +25 -27
  1214. package/dist/PlanCard/PlanCardBanner.js.map +1 -0
  1215. package/dist/PlanCard/PlanFeature.cjs +72 -0
  1216. package/dist/PlanCard/PlanFeature.cjs.map +1 -0
  1217. package/dist/PlanCard/PlanFeature.js +69 -105
  1218. package/dist/PlanCard/PlanFeature.js.map +1 -0
  1219. package/dist/PlanCard/PopularBadge.cjs +18 -0
  1220. package/dist/PlanCard/PopularBadge.cjs.map +1 -0
  1221. package/dist/PlanCard/PopularBadge.js +16 -13
  1222. package/dist/PlanCard/PopularBadge.js.map +1 -0
  1223. package/dist/PlanCard/PricingAmount.cjs +85 -0
  1224. package/dist/PlanCard/PricingAmount.cjs.map +1 -0
  1225. package/dist/PlanCard/PricingAmount.js +82 -117
  1226. package/dist/PlanCard/PricingAmount.js.map +1 -0
  1227. package/dist/PlanCard/RecommendedBadge.cjs +29 -0
  1228. package/dist/PlanCard/RecommendedBadge.cjs.map +1 -0
  1229. package/dist/PlanCard/RecommendedBadge.js +27 -24
  1230. package/dist/PlanCard/RecommendedBadge.js.map +1 -0
  1231. package/dist/PlanCard/consts.cjs +221 -0
  1232. package/dist/PlanCard/consts.cjs.map +1 -0
  1233. package/dist/PlanCard/consts.js +220 -167
  1234. package/dist/PlanCard/consts.js.map +1 -0
  1235. package/dist/PlanCard/index.cjs +290 -0
  1236. package/dist/PlanCard/index.cjs.map +1 -0
  1237. package/dist/PlanCard/index.d.cts +23 -0
  1238. package/dist/PlanCard/index.d.cts.map +1 -0
  1239. package/dist/PlanCard/index.d.ts +22 -17
  1240. package/dist/PlanCard/index.d.ts.map +1 -0
  1241. package/dist/PlanCard/index.js +285 -373
  1242. package/dist/PlanCard/index.js.map +1 -0
  1243. package/dist/PlanCard/types.cjs +86 -0
  1244. package/dist/PlanCard/types.cjs.map +1 -0
  1245. package/dist/PlanCard/types.d.cts +44 -0
  1246. package/dist/PlanCard/types.d.cts.map +1 -0
  1247. package/dist/PlanCard/types.d.ts +42 -38
  1248. package/dist/PlanCard/types.d.ts.map +1 -0
  1249. package/dist/PlanCard/types.js +69 -71
  1250. package/dist/PlanCard/types.js.map +1 -0
  1251. package/dist/PlanCardTeams/consts.cjs +23 -0
  1252. package/dist/PlanCardTeams/consts.cjs.map +1 -0
  1253. package/dist/PlanCardTeams/consts.js +22 -8
  1254. package/dist/PlanCardTeams/consts.js.map +1 -0
  1255. package/dist/PlanCardTeams/index.cjs +112 -0
  1256. package/dist/PlanCardTeams/index.cjs.map +1 -0
  1257. package/dist/PlanCardTeams/index.d.cts +13 -0
  1258. package/dist/PlanCardTeams/index.d.cts.map +1 -0
  1259. package/dist/PlanCardTeams/index.d.ts +12 -7
  1260. package/dist/PlanCardTeams/index.d.ts.map +1 -0
  1261. package/dist/PlanCardTeams/index.js +108 -166
  1262. package/dist/PlanCardTeams/index.js.map +1 -0
  1263. package/dist/PricingSection/ConditionalColorMode.cjs +11 -0
  1264. package/dist/PricingSection/ConditionalColorMode.cjs.map +1 -0
  1265. package/dist/PricingSection/ConditionalColorMode.js +10 -13
  1266. package/dist/PricingSection/ConditionalColorMode.js.map +1 -0
  1267. package/dist/PricingSection/PricingCard/PricingAmount.cjs +82 -0
  1268. package/dist/PricingSection/PricingCard/PricingAmount.cjs.map +1 -0
  1269. package/dist/PricingSection/PricingCard/PricingAmount.js +79 -115
  1270. package/dist/PricingSection/PricingCard/PricingAmount.js.map +1 -0
  1271. package/dist/PricingSection/PricingCard/RecommendedBadge.cjs +28 -0
  1272. package/dist/PricingSection/PricingCard/RecommendedBadge.cjs.map +1 -0
  1273. package/dist/PricingSection/PricingCard/RecommendedBadge.js +27 -24
  1274. package/dist/PricingSection/PricingCard/RecommendedBadge.js.map +1 -0
  1275. package/dist/PricingSection/PricingCard/index.cjs +149 -0
  1276. package/dist/PricingSection/PricingCard/index.cjs.map +1 -0
  1277. package/dist/PricingSection/PricingCard/index.js +142 -197
  1278. package/dist/PricingSection/PricingCard/index.js.map +1 -0
  1279. package/dist/PricingSection/PricingCard/types.cjs +68 -0
  1280. package/dist/PricingSection/PricingCard/types.cjs.map +1 -0
  1281. package/dist/PricingSection/PricingCard/types.d.cts +27 -0
  1282. package/dist/PricingSection/PricingCard/types.d.cts.map +1 -0
  1283. package/dist/PricingSection/PricingCard/types.d.ts +25 -38
  1284. package/dist/PricingSection/PricingCard/types.d.ts.map +1 -0
  1285. package/dist/PricingSection/PricingCard/types.js +65 -61
  1286. package/dist/PricingSection/PricingCard/types.js.map +1 -0
  1287. package/dist/PricingSection/ProductCTA.cjs +96 -0
  1288. package/dist/PricingSection/ProductCTA.cjs.map +1 -0
  1289. package/dist/PricingSection/ProductCTA.js +93 -133
  1290. package/dist/PricingSection/ProductCTA.js.map +1 -0
  1291. package/dist/PricingSection/Products.cjs +90 -0
  1292. package/dist/PricingSection/Products.cjs.map +1 -0
  1293. package/dist/PricingSection/Products.js +89 -92
  1294. package/dist/PricingSection/Products.js.map +1 -0
  1295. package/dist/PricingSection/config.cjs +34 -0
  1296. package/dist/PricingSection/config.cjs.map +1 -0
  1297. package/dist/PricingSection/config.js +30 -36
  1298. package/dist/PricingSection/config.js.map +1 -0
  1299. package/dist/PricingSection/index.cjs +32 -0
  1300. package/dist/PricingSection/index.cjs.map +1 -0
  1301. package/dist/PricingSection/index.d.cts +23 -0
  1302. package/dist/PricingSection/index.d.cts.map +1 -0
  1303. package/dist/PricingSection/index.d.ts +21 -14
  1304. package/dist/PricingSection/index.d.ts.map +1 -0
  1305. package/dist/PricingSection/index.js +31 -41
  1306. package/dist/PricingSection/index.js.map +1 -0
  1307. package/dist/PricingSection/types.cjs +20 -0
  1308. package/dist/PricingSection/types.cjs.map +1 -0
  1309. package/dist/PricingSection/types.d.cts +18 -0
  1310. package/dist/PricingSection/types.d.cts.map +1 -0
  1311. package/dist/PricingSection/types.d.ts +16 -29
  1312. package/dist/PricingSection/types.d.ts.map +1 -0
  1313. package/dist/PricingSection/types.js +14 -9
  1314. package/dist/PricingSection/types.js.map +1 -0
  1315. package/dist/ProLogoAlt/index.cjs +26 -0
  1316. package/dist/ProLogoAlt/index.cjs.map +1 -0
  1317. package/dist/ProLogoAlt/index.d.cts +14 -0
  1318. package/dist/ProLogoAlt/index.d.cts.map +1 -0
  1319. package/dist/ProLogoAlt/index.d.ts +13 -8
  1320. package/dist/ProLogoAlt/index.d.ts.map +1 -0
  1321. package/dist/ProLogoAlt/index.js +24 -26
  1322. package/dist/ProLogoAlt/index.js.map +1 -0
  1323. package/dist/ProductFeatureShowcase/index.cjs +85 -0
  1324. package/dist/ProductFeatureShowcase/index.cjs.map +1 -0
  1325. package/dist/ProductFeatureShowcase/index.d.cts +20 -0
  1326. package/dist/ProductFeatureShowcase/index.d.cts.map +1 -0
  1327. package/dist/ProductFeatureShowcase/index.d.ts +19 -15
  1328. package/dist/ProductFeatureShowcase/index.d.ts.map +1 -0
  1329. package/dist/ProductFeatureShowcase/index.js +83 -120
  1330. package/dist/ProductFeatureShowcase/index.js.map +1 -0
  1331. package/dist/QuizScore/index.cjs +67 -0
  1332. package/dist/QuizScore/index.cjs.map +1 -0
  1333. package/dist/QuizScore/index.js +65 -84
  1334. package/dist/QuizScore/index.js.map +1 -0
  1335. package/dist/RatingsBar/index.cjs +36 -0
  1336. package/dist/RatingsBar/index.cjs.map +1 -0
  1337. package/dist/RatingsBar/index.d.cts +17 -0
  1338. package/dist/RatingsBar/index.d.cts.map +1 -0
  1339. package/dist/RatingsBar/index.d.ts +16 -11
  1340. package/dist/RatingsBar/index.d.ts.map +1 -0
  1341. package/dist/RatingsBar/index.js +33 -34
  1342. package/dist/RatingsBar/index.js.map +1 -0
  1343. package/dist/Recurly/context/NoProvider.cjs +12 -0
  1344. package/dist/Recurly/context/NoProvider.cjs.map +1 -0
  1345. package/dist/Recurly/context/NoProvider.js +10 -6
  1346. package/dist/Recurly/context/NoProvider.js.map +1 -0
  1347. package/dist/Recurly/context/elements/index.cjs +40 -0
  1348. package/dist/Recurly/context/elements/index.cjs.map +1 -0
  1349. package/dist/Recurly/context/elements/index.d.cts +15 -0
  1350. package/dist/Recurly/context/elements/index.d.cts.map +1 -0
  1351. package/dist/Recurly/context/elements/index.d.ts +10 -21
  1352. package/dist/Recurly/context/elements/index.d.ts.map +1 -0
  1353. package/dist/Recurly/context/elements/index.js +34 -42
  1354. package/dist/Recurly/context/elements/index.js.map +1 -0
  1355. package/dist/Recurly/context/index.cjs +2 -0
  1356. package/dist/Recurly/context/index.d.ts +2 -2
  1357. package/dist/Recurly/context/index.js +2 -2
  1358. package/dist/Recurly/context/recurly/index.cjs +44 -0
  1359. package/dist/Recurly/context/recurly/index.cjs.map +1 -0
  1360. package/dist/Recurly/context/recurly/index.d.cts +39 -0
  1361. package/dist/Recurly/context/recurly/index.d.cts.map +1 -0
  1362. package/dist/Recurly/context/recurly/index.d.ts +16 -7
  1363. package/dist/Recurly/context/recurly/index.d.ts.map +1 -0
  1364. package/dist/Recurly/context/recurly/index.js +39 -47
  1365. package/dist/Recurly/context/recurly/index.js.map +1 -0
  1366. package/dist/Recurly/context/recurly/loadRecurly.cjs +22 -0
  1367. package/dist/Recurly/context/recurly/loadRecurly.cjs.map +1 -0
  1368. package/dist/Recurly/context/recurly/loadRecurly.d.cts +10 -0
  1369. package/dist/Recurly/context/recurly/loadRecurly.d.cts.map +1 -0
  1370. package/dist/Recurly/context/recurly/loadRecurly.d.ts +9 -5
  1371. package/dist/Recurly/context/recurly/loadRecurly.d.ts.map +1 -0
  1372. package/dist/Recurly/context/recurly/loadRecurly.js +22 -22
  1373. package/dist/Recurly/context/recurly/loadRecurly.js.map +1 -0
  1374. package/dist/Recurly/context/recurly/w.cjs +7 -0
  1375. package/dist/Recurly/context/recurly/w.cjs.map +1 -0
  1376. package/dist/Recurly/context/recurly/w.js +5 -3
  1377. package/dist/Recurly/context/recurly/w.js.map +1 -0
  1378. package/dist/Recurly/fields/RecurlyField.cjs +40 -0
  1379. package/dist/Recurly/fields/RecurlyField.cjs.map +1 -0
  1380. package/dist/Recurly/fields/RecurlyField.d.cts +19 -0
  1381. package/dist/Recurly/fields/RecurlyField.d.cts.map +1 -0
  1382. package/dist/Recurly/fields/RecurlyField.d.ts +14 -4
  1383. package/dist/Recurly/fields/RecurlyField.d.ts.map +1 -0
  1384. package/dist/Recurly/fields/RecurlyField.js +36 -55
  1385. package/dist/Recurly/fields/RecurlyField.js.map +1 -0
  1386. package/dist/Recurly/fields/elements.cjs +64 -0
  1387. package/dist/Recurly/fields/elements.cjs.map +1 -0
  1388. package/dist/Recurly/fields/elements.d.cts +23 -0
  1389. package/dist/Recurly/fields/elements.d.cts.map +1 -0
  1390. package/dist/Recurly/fields/elements.d.ts +21 -15
  1391. package/dist/Recurly/fields/elements.d.ts.map +1 -0
  1392. package/dist/Recurly/fields/elements.js +50 -96
  1393. package/dist/Recurly/fields/elements.js.map +1 -0
  1394. package/dist/Recurly/fields/index.cjs +2 -0
  1395. package/dist/Recurly/fields/index.d.ts +2 -2
  1396. package/dist/Recurly/fields/index.js +2 -2
  1397. package/dist/Recurly/index.cjs +6 -0
  1398. package/dist/Recurly/index.d.ts +6 -2
  1399. package/dist/Recurly/index.js +6 -2
  1400. package/dist/ResourceCard/index.cjs +58 -0
  1401. package/dist/ResourceCard/index.cjs.map +1 -0
  1402. package/dist/ResourceCard/index.d.cts +20 -0
  1403. package/dist/ResourceCard/index.d.cts.map +1 -0
  1404. package/dist/ResourceCard/index.d.ts +18 -13
  1405. package/dist/ResourceCard/index.d.ts.map +1 -0
  1406. package/dist/ResourceCard/index.js +51 -59
  1407. package/dist/ResourceCard/index.js.map +1 -0
  1408. package/dist/ScoreSummary/SubScores.cjs +109 -0
  1409. package/dist/ScoreSummary/SubScores.cjs.map +1 -0
  1410. package/dist/ScoreSummary/SubScores.d.cts +41 -0
  1411. package/dist/ScoreSummary/SubScores.d.cts.map +1 -0
  1412. package/dist/ScoreSummary/SubScores.d.ts +39 -26
  1413. package/dist/ScoreSummary/SubScores.d.ts.map +1 -0
  1414. package/dist/ScoreSummary/SubScores.js +106 -164
  1415. package/dist/ScoreSummary/SubScores.js.map +1 -0
  1416. package/dist/ScoreSummary/helpers.cjs +21 -0
  1417. package/dist/ScoreSummary/helpers.cjs.map +1 -0
  1418. package/dist/ScoreSummary/helpers.js +18 -19
  1419. package/dist/ScoreSummary/helpers.js.map +1 -0
  1420. package/dist/ScoreSummary/index.cjs +89 -0
  1421. package/dist/ScoreSummary/index.cjs.map +1 -0
  1422. package/dist/ScoreSummary/index.d.cts +26 -0
  1423. package/dist/ScoreSummary/index.d.cts.map +1 -0
  1424. package/dist/ScoreSummary/index.d.ts +25 -20
  1425. package/dist/ScoreSummary/index.d.ts.map +1 -0
  1426. package/dist/ScoreSummary/index.js +87 -108
  1427. package/dist/ScoreSummary/index.js.map +1 -0
  1428. package/dist/ScoreSummary/types.d.cts +314 -0
  1429. package/dist/ScoreSummary/types.d.cts.map +1 -0
  1430. package/dist/ScoreSummary/types.d.ts +309 -305
  1431. package/dist/ScoreSummary/types.d.ts.map +1 -0
  1432. package/dist/SkillPathCard/index.cjs +33 -0
  1433. package/dist/SkillPathCard/index.cjs.map +1 -0
  1434. package/dist/SkillPathCard/index.d.cts +26 -0
  1435. package/dist/SkillPathCard/index.d.cts.map +1 -0
  1436. package/dist/SkillPathCard/index.d.ts +25 -19
  1437. package/dist/SkillPathCard/index.d.ts.map +1 -0
  1438. package/dist/SkillPathCard/index.js +32 -46
  1439. package/dist/SkillPathCard/index.js.map +1 -0
  1440. package/dist/SocialMediaSharing/SocialShareIconLink.cjs +42 -0
  1441. package/dist/SocialMediaSharing/SocialShareIconLink.cjs.map +1 -0
  1442. package/dist/SocialMediaSharing/SocialShareIconLink.d.cts +10 -0
  1443. package/dist/SocialMediaSharing/SocialShareIconLink.d.cts.map +1 -0
  1444. package/dist/SocialMediaSharing/SocialShareIconLink.d.ts +10 -12
  1445. package/dist/SocialMediaSharing/SocialShareIconLink.d.ts.map +1 -0
  1446. package/dist/SocialMediaSharing/SocialShareIconLink.js +38 -48
  1447. package/dist/SocialMediaSharing/SocialShareIconLink.js.map +1 -0
  1448. package/dist/SocialMediaSharing/index.cjs +84 -0
  1449. package/dist/SocialMediaSharing/index.cjs.map +1 -0
  1450. package/dist/SocialMediaSharing/index.d.cts +65 -0
  1451. package/dist/SocialMediaSharing/index.d.cts.map +1 -0
  1452. package/dist/SocialMediaSharing/index.d.ts +60 -44
  1453. package/dist/SocialMediaSharing/index.d.ts.map +1 -0
  1454. package/dist/SocialMediaSharing/index.js +78 -114
  1455. package/dist/SocialMediaSharing/index.js.map +1 -0
  1456. package/dist/SocialMediaSharingDropdown/index.cjs +94 -0
  1457. package/dist/SocialMediaSharingDropdown/index.cjs.map +1 -0
  1458. package/dist/SocialMediaSharingDropdown/index.d.cts +20 -0
  1459. package/dist/SocialMediaSharingDropdown/index.d.cts.map +1 -0
  1460. package/dist/SocialMediaSharingDropdown/index.d.ts +19 -14
  1461. package/dist/SocialMediaSharingDropdown/index.d.ts.map +1 -0
  1462. package/dist/SocialMediaSharingDropdown/index.js +91 -110
  1463. package/dist/SocialMediaSharingDropdown/index.js.map +1 -0
  1464. package/dist/Testimonial/index.cjs +131 -0
  1465. package/dist/Testimonial/index.cjs.map +1 -0
  1466. package/dist/Testimonial/index.d.cts +54 -0
  1467. package/dist/Testimonial/index.d.cts.map +1 -0
  1468. package/dist/Testimonial/index.d.ts +51 -42
  1469. package/dist/Testimonial/index.d.ts.map +1 -0
  1470. package/dist/Testimonial/index.js +117 -151
  1471. package/dist/Testimonial/index.js.map +1 -0
  1472. package/dist/_virtual/_rolldown/runtime.cjs +43 -0
  1473. package/dist/_virtual/_rolldown/runtime.js +18 -0
  1474. package/dist/assets/navyQuotes.cjs +12 -0
  1475. package/dist/assets/navyQuotes.cjs.map +1 -0
  1476. package/dist/assets/navyQuotes.js +6 -0
  1477. package/dist/assets/navyQuotes.js.map +1 -0
  1478. package/dist/index.cjs +319 -0
  1479. package/dist/index.d.cts +114 -0
  1480. package/dist/index.d.ts +124 -89
  1481. package/dist/index.js +118 -86
  1482. package/dist/lib/breakpointHooks/index.cjs +61 -0
  1483. package/dist/lib/breakpointHooks/index.cjs.map +1 -0
  1484. package/dist/lib/breakpointHooks/index.d.cts +47 -0
  1485. package/dist/lib/breakpointHooks/index.d.cts.map +1 -0
  1486. package/dist/lib/breakpointHooks/index.d.ts +11 -7
  1487. package/dist/lib/breakpointHooks/index.d.ts.map +1 -0
  1488. package/dist/lib/breakpointHooks/index.js +48 -53
  1489. package/dist/lib/breakpointHooks/index.js.map +1 -0
  1490. package/dist/lib/catalogList/index.cjs +30 -0
  1491. package/dist/lib/catalogList/index.cjs.map +1 -0
  1492. package/dist/lib/catalogList/index.js +30 -61
  1493. package/dist/lib/catalogList/index.js.map +1 -0
  1494. package/dist/lib/resourcesList/index.cjs +73 -0
  1495. package/dist/lib/resourcesList/index.cjs.map +1 -0
  1496. package/dist/lib/resourcesList/index.js +71 -237
  1497. package/dist/lib/resourcesList/index.js.map +1 -0
  1498. package/dist/remoteAssets/components.cjs +7 -0
  1499. package/dist/remoteAssets/components.cjs.map +1 -0
  1500. package/dist/remoteAssets/components.js +6 -1
  1501. package/dist/remoteAssets/components.js.map +1 -0
  1502. package/package.json +18 -6
  1503. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/MarketingBanner.d.ts +0 -13
  1504. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/NavPanels.d.ts +0 -8
  1505. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/consts.d.ts +0 -17
  1506. package/dist/AppHeader/AppHeaderElements/AppHeaderDietCard/index.d.ts +0 -11
  1507. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdownProvider/index.d.ts +0 -13
  1508. package/dist/AppHeader/AppHeaderElements/AppHeaderFeatureCard/index.d.ts +0 -4
  1509. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/elements.d.ts +0 -42
  1510. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/index.d.ts +0 -8
  1511. package/dist/AppHeader/AppHeaderElements/AppHeaderListItem/index.d.ts +0 -14
  1512. package/dist/AppHeader/AppHeaderElements/AppHeaderMenuProvider/index.d.ts +0 -14
  1513. package/dist/AppHeader/AppHeaderElements/AppHeaderNavButton/index.d.ts +0 -12
  1514. package/dist/AppHeader/AppHeaderElements/AppHeaderProvider/index.d.ts +0 -10
  1515. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/NavPanels.d.ts +0 -10
  1516. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/consts.d.ts +0 -18
  1517. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/AppHeaderSectionContext.d.ts +0 -7
  1518. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/MobileBackButton.d.ts +0 -6
  1519. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/MobileNavMenu.d.ts +0 -11
  1520. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/NavTabs.d.ts +0 -20
  1521. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/PanelLayout.d.ts +0 -9
  1522. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/elements.d.ts +0 -88
  1523. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/index.d.ts +0 -24
  1524. package/dist/AppHeader/AppHeaderElements/AppHeaderSkillTile/index.d.ts +0 -6
  1525. package/dist/AppHeader/Search/DefaultResults.d.ts +0 -10
  1526. package/dist/AppHeader/Search/QuizAndHelpCenterLinks.d.ts +0 -7
  1527. package/dist/AppHeader/Search/SearchButton.d.ts +0 -2
  1528. package/dist/AppHeader/Search/SearchPane.d.ts +0 -6
  1529. package/dist/AppHeader/Search/SearchTrackingProvider/index.d.ts +0 -17
  1530. package/dist/AppHeader/Search/SearchWorker/PromiseLookup.d.ts +0 -18
  1531. package/dist/AppHeader/Search/SearchWorker/src.d.ts +0 -1
  1532. package/dist/AppHeader/Search/SearchWorker/worker.d.ts +0 -2
  1533. package/dist/AppHeader/Search/hooks/useUrlChangeDetection.d.ts +0 -5
  1534. package/dist/AppHeader/Search/safelyRedirect.d.ts +0 -5
  1535. package/dist/AppHeader/Search/types.js +0 -1
  1536. package/dist/AppHeader/Search/useHeaderSearch.d.ts +0 -6
  1537. package/dist/AppHeader/shared/mockAppHeaderItems.js +0 -10
  1538. package/dist/AppHeader/shared/utils.d.ts +0 -14
  1539. package/dist/AppHeader/utils/types.d.ts +0 -8
  1540. package/dist/AppHeader/utils/types.js +0 -1
  1541. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/elements.d.ts +0 -13
  1542. package/dist/AppHeaderMobile/AppHeaderSubMenuTarget/index.d.ts +0 -7
  1543. package/dist/Avatar/Avatar.stories.js +0 -15
  1544. package/dist/Carousel/elements.d.ts +0 -27
  1545. package/dist/CertificationPathCard/__tests__/__fixtures__/index.d.ts +0 -2
  1546. package/dist/CommunityEventCard/EventTypeIcon.d.ts +0 -11
  1547. package/dist/ContentGroupBaseCard/shared.d.ts +0 -7
  1548. package/dist/CourseCard/__tests__/__fixtures__/index.d.ts +0 -3
  1549. package/dist/CurriculumCard/Footer/index.d.ts +0 -10
  1550. package/dist/CurriculumCard/Image/index.d.ts +0 -9
  1551. package/dist/CurriculumCard/Subtitle/helpers.d.ts +0 -1
  1552. package/dist/DropdownButton/useDynamicPopoverPosition.d.ts +0 -14
  1553. package/dist/DropdownButton/useDynamicPopoverPosition.test.js +0 -85
  1554. package/dist/GlobalFooter/FooterHeading.d.ts +0 -9
  1555. package/dist/GlobalFooter/FooterLegal/LegalLinks.d.ts +0 -6
  1556. package/dist/GlobalFooter/FooterLegal/MadeIn.d.ts +0 -5
  1557. package/dist/GlobalFooter/FooterLegal/index.d.ts +0 -7
  1558. package/dist/GlobalFooter/FooterLinks.d.ts +0 -18
  1559. package/dist/GlobalFooter/FooterNavLinks/CatalogLinks.d.ts +0 -7
  1560. package/dist/GlobalFooter/FooterNavLinks/CompanyLinks.d.ts +0 -11
  1561. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferAFriendLinkWithModal.d.ts +0 -7
  1562. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralFields.d.ts +0 -2
  1563. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralForm.d.ts +0 -4
  1564. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralLinkSocialMediaSharing.d.ts +0 -3
  1565. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/types.js +0 -1
  1566. package/dist/GlobalFooter/FooterNavLinks/SocialMediaLinks.d.ts +0 -2
  1567. package/dist/GlobalFooter/FooterNavLinks/index.d.ts +0 -4
  1568. package/dist/GlobalFooter/FooterSubHeading.d.ts +0 -9
  1569. package/dist/GlobalFooter/FooterSubHeading.js +0 -22
  1570. package/dist/GlobalFooter/types.js +0 -1
  1571. package/dist/GlobalHeader/GlobalHeaderItems.d.ts +0 -28
  1572. package/dist/GlobalHeader/GlobalHeaderVariants.d.ts +0 -83
  1573. package/dist/GlobalHeader/context.d.ts +0 -34
  1574. package/dist/GlobalHeader/types.js +0 -1
  1575. package/dist/GlobalHeader/urlHelpers.d.ts +0 -2
  1576. package/dist/Grid/GridCollapse.test.js +0 -96
  1577. package/dist/HeaderHeightArea/index.d.ts +0 -9
  1578. package/dist/HeaderHeightArea/useIsInHeaderRegion.d.ts +0 -1
  1579. package/dist/InstructorCard/__tests__/__fixtures__/index.d.ts +0 -2
  1580. package/dist/LandingPage/types.js +0 -1
  1581. package/dist/LayoutMenu/LayoutMenuSection.d.ts +0 -16
  1582. package/dist/LayoutMenuVariant/LayoutMenuSection.d.ts +0 -10
  1583. package/dist/LearningOutcomeAssessmentScores/AssessmentDetail.d.ts +0 -8
  1584. package/dist/LearningOutcomeFlyout/LearningOutcomeCardList.d.ts +0 -7
  1585. package/dist/LearningOutcomePopover/index.d.ts +0 -10
  1586. package/dist/LearningOutcomeTile/Tile.d.ts +0 -7
  1587. package/dist/Logos/ProLabel/ProLabelCutout/index.d.ts +0 -8
  1588. package/dist/Logos/ProLabel/ProLabelCutoutTransparent/index.d.ts +0 -7
  1589. package/dist/NotificationList/EmptyNotification/emptyNotificationContents.d.ts +0 -7
  1590. package/dist/NotificationList/EmptyNotification/index.d.ts +0 -1
  1591. package/dist/NotificationList/typings.js +0 -1
  1592. package/dist/Notifications/NotificationBell.d.ts +0 -10
  1593. package/dist/Notifications/NotificationsContents.d.ts +0 -3
  1594. package/dist/Notifications/NotificationsDropdown.d.ts +0 -2
  1595. package/dist/Notifications/__fixtures__/NotificationTestComponent.d.ts +0 -2
  1596. package/dist/Notifications/__fixtures__/NotificationTestComponent.js +0 -12
  1597. package/dist/Notifications/__fixtures__/stubs.d.ts +0 -2
  1598. package/dist/Notifications/__fixtures__/stubs.js +0 -8
  1599. package/dist/Notifications/constants.d.ts +0 -4
  1600. package/dist/Notifications/elements.d.ts +0 -12
  1601. package/dist/Notifications/types.js +0 -1
  1602. package/dist/Notifications/useHeaderNotifications.d.ts +0 -10
  1603. package/dist/Notifications/useNotificationButtons.d.ts +0 -9
  1604. package/dist/PageAlerts/types.js +0 -1
  1605. package/dist/PausableImage/BaseImage/index.d.ts +0 -15
  1606. package/dist/PlanCard/PlanFeature.d.ts +0 -10
  1607. package/dist/PlanCard/PopularBadge.d.ts +0 -3
  1608. package/dist/PlanCard/PricingAmount.d.ts +0 -14
  1609. package/dist/PlanCard/RecommendedBadge.d.ts +0 -3
  1610. package/dist/PlanCard/consts.d.ts +0 -15
  1611. package/dist/PlanCardTeams/consts.d.ts +0 -9
  1612. package/dist/PricingSection/ConditionalColorMode.d.ts +0 -4
  1613. package/dist/PricingSection/PricingCard/PricingAmount.d.ts +0 -14
  1614. package/dist/PricingSection/PricingCard/RecommendedBadge.d.ts +0 -3
  1615. package/dist/PricingSection/PricingCard/consts.d.ts +0 -14
  1616. package/dist/PricingSection/PricingCard/consts.js +0 -96
  1617. package/dist/PricingSection/PricingCard/index.d.ts +0 -16
  1618. package/dist/PricingSection/ProductCTA.d.ts +0 -12
  1619. package/dist/PricingSection/Products.d.ts +0 -15
  1620. package/dist/PricingSection/config.d.ts +0 -8
  1621. package/dist/QuizScore/index.d.ts +0 -12
  1622. package/dist/Recurly/context/NoProvider.d.ts +0 -8
  1623. package/dist/Recurly/context/recurly/w.d.ts +0 -14
  1624. package/dist/Recurly/fields/elements.test.js +0 -79
  1625. package/dist/ScoreSummary/helpers.d.ts +0 -11
  1626. package/dist/ScoreSummary/types.js +0 -1
  1627. package/dist/SkillPathCard/__tests__/__fixtures__/index.d.ts +0 -2
  1628. package/dist/SocialMediaSharingDropdown/__tests__/SocialMediaSharingDropdown-test.d.ts +0 -1
  1629. package/dist/assets/darkQuotes.svg +0 -1
  1630. package/dist/assets/lightQuotes.svg +0 -1
  1631. package/dist/assets/orange_squiggle.svg +0 -1
  1632. package/dist/lib/catalogList/index.d.ts +0 -3
  1633. package/dist/lib/resourcesList/index.d.ts +0 -5
  1634. package/dist/png.d.ts +0 -4
  1635. package/dist/react-freezeframe.d.ts +0 -1
  1636. package/dist/remoteAssets/components.d.ts +0 -1
  1637. package/dist/stories/Atoms/Avatar.stories.js +0 -16
  1638. package/dist/stories/Atoms/BetaSticker.stories.js +0 -21
  1639. package/dist/stories/Atoms/Logos/LogoCodecademy.stories.js +0 -8
  1640. package/dist/stories/Atoms/Logos/LogoCodecademyMini.stories.js +0 -8
  1641. package/dist/stories/Atoms/Logos/LogoCodecademyPro.stories.js +0 -8
  1642. package/dist/stories/Atoms/Logos/LogoCodecademyTeams.stories.js +0 -8
  1643. package/dist/stories/Atoms/Logos/LogoFromSkillsoft.stories.js +0 -9
  1644. package/dist/stories/Atoms/Logos/LogoLXStudio.stories.js +0 -11
  1645. package/dist/stories/Atoms/Logos/ProLabel.stories.js +0 -29
  1646. package/dist/stories/Atoms/RatingsBar.stories.js +0 -16
  1647. package/dist/stories/Atoms/Subgrid.stories.js +0 -87
  1648. package/dist/stories/Molecules/AppBar.stories.js +0 -31
  1649. package/dist/stories/Molecules/AppHeader/AppHeader.stories.js +0 -84
  1650. package/dist/stories/Molecules/AppHeader/AppHeaderDropdown.stories.js +0 -67
  1651. package/dist/stories/Molecules/AppHeader/AppHeaderLink.stories.js +0 -50
  1652. package/dist/stories/Molecules/AppHeader/AppHeaderLogo.stories.js +0 -43
  1653. package/dist/stories/Molecules/AppHeader/AppHeaderMainMenuMobile.stories.js +0 -34
  1654. package/dist/stories/Molecules/AppHeader/AppHeaderMobile.stories.js +0 -40
  1655. package/dist/stories/Molecules/AppHeader/AppHeaderSubMenuMobile.stories.js +0 -25
  1656. package/dist/stories/Molecules/AppHeader/LXStudioHeader.stories.js +0 -176
  1657. package/dist/stories/Molecules/AppHeader/LXStudioMobileHeader.stories.js +0 -84
  1658. package/dist/stories/Molecules/AppHeader/MockAppHeaderElements.d.ts +0 -5
  1659. package/dist/stories/Molecules/AppHeader/MockAppHeaderElements.js +0 -90
  1660. package/dist/stories/Molecules/AvatarChooser.stories.js +0 -22
  1661. package/dist/stories/Molecules/BackToTopAnchor.stories.js +0 -51
  1662. package/dist/stories/Molecules/Banner.stories.js +0 -112
  1663. package/dist/stories/Molecules/Carousel.stories.js +0 -47
  1664. package/dist/stories/Molecules/ContentGroupBaseCard.stories.js +0 -175
  1665. package/dist/stories/Molecules/CurriculumCard.stories.js +0 -201
  1666. package/dist/stories/Molecules/CurriculumCards/CareerPathCard.stories.js +0 -94
  1667. package/dist/stories/Molecules/CurriculumCards/CertificationPathCard.stories.js +0 -67
  1668. package/dist/stories/Molecules/CurriculumCards/CourseCard.stories.js +0 -85
  1669. package/dist/stories/Molecules/CurriculumCards/LoadingCurriculumCard.stories.js +0 -20
  1670. package/dist/stories/Molecules/CurriculumCards/SkillPathCard.stories.js +0 -92
  1671. package/dist/stories/Molecules/DropdownButton.stories.js +0 -207
  1672. package/dist/stories/Molecules/EmptySection.stories.js +0 -167
  1673. package/dist/stories/Molecules/EnhancedBanner.stories.js +0 -104
  1674. package/dist/stories/Molecules/ErrorContents.stories.js +0 -19
  1675. package/dist/stories/Molecules/GridCollapse.stories.js +0 -42
  1676. package/dist/stories/Molecules/HorizontalScrollMenu.examples.d.ts +0 -1
  1677. package/dist/stories/Molecules/HorizontalScrollMenu.examples.js +0 -67
  1678. package/dist/stories/Molecules/HorizontalScrollMenu.stories.js +0 -11
  1679. package/dist/stories/Molecules/HubCard.stories.js +0 -27
  1680. package/dist/stories/Molecules/InfoCard.stories.js +0 -30
  1681. package/dist/stories/Molecules/InstructorCard.stories.js +0 -125
  1682. package/dist/stories/Molecules/LearningOutcomeAssessmentScores.stories.js +0 -23
  1683. package/dist/stories/Molecules/LearningOutcomeCard.stories.js +0 -189
  1684. package/dist/stories/Molecules/LearningOutcomeFlyout.stories.js +0 -62
  1685. package/dist/stories/Molecules/LearningOutcomeLevelBadge.stories.js +0 -20
  1686. package/dist/stories/Molecules/LearningOutcomeLowAssessmentBadge.stories.js +0 -10
  1687. package/dist/stories/Molecules/LearningOutcomePopover.stories.js +0 -39
  1688. package/dist/stories/Molecules/LearningOutcomeTile.stories.js +0 -276
  1689. package/dist/stories/Molecules/ListSection.stories.js +0 -97
  1690. package/dist/stories/Molecules/Loading.stories.js +0 -10
  1691. package/dist/stories/Molecules/NotificationList.stories.js +0 -99
  1692. package/dist/stories/Molecules/PageSection.stories.js +0 -67
  1693. package/dist/stories/Molecules/PastDueModalContents.stories.js +0 -62
  1694. package/dist/stories/Molecules/PausableImage.stories.js +0 -16
  1695. package/dist/stories/Molecules/Recurly.stories.js +0 -56
  1696. package/dist/stories/Molecules/ResourceCard.stories.js +0 -18
  1697. package/dist/stories/Molecules/SocialMediaSharing.stories.js +0 -20
  1698. package/dist/stories/Molecules/SocialMediaSharingDropdown.stories.js +0 -20
  1699. package/dist/stories/Molecules/Testimonial.stories.js +0 -59
  1700. package/dist/stories/Organisms/GlobalFooter.stories.js +0 -28
  1701. package/dist/stories/Organisms/GlobalHeader/About.stories.js +0 -133
  1702. package/dist/stories/Organisms/GlobalHeader/Anon.stories.js +0 -71
  1703. package/dist/stories/Organisms/GlobalHeader/Bootcamp.stories.js +0 -29
  1704. package/dist/stories/Organisms/GlobalHeader/Enterprise.stories.js +0 -105
  1705. package/dist/stories/Organisms/GlobalHeader/Free.stories.js +0 -131
  1706. package/dist/stories/Organisms/GlobalHeader/Pro.stories.js +0 -197
  1707. package/dist/stories/Organisms/GlobalHeader/Simple.stories.js +0 -28
  1708. package/dist/stories/Organisms/GlobalPage.stories.js +0 -138
  1709. package/dist/stories/Organisms/LayoutMenu.stories.js +0 -239
  1710. package/dist/stories/Organisms/LayoutMenuVariant.stories.js +0 -222
  1711. package/dist/stories/Organisms/PageAlerts.example.d.ts +0 -2
  1712. package/dist/stories/Organisms/PageAlerts.example.js +0 -42
  1713. package/dist/stories/Organisms/PageAlerts.stories.js +0 -15
  1714. package/dist/stories/Organisms/PageLayoutWithSidebarMenu.stories.js +0 -34
  1715. package/dist/stories/Organisms/PlanCard.stories.js +0 -98
  1716. package/dist/stories/Organisms/PlanCardTeams.stories.js +0 -27
  1717. package/dist/stories/Organisms/ScoreSummary.stories.js +0 -295
  1718. package/dist/svg.d.ts +0 -7
  1719. package/dist/theme.d.ts +0 -5
  1720. /package/dist/{NotFoundContent/404.svg → assets/404-D8snV7Lj.svg} +0 -0
  1721. /package/dist/{GlobalFooter/FooterNavLinks/assets/download-on-the-app-store.svg → assets/download-on-the-app-store-87XvXmEX.svg} +0 -0
  1722. /package/dist/{GlobalFooter/FooterNavLinks/assets/get-it-on-google-play.png → assets/get-it-on-google-play-cFfTb9QO.png} +0 -0
  1723. /package/dist/assets/{navyQuotes.svg → navyQuotes-Cfst7AwB.svg} +0 -0
@@ -0,0 +1,472 @@
1
+ const require_runtime = require('../../_virtual/_rolldown/runtime.cjs');
2
+ const require_keyboardNav = require('../shared/keyboardNav.cjs');
3
+ require('../shared/index.cjs');
4
+ const require_index$1 = require('./SearchTrackingProvider/index.cjs');
5
+ const require_context = require('../../GlobalHeader/context.cjs');
6
+ const require_MarketingBanner = require('../AppHeaderElements/AppHeaderCatalogDropdown/MarketingBanner.cjs');
7
+ const require_consts = require('./consts.cjs');
8
+ const require_DefaultResults = require('./DefaultResults.cjs');
9
+ const require_useUrlChangeDetection = require('./hooks/useUrlChangeDetection.cjs');
10
+ const require_QuizAndHelpCenterLinks = require('./QuizAndHelpCenterLinks.cjs');
11
+ const require_safelyRedirect = require('./safelyRedirect.cjs');
12
+ const require_index$2 = require('./SearchWorker/index.cjs');
13
+ let _codecademy_gamut = require("@codecademy/gamut");
14
+ let _codecademy_gamut_styles = require("@codecademy/gamut-styles");
15
+ let _emotion_styled = require("@emotion/styled");
16
+ _emotion_styled = require_runtime.__toESM(_emotion_styled);
17
+ let react = require("react");
18
+ react = require_runtime.__toESM(react);
19
+ let _codecademy_gamut_icons = require("@codecademy/gamut-icons");
20
+ let _emotion_react = require("@emotion/react");
21
+
22
+ //#region src/AppHeader/Search/SearchPane.tsx
23
+ const Form = _codecademy_gamut.Box.withComponent("form");
24
+ const Input = _codecademy_gamut.Box.withComponent("input");
25
+ const QueryContainer = /* @__PURE__ */ (0, _emotion_styled.default)(_codecademy_gamut.ContentContainer, {
26
+ target: "ebeevrx0",
27
+ label: "brand-QueryContainer"
28
+ })(({ $compact }) => (0, _codecademy_gamut_styles.css)({
29
+ display: "flex",
30
+ width: "100%",
31
+ pt: 16,
32
+ pb: $compact ? {
33
+ _: 0,
34
+ md: 4
35
+ } : {
36
+ _: 0,
37
+ md: 24
38
+ },
39
+ px: { _: 24 }
40
+ }), "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvbW9uby9tb25vL2xpYnMvdWkvYnJhbmQvc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL21vbm8vbW9uby9saWJzL3VpL2JyYW5kL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhZGdlLFxuICBCb3gsXG4gIENvbnRlbnRDb250YWluZXIsXG4gIEZsZXhCb3gsXG4gIEZvY3VzVHJhcCxcbiAgSWNvbkJ1dHRvbixcbiAgTWVudSxcbiAgTWVudUl0ZW0sXG4gIFNoaW1tZXIsXG4gIFN0cm9rZUJ1dHRvbixcbiAgVGV4dCxcbn0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQnO1xuaW1wb3J0IHsgTWluaURlbGV0ZUljb24sIFNlYXJjaEljb24gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1pY29ucyc7XG5pbXBvcnQgeyBjc3MsIHRoZW1lLCB1c2VDdXJyZW50TW9kZSB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0LXN0eWxlcyc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgdXNlR2xvYmFsSGVhZGVyRHluYW1pY0RhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vR2xvYmFsSGVhZGVyL2NvbnRleHQnO1xuaW1wb3J0IHsgTWFya2V0aW5nQmFubmVyIH0gZnJvbSAnLi4vQXBwSGVhZGVyRWxlbWVudHMvQXBwSGVhZGVyQ2F0YWxvZ0Ryb3Bkb3duL01hcmtldGluZ0Jhbm5lcic7XG5pbXBvcnQgeyB1c2VPbkVzY0hhbmRsZXIgfSBmcm9tICcuLi9zaGFyZWQnO1xuaW1wb3J0IHsgc2VhcmNoUGxhY2Vob2xkZXIgfSBmcm9tICcuL2NvbnN0cyc7XG5pbXBvcnQgeyBQb3B1bGFyQ29udGVudCwgUG9wdWxhclNlYXJjaGVzIH0gZnJvbSAnLi9EZWZhdWx0UmVzdWx0cyc7XG5pbXBvcnQgeyB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24gfSBmcm9tICcuL2hvb2tzL3VzZVVybENoYW5nZURldGVjdGlvbic7XG5pbXBvcnQgeyBRdWl6QW5kSGVscENlbnRlckxpbmtzIH0gZnJvbSAnLi9RdWl6QW5kSGVscENlbnRlckxpbmtzJztcbmltcG9ydCB7IHNhZmVseVJlZGlyZWN0IH0gZnJvbSAnLi9zYWZlbHlSZWRpcmVjdCc7XG5pbXBvcnQgeyB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQgfSBmcm9tICcuL1NlYXJjaFRyYWNraW5nUHJvdmlkZXInO1xuaW1wb3J0IHsgc2VhcmNoV29ya2VyIH0gZnJvbSAnLi9TZWFyY2hXb3JrZXInO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVTdWdnZXN0aW9uLFxuICBTZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxufSBmcm9tICcuL1NlYXJjaFdvcmtlci90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hQYW5lUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgRm9ybSA9IEJveC53aXRoQ29tcG9uZW50KCdmb3JtJyk7XG5jb25zdCBJbnB1dCA9IEJveC53aXRoQ29tcG9uZW50KCdpbnB1dCcpO1xuXG5jb25zdCBRdWVyeUNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKTx7ICRjb21wYWN0PzogYm9vbGVhbiB9PihcbiAgKHsgJGNvbXBhY3QgfSkgPT5cbiAgICBjc3Moe1xuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgIHB0OiAxNixcbiAgICAgIHBiOiAkY29tcGFjdCA/IHsgXzogMCwgbWQ6IDQgfSA6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgICBweDogeyBfOiAyNCB9LFxuICAgIH0pXG4pO1xuXG5jb25zdCBTdWdnZXN0aW9uQ29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpPHsgJGNvbXBhY3Q/OiBib29sZWFuIH0+KFxuICAoeyAkY29tcGFjdCB9KSA9PlxuICAgIGNzcyh7XG4gICAgICBwdDogJGNvbXBhY3QgPyA0IDogMTYsXG4gICAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICAgIHB4OiB7IF86IDI0IH0sXG4gICAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KShcbiAgY3NzKHtcbiAgICBvdXRsaW5lOiBgbm9uZWAsXG4gICAgJyY6OnBsYWNlaG9sZGVyJzoge1xuICAgICAgdGV4dENvbG9yOiB0aGVtZS5jb2xvcnNbJ3RleHQtc2Vjb25kYXJ5J10gYXMgbmV2ZXIsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZVJlc3VsdExpID0gc3R5bGVkKE1lbnVJdGVtKShcbiAgY3NzKHtcbiAgICBwbDogMCxcbiAgICBweTogOCxcbiAgICBmb250U2l6ZTogMTYsXG4gICAgJyY6Zm9jdXMtdmlzaWJsZTphZnRlcic6IHtcbiAgICAgIGxlZnQ6IC00LFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVMb2FkZXJMaSA9IHN0eWxlZC5saShcbiAgY3NzKHtcbiAgICBsaXN0U3R5bGVUeXBlOiAnbm9uZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogMTIsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgU2VtaWJvbGRTZWFyY2hJY29uID0gc3R5bGVkKFNlYXJjaEljb24pYFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBjaXJjbGUsXG4gIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICB9XG4gIHJlY3Qge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0ycHgsIC0ycHgpO1xuICAgIGhlaWdodDogY2FsYygxMDAlICsgNHB4KTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNHB4KTtcbiAgfVxuYDtcblxuY29uc3QgRWxsaXBzaXNCb3ggPSBzdHlsZWQoQm94KWBcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gO1xuXG5jb25zdCBIaWdobGlnaHRlZFRleHQgPSAoe1xuICBzdWdnZXN0aW9uOiB7IHRpdGxlLCBzZWdtZW50cyB9LFxufToge1xuICBzdWdnZXN0aW9uOiBBdXRvY29tcGxldGVTdWdnZXN0aW9uO1xufSkgPT4ge1xuICBjb25zdCBtb2RlID0gdXNlQ3VycmVudE1vZGUoKTtcbiAgY29uc3QgaGlnaGxpZ2h0Q29sb3IgPSBtb2RlID09PSAnZGFyaycgPyAnaHlwZXInIDogJ3llbGxvdyc7XG5cbiAgcmV0dXJuIChcbiAgICA8RmxleEJveD5cbiAgICAgIDxFbGxpcHNpc0JveFxuICAgICAgICBtYXhXaWR0aD1cImNhbGMoMTAwdncgLSAxMjhweClcIlxuICAgICAgICB3aGl0ZVNwYWNlPVwicHJlXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpKSA9PiAoXG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGtleT17YCR7dGl0bGV9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICBsaW5lSGVpZ2h0PVwidGl0bGVcIlxuICAgICAgICAgICAgey4uLihzZWdtZW50LmhpZ2hsaWdodFxuICAgICAgICAgICAgICA/IHsgYmc6IGhpZ2hsaWdodENvbG9yLCBmb250V2VpZ2h0OiAnYm9sZCcgfVxuICAgICAgICAgICAgICA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2VnbWVudC52YWx1ZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICkpfVxuICAgICAgPC9FbGxpcHNpc0JveD5cbiAgICAgIDxUZXh0IHNjcmVlbnJlYWRlcj57dGl0bGV9PC9UZXh0PlxuICAgIDwvRmxleEJveD5cbiAgKTtcbn07XG5cbnR5cGUgU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0ge1xuICBzaGltbWVyUm93czoge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHNoaW1tZXJzOiB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgfVtdO1xuICB9W107XG59O1xuXG5sZXQgbG9hZGVyS2V5ID0gMDtcbmZ1bmN0aW9uIHJuZExvYWRlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gIGNvbnN0IGtleSA9IGxvYWRlcktleSsrO1xuICBjb25zdCBsb2FkZXI6IFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHsgc2hpbW1lclJvd3M6IFtdIH07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0ge1xuICAgICAga2V5OiBgJHtrZXl9OiR7aX1gLFxuICAgICAgc2hpbW1lcnM6IFtdIGFzIHsga2V5OiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdLFxuICAgIH07XG4gICAgY29uc3Qgd29yZHMgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZHM7IGorKykge1xuICAgICAgY29uc3Qgd2lkdGggPSAxMiArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk2KTtcbiAgICAgIHJvdy5zaGltbWVycy5wdXNoKHtcbiAgICAgICAga2V5OiBgJHtrZXl9OiR7an1gLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkZXIuc2hpbW1lclJvd3MucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBsb2FkZXI7XG59XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hQYW5lOiBSZWFjdC5GQzxTZWFyY2hQYW5lUHJvcHM+ID0gKHtcbiAgb25TZWFyY2gsXG4gIG9uVHJhY2tpbmdDbGljayxcbiAgc2VhcmNoQnV0dG9uUmVmLFxuICB0b2dnbGVTZWFyY2gsXG4gIG9uU2VhcmNoQXNZb3VUeXBlLFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLCBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9uc10gPSB1c2VTdGF0ZTxcbiAgICBBdXRvY29tcGxldGVTdWdnZXN0aW9uW11cbiAgPihbXSk7XG4gIGNvbnN0IFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLCBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzXSA9XG4gICAgdXNlU3RhdGU8U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRDbGlja2VkLCBzZXRTZWFyY2hSZXN1bHRDbGlja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcbiAgY29uc3QgeyBnbG9iYWxIZWFkZXJEeW5hbWljRGF0YSB9ID0gdXNlR2xvYmFsSGVhZGVyRHluYW1pY0RhdGFDb250ZXh0KCk7XG5cbiAgY29uc3QgYmFubmVyID0gZ2xvYmFsSGVhZGVyRHluYW1pY0RhdGE/LmNhdGFsb2dEcm9wZG93bj8uYmFubmVyO1xuICBjb25zdCBzaG93TWFya2V0aW5nQmFubmVyID0gYmFubmVyPy50ZXh0ICYmIGJhbm5lcj8uaHJlZiAmJiBNYXJrZXRpbmdCYW5uZXI7XG5cbiAgY29uc3Qgc2VhcmNoQXNZb3VUeXBlTG9hZGVyID0gUmVhY3QudXNlTWVtbyhcbiAgICAoKSA9PiAoc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbCA/IHJuZExvYWRlcigpIDogbnVsbCksXG4gICAgW3NlYXJjaEFzWW91VHlwZVJlc3VsdHNdXG4gICk7XG5cbiAgY29uc3QgdmFsdWVUcmltbWVkID0gdmFsdWUudHJpbSgpO1xuXG4gIGNvbnN0IGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayA9XG4gICAgb25TZWFyY2hBc1lvdVR5cGUgJiYgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyAmJiAhc2VhcmNoUmVzdWx0Q2xpY2tlZDtcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jICgpID0+IHtcbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB1c2VyIG1hZGUgYSBzZWFyY2ggYW5kIHRoZW4gY2xvc2VkIHNlYXJjaCBwYW5lXG4gICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayAmJiB2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0b2dnbGVTZWFyY2goKTtcbiAgICAvLyBhZGRzIGEgbGl0dGxlIGRlbGF5IGJldHdlZW4gY2xvc2luZyB0aGUgc2VhcmNoIHBhbmUgYW5kIGZvY3VzaW5nIG9uIHRoZSBidXR0b25cbiAgICAvLyB0byBwcmV2ZW50IHRoZSBzZWFyY2ggcGFuZSBmcm9tIGltbWVkaWF0ZWx5IG9wZW5pbmcgYWdhaW5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChzZWFyY2hCdXR0b25SZWYgJiYgc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50KSB7XG4gICAgICAgIHNlYXJjaEJ1dHRvblJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sIDEwKTtcbiAgfTtcblxuICBjb25zdCBvbktleURvd24gPSB1c2VPbkVzY0hhbmRsZXIoY2xvc2VTZWFyY2gpO1xuXG4gIGNvbnN0IG9uTW91c2VEb3duT3V0c2lkZSA9ICh7IHRhcmdldCB9OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgaGFuZGxlT3V0c2lkZUNsaWNrID0gKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAhZG9jdW1lbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvcignW2RhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXScpXG4gICAgICAgICAgPy5jb250YWlucyh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpICYmXG4gICAgICAgIHRhcmdldCAhPT0gc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgIH1cblxuICAgICAgdGFyZ2V0Py5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgICB9O1xuXG4gICAgdGFyZ2V0Py5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgfTtcblxuICBjb25zdCBuYXZpZ2F0ZVRvU2VhcmNoID0gKHNlYXJjaFRlcm06IHN0cmluZywgZnJvbVByZXZTZWFyY2g/OiBzdHJpbmcpID0+IHtcbiAgICBvblNlYXJjaChzZWFyY2hUZXJtLCBmcm9tUHJldlNlYXJjaCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlOiBSZWFjdC5DaGFuZ2VFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgc2V0VmFsdWUoZXZ0LnRhcmdldC52YWx1ZSk7XG4gICAgLy8gcmVzZXQgdG8gZmFsc2Ugd2hlbiB0aGUgc2VhcmNoIHF1ZXJ5IGNoYW5nZXNcbiAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKGZhbHNlKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVTdWJtaXQ6IFJlYWN0LkZvcm1FdmVudEhhbmRsZXIgPSAoZXZlbnQpID0+IHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IHdoZW4gdGhlIHVzZXIgc3VibWl0cyB0aGUgZm9ybSB0byBjYXB0dXJlIGNvbXBsZXRlIHF1ZXJ5XG4gICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljaykge1xuICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gIH07XG5cbiAgY29uc3QgY2xlYXJJbnB1dCA9ICgpID0+IHtcbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgYmVmb3JlIHVzZXIgY2xlYXJzIGlucHV0XG4gICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayAmJiB2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICB9XG5cbiAgICBzZXRWYWx1ZSgnJyk7XG4gICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgIC8vIHJlc2V0IHRoZSBjb250ZXh0IHdpdGggZW1wdHkgdmFsdWVzXG4gICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgcXVlcnk6ICcnLFxuICAgICAgc2VhcmNoSWQ6ICcnLFxuICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICB9KTtcbiAgfTtcblxuICAvLyB3aGVuIHRoZSBjdXJyZW50IFVSTCBjaGFuZ2VzLCB3ZSB3YW50IHRvIGNsb3NlIHRoZSBzZWFyY2ggcGFuZSBpZiBpdCdzIG9wZW5cbiAgLy8gYW5kIHRyYWNrIHNlYXJjaCBldmVudCBpZiB1c2VyIG1hZGUgYSBzZWFyY2hcbiAgdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uKHtcbiAgICBvblVybENoYW5nZTogKCkgPT4ge1xuICAgICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayAmJiB2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICAgIH1cblxuICAgICAgdG9nZ2xlU2VhcmNoKCk7XG4gICAgfSxcbiAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBkb24ndCB0cmFjayBpZiBhIHJlc3VsdCB3YXMgY2xpY2tlZCBvciBpZiB3ZSBkb24ndCBoYXZlIHNlYXJjaCByZXN1bHRzXG4gICAgaWYgKFxuICAgICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCB8fFxuICAgICAgIW9uU2VhcmNoQXNZb3VUeXBlIHx8XG4gICAgICAhc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8fFxuICAgICAgIXZhbHVlVHJpbW1lZC5sZW5ndGhcbiAgICApXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1yZXR1cm5cbiAgICAgIHJldHVybjtcbiAgfSwgW1xuICAgIHNlYXJjaFJlc3VsdENsaWNrZWQsXG4gICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyxcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gIF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5wdXRSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICBzZWFyY2hXb3JrZXIuaW5pdCgpO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXZhbHVlVHJpbW1lZC5sZW5ndGgpIHtcbiAgICAgIHNldFNlYXJjaEFzWW91VHlwZVJlc3VsdHMobnVsbCk7XG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiAnJyxcbiAgICAgICAgc2VhcmNoSWQ6ICcnLFxuICAgICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IDAsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgY2FuY2VsID0gZmFsc2U7XG4gICAgbGV0IGNsZWFyQXV0b2NvbXBsZXRlID0gdHJ1ZTtcbiAgICBsZXQgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSB0cnVlO1xuXG4gICAgbGV0IHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheTogTm9kZUpTLlRpbWVvdXQ7XG5cbiAgICBjb25zdCBsb2FkZXJEZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLypcbiAgICAgICAqIFdhaXQgMTAgbWlsbGlzZWNvbmRzIHRvIGdldCBhIHJlc3BvbnNlIGZvciB3b3JrZXIgYmVmb3JlIHNob3dpbmcgbG9hZGVycy5cbiAgICAgICAqIFRoaXMgcHJldmVudHMgZmxpY2tlcmluZyBsb2FkZXJzIG9uIHF1aWNrIG9yIGNhY2hlZCByZXN1bHRzLlxuICAgICAgICovXG4gICAgICBpZiAoY2FuY2VsKSByZXR1cm47XG4gICAgICBpZiAoY2xlYXJBdXRvY29tcGxldGUpIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIGlmIChjbGVhclNlYXJjaEFzWW91VHlwZSkgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICB9LCAxMCk7XG5cbiAgICBzZWFyY2hXb3JrZXIuYXV0b2NvbXBsZXRlKHZhbHVlVHJpbW1lZCkudGhlbigoc3VnZ2VzdGlvbnMpID0+IHtcbiAgICAgIGNsZWFyQXV0b2NvbXBsZXRlID0gZmFsc2U7XG5cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjsgLy8gdGV4dCBoYXMgY2hhbmdlZCBzaW5jZSB0aGlzIHJlcXVlc3Qgd2FzIG1hZGVcblxuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoc3VnZ2VzdGlvbnMpO1xuICAgIH0pO1xuXG4gICAgc2VhcmNoV29ya2VyLnNlYXJjaEFzWW91VHlwZSh2YWx1ZVRyaW1tZWQpLnRoZW4oKHJlc3VsdHMpID0+IHtcbiAgICAgIGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gZmFsc2U7XG5cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjsgLy8gdGV4dCBoYXMgY2hhbmdlZCBzaW5jZSB0aGlzIHJlcXVlc3Qgd2FzIG1hZGVcblxuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhyZXN1bHRzKTtcblxuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogcmVzdWx0cy5xdWVyeSxcbiAgICAgICAgc2VhcmNoSWQ6IHJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgIHJlc3VsdHNDb3VudDogcmVzdWx0cy50b3AubGVuZ3RoLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiByZXN1bHRzLnF1ZXJ5TG9hZFRpbWUsXG4gICAgICB9KTtcblxuICAgICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IHdpdGggYSBzbWFsbCBkZWxheSB3aGVuIHRoZXJlIGFyZSBubyByZXN1bHRzXG4gICAgICBpZiAoXG4gICAgICAgIG9uU2VhcmNoQXNZb3VUeXBlICYmXG4gICAgICAgIHJlc3VsdHMudG9wLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAhc2VhcmNoUmVzdWx0Q2xpY2tlZFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCBxdWVyeUxvYWRUaW1lIH0gPSByZXN1bHRzO1xuICAgICAgICBzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoIWNhbmNlbCkge1xuICAgICAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCAwLCBxdWVyeUxvYWRUaW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDMwMCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY2FuY2VsID0gdHJ1ZTtcbiAgICAgIGNsZWFyVGltZW91dChsb2FkZXJEZWxheSk7XG4gICAgICBjbGVhclRpbWVvdXQoc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5KTtcbiAgICB9O1xuICB9LCBbXG4gICAgdmFsdWVUcmltbWVkLFxuICAgIG9uU2VhcmNoQXNZb3VUeXBlLFxuICAgIHNlYXJjaFJlc3VsdENsaWNrZWQsXG4gICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMsXG4gIF0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgYmc9XCJzaGFkb3ctc2Vjb25kYXJ5XCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwdmhcIlxuICAgICAgICBwb3NpdGlvbj1cImZpeGVkXCJcbiAgICAgICAgLy8gV2UgYWRkIDZyZW0gaGVyZSBpbiBjYXNlIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGJyYW5kZWQgYmFubmVyIGFib3ZlIHNlYXJjaFxuICAgICAgICAvLyBUaGUgc2VhcmNoIGFyZWEgaXMgbXVjaCB0YWxsZXIgdGhhbiA2cmVtIHNvIHRoaXMgaXMgYSBzYWZlIGFtb3VudCBvZiBwYWRkaW5nXG4gICAgICAgIHRvcD17YGNhbGMoJHt0aGVtZS5lbGVtZW50cy5oZWFkZXJIZWlnaHR9ICsgNnJlbSlgfVxuICAgICAgICB3aWR0aD17MX1cbiAgICAgIC8+XG4gICAgICA8Rm9jdXNUcmFwXG4gICAgICAgIG9uRXNjYXBlS2V5PXtjbG9zZVNlYXJjaH1cbiAgICAgICAgb25DbGlja091dHNpZGU9e29uTW91c2VEb3duT3V0c2lkZX1cbiAgICAgICAgYWxsb3dQYWdlSW50ZXJhY3Rpb25cbiAgICAgID5cbiAgICAgICAgPEJveFxuICAgICAgICAgIGJnPVwiYmFja2dyb3VuZFwiXG4gICAgICAgICAgYm9yZGVyQ29sb3JCb3R0b209XCJib3JkZXItcHJpbWFyeVwiXG4gICAgICAgICAgYm9yZGVyQ29sb3JUb3A9XCJib3JkZXItdGVydGlhcnlcIlxuICAgICAgICAgIGJvcmRlclN0eWxlPVwic29saWRcIlxuICAgICAgICAgIGJvcmRlcldpZHRoPVwiMnB4IDAgMXB4XCJcbiAgICAgICAgICBkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIlxuICAgICAgICAgIHBvc2l0aW9uPXt7IF86ICdmaXhlZCcsIG1kOiAnYWJzb2x1dGUnIH19XG4gICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICBtYXhIZWlnaHQ9e3sgXzogJ2NhbGMoMTAwdmggLSA2M3B4KScsIG1kOiAnY2FsYygxMDB2aCAtIDgwcHgpJyB9fVxuICAgICAgICAgIG92ZXJmbG93PVwiYXV0b1wiXG4gICAgICAgICAgekluZGV4PXsxMH0gLy8gZW5zdXJlIGRyb3Bkb3duIGlzIGFib3ZlIHRoZSBwYWdlIGNvbnRlbnRcbiAgICAgICAgPlxuICAgICAgICAgIDxCb3ggYm9yZGVyPVwibm9uZVwiIHdpZHRoPVwiYXV0b1wiPlxuICAgICAgICAgICAgPFF1ZXJ5Q29udGFpbmVyICRjb21wYWN0PXshIXNob3dNYXJrZXRpbmdCYW5uZXJ9PlxuICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgIGFsaWduSXRlbXM9XCJiYXNlbGluZVwiXG4gICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJncmF5LTYwMFwiXG4gICAgICAgICAgICAgICAgYm9yZGVyU3R5bGVCb3R0b209XCJzb2xpZFwiXG4gICAgICAgICAgICAgICAgYm9yZGVyV2lkdGhCb3R0b209XCIxcHhcIlxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U2VhcmNoSWNvblxuICAgICAgICAgICAgICAgICAgaGVpZ2h0PXt7IF86IDIwLCBtZDogMjQgfX1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPXt7IF86IDIwLCBtZDogMjQgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxGb3JtXG4gICAgICAgICAgICAgICAgICBhY3Rpb249XCIvc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwic2VhcmNoLWZvcm1cIlxuICAgICAgICAgICAgICAgICAgbWw9ezh9XG4gICAgICAgICAgICAgICAgICBvblN1Ym1pdD17aGFuZGxlU3VibWl0fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgYXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDIwLCBtZDogMjYgfX1cbiAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodD1cImJvbGRcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImhlYWRlci1zZWFyY2gtYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInF1ZXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZSkgPT4gb25LZXlEb3duKGUpfVxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17c2VhcmNoUGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgICAgICAgIHJlZj17aW5wdXRSZWZ9XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgIGF1dG9Db21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvRm9ybT5cbiAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgaWNvbj17TWluaURlbGV0ZUljb259XG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXBQcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50OiAnZmxvYXRpbmcnLFxuICAgICAgICAgICAgICAgICAgICBuYXJyb3c6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHpJbmRleDogMixcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtjbGVhcklucHV0fVxuICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICA8L1F1ZXJ5Q29udGFpbmVyPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIHtzaG93TWFya2V0aW5nQmFubmVyICYmIChcbiAgICAgICAgICAgIDxDb250ZW50Q29udGFpbmVyPlxuICAgICAgICAgICAgICA8TWFya2V0aW5nQmFubmVyXG4gICAgICAgICAgICAgICAgc291cmNlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICB0ZXh0PXtiYW5uZXI/LnRleHR9XG4gICAgICAgICAgICAgICAgaHJlZj17YmFubmVyPy5ocmVmfVxuICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgIHB5PXt7IF86IDE2LCBsZzogMjQgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29udGVudENvbnRhaW5lcj5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxTdWdnZXN0aW9uQ29udGFpbmVyICRjb21wYWN0PXshIXNob3dNYXJrZXRpbmdCYW5uZXJ9PlxuICAgICAgICAgICAge3ZhbHVlVHJpbW1lZC5sZW5ndGggPiAwID8gKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxGbGV4Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiBhcz1cInVsXCIgbGlzdFN0eWxlPVwibm9uZVwiIHA9ezB9PlxuICAgICAgICAgICAgICAgICAge2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e3MudGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ2F1dG9jb21wbGV0ZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VtaWJvbGRTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYj17MiBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17OH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBtcj17MTJ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgeyhzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cImgyXCIgZm9udFNpemU9ezIwfSBtYj17MTZ9IG10PXsyNH0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9wIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIGFzPVwidWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHA9ezB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWFyY2hBc1lvdVR5cGVMb2FkZXI/LnNoaW1tZXJSb3dzLm1hcCgocikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVMb2FkZXJMaSBrZXk9e3Iua2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyLnNoaW1tZXJzLm1hcCgod29yZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2hpbW1lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MzB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHk9ezggYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3dvcmQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXt3b3JkLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDEwIGFzIDE2IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiYm9yZGVyLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwieGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk9ezAuMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZUxvYWRlckxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMucXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8Qm94IGZvbnRTaXplPXt7IF86IDIwLCBzbTogMjYgfX0gbXQ9ezB9IG1iPXs0OH0+XG4gICAgICAgICAgICAgICAgICAgICAge2BXZSBjb3VsZG4ndCBmaW5kIGEgbWF0Y2ggZm9yIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQgZm9udFdlaWdodD1cImJvbGRcIj57YFwiJHt2YWx1ZVRyaW1tZWR9LlwiYH08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJyBUcnkgYW5vdGhlciBrZXl3b3JkLCBvciBzZWUgd2hhdCBvdXIgbWVtYmVycyBhcmUgbGVhcm5pbmcuJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8UG9wdWxhclNlYXJjaGVzXG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoPXtuYXZpZ2F0ZVRvU2VhcmNofVxuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHshIXNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8U3Ryb2tlQnV0dG9uXG4gICAgICAgICAgICAgICAgbXk9ezE2fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygndmlld19hbGxfcmVzdWx0cycsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IGFsbCByZXN1bHRzXG4gICAgICAgICAgICAgIDwvU3Ryb2tlQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxRdWl6QW5kSGVscENlbnRlckxpbmtzXG4gICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURyb3Bkb3duPXtjbG9zZVNlYXJjaH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdWdnZXN0aW9uQ29udGFpbmVyPlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRm9jdXNUcmFwPlxuICAgIDwvPlxuICApO1xufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1Q3VCIn0= */");
41
+ const SuggestionContainer = /* @__PURE__ */ (0, _emotion_styled.default)(_codecademy_gamut.ContentContainer, {
42
+ target: "ebeevrx1",
43
+ label: "brand-SuggestionContainer"
44
+ })(({ $compact }) => (0, _codecademy_gamut_styles.css)({
45
+ pt: $compact ? 4 : 16,
46
+ pb: {
47
+ _: 0,
48
+ md: 24
49
+ },
50
+ px: { _: 24 }
51
+ }), "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvbW9uby9tb25vL2xpYnMvdWkvYnJhbmQvc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL21vbm8vbW9uby9saWJzL3VpL2JyYW5kL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhZGdlLFxuICBCb3gsXG4gIENvbnRlbnRDb250YWluZXIsXG4gIEZsZXhCb3gsXG4gIEZvY3VzVHJhcCxcbiAgSWNvbkJ1dHRvbixcbiAgTWVudSxcbiAgTWVudUl0ZW0sXG4gIFNoaW1tZXIsXG4gIFN0cm9rZUJ1dHRvbixcbiAgVGV4dCxcbn0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQnO1xuaW1wb3J0IHsgTWluaURlbGV0ZUljb24sIFNlYXJjaEljb24gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1pY29ucyc7XG5pbXBvcnQgeyBjc3MsIHRoZW1lLCB1c2VDdXJyZW50TW9kZSB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0LXN0eWxlcyc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgdXNlR2xvYmFsSGVhZGVyRHluYW1pY0RhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vR2xvYmFsSGVhZGVyL2NvbnRleHQnO1xuaW1wb3J0IHsgTWFya2V0aW5nQmFubmVyIH0gZnJvbSAnLi4vQXBwSGVhZGVyRWxlbWVudHMvQXBwSGVhZGVyQ2F0YWxvZ0Ryb3Bkb3duL01hcmtldGluZ0Jhbm5lcic7XG5pbXBvcnQgeyB1c2VPbkVzY0hhbmRsZXIgfSBmcm9tICcuLi9zaGFyZWQnO1xuaW1wb3J0IHsgc2VhcmNoUGxhY2Vob2xkZXIgfSBmcm9tICcuL2NvbnN0cyc7XG5pbXBvcnQgeyBQb3B1bGFyQ29udGVudCwgUG9wdWxhclNlYXJjaGVzIH0gZnJvbSAnLi9EZWZhdWx0UmVzdWx0cyc7XG5pbXBvcnQgeyB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24gfSBmcm9tICcuL2hvb2tzL3VzZVVybENoYW5nZURldGVjdGlvbic7XG5pbXBvcnQgeyBRdWl6QW5kSGVscENlbnRlckxpbmtzIH0gZnJvbSAnLi9RdWl6QW5kSGVscENlbnRlckxpbmtzJztcbmltcG9ydCB7IHNhZmVseVJlZGlyZWN0IH0gZnJvbSAnLi9zYWZlbHlSZWRpcmVjdCc7XG5pbXBvcnQgeyB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQgfSBmcm9tICcuL1NlYXJjaFRyYWNraW5nUHJvdmlkZXInO1xuaW1wb3J0IHsgc2VhcmNoV29ya2VyIH0gZnJvbSAnLi9TZWFyY2hXb3JrZXInO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVTdWdnZXN0aW9uLFxuICBTZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxufSBmcm9tICcuL1NlYXJjaFdvcmtlci90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hQYW5lUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgRm9ybSA9IEJveC53aXRoQ29tcG9uZW50KCdmb3JtJyk7XG5jb25zdCBJbnB1dCA9IEJveC53aXRoQ29tcG9uZW50KCdpbnB1dCcpO1xuXG5jb25zdCBRdWVyeUNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKTx7ICRjb21wYWN0PzogYm9vbGVhbiB9PihcbiAgKHsgJGNvbXBhY3QgfSkgPT5cbiAgICBjc3Moe1xuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgIHB0OiAxNixcbiAgICAgIHBiOiAkY29tcGFjdCA/IHsgXzogMCwgbWQ6IDQgfSA6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgICBweDogeyBfOiAyNCB9LFxuICAgIH0pXG4pO1xuXG5jb25zdCBTdWdnZXN0aW9uQ29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpPHsgJGNvbXBhY3Q/OiBib29sZWFuIH0+KFxuICAoeyAkY29tcGFjdCB9KSA9PlxuICAgIGNzcyh7XG4gICAgICBwdDogJGNvbXBhY3QgPyA0IDogMTYsXG4gICAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICAgIHB4OiB7IF86IDI0IH0sXG4gICAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KShcbiAgY3NzKHtcbiAgICBvdXRsaW5lOiBgbm9uZWAsXG4gICAgJyY6OnBsYWNlaG9sZGVyJzoge1xuICAgICAgdGV4dENvbG9yOiB0aGVtZS5jb2xvcnNbJ3RleHQtc2Vjb25kYXJ5J10gYXMgbmV2ZXIsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZVJlc3VsdExpID0gc3R5bGVkKE1lbnVJdGVtKShcbiAgY3NzKHtcbiAgICBwbDogMCxcbiAgICBweTogOCxcbiAgICBmb250U2l6ZTogMTYsXG4gICAgJyY6Zm9jdXMtdmlzaWJsZTphZnRlcic6IHtcbiAgICAgIGxlZnQ6IC00LFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVMb2FkZXJMaSA9IHN0eWxlZC5saShcbiAgY3NzKHtcbiAgICBsaXN0U3R5bGVUeXBlOiAnbm9uZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogMTIsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgU2VtaWJvbGRTZWFyY2hJY29uID0gc3R5bGVkKFNlYXJjaEljb24pYFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBjaXJjbGUsXG4gIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICB9XG4gIHJlY3Qge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0ycHgsIC0ycHgpO1xuICAgIGhlaWdodDogY2FsYygxMDAlICsgNHB4KTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNHB4KTtcbiAgfVxuYDtcblxuY29uc3QgRWxsaXBzaXNCb3ggPSBzdHlsZWQoQm94KWBcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gO1xuXG5jb25zdCBIaWdobGlnaHRlZFRleHQgPSAoe1xuICBzdWdnZXN0aW9uOiB7IHRpdGxlLCBzZWdtZW50cyB9LFxufToge1xuICBzdWdnZXN0aW9uOiBBdXRvY29tcGxldGVTdWdnZXN0aW9uO1xufSkgPT4ge1xuICBjb25zdCBtb2RlID0gdXNlQ3VycmVudE1vZGUoKTtcbiAgY29uc3QgaGlnaGxpZ2h0Q29sb3IgPSBtb2RlID09PSAnZGFyaycgPyAnaHlwZXInIDogJ3llbGxvdyc7XG5cbiAgcmV0dXJuIChcbiAgICA8RmxleEJveD5cbiAgICAgIDxFbGxpcHNpc0JveFxuICAgICAgICBtYXhXaWR0aD1cImNhbGMoMTAwdncgLSAxMjhweClcIlxuICAgICAgICB3aGl0ZVNwYWNlPVwicHJlXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpKSA9PiAoXG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGtleT17YCR7dGl0bGV9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICBsaW5lSGVpZ2h0PVwidGl0bGVcIlxuICAgICAgICAgICAgey4uLihzZWdtZW50LmhpZ2hsaWdodFxuICAgICAgICAgICAgICA/IHsgYmc6IGhpZ2hsaWdodENvbG9yLCBmb250V2VpZ2h0OiAnYm9sZCcgfVxuICAgICAgICAgICAgICA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2VnbWVudC52YWx1ZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICkpfVxuICAgICAgPC9FbGxpcHNpc0JveD5cbiAgICAgIDxUZXh0IHNjcmVlbnJlYWRlcj57dGl0bGV9PC9UZXh0PlxuICAgIDwvRmxleEJveD5cbiAgKTtcbn07XG5cbnR5cGUgU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0ge1xuICBzaGltbWVyUm93czoge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHNoaW1tZXJzOiB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgfVtdO1xuICB9W107XG59O1xuXG5sZXQgbG9hZGVyS2V5ID0gMDtcbmZ1bmN0aW9uIHJuZExvYWRlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gIGNvbnN0IGtleSA9IGxvYWRlcktleSsrO1xuICBjb25zdCBsb2FkZXI6IFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHsgc2hpbW1lclJvd3M6IFtdIH07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0ge1xuICAgICAga2V5OiBgJHtrZXl9OiR7aX1gLFxuICAgICAgc2hpbW1lcnM6IFtdIGFzIHsga2V5OiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdLFxuICAgIH07XG4gICAgY29uc3Qgd29yZHMgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZHM7IGorKykge1xuICAgICAgY29uc3Qgd2lkdGggPSAxMiArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk2KTtcbiAgICAgIHJvdy5zaGltbWVycy5wdXNoKHtcbiAgICAgICAga2V5OiBgJHtrZXl9OiR7an1gLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkZXIuc2hpbW1lclJvd3MucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBsb2FkZXI7XG59XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hQYW5lOiBSZWFjdC5GQzxTZWFyY2hQYW5lUHJvcHM+ID0gKHtcbiAgb25TZWFyY2gsXG4gIG9uVHJhY2tpbmdDbGljayxcbiAgc2VhcmNoQnV0dG9uUmVmLFxuICB0b2dnbGVTZWFyY2gsXG4gIG9uU2VhcmNoQXNZb3VUeXBlLFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLCBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9uc10gPSB1c2VTdGF0ZTxcbiAgICBBdXRvY29tcGxldGVTdWdnZXN0aW9uW11cbiAgPihbXSk7XG4gIGNvbnN0IFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLCBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzXSA9XG4gICAgdXNlU3RhdGU8U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRDbGlja2VkLCBzZXRTZWFyY2hSZXN1bHRDbGlja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcbiAgY29uc3QgeyBnbG9iYWxIZWFkZXJEeW5hbWljRGF0YSB9ID0gdXNlR2xvYmFsSGVhZGVyRHluYW1pY0RhdGFDb250ZXh0KCk7XG5cbiAgY29uc3QgYmFubmVyID0gZ2xvYmFsSGVhZGVyRHluYW1pY0RhdGE/LmNhdGFsb2dEcm9wZG93bj8uYmFubmVyO1xuICBjb25zdCBzaG93TWFya2V0aW5nQmFubmVyID0gYmFubmVyPy50ZXh0ICYmIGJhbm5lcj8uaHJlZiAmJiBNYXJrZXRpbmdCYW5uZXI7XG5cbiAgY29uc3Qgc2VhcmNoQXNZb3VUeXBlTG9hZGVyID0gUmVhY3QudXNlTWVtbyhcbiAgICAoKSA9PiAoc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbCA/IHJuZExvYWRlcigpIDogbnVsbCksXG4gICAgW3NlYXJjaEFzWW91VHlwZVJlc3VsdHNdXG4gICk7XG5cbiAgY29uc3QgdmFsdWVUcmltbWVkID0gdmFsdWUudHJpbSgpO1xuXG4gIGNvbnN0IGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayA9XG4gICAgb25TZWFyY2hBc1lvdVR5cGUgJiYgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyAmJiAhc2VhcmNoUmVzdWx0Q2xpY2tlZDtcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jICgpID0+IHtcbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB1c2VyIG1hZGUgYSBzZWFyY2ggYW5kIHRoZW4gY2xvc2VkIHNlYXJjaCBwYW5lXG4gICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayAmJiB2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0b2dnbGVTZWFyY2goKTtcbiAgICAvLyBhZGRzIGEgbGl0dGxlIGRlbGF5IGJldHdlZW4gY2xvc2luZyB0aGUgc2VhcmNoIHBhbmUgYW5kIGZvY3VzaW5nIG9uIHRoZSBidXR0b25cbiAgICAvLyB0byBwcmV2ZW50IHRoZSBzZWFyY2ggcGFuZSBmcm9tIGltbWVkaWF0ZWx5IG9wZW5pbmcgYWdhaW5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChzZWFyY2hCdXR0b25SZWYgJiYgc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50KSB7XG4gICAgICAgIHNlYXJjaEJ1dHRvblJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sIDEwKTtcbiAgfTtcblxuICBjb25zdCBvbktleURvd24gPSB1c2VPbkVzY0hhbmRsZXIoY2xvc2VTZWFyY2gpO1xuXG4gIGNvbnN0IG9uTW91c2VEb3duT3V0c2lkZSA9ICh7IHRhcmdldCB9OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgaGFuZGxlT3V0c2lkZUNsaWNrID0gKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAhZG9jdW1lbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvcignW2RhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXScpXG4gICAgICAgICAgPy5jb250YWlucyh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpICYmXG4gICAgICAgIHRhcmdldCAhPT0gc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgIH1cblxuICAgICAgdGFyZ2V0Py5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgICB9O1xuXG4gICAgdGFyZ2V0Py5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgfTtcblxuICBjb25zdCBuYXZpZ2F0ZVRvU2VhcmNoID0gKHNlYXJjaFRlcm06IHN0cmluZywgZnJvbVByZXZTZWFyY2g/OiBzdHJpbmcpID0+IHtcbiAgICBvblNlYXJjaChzZWFyY2hUZXJtLCBmcm9tUHJldlNlYXJjaCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlOiBSZWFjdC5DaGFuZ2VFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgc2V0VmFsdWUoZXZ0LnRhcmdldC52YWx1ZSk7XG4gICAgLy8gcmVzZXQgdG8gZmFsc2Ugd2hlbiB0aGUgc2VhcmNoIHF1ZXJ5IGNoYW5nZXNcbiAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKGZhbHNlKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVTdWJtaXQ6IFJlYWN0LkZvcm1FdmVudEhhbmRsZXIgPSAoZXZlbnQpID0+IHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IHdoZW4gdGhlIHVzZXIgc3VibWl0cyB0aGUgZm9ybSB0byBjYXB0dXJlIGNvbXBsZXRlIHF1ZXJ5XG4gICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljaykge1xuICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gIH07XG5cbiAgY29uc3QgY2xlYXJJbnB1dCA9ICgpID0+IHtcbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgYmVmb3JlIHVzZXIgY2xlYXJzIGlucHV0XG4gICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayAmJiB2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICB9XG5cbiAgICBzZXRWYWx1ZSgnJyk7XG4gICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgIC8vIHJlc2V0IHRoZSBjb250ZXh0IHdpdGggZW1wdHkgdmFsdWVzXG4gICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgcXVlcnk6ICcnLFxuICAgICAgc2VhcmNoSWQ6ICcnLFxuICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICB9KTtcbiAgfTtcblxuICAvLyB3aGVuIHRoZSBjdXJyZW50IFVSTCBjaGFuZ2VzLCB3ZSB3YW50IHRvIGNsb3NlIHRoZSBzZWFyY2ggcGFuZSBpZiBpdCdzIG9wZW5cbiAgLy8gYW5kIHRyYWNrIHNlYXJjaCBldmVudCBpZiB1c2VyIG1hZGUgYSBzZWFyY2hcbiAgdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uKHtcbiAgICBvblVybENoYW5nZTogKCkgPT4ge1xuICAgICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayAmJiB2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICAgIH1cblxuICAgICAgdG9nZ2xlU2VhcmNoKCk7XG4gICAgfSxcbiAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBkb24ndCB0cmFjayBpZiBhIHJlc3VsdCB3YXMgY2xpY2tlZCBvciBpZiB3ZSBkb24ndCBoYXZlIHNlYXJjaCByZXN1bHRzXG4gICAgaWYgKFxuICAgICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCB8fFxuICAgICAgIW9uU2VhcmNoQXNZb3VUeXBlIHx8XG4gICAgICAhc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8fFxuICAgICAgIXZhbHVlVHJpbW1lZC5sZW5ndGhcbiAgICApXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1yZXR1cm5cbiAgICAgIHJldHVybjtcbiAgfSwgW1xuICAgIHNlYXJjaFJlc3VsdENsaWNrZWQsXG4gICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyxcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gIF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5wdXRSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICBzZWFyY2hXb3JrZXIuaW5pdCgpO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXZhbHVlVHJpbW1lZC5sZW5ndGgpIHtcbiAgICAgIHNldFNlYXJjaEFzWW91VHlwZVJlc3VsdHMobnVsbCk7XG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiAnJyxcbiAgICAgICAgc2VhcmNoSWQ6ICcnLFxuICAgICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IDAsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgY2FuY2VsID0gZmFsc2U7XG4gICAgbGV0IGNsZWFyQXV0b2NvbXBsZXRlID0gdHJ1ZTtcbiAgICBsZXQgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSB0cnVlO1xuXG4gICAgbGV0IHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheTogTm9kZUpTLlRpbWVvdXQ7XG5cbiAgICBjb25zdCBsb2FkZXJEZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLypcbiAgICAgICAqIFdhaXQgMTAgbWlsbGlzZWNvbmRzIHRvIGdldCBhIHJlc3BvbnNlIGZvciB3b3JrZXIgYmVmb3JlIHNob3dpbmcgbG9hZGVycy5cbiAgICAgICAqIFRoaXMgcHJldmVudHMgZmxpY2tlcmluZyBsb2FkZXJzIG9uIHF1aWNrIG9yIGNhY2hlZCByZXN1bHRzLlxuICAgICAgICovXG4gICAgICBpZiAoY2FuY2VsKSByZXR1cm47XG4gICAgICBpZiAoY2xlYXJBdXRvY29tcGxldGUpIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIGlmIChjbGVhclNlYXJjaEFzWW91VHlwZSkgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICB9LCAxMCk7XG5cbiAgICBzZWFyY2hXb3JrZXIuYXV0b2NvbXBsZXRlKHZhbHVlVHJpbW1lZCkudGhlbigoc3VnZ2VzdGlvbnMpID0+IHtcbiAgICAgIGNsZWFyQXV0b2NvbXBsZXRlID0gZmFsc2U7XG5cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjsgLy8gdGV4dCBoYXMgY2hhbmdlZCBzaW5jZSB0aGlzIHJlcXVlc3Qgd2FzIG1hZGVcblxuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoc3VnZ2VzdGlvbnMpO1xuICAgIH0pO1xuXG4gICAgc2VhcmNoV29ya2VyLnNlYXJjaEFzWW91VHlwZSh2YWx1ZVRyaW1tZWQpLnRoZW4oKHJlc3VsdHMpID0+IHtcbiAgICAgIGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gZmFsc2U7XG5cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjsgLy8gdGV4dCBoYXMgY2hhbmdlZCBzaW5jZSB0aGlzIHJlcXVlc3Qgd2FzIG1hZGVcblxuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhyZXN1bHRzKTtcblxuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogcmVzdWx0cy5xdWVyeSxcbiAgICAgICAgc2VhcmNoSWQ6IHJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgIHJlc3VsdHNDb3VudDogcmVzdWx0cy50b3AubGVuZ3RoLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiByZXN1bHRzLnF1ZXJ5TG9hZFRpbWUsXG4gICAgICB9KTtcblxuICAgICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IHdpdGggYSBzbWFsbCBkZWxheSB3aGVuIHRoZXJlIGFyZSBubyByZXN1bHRzXG4gICAgICBpZiAoXG4gICAgICAgIG9uU2VhcmNoQXNZb3VUeXBlICYmXG4gICAgICAgIHJlc3VsdHMudG9wLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAhc2VhcmNoUmVzdWx0Q2xpY2tlZFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCBxdWVyeUxvYWRUaW1lIH0gPSByZXN1bHRzO1xuICAgICAgICBzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoIWNhbmNlbCkge1xuICAgICAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCAwLCBxdWVyeUxvYWRUaW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDMwMCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY2FuY2VsID0gdHJ1ZTtcbiAgICAgIGNsZWFyVGltZW91dChsb2FkZXJEZWxheSk7XG4gICAgICBjbGVhclRpbWVvdXQoc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5KTtcbiAgICB9O1xuICB9LCBbXG4gICAgdmFsdWVUcmltbWVkLFxuICAgIG9uU2VhcmNoQXNZb3VUeXBlLFxuICAgIHNlYXJjaFJlc3VsdENsaWNrZWQsXG4gICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMsXG4gIF0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgYmc9XCJzaGFkb3ctc2Vjb25kYXJ5XCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwdmhcIlxuICAgICAgICBwb3NpdGlvbj1cImZpeGVkXCJcbiAgICAgICAgLy8gV2UgYWRkIDZyZW0gaGVyZSBpbiBjYXNlIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGJyYW5kZWQgYmFubmVyIGFib3ZlIHNlYXJjaFxuICAgICAgICAvLyBUaGUgc2VhcmNoIGFyZWEgaXMgbXVjaCB0YWxsZXIgdGhhbiA2cmVtIHNvIHRoaXMgaXMgYSBzYWZlIGFtb3VudCBvZiBwYWRkaW5nXG4gICAgICAgIHRvcD17YGNhbGMoJHt0aGVtZS5lbGVtZW50cy5oZWFkZXJIZWlnaHR9ICsgNnJlbSlgfVxuICAgICAgICB3aWR0aD17MX1cbiAgICAgIC8+XG4gICAgICA8Rm9jdXNUcmFwXG4gICAgICAgIG9uRXNjYXBlS2V5PXtjbG9zZVNlYXJjaH1cbiAgICAgICAgb25DbGlja091dHNpZGU9e29uTW91c2VEb3duT3V0c2lkZX1cbiAgICAgICAgYWxsb3dQYWdlSW50ZXJhY3Rpb25cbiAgICAgID5cbiAgICAgICAgPEJveFxuICAgICAgICAgIGJnPVwiYmFja2dyb3VuZFwiXG4gICAgICAgICAgYm9yZGVyQ29sb3JCb3R0b209XCJib3JkZXItcHJpbWFyeVwiXG4gICAgICAgICAgYm9yZGVyQ29sb3JUb3A9XCJib3JkZXItdGVydGlhcnlcIlxuICAgICAgICAgIGJvcmRlclN0eWxlPVwic29saWRcIlxuICAgICAgICAgIGJvcmRlcldpZHRoPVwiMnB4IDAgMXB4XCJcbiAgICAgICAgICBkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIlxuICAgICAgICAgIHBvc2l0aW9uPXt7IF86ICdmaXhlZCcsIG1kOiAnYWJzb2x1dGUnIH19XG4gICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICBtYXhIZWlnaHQ9e3sgXzogJ2NhbGMoMTAwdmggLSA2M3B4KScsIG1kOiAnY2FsYygxMDB2aCAtIDgwcHgpJyB9fVxuICAgICAgICAgIG92ZXJmbG93PVwiYXV0b1wiXG4gICAgICAgICAgekluZGV4PXsxMH0gLy8gZW5zdXJlIGRyb3Bkb3duIGlzIGFib3ZlIHRoZSBwYWdlIGNvbnRlbnRcbiAgICAgICAgPlxuICAgICAgICAgIDxCb3ggYm9yZGVyPVwibm9uZVwiIHdpZHRoPVwiYXV0b1wiPlxuICAgICAgICAgICAgPFF1ZXJ5Q29udGFpbmVyICRjb21wYWN0PXshIXNob3dNYXJrZXRpbmdCYW5uZXJ9PlxuICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgIGFsaWduSXRlbXM9XCJiYXNlbGluZVwiXG4gICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJncmF5LTYwMFwiXG4gICAgICAgICAgICAgICAgYm9yZGVyU3R5bGVCb3R0b209XCJzb2xpZFwiXG4gICAgICAgICAgICAgICAgYm9yZGVyV2lkdGhCb3R0b209XCIxcHhcIlxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U2VhcmNoSWNvblxuICAgICAgICAgICAgICAgICAgaGVpZ2h0PXt7IF86IDIwLCBtZDogMjQgfX1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPXt7IF86IDIwLCBtZDogMjQgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxGb3JtXG4gICAgICAgICAgICAgICAgICBhY3Rpb249XCIvc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwic2VhcmNoLWZvcm1cIlxuICAgICAgICAgICAgICAgICAgbWw9ezh9XG4gICAgICAgICAgICAgICAgICBvblN1Ym1pdD17aGFuZGxlU3VibWl0fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgYXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDIwLCBtZDogMjYgfX1cbiAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodD1cImJvbGRcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImhlYWRlci1zZWFyY2gtYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInF1ZXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZSkgPT4gb25LZXlEb3duKGUpfVxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17c2VhcmNoUGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgICAgICAgIHJlZj17aW5wdXRSZWZ9XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgIGF1dG9Db21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvRm9ybT5cbiAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgaWNvbj17TWluaURlbGV0ZUljb259XG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXBQcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50OiAnZmxvYXRpbmcnLFxuICAgICAgICAgICAgICAgICAgICBuYXJyb3c6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHpJbmRleDogMixcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtjbGVhcklucHV0fVxuICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICA8L1F1ZXJ5Q29udGFpbmVyPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIHtzaG93TWFya2V0aW5nQmFubmVyICYmIChcbiAgICAgICAgICAgIDxDb250ZW50Q29udGFpbmVyPlxuICAgICAgICAgICAgICA8TWFya2V0aW5nQmFubmVyXG4gICAgICAgICAgICAgICAgc291cmNlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICB0ZXh0PXtiYW5uZXI/LnRleHR9XG4gICAgICAgICAgICAgICAgaHJlZj17YmFubmVyPy5ocmVmfVxuICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgIHB5PXt7IF86IDE2LCBsZzogMjQgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29udGVudENvbnRhaW5lcj5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxTdWdnZXN0aW9uQ29udGFpbmVyICRjb21wYWN0PXshIXNob3dNYXJrZXRpbmdCYW5uZXJ9PlxuICAgICAgICAgICAge3ZhbHVlVHJpbW1lZC5sZW5ndGggPiAwID8gKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxGbGV4Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiBhcz1cInVsXCIgbGlzdFN0eWxlPVwibm9uZVwiIHA9ezB9PlxuICAgICAgICAgICAgICAgICAge2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e3MudGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ2F1dG9jb21wbGV0ZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VtaWJvbGRTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYj17MiBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17OH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBtcj17MTJ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgeyhzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cImgyXCIgZm9udFNpemU9ezIwfSBtYj17MTZ9IG10PXsyNH0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9wIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIGFzPVwidWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHA9ezB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWFyY2hBc1lvdVR5cGVMb2FkZXI/LnNoaW1tZXJSb3dzLm1hcCgocikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVMb2FkZXJMaSBrZXk9e3Iua2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyLnNoaW1tZXJzLm1hcCgod29yZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2hpbW1lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MzB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHk9ezggYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3dvcmQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXt3b3JkLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDEwIGFzIDE2IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiYm9yZGVyLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwieGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk9ezAuMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZUxvYWRlckxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMucXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8Qm94IGZvbnRTaXplPXt7IF86IDIwLCBzbTogMjYgfX0gbXQ9ezB9IG1iPXs0OH0+XG4gICAgICAgICAgICAgICAgICAgICAge2BXZSBjb3VsZG4ndCBmaW5kIGEgbWF0Y2ggZm9yIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQgZm9udFdlaWdodD1cImJvbGRcIj57YFwiJHt2YWx1ZVRyaW1tZWR9LlwiYH08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJyBUcnkgYW5vdGhlciBrZXl3b3JkLCBvciBzZWUgd2hhdCBvdXIgbWVtYmVycyBhcmUgbGVhcm5pbmcuJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8UG9wdWxhclNlYXJjaGVzXG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoPXtuYXZpZ2F0ZVRvU2VhcmNofVxuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHshIXNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8U3Ryb2tlQnV0dG9uXG4gICAgICAgICAgICAgICAgbXk9ezE2fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygndmlld19hbGxfcmVzdWx0cycsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IGFsbCByZXN1bHRzXG4gICAgICAgICAgICAgIDwvU3Ryb2tlQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxRdWl6QW5kSGVscENlbnRlckxpbmtzXG4gICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURyb3Bkb3duPXtjbG9zZVNlYXJjaH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdWdnZXN0aW9uQ29udGFpbmVyPlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRm9jdXNUcmFwPlxuICAgIDwvPlxuICApO1xufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrRDRCIn0= */");
52
+ const StyledInput = /* @__PURE__ */ (0, _emotion_styled.default)(Input, {
53
+ target: "ebeevrx2",
54
+ label: "brand-StyledInput"
55
+ })((0, _codecademy_gamut_styles.css)({
56
+ outline: `none`,
57
+ "&::placeholder": { textColor: _codecademy_gamut_styles.theme.colors["text-secondary"] }
58
+ }), "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvbW9uby9tb25vL2xpYnMvdWkvYnJhbmQvc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL21vbm8vbW9uby9saWJzL3VpL2JyYW5kL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhZGdlLFxuICBCb3gsXG4gIENvbnRlbnRDb250YWluZXIsXG4gIEZsZXhCb3gsXG4gIEZvY3VzVHJhcCxcbiAgSWNvbkJ1dHRvbixcbiAgTWVudSxcbiAgTWVudUl0ZW0sXG4gIFNoaW1tZXIsXG4gIFN0cm9rZUJ1dHRvbixcbiAgVGV4dCxcbn0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQnO1xuaW1wb3J0IHsgTWluaURlbGV0ZUljb24sIFNlYXJjaEljb24gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1pY29ucyc7XG5pbXBvcnQgeyBjc3MsIHRoZW1lLCB1c2VDdXJyZW50TW9kZSB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0LXN0eWxlcyc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgdXNlR2xvYmFsSGVhZGVyRHluYW1pY0RhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vR2xvYmFsSGVhZGVyL2NvbnRleHQnO1xuaW1wb3J0IHsgTWFya2V0aW5nQmFubmVyIH0gZnJvbSAnLi4vQXBwSGVhZGVyRWxlbWVudHMvQXBwSGVhZGVyQ2F0YWxvZ0Ryb3Bkb3duL01hcmtldGluZ0Jhbm5lcic7XG5pbXBvcnQgeyB1c2VPbkVzY0hhbmRsZXIgfSBmcm9tICcuLi9zaGFyZWQnO1xuaW1wb3J0IHsgc2VhcmNoUGxhY2Vob2xkZXIgfSBmcm9tICcuL2NvbnN0cyc7XG5pbXBvcnQgeyBQb3B1bGFyQ29udGVudCwgUG9wdWxhclNlYXJjaGVzIH0gZnJvbSAnLi9EZWZhdWx0UmVzdWx0cyc7XG5pbXBvcnQgeyB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24gfSBmcm9tICcuL2hvb2tzL3VzZVVybENoYW5nZURldGVjdGlvbic7XG5pbXBvcnQgeyBRdWl6QW5kSGVscENlbnRlckxpbmtzIH0gZnJvbSAnLi9RdWl6QW5kSGVscENlbnRlckxpbmtzJztcbmltcG9ydCB7IHNhZmVseVJlZGlyZWN0IH0gZnJvbSAnLi9zYWZlbHlSZWRpcmVjdCc7XG5pbXBvcnQgeyB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQgfSBmcm9tICcuL1NlYXJjaFRyYWNraW5nUHJvdmlkZXInO1xuaW1wb3J0IHsgc2VhcmNoV29ya2VyIH0gZnJvbSAnLi9TZWFyY2hXb3JrZXInO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVTdWdnZXN0aW9uLFxuICBTZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxufSBmcm9tICcuL1NlYXJjaFdvcmtlci90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hQYW5lUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgRm9ybSA9IEJveC53aXRoQ29tcG9uZW50KCdmb3JtJyk7XG5jb25zdCBJbnB1dCA9IEJveC53aXRoQ29tcG9uZW50KCdpbnB1dCcpO1xuXG5jb25zdCBRdWVyeUNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKTx7ICRjb21wYWN0PzogYm9vbGVhbiB9PihcbiAgKHsgJGNvbXBhY3QgfSkgPT5cbiAgICBjc3Moe1xuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgIHB0OiAxNixcbiAgICAgIHBiOiAkY29tcGFjdCA/IHsgXzogMCwgbWQ6IDQgfSA6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgICBweDogeyBfOiAyNCB9LFxuICAgIH0pXG4pO1xuXG5jb25zdCBTdWdnZXN0aW9uQ29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpPHsgJGNvbXBhY3Q/OiBib29sZWFuIH0+KFxuICAoeyAkY29tcGFjdCB9KSA9PlxuICAgIGNzcyh7XG4gICAgICBwdDogJGNvbXBhY3QgPyA0IDogMTYsXG4gICAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICAgIHB4OiB7IF86IDI0IH0sXG4gICAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KShcbiAgY3NzKHtcbiAgICBvdXRsaW5lOiBgbm9uZWAsXG4gICAgJyY6OnBsYWNlaG9sZGVyJzoge1xuICAgICAgdGV4dENvbG9yOiB0aGVtZS5jb2xvcnNbJ3RleHQtc2Vjb25kYXJ5J10gYXMgbmV2ZXIsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZVJlc3VsdExpID0gc3R5bGVkKE1lbnVJdGVtKShcbiAgY3NzKHtcbiAgICBwbDogMCxcbiAgICBweTogOCxcbiAgICBmb250U2l6ZTogMTYsXG4gICAgJyY6Zm9jdXMtdmlzaWJsZTphZnRlcic6IHtcbiAgICAgIGxlZnQ6IC00LFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVMb2FkZXJMaSA9IHN0eWxlZC5saShcbiAgY3NzKHtcbiAgICBsaXN0U3R5bGVUeXBlOiAnbm9uZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogMTIsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgU2VtaWJvbGRTZWFyY2hJY29uID0gc3R5bGVkKFNlYXJjaEljb24pYFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBjaXJjbGUsXG4gIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICB9XG4gIHJlY3Qge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0ycHgsIC0ycHgpO1xuICAgIGhlaWdodDogY2FsYygxMDAlICsgNHB4KTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNHB4KTtcbiAgfVxuYDtcblxuY29uc3QgRWxsaXBzaXNCb3ggPSBzdHlsZWQoQm94KWBcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gO1xuXG5jb25zdCBIaWdobGlnaHRlZFRleHQgPSAoe1xuICBzdWdnZXN0aW9uOiB7IHRpdGxlLCBzZWdtZW50cyB9LFxufToge1xuICBzdWdnZXN0aW9uOiBBdXRvY29tcGxldGVTdWdnZXN0aW9uO1xufSkgPT4ge1xuICBjb25zdCBtb2RlID0gdXNlQ3VycmVudE1vZGUoKTtcbiAgY29uc3QgaGlnaGxpZ2h0Q29sb3IgPSBtb2RlID09PSAnZGFyaycgPyAnaHlwZXInIDogJ3llbGxvdyc7XG5cbiAgcmV0dXJuIChcbiAgICA8RmxleEJveD5cbiAgICAgIDxFbGxpcHNpc0JveFxuICAgICAgICBtYXhXaWR0aD1cImNhbGMoMTAwdncgLSAxMjhweClcIlxuICAgICAgICB3aGl0ZVNwYWNlPVwicHJlXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpKSA9PiAoXG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGtleT17YCR7dGl0bGV9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICBsaW5lSGVpZ2h0PVwidGl0bGVcIlxuICAgICAgICAgICAgey4uLihzZWdtZW50LmhpZ2hsaWdodFxuICAgICAgICAgICAgICA/IHsgYmc6IGhpZ2hsaWdodENvbG9yLCBmb250V2VpZ2h0OiAnYm9sZCcgfVxuICAgICAgICAgICAgICA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2VnbWVudC52YWx1ZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICkpfVxuICAgICAgPC9FbGxpcHNpc0JveD5cbiAgICAgIDxUZXh0IHNjcmVlbnJlYWRlcj57dGl0bGV9PC9UZXh0PlxuICAgIDwvRmxleEJveD5cbiAgKTtcbn07XG5cbnR5cGUgU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0ge1xuICBzaGltbWVyUm93czoge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHNoaW1tZXJzOiB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgfVtdO1xuICB9W107XG59O1xuXG5sZXQgbG9hZGVyS2V5ID0gMDtcbmZ1bmN0aW9uIHJuZExvYWRlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gIGNvbnN0IGtleSA9IGxvYWRlcktleSsrO1xuICBjb25zdCBsb2FkZXI6IFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHsgc2hpbW1lclJvd3M6IFtdIH07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0ge1xuICAgICAga2V5OiBgJHtrZXl9OiR7aX1gLFxuICAgICAgc2hpbW1lcnM6IFtdIGFzIHsga2V5OiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdLFxuICAgIH07XG4gICAgY29uc3Qgd29yZHMgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZHM7IGorKykge1xuICAgICAgY29uc3Qgd2lkdGggPSAxMiArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk2KTtcbiAgICAgIHJvdy5zaGltbWVycy5wdXNoKHtcbiAgICAgICAga2V5OiBgJHtrZXl9OiR7an1gLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkZXIuc2hpbW1lclJvd3MucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBsb2FkZXI7XG59XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hQYW5lOiBSZWFjdC5GQzxTZWFyY2hQYW5lUHJvcHM+ID0gKHtcbiAgb25TZWFyY2gsXG4gIG9uVHJhY2tpbmdDbGljayxcbiAgc2VhcmNoQnV0dG9uUmVmLFxuICB0b2dnbGVTZWFyY2gsXG4gIG9uU2VhcmNoQXNZb3VUeXBlLFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLCBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9uc10gPSB1c2VTdGF0ZTxcbiAgICBBdXRvY29tcGxldGVTdWdnZXN0aW9uW11cbiAgPihbXSk7XG4gIGNvbnN0IFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLCBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzXSA9XG4gICAgdXNlU3RhdGU8U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRDbGlja2VkLCBzZXRTZWFyY2hSZXN1bHRDbGlja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcbiAgY29uc3QgeyBnbG9iYWxIZWFkZXJEeW5hbWljRGF0YSB9ID0gdXNlR2xvYmFsSGVhZGVyRHluYW1pY0RhdGFDb250ZXh0KCk7XG5cbiAgY29uc3QgYmFubmVyID0gZ2xvYmFsSGVhZGVyRHluYW1pY0RhdGE/LmNhdGFsb2dEcm9wZG93bj8uYmFubmVyO1xuICBjb25zdCBzaG93TWFya2V0aW5nQmFubmVyID0gYmFubmVyPy50ZXh0ICYmIGJhbm5lcj8uaHJlZiAmJiBNYXJrZXRpbmdCYW5uZXI7XG5cbiAgY29uc3Qgc2VhcmNoQXNZb3VUeXBlTG9hZGVyID0gUmVhY3QudXNlTWVtbyhcbiAgICAoKSA9PiAoc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbCA/IHJuZExvYWRlcigpIDogbnVsbCksXG4gICAgW3NlYXJjaEFzWW91VHlwZVJlc3VsdHNdXG4gICk7XG5cbiAgY29uc3QgdmFsdWVUcmltbWVkID0gdmFsdWUudHJpbSgpO1xuXG4gIGNvbnN0IGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayA9XG4gICAgb25TZWFyY2hBc1lvdVR5cGUgJiYgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyAmJiAhc2VhcmNoUmVzdWx0Q2xpY2tlZDtcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jICgpID0+IHtcbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB1c2VyIG1hZGUgYSBzZWFyY2ggYW5kIHRoZW4gY2xvc2VkIHNlYXJjaCBwYW5lXG4gICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayAmJiB2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0b2dnbGVTZWFyY2goKTtcbiAgICAvLyBhZGRzIGEgbGl0dGxlIGRlbGF5IGJldHdlZW4gY2xvc2luZyB0aGUgc2VhcmNoIHBhbmUgYW5kIGZvY3VzaW5nIG9uIHRoZSBidXR0b25cbiAgICAvLyB0byBwcmV2ZW50IHRoZSBzZWFyY2ggcGFuZSBmcm9tIGltbWVkaWF0ZWx5IG9wZW5pbmcgYWdhaW5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChzZWFyY2hCdXR0b25SZWYgJiYgc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50KSB7XG4gICAgICAgIHNlYXJjaEJ1dHRvblJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sIDEwKTtcbiAgfTtcblxuICBjb25zdCBvbktleURvd24gPSB1c2VPbkVzY0hhbmRsZXIoY2xvc2VTZWFyY2gpO1xuXG4gIGNvbnN0IG9uTW91c2VEb3duT3V0c2lkZSA9ICh7IHRhcmdldCB9OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgaGFuZGxlT3V0c2lkZUNsaWNrID0gKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAhZG9jdW1lbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvcignW2RhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXScpXG4gICAgICAgICAgPy5jb250YWlucyh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpICYmXG4gICAgICAgIHRhcmdldCAhPT0gc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgIH1cblxuICAgICAgdGFyZ2V0Py5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgICB9O1xuXG4gICAgdGFyZ2V0Py5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgfTtcblxuICBjb25zdCBuYXZpZ2F0ZVRvU2VhcmNoID0gKHNlYXJjaFRlcm06IHN0cmluZywgZnJvbVByZXZTZWFyY2g/OiBzdHJpbmcpID0+IHtcbiAgICBvblNlYXJjaChzZWFyY2hUZXJtLCBmcm9tUHJldlNlYXJjaCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlOiBSZWFjdC5DaGFuZ2VFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgc2V0VmFsdWUoZXZ0LnRhcmdldC52YWx1ZSk7XG4gICAgLy8gcmVzZXQgdG8gZmFsc2Ugd2hlbiB0aGUgc2VhcmNoIHF1ZXJ5IGNoYW5nZXNcbiAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKGZhbHNlKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVTdWJtaXQ6IFJlYWN0LkZvcm1FdmVudEhhbmRsZXIgPSAoZXZlbnQpID0+IHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IHdoZW4gdGhlIHVzZXIgc3VibWl0cyB0aGUgZm9ybSB0byBjYXB0dXJlIGNvbXBsZXRlIHF1ZXJ5XG4gICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljaykge1xuICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gIH07XG5cbiAgY29uc3QgY2xlYXJJbnB1dCA9ICgpID0+IHtcbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgYmVmb3JlIHVzZXIgY2xlYXJzIGlucHV0XG4gICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayAmJiB2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICB9XG5cbiAgICBzZXRWYWx1ZSgnJyk7XG4gICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgIC8vIHJlc2V0IHRoZSBjb250ZXh0IHdpdGggZW1wdHkgdmFsdWVzXG4gICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgcXVlcnk6ICcnLFxuICAgICAgc2VhcmNoSWQ6ICcnLFxuICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICB9KTtcbiAgfTtcblxuICAvLyB3aGVuIHRoZSBjdXJyZW50IFVSTCBjaGFuZ2VzLCB3ZSB3YW50IHRvIGNsb3NlIHRoZSBzZWFyY2ggcGFuZSBpZiBpdCdzIG9wZW5cbiAgLy8gYW5kIHRyYWNrIHNlYXJjaCBldmVudCBpZiB1c2VyIG1hZGUgYSBzZWFyY2hcbiAgdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uKHtcbiAgICBvblVybENoYW5nZTogKCkgPT4ge1xuICAgICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayAmJiB2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICAgIH1cblxuICAgICAgdG9nZ2xlU2VhcmNoKCk7XG4gICAgfSxcbiAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBkb24ndCB0cmFjayBpZiBhIHJlc3VsdCB3YXMgY2xpY2tlZCBvciBpZiB3ZSBkb24ndCBoYXZlIHNlYXJjaCByZXN1bHRzXG4gICAgaWYgKFxuICAgICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCB8fFxuICAgICAgIW9uU2VhcmNoQXNZb3VUeXBlIHx8XG4gICAgICAhc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8fFxuICAgICAgIXZhbHVlVHJpbW1lZC5sZW5ndGhcbiAgICApXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1yZXR1cm5cbiAgICAgIHJldHVybjtcbiAgfSwgW1xuICAgIHNlYXJjaFJlc3VsdENsaWNrZWQsXG4gICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyxcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gIF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5wdXRSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICBzZWFyY2hXb3JrZXIuaW5pdCgpO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXZhbHVlVHJpbW1lZC5sZW5ndGgpIHtcbiAgICAgIHNldFNlYXJjaEFzWW91VHlwZVJlc3VsdHMobnVsbCk7XG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiAnJyxcbiAgICAgICAgc2VhcmNoSWQ6ICcnLFxuICAgICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IDAsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgY2FuY2VsID0gZmFsc2U7XG4gICAgbGV0IGNsZWFyQXV0b2NvbXBsZXRlID0gdHJ1ZTtcbiAgICBsZXQgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSB0cnVlO1xuXG4gICAgbGV0IHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheTogTm9kZUpTLlRpbWVvdXQ7XG5cbiAgICBjb25zdCBsb2FkZXJEZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLypcbiAgICAgICAqIFdhaXQgMTAgbWlsbGlzZWNvbmRzIHRvIGdldCBhIHJlc3BvbnNlIGZvciB3b3JrZXIgYmVmb3JlIHNob3dpbmcgbG9hZGVycy5cbiAgICAgICAqIFRoaXMgcHJldmVudHMgZmxpY2tlcmluZyBsb2FkZXJzIG9uIHF1aWNrIG9yIGNhY2hlZCByZXN1bHRzLlxuICAgICAgICovXG4gICAgICBpZiAoY2FuY2VsKSByZXR1cm47XG4gICAgICBpZiAoY2xlYXJBdXRvY29tcGxldGUpIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIGlmIChjbGVhclNlYXJjaEFzWW91VHlwZSkgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICB9LCAxMCk7XG5cbiAgICBzZWFyY2hXb3JrZXIuYXV0b2NvbXBsZXRlKHZhbHVlVHJpbW1lZCkudGhlbigoc3VnZ2VzdGlvbnMpID0+IHtcbiAgICAgIGNsZWFyQXV0b2NvbXBsZXRlID0gZmFsc2U7XG5cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjsgLy8gdGV4dCBoYXMgY2hhbmdlZCBzaW5jZSB0aGlzIHJlcXVlc3Qgd2FzIG1hZGVcblxuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoc3VnZ2VzdGlvbnMpO1xuICAgIH0pO1xuXG4gICAgc2VhcmNoV29ya2VyLnNlYXJjaEFzWW91VHlwZSh2YWx1ZVRyaW1tZWQpLnRoZW4oKHJlc3VsdHMpID0+IHtcbiAgICAgIGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gZmFsc2U7XG5cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjsgLy8gdGV4dCBoYXMgY2hhbmdlZCBzaW5jZSB0aGlzIHJlcXVlc3Qgd2FzIG1hZGVcblxuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhyZXN1bHRzKTtcblxuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogcmVzdWx0cy5xdWVyeSxcbiAgICAgICAgc2VhcmNoSWQ6IHJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgIHJlc3VsdHNDb3VudDogcmVzdWx0cy50b3AubGVuZ3RoLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiByZXN1bHRzLnF1ZXJ5TG9hZFRpbWUsXG4gICAgICB9KTtcblxuICAgICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IHdpdGggYSBzbWFsbCBkZWxheSB3aGVuIHRoZXJlIGFyZSBubyByZXN1bHRzXG4gICAgICBpZiAoXG4gICAgICAgIG9uU2VhcmNoQXNZb3VUeXBlICYmXG4gICAgICAgIHJlc3VsdHMudG9wLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAhc2VhcmNoUmVzdWx0Q2xpY2tlZFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCBxdWVyeUxvYWRUaW1lIH0gPSByZXN1bHRzO1xuICAgICAgICBzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoIWNhbmNlbCkge1xuICAgICAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCAwLCBxdWVyeUxvYWRUaW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDMwMCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY2FuY2VsID0gdHJ1ZTtcbiAgICAgIGNsZWFyVGltZW91dChsb2FkZXJEZWxheSk7XG4gICAgICBjbGVhclRpbWVvdXQoc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5KTtcbiAgICB9O1xuICB9LCBbXG4gICAgdmFsdWVUcmltbWVkLFxuICAgIG9uU2VhcmNoQXNZb3VUeXBlLFxuICAgIHNlYXJjaFJlc3VsdENsaWNrZWQsXG4gICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMsXG4gIF0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgYmc9XCJzaGFkb3ctc2Vjb25kYXJ5XCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwdmhcIlxuICAgICAgICBwb3NpdGlvbj1cImZpeGVkXCJcbiAgICAgICAgLy8gV2UgYWRkIDZyZW0gaGVyZSBpbiBjYXNlIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGJyYW5kZWQgYmFubmVyIGFib3ZlIHNlYXJjaFxuICAgICAgICAvLyBUaGUgc2VhcmNoIGFyZWEgaXMgbXVjaCB0YWxsZXIgdGhhbiA2cmVtIHNvIHRoaXMgaXMgYSBzYWZlIGFtb3VudCBvZiBwYWRkaW5nXG4gICAgICAgIHRvcD17YGNhbGMoJHt0aGVtZS5lbGVtZW50cy5oZWFkZXJIZWlnaHR9ICsgNnJlbSlgfVxuICAgICAgICB3aWR0aD17MX1cbiAgICAgIC8+XG4gICAgICA8Rm9jdXNUcmFwXG4gICAgICAgIG9uRXNjYXBlS2V5PXtjbG9zZVNlYXJjaH1cbiAgICAgICAgb25DbGlja091dHNpZGU9e29uTW91c2VEb3duT3V0c2lkZX1cbiAgICAgICAgYWxsb3dQYWdlSW50ZXJhY3Rpb25cbiAgICAgID5cbiAgICAgICAgPEJveFxuICAgICAgICAgIGJnPVwiYmFja2dyb3VuZFwiXG4gICAgICAgICAgYm9yZGVyQ29sb3JCb3R0b209XCJib3JkZXItcHJpbWFyeVwiXG4gICAgICAgICAgYm9yZGVyQ29sb3JUb3A9XCJib3JkZXItdGVydGlhcnlcIlxuICAgICAgICAgIGJvcmRlclN0eWxlPVwic29saWRcIlxuICAgICAgICAgIGJvcmRlcldpZHRoPVwiMnB4IDAgMXB4XCJcbiAgICAgICAgICBkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIlxuICAgICAgICAgIHBvc2l0aW9uPXt7IF86ICdmaXhlZCcsIG1kOiAnYWJzb2x1dGUnIH19XG4gICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICBtYXhIZWlnaHQ9e3sgXzogJ2NhbGMoMTAwdmggLSA2M3B4KScsIG1kOiAnY2FsYygxMDB2aCAtIDgwcHgpJyB9fVxuICAgICAgICAgIG92ZXJmbG93PVwiYXV0b1wiXG4gICAgICAgICAgekluZGV4PXsxMH0gLy8gZW5zdXJlIGRyb3Bkb3duIGlzIGFib3ZlIHRoZSBwYWdlIGNvbnRlbnRcbiAgICAgICAgPlxuICAgICAgICAgIDxCb3ggYm9yZGVyPVwibm9uZVwiIHdpZHRoPVwiYXV0b1wiPlxuICAgICAgICAgICAgPFF1ZXJ5Q29udGFpbmVyICRjb21wYWN0PXshIXNob3dNYXJrZXRpbmdCYW5uZXJ9PlxuICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgIGFsaWduSXRlbXM9XCJiYXNlbGluZVwiXG4gICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJncmF5LTYwMFwiXG4gICAgICAgICAgICAgICAgYm9yZGVyU3R5bGVCb3R0b209XCJzb2xpZFwiXG4gICAgICAgICAgICAgICAgYm9yZGVyV2lkdGhCb3R0b209XCIxcHhcIlxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U2VhcmNoSWNvblxuICAgICAgICAgICAgICAgICAgaGVpZ2h0PXt7IF86IDIwLCBtZDogMjQgfX1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPXt7IF86IDIwLCBtZDogMjQgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxGb3JtXG4gICAgICAgICAgICAgICAgICBhY3Rpb249XCIvc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwic2VhcmNoLWZvcm1cIlxuICAgICAgICAgICAgICAgICAgbWw9ezh9XG4gICAgICAgICAgICAgICAgICBvblN1Ym1pdD17aGFuZGxlU3VibWl0fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgYXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDIwLCBtZDogMjYgfX1cbiAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodD1cImJvbGRcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImhlYWRlci1zZWFyY2gtYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInF1ZXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZSkgPT4gb25LZXlEb3duKGUpfVxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17c2VhcmNoUGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgICAgICAgIHJlZj17aW5wdXRSZWZ9XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgIGF1dG9Db21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvRm9ybT5cbiAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgaWNvbj17TWluaURlbGV0ZUljb259XG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXBQcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50OiAnZmxvYXRpbmcnLFxuICAgICAgICAgICAgICAgICAgICBuYXJyb3c6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHpJbmRleDogMixcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtjbGVhcklucHV0fVxuICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICA8L1F1ZXJ5Q29udGFpbmVyPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIHtzaG93TWFya2V0aW5nQmFubmVyICYmIChcbiAgICAgICAgICAgIDxDb250ZW50Q29udGFpbmVyPlxuICAgICAgICAgICAgICA8TWFya2V0aW5nQmFubmVyXG4gICAgICAgICAgICAgICAgc291cmNlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICB0ZXh0PXtiYW5uZXI/LnRleHR9XG4gICAgICAgICAgICAgICAgaHJlZj17YmFubmVyPy5ocmVmfVxuICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgIHB5PXt7IF86IDE2LCBsZzogMjQgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29udGVudENvbnRhaW5lcj5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxTdWdnZXN0aW9uQ29udGFpbmVyICRjb21wYWN0PXshIXNob3dNYXJrZXRpbmdCYW5uZXJ9PlxuICAgICAgICAgICAge3ZhbHVlVHJpbW1lZC5sZW5ndGggPiAwID8gKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxGbGV4Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiBhcz1cInVsXCIgbGlzdFN0eWxlPVwibm9uZVwiIHA9ezB9PlxuICAgICAgICAgICAgICAgICAge2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e3MudGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ2F1dG9jb21wbGV0ZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VtaWJvbGRTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYj17MiBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17OH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBtcj17MTJ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgeyhzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cImgyXCIgZm9udFNpemU9ezIwfSBtYj17MTZ9IG10PXsyNH0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9wIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIGFzPVwidWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHA9ezB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWFyY2hBc1lvdVR5cGVMb2FkZXI/LnNoaW1tZXJSb3dzLm1hcCgocikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVMb2FkZXJMaSBrZXk9e3Iua2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyLnNoaW1tZXJzLm1hcCgod29yZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2hpbW1lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MzB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHk9ezggYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3dvcmQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXt3b3JkLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDEwIGFzIDE2IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiYm9yZGVyLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwieGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk9ezAuMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZUxvYWRlckxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMucXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8Qm94IGZvbnRTaXplPXt7IF86IDIwLCBzbTogMjYgfX0gbXQ9ezB9IG1iPXs0OH0+XG4gICAgICAgICAgICAgICAgICAgICAge2BXZSBjb3VsZG4ndCBmaW5kIGEgbWF0Y2ggZm9yIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQgZm9udFdlaWdodD1cImJvbGRcIj57YFwiJHt2YWx1ZVRyaW1tZWR9LlwiYH08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJyBUcnkgYW5vdGhlciBrZXl3b3JkLCBvciBzZWUgd2hhdCBvdXIgbWVtYmVycyBhcmUgbGVhcm5pbmcuJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8UG9wdWxhclNlYXJjaGVzXG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoPXtuYXZpZ2F0ZVRvU2VhcmNofVxuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHshIXNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8U3Ryb2tlQnV0dG9uXG4gICAgICAgICAgICAgICAgbXk9ezE2fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygndmlld19hbGxfcmVzdWx0cycsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IGFsbCByZXN1bHRzXG4gICAgICAgICAgICAgIDwvU3Ryb2tlQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxRdWl6QW5kSGVscENlbnRlckxpbmtzXG4gICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURyb3Bkb3duPXtjbG9zZVNlYXJjaH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdWdnZXN0aW9uQ29udGFpbmVyPlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRm9jdXNUcmFwPlxuICAgIDwvPlxuICApO1xufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEyRG9CIn0= */");
59
+ const InlineResultLi = /* @__PURE__ */ (0, _emotion_styled.default)(_codecademy_gamut.MenuItem, {
60
+ target: "ebeevrx3",
61
+ label: "brand-InlineResultLi"
62
+ })((0, _codecademy_gamut_styles.css)({
63
+ pl: 0,
64
+ py: 8,
65
+ fontSize: 16,
66
+ "&:focus-visible:after": { left: -4 }
67
+ }), "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvbW9uby9tb25vL2xpYnMvdWkvYnJhbmQvc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL21vbm8vbW9uby9saWJzL3VpL2JyYW5kL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhZGdlLFxuICBCb3gsXG4gIENvbnRlbnRDb250YWluZXIsXG4gIEZsZXhCb3gsXG4gIEZvY3VzVHJhcCxcbiAgSWNvbkJ1dHRvbixcbiAgTWVudSxcbiAgTWVudUl0ZW0sXG4gIFNoaW1tZXIsXG4gIFN0cm9rZUJ1dHRvbixcbiAgVGV4dCxcbn0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQnO1xuaW1wb3J0IHsgTWluaURlbGV0ZUljb24sIFNlYXJjaEljb24gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1pY29ucyc7XG5pbXBvcnQgeyBjc3MsIHRoZW1lLCB1c2VDdXJyZW50TW9kZSB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0LXN0eWxlcyc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgdXNlR2xvYmFsSGVhZGVyRHluYW1pY0RhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vR2xvYmFsSGVhZGVyL2NvbnRleHQnO1xuaW1wb3J0IHsgTWFya2V0aW5nQmFubmVyIH0gZnJvbSAnLi4vQXBwSGVhZGVyRWxlbWVudHMvQXBwSGVhZGVyQ2F0YWxvZ0Ryb3Bkb3duL01hcmtldGluZ0Jhbm5lcic7XG5pbXBvcnQgeyB1c2VPbkVzY0hhbmRsZXIgfSBmcm9tICcuLi9zaGFyZWQnO1xuaW1wb3J0IHsgc2VhcmNoUGxhY2Vob2xkZXIgfSBmcm9tICcuL2NvbnN0cyc7XG5pbXBvcnQgeyBQb3B1bGFyQ29udGVudCwgUG9wdWxhclNlYXJjaGVzIH0gZnJvbSAnLi9EZWZhdWx0UmVzdWx0cyc7XG5pbXBvcnQgeyB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24gfSBmcm9tICcuL2hvb2tzL3VzZVVybENoYW5nZURldGVjdGlvbic7XG5pbXBvcnQgeyBRdWl6QW5kSGVscENlbnRlckxpbmtzIH0gZnJvbSAnLi9RdWl6QW5kSGVscENlbnRlckxpbmtzJztcbmltcG9ydCB7IHNhZmVseVJlZGlyZWN0IH0gZnJvbSAnLi9zYWZlbHlSZWRpcmVjdCc7XG5pbXBvcnQgeyB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQgfSBmcm9tICcuL1NlYXJjaFRyYWNraW5nUHJvdmlkZXInO1xuaW1wb3J0IHsgc2VhcmNoV29ya2VyIH0gZnJvbSAnLi9TZWFyY2hXb3JrZXInO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVTdWdnZXN0aW9uLFxuICBTZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxufSBmcm9tICcuL1NlYXJjaFdvcmtlci90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hQYW5lUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgRm9ybSA9IEJveC53aXRoQ29tcG9uZW50KCdmb3JtJyk7XG5jb25zdCBJbnB1dCA9IEJveC53aXRoQ29tcG9uZW50KCdpbnB1dCcpO1xuXG5jb25zdCBRdWVyeUNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKTx7ICRjb21wYWN0PzogYm9vbGVhbiB9PihcbiAgKHsgJGNvbXBhY3QgfSkgPT5cbiAgICBjc3Moe1xuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgIHB0OiAxNixcbiAgICAgIHBiOiAkY29tcGFjdCA/IHsgXzogMCwgbWQ6IDQgfSA6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgICBweDogeyBfOiAyNCB9LFxuICAgIH0pXG4pO1xuXG5jb25zdCBTdWdnZXN0aW9uQ29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpPHsgJGNvbXBhY3Q/OiBib29sZWFuIH0+KFxuICAoeyAkY29tcGFjdCB9KSA9PlxuICAgIGNzcyh7XG4gICAgICBwdDogJGNvbXBhY3QgPyA0IDogMTYsXG4gICAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICAgIHB4OiB7IF86IDI0IH0sXG4gICAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KShcbiAgY3NzKHtcbiAgICBvdXRsaW5lOiBgbm9uZWAsXG4gICAgJyY6OnBsYWNlaG9sZGVyJzoge1xuICAgICAgdGV4dENvbG9yOiB0aGVtZS5jb2xvcnNbJ3RleHQtc2Vjb25kYXJ5J10gYXMgbmV2ZXIsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZVJlc3VsdExpID0gc3R5bGVkKE1lbnVJdGVtKShcbiAgY3NzKHtcbiAgICBwbDogMCxcbiAgICBweTogOCxcbiAgICBmb250U2l6ZTogMTYsXG4gICAgJyY6Zm9jdXMtdmlzaWJsZTphZnRlcic6IHtcbiAgICAgIGxlZnQ6IC00LFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVMb2FkZXJMaSA9IHN0eWxlZC5saShcbiAgY3NzKHtcbiAgICBsaXN0U3R5bGVUeXBlOiAnbm9uZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogMTIsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgU2VtaWJvbGRTZWFyY2hJY29uID0gc3R5bGVkKFNlYXJjaEljb24pYFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBjaXJjbGUsXG4gIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICB9XG4gIHJlY3Qge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0ycHgsIC0ycHgpO1xuICAgIGhlaWdodDogY2FsYygxMDAlICsgNHB4KTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNHB4KTtcbiAgfVxuYDtcblxuY29uc3QgRWxsaXBzaXNCb3ggPSBzdHlsZWQoQm94KWBcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gO1xuXG5jb25zdCBIaWdobGlnaHRlZFRleHQgPSAoe1xuICBzdWdnZXN0aW9uOiB7IHRpdGxlLCBzZWdtZW50cyB9LFxufToge1xuICBzdWdnZXN0aW9uOiBBdXRvY29tcGxldGVTdWdnZXN0aW9uO1xufSkgPT4ge1xuICBjb25zdCBtb2RlID0gdXNlQ3VycmVudE1vZGUoKTtcbiAgY29uc3QgaGlnaGxpZ2h0Q29sb3IgPSBtb2RlID09PSAnZGFyaycgPyAnaHlwZXInIDogJ3llbGxvdyc7XG5cbiAgcmV0dXJuIChcbiAgICA8RmxleEJveD5cbiAgICAgIDxFbGxpcHNpc0JveFxuICAgICAgICBtYXhXaWR0aD1cImNhbGMoMTAwdncgLSAxMjhweClcIlxuICAgICAgICB3aGl0ZVNwYWNlPVwicHJlXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpKSA9PiAoXG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGtleT17YCR7dGl0bGV9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICBsaW5lSGVpZ2h0PVwidGl0bGVcIlxuICAgICAgICAgICAgey4uLihzZWdtZW50LmhpZ2hsaWdodFxuICAgICAgICAgICAgICA/IHsgYmc6IGhpZ2hsaWdodENvbG9yLCBmb250V2VpZ2h0OiAnYm9sZCcgfVxuICAgICAgICAgICAgICA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2VnbWVudC52YWx1ZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICkpfVxuICAgICAgPC9FbGxpcHNpc0JveD5cbiAgICAgIDxUZXh0IHNjcmVlbnJlYWRlcj57dGl0bGV9PC9UZXh0PlxuICAgIDwvRmxleEJveD5cbiAgKTtcbn07XG5cbnR5cGUgU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0ge1xuICBzaGltbWVyUm93czoge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHNoaW1tZXJzOiB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgfVtdO1xuICB9W107XG59O1xuXG5sZXQgbG9hZGVyS2V5ID0gMDtcbmZ1bmN0aW9uIHJuZExvYWRlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gIGNvbnN0IGtleSA9IGxvYWRlcktleSsrO1xuICBjb25zdCBsb2FkZXI6IFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHsgc2hpbW1lclJvd3M6IFtdIH07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0ge1xuICAgICAga2V5OiBgJHtrZXl9OiR7aX1gLFxuICAgICAgc2hpbW1lcnM6IFtdIGFzIHsga2V5OiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdLFxuICAgIH07XG4gICAgY29uc3Qgd29yZHMgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZHM7IGorKykge1xuICAgICAgY29uc3Qgd2lkdGggPSAxMiArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk2KTtcbiAgICAgIHJvdy5zaGltbWVycy5wdXNoKHtcbiAgICAgICAga2V5OiBgJHtrZXl9OiR7an1gLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkZXIuc2hpbW1lclJvd3MucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBsb2FkZXI7XG59XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hQYW5lOiBSZWFjdC5GQzxTZWFyY2hQYW5lUHJvcHM+ID0gKHtcbiAgb25TZWFyY2gsXG4gIG9uVHJhY2tpbmdDbGljayxcbiAgc2VhcmNoQnV0dG9uUmVmLFxuICB0b2dnbGVTZWFyY2gsXG4gIG9uU2VhcmNoQXNZb3VUeXBlLFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLCBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9uc10gPSB1c2VTdGF0ZTxcbiAgICBBdXRvY29tcGxldGVTdWdnZXN0aW9uW11cbiAgPihbXSk7XG4gIGNvbnN0IFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLCBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzXSA9XG4gICAgdXNlU3RhdGU8U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRDbGlja2VkLCBzZXRTZWFyY2hSZXN1bHRDbGlja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcbiAgY29uc3QgeyBnbG9iYWxIZWFkZXJEeW5hbWljRGF0YSB9ID0gdXNlR2xvYmFsSGVhZGVyRHluYW1pY0RhdGFDb250ZXh0KCk7XG5cbiAgY29uc3QgYmFubmVyID0gZ2xvYmFsSGVhZGVyRHluYW1pY0RhdGE/LmNhdGFsb2dEcm9wZG93bj8uYmFubmVyO1xuICBjb25zdCBzaG93TWFya2V0aW5nQmFubmVyID0gYmFubmVyPy50ZXh0ICYmIGJhbm5lcj8uaHJlZiAmJiBNYXJrZXRpbmdCYW5uZXI7XG5cbiAgY29uc3Qgc2VhcmNoQXNZb3VUeXBlTG9hZGVyID0gUmVhY3QudXNlTWVtbyhcbiAgICAoKSA9PiAoc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbCA/IHJuZExvYWRlcigpIDogbnVsbCksXG4gICAgW3NlYXJjaEFzWW91VHlwZVJlc3VsdHNdXG4gICk7XG5cbiAgY29uc3QgdmFsdWVUcmltbWVkID0gdmFsdWUudHJpbSgpO1xuXG4gIGNvbnN0IGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayA9XG4gICAgb25TZWFyY2hBc1lvdVR5cGUgJiYgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyAmJiAhc2VhcmNoUmVzdWx0Q2xpY2tlZDtcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jICgpID0+IHtcbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB1c2VyIG1hZGUgYSBzZWFyY2ggYW5kIHRoZW4gY2xvc2VkIHNlYXJjaCBwYW5lXG4gICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayAmJiB2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0b2dnbGVTZWFyY2goKTtcbiAgICAvLyBhZGRzIGEgbGl0dGxlIGRlbGF5IGJldHdlZW4gY2xvc2luZyB0aGUgc2VhcmNoIHBhbmUgYW5kIGZvY3VzaW5nIG9uIHRoZSBidXR0b25cbiAgICAvLyB0byBwcmV2ZW50IHRoZSBzZWFyY2ggcGFuZSBmcm9tIGltbWVkaWF0ZWx5IG9wZW5pbmcgYWdhaW5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChzZWFyY2hCdXR0b25SZWYgJiYgc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50KSB7XG4gICAgICAgIHNlYXJjaEJ1dHRvblJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sIDEwKTtcbiAgfTtcblxuICBjb25zdCBvbktleURvd24gPSB1c2VPbkVzY0hhbmRsZXIoY2xvc2VTZWFyY2gpO1xuXG4gIGNvbnN0IG9uTW91c2VEb3duT3V0c2lkZSA9ICh7IHRhcmdldCB9OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgaGFuZGxlT3V0c2lkZUNsaWNrID0gKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAhZG9jdW1lbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvcignW2RhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXScpXG4gICAgICAgICAgPy5jb250YWlucyh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpICYmXG4gICAgICAgIHRhcmdldCAhPT0gc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgIH1cblxuICAgICAgdGFyZ2V0Py5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgICB9O1xuXG4gICAgdGFyZ2V0Py5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgfTtcblxuICBjb25zdCBuYXZpZ2F0ZVRvU2VhcmNoID0gKHNlYXJjaFRlcm06IHN0cmluZywgZnJvbVByZXZTZWFyY2g/OiBzdHJpbmcpID0+IHtcbiAgICBvblNlYXJjaChzZWFyY2hUZXJtLCBmcm9tUHJldlNlYXJjaCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlOiBSZWFjdC5DaGFuZ2VFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgc2V0VmFsdWUoZXZ0LnRhcmdldC52YWx1ZSk7XG4gICAgLy8gcmVzZXQgdG8gZmFsc2Ugd2hlbiB0aGUgc2VhcmNoIHF1ZXJ5IGNoYW5nZXNcbiAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKGZhbHNlKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVTdWJtaXQ6IFJlYWN0LkZvcm1FdmVudEhhbmRsZXIgPSAoZXZlbnQpID0+IHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IHdoZW4gdGhlIHVzZXIgc3VibWl0cyB0aGUgZm9ybSB0byBjYXB0dXJlIGNvbXBsZXRlIHF1ZXJ5XG4gICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljaykge1xuICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gIH07XG5cbiAgY29uc3QgY2xlYXJJbnB1dCA9ICgpID0+IHtcbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgYmVmb3JlIHVzZXIgY2xlYXJzIGlucHV0XG4gICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayAmJiB2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICB9XG5cbiAgICBzZXRWYWx1ZSgnJyk7XG4gICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgIC8vIHJlc2V0IHRoZSBjb250ZXh0IHdpdGggZW1wdHkgdmFsdWVzXG4gICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgcXVlcnk6ICcnLFxuICAgICAgc2VhcmNoSWQ6ICcnLFxuICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICB9KTtcbiAgfTtcblxuICAvLyB3aGVuIHRoZSBjdXJyZW50IFVSTCBjaGFuZ2VzLCB3ZSB3YW50IHRvIGNsb3NlIHRoZSBzZWFyY2ggcGFuZSBpZiBpdCdzIG9wZW5cbiAgLy8gYW5kIHRyYWNrIHNlYXJjaCBldmVudCBpZiB1c2VyIG1hZGUgYSBzZWFyY2hcbiAgdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uKHtcbiAgICBvblVybENoYW5nZTogKCkgPT4ge1xuICAgICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayAmJiB2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICAgIH1cblxuICAgICAgdG9nZ2xlU2VhcmNoKCk7XG4gICAgfSxcbiAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBkb24ndCB0cmFjayBpZiBhIHJlc3VsdCB3YXMgY2xpY2tlZCBvciBpZiB3ZSBkb24ndCBoYXZlIHNlYXJjaCByZXN1bHRzXG4gICAgaWYgKFxuICAgICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCB8fFxuICAgICAgIW9uU2VhcmNoQXNZb3VUeXBlIHx8XG4gICAgICAhc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8fFxuICAgICAgIXZhbHVlVHJpbW1lZC5sZW5ndGhcbiAgICApXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1yZXR1cm5cbiAgICAgIHJldHVybjtcbiAgfSwgW1xuICAgIHNlYXJjaFJlc3VsdENsaWNrZWQsXG4gICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyxcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gIF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5wdXRSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICBzZWFyY2hXb3JrZXIuaW5pdCgpO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXZhbHVlVHJpbW1lZC5sZW5ndGgpIHtcbiAgICAgIHNldFNlYXJjaEFzWW91VHlwZVJlc3VsdHMobnVsbCk7XG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiAnJyxcbiAgICAgICAgc2VhcmNoSWQ6ICcnLFxuICAgICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IDAsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgY2FuY2VsID0gZmFsc2U7XG4gICAgbGV0IGNsZWFyQXV0b2NvbXBsZXRlID0gdHJ1ZTtcbiAgICBsZXQgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSB0cnVlO1xuXG4gICAgbGV0IHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheTogTm9kZUpTLlRpbWVvdXQ7XG5cbiAgICBjb25zdCBsb2FkZXJEZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLypcbiAgICAgICAqIFdhaXQgMTAgbWlsbGlzZWNvbmRzIHRvIGdldCBhIHJlc3BvbnNlIGZvciB3b3JrZXIgYmVmb3JlIHNob3dpbmcgbG9hZGVycy5cbiAgICAgICAqIFRoaXMgcHJldmVudHMgZmxpY2tlcmluZyBsb2FkZXJzIG9uIHF1aWNrIG9yIGNhY2hlZCByZXN1bHRzLlxuICAgICAgICovXG4gICAgICBpZiAoY2FuY2VsKSByZXR1cm47XG4gICAgICBpZiAoY2xlYXJBdXRvY29tcGxldGUpIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIGlmIChjbGVhclNlYXJjaEFzWW91VHlwZSkgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICB9LCAxMCk7XG5cbiAgICBzZWFyY2hXb3JrZXIuYXV0b2NvbXBsZXRlKHZhbHVlVHJpbW1lZCkudGhlbigoc3VnZ2VzdGlvbnMpID0+IHtcbiAgICAgIGNsZWFyQXV0b2NvbXBsZXRlID0gZmFsc2U7XG5cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjsgLy8gdGV4dCBoYXMgY2hhbmdlZCBzaW5jZSB0aGlzIHJlcXVlc3Qgd2FzIG1hZGVcblxuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoc3VnZ2VzdGlvbnMpO1xuICAgIH0pO1xuXG4gICAgc2VhcmNoV29ya2VyLnNlYXJjaEFzWW91VHlwZSh2YWx1ZVRyaW1tZWQpLnRoZW4oKHJlc3VsdHMpID0+IHtcbiAgICAgIGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gZmFsc2U7XG5cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjsgLy8gdGV4dCBoYXMgY2hhbmdlZCBzaW5jZSB0aGlzIHJlcXVlc3Qgd2FzIG1hZGVcblxuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhyZXN1bHRzKTtcblxuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogcmVzdWx0cy5xdWVyeSxcbiAgICAgICAgc2VhcmNoSWQ6IHJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgIHJlc3VsdHNDb3VudDogcmVzdWx0cy50b3AubGVuZ3RoLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiByZXN1bHRzLnF1ZXJ5TG9hZFRpbWUsXG4gICAgICB9KTtcblxuICAgICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IHdpdGggYSBzbWFsbCBkZWxheSB3aGVuIHRoZXJlIGFyZSBubyByZXN1bHRzXG4gICAgICBpZiAoXG4gICAgICAgIG9uU2VhcmNoQXNZb3VUeXBlICYmXG4gICAgICAgIHJlc3VsdHMudG9wLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAhc2VhcmNoUmVzdWx0Q2xpY2tlZFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCBxdWVyeUxvYWRUaW1lIH0gPSByZXN1bHRzO1xuICAgICAgICBzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoIWNhbmNlbCkge1xuICAgICAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCAwLCBxdWVyeUxvYWRUaW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDMwMCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY2FuY2VsID0gdHJ1ZTtcbiAgICAgIGNsZWFyVGltZW91dChsb2FkZXJEZWxheSk7XG4gICAgICBjbGVhclRpbWVvdXQoc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5KTtcbiAgICB9O1xuICB9LCBbXG4gICAgdmFsdWVUcmltbWVkLFxuICAgIG9uU2VhcmNoQXNZb3VUeXBlLFxuICAgIHNlYXJjaFJlc3VsdENsaWNrZWQsXG4gICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMsXG4gIF0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgYmc9XCJzaGFkb3ctc2Vjb25kYXJ5XCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwdmhcIlxuICAgICAgICBwb3NpdGlvbj1cImZpeGVkXCJcbiAgICAgICAgLy8gV2UgYWRkIDZyZW0gaGVyZSBpbiBjYXNlIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGJyYW5kZWQgYmFubmVyIGFib3ZlIHNlYXJjaFxuICAgICAgICAvLyBUaGUgc2VhcmNoIGFyZWEgaXMgbXVjaCB0YWxsZXIgdGhhbiA2cmVtIHNvIHRoaXMgaXMgYSBzYWZlIGFtb3VudCBvZiBwYWRkaW5nXG4gICAgICAgIHRvcD17YGNhbGMoJHt0aGVtZS5lbGVtZW50cy5oZWFkZXJIZWlnaHR9ICsgNnJlbSlgfVxuICAgICAgICB3aWR0aD17MX1cbiAgICAgIC8+XG4gICAgICA8Rm9jdXNUcmFwXG4gICAgICAgIG9uRXNjYXBlS2V5PXtjbG9zZVNlYXJjaH1cbiAgICAgICAgb25DbGlja091dHNpZGU9e29uTW91c2VEb3duT3V0c2lkZX1cbiAgICAgICAgYWxsb3dQYWdlSW50ZXJhY3Rpb25cbiAgICAgID5cbiAgICAgICAgPEJveFxuICAgICAgICAgIGJnPVwiYmFja2dyb3VuZFwiXG4gICAgICAgICAgYm9yZGVyQ29sb3JCb3R0b209XCJib3JkZXItcHJpbWFyeVwiXG4gICAgICAgICAgYm9yZGVyQ29sb3JUb3A9XCJib3JkZXItdGVydGlhcnlcIlxuICAgICAgICAgIGJvcmRlclN0eWxlPVwic29saWRcIlxuICAgICAgICAgIGJvcmRlcldpZHRoPVwiMnB4IDAgMXB4XCJcbiAgICAgICAgICBkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIlxuICAgICAgICAgIHBvc2l0aW9uPXt7IF86ICdmaXhlZCcsIG1kOiAnYWJzb2x1dGUnIH19XG4gICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICBtYXhIZWlnaHQ9e3sgXzogJ2NhbGMoMTAwdmggLSA2M3B4KScsIG1kOiAnY2FsYygxMDB2aCAtIDgwcHgpJyB9fVxuICAgICAgICAgIG92ZXJmbG93PVwiYXV0b1wiXG4gICAgICAgICAgekluZGV4PXsxMH0gLy8gZW5zdXJlIGRyb3Bkb3duIGlzIGFib3ZlIHRoZSBwYWdlIGNvbnRlbnRcbiAgICAgICAgPlxuICAgICAgICAgIDxCb3ggYm9yZGVyPVwibm9uZVwiIHdpZHRoPVwiYXV0b1wiPlxuICAgICAgICAgICAgPFF1ZXJ5Q29udGFpbmVyICRjb21wYWN0PXshIXNob3dNYXJrZXRpbmdCYW5uZXJ9PlxuICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgIGFsaWduSXRlbXM9XCJiYXNlbGluZVwiXG4gICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJncmF5LTYwMFwiXG4gICAgICAgICAgICAgICAgYm9yZGVyU3R5bGVCb3R0b209XCJzb2xpZFwiXG4gICAgICAgICAgICAgICAgYm9yZGVyV2lkdGhCb3R0b209XCIxcHhcIlxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U2VhcmNoSWNvblxuICAgICAgICAgICAgICAgICAgaGVpZ2h0PXt7IF86IDIwLCBtZDogMjQgfX1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPXt7IF86IDIwLCBtZDogMjQgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxGb3JtXG4gICAgICAgICAgICAgICAgICBhY3Rpb249XCIvc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwic2VhcmNoLWZvcm1cIlxuICAgICAgICAgICAgICAgICAgbWw9ezh9XG4gICAgICAgICAgICAgICAgICBvblN1Ym1pdD17aGFuZGxlU3VibWl0fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgYXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDIwLCBtZDogMjYgfX1cbiAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodD1cImJvbGRcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImhlYWRlci1zZWFyY2gtYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInF1ZXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZSkgPT4gb25LZXlEb3duKGUpfVxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17c2VhcmNoUGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgICAgICAgIHJlZj17aW5wdXRSZWZ9XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgIGF1dG9Db21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvRm9ybT5cbiAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgaWNvbj17TWluaURlbGV0ZUljb259XG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXBQcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50OiAnZmxvYXRpbmcnLFxuICAgICAgICAgICAgICAgICAgICBuYXJyb3c6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHpJbmRleDogMixcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtjbGVhcklucHV0fVxuICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICA8L1F1ZXJ5Q29udGFpbmVyPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIHtzaG93TWFya2V0aW5nQmFubmVyICYmIChcbiAgICAgICAgICAgIDxDb250ZW50Q29udGFpbmVyPlxuICAgICAgICAgICAgICA8TWFya2V0aW5nQmFubmVyXG4gICAgICAgICAgICAgICAgc291cmNlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICB0ZXh0PXtiYW5uZXI/LnRleHR9XG4gICAgICAgICAgICAgICAgaHJlZj17YmFubmVyPy5ocmVmfVxuICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgIHB5PXt7IF86IDE2LCBsZzogMjQgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29udGVudENvbnRhaW5lcj5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxTdWdnZXN0aW9uQ29udGFpbmVyICRjb21wYWN0PXshIXNob3dNYXJrZXRpbmdCYW5uZXJ9PlxuICAgICAgICAgICAge3ZhbHVlVHJpbW1lZC5sZW5ndGggPiAwID8gKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxGbGV4Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiBhcz1cInVsXCIgbGlzdFN0eWxlPVwibm9uZVwiIHA9ezB9PlxuICAgICAgICAgICAgICAgICAge2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e3MudGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ2F1dG9jb21wbGV0ZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VtaWJvbGRTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYj17MiBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17OH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBtcj17MTJ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgeyhzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cImgyXCIgZm9udFNpemU9ezIwfSBtYj17MTZ9IG10PXsyNH0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9wIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIGFzPVwidWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHA9ezB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWFyY2hBc1lvdVR5cGVMb2FkZXI/LnNoaW1tZXJSb3dzLm1hcCgocikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVMb2FkZXJMaSBrZXk9e3Iua2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyLnNoaW1tZXJzLm1hcCgod29yZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2hpbW1lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MzB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHk9ezggYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3dvcmQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXt3b3JkLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDEwIGFzIDE2IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiYm9yZGVyLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwieGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk9ezAuMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZUxvYWRlckxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMucXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8Qm94IGZvbnRTaXplPXt7IF86IDIwLCBzbTogMjYgfX0gbXQ9ezB9IG1iPXs0OH0+XG4gICAgICAgICAgICAgICAgICAgICAge2BXZSBjb3VsZG4ndCBmaW5kIGEgbWF0Y2ggZm9yIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQgZm9udFdlaWdodD1cImJvbGRcIj57YFwiJHt2YWx1ZVRyaW1tZWR9LlwiYH08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJyBUcnkgYW5vdGhlciBrZXl3b3JkLCBvciBzZWUgd2hhdCBvdXIgbWVtYmVycyBhcmUgbGVhcm5pbmcuJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8UG9wdWxhclNlYXJjaGVzXG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoPXtuYXZpZ2F0ZVRvU2VhcmNofVxuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHshIXNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8U3Ryb2tlQnV0dG9uXG4gICAgICAgICAgICAgICAgbXk9ezE2fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygndmlld19hbGxfcmVzdWx0cycsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IGFsbCByZXN1bHRzXG4gICAgICAgICAgICAgIDwvU3Ryb2tlQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxRdWl6QW5kSGVscENlbnRlckxpbmtzXG4gICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURyb3Bkb3duPXtjbG9zZVNlYXJjaH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdWdnZXN0aW9uQ29udGFpbmVyPlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRm9jdXNUcmFwPlxuICAgIDwvPlxuICApO1xufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvRXVCIn0= */");
68
+ const InlineLoaderLi = /* @__PURE__ */ (0, _emotion_styled.default)("li", {
69
+ target: "ebeevrx4",
70
+ label: "brand-InlineLoaderLi"
71
+ })((0, _codecademy_gamut_styles.css)({
72
+ listStyleType: "none",
73
+ display: "flex",
74
+ gap: 12,
75
+ alignItems: "center"
76
+ }), "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvbW9uby9tb25vL2xpYnMvdWkvYnJhbmQvc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL21vbm8vbW9uby9saWJzL3VpL2JyYW5kL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhZGdlLFxuICBCb3gsXG4gIENvbnRlbnRDb250YWluZXIsXG4gIEZsZXhCb3gsXG4gIEZvY3VzVHJhcCxcbiAgSWNvbkJ1dHRvbixcbiAgTWVudSxcbiAgTWVudUl0ZW0sXG4gIFNoaW1tZXIsXG4gIFN0cm9rZUJ1dHRvbixcbiAgVGV4dCxcbn0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQnO1xuaW1wb3J0IHsgTWluaURlbGV0ZUljb24sIFNlYXJjaEljb24gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1pY29ucyc7XG5pbXBvcnQgeyBjc3MsIHRoZW1lLCB1c2VDdXJyZW50TW9kZSB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0LXN0eWxlcyc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgdXNlR2xvYmFsSGVhZGVyRHluYW1pY0RhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vR2xvYmFsSGVhZGVyL2NvbnRleHQnO1xuaW1wb3J0IHsgTWFya2V0aW5nQmFubmVyIH0gZnJvbSAnLi4vQXBwSGVhZGVyRWxlbWVudHMvQXBwSGVhZGVyQ2F0YWxvZ0Ryb3Bkb3duL01hcmtldGluZ0Jhbm5lcic7XG5pbXBvcnQgeyB1c2VPbkVzY0hhbmRsZXIgfSBmcm9tICcuLi9zaGFyZWQnO1xuaW1wb3J0IHsgc2VhcmNoUGxhY2Vob2xkZXIgfSBmcm9tICcuL2NvbnN0cyc7XG5pbXBvcnQgeyBQb3B1bGFyQ29udGVudCwgUG9wdWxhclNlYXJjaGVzIH0gZnJvbSAnLi9EZWZhdWx0UmVzdWx0cyc7XG5pbXBvcnQgeyB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24gfSBmcm9tICcuL2hvb2tzL3VzZVVybENoYW5nZURldGVjdGlvbic7XG5pbXBvcnQgeyBRdWl6QW5kSGVscENlbnRlckxpbmtzIH0gZnJvbSAnLi9RdWl6QW5kSGVscENlbnRlckxpbmtzJztcbmltcG9ydCB7IHNhZmVseVJlZGlyZWN0IH0gZnJvbSAnLi9zYWZlbHlSZWRpcmVjdCc7XG5pbXBvcnQgeyB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQgfSBmcm9tICcuL1NlYXJjaFRyYWNraW5nUHJvdmlkZXInO1xuaW1wb3J0IHsgc2VhcmNoV29ya2VyIH0gZnJvbSAnLi9TZWFyY2hXb3JrZXInO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVTdWdnZXN0aW9uLFxuICBTZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxufSBmcm9tICcuL1NlYXJjaFdvcmtlci90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hQYW5lUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgRm9ybSA9IEJveC53aXRoQ29tcG9uZW50KCdmb3JtJyk7XG5jb25zdCBJbnB1dCA9IEJveC53aXRoQ29tcG9uZW50KCdpbnB1dCcpO1xuXG5jb25zdCBRdWVyeUNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKTx7ICRjb21wYWN0PzogYm9vbGVhbiB9PihcbiAgKHsgJGNvbXBhY3QgfSkgPT5cbiAgICBjc3Moe1xuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgIHB0OiAxNixcbiAgICAgIHBiOiAkY29tcGFjdCA/IHsgXzogMCwgbWQ6IDQgfSA6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgICBweDogeyBfOiAyNCB9LFxuICAgIH0pXG4pO1xuXG5jb25zdCBTdWdnZXN0aW9uQ29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpPHsgJGNvbXBhY3Q/OiBib29sZWFuIH0+KFxuICAoeyAkY29tcGFjdCB9KSA9PlxuICAgIGNzcyh7XG4gICAgICBwdDogJGNvbXBhY3QgPyA0IDogMTYsXG4gICAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICAgIHB4OiB7IF86IDI0IH0sXG4gICAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KShcbiAgY3NzKHtcbiAgICBvdXRsaW5lOiBgbm9uZWAsXG4gICAgJyY6OnBsYWNlaG9sZGVyJzoge1xuICAgICAgdGV4dENvbG9yOiB0aGVtZS5jb2xvcnNbJ3RleHQtc2Vjb25kYXJ5J10gYXMgbmV2ZXIsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZVJlc3VsdExpID0gc3R5bGVkKE1lbnVJdGVtKShcbiAgY3NzKHtcbiAgICBwbDogMCxcbiAgICBweTogOCxcbiAgICBmb250U2l6ZTogMTYsXG4gICAgJyY6Zm9jdXMtdmlzaWJsZTphZnRlcic6IHtcbiAgICAgIGxlZnQ6IC00LFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVMb2FkZXJMaSA9IHN0eWxlZC5saShcbiAgY3NzKHtcbiAgICBsaXN0U3R5bGVUeXBlOiAnbm9uZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogMTIsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgU2VtaWJvbGRTZWFyY2hJY29uID0gc3R5bGVkKFNlYXJjaEljb24pYFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBjaXJjbGUsXG4gIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICB9XG4gIHJlY3Qge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0ycHgsIC0ycHgpO1xuICAgIGhlaWdodDogY2FsYygxMDAlICsgNHB4KTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNHB4KTtcbiAgfVxuYDtcblxuY29uc3QgRWxsaXBzaXNCb3ggPSBzdHlsZWQoQm94KWBcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gO1xuXG5jb25zdCBIaWdobGlnaHRlZFRleHQgPSAoe1xuICBzdWdnZXN0aW9uOiB7IHRpdGxlLCBzZWdtZW50cyB9LFxufToge1xuICBzdWdnZXN0aW9uOiBBdXRvY29tcGxldGVTdWdnZXN0aW9uO1xufSkgPT4ge1xuICBjb25zdCBtb2RlID0gdXNlQ3VycmVudE1vZGUoKTtcbiAgY29uc3QgaGlnaGxpZ2h0Q29sb3IgPSBtb2RlID09PSAnZGFyaycgPyAnaHlwZXInIDogJ3llbGxvdyc7XG5cbiAgcmV0dXJuIChcbiAgICA8RmxleEJveD5cbiAgICAgIDxFbGxpcHNpc0JveFxuICAgICAgICBtYXhXaWR0aD1cImNhbGMoMTAwdncgLSAxMjhweClcIlxuICAgICAgICB3aGl0ZVNwYWNlPVwicHJlXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpKSA9PiAoXG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGtleT17YCR7dGl0bGV9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICBsaW5lSGVpZ2h0PVwidGl0bGVcIlxuICAgICAgICAgICAgey4uLihzZWdtZW50LmhpZ2hsaWdodFxuICAgICAgICAgICAgICA/IHsgYmc6IGhpZ2hsaWdodENvbG9yLCBmb250V2VpZ2h0OiAnYm9sZCcgfVxuICAgICAgICAgICAgICA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2VnbWVudC52YWx1ZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICkpfVxuICAgICAgPC9FbGxpcHNpc0JveD5cbiAgICAgIDxUZXh0IHNjcmVlbnJlYWRlcj57dGl0bGV9PC9UZXh0PlxuICAgIDwvRmxleEJveD5cbiAgKTtcbn07XG5cbnR5cGUgU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0ge1xuICBzaGltbWVyUm93czoge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHNoaW1tZXJzOiB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgfVtdO1xuICB9W107XG59O1xuXG5sZXQgbG9hZGVyS2V5ID0gMDtcbmZ1bmN0aW9uIHJuZExvYWRlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gIGNvbnN0IGtleSA9IGxvYWRlcktleSsrO1xuICBjb25zdCBsb2FkZXI6IFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHsgc2hpbW1lclJvd3M6IFtdIH07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0ge1xuICAgICAga2V5OiBgJHtrZXl9OiR7aX1gLFxuICAgICAgc2hpbW1lcnM6IFtdIGFzIHsga2V5OiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdLFxuICAgIH07XG4gICAgY29uc3Qgd29yZHMgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZHM7IGorKykge1xuICAgICAgY29uc3Qgd2lkdGggPSAxMiArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk2KTtcbiAgICAgIHJvdy5zaGltbWVycy5wdXNoKHtcbiAgICAgICAga2V5OiBgJHtrZXl9OiR7an1gLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkZXIuc2hpbW1lclJvd3MucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBsb2FkZXI7XG59XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hQYW5lOiBSZWFjdC5GQzxTZWFyY2hQYW5lUHJvcHM+ID0gKHtcbiAgb25TZWFyY2gsXG4gIG9uVHJhY2tpbmdDbGljayxcbiAgc2VhcmNoQnV0dG9uUmVmLFxuICB0b2dnbGVTZWFyY2gsXG4gIG9uU2VhcmNoQXNZb3VUeXBlLFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLCBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9uc10gPSB1c2VTdGF0ZTxcbiAgICBBdXRvY29tcGxldGVTdWdnZXN0aW9uW11cbiAgPihbXSk7XG4gIGNvbnN0IFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLCBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzXSA9XG4gICAgdXNlU3RhdGU8U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRDbGlja2VkLCBzZXRTZWFyY2hSZXN1bHRDbGlja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcbiAgY29uc3QgeyBnbG9iYWxIZWFkZXJEeW5hbWljRGF0YSB9ID0gdXNlR2xvYmFsSGVhZGVyRHluYW1pY0RhdGFDb250ZXh0KCk7XG5cbiAgY29uc3QgYmFubmVyID0gZ2xvYmFsSGVhZGVyRHluYW1pY0RhdGE/LmNhdGFsb2dEcm9wZG93bj8uYmFubmVyO1xuICBjb25zdCBzaG93TWFya2V0aW5nQmFubmVyID0gYmFubmVyPy50ZXh0ICYmIGJhbm5lcj8uaHJlZiAmJiBNYXJrZXRpbmdCYW5uZXI7XG5cbiAgY29uc3Qgc2VhcmNoQXNZb3VUeXBlTG9hZGVyID0gUmVhY3QudXNlTWVtbyhcbiAgICAoKSA9PiAoc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbCA/IHJuZExvYWRlcigpIDogbnVsbCksXG4gICAgW3NlYXJjaEFzWW91VHlwZVJlc3VsdHNdXG4gICk7XG5cbiAgY29uc3QgdmFsdWVUcmltbWVkID0gdmFsdWUudHJpbSgpO1xuXG4gIGNvbnN0IGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayA9XG4gICAgb25TZWFyY2hBc1lvdVR5cGUgJiYgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyAmJiAhc2VhcmNoUmVzdWx0Q2xpY2tlZDtcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jICgpID0+IHtcbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB1c2VyIG1hZGUgYSBzZWFyY2ggYW5kIHRoZW4gY2xvc2VkIHNlYXJjaCBwYW5lXG4gICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayAmJiB2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0b2dnbGVTZWFyY2goKTtcbiAgICAvLyBhZGRzIGEgbGl0dGxlIGRlbGF5IGJldHdlZW4gY2xvc2luZyB0aGUgc2VhcmNoIHBhbmUgYW5kIGZvY3VzaW5nIG9uIHRoZSBidXR0b25cbiAgICAvLyB0byBwcmV2ZW50IHRoZSBzZWFyY2ggcGFuZSBmcm9tIGltbWVkaWF0ZWx5IG9wZW5pbmcgYWdhaW5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChzZWFyY2hCdXR0b25SZWYgJiYgc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50KSB7XG4gICAgICAgIHNlYXJjaEJ1dHRvblJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sIDEwKTtcbiAgfTtcblxuICBjb25zdCBvbktleURvd24gPSB1c2VPbkVzY0hhbmRsZXIoY2xvc2VTZWFyY2gpO1xuXG4gIGNvbnN0IG9uTW91c2VEb3duT3V0c2lkZSA9ICh7IHRhcmdldCB9OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgaGFuZGxlT3V0c2lkZUNsaWNrID0gKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAhZG9jdW1lbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvcignW2RhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXScpXG4gICAgICAgICAgPy5jb250YWlucyh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpICYmXG4gICAgICAgIHRhcmdldCAhPT0gc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgIH1cblxuICAgICAgdGFyZ2V0Py5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgICB9O1xuXG4gICAgdGFyZ2V0Py5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgfTtcblxuICBjb25zdCBuYXZpZ2F0ZVRvU2VhcmNoID0gKHNlYXJjaFRlcm06IHN0cmluZywgZnJvbVByZXZTZWFyY2g/OiBzdHJpbmcpID0+IHtcbiAgICBvblNlYXJjaChzZWFyY2hUZXJtLCBmcm9tUHJldlNlYXJjaCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlOiBSZWFjdC5DaGFuZ2VFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgc2V0VmFsdWUoZXZ0LnRhcmdldC52YWx1ZSk7XG4gICAgLy8gcmVzZXQgdG8gZmFsc2Ugd2hlbiB0aGUgc2VhcmNoIHF1ZXJ5IGNoYW5nZXNcbiAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKGZhbHNlKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVTdWJtaXQ6IFJlYWN0LkZvcm1FdmVudEhhbmRsZXIgPSAoZXZlbnQpID0+IHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IHdoZW4gdGhlIHVzZXIgc3VibWl0cyB0aGUgZm9ybSB0byBjYXB0dXJlIGNvbXBsZXRlIHF1ZXJ5XG4gICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljaykge1xuICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gIH07XG5cbiAgY29uc3QgY2xlYXJJbnB1dCA9ICgpID0+IHtcbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgYmVmb3JlIHVzZXIgY2xlYXJzIGlucHV0XG4gICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayAmJiB2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICB9XG5cbiAgICBzZXRWYWx1ZSgnJyk7XG4gICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgIC8vIHJlc2V0IHRoZSBjb250ZXh0IHdpdGggZW1wdHkgdmFsdWVzXG4gICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgcXVlcnk6ICcnLFxuICAgICAgc2VhcmNoSWQ6ICcnLFxuICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICB9KTtcbiAgfTtcblxuICAvLyB3aGVuIHRoZSBjdXJyZW50IFVSTCBjaGFuZ2VzLCB3ZSB3YW50IHRvIGNsb3NlIHRoZSBzZWFyY2ggcGFuZSBpZiBpdCdzIG9wZW5cbiAgLy8gYW5kIHRyYWNrIHNlYXJjaCBldmVudCBpZiB1c2VyIG1hZGUgYSBzZWFyY2hcbiAgdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uKHtcbiAgICBvblVybENoYW5nZTogKCkgPT4ge1xuICAgICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayAmJiB2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICAgIH1cblxuICAgICAgdG9nZ2xlU2VhcmNoKCk7XG4gICAgfSxcbiAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBkb24ndCB0cmFjayBpZiBhIHJlc3VsdCB3YXMgY2xpY2tlZCBvciBpZiB3ZSBkb24ndCBoYXZlIHNlYXJjaCByZXN1bHRzXG4gICAgaWYgKFxuICAgICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCB8fFxuICAgICAgIW9uU2VhcmNoQXNZb3VUeXBlIHx8XG4gICAgICAhc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8fFxuICAgICAgIXZhbHVlVHJpbW1lZC5sZW5ndGhcbiAgICApXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1yZXR1cm5cbiAgICAgIHJldHVybjtcbiAgfSwgW1xuICAgIHNlYXJjaFJlc3VsdENsaWNrZWQsXG4gICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyxcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gIF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5wdXRSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICBzZWFyY2hXb3JrZXIuaW5pdCgpO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXZhbHVlVHJpbW1lZC5sZW5ndGgpIHtcbiAgICAgIHNldFNlYXJjaEFzWW91VHlwZVJlc3VsdHMobnVsbCk7XG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiAnJyxcbiAgICAgICAgc2VhcmNoSWQ6ICcnLFxuICAgICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IDAsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgY2FuY2VsID0gZmFsc2U7XG4gICAgbGV0IGNsZWFyQXV0b2NvbXBsZXRlID0gdHJ1ZTtcbiAgICBsZXQgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSB0cnVlO1xuXG4gICAgbGV0IHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheTogTm9kZUpTLlRpbWVvdXQ7XG5cbiAgICBjb25zdCBsb2FkZXJEZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLypcbiAgICAgICAqIFdhaXQgMTAgbWlsbGlzZWNvbmRzIHRvIGdldCBhIHJlc3BvbnNlIGZvciB3b3JrZXIgYmVmb3JlIHNob3dpbmcgbG9hZGVycy5cbiAgICAgICAqIFRoaXMgcHJldmVudHMgZmxpY2tlcmluZyBsb2FkZXJzIG9uIHF1aWNrIG9yIGNhY2hlZCByZXN1bHRzLlxuICAgICAgICovXG4gICAgICBpZiAoY2FuY2VsKSByZXR1cm47XG4gICAgICBpZiAoY2xlYXJBdXRvY29tcGxldGUpIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIGlmIChjbGVhclNlYXJjaEFzWW91VHlwZSkgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICB9LCAxMCk7XG5cbiAgICBzZWFyY2hXb3JrZXIuYXV0b2NvbXBsZXRlKHZhbHVlVHJpbW1lZCkudGhlbigoc3VnZ2VzdGlvbnMpID0+IHtcbiAgICAgIGNsZWFyQXV0b2NvbXBsZXRlID0gZmFsc2U7XG5cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjsgLy8gdGV4dCBoYXMgY2hhbmdlZCBzaW5jZSB0aGlzIHJlcXVlc3Qgd2FzIG1hZGVcblxuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoc3VnZ2VzdGlvbnMpO1xuICAgIH0pO1xuXG4gICAgc2VhcmNoV29ya2VyLnNlYXJjaEFzWW91VHlwZSh2YWx1ZVRyaW1tZWQpLnRoZW4oKHJlc3VsdHMpID0+IHtcbiAgICAgIGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gZmFsc2U7XG5cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjsgLy8gdGV4dCBoYXMgY2hhbmdlZCBzaW5jZSB0aGlzIHJlcXVlc3Qgd2FzIG1hZGVcblxuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhyZXN1bHRzKTtcblxuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogcmVzdWx0cy5xdWVyeSxcbiAgICAgICAgc2VhcmNoSWQ6IHJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgIHJlc3VsdHNDb3VudDogcmVzdWx0cy50b3AubGVuZ3RoLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiByZXN1bHRzLnF1ZXJ5TG9hZFRpbWUsXG4gICAgICB9KTtcblxuICAgICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IHdpdGggYSBzbWFsbCBkZWxheSB3aGVuIHRoZXJlIGFyZSBubyByZXN1bHRzXG4gICAgICBpZiAoXG4gICAgICAgIG9uU2VhcmNoQXNZb3VUeXBlICYmXG4gICAgICAgIHJlc3VsdHMudG9wLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAhc2VhcmNoUmVzdWx0Q2xpY2tlZFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCBxdWVyeUxvYWRUaW1lIH0gPSByZXN1bHRzO1xuICAgICAgICBzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoIWNhbmNlbCkge1xuICAgICAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCAwLCBxdWVyeUxvYWRUaW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDMwMCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY2FuY2VsID0gdHJ1ZTtcbiAgICAgIGNsZWFyVGltZW91dChsb2FkZXJEZWxheSk7XG4gICAgICBjbGVhclRpbWVvdXQoc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5KTtcbiAgICB9O1xuICB9LCBbXG4gICAgdmFsdWVUcmltbWVkLFxuICAgIG9uU2VhcmNoQXNZb3VUeXBlLFxuICAgIHNlYXJjaFJlc3VsdENsaWNrZWQsXG4gICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMsXG4gIF0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgYmc9XCJzaGFkb3ctc2Vjb25kYXJ5XCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwdmhcIlxuICAgICAgICBwb3NpdGlvbj1cImZpeGVkXCJcbiAgICAgICAgLy8gV2UgYWRkIDZyZW0gaGVyZSBpbiBjYXNlIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGJyYW5kZWQgYmFubmVyIGFib3ZlIHNlYXJjaFxuICAgICAgICAvLyBUaGUgc2VhcmNoIGFyZWEgaXMgbXVjaCB0YWxsZXIgdGhhbiA2cmVtIHNvIHRoaXMgaXMgYSBzYWZlIGFtb3VudCBvZiBwYWRkaW5nXG4gICAgICAgIHRvcD17YGNhbGMoJHt0aGVtZS5lbGVtZW50cy5oZWFkZXJIZWlnaHR9ICsgNnJlbSlgfVxuICAgICAgICB3aWR0aD17MX1cbiAgICAgIC8+XG4gICAgICA8Rm9jdXNUcmFwXG4gICAgICAgIG9uRXNjYXBlS2V5PXtjbG9zZVNlYXJjaH1cbiAgICAgICAgb25DbGlja091dHNpZGU9e29uTW91c2VEb3duT3V0c2lkZX1cbiAgICAgICAgYWxsb3dQYWdlSW50ZXJhY3Rpb25cbiAgICAgID5cbiAgICAgICAgPEJveFxuICAgICAgICAgIGJnPVwiYmFja2dyb3VuZFwiXG4gICAgICAgICAgYm9yZGVyQ29sb3JCb3R0b209XCJib3JkZXItcHJpbWFyeVwiXG4gICAgICAgICAgYm9yZGVyQ29sb3JUb3A9XCJib3JkZXItdGVydGlhcnlcIlxuICAgICAgICAgIGJvcmRlclN0eWxlPVwic29saWRcIlxuICAgICAgICAgIGJvcmRlcldpZHRoPVwiMnB4IDAgMXB4XCJcbiAgICAgICAgICBkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIlxuICAgICAgICAgIHBvc2l0aW9uPXt7IF86ICdmaXhlZCcsIG1kOiAnYWJzb2x1dGUnIH19XG4gICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICBtYXhIZWlnaHQ9e3sgXzogJ2NhbGMoMTAwdmggLSA2M3B4KScsIG1kOiAnY2FsYygxMDB2aCAtIDgwcHgpJyB9fVxuICAgICAgICAgIG92ZXJmbG93PVwiYXV0b1wiXG4gICAgICAgICAgekluZGV4PXsxMH0gLy8gZW5zdXJlIGRyb3Bkb3duIGlzIGFib3ZlIHRoZSBwYWdlIGNvbnRlbnRcbiAgICAgICAgPlxuICAgICAgICAgIDxCb3ggYm9yZGVyPVwibm9uZVwiIHdpZHRoPVwiYXV0b1wiPlxuICAgICAgICAgICAgPFF1ZXJ5Q29udGFpbmVyICRjb21wYWN0PXshIXNob3dNYXJrZXRpbmdCYW5uZXJ9PlxuICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgIGFsaWduSXRlbXM9XCJiYXNlbGluZVwiXG4gICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJncmF5LTYwMFwiXG4gICAgICAgICAgICAgICAgYm9yZGVyU3R5bGVCb3R0b209XCJzb2xpZFwiXG4gICAgICAgICAgICAgICAgYm9yZGVyV2lkdGhCb3R0b209XCIxcHhcIlxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U2VhcmNoSWNvblxuICAgICAgICAgICAgICAgICAgaGVpZ2h0PXt7IF86IDIwLCBtZDogMjQgfX1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPXt7IF86IDIwLCBtZDogMjQgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxGb3JtXG4gICAgICAgICAgICAgICAgICBhY3Rpb249XCIvc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwic2VhcmNoLWZvcm1cIlxuICAgICAgICAgICAgICAgICAgbWw9ezh9XG4gICAgICAgICAgICAgICAgICBvblN1Ym1pdD17aGFuZGxlU3VibWl0fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgYXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDIwLCBtZDogMjYgfX1cbiAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodD1cImJvbGRcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImhlYWRlci1zZWFyY2gtYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInF1ZXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZSkgPT4gb25LZXlEb3duKGUpfVxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17c2VhcmNoUGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgICAgICAgIHJlZj17aW5wdXRSZWZ9XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgIGF1dG9Db21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvRm9ybT5cbiAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgaWNvbj17TWluaURlbGV0ZUljb259XG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXBQcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50OiAnZmxvYXRpbmcnLFxuICAgICAgICAgICAgICAgICAgICBuYXJyb3c6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHpJbmRleDogMixcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtjbGVhcklucHV0fVxuICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICA8L1F1ZXJ5Q29udGFpbmVyPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIHtzaG93TWFya2V0aW5nQmFubmVyICYmIChcbiAgICAgICAgICAgIDxDb250ZW50Q29udGFpbmVyPlxuICAgICAgICAgICAgICA8TWFya2V0aW5nQmFubmVyXG4gICAgICAgICAgICAgICAgc291cmNlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICB0ZXh0PXtiYW5uZXI/LnRleHR9XG4gICAgICAgICAgICAgICAgaHJlZj17YmFubmVyPy5ocmVmfVxuICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgIHB5PXt7IF86IDE2LCBsZzogMjQgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29udGVudENvbnRhaW5lcj5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxTdWdnZXN0aW9uQ29udGFpbmVyICRjb21wYWN0PXshIXNob3dNYXJrZXRpbmdCYW5uZXJ9PlxuICAgICAgICAgICAge3ZhbHVlVHJpbW1lZC5sZW5ndGggPiAwID8gKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxGbGV4Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiBhcz1cInVsXCIgbGlzdFN0eWxlPVwibm9uZVwiIHA9ezB9PlxuICAgICAgICAgICAgICAgICAge2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e3MudGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ2F1dG9jb21wbGV0ZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VtaWJvbGRTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYj17MiBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17OH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBtcj17MTJ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgeyhzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cImgyXCIgZm9udFNpemU9ezIwfSBtYj17MTZ9IG10PXsyNH0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9wIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIGFzPVwidWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHA9ezB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWFyY2hBc1lvdVR5cGVMb2FkZXI/LnNoaW1tZXJSb3dzLm1hcCgocikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVMb2FkZXJMaSBrZXk9e3Iua2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyLnNoaW1tZXJzLm1hcCgod29yZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2hpbW1lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MzB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHk9ezggYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3dvcmQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXt3b3JkLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDEwIGFzIDE2IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiYm9yZGVyLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwieGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk9ezAuMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZUxvYWRlckxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMucXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8Qm94IGZvbnRTaXplPXt7IF86IDIwLCBzbTogMjYgfX0gbXQ9ezB9IG1iPXs0OH0+XG4gICAgICAgICAgICAgICAgICAgICAge2BXZSBjb3VsZG4ndCBmaW5kIGEgbWF0Y2ggZm9yIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQgZm9udFdlaWdodD1cImJvbGRcIj57YFwiJHt2YWx1ZVRyaW1tZWR9LlwiYH08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJyBUcnkgYW5vdGhlciBrZXl3b3JkLCBvciBzZWUgd2hhdCBvdXIgbWVtYmVycyBhcmUgbGVhcm5pbmcuJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8UG9wdWxhclNlYXJjaGVzXG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoPXtuYXZpZ2F0ZVRvU2VhcmNofVxuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHshIXNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8U3Ryb2tlQnV0dG9uXG4gICAgICAgICAgICAgICAgbXk9ezE2fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygndmlld19hbGxfcmVzdWx0cycsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IGFsbCByZXN1bHRzXG4gICAgICAgICAgICAgIDwvU3Ryb2tlQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxRdWl6QW5kSGVscENlbnRlckxpbmtzXG4gICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURyb3Bkb3duPXtjbG9zZVNlYXJjaH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdWdnZXN0aW9uQ29udGFpbmVyPlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRm9jdXNUcmFwPlxuICAgIDwvPlxuICApO1xufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErRXVCIn0= */");
77
+ const SemiboldSearchIcon = /* @__PURE__ */ (0, _emotion_styled.default)(_codecademy_gamut_icons.SearchIcon, {
78
+ target: "ebeevrx5",
79
+ label: "brand-SemiboldSearchIcon"
80
+ })("overflow:visible !important;circle,path{stroke-width:2px;}rect{transform:translate(-2px,-2px);height:calc(100% + 4px);width:calc(100% + 4px);}", "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvbW9uby9tb25vL2xpYnMvdWkvYnJhbmQvc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL21vbm8vbW9uby9saWJzL3VpL2JyYW5kL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhZGdlLFxuICBCb3gsXG4gIENvbnRlbnRDb250YWluZXIsXG4gIEZsZXhCb3gsXG4gIEZvY3VzVHJhcCxcbiAgSWNvbkJ1dHRvbixcbiAgTWVudSxcbiAgTWVudUl0ZW0sXG4gIFNoaW1tZXIsXG4gIFN0cm9rZUJ1dHRvbixcbiAgVGV4dCxcbn0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQnO1xuaW1wb3J0IHsgTWluaURlbGV0ZUljb24sIFNlYXJjaEljb24gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1pY29ucyc7XG5pbXBvcnQgeyBjc3MsIHRoZW1lLCB1c2VDdXJyZW50TW9kZSB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0LXN0eWxlcyc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgdXNlR2xvYmFsSGVhZGVyRHluYW1pY0RhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vR2xvYmFsSGVhZGVyL2NvbnRleHQnO1xuaW1wb3J0IHsgTWFya2V0aW5nQmFubmVyIH0gZnJvbSAnLi4vQXBwSGVhZGVyRWxlbWVudHMvQXBwSGVhZGVyQ2F0YWxvZ0Ryb3Bkb3duL01hcmtldGluZ0Jhbm5lcic7XG5pbXBvcnQgeyB1c2VPbkVzY0hhbmRsZXIgfSBmcm9tICcuLi9zaGFyZWQnO1xuaW1wb3J0IHsgc2VhcmNoUGxhY2Vob2xkZXIgfSBmcm9tICcuL2NvbnN0cyc7XG5pbXBvcnQgeyBQb3B1bGFyQ29udGVudCwgUG9wdWxhclNlYXJjaGVzIH0gZnJvbSAnLi9EZWZhdWx0UmVzdWx0cyc7XG5pbXBvcnQgeyB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24gfSBmcm9tICcuL2hvb2tzL3VzZVVybENoYW5nZURldGVjdGlvbic7XG5pbXBvcnQgeyBRdWl6QW5kSGVscENlbnRlckxpbmtzIH0gZnJvbSAnLi9RdWl6QW5kSGVscENlbnRlckxpbmtzJztcbmltcG9ydCB7IHNhZmVseVJlZGlyZWN0IH0gZnJvbSAnLi9zYWZlbHlSZWRpcmVjdCc7XG5pbXBvcnQgeyB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQgfSBmcm9tICcuL1NlYXJjaFRyYWNraW5nUHJvdmlkZXInO1xuaW1wb3J0IHsgc2VhcmNoV29ya2VyIH0gZnJvbSAnLi9TZWFyY2hXb3JrZXInO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVTdWdnZXN0aW9uLFxuICBTZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxufSBmcm9tICcuL1NlYXJjaFdvcmtlci90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hQYW5lUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgRm9ybSA9IEJveC53aXRoQ29tcG9uZW50KCdmb3JtJyk7XG5jb25zdCBJbnB1dCA9IEJveC53aXRoQ29tcG9uZW50KCdpbnB1dCcpO1xuXG5jb25zdCBRdWVyeUNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKTx7ICRjb21wYWN0PzogYm9vbGVhbiB9PihcbiAgKHsgJGNvbXBhY3QgfSkgPT5cbiAgICBjc3Moe1xuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgIHB0OiAxNixcbiAgICAgIHBiOiAkY29tcGFjdCA/IHsgXzogMCwgbWQ6IDQgfSA6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgICBweDogeyBfOiAyNCB9LFxuICAgIH0pXG4pO1xuXG5jb25zdCBTdWdnZXN0aW9uQ29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpPHsgJGNvbXBhY3Q/OiBib29sZWFuIH0+KFxuICAoeyAkY29tcGFjdCB9KSA9PlxuICAgIGNzcyh7XG4gICAgICBwdDogJGNvbXBhY3QgPyA0IDogMTYsXG4gICAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICAgIHB4OiB7IF86IDI0IH0sXG4gICAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KShcbiAgY3NzKHtcbiAgICBvdXRsaW5lOiBgbm9uZWAsXG4gICAgJyY6OnBsYWNlaG9sZGVyJzoge1xuICAgICAgdGV4dENvbG9yOiB0aGVtZS5jb2xvcnNbJ3RleHQtc2Vjb25kYXJ5J10gYXMgbmV2ZXIsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZVJlc3VsdExpID0gc3R5bGVkKE1lbnVJdGVtKShcbiAgY3NzKHtcbiAgICBwbDogMCxcbiAgICBweTogOCxcbiAgICBmb250U2l6ZTogMTYsXG4gICAgJyY6Zm9jdXMtdmlzaWJsZTphZnRlcic6IHtcbiAgICAgIGxlZnQ6IC00LFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVMb2FkZXJMaSA9IHN0eWxlZC5saShcbiAgY3NzKHtcbiAgICBsaXN0U3R5bGVUeXBlOiAnbm9uZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogMTIsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgU2VtaWJvbGRTZWFyY2hJY29uID0gc3R5bGVkKFNlYXJjaEljb24pYFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBjaXJjbGUsXG4gIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICB9XG4gIHJlY3Qge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0ycHgsIC0ycHgpO1xuICAgIGhlaWdodDogY2FsYygxMDAlICsgNHB4KTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNHB4KTtcbiAgfVxuYDtcblxuY29uc3QgRWxsaXBzaXNCb3ggPSBzdHlsZWQoQm94KWBcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gO1xuXG5jb25zdCBIaWdobGlnaHRlZFRleHQgPSAoe1xuICBzdWdnZXN0aW9uOiB7IHRpdGxlLCBzZWdtZW50cyB9LFxufToge1xuICBzdWdnZXN0aW9uOiBBdXRvY29tcGxldGVTdWdnZXN0aW9uO1xufSkgPT4ge1xuICBjb25zdCBtb2RlID0gdXNlQ3VycmVudE1vZGUoKTtcbiAgY29uc3QgaGlnaGxpZ2h0Q29sb3IgPSBtb2RlID09PSAnZGFyaycgPyAnaHlwZXInIDogJ3llbGxvdyc7XG5cbiAgcmV0dXJuIChcbiAgICA8RmxleEJveD5cbiAgICAgIDxFbGxpcHNpc0JveFxuICAgICAgICBtYXhXaWR0aD1cImNhbGMoMTAwdncgLSAxMjhweClcIlxuICAgICAgICB3aGl0ZVNwYWNlPVwicHJlXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpKSA9PiAoXG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGtleT17YCR7dGl0bGV9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICBsaW5lSGVpZ2h0PVwidGl0bGVcIlxuICAgICAgICAgICAgey4uLihzZWdtZW50LmhpZ2hsaWdodFxuICAgICAgICAgICAgICA/IHsgYmc6IGhpZ2hsaWdodENvbG9yLCBmb250V2VpZ2h0OiAnYm9sZCcgfVxuICAgICAgICAgICAgICA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2VnbWVudC52YWx1ZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICkpfVxuICAgICAgPC9FbGxpcHNpc0JveD5cbiAgICAgIDxUZXh0IHNjcmVlbnJlYWRlcj57dGl0bGV9PC9UZXh0PlxuICAgIDwvRmxleEJveD5cbiAgKTtcbn07XG5cbnR5cGUgU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0ge1xuICBzaGltbWVyUm93czoge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHNoaW1tZXJzOiB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgfVtdO1xuICB9W107XG59O1xuXG5sZXQgbG9hZGVyS2V5ID0gMDtcbmZ1bmN0aW9uIHJuZExvYWRlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gIGNvbnN0IGtleSA9IGxvYWRlcktleSsrO1xuICBjb25zdCBsb2FkZXI6IFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHsgc2hpbW1lclJvd3M6IFtdIH07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0ge1xuICAgICAga2V5OiBgJHtrZXl9OiR7aX1gLFxuICAgICAgc2hpbW1lcnM6IFtdIGFzIHsga2V5OiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdLFxuICAgIH07XG4gICAgY29uc3Qgd29yZHMgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZHM7IGorKykge1xuICAgICAgY29uc3Qgd2lkdGggPSAxMiArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk2KTtcbiAgICAgIHJvdy5zaGltbWVycy5wdXNoKHtcbiAgICAgICAga2V5OiBgJHtrZXl9OiR7an1gLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkZXIuc2hpbW1lclJvd3MucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBsb2FkZXI7XG59XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hQYW5lOiBSZWFjdC5GQzxTZWFyY2hQYW5lUHJvcHM+ID0gKHtcbiAgb25TZWFyY2gsXG4gIG9uVHJhY2tpbmdDbGljayxcbiAgc2VhcmNoQnV0dG9uUmVmLFxuICB0b2dnbGVTZWFyY2gsXG4gIG9uU2VhcmNoQXNZb3VUeXBlLFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLCBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9uc10gPSB1c2VTdGF0ZTxcbiAgICBBdXRvY29tcGxldGVTdWdnZXN0aW9uW11cbiAgPihbXSk7XG4gIGNvbnN0IFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLCBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzXSA9XG4gICAgdXNlU3RhdGU8U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRDbGlja2VkLCBzZXRTZWFyY2hSZXN1bHRDbGlja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcbiAgY29uc3QgeyBnbG9iYWxIZWFkZXJEeW5hbWljRGF0YSB9ID0gdXNlR2xvYmFsSGVhZGVyRHluYW1pY0RhdGFDb250ZXh0KCk7XG5cbiAgY29uc3QgYmFubmVyID0gZ2xvYmFsSGVhZGVyRHluYW1pY0RhdGE/LmNhdGFsb2dEcm9wZG93bj8uYmFubmVyO1xuICBjb25zdCBzaG93TWFya2V0aW5nQmFubmVyID0gYmFubmVyPy50ZXh0ICYmIGJhbm5lcj8uaHJlZiAmJiBNYXJrZXRpbmdCYW5uZXI7XG5cbiAgY29uc3Qgc2VhcmNoQXNZb3VUeXBlTG9hZGVyID0gUmVhY3QudXNlTWVtbyhcbiAgICAoKSA9PiAoc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbCA/IHJuZExvYWRlcigpIDogbnVsbCksXG4gICAgW3NlYXJjaEFzWW91VHlwZVJlc3VsdHNdXG4gICk7XG5cbiAgY29uc3QgdmFsdWVUcmltbWVkID0gdmFsdWUudHJpbSgpO1xuXG4gIGNvbnN0IGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayA9XG4gICAgb25TZWFyY2hBc1lvdVR5cGUgJiYgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyAmJiAhc2VhcmNoUmVzdWx0Q2xpY2tlZDtcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jICgpID0+IHtcbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB1c2VyIG1hZGUgYSBzZWFyY2ggYW5kIHRoZW4gY2xvc2VkIHNlYXJjaCBwYW5lXG4gICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayAmJiB2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0b2dnbGVTZWFyY2goKTtcbiAgICAvLyBhZGRzIGEgbGl0dGxlIGRlbGF5IGJldHdlZW4gY2xvc2luZyB0aGUgc2VhcmNoIHBhbmUgYW5kIGZvY3VzaW5nIG9uIHRoZSBidXR0b25cbiAgICAvLyB0byBwcmV2ZW50IHRoZSBzZWFyY2ggcGFuZSBmcm9tIGltbWVkaWF0ZWx5IG9wZW5pbmcgYWdhaW5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChzZWFyY2hCdXR0b25SZWYgJiYgc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50KSB7XG4gICAgICAgIHNlYXJjaEJ1dHRvblJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sIDEwKTtcbiAgfTtcblxuICBjb25zdCBvbktleURvd24gPSB1c2VPbkVzY0hhbmRsZXIoY2xvc2VTZWFyY2gpO1xuXG4gIGNvbnN0IG9uTW91c2VEb3duT3V0c2lkZSA9ICh7IHRhcmdldCB9OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgaGFuZGxlT3V0c2lkZUNsaWNrID0gKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAhZG9jdW1lbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvcignW2RhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXScpXG4gICAgICAgICAgPy5jb250YWlucyh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpICYmXG4gICAgICAgIHRhcmdldCAhPT0gc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgIH1cblxuICAgICAgdGFyZ2V0Py5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgICB9O1xuXG4gICAgdGFyZ2V0Py5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgfTtcblxuICBjb25zdCBuYXZpZ2F0ZVRvU2VhcmNoID0gKHNlYXJjaFRlcm06IHN0cmluZywgZnJvbVByZXZTZWFyY2g/OiBzdHJpbmcpID0+IHtcbiAgICBvblNlYXJjaChzZWFyY2hUZXJtLCBmcm9tUHJldlNlYXJjaCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlOiBSZWFjdC5DaGFuZ2VFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgc2V0VmFsdWUoZXZ0LnRhcmdldC52YWx1ZSk7XG4gICAgLy8gcmVzZXQgdG8gZmFsc2Ugd2hlbiB0aGUgc2VhcmNoIHF1ZXJ5IGNoYW5nZXNcbiAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKGZhbHNlKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVTdWJtaXQ6IFJlYWN0LkZvcm1FdmVudEhhbmRsZXIgPSAoZXZlbnQpID0+IHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IHdoZW4gdGhlIHVzZXIgc3VibWl0cyB0aGUgZm9ybSB0byBjYXB0dXJlIGNvbXBsZXRlIHF1ZXJ5XG4gICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljaykge1xuICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gIH07XG5cbiAgY29uc3QgY2xlYXJJbnB1dCA9ICgpID0+IHtcbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgYmVmb3JlIHVzZXIgY2xlYXJzIGlucHV0XG4gICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayAmJiB2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICB9XG5cbiAgICBzZXRWYWx1ZSgnJyk7XG4gICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgIC8vIHJlc2V0IHRoZSBjb250ZXh0IHdpdGggZW1wdHkgdmFsdWVzXG4gICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgcXVlcnk6ICcnLFxuICAgICAgc2VhcmNoSWQ6ICcnLFxuICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICB9KTtcbiAgfTtcblxuICAvLyB3aGVuIHRoZSBjdXJyZW50IFVSTCBjaGFuZ2VzLCB3ZSB3YW50IHRvIGNsb3NlIHRoZSBzZWFyY2ggcGFuZSBpZiBpdCdzIG9wZW5cbiAgLy8gYW5kIHRyYWNrIHNlYXJjaCBldmVudCBpZiB1c2VyIG1hZGUgYSBzZWFyY2hcbiAgdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uKHtcbiAgICBvblVybENoYW5nZTogKCkgPT4ge1xuICAgICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayAmJiB2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICAgIH1cblxuICAgICAgdG9nZ2xlU2VhcmNoKCk7XG4gICAgfSxcbiAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBkb24ndCB0cmFjayBpZiBhIHJlc3VsdCB3YXMgY2xpY2tlZCBvciBpZiB3ZSBkb24ndCBoYXZlIHNlYXJjaCByZXN1bHRzXG4gICAgaWYgKFxuICAgICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCB8fFxuICAgICAgIW9uU2VhcmNoQXNZb3VUeXBlIHx8XG4gICAgICAhc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8fFxuICAgICAgIXZhbHVlVHJpbW1lZC5sZW5ndGhcbiAgICApXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1yZXR1cm5cbiAgICAgIHJldHVybjtcbiAgfSwgW1xuICAgIHNlYXJjaFJlc3VsdENsaWNrZWQsXG4gICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyxcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gIF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5wdXRSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICBzZWFyY2hXb3JrZXIuaW5pdCgpO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXZhbHVlVHJpbW1lZC5sZW5ndGgpIHtcbiAgICAgIHNldFNlYXJjaEFzWW91VHlwZVJlc3VsdHMobnVsbCk7XG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiAnJyxcbiAgICAgICAgc2VhcmNoSWQ6ICcnLFxuICAgICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IDAsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgY2FuY2VsID0gZmFsc2U7XG4gICAgbGV0IGNsZWFyQXV0b2NvbXBsZXRlID0gdHJ1ZTtcbiAgICBsZXQgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSB0cnVlO1xuXG4gICAgbGV0IHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheTogTm9kZUpTLlRpbWVvdXQ7XG5cbiAgICBjb25zdCBsb2FkZXJEZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLypcbiAgICAgICAqIFdhaXQgMTAgbWlsbGlzZWNvbmRzIHRvIGdldCBhIHJlc3BvbnNlIGZvciB3b3JrZXIgYmVmb3JlIHNob3dpbmcgbG9hZGVycy5cbiAgICAgICAqIFRoaXMgcHJldmVudHMgZmxpY2tlcmluZyBsb2FkZXJzIG9uIHF1aWNrIG9yIGNhY2hlZCByZXN1bHRzLlxuICAgICAgICovXG4gICAgICBpZiAoY2FuY2VsKSByZXR1cm47XG4gICAgICBpZiAoY2xlYXJBdXRvY29tcGxldGUpIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIGlmIChjbGVhclNlYXJjaEFzWW91VHlwZSkgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICB9LCAxMCk7XG5cbiAgICBzZWFyY2hXb3JrZXIuYXV0b2NvbXBsZXRlKHZhbHVlVHJpbW1lZCkudGhlbigoc3VnZ2VzdGlvbnMpID0+IHtcbiAgICAgIGNsZWFyQXV0b2NvbXBsZXRlID0gZmFsc2U7XG5cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjsgLy8gdGV4dCBoYXMgY2hhbmdlZCBzaW5jZSB0aGlzIHJlcXVlc3Qgd2FzIG1hZGVcblxuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoc3VnZ2VzdGlvbnMpO1xuICAgIH0pO1xuXG4gICAgc2VhcmNoV29ya2VyLnNlYXJjaEFzWW91VHlwZSh2YWx1ZVRyaW1tZWQpLnRoZW4oKHJlc3VsdHMpID0+IHtcbiAgICAgIGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gZmFsc2U7XG5cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjsgLy8gdGV4dCBoYXMgY2hhbmdlZCBzaW5jZSB0aGlzIHJlcXVlc3Qgd2FzIG1hZGVcblxuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhyZXN1bHRzKTtcblxuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogcmVzdWx0cy5xdWVyeSxcbiAgICAgICAgc2VhcmNoSWQ6IHJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgIHJlc3VsdHNDb3VudDogcmVzdWx0cy50b3AubGVuZ3RoLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiByZXN1bHRzLnF1ZXJ5TG9hZFRpbWUsXG4gICAgICB9KTtcblxuICAgICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IHdpdGggYSBzbWFsbCBkZWxheSB3aGVuIHRoZXJlIGFyZSBubyByZXN1bHRzXG4gICAgICBpZiAoXG4gICAgICAgIG9uU2VhcmNoQXNZb3VUeXBlICYmXG4gICAgICAgIHJlc3VsdHMudG9wLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAhc2VhcmNoUmVzdWx0Q2xpY2tlZFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCBxdWVyeUxvYWRUaW1lIH0gPSByZXN1bHRzO1xuICAgICAgICBzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoIWNhbmNlbCkge1xuICAgICAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCAwLCBxdWVyeUxvYWRUaW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDMwMCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY2FuY2VsID0gdHJ1ZTtcbiAgICAgIGNsZWFyVGltZW91dChsb2FkZXJEZWxheSk7XG4gICAgICBjbGVhclRpbWVvdXQoc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5KTtcbiAgICB9O1xuICB9LCBbXG4gICAgdmFsdWVUcmltbWVkLFxuICAgIG9uU2VhcmNoQXNZb3VUeXBlLFxuICAgIHNlYXJjaFJlc3VsdENsaWNrZWQsXG4gICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMsXG4gIF0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgYmc9XCJzaGFkb3ctc2Vjb25kYXJ5XCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwdmhcIlxuICAgICAgICBwb3NpdGlvbj1cImZpeGVkXCJcbiAgICAgICAgLy8gV2UgYWRkIDZyZW0gaGVyZSBpbiBjYXNlIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGJyYW5kZWQgYmFubmVyIGFib3ZlIHNlYXJjaFxuICAgICAgICAvLyBUaGUgc2VhcmNoIGFyZWEgaXMgbXVjaCB0YWxsZXIgdGhhbiA2cmVtIHNvIHRoaXMgaXMgYSBzYWZlIGFtb3VudCBvZiBwYWRkaW5nXG4gICAgICAgIHRvcD17YGNhbGMoJHt0aGVtZS5lbGVtZW50cy5oZWFkZXJIZWlnaHR9ICsgNnJlbSlgfVxuICAgICAgICB3aWR0aD17MX1cbiAgICAgIC8+XG4gICAgICA8Rm9jdXNUcmFwXG4gICAgICAgIG9uRXNjYXBlS2V5PXtjbG9zZVNlYXJjaH1cbiAgICAgICAgb25DbGlja091dHNpZGU9e29uTW91c2VEb3duT3V0c2lkZX1cbiAgICAgICAgYWxsb3dQYWdlSW50ZXJhY3Rpb25cbiAgICAgID5cbiAgICAgICAgPEJveFxuICAgICAgICAgIGJnPVwiYmFja2dyb3VuZFwiXG4gICAgICAgICAgYm9yZGVyQ29sb3JCb3R0b209XCJib3JkZXItcHJpbWFyeVwiXG4gICAgICAgICAgYm9yZGVyQ29sb3JUb3A9XCJib3JkZXItdGVydGlhcnlcIlxuICAgICAgICAgIGJvcmRlclN0eWxlPVwic29saWRcIlxuICAgICAgICAgIGJvcmRlcldpZHRoPVwiMnB4IDAgMXB4XCJcbiAgICAgICAgICBkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIlxuICAgICAgICAgIHBvc2l0aW9uPXt7IF86ICdmaXhlZCcsIG1kOiAnYWJzb2x1dGUnIH19XG4gICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICBtYXhIZWlnaHQ9e3sgXzogJ2NhbGMoMTAwdmggLSA2M3B4KScsIG1kOiAnY2FsYygxMDB2aCAtIDgwcHgpJyB9fVxuICAgICAgICAgIG92ZXJmbG93PVwiYXV0b1wiXG4gICAgICAgICAgekluZGV4PXsxMH0gLy8gZW5zdXJlIGRyb3Bkb3duIGlzIGFib3ZlIHRoZSBwYWdlIGNvbnRlbnRcbiAgICAgICAgPlxuICAgICAgICAgIDxCb3ggYm9yZGVyPVwibm9uZVwiIHdpZHRoPVwiYXV0b1wiPlxuICAgICAgICAgICAgPFF1ZXJ5Q29udGFpbmVyICRjb21wYWN0PXshIXNob3dNYXJrZXRpbmdCYW5uZXJ9PlxuICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgIGFsaWduSXRlbXM9XCJiYXNlbGluZVwiXG4gICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJncmF5LTYwMFwiXG4gICAgICAgICAgICAgICAgYm9yZGVyU3R5bGVCb3R0b209XCJzb2xpZFwiXG4gICAgICAgICAgICAgICAgYm9yZGVyV2lkdGhCb3R0b209XCIxcHhcIlxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U2VhcmNoSWNvblxuICAgICAgICAgICAgICAgICAgaGVpZ2h0PXt7IF86IDIwLCBtZDogMjQgfX1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPXt7IF86IDIwLCBtZDogMjQgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxGb3JtXG4gICAgICAgICAgICAgICAgICBhY3Rpb249XCIvc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwic2VhcmNoLWZvcm1cIlxuICAgICAgICAgICAgICAgICAgbWw9ezh9XG4gICAgICAgICAgICAgICAgICBvblN1Ym1pdD17aGFuZGxlU3VibWl0fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgYXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDIwLCBtZDogMjYgfX1cbiAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodD1cImJvbGRcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImhlYWRlci1zZWFyY2gtYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInF1ZXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZSkgPT4gb25LZXlEb3duKGUpfVxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17c2VhcmNoUGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgICAgICAgIHJlZj17aW5wdXRSZWZ9XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgIGF1dG9Db21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvRm9ybT5cbiAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgaWNvbj17TWluaURlbGV0ZUljb259XG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXBQcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50OiAnZmxvYXRpbmcnLFxuICAgICAgICAgICAgICAgICAgICBuYXJyb3c6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHpJbmRleDogMixcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtjbGVhcklucHV0fVxuICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICA8L1F1ZXJ5Q29udGFpbmVyPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIHtzaG93TWFya2V0aW5nQmFubmVyICYmIChcbiAgICAgICAgICAgIDxDb250ZW50Q29udGFpbmVyPlxuICAgICAgICAgICAgICA8TWFya2V0aW5nQmFubmVyXG4gICAgICAgICAgICAgICAgc291cmNlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICB0ZXh0PXtiYW5uZXI/LnRleHR9XG4gICAgICAgICAgICAgICAgaHJlZj17YmFubmVyPy5ocmVmfVxuICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgIHB5PXt7IF86IDE2LCBsZzogMjQgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29udGVudENvbnRhaW5lcj5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxTdWdnZXN0aW9uQ29udGFpbmVyICRjb21wYWN0PXshIXNob3dNYXJrZXRpbmdCYW5uZXJ9PlxuICAgICAgICAgICAge3ZhbHVlVHJpbW1lZC5sZW5ndGggPiAwID8gKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxGbGV4Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiBhcz1cInVsXCIgbGlzdFN0eWxlPVwibm9uZVwiIHA9ezB9PlxuICAgICAgICAgICAgICAgICAge2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e3MudGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ2F1dG9jb21wbGV0ZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VtaWJvbGRTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYj17MiBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17OH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBtcj17MTJ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgeyhzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cImgyXCIgZm9udFNpemU9ezIwfSBtYj17MTZ9IG10PXsyNH0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9wIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIGFzPVwidWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHA9ezB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWFyY2hBc1lvdVR5cGVMb2FkZXI/LnNoaW1tZXJSb3dzLm1hcCgocikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVMb2FkZXJMaSBrZXk9e3Iua2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyLnNoaW1tZXJzLm1hcCgod29yZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2hpbW1lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MzB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHk9ezggYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3dvcmQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXt3b3JkLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDEwIGFzIDE2IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiYm9yZGVyLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwieGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk9ezAuMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZUxvYWRlckxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMucXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8Qm94IGZvbnRTaXplPXt7IF86IDIwLCBzbTogMjYgfX0gbXQ9ezB9IG1iPXs0OH0+XG4gICAgICAgICAgICAgICAgICAgICAge2BXZSBjb3VsZG4ndCBmaW5kIGEgbWF0Y2ggZm9yIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQgZm9udFdlaWdodD1cImJvbGRcIj57YFwiJHt2YWx1ZVRyaW1tZWR9LlwiYH08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJyBUcnkgYW5vdGhlciBrZXl3b3JkLCBvciBzZWUgd2hhdCBvdXIgbWVtYmVycyBhcmUgbGVhcm5pbmcuJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8UG9wdWxhclNlYXJjaGVzXG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoPXtuYXZpZ2F0ZVRvU2VhcmNofVxuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHshIXNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8U3Ryb2tlQnV0dG9uXG4gICAgICAgICAgICAgICAgbXk9ezE2fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygndmlld19hbGxfcmVzdWx0cycsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IGFsbCByZXN1bHRzXG4gICAgICAgICAgICAgIDwvU3Ryb2tlQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxRdWl6QW5kSGVscENlbnRlckxpbmtzXG4gICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURyb3Bkb3duPXtjbG9zZVNlYXJjaH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdWdnZXN0aW9uQ29udGFpbmVyPlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRm9jdXNUcmFwPlxuICAgIDwvPlxuICApO1xufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF3RmtDIn0= */");
81
+ const EllipsisBox = /* @__PURE__ */ (0, _emotion_styled.default)(_codecademy_gamut.Box, {
82
+ target: "ebeevrx6",
83
+ label: "brand-EllipsisBox"
84
+ })("text-overflow:ellipsis;", "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvbW9uby9tb25vL2xpYnMvdWkvYnJhbmQvc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL21vbm8vbW9uby9saWJzL3VpL2JyYW5kL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhZGdlLFxuICBCb3gsXG4gIENvbnRlbnRDb250YWluZXIsXG4gIEZsZXhCb3gsXG4gIEZvY3VzVHJhcCxcbiAgSWNvbkJ1dHRvbixcbiAgTWVudSxcbiAgTWVudUl0ZW0sXG4gIFNoaW1tZXIsXG4gIFN0cm9rZUJ1dHRvbixcbiAgVGV4dCxcbn0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQnO1xuaW1wb3J0IHsgTWluaURlbGV0ZUljb24sIFNlYXJjaEljb24gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1pY29ucyc7XG5pbXBvcnQgeyBjc3MsIHRoZW1lLCB1c2VDdXJyZW50TW9kZSB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0LXN0eWxlcyc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgdXNlR2xvYmFsSGVhZGVyRHluYW1pY0RhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vR2xvYmFsSGVhZGVyL2NvbnRleHQnO1xuaW1wb3J0IHsgTWFya2V0aW5nQmFubmVyIH0gZnJvbSAnLi4vQXBwSGVhZGVyRWxlbWVudHMvQXBwSGVhZGVyQ2F0YWxvZ0Ryb3Bkb3duL01hcmtldGluZ0Jhbm5lcic7XG5pbXBvcnQgeyB1c2VPbkVzY0hhbmRsZXIgfSBmcm9tICcuLi9zaGFyZWQnO1xuaW1wb3J0IHsgc2VhcmNoUGxhY2Vob2xkZXIgfSBmcm9tICcuL2NvbnN0cyc7XG5pbXBvcnQgeyBQb3B1bGFyQ29udGVudCwgUG9wdWxhclNlYXJjaGVzIH0gZnJvbSAnLi9EZWZhdWx0UmVzdWx0cyc7XG5pbXBvcnQgeyB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24gfSBmcm9tICcuL2hvb2tzL3VzZVVybENoYW5nZURldGVjdGlvbic7XG5pbXBvcnQgeyBRdWl6QW5kSGVscENlbnRlckxpbmtzIH0gZnJvbSAnLi9RdWl6QW5kSGVscENlbnRlckxpbmtzJztcbmltcG9ydCB7IHNhZmVseVJlZGlyZWN0IH0gZnJvbSAnLi9zYWZlbHlSZWRpcmVjdCc7XG5pbXBvcnQgeyB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQgfSBmcm9tICcuL1NlYXJjaFRyYWNraW5nUHJvdmlkZXInO1xuaW1wb3J0IHsgc2VhcmNoV29ya2VyIH0gZnJvbSAnLi9TZWFyY2hXb3JrZXInO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVTdWdnZXN0aW9uLFxuICBTZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxufSBmcm9tICcuL1NlYXJjaFdvcmtlci90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hQYW5lUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgRm9ybSA9IEJveC53aXRoQ29tcG9uZW50KCdmb3JtJyk7XG5jb25zdCBJbnB1dCA9IEJveC53aXRoQ29tcG9uZW50KCdpbnB1dCcpO1xuXG5jb25zdCBRdWVyeUNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKTx7ICRjb21wYWN0PzogYm9vbGVhbiB9PihcbiAgKHsgJGNvbXBhY3QgfSkgPT5cbiAgICBjc3Moe1xuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgIHB0OiAxNixcbiAgICAgIHBiOiAkY29tcGFjdCA/IHsgXzogMCwgbWQ6IDQgfSA6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgICBweDogeyBfOiAyNCB9LFxuICAgIH0pXG4pO1xuXG5jb25zdCBTdWdnZXN0aW9uQ29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpPHsgJGNvbXBhY3Q/OiBib29sZWFuIH0+KFxuICAoeyAkY29tcGFjdCB9KSA9PlxuICAgIGNzcyh7XG4gICAgICBwdDogJGNvbXBhY3QgPyA0IDogMTYsXG4gICAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICAgIHB4OiB7IF86IDI0IH0sXG4gICAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KShcbiAgY3NzKHtcbiAgICBvdXRsaW5lOiBgbm9uZWAsXG4gICAgJyY6OnBsYWNlaG9sZGVyJzoge1xuICAgICAgdGV4dENvbG9yOiB0aGVtZS5jb2xvcnNbJ3RleHQtc2Vjb25kYXJ5J10gYXMgbmV2ZXIsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZVJlc3VsdExpID0gc3R5bGVkKE1lbnVJdGVtKShcbiAgY3NzKHtcbiAgICBwbDogMCxcbiAgICBweTogOCxcbiAgICBmb250U2l6ZTogMTYsXG4gICAgJyY6Zm9jdXMtdmlzaWJsZTphZnRlcic6IHtcbiAgICAgIGxlZnQ6IC00LFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVMb2FkZXJMaSA9IHN0eWxlZC5saShcbiAgY3NzKHtcbiAgICBsaXN0U3R5bGVUeXBlOiAnbm9uZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogMTIsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgU2VtaWJvbGRTZWFyY2hJY29uID0gc3R5bGVkKFNlYXJjaEljb24pYFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBjaXJjbGUsXG4gIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICB9XG4gIHJlY3Qge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0ycHgsIC0ycHgpO1xuICAgIGhlaWdodDogY2FsYygxMDAlICsgNHB4KTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNHB4KTtcbiAgfVxuYDtcblxuY29uc3QgRWxsaXBzaXNCb3ggPSBzdHlsZWQoQm94KWBcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gO1xuXG5jb25zdCBIaWdobGlnaHRlZFRleHQgPSAoe1xuICBzdWdnZXN0aW9uOiB7IHRpdGxlLCBzZWdtZW50cyB9LFxufToge1xuICBzdWdnZXN0aW9uOiBBdXRvY29tcGxldGVTdWdnZXN0aW9uO1xufSkgPT4ge1xuICBjb25zdCBtb2RlID0gdXNlQ3VycmVudE1vZGUoKTtcbiAgY29uc3QgaGlnaGxpZ2h0Q29sb3IgPSBtb2RlID09PSAnZGFyaycgPyAnaHlwZXInIDogJ3llbGxvdyc7XG5cbiAgcmV0dXJuIChcbiAgICA8RmxleEJveD5cbiAgICAgIDxFbGxpcHNpc0JveFxuICAgICAgICBtYXhXaWR0aD1cImNhbGMoMTAwdncgLSAxMjhweClcIlxuICAgICAgICB3aGl0ZVNwYWNlPVwicHJlXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpKSA9PiAoXG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGtleT17YCR7dGl0bGV9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICBsaW5lSGVpZ2h0PVwidGl0bGVcIlxuICAgICAgICAgICAgey4uLihzZWdtZW50LmhpZ2hsaWdodFxuICAgICAgICAgICAgICA/IHsgYmc6IGhpZ2hsaWdodENvbG9yLCBmb250V2VpZ2h0OiAnYm9sZCcgfVxuICAgICAgICAgICAgICA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2VnbWVudC52YWx1ZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICkpfVxuICAgICAgPC9FbGxpcHNpc0JveD5cbiAgICAgIDxUZXh0IHNjcmVlbnJlYWRlcj57dGl0bGV9PC9UZXh0PlxuICAgIDwvRmxleEJveD5cbiAgKTtcbn07XG5cbnR5cGUgU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0ge1xuICBzaGltbWVyUm93czoge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHNoaW1tZXJzOiB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgfVtdO1xuICB9W107XG59O1xuXG5sZXQgbG9hZGVyS2V5ID0gMDtcbmZ1bmN0aW9uIHJuZExvYWRlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gIGNvbnN0IGtleSA9IGxvYWRlcktleSsrO1xuICBjb25zdCBsb2FkZXI6IFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHsgc2hpbW1lclJvd3M6IFtdIH07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0ge1xuICAgICAga2V5OiBgJHtrZXl9OiR7aX1gLFxuICAgICAgc2hpbW1lcnM6IFtdIGFzIHsga2V5OiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdLFxuICAgIH07XG4gICAgY29uc3Qgd29yZHMgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZHM7IGorKykge1xuICAgICAgY29uc3Qgd2lkdGggPSAxMiArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk2KTtcbiAgICAgIHJvdy5zaGltbWVycy5wdXNoKHtcbiAgICAgICAga2V5OiBgJHtrZXl9OiR7an1gLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkZXIuc2hpbW1lclJvd3MucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBsb2FkZXI7XG59XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hQYW5lOiBSZWFjdC5GQzxTZWFyY2hQYW5lUHJvcHM+ID0gKHtcbiAgb25TZWFyY2gsXG4gIG9uVHJhY2tpbmdDbGljayxcbiAgc2VhcmNoQnV0dG9uUmVmLFxuICB0b2dnbGVTZWFyY2gsXG4gIG9uU2VhcmNoQXNZb3VUeXBlLFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLCBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9uc10gPSB1c2VTdGF0ZTxcbiAgICBBdXRvY29tcGxldGVTdWdnZXN0aW9uW11cbiAgPihbXSk7XG4gIGNvbnN0IFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLCBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzXSA9XG4gICAgdXNlU3RhdGU8U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRDbGlja2VkLCBzZXRTZWFyY2hSZXN1bHRDbGlja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcbiAgY29uc3QgeyBnbG9iYWxIZWFkZXJEeW5hbWljRGF0YSB9ID0gdXNlR2xvYmFsSGVhZGVyRHluYW1pY0RhdGFDb250ZXh0KCk7XG5cbiAgY29uc3QgYmFubmVyID0gZ2xvYmFsSGVhZGVyRHluYW1pY0RhdGE/LmNhdGFsb2dEcm9wZG93bj8uYmFubmVyO1xuICBjb25zdCBzaG93TWFya2V0aW5nQmFubmVyID0gYmFubmVyPy50ZXh0ICYmIGJhbm5lcj8uaHJlZiAmJiBNYXJrZXRpbmdCYW5uZXI7XG5cbiAgY29uc3Qgc2VhcmNoQXNZb3VUeXBlTG9hZGVyID0gUmVhY3QudXNlTWVtbyhcbiAgICAoKSA9PiAoc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbCA/IHJuZExvYWRlcigpIDogbnVsbCksXG4gICAgW3NlYXJjaEFzWW91VHlwZVJlc3VsdHNdXG4gICk7XG5cbiAgY29uc3QgdmFsdWVUcmltbWVkID0gdmFsdWUudHJpbSgpO1xuXG4gIGNvbnN0IGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayA9XG4gICAgb25TZWFyY2hBc1lvdVR5cGUgJiYgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyAmJiAhc2VhcmNoUmVzdWx0Q2xpY2tlZDtcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jICgpID0+IHtcbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB1c2VyIG1hZGUgYSBzZWFyY2ggYW5kIHRoZW4gY2xvc2VkIHNlYXJjaCBwYW5lXG4gICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayAmJiB2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0b2dnbGVTZWFyY2goKTtcbiAgICAvLyBhZGRzIGEgbGl0dGxlIGRlbGF5IGJldHdlZW4gY2xvc2luZyB0aGUgc2VhcmNoIHBhbmUgYW5kIGZvY3VzaW5nIG9uIHRoZSBidXR0b25cbiAgICAvLyB0byBwcmV2ZW50IHRoZSBzZWFyY2ggcGFuZSBmcm9tIGltbWVkaWF0ZWx5IG9wZW5pbmcgYWdhaW5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChzZWFyY2hCdXR0b25SZWYgJiYgc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50KSB7XG4gICAgICAgIHNlYXJjaEJ1dHRvblJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sIDEwKTtcbiAgfTtcblxuICBjb25zdCBvbktleURvd24gPSB1c2VPbkVzY0hhbmRsZXIoY2xvc2VTZWFyY2gpO1xuXG4gIGNvbnN0IG9uTW91c2VEb3duT3V0c2lkZSA9ICh7IHRhcmdldCB9OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgaGFuZGxlT3V0c2lkZUNsaWNrID0gKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAhZG9jdW1lbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvcignW2RhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXScpXG4gICAgICAgICAgPy5jb250YWlucyh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpICYmXG4gICAgICAgIHRhcmdldCAhPT0gc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgIH1cblxuICAgICAgdGFyZ2V0Py5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgICB9O1xuXG4gICAgdGFyZ2V0Py5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgfTtcblxuICBjb25zdCBuYXZpZ2F0ZVRvU2VhcmNoID0gKHNlYXJjaFRlcm06IHN0cmluZywgZnJvbVByZXZTZWFyY2g/OiBzdHJpbmcpID0+IHtcbiAgICBvblNlYXJjaChzZWFyY2hUZXJtLCBmcm9tUHJldlNlYXJjaCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlOiBSZWFjdC5DaGFuZ2VFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgc2V0VmFsdWUoZXZ0LnRhcmdldC52YWx1ZSk7XG4gICAgLy8gcmVzZXQgdG8gZmFsc2Ugd2hlbiB0aGUgc2VhcmNoIHF1ZXJ5IGNoYW5nZXNcbiAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKGZhbHNlKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVTdWJtaXQ6IFJlYWN0LkZvcm1FdmVudEhhbmRsZXIgPSAoZXZlbnQpID0+IHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IHdoZW4gdGhlIHVzZXIgc3VibWl0cyB0aGUgZm9ybSB0byBjYXB0dXJlIGNvbXBsZXRlIHF1ZXJ5XG4gICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljaykge1xuICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gIH07XG5cbiAgY29uc3QgY2xlYXJJbnB1dCA9ICgpID0+IHtcbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgYmVmb3JlIHVzZXIgY2xlYXJzIGlucHV0XG4gICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayAmJiB2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCwgcXVlcnlMb2FkVGltZSB9ID1cbiAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICB9XG5cbiAgICBzZXRWYWx1ZSgnJyk7XG4gICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgIC8vIHJlc2V0IHRoZSBjb250ZXh0IHdpdGggZW1wdHkgdmFsdWVzXG4gICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgcXVlcnk6ICcnLFxuICAgICAgc2VhcmNoSWQ6ICcnLFxuICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICB9KTtcbiAgfTtcblxuICAvLyB3aGVuIHRoZSBjdXJyZW50IFVSTCBjaGFuZ2VzLCB3ZSB3YW50IHRvIGNsb3NlIHRoZSBzZWFyY2ggcGFuZSBpZiBpdCdzIG9wZW5cbiAgLy8gYW5kIHRyYWNrIHNlYXJjaCBldmVudCBpZiB1c2VyIG1hZGUgYSBzZWFyY2hcbiAgdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uKHtcbiAgICBvblVybENoYW5nZTogKCkgPT4ge1xuICAgICAgaWYgKGhhc1NlYXJjaEV2ZW50QW5kUmVzdWx0c1dpdGhvdXRDbGljayAmJiB2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM7XG4gICAgICAgIG9uU2VhcmNoQXNZb3VUeXBlKHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lKTtcbiAgICAgIH1cblxuICAgICAgdG9nZ2xlU2VhcmNoKCk7XG4gICAgfSxcbiAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBkb24ndCB0cmFjayBpZiBhIHJlc3VsdCB3YXMgY2xpY2tlZCBvciBpZiB3ZSBkb24ndCBoYXZlIHNlYXJjaCByZXN1bHRzXG4gICAgaWYgKFxuICAgICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCB8fFxuICAgICAgIW9uU2VhcmNoQXNZb3VUeXBlIHx8XG4gICAgICAhc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8fFxuICAgICAgIXZhbHVlVHJpbW1lZC5sZW5ndGhcbiAgICApXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1yZXR1cm5cbiAgICAgIHJldHVybjtcbiAgfSwgW1xuICAgIHNlYXJjaFJlc3VsdENsaWNrZWQsXG4gICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyxcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gIF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5wdXRSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICBzZWFyY2hXb3JrZXIuaW5pdCgpO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXZhbHVlVHJpbW1lZC5sZW5ndGgpIHtcbiAgICAgIHNldFNlYXJjaEFzWW91VHlwZVJlc3VsdHMobnVsbCk7XG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiAnJyxcbiAgICAgICAgc2VhcmNoSWQ6ICcnLFxuICAgICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IDAsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgY2FuY2VsID0gZmFsc2U7XG4gICAgbGV0IGNsZWFyQXV0b2NvbXBsZXRlID0gdHJ1ZTtcbiAgICBsZXQgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSB0cnVlO1xuXG4gICAgbGV0IHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheTogTm9kZUpTLlRpbWVvdXQ7XG5cbiAgICBjb25zdCBsb2FkZXJEZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLypcbiAgICAgICAqIFdhaXQgMTAgbWlsbGlzZWNvbmRzIHRvIGdldCBhIHJlc3BvbnNlIGZvciB3b3JrZXIgYmVmb3JlIHNob3dpbmcgbG9hZGVycy5cbiAgICAgICAqIFRoaXMgcHJldmVudHMgZmxpY2tlcmluZyBsb2FkZXJzIG9uIHF1aWNrIG9yIGNhY2hlZCByZXN1bHRzLlxuICAgICAgICovXG4gICAgICBpZiAoY2FuY2VsKSByZXR1cm47XG4gICAgICBpZiAoY2xlYXJBdXRvY29tcGxldGUpIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIGlmIChjbGVhclNlYXJjaEFzWW91VHlwZSkgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICB9LCAxMCk7XG5cbiAgICBzZWFyY2hXb3JrZXIuYXV0b2NvbXBsZXRlKHZhbHVlVHJpbW1lZCkudGhlbigoc3VnZ2VzdGlvbnMpID0+IHtcbiAgICAgIGNsZWFyQXV0b2NvbXBsZXRlID0gZmFsc2U7XG5cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjsgLy8gdGV4dCBoYXMgY2hhbmdlZCBzaW5jZSB0aGlzIHJlcXVlc3Qgd2FzIG1hZGVcblxuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoc3VnZ2VzdGlvbnMpO1xuICAgIH0pO1xuXG4gICAgc2VhcmNoV29ya2VyLnNlYXJjaEFzWW91VHlwZSh2YWx1ZVRyaW1tZWQpLnRoZW4oKHJlc3VsdHMpID0+IHtcbiAgICAgIGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gZmFsc2U7XG5cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjsgLy8gdGV4dCBoYXMgY2hhbmdlZCBzaW5jZSB0aGlzIHJlcXVlc3Qgd2FzIG1hZGVcblxuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhyZXN1bHRzKTtcblxuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogcmVzdWx0cy5xdWVyeSxcbiAgICAgICAgc2VhcmNoSWQ6IHJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgIHJlc3VsdHNDb3VudDogcmVzdWx0cy50b3AubGVuZ3RoLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiByZXN1bHRzLnF1ZXJ5TG9hZFRpbWUsXG4gICAgICB9KTtcblxuICAgICAgLy8gdHJhY2sgc2VhcmNoIGV2ZW50IHdpdGggYSBzbWFsbCBkZWxheSB3aGVuIHRoZXJlIGFyZSBubyByZXN1bHRzXG4gICAgICBpZiAoXG4gICAgICAgIG9uU2VhcmNoQXNZb3VUeXBlICYmXG4gICAgICAgIHJlc3VsdHMudG9wLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAhc2VhcmNoUmVzdWx0Q2xpY2tlZFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCBxdWVyeUxvYWRUaW1lIH0gPSByZXN1bHRzO1xuICAgICAgICBzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoIWNhbmNlbCkge1xuICAgICAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCAwLCBxdWVyeUxvYWRUaW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDMwMCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY2FuY2VsID0gdHJ1ZTtcbiAgICAgIGNsZWFyVGltZW91dChsb2FkZXJEZWxheSk7XG4gICAgICBjbGVhclRpbWVvdXQoc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5KTtcbiAgICB9O1xuICB9LCBbXG4gICAgdmFsdWVUcmltbWVkLFxuICAgIG9uU2VhcmNoQXNZb3VUeXBlLFxuICAgIHNlYXJjaFJlc3VsdENsaWNrZWQsXG4gICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMsXG4gIF0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgYmc9XCJzaGFkb3ctc2Vjb25kYXJ5XCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwdmhcIlxuICAgICAgICBwb3NpdGlvbj1cImZpeGVkXCJcbiAgICAgICAgLy8gV2UgYWRkIDZyZW0gaGVyZSBpbiBjYXNlIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGJyYW5kZWQgYmFubmVyIGFib3ZlIHNlYXJjaFxuICAgICAgICAvLyBUaGUgc2VhcmNoIGFyZWEgaXMgbXVjaCB0YWxsZXIgdGhhbiA2cmVtIHNvIHRoaXMgaXMgYSBzYWZlIGFtb3VudCBvZiBwYWRkaW5nXG4gICAgICAgIHRvcD17YGNhbGMoJHt0aGVtZS5lbGVtZW50cy5oZWFkZXJIZWlnaHR9ICsgNnJlbSlgfVxuICAgICAgICB3aWR0aD17MX1cbiAgICAgIC8+XG4gICAgICA8Rm9jdXNUcmFwXG4gICAgICAgIG9uRXNjYXBlS2V5PXtjbG9zZVNlYXJjaH1cbiAgICAgICAgb25DbGlja091dHNpZGU9e29uTW91c2VEb3duT3V0c2lkZX1cbiAgICAgICAgYWxsb3dQYWdlSW50ZXJhY3Rpb25cbiAgICAgID5cbiAgICAgICAgPEJveFxuICAgICAgICAgIGJnPVwiYmFja2dyb3VuZFwiXG4gICAgICAgICAgYm9yZGVyQ29sb3JCb3R0b209XCJib3JkZXItcHJpbWFyeVwiXG4gICAgICAgICAgYm9yZGVyQ29sb3JUb3A9XCJib3JkZXItdGVydGlhcnlcIlxuICAgICAgICAgIGJvcmRlclN0eWxlPVwic29saWRcIlxuICAgICAgICAgIGJvcmRlcldpZHRoPVwiMnB4IDAgMXB4XCJcbiAgICAgICAgICBkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIlxuICAgICAgICAgIHBvc2l0aW9uPXt7IF86ICdmaXhlZCcsIG1kOiAnYWJzb2x1dGUnIH19XG4gICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICBtYXhIZWlnaHQ9e3sgXzogJ2NhbGMoMTAwdmggLSA2M3B4KScsIG1kOiAnY2FsYygxMDB2aCAtIDgwcHgpJyB9fVxuICAgICAgICAgIG92ZXJmbG93PVwiYXV0b1wiXG4gICAgICAgICAgekluZGV4PXsxMH0gLy8gZW5zdXJlIGRyb3Bkb3duIGlzIGFib3ZlIHRoZSBwYWdlIGNvbnRlbnRcbiAgICAgICAgPlxuICAgICAgICAgIDxCb3ggYm9yZGVyPVwibm9uZVwiIHdpZHRoPVwiYXV0b1wiPlxuICAgICAgICAgICAgPFF1ZXJ5Q29udGFpbmVyICRjb21wYWN0PXshIXNob3dNYXJrZXRpbmdCYW5uZXJ9PlxuICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgIGFsaWduSXRlbXM9XCJiYXNlbGluZVwiXG4gICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJncmF5LTYwMFwiXG4gICAgICAgICAgICAgICAgYm9yZGVyU3R5bGVCb3R0b209XCJzb2xpZFwiXG4gICAgICAgICAgICAgICAgYm9yZGVyV2lkdGhCb3R0b209XCIxcHhcIlxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U2VhcmNoSWNvblxuICAgICAgICAgICAgICAgICAgaGVpZ2h0PXt7IF86IDIwLCBtZDogMjQgfX1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPXt7IF86IDIwLCBtZDogMjQgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxGb3JtXG4gICAgICAgICAgICAgICAgICBhY3Rpb249XCIvc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwic2VhcmNoLWZvcm1cIlxuICAgICAgICAgICAgICAgICAgbWw9ezh9XG4gICAgICAgICAgICAgICAgICBvblN1Ym1pdD17aGFuZGxlU3VibWl0fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgYXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDIwLCBtZDogMjYgfX1cbiAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodD1cImJvbGRcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImhlYWRlci1zZWFyY2gtYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInF1ZXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZSkgPT4gb25LZXlEb3duKGUpfVxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17c2VhcmNoUGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgICAgICAgIHJlZj17aW5wdXRSZWZ9XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgIGF1dG9Db21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvRm9ybT5cbiAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgaWNvbj17TWluaURlbGV0ZUljb259XG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXBQcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50OiAnZmxvYXRpbmcnLFxuICAgICAgICAgICAgICAgICAgICBuYXJyb3c6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHpJbmRleDogMixcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtjbGVhcklucHV0fVxuICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICA8L1F1ZXJ5Q29udGFpbmVyPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIHtzaG93TWFya2V0aW5nQmFubmVyICYmIChcbiAgICAgICAgICAgIDxDb250ZW50Q29udGFpbmVyPlxuICAgICAgICAgICAgICA8TWFya2V0aW5nQmFubmVyXG4gICAgICAgICAgICAgICAgc291cmNlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICB0ZXh0PXtiYW5uZXI/LnRleHR9XG4gICAgICAgICAgICAgICAgaHJlZj17YmFubmVyPy5ocmVmfVxuICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgIHB5PXt7IF86IDE2LCBsZzogMjQgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29udGVudENvbnRhaW5lcj5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxTdWdnZXN0aW9uQ29udGFpbmVyICRjb21wYWN0PXshIXNob3dNYXJrZXRpbmdCYW5uZXJ9PlxuICAgICAgICAgICAge3ZhbHVlVHJpbW1lZC5sZW5ndGggPiAwID8gKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxGbGV4Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiBhcz1cInVsXCIgbGlzdFN0eWxlPVwibm9uZVwiIHA9ezB9PlxuICAgICAgICAgICAgICAgICAge2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e3MudGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ2F1dG9jb21wbGV0ZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VtaWJvbGRTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYj17MiBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17OH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBtcj17MTJ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgeyhzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cImgyXCIgZm9udFNpemU9ezIwfSBtYj17MTZ9IG10PXsyNH0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9wIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIGFzPVwidWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHA9ezB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWFyY2hBc1lvdVR5cGVMb2FkZXI/LnNoaW1tZXJSb3dzLm1hcCgocikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVMb2FkZXJMaSBrZXk9e3Iua2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyLnNoaW1tZXJzLm1hcCgod29yZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2hpbW1lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MzB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHk9ezggYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3dvcmQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXt3b3JkLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDEwIGFzIDE2IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiYm9yZGVyLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwieGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk9ezAuMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZUxvYWRlckxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMucXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8Qm94IGZvbnRTaXplPXt7IF86IDIwLCBzbTogMjYgfX0gbXQ9ezB9IG1iPXs0OH0+XG4gICAgICAgICAgICAgICAgICAgICAge2BXZSBjb3VsZG4ndCBmaW5kIGEgbWF0Y2ggZm9yIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQgZm9udFdlaWdodD1cImJvbGRcIj57YFwiJHt2YWx1ZVRyaW1tZWR9LlwiYH08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJyBUcnkgYW5vdGhlciBrZXl3b3JkLCBvciBzZWUgd2hhdCBvdXIgbWVtYmVycyBhcmUgbGVhcm5pbmcuJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8UG9wdWxhclNlYXJjaGVzXG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoPXtuYXZpZ2F0ZVRvU2VhcmNofVxuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHshIXNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8U3Ryb2tlQnV0dG9uXG4gICAgICAgICAgICAgICAgbXk9ezE2fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygndmlld19hbGxfcmVzdWx0cycsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IGFsbCByZXN1bHRzXG4gICAgICAgICAgICAgIDwvU3Ryb2tlQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxRdWl6QW5kSGVscENlbnRlckxpbmtzXG4gICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURyb3Bkb3duPXtjbG9zZVNlYXJjaH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdWdnZXN0aW9uQ29udGFpbmVyPlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRm9jdXNUcmFwPlxuICAgIDwvPlxuICApO1xufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxR29CIn0= */");
85
+ const HighlightedText = ({ suggestion: { title, segments } }) => {
86
+ const highlightColor = (0, _codecademy_gamut_styles.useCurrentMode)() === "dark" ? "hyper" : "yellow";
87
+ return /* @__PURE__ */ react.createElement(_codecademy_gamut.FlexBox, null, /* @__PURE__ */ react.createElement(EllipsisBox, {
88
+ maxWidth: "calc(100vw - 128px)",
89
+ whiteSpace: "pre",
90
+ "aria-hidden": true,
91
+ overflow: "hidden"
92
+ }, segments.map((segment, i) => /* @__PURE__ */ react.createElement(_codecademy_gamut.Text, {
93
+ key: `${title}:${i.toString()}`,
94
+ lineHeight: "title",
95
+ ...segment.highlight ? {
96
+ bg: highlightColor,
97
+ fontWeight: "bold"
98
+ } : {}
99
+ }, segment.value))), /* @__PURE__ */ react.createElement(_codecademy_gamut.Text, { screenreader: true }, title));
100
+ };
101
+ let loaderKey = 0;
102
+ function rndLoader() {
103
+ const key = loaderKey++;
104
+ const loader = { shimmerRows: [] };
105
+ for (let i = 0; i < 5; i++) {
106
+ const row = {
107
+ key: `${key}:${i}`,
108
+ shimmers: []
109
+ };
110
+ const words = Math.ceil(Math.random() * 3);
111
+ for (let j = 0; j < words; j++) {
112
+ const width = 12 + Math.round(Math.random() * 96);
113
+ row.shimmers.push({
114
+ key: `${key}:${j}`,
115
+ width
116
+ });
117
+ }
118
+ loader.shimmerRows.push(row);
119
+ }
120
+ return loader;
121
+ }
122
+ const SearchPane = ({ onSearch, onTrackingClick, searchButtonRef, toggleSearch, onSearchAsYouType }) => {
123
+ const theme = (0, _emotion_react.useTheme)();
124
+ const [value, setValue] = (0, react.useState)("");
125
+ const inputRef = (0, react.useRef)(null);
126
+ const [autoCompleteSuggestions, setAutoCompleteSuggestions] = (0, react.useState)([]);
127
+ const [searchAsYouTypeResults, setSearchAsYouTypeResults] = (0, react.useState)(null);
128
+ const [searchResultClicked, setSearchResultClicked] = (0, react.useState)(false);
129
+ const { setOnSearchAsYouTypeParams } = require_index$1.useSearchTrackingContext();
130
+ const { globalHeaderDynamicData } = require_context.useGlobalHeaderDynamicDataContext();
131
+ const banner = globalHeaderDynamicData?.catalogDropdown?.banner;
132
+ const showMarketingBanner = banner?.text && banner?.href && require_MarketingBanner.MarketingBanner;
133
+ const searchAsYouTypeLoader = react.useMemo(() => searchAsYouTypeResults === null ? rndLoader() : null, [searchAsYouTypeResults]);
134
+ const valueTrimmed = value.trim();
135
+ const hasSearchEventAndResultsWithoutClick = onSearchAsYouType && searchAsYouTypeResults && !searchResultClicked;
136
+ const closeSearch = async () => {
137
+ if (hasSearchEventAndResultsWithoutClick && valueTrimmed.length > 0) {
138
+ const { query, searchId, resultsCount, queryLoadTime } = searchAsYouTypeResults;
139
+ onSearchAsYouType(query, searchId, resultsCount, queryLoadTime);
140
+ }
141
+ await toggleSearch();
142
+ setTimeout(() => {
143
+ if (searchButtonRef && searchButtonRef?.current) searchButtonRef.current?.focus();
144
+ }, 10);
145
+ };
146
+ const onKeyDown = require_keyboardNav.useOnEscHandler(closeSearch);
147
+ const onMouseDownOutside = ({ target }) => {
148
+ const handleOutsideClick = () => {
149
+ if (!document.querySelector("[data-testid=\"header-search-dropdown\"]")?.contains(target) && target !== searchButtonRef?.current) closeSearch();
150
+ target?.removeEventListener("mouseup", handleOutsideClick);
151
+ };
152
+ target?.addEventListener("mouseup", handleOutsideClick);
153
+ };
154
+ const navigateToSearch = (searchTerm, fromPrevSearch) => {
155
+ onSearch(searchTerm, fromPrevSearch);
156
+ };
157
+ const handleChange = (evt) => {
158
+ setValue(evt.target.value);
159
+ setSearchResultClicked(false);
160
+ };
161
+ const handleSubmit = (event) => {
162
+ event.preventDefault();
163
+ if (hasSearchEventAndResultsWithoutClick) {
164
+ const { query, searchId, resultsCount, queryLoadTime } = searchAsYouTypeResults;
165
+ onSearchAsYouType(query, searchId, resultsCount, queryLoadTime);
166
+ }
167
+ navigateToSearch(value, searchAsYouTypeResults?.searchId);
168
+ };
169
+ const clearInput = () => {
170
+ if (hasSearchEventAndResultsWithoutClick && valueTrimmed.length > 0) {
171
+ const { query, searchId, resultsCount, queryLoadTime } = searchAsYouTypeResults;
172
+ onSearchAsYouType(query, searchId, resultsCount, queryLoadTime);
173
+ }
174
+ setValue("");
175
+ setAutoCompleteSuggestions([]);
176
+ setOnSearchAsYouTypeParams({
177
+ query: "",
178
+ searchId: "",
179
+ resultsCount: 0,
180
+ queryLoadTime: 0
181
+ });
182
+ };
183
+ require_useUrlChangeDetection.useUrlChangeDetection({ onUrlChange: () => {
184
+ if (hasSearchEventAndResultsWithoutClick && valueTrimmed.length > 0) {
185
+ const { query, searchId, resultsCount, queryLoadTime } = searchAsYouTypeResults;
186
+ onSearchAsYouType(query, searchId, resultsCount, queryLoadTime);
187
+ }
188
+ toggleSearch();
189
+ } });
190
+ (0, react.useEffect)(() => {
191
+ if (searchResultClicked || !onSearchAsYouType || !searchAsYouTypeResults || !valueTrimmed.length) return;
192
+ }, [
193
+ searchResultClicked,
194
+ searchAsYouTypeResults,
195
+ valueTrimmed,
196
+ onSearchAsYouType
197
+ ]);
198
+ (0, react.useEffect)(() => {
199
+ inputRef.current?.focus();
200
+ require_index$2.searchWorker.init();
201
+ }, []);
202
+ (0, react.useEffect)(() => {
203
+ if (!valueTrimmed.length) {
204
+ setSearchAsYouTypeResults(null);
205
+ setAutoCompleteSuggestions([]);
206
+ setOnSearchAsYouTypeParams({
207
+ query: "",
208
+ searchId: "",
209
+ resultsCount: 0,
210
+ queryLoadTime: 0
211
+ });
212
+ return;
213
+ }
214
+ let cancel = false;
215
+ let clearAutocomplete = true;
216
+ let clearSearchAsYouType = true;
217
+ let searchEventNoResultDelay;
218
+ const loaderDelay = setTimeout(() => {
219
+ if (cancel) return;
220
+ if (clearAutocomplete) setAutoCompleteSuggestions([]);
221
+ if (clearSearchAsYouType) setSearchAsYouTypeResults(null);
222
+ }, 10);
223
+ require_index$2.searchWorker.autocomplete(valueTrimmed).then((suggestions) => {
224
+ clearAutocomplete = false;
225
+ if (cancel) return;
226
+ setAutoCompleteSuggestions(suggestions);
227
+ });
228
+ require_index$2.searchWorker.searchAsYouType(valueTrimmed).then((results) => {
229
+ clearSearchAsYouType = false;
230
+ if (cancel) return;
231
+ setSearchAsYouTypeResults(results);
232
+ setOnSearchAsYouTypeParams({
233
+ query: results.query,
234
+ searchId: results.searchId,
235
+ resultsCount: results.top.length,
236
+ queryLoadTime: results.queryLoadTime
237
+ });
238
+ if (onSearchAsYouType && results.top.length === 0 && !searchResultClicked) {
239
+ const { query, searchId, queryLoadTime } = results;
240
+ searchEventNoResultDelay = setTimeout(() => {
241
+ if (!cancel) onSearchAsYouType(query, searchId, 0, queryLoadTime);
242
+ }, 300);
243
+ }
244
+ });
245
+ return () => {
246
+ cancel = true;
247
+ clearTimeout(loaderDelay);
248
+ clearTimeout(searchEventNoResultDelay);
249
+ };
250
+ }, [
251
+ valueTrimmed,
252
+ onSearchAsYouType,
253
+ searchResultClicked,
254
+ setOnSearchAsYouTypeParams
255
+ ]);
256
+ return /* @__PURE__ */ react.createElement(react.Fragment, null, /* @__PURE__ */ react.createElement(_codecademy_gamut.Box, {
257
+ "aria-hidden": true,
258
+ bg: "shadow-secondary",
259
+ height: "100vh",
260
+ position: "fixed",
261
+ top: `calc(${theme.elements.headerHeight} + 6rem)`,
262
+ width: 1
263
+ }), /* @__PURE__ */ react.createElement(_codecademy_gamut.FocusTrap, {
264
+ onEscapeKey: closeSearch,
265
+ onClickOutside: onMouseDownOutside,
266
+ allowPageInteraction: true
267
+ }, /* @__PURE__ */ react.createElement(_codecademy_gamut.Box, {
268
+ bg: "background",
269
+ borderColorBottom: "border-primary",
270
+ borderColorTop: "border-tertiary",
271
+ borderStyle: "solid",
272
+ borderWidth: "2px 0 1px",
273
+ "data-testid": "header-search-dropdown",
274
+ position: {
275
+ _: "fixed",
276
+ md: "absolute"
277
+ },
278
+ width: "100%",
279
+ maxHeight: {
280
+ _: "calc(100vh - 63px)",
281
+ md: "calc(100vh - 80px)"
282
+ },
283
+ overflow: "auto",
284
+ zIndex: 10
285
+ }, /* @__PURE__ */ react.createElement(_codecademy_gamut.Box, {
286
+ border: "none",
287
+ width: "auto"
288
+ }, /* @__PURE__ */ react.createElement(QueryContainer, { $compact: !!showMarketingBanner }, /* @__PURE__ */ react.createElement(_codecademy_gamut.FlexBox, {
289
+ alignItems: "baseline",
290
+ borderColor: "gray-600",
291
+ borderStyleBottom: "solid",
292
+ borderWidthBottom: "1px",
293
+ width: "100%"
294
+ }, /* @__PURE__ */ react.createElement(_codecademy_gamut_icons.SearchIcon, {
295
+ height: {
296
+ _: 20,
297
+ md: 24
298
+ },
299
+ width: {
300
+ _: 20,
301
+ md: 24
302
+ }
303
+ }), /* @__PURE__ */ react.createElement(Form, {
304
+ action: "/search",
305
+ id: "search-form",
306
+ ml: 8,
307
+ onSubmit: handleSubmit,
308
+ width: "100%"
309
+ }, /* @__PURE__ */ react.createElement(StyledInput, {
310
+ autoFocus: true,
311
+ background: "none",
312
+ border: "none",
313
+ color: "text",
314
+ fontSize: {
315
+ _: 20,
316
+ md: 26
317
+ },
318
+ fontWeight: "bold",
319
+ id: "header-search-bar",
320
+ name: "query",
321
+ onChange: handleChange,
322
+ onKeyDown: (e) => onKeyDown(e),
323
+ placeholder: require_consts.searchPlaceholder,
324
+ ref: inputRef,
325
+ type: "search",
326
+ value,
327
+ width: "100%",
328
+ autoComplete: "off"
329
+ })), /* @__PURE__ */ react.createElement(_codecademy_gamut.IconButton, {
330
+ icon: _codecademy_gamut_icons.MiniDeleteIcon,
331
+ "aria-label": "Clear search",
332
+ tip: "Clear search",
333
+ tipProps: {
334
+ alignment: "bottom-center",
335
+ placement: "floating",
336
+ narrow: true,
337
+ zIndex: 2
338
+ },
339
+ onClick: clearInput,
340
+ size: "small"
341
+ })))), showMarketingBanner && /* @__PURE__ */ react.createElement(_codecademy_gamut.ContentContainer, null, /* @__PURE__ */ react.createElement(require_MarketingBanner.MarketingBanner, {
342
+ source: "search",
343
+ text: banner?.text,
344
+ href: banner?.href,
345
+ tabIndex: 0,
346
+ py: {
347
+ _: 16,
348
+ lg: 24
349
+ }
350
+ })), /* @__PURE__ */ react.createElement(SuggestionContainer, { $compact: !!showMarketingBanner }, valueTrimmed.length > 0 ? /* @__PURE__ */ react.createElement(react.Fragment, null, /* @__PURE__ */ react.createElement(_codecademy_gamut.FlexBox, {
351
+ flexDirection: "column",
352
+ as: "ul",
353
+ listStyle: "none",
354
+ p: 0
355
+ }, autoCompleteSuggestions.map((s, i) => /* @__PURE__ */ react.createElement(InlineResultLi, {
356
+ key: s.title,
357
+ tabIndex: 0,
358
+ onKeyDown: (evt) => {
359
+ if (evt.key === "Enter") {
360
+ setSearchResultClicked(true);
361
+ onTrackingClick("autocomplete_result", {
362
+ search_id: searchAsYouTypeResults?.searchId ?? "",
363
+ misc: JSON.stringify({ position: i })
364
+ });
365
+ navigateToSearch(s.title, searchAsYouTypeResults?.searchId);
366
+ closeSearch();
367
+ }
368
+ },
369
+ onClick: () => {
370
+ setSearchResultClicked(true);
371
+ onTrackingClick("autocomplete_result", {
372
+ search_id: searchAsYouTypeResults?.searchId ?? "",
373
+ misc: JSON.stringify({ position: i })
374
+ });
375
+ navigateToSearch(s.title, searchAsYouTypeResults?.searchId);
376
+ closeSearch();
377
+ }
378
+ }, /* @__PURE__ */ react.createElement(SemiboldSearchIcon, {
379
+ mb: 2,
380
+ size: 14,
381
+ strokeWidth: 8,
382
+ "aria-hidden": true,
383
+ mr: 12
384
+ }), /* @__PURE__ */ react.createElement(HighlightedText, { suggestion: s })))), (searchAsYouTypeResults === null || searchAsYouTypeResults.top.length > 0) && /* @__PURE__ */ react.createElement(react.Fragment, null, /* @__PURE__ */ react.createElement(_codecademy_gamut.Text, {
385
+ as: "h2",
386
+ fontSize: 20,
387
+ mb: 16,
388
+ mt: 24
389
+ }, "Top results"), /* @__PURE__ */ react.createElement(_codecademy_gamut.FlexBox, {
390
+ flexDirection: "column",
391
+ as: "ul",
392
+ listStyle: "none",
393
+ p: 0
394
+ }, searchAsYouTypeResults === null ? searchAsYouTypeLoader?.shimmerRows.map((r) => /* @__PURE__ */ react.createElement(InlineLoaderLi, { key: r.key }, r.shimmers.map((word) => /* @__PURE__ */ react.createElement(_codecademy_gamut.Shimmer, {
395
+ height: 30,
396
+ py: 8,
397
+ key: word.key,
398
+ width: word.width
399
+ })), /* @__PURE__ */ react.createElement(_codecademy_gamut.Box, {
400
+ fontFamily: "accent",
401
+ textColor: "text-secondary",
402
+ fontSize: { _: 10 },
403
+ borderColor: "border-secondary",
404
+ border: 1,
405
+ borderRadius: "xl",
406
+ px: 16,
407
+ opacity: .1
408
+ }, "\xA0"))) : searchAsYouTypeResults.top.map((s, i) => /* @__PURE__ */ react.createElement(InlineResultLi, {
409
+ key: `${searchAsYouTypeResults.query}:${i.toString()}`,
410
+ tabIndex: 0,
411
+ role: "link",
412
+ onKeyDown: (evt) => {
413
+ if (evt.key === "Enter") {
414
+ setSearchResultClicked(true);
415
+ onTrackingClick("search_as_you_type_result", {
416
+ search_id: searchAsYouTypeResults.searchId,
417
+ slug: s.slug,
418
+ ...s.contentId ? { content_id: s.contentId } : {},
419
+ misc: JSON.stringify({ position: i })
420
+ });
421
+ closeSearch();
422
+ require_safelyRedirect.safelyRedirect(s.urlPath);
423
+ }
424
+ },
425
+ onClick: () => {
426
+ setSearchResultClicked(true);
427
+ onTrackingClick("search_as_you_type_result", {
428
+ search_id: searchAsYouTypeResults.searchId,
429
+ slug: s.slug,
430
+ ...s.contentId ? { content_id: s.contentId } : {},
431
+ misc: JSON.stringify({ position: i })
432
+ });
433
+ closeSearch();
434
+ require_safelyRedirect.safelyRedirect(s.urlPath);
435
+ }
436
+ }, /* @__PURE__ */ react.createElement(HighlightedText, { suggestion: s }), /* @__PURE__ */ react.createElement(_codecademy_gamut.Badge, {
437
+ size: "sm",
438
+ variant: "tertiary",
439
+ ml: 12
440
+ }, s.type))))), searchAsYouTypeResults?.top.length === 0 && /* @__PURE__ */ react.createElement(react.Fragment, null, /* @__PURE__ */ react.createElement(_codecademy_gamut.Box, {
441
+ fontSize: {
442
+ _: 20,
443
+ sm: 26
444
+ },
445
+ mt: 0,
446
+ mb: 48
447
+ }, `We couldn't find a match for `, /* @__PURE__ */ react.createElement(_codecademy_gamut.Text, { fontWeight: "bold" }, `"${valueTrimmed}."`), " Try another keyword, or see what our members are learning."), /* @__PURE__ */ react.createElement(_codecademy_gamut.Menu, {
448
+ border: "none",
449
+ variant: "popover"
450
+ }, /* @__PURE__ */ react.createElement(require_DefaultResults.PopularContent, { onTrackingClick })))) : /* @__PURE__ */ react.createElement(_codecademy_gamut.Menu, {
451
+ border: "none",
452
+ variant: "popover"
453
+ }, /* @__PURE__ */ react.createElement(require_DefaultResults.PopularSearches, {
454
+ navigateToSearch,
455
+ onTrackingClick
456
+ }), /* @__PURE__ */ react.createElement(require_DefaultResults.PopularContent, { onTrackingClick })), !!searchAsYouTypeResults?.top.length && /* @__PURE__ */ react.createElement(_codecademy_gamut.StrokeButton, {
457
+ my: 16,
458
+ onClick: () => {
459
+ onTrackingClick("view_all_results", { search_id: searchAsYouTypeResults.searchId });
460
+ navigateToSearch(value, searchAsYouTypeResults?.searchId);
461
+ closeSearch();
462
+ }
463
+ }, "View all results"), /* @__PURE__ */ react.createElement(require_QuizAndHelpCenterLinks.QuizAndHelpCenterLinks, {
464
+ onTrackingClick,
465
+ handleCloseDropdown: closeSearch
466
+ })))));
467
+ };
468
+
469
+ //#endregion
470
+ exports.SearchPane = SearchPane;
471
+ exports.SemiboldSearchIcon = SemiboldSearchIcon;
472
+ //# sourceMappingURL=SearchPane.cjs.map