@nlabs/gothamui 1.8.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 (426) hide show
  1. package/LICENSE +21 -0
  2. package/MIGRATION.md +36 -0
  3. package/README.md +768 -0
  4. package/docs/assets/gothamui-app-architecture.svg +159 -0
  5. package/docs/assets/gothamui-logo.png +0 -0
  6. package/docs/assets/gothamui-logo.svg +42 -0
  7. package/docs/render-performance.md +34 -0
  8. package/lib/actions/GothamActions.d.ts +42 -0
  9. package/lib/actions/GothamActions.js +67 -0
  10. package/lib/actions/MarkdownActions.d.ts +4 -0
  11. package/lib/actions/MarkdownActions.js +48 -0
  12. package/lib/app.d.ts +1 -0
  13. package/lib/app.js +198 -0
  14. package/lib/components/Alert/Alert.d.ts +8 -0
  15. package/lib/components/Alert/Alert.js +24 -0
  16. package/lib/components/Alert/Alert.stories.js +59 -0
  17. package/lib/components/AuthRoute/AuthRoute.d.ts +3 -0
  18. package/lib/components/AuthRoute/AuthRoute.js +21 -0
  19. package/lib/components/AuthRoute/AuthRoute.stories.js +45 -0
  20. package/lib/components/AutocompleteField/AutocompleteField.d.ts +24 -0
  21. package/lib/components/AutocompleteField/AutocompleteField.js +148 -0
  22. package/lib/components/AutocompleteField/AutocompleteField.stories.js +62 -0
  23. package/lib/components/Avatar/Avatar.d.ts +29 -0
  24. package/lib/components/Avatar/Avatar.js +154 -0
  25. package/lib/components/Avatar/Avatar.stories.js +105 -0
  26. package/lib/components/Badge/Badge.d.ts +9 -0
  27. package/lib/components/Badge/Badge.js +22 -0
  28. package/lib/components/Badge/Badge.stories.js +53 -0
  29. package/lib/components/Breadcrumbs/Breadcrumbs.d.ts +19 -0
  30. package/lib/components/Breadcrumbs/Breadcrumbs.js +74 -0
  31. package/lib/components/Breadcrumbs/Breadcrumbs.stories.js +95 -0
  32. package/lib/components/Button/Button.d.ts +25 -0
  33. package/lib/components/Button/Button.js +157 -0
  34. package/lib/components/Button/Button.stories.js +119 -0
  35. package/lib/components/Card/Card.d.ts +8 -0
  36. package/lib/components/Card/Card.js +39 -0
  37. package/lib/components/Card/Card.stories.js +60 -0
  38. package/lib/components/CategoryGrid/CategoryGrid.d.ts +15 -0
  39. package/lib/components/CategoryGrid/CategoryGrid.js +42 -0
  40. package/lib/components/CategoryGrid/CategoryGrid.stories.js +35 -0
  41. package/lib/components/Chat/AudioMessage/AudioMessage.css +1 -0
  42. package/lib/components/Chat/AudioMessage/AudioMessage.d.ts +3 -0
  43. package/lib/components/Chat/AudioMessage/AudioMessage.js +28 -0
  44. package/lib/components/Chat/Avatar/Avatar.css +1 -0
  45. package/lib/components/Chat/Avatar/Avatar.d.ts +3 -0
  46. package/lib/components/Chat/Avatar/Avatar.js +72 -0
  47. package/lib/components/Chat/Button/Button.css +1 -0
  48. package/lib/components/Chat/Button/Button.d.ts +3 -0
  49. package/lib/components/Chat/Button/Button.js +37 -0
  50. package/lib/components/Chat/Chat.stories.js +688 -0
  51. package/lib/components/Chat/ChatItem/ChatItem.css +1 -0
  52. package/lib/components/Chat/ChatItem/ChatItem.d.ts +3 -0
  53. package/lib/components/Chat/ChatItem/ChatItem.js +183 -0
  54. package/lib/components/Chat/ChatList/ChatList.css +1 -0
  55. package/lib/components/Chat/ChatList/ChatList.d.ts +3 -0
  56. package/lib/components/Chat/ChatList/ChatList.js +84 -0
  57. package/lib/components/Chat/Circle/Circle.d.ts +3 -0
  58. package/lib/components/Chat/Circle/Circle.js +27 -0
  59. package/lib/components/Chat/Dropdown/Dropdown.css +1 -0
  60. package/lib/components/Chat/Dropdown/Dropdown.d.ts +3 -0
  61. package/lib/components/Chat/Dropdown/Dropdown.js +66 -0
  62. package/lib/components/Chat/FileMessage/FileMessage.css +1 -0
  63. package/lib/components/Chat/FileMessage/FileMessage.d.ts +3 -0
  64. package/lib/components/Chat/FileMessage/FileMessage.js +77 -0
  65. package/lib/components/Chat/Input/Input.css +1 -0
  66. package/lib/components/Chat/Input/Input.d.ts +3 -0
  67. package/lib/components/Chat/Input/Input.js +108 -0
  68. package/lib/components/Chat/LocationMessage/LocationMessage.css +1 -0
  69. package/lib/components/Chat/LocationMessage/LocationMessage.d.ts +3 -0
  70. package/lib/components/Chat/LocationMessage/LocationMessage.js +36 -0
  71. package/lib/components/Chat/MeetingItem/MeetingItem.css +1 -0
  72. package/lib/components/Chat/MeetingItem/MeetingItem.d.ts +3 -0
  73. package/lib/components/Chat/MeetingItem/MeetingItem.js +106 -0
  74. package/lib/components/Chat/MeetingLink/MeetingLink.css +1 -0
  75. package/lib/components/Chat/MeetingLink/MeetingLink.d.ts +3 -0
  76. package/lib/components/Chat/MeetingLink/MeetingLink.js +26 -0
  77. package/lib/components/Chat/MeetingList/MeetingList.css +1 -0
  78. package/lib/components/Chat/MeetingList/MeetingList.d.ts +3 -0
  79. package/lib/components/Chat/MeetingList/MeetingList.js +52 -0
  80. package/lib/components/Chat/MeetingMessage/MeetingMessage.css +1 -0
  81. package/lib/components/Chat/MeetingMessage/MeetingMessage.d.ts +3 -0
  82. package/lib/components/Chat/MeetingMessage/MeetingMessage.js +227 -0
  83. package/lib/components/Chat/MessageBox/MessageBox.css +1 -0
  84. package/lib/components/Chat/MessageBox/MessageBox.d.ts +3 -0
  85. package/lib/components/Chat/MessageBox/MessageBox.js +263 -0
  86. package/lib/components/Chat/MessageList/MessageList.css +1 -0
  87. package/lib/components/Chat/MessageList/MessageList.d.ts +2 -0
  88. package/lib/components/Chat/MessageList/MessageList.js +196 -0
  89. package/lib/components/Chat/Navbar/Navbar.css +1 -0
  90. package/lib/components/Chat/Navbar/Navbar.d.ts +3 -0
  91. package/lib/components/Chat/Navbar/Navbar.js +21 -0
  92. package/lib/components/Chat/PhotoMessage/PhotoMessage.css +1 -0
  93. package/lib/components/Chat/PhotoMessage/PhotoMessage.d.ts +3 -0
  94. package/lib/components/Chat/PhotoMessage/PhotoMessage.js +73 -0
  95. package/lib/components/Chat/Popup/Popup.css +1 -0
  96. package/lib/components/Chat/Popup/Popup.d.ts +3 -0
  97. package/lib/components/Chat/Popup/Popup.js +45 -0
  98. package/lib/components/Chat/README.md +50 -0
  99. package/lib/components/Chat/ReplyMessage/ReplyMessage.css +1 -0
  100. package/lib/components/Chat/ReplyMessage/ReplyMessage.d.ts +3 -0
  101. package/lib/components/Chat/ReplyMessage/ReplyMessage.js +42 -0
  102. package/lib/components/Chat/SideBar/SideBar.css +1 -0
  103. package/lib/components/Chat/SideBar/SideBar.d.ts +3 -0
  104. package/lib/components/Chat/SideBar/SideBar.js +21 -0
  105. package/lib/components/Chat/SpotifyMessage/SpotifyMessage.css +1 -0
  106. package/lib/components/Chat/SpotifyMessage/SpotifyMessage.d.ts +3 -0
  107. package/lib/components/Chat/SpotifyMessage/SpotifyMessage.js +28 -0
  108. package/lib/components/Chat/SystemMessage/SystemMessage.css +1 -0
  109. package/lib/components/Chat/SystemMessage/SystemMessage.d.ts +3 -0
  110. package/lib/components/Chat/SystemMessage/SystemMessage.js +14 -0
  111. package/lib/components/Chat/VideoMessage/VideoMessage.css +1 -0
  112. package/lib/components/Chat/VideoMessage/VideoMessage.d.ts +3 -0
  113. package/lib/components/Chat/VideoMessage/VideoMessage.js +88 -0
  114. package/lib/components/Chat/assets/img/leftArrow.svg +6 -0
  115. package/lib/components/Chat/assets/img/rightArrow.svg +6 -0
  116. package/lib/components/Chat/index.d.ts +25 -0
  117. package/lib/components/Chat/index.js +27 -0
  118. package/lib/components/Chat/type.d.js +52 -0
  119. package/lib/components/Chat/utils/formatRelativeDate.d.ts +4 -0
  120. package/lib/components/Chat/utils/formatRelativeDate.js +110 -0
  121. package/lib/components/Checkbox/Checkbox.d.ts +15 -0
  122. package/lib/components/Checkbox/Checkbox.js +106 -0
  123. package/lib/components/Checkbox/Checkbox.stories.js +51 -0
  124. package/lib/components/ComponentUtils/renderWithAsChild.d.ts +9 -0
  125. package/lib/components/ComponentUtils/renderWithAsChild.js +27 -0
  126. package/lib/components/Container/Container.d.ts +7 -0
  127. package/lib/components/Container/Container.js +16 -0
  128. package/lib/components/Container/Container.stories.js +36 -0
  129. package/lib/components/DateField/DateField.d.ts +22 -0
  130. package/lib/components/DateField/DateField.js +145 -0
  131. package/lib/components/DateField/DateField.stories.js +125 -0
  132. package/lib/components/DateField/DatePicker.d.ts +9 -0
  133. package/lib/components/DateField/DatePicker.js +205 -0
  134. package/lib/components/DateField/DatePicker.stories.js +33 -0
  135. package/lib/components/DescriptionList/DescriptionList.d.ts +4 -0
  136. package/lib/components/DescriptionList/DescriptionList.js +19 -0
  137. package/lib/components/DescriptionList/DescriptionList.stories.js +34 -0
  138. package/lib/components/Dialog/Dialog.d.ts +25 -0
  139. package/lib/components/Dialog/Dialog.js +66 -0
  140. package/lib/components/Dialog/Dialog.stories.js +88 -0
  141. package/lib/components/DropUpload/DropUpload.d.ts +37 -0
  142. package/lib/components/DropUpload/DropUpload.js +323 -0
  143. package/lib/components/DropUpload/DropUpload.stories.js +48 -0
  144. package/lib/components/Empty/Empty.d.ts +11 -0
  145. package/lib/components/Empty/Empty.js +39 -0
  146. package/lib/components/Empty/Empty.stories.js +52 -0
  147. package/lib/components/EmptyState/EmptyState.d.ts +15 -0
  148. package/lib/components/EmptyState/EmptyState.js +44 -0
  149. package/lib/components/EmptyState/EmptyState.stories.js +36 -0
  150. package/lib/components/ErrorMessage/ErrorMessage.d.ts +7 -0
  151. package/lib/components/ErrorMessage/ErrorMessage.js +20 -0
  152. package/lib/components/ErrorMessage/ErrorMessage.stories.js +25 -0
  153. package/lib/components/FaqSection/FaqSection.d.ts +14 -0
  154. package/lib/components/FaqSection/FaqSection.js +37 -0
  155. package/lib/components/FaqSection/FaqSection.stories.js +31 -0
  156. package/lib/components/Fieldset/Fieldset.d.ts +21 -0
  157. package/lib/components/Fieldset/Fieldset.js +39 -0
  158. package/lib/components/Fieldset/Fieldset.stories.js +42 -0
  159. package/lib/components/Footer/Footer.d.ts +26 -0
  160. package/lib/components/Footer/Footer.js +119 -0
  161. package/lib/components/Footer/Footer.stories.js +184 -0
  162. package/lib/components/Form/Form.d.ts +42 -0
  163. package/lib/components/Form/Form.js +198 -0
  164. package/lib/components/Form/Form.stories.js +65 -0
  165. package/lib/components/Form/FormContext.d.ts +35 -0
  166. package/lib/components/Form/FormContext.js +71 -0
  167. package/lib/components/GothamRoute/GothamRoute.d.ts +0 -0
  168. package/lib/components/GothamRoute/GothamRoute.js +56 -0
  169. package/lib/components/GothamRouter/GothamRouter.d.ts +0 -0
  170. package/lib/components/GothamRouter/GothamRouter.js +52 -0
  171. package/lib/components/Heading/Heading.d.ts +7 -0
  172. package/lib/components/Heading/Heading.js +20 -0
  173. package/lib/components/Heading/Heading.stories.js +51 -0
  174. package/lib/components/IncentiveGrid/IncentiveGrid.d.ts +15 -0
  175. package/lib/components/IncentiveGrid/IncentiveGrid.js +34 -0
  176. package/lib/components/IncentiveGrid/IncentiveGrid.stories.js +41 -0
  177. package/lib/components/InputField/InputField.d.ts +25 -0
  178. package/lib/components/InputField/InputField.js +68 -0
  179. package/lib/components/InputField/InputField.stories.js +58 -0
  180. package/lib/components/Item/Item.d.ts +25 -0
  181. package/lib/components/Item/Item.js +79 -0
  182. package/lib/components/Item/Item.stories.js +94 -0
  183. package/lib/components/Kbd/Kbd.d.ts +2 -0
  184. package/lib/components/Kbd/Kbd.js +9 -0
  185. package/lib/components/Kbd/Kbd.stories.js +24 -0
  186. package/lib/components/Label/Label.d.ts +11 -0
  187. package/lib/components/Label/Label.js +23 -0
  188. package/lib/components/Label/Label.stories.js +38 -0
  189. package/lib/components/Link/Link.d.ts +7 -0
  190. package/lib/components/Link/Link.js +13 -0
  191. package/lib/components/Link/Link.stories.js +28 -0
  192. package/lib/components/ListContainer/ListContainer.d.ts +8 -0
  193. package/lib/components/ListContainer/ListContainer.js +14 -0
  194. package/lib/components/ListContainer/ListContainer.stories.js +45 -0
  195. package/lib/components/Loader/Loader.d.ts +9 -0
  196. package/lib/components/Loader/Loader.js +36 -0
  197. package/lib/components/Loader/Loader.stories.js +94 -0
  198. package/lib/components/LogoCloud/LogoCloud.d.ts +15 -0
  199. package/lib/components/LogoCloud/LogoCloud.js +43 -0
  200. package/lib/components/LogoCloud/LogoCloud.stories.js +28 -0
  201. package/lib/components/Markdown/Markdown.d.ts +8 -0
  202. package/lib/components/Markdown/Markdown.js +64 -0
  203. package/lib/components/Markdown/Markdown.stories.js +34 -0
  204. package/lib/components/MediaLightbox/MediaLightbox.d.ts +22 -0
  205. package/lib/components/MediaLightbox/MediaLightbox.js +80 -0
  206. package/lib/components/MediaObject/MediaObject.d.ts +8 -0
  207. package/lib/components/MediaObject/MediaObject.js +37 -0
  208. package/lib/components/MediaObject/MediaObject.stories.js +28 -0
  209. package/lib/components/Navbar/Navbar.d.ts +43 -0
  210. package/lib/components/Navbar/Navbar.js +213 -0
  211. package/lib/components/Navbar/Navbar.stories.js +235 -0
  212. package/lib/components/NotFound/NotFound.d.ts +34 -0
  213. package/lib/components/NotFound/NotFound.js +351 -0
  214. package/lib/components/NotFound/NotFound.stories.js +80 -0
  215. package/lib/components/Notify/Notify.d.ts +18 -0
  216. package/lib/components/Notify/Notify.js +178 -0
  217. package/lib/components/Notify/Notify.stories.js +148 -0
  218. package/lib/components/Notify/NotifyExample.d.ts +1 -0
  219. package/lib/components/Notify/NotifyExample.js +174 -0
  220. package/lib/components/Notify/README.md +103 -0
  221. package/lib/components/Pagination/Pagination.d.ts +18 -0
  222. package/lib/components/Pagination/Pagination.js +225 -0
  223. package/lib/components/Pagination/Pagination.stories.js +69 -0
  224. package/lib/components/PasswordStrengthMeter/PasswordStrengthMeter.d.ts +12 -0
  225. package/lib/components/PasswordStrengthMeter/PasswordStrengthMeter.js +88 -0
  226. package/lib/components/PasswordStrengthMeter/PasswordStrengthMeter.stories.js +16 -0
  227. package/lib/components/PaymentMethodPanel/PaymentMethodPanel.d.ts +18 -0
  228. package/lib/components/PaymentMethodPanel/PaymentMethodPanel.js +113 -0
  229. package/lib/components/PaymentMethodPanel/PaymentMethodPanel.stories.js +88 -0
  230. package/lib/components/Pricing/Pricing.d.ts +78 -0
  231. package/lib/components/Pricing/Pricing.js +764 -0
  232. package/lib/components/Pricing/Pricing.stories.js +146 -0
  233. package/lib/components/ProductGrid/ProductGrid.d.ts +23 -0
  234. package/lib/components/ProductGrid/ProductGrid.js +79 -0
  235. package/lib/components/ProductGrid/ProductGrid.stories.js +50 -0
  236. package/lib/components/ProgressSteps/ProgressSteps.d.ts +13 -0
  237. package/lib/components/ProgressSteps/ProgressSteps.js +51 -0
  238. package/lib/components/ProgressSteps/ProgressSteps.stories.js +35 -0
  239. package/lib/components/RadioField/RadioField.d.ts +16 -0
  240. package/lib/components/RadioField/RadioField.js +63 -0
  241. package/lib/components/RadioField/RadioField.stories.js +140 -0
  242. package/lib/components/ReviewList/ReviewList.d.ts +15 -0
  243. package/lib/components/ReviewList/ReviewList.js +51 -0
  244. package/lib/components/ReviewList/ReviewList.stories.js +29 -0
  245. package/lib/components/SectionHeader/SectionHeader.d.ts +9 -0
  246. package/lib/components/SectionHeader/SectionHeader.js +36 -0
  247. package/lib/components/SectionHeader/SectionHeader.stories.js +35 -0
  248. package/lib/components/SelectField/SelectField.d.ts +18 -0
  249. package/lib/components/SelectField/SelectField.js +145 -0
  250. package/lib/components/SelectField/SelectField.stories.js +155 -0
  251. package/lib/components/SelectField/SelectOption.d.ts +13 -0
  252. package/lib/components/SelectField/SelectOption.js +40 -0
  253. package/lib/components/SelectField/SelectOption.stories.js +40 -0
  254. package/lib/components/Separator/Separator.d.ts +6 -0
  255. package/lib/components/Separator/Separator.js +13 -0
  256. package/lib/components/Separator/Separator.stories.js +70 -0
  257. package/lib/components/Skeleton/Skeleton.d.ts +2 -0
  258. package/lib/components/Skeleton/Skeleton.js +9 -0
  259. package/lib/components/Skeleton/Skeleton.stories.js +24 -0
  260. package/lib/components/Svg/Svg.d.ts +9 -0
  261. package/lib/components/Svg/Svg.js +25 -0
  262. package/lib/components/Svg/Svg.stories.js +34 -0
  263. package/lib/components/Switch/Switch.d.ts +12 -0
  264. package/lib/components/Switch/Switch.js +54 -0
  265. package/lib/components/Switch/Switch.stories.js +61 -0
  266. package/lib/components/Table/Table.d.ts +18 -0
  267. package/lib/components/Table/Table.js +99 -0
  268. package/lib/components/Table/Table.stories.js +79 -0
  269. package/lib/components/Tabs/Tabs.d.ts +17 -0
  270. package/lib/components/Tabs/Tabs.js +85 -0
  271. package/lib/components/Tabs/Tabs.stories.js +45 -0
  272. package/lib/components/Text/Text.d.ts +5 -0
  273. package/lib/components/Text/Text.js +24 -0
  274. package/lib/components/Text/Text.stories.js +35 -0
  275. package/lib/components/TextField/TextField.d.ts +31 -0
  276. package/lib/components/TextField/TextField.js +91 -0
  277. package/lib/components/TextField/TextField.stories.js +158 -0
  278. package/lib/components/Textarea/Textarea.d.ts +5 -0
  279. package/lib/components/Textarea/Textarea.js +10 -0
  280. package/lib/components/Textarea/Textarea.stories.js +32 -0
  281. package/lib/components/index.d.ts +60 -0
  282. package/lib/components/index.js +62 -0
  283. package/lib/config/appConfig.d.ts +5 -0
  284. package/lib/config/appConfig.js +20 -0
  285. package/lib/constants/AuthConstants.d.ts +8 -0
  286. package/lib/constants/AuthConstants.js +9 -0
  287. package/lib/constants/GothamConstants.d.ts +24 -0
  288. package/lib/constants/GothamConstants.js +25 -0
  289. package/lib/constants/MarkdownConstants.d.ts +8 -0
  290. package/lib/constants/MarkdownConstants.js +9 -0
  291. package/lib/constants/MessageConstants.d.ts +10 -0
  292. package/lib/constants/MessageConstants.js +11 -0
  293. package/lib/docs/analytics.md +231 -0
  294. package/lib/docs/api-reference.md +364 -0
  295. package/lib/docs/comparison.md +83 -0
  296. package/lib/docs/containers.md +11 -0
  297. package/lib/docs/gettingStarted.md +338 -0
  298. package/lib/docs/payments.md +79 -0
  299. package/lib/editor/CodeEditor.d.ts +11 -0
  300. package/lib/editor/CodeEditor.js +15 -0
  301. package/lib/editor/CodeEditor.stories.js +24 -0
  302. package/lib/editor/index.d.ts +1 -0
  303. package/lib/editor/index.js +3 -0
  304. package/lib/errors/UserError.d.ts +8 -0
  305. package/lib/errors/UserError.js +12 -0
  306. package/lib/examples/OptimizedFormExample.d.ts +1 -0
  307. package/lib/examples/OptimizedFormExample.js +130 -0
  308. package/lib/form/index.d.ts +11 -0
  309. package/lib/form/index.js +13 -0
  310. package/lib/hooks/useIsMobile.d.ts +1 -0
  311. package/lib/hooks/useIsMobile.js +12 -0
  312. package/lib/i18n/index.d.ts +8 -0
  313. package/lib/i18n/index.js +7 -0
  314. package/lib/icons/Dual Ring-1s-100px.svg +1 -0
  315. package/lib/icons/gotham-logo.svg +17 -0
  316. package/lib/icons/gotham.svg +8 -0
  317. package/lib/icons/index.d.ts +5 -0
  318. package/lib/icons/index.js +6 -0
  319. package/lib/icons/pencil.svg +6 -0
  320. package/lib/img/arkhamjs-logo.png +0 -0
  321. package/lib/img/logo.png +0 -0
  322. package/lib/index.d.ts +25 -0
  323. package/lib/index.js +25 -0
  324. package/lib/router/index.d.ts +5 -0
  325. package/lib/router/index.js +6 -0
  326. package/lib/stores/GothamAppStore.d.ts +35 -0
  327. package/lib/stores/GothamAppStore.js +70 -0
  328. package/lib/stories/Button.d.ts +28 -0
  329. package/lib/stories/Button.js +22 -0
  330. package/lib/stories/Header.d.ts +12 -0
  331. package/lib/stories/Header.js +78 -0
  332. package/lib/stories/Page.d.ts +3 -0
  333. package/lib/stories/Page.js +108 -0
  334. package/lib/stories/assets/accessibility.png +0 -0
  335. package/lib/stories/assets/accessibility.svg +5 -0
  336. package/lib/stories/assets/addon-library.png +0 -0
  337. package/lib/stories/assets/assets.png +0 -0
  338. package/lib/stories/assets/context.png +0 -0
  339. package/lib/stories/assets/discord.svg +15 -0
  340. package/lib/stories/assets/docs.png +0 -0
  341. package/lib/stories/assets/figma-plugin.png +0 -0
  342. package/lib/stories/assets/github.svg +3 -0
  343. package/lib/stories/assets/share.png +0 -0
  344. package/lib/stories/assets/styling.png +0 -0
  345. package/lib/stories/assets/testing.png +0 -0
  346. package/lib/stories/assets/theming.png +0 -0
  347. package/lib/stories/assets/tutorials.svg +12 -0
  348. package/lib/stories/assets/youtube.svg +4 -0
  349. package/lib/stories/button.css +1 -0
  350. package/lib/stories/header.css +1 -0
  351. package/lib/stories/page.css +1 -0
  352. package/lib/styles/chat.css +1 -0
  353. package/lib/styles/index.css +2 -0
  354. package/lib/styles/tailwind.css +1 -0
  355. package/lib/types/assets.d.js +2 -0
  356. package/lib/types/gotham.d.ts +12 -0
  357. package/lib/types/gotham.js +3 -0
  358. package/lib/types/vitest-globals.d.js +3 -0
  359. package/lib/utils/GothamContext.d.ts +14 -0
  360. package/lib/utils/GothamContext.js +14 -0
  361. package/lib/utils/awsRum.d.ts +23 -0
  362. package/lib/utils/awsRum.js +50 -0
  363. package/lib/utils/colorUtils.d.ts +20 -0
  364. package/lib/utils/colorUtils.js +499 -0
  365. package/lib/utils/contentUtils.d.ts +2 -0
  366. package/lib/utils/contentUtils.js +18 -0
  367. package/lib/utils/i18nUtil.d.ts +1 -0
  368. package/lib/utils/i18nUtil.js +7 -0
  369. package/lib/utils/imageUtils.d.ts +5 -0
  370. package/lib/utils/imageUtils.js +48 -0
  371. package/lib/utils/interactionAnalytics.d.ts +10 -0
  372. package/lib/utils/interactionAnalytics.js +142 -0
  373. package/lib/utils/navEventQueue.d.ts +6 -0
  374. package/lib/utils/navEventQueue.js +50 -0
  375. package/lib/utils/refUtils.d.ts +2 -0
  376. package/lib/utils/refUtils.js +11 -0
  377. package/lib/utils/routeUtils.d.ts +12 -0
  378. package/lib/utils/routeUtils.js +109 -0
  379. package/lib/utils/sizeUtils.d.ts +5 -0
  380. package/lib/utils/sizeUtils.js +6 -0
  381. package/lib/utils/storyInteractions.d.ts +6 -0
  382. package/lib/utils/storyInteractions.js +45 -0
  383. package/lib/utils/storyUtils.d.ts +1 -0
  384. package/lib/utils/storyUtils.js +11 -0
  385. package/lib/utils/testUtils.d.ts +3 -0
  386. package/lib/utils/testUtils.js +56 -0
  387. package/lib/utils/timer.d.ts +21 -0
  388. package/lib/utils/timer.js +38 -0
  389. package/lib/utils/useBreakpoint.d.ts +6 -0
  390. package/lib/utils/useBreakpoint.js +56 -0
  391. package/lib/utils/viewPerformance.d.ts +34 -0
  392. package/lib/utils/viewPerformance.js +103 -0
  393. package/lib/utils/viewUtils.d.ts +9 -0
  394. package/lib/utils/viewUtils.js +44 -0
  395. package/lib/views/AuthSignInView/AuthSignInView.d.ts +20 -0
  396. package/lib/views/AuthSignInView/AuthSignInView.js +107 -0
  397. package/lib/views/AuthSignInView/AuthSignInView.stories.js +29 -0
  398. package/lib/views/AuthSignUpView/AuthSignUpView.d.ts +21 -0
  399. package/lib/views/AuthSignUpView/AuthSignUpView.js +146 -0
  400. package/lib/views/AuthSignUpView/AuthSignUpView.stories.js +30 -0
  401. package/lib/views/AuthView/AuthView.d.ts +16 -0
  402. package/lib/views/AuthView/AuthView.js +60 -0
  403. package/lib/views/AuthView/AuthView.stories.js +34 -0
  404. package/lib/views/DefaultView/DefaultView.d.ts +5 -0
  405. package/lib/views/DefaultView/DefaultView.js +134 -0
  406. package/lib/views/Gotham/Gotham.d.ts +44 -0
  407. package/lib/views/Gotham/Gotham.js +24 -0
  408. package/lib/views/Gotham/Gotham.stories.js +31 -0
  409. package/lib/views/Gotham/GothamListeners.d.ts +0 -0
  410. package/lib/views/Gotham/GothamListeners.js +2 -0
  411. package/lib/views/Gotham/GothamProvider.d.ts +43 -0
  412. package/lib/views/Gotham/GothamProvider.js +217 -0
  413. package/lib/views/Gotham/GothamRoot.d.ts +6 -0
  414. package/lib/views/Gotham/GothamRoot.js +69 -0
  415. package/lib/views/HomeView/HomeView.d.ts +10 -0
  416. package/lib/views/HomeView/HomeView.js +134 -0
  417. package/lib/views/LoaderView/LoaderView.d.ts +8 -0
  418. package/lib/views/LoaderView/LoaderView.js +30 -0
  419. package/lib/views/MenuView/MenuView.d.ts +13 -0
  420. package/lib/views/MenuView/MenuView.js +305 -0
  421. package/lib/views/NotFoundView/NotFoundView.d.ts +2 -0
  422. package/lib/views/NotFoundView/NotFoundView.js +12 -0
  423. package/lib/views/index.d.ts +11 -0
  424. package/lib/views/index.js +13 -0
  425. package/package.json +202 -0
  426. package/styles/tailwind.css +1 -0
@@ -0,0 +1,688 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React, { useRef } from 'react';
3
+ import { Phone, Video } from 'lucide-react';
4
+ import { interactWithCanvas } from '../../utils/storyInteractions.js';
5
+ import { AudioMessage, Avatar, Button, ChatItem, ChatList, Circle, Dropdown, FileMessage, Input, LocationMessage, MeetingItem, MeetingLink, MeetingList, MeetingMessage, MessageBox, MessageList, Navbar, PhotoMessage, Popup, ReplyMessage, SideBar, SpotifyMessage, SystemMessage, VideoMessage } from './index.js';
6
+ const noop = ()=>undefined;
7
+ const avatar = 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="96" height="96"><rect width="96" height="96" fill="%233979aa"/><text x="48" y="56" text-anchor="middle" fill="white" font-size="28">G</text></svg>';
8
+ const media = 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="320" height="180"><rect width="320" height="180" fill="%23e5e7eb"/><text x="160" y="96" text-anchor="middle" fill="%23111827" font-size="24">Preview</text></svg>';
9
+ const baseMessage = {
10
+ avatar,
11
+ focus: false,
12
+ forwarded: false,
13
+ id: 'message-1',
14
+ notch: true,
15
+ position: 'left',
16
+ removeButton: false,
17
+ replyButton: true,
18
+ retracted: false,
19
+ status: 'sent',
20
+ text: 'Storybook message',
21
+ title: 'Gotham',
22
+ titleColor: '#3979aa',
23
+ type: 'text'
24
+ };
25
+ const chatItem = {
26
+ avatar,
27
+ dateString: 'Now',
28
+ id: 'chat-1',
29
+ muted: false,
30
+ showMute: true,
31
+ showVideoCall: true,
32
+ statusColor: '#22c55e',
33
+ subtitle: 'Stories now cover the chat components.',
34
+ title: 'GothamUI'
35
+ };
36
+ const meetingItem = {
37
+ avatars: [
38
+ {
39
+ alt: 'Bruce',
40
+ src: avatar
41
+ },
42
+ {
43
+ alt: 'Selina',
44
+ src: avatar
45
+ }
46
+ ],
47
+ dateString: '10:30 AM',
48
+ id: 'meeting-1',
49
+ subject: 'Storybook coverage review'
50
+ };
51
+ const controls = {
52
+ className: {
53
+ control: 'text'
54
+ },
55
+ text: {
56
+ control: 'text'
57
+ }
58
+ };
59
+ const meta = {
60
+ parameters: {
61
+ layout: 'centered'
62
+ },
63
+ title: 'Components/Chat'
64
+ };
65
+ export default meta;
66
+ export const ChatAvatar = {
67
+ argTypes: {
68
+ alt: {
69
+ control: 'text'
70
+ },
71
+ size: {
72
+ control: 'select',
73
+ options: [
74
+ 'xsmall',
75
+ 'small',
76
+ 'medium',
77
+ 'large',
78
+ 'xlarge'
79
+ ]
80
+ },
81
+ src: {
82
+ control: 'text'
83
+ },
84
+ type: {
85
+ control: 'select',
86
+ options: [
87
+ 'default',
88
+ 'circle'
89
+ ]
90
+ }
91
+ },
92
+ args: {
93
+ alt: 'Gotham avatar',
94
+ size: 'large',
95
+ src: avatar,
96
+ type: 'circle'
97
+ },
98
+ play: interactWithCanvas,
99
+ render: (args)=>/*#__PURE__*/ _jsx(Avatar, {
100
+ ...args
101
+ })
102
+ };
103
+ export const ChatButton = {
104
+ argTypes: {
105
+ backgroundColor: {
106
+ control: 'color'
107
+ },
108
+ color: {
109
+ control: 'color'
110
+ },
111
+ disabled: {
112
+ control: 'boolean'
113
+ },
114
+ text: {
115
+ control: 'text'
116
+ }
117
+ },
118
+ args: {
119
+ backgroundColor: '#3979aa',
120
+ color: '#ffffff',
121
+ disabled: false,
122
+ text: 'Send'
123
+ },
124
+ play: interactWithCanvas,
125
+ render: (args)=>/*#__PURE__*/ _jsx(Button, {
126
+ ...args
127
+ })
128
+ };
129
+ export const ChatInput = {
130
+ argTypes: {
131
+ autofocus: {
132
+ control: 'boolean'
133
+ },
134
+ multiline: {
135
+ control: 'boolean'
136
+ },
137
+ placeholder: {
138
+ control: 'text'
139
+ },
140
+ value: {
141
+ control: 'text'
142
+ }
143
+ },
144
+ args: {
145
+ autofocus: false,
146
+ maxHeight: 140,
147
+ multiline: false,
148
+ placeholder: 'Type a message',
149
+ value: ''
150
+ },
151
+ play: interactWithCanvas,
152
+ render: (args)=>/*#__PURE__*/ _jsx(Input, {
153
+ ...args
154
+ })
155
+ };
156
+ export const ChatNavbar = {
157
+ argTypes: {
158
+ type: {
159
+ control: 'select',
160
+ options: [
161
+ 'light',
162
+ 'dark'
163
+ ]
164
+ }
165
+ },
166
+ args: {
167
+ center: 'Messages',
168
+ left: 'GothamUI',
169
+ right: /*#__PURE__*/ _jsx(Video, {
170
+ size: 18
171
+ }),
172
+ type: 'light'
173
+ },
174
+ play: interactWithCanvas,
175
+ render: (args)=>/*#__PURE__*/ _jsx(Navbar, {
176
+ ...args
177
+ })
178
+ };
179
+ export const ChatSideBar = {
180
+ argTypes: {
181
+ type: {
182
+ control: 'select',
183
+ options: [
184
+ 'light',
185
+ 'dark'
186
+ ]
187
+ }
188
+ },
189
+ args: {
190
+ data: {
191
+ bottom: 'Settings',
192
+ center: 'Threads',
193
+ top: 'Inbox'
194
+ },
195
+ type: 'dark'
196
+ },
197
+ play: interactWithCanvas,
198
+ render: (args)=>/*#__PURE__*/ _jsx(SideBar, {
199
+ ...args
200
+ })
201
+ };
202
+ export const ChatDropdown = {
203
+ argTypes: {
204
+ animationPosition: {
205
+ control: 'select',
206
+ options: [
207
+ 'nortwest',
208
+ 'norteast',
209
+ 'southwest',
210
+ 'southeast'
211
+ ]
212
+ },
213
+ title: {
214
+ control: 'text'
215
+ }
216
+ },
217
+ args: {
218
+ animationPosition: 'nortwest',
219
+ buttonProps: {
220
+ text: 'Actions'
221
+ },
222
+ items: [
223
+ 'Archive',
224
+ 'Mute',
225
+ 'Delete'
226
+ ],
227
+ onSelect: noop,
228
+ title: 'Conversation'
229
+ },
230
+ play: interactWithCanvas,
231
+ render: (args)=>/*#__PURE__*/ _jsx(Dropdown, {
232
+ ...args
233
+ })
234
+ };
235
+ export const ChatPopup = {
236
+ argTypes: {
237
+ popup: {
238
+ control: 'object'
239
+ },
240
+ type: {
241
+ control: 'select',
242
+ options: [
243
+ 'default',
244
+ 'dark'
245
+ ]
246
+ }
247
+ },
248
+ args: {
249
+ popup: {
250
+ footerButtons: [
251
+ {
252
+ text: 'Close',
253
+ onClick: noop
254
+ }
255
+ ],
256
+ header: 'Confirm action',
257
+ show: true,
258
+ text: 'This popup is open for interaction coverage.'
259
+ },
260
+ type: 'default'
261
+ },
262
+ play: interactWithCanvas,
263
+ render: (args)=>/*#__PURE__*/ _jsx(Popup, {
264
+ ...args
265
+ })
266
+ };
267
+ export const ChatItemStory = {
268
+ argTypes: {
269
+ muted: {
270
+ control: 'boolean'
271
+ },
272
+ subtitle: {
273
+ control: 'text'
274
+ },
275
+ title: {
276
+ control: 'text'
277
+ },
278
+ unread: {
279
+ control: 'number'
280
+ }
281
+ },
282
+ args: chatItem,
283
+ play: interactWithCanvas,
284
+ render: (args)=>/*#__PURE__*/ _jsx(ChatItem, {
285
+ ...args
286
+ })
287
+ };
288
+ export const ChatListStory = {
289
+ argTypes: {
290
+ dataSource: {
291
+ control: 'object'
292
+ }
293
+ },
294
+ args: {
295
+ dataSource: [
296
+ chatItem,
297
+ {
298
+ ...chatItem,
299
+ id: 'chat-2',
300
+ subtitle: 'A second conversation',
301
+ title: 'Design Systems',
302
+ unread: 2
303
+ }
304
+ ],
305
+ id: 'chat-list',
306
+ lazyLoadingImage: avatar
307
+ },
308
+ play: interactWithCanvas,
309
+ render: (args)=>/*#__PURE__*/ _jsx(ChatList, {
310
+ ...args
311
+ })
312
+ };
313
+ export const ProgressCircle = {
314
+ argTypes: {
315
+ animate: {
316
+ control: {
317
+ max: 1,
318
+ min: 0,
319
+ step: 0.1,
320
+ type: 'range'
321
+ }
322
+ },
323
+ progressOptions: {
324
+ control: 'object'
325
+ }
326
+ },
327
+ args: {
328
+ animate: 0.65,
329
+ progressOptions: {
330
+ color: '#3979aa',
331
+ strokeWidth: 6,
332
+ trailColor: '#d1d5db'
333
+ }
334
+ },
335
+ play: interactWithCanvas,
336
+ render: (args)=>/*#__PURE__*/ _jsx(Circle, {
337
+ ...args
338
+ })
339
+ };
340
+ export const ReplyMessageStory = {
341
+ argTypes: controls,
342
+ args: {
343
+ ...baseMessage,
344
+ message: 'Previous message content',
345
+ photoURL: '',
346
+ title: 'Bruce Wayne'
347
+ },
348
+ play: interactWithCanvas,
349
+ render: (args)=>/*#__PURE__*/ _jsx(ReplyMessage, {
350
+ ...args
351
+ })
352
+ };
353
+ export const SystemMessageStory = {
354
+ argTypes: controls,
355
+ args: {
356
+ ...baseMessage,
357
+ text: 'Today'
358
+ },
359
+ play: interactWithCanvas,
360
+ render: (args)=>/*#__PURE__*/ _jsx(SystemMessage, {
361
+ ...args
362
+ })
363
+ };
364
+ export const PhotoMessageStory = {
365
+ argTypes: {
366
+ data: {
367
+ control: 'object'
368
+ },
369
+ text: {
370
+ control: 'text'
371
+ }
372
+ },
373
+ args: {
374
+ ...baseMessage,
375
+ data: {
376
+ alt: 'Preview',
377
+ height: 180,
378
+ status: {
379
+ download: true
380
+ },
381
+ uri: media,
382
+ width: 320
383
+ },
384
+ text: 'Photo attachment',
385
+ type: 'photo'
386
+ },
387
+ play: interactWithCanvas,
388
+ render: (args)=>/*#__PURE__*/ _jsx(PhotoMessage, {
389
+ ...args
390
+ })
391
+ };
392
+ export const VideoMessageStory = {
393
+ argTypes: {
394
+ controlsList: {
395
+ control: 'text'
396
+ },
397
+ data: {
398
+ control: 'object'
399
+ },
400
+ text: {
401
+ control: 'text'
402
+ }
403
+ },
404
+ args: {
405
+ ...baseMessage,
406
+ controlsList: 'nodownload',
407
+ data: {
408
+ alt: 'Video preview',
409
+ height: 180,
410
+ status: {
411
+ download: false
412
+ },
413
+ uri: media,
414
+ width: 320
415
+ },
416
+ text: 'Video attachment',
417
+ type: 'video'
418
+ },
419
+ play: interactWithCanvas,
420
+ render: (args)=>/*#__PURE__*/ _jsx(VideoMessage, {
421
+ ...args
422
+ })
423
+ };
424
+ export const AudioMessageStory = {
425
+ argTypes: {
426
+ data: {
427
+ control: 'object'
428
+ },
429
+ text: {
430
+ control: 'text'
431
+ }
432
+ },
433
+ args: {
434
+ ...baseMessage,
435
+ data: {
436
+ audioType: 'audio/mp3',
437
+ audioURL: ''
438
+ },
439
+ text: 'Audio note',
440
+ type: 'audio'
441
+ },
442
+ play: interactWithCanvas,
443
+ render: (args)=>/*#__PURE__*/ _jsx(AudioMessage, {
444
+ ...args
445
+ })
446
+ };
447
+ export const FileMessageStory = {
448
+ argTypes: {
449
+ data: {
450
+ control: 'object'
451
+ },
452
+ text: {
453
+ control: 'text'
454
+ }
455
+ },
456
+ args: {
457
+ ...baseMessage,
458
+ data: {
459
+ name: 'release-notes.pdf',
460
+ size: '128 KB',
461
+ status: {
462
+ download: false
463
+ }
464
+ },
465
+ text: 'release-notes.pdf',
466
+ type: 'file'
467
+ },
468
+ play: interactWithCanvas,
469
+ render: (args)=>/*#__PURE__*/ _jsx(FileMessage, {
470
+ ...args
471
+ })
472
+ };
473
+ export const LocationMessageStory = {
474
+ argTypes: {
475
+ data: {
476
+ control: 'object'
477
+ },
478
+ text: {
479
+ control: 'text'
480
+ },
481
+ zoom: {
482
+ control: 'text'
483
+ }
484
+ },
485
+ args: {
486
+ ...baseMessage,
487
+ apiKey: 'demo',
488
+ data: {
489
+ latitude: '40.7128',
490
+ longitude: '-74.0060',
491
+ staticURL: media
492
+ },
493
+ href: '#map',
494
+ markerColor: 'blue',
495
+ text: 'Gotham City',
496
+ type: 'location',
497
+ zoom: '13'
498
+ },
499
+ play: interactWithCanvas,
500
+ render: (args)=>/*#__PURE__*/ _jsx(LocationMessage, {
501
+ ...args
502
+ })
503
+ };
504
+ export const SpotifyMessageStory = {
505
+ argTypes: {
506
+ height: {
507
+ control: 'number'
508
+ },
509
+ uri: {
510
+ control: 'text'
511
+ },
512
+ width: {
513
+ control: 'number'
514
+ }
515
+ },
516
+ args: {
517
+ ...baseMessage,
518
+ height: 120,
519
+ type: 'spotify',
520
+ uri: 'track/11dFghVXANMlKmJXsNCbNl',
521
+ width: 300
522
+ },
523
+ play: interactWithCanvas,
524
+ render: (args)=>/*#__PURE__*/ _jsx(SpotifyMessage, {
525
+ ...args
526
+ })
527
+ };
528
+ export const MeetingItemStory = {
529
+ argTypes: {
530
+ subject: {
531
+ control: 'text'
532
+ },
533
+ subjectLimit: {
534
+ control: 'number'
535
+ }
536
+ },
537
+ args: meetingItem,
538
+ play: interactWithCanvas,
539
+ render: (args)=>/*#__PURE__*/ _jsx(MeetingItem, {
540
+ ...args
541
+ })
542
+ };
543
+ export const MeetingListStory = {
544
+ argTypes: {
545
+ dataSource: {
546
+ control: 'object'
547
+ }
548
+ },
549
+ args: {
550
+ dataSource: [
551
+ meetingItem,
552
+ {
553
+ ...meetingItem,
554
+ id: 'meeting-2',
555
+ subject: 'Design review'
556
+ }
557
+ ],
558
+ lazyLoadingImage: avatar
559
+ },
560
+ play: interactWithCanvas,
561
+ render: (args)=>/*#__PURE__*/ _jsx(MeetingList, {
562
+ ...args
563
+ })
564
+ };
565
+ export const MeetingLinkStory = {
566
+ argTypes: {
567
+ meetingID: {
568
+ control: 'text'
569
+ },
570
+ text: {
571
+ control: 'text'
572
+ }
573
+ },
574
+ args: {
575
+ ...baseMessage,
576
+ actionButtons: [
577
+ {
578
+ Component: ()=>/*#__PURE__*/ _jsx(Phone, {
579
+ size: 16
580
+ }),
581
+ onClickButton: noop
582
+ }
583
+ ],
584
+ meetingID: 'daily-sync',
585
+ text: 'Join daily sync',
586
+ type: 'meetingLink'
587
+ },
588
+ play: interactWithCanvas,
589
+ render: (args)=>/*#__PURE__*/ _jsx(MeetingLink, {
590
+ ...args
591
+ })
592
+ };
593
+ export const MeetingMessageStory = {
594
+ argTypes: {
595
+ participants: {
596
+ control: 'object'
597
+ },
598
+ subject: {
599
+ control: 'text'
600
+ }
601
+ },
602
+ args: {
603
+ ...baseMessage,
604
+ dataSource: [],
605
+ participants: [
606
+ {
607
+ id: 1,
608
+ title: 'Bruce'
609
+ },
610
+ {
611
+ id: 2,
612
+ title: 'Selina'
613
+ }
614
+ ],
615
+ subject: 'Component review',
616
+ type: 'meeting'
617
+ },
618
+ play: interactWithCanvas,
619
+ render: (args)=>/*#__PURE__*/ _jsx(MeetingMessage, {
620
+ ...args
621
+ })
622
+ };
623
+ export const MessageBoxStory = {
624
+ argTypes: {
625
+ position: {
626
+ control: 'select',
627
+ options: [
628
+ 'left',
629
+ 'right'
630
+ ]
631
+ },
632
+ text: {
633
+ control: 'text'
634
+ },
635
+ type: {
636
+ control: 'select',
637
+ options: [
638
+ 'text',
639
+ 'photo',
640
+ 'file',
641
+ 'location',
642
+ 'audio',
643
+ 'video',
644
+ 'spotify',
645
+ 'meeting',
646
+ 'meetingLink'
647
+ ]
648
+ }
649
+ },
650
+ args: baseMessage,
651
+ play: interactWithCanvas,
652
+ render: (args)=>/*#__PURE__*/ _jsx(MessageBox, {
653
+ ...args
654
+ })
655
+ };
656
+ export const MessageListStory = {
657
+ argTypes: {
658
+ dataSource: {
659
+ control: 'object'
660
+ },
661
+ lockable: {
662
+ control: 'boolean'
663
+ }
664
+ },
665
+ args: {
666
+ dataSource: [
667
+ baseMessage,
668
+ {
669
+ ...baseMessage,
670
+ id: 'message-2',
671
+ position: 'right',
672
+ text: 'Reply from Storybook'
673
+ }
674
+ ],
675
+ lockable: false,
676
+ referance: undefined
677
+ },
678
+ play: interactWithCanvas,
679
+ render: (args)=>{
680
+ const ref = useRef(null);
681
+ return /*#__PURE__*/ _jsx(MessageList, {
682
+ ...args,
683
+ referance: ref
684
+ });
685
+ }
686
+ };
687
+
688
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0NoYXQvQ2hhdC5zdG9yaWVzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHt1c2VSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7UGhvbmUsIFZpZGVvfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHtpbnRlcmFjdFdpdGhDYW52YXN9IGZyb20gJy4uLy4uL3V0aWxzL3N0b3J5SW50ZXJhY3Rpb25zLmpzJztcbmltcG9ydCB7XG4gIEF1ZGlvTWVzc2FnZSxcbiAgQXZhdGFyLFxuICBCdXR0b24sXG4gIENoYXRJdGVtLFxuICBDaGF0TGlzdCxcbiAgQ2lyY2xlLFxuICBEcm9wZG93bixcbiAgRmlsZU1lc3NhZ2UsXG4gIElucHV0LFxuICBMb2NhdGlvbk1lc3NhZ2UsXG4gIE1lZXRpbmdJdGVtLFxuICBNZWV0aW5nTGluayxcbiAgTWVldGluZ0xpc3QsXG4gIE1lZXRpbmdNZXNzYWdlLFxuICBNZXNzYWdlQm94LFxuICBNZXNzYWdlTGlzdCxcbiAgTmF2YmFyLFxuICBQaG90b01lc3NhZ2UsXG4gIFBvcHVwLFxuICBSZXBseU1lc3NhZ2UsXG4gIFNpZGVCYXIsXG4gIFNwb3RpZnlNZXNzYWdlLFxuICBTeXN0ZW1NZXNzYWdlLFxuICBWaWRlb01lc3NhZ2Vcbn0gZnJvbSAnLi9pbmRleC5qcyc7XG5cbmltcG9ydCB0eXBlIHtNZXRhLCBTdG9yeU9ian0gZnJvbSAnQG5sYWJzL2xleC9zdG9yeWJvb2snO1xuXG5jb25zdCBub29wID0gKCkgPT4gdW5kZWZpbmVkO1xuY29uc3QgYXZhdGFyID0gJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiOTZcIiBoZWlnaHQ9XCI5NlwiPjxyZWN0IHdpZHRoPVwiOTZcIiBoZWlnaHQ9XCI5NlwiIGZpbGw9XCIlMjMzOTc5YWFcIi8+PHRleHQgeD1cIjQ4XCIgeT1cIjU2XCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiBmaWxsPVwid2hpdGVcIiBmb250LXNpemU9XCIyOFwiPkc8L3RleHQ+PC9zdmc+JztcbmNvbnN0IG1lZGlhID0gJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzIwXCIgaGVpZ2h0PVwiMTgwXCI+PHJlY3Qgd2lkdGg9XCIzMjBcIiBoZWlnaHQ9XCIxODBcIiBmaWxsPVwiJTIzZTVlN2ViXCIvPjx0ZXh0IHg9XCIxNjBcIiB5PVwiOTZcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIGZpbGw9XCIlMjMxMTE4MjdcIiBmb250LXNpemU9XCIyNFwiPlByZXZpZXc8L3RleHQ+PC9zdmc+JztcblxuY29uc3QgYmFzZU1lc3NhZ2UgPSB7XG4gIGF2YXRhcixcbiAgZm9jdXM6IGZhbHNlLFxuICBmb3J3YXJkZWQ6IGZhbHNlLFxuICBpZDogJ21lc3NhZ2UtMScsXG4gIG5vdGNoOiB0cnVlLFxuICBwb3NpdGlvbjogJ2xlZnQnLFxuICByZW1vdmVCdXR0b246IGZhbHNlLFxuICByZXBseUJ1dHRvbjogdHJ1ZSxcbiAgcmV0cmFjdGVkOiBmYWxzZSxcbiAgc3RhdHVzOiAnc2VudCcsXG4gIHRleHQ6ICdTdG9yeWJvb2sgbWVzc2FnZScsXG4gIHRpdGxlOiAnR290aGFtJyxcbiAgdGl0bGVDb2xvcjogJyMzOTc5YWEnLFxuICB0eXBlOiAndGV4dCdcbn0gYXMgY29uc3Q7XG5cbmNvbnN0IGNoYXRJdGVtID0ge1xuICBhdmF0YXIsXG4gIGRhdGVTdHJpbmc6ICdOb3cnLFxuICBpZDogJ2NoYXQtMScsXG4gIG11dGVkOiBmYWxzZSxcbiAgc2hvd011dGU6IHRydWUsXG4gIHNob3dWaWRlb0NhbGw6IHRydWUsXG4gIHN0YXR1c0NvbG9yOiAnIzIyYzU1ZScsXG4gIHN1YnRpdGxlOiAnU3RvcmllcyBub3cgY292ZXIgdGhlIGNoYXQgY29tcG9uZW50cy4nLFxuICB0aXRsZTogJ0dvdGhhbVVJJ1xufTtcblxuY29uc3QgbWVldGluZ0l0ZW0gPSB7XG4gIGF2YXRhcnM6IFtcbiAgICB7YWx0OiAnQnJ1Y2UnLCBzcmM6IGF2YXRhcn0sXG4gICAge2FsdDogJ1NlbGluYScsIHNyYzogYXZhdGFyfVxuICBdLFxuICBkYXRlU3RyaW5nOiAnMTA6MzAgQU0nLFxuICBpZDogJ21lZXRpbmctMScsXG4gIHN1YmplY3Q6ICdTdG9yeWJvb2sgY292ZXJhZ2UgcmV2aWV3J1xufTtcblxuY29uc3QgY29udHJvbHMgPSB7XG4gIGNsYXNzTmFtZToge1xuICAgIGNvbnRyb2w6ICd0ZXh0J1xuICB9LFxuICB0ZXh0OiB7XG4gICAgY29udHJvbDogJ3RleHQnXG4gIH1cbn07XG5cbmNvbnN0IG1ldGE6IE1ldGEgPSB7XG4gIHBhcmFtZXRlcnM6IHtcbiAgICBsYXlvdXQ6ICdjZW50ZXJlZCdcbiAgfSxcbiAgdGl0bGU6ICdDb21wb25lbnRzL0NoYXQnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBtZXRhO1xuXG50eXBlIFN0b3J5ID0gU3RvcnlPYmo8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuXG5leHBvcnQgY29uc3QgQ2hhdEF2YXRhcjogU3RvcnkgPSB7XG4gIGFyZ1R5cGVzOiB7XG4gICAgYWx0OiB7Y29udHJvbDogJ3RleHQnfSxcbiAgICBzaXplOiB7Y29udHJvbDogJ3NlbGVjdCcsIG9wdGlvbnM6IFsneHNtYWxsJywgJ3NtYWxsJywgJ21lZGl1bScsICdsYXJnZScsICd4bGFyZ2UnXX0sXG4gICAgc3JjOiB7Y29udHJvbDogJ3RleHQnfSxcbiAgICB0eXBlOiB7Y29udHJvbDogJ3NlbGVjdCcsIG9wdGlvbnM6IFsnZGVmYXVsdCcsICdjaXJjbGUnXX1cbiAgfSxcbiAgYXJnczoge1xuICAgIGFsdDogJ0dvdGhhbSBhdmF0YXInLFxuICAgIHNpemU6ICdsYXJnZScsXG4gICAgc3JjOiBhdmF0YXIsXG4gICAgdHlwZTogJ2NpcmNsZSdcbiAgfSxcbiAgcGxheTogaW50ZXJhY3RXaXRoQ2FudmFzLFxuICByZW5kZXI6IChhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gPEF2YXRhciB7Li4uKGFyZ3MgYXMgYW55KX0gLz5cbn07XG5cbmV4cG9ydCBjb25zdCBDaGF0QnV0dG9uOiBTdG9yeSA9IHtcbiAgYXJnVHlwZXM6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHtjb250cm9sOiAnY29sb3InfSxcbiAgICBjb2xvcjoge2NvbnRyb2w6ICdjb2xvcid9LFxuICAgIGRpc2FibGVkOiB7Y29udHJvbDogJ2Jvb2xlYW4nfSxcbiAgICB0ZXh0OiB7Y29udHJvbDogJ3RleHQnfVxuICB9LFxuICBhcmdzOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiAnIzM5NzlhYScsXG4gICAgY29sb3I6ICcjZmZmZmZmJyxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgdGV4dDogJ1NlbmQnXG4gIH0sXG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhcyxcbiAgcmVuZGVyOiAoYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IDxCdXR0b24gey4uLihhcmdzIGFzIGFueSl9IC8+XG59O1xuXG5leHBvcnQgY29uc3QgQ2hhdElucHV0OiBTdG9yeSA9IHtcbiAgYXJnVHlwZXM6IHtcbiAgICBhdXRvZm9jdXM6IHtjb250cm9sOiAnYm9vbGVhbid9LFxuICAgIG11bHRpbGluZToge2NvbnRyb2w6ICdib29sZWFuJ30sXG4gICAgcGxhY2Vob2xkZXI6IHtjb250cm9sOiAndGV4dCd9LFxuICAgIHZhbHVlOiB7Y29udHJvbDogJ3RleHQnfVxuICB9LFxuICBhcmdzOiB7XG4gICAgYXV0b2ZvY3VzOiBmYWxzZSxcbiAgICBtYXhIZWlnaHQ6IDE0MCxcbiAgICBtdWx0aWxpbmU6IGZhbHNlLFxuICAgIHBsYWNlaG9sZGVyOiAnVHlwZSBhIG1lc3NhZ2UnLFxuICAgIHZhbHVlOiAnJ1xuICB9LFxuICBwbGF5OiBpbnRlcmFjdFdpdGhDYW52YXMsXG4gIHJlbmRlcjogKGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiA8SW5wdXQgey4uLihhcmdzIGFzIGFueSl9IC8+XG59O1xuXG5leHBvcnQgY29uc3QgQ2hhdE5hdmJhcjogU3RvcnkgPSB7XG4gIGFyZ1R5cGVzOiB7XG4gICAgdHlwZToge2NvbnRyb2w6ICdzZWxlY3QnLCBvcHRpb25zOiBbJ2xpZ2h0JywgJ2RhcmsnXX1cbiAgfSxcbiAgYXJnczoge1xuICAgIGNlbnRlcjogJ01lc3NhZ2VzJyxcbiAgICBsZWZ0OiAnR290aGFtVUknLFxuICAgIHJpZ2h0OiA8VmlkZW8gc2l6ZT17MTh9IC8+LFxuICAgIHR5cGU6ICdsaWdodCdcbiAgfSxcbiAgcGxheTogaW50ZXJhY3RXaXRoQ2FudmFzLFxuICByZW5kZXI6IChhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gPE5hdmJhciB7Li4uKGFyZ3MgYXMgYW55KX0gLz5cbn07XG5cbmV4cG9ydCBjb25zdCBDaGF0U2lkZUJhcjogU3RvcnkgPSB7XG4gIGFyZ1R5cGVzOiB7XG4gICAgdHlwZToge2NvbnRyb2w6ICdzZWxlY3QnLCBvcHRpb25zOiBbJ2xpZ2h0JywgJ2RhcmsnXX1cbiAgfSxcbiAgYXJnczoge1xuICAgIGRhdGE6IHtcbiAgICAgIGJvdHRvbTogJ1NldHRpbmdzJyxcbiAgICAgIGNlbnRlcjogJ1RocmVhZHMnLFxuICAgICAgdG9wOiAnSW5ib3gnXG4gICAgfSxcbiAgICB0eXBlOiAnZGFyaydcbiAgfSxcbiAgcGxheTogaW50ZXJhY3RXaXRoQ2FudmFzLFxuICByZW5kZXI6IChhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gPFNpZGVCYXIgey4uLihhcmdzIGFzIGFueSl9IC8+XG59O1xuXG5leHBvcnQgY29uc3QgQ2hhdERyb3Bkb3duOiBTdG9yeSA9IHtcbiAgYXJnVHlwZXM6IHtcbiAgICBhbmltYXRpb25Qb3NpdGlvbjoge2NvbnRyb2w6ICdzZWxlY3QnLCBvcHRpb25zOiBbJ25vcnR3ZXN0JywgJ25vcnRlYXN0JywgJ3NvdXRod2VzdCcsICdzb3V0aGVhc3QnXX0sXG4gICAgdGl0bGU6IHtjb250cm9sOiAndGV4dCd9XG4gIH0sXG4gIGFyZ3M6IHtcbiAgICBhbmltYXRpb25Qb3NpdGlvbjogJ25vcnR3ZXN0JyxcbiAgICBidXR0b25Qcm9wczoge3RleHQ6ICdBY3Rpb25zJ30sXG4gICAgaXRlbXM6IFsnQXJjaGl2ZScsICdNdXRlJywgJ0RlbGV0ZSddLFxuICAgIG9uU2VsZWN0OiBub29wLFxuICAgIHRpdGxlOiAnQ29udmVyc2F0aW9uJ1xuICB9LFxuICBwbGF5OiBpbnRlcmFjdFdpdGhDYW52YXMsXG4gIHJlbmRlcjogKGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiA8RHJvcGRvd24gey4uLihhcmdzIGFzIGFueSl9IC8+XG59O1xuXG5leHBvcnQgY29uc3QgQ2hhdFBvcHVwOiBTdG9yeSA9IHtcbiAgYXJnVHlwZXM6IHtcbiAgICBwb3B1cDoge2NvbnRyb2w6ICdvYmplY3QnfSxcbiAgICB0eXBlOiB7Y29udHJvbDogJ3NlbGVjdCcsIG9wdGlvbnM6IFsnZGVmYXVsdCcsICdkYXJrJ119XG4gIH0sXG4gIGFyZ3M6IHtcbiAgICBwb3B1cDoge1xuICAgICAgZm9vdGVyQnV0dG9uczogW3t0ZXh0OiAnQ2xvc2UnLCBvbkNsaWNrOiBub29wfV0sXG4gICAgICBoZWFkZXI6ICdDb25maXJtIGFjdGlvbicsXG4gICAgICBzaG93OiB0cnVlLFxuICAgICAgdGV4dDogJ1RoaXMgcG9wdXAgaXMgb3BlbiBmb3IgaW50ZXJhY3Rpb24gY292ZXJhZ2UuJ1xuICAgIH0sXG4gICAgdHlwZTogJ2RlZmF1bHQnXG4gIH0sXG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhcyxcbiAgcmVuZGVyOiAoYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IDxQb3B1cCB7Li4uKGFyZ3MgYXMgYW55KX0gLz5cbn07XG5cbmV4cG9ydCBjb25zdCBDaGF0SXRlbVN0b3J5OiBTdG9yeSA9IHtcbiAgYXJnVHlwZXM6IHtcbiAgICBtdXRlZDoge2NvbnRyb2w6ICdib29sZWFuJ30sXG4gICAgc3VidGl0bGU6IHtjb250cm9sOiAndGV4dCd9LFxuICAgIHRpdGxlOiB7Y29udHJvbDogJ3RleHQnfSxcbiAgICB1bnJlYWQ6IHtjb250cm9sOiAnbnVtYmVyJ31cbiAgfSxcbiAgYXJnczogY2hhdEl0ZW0sXG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhcyxcbiAgcmVuZGVyOiAoYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IDxDaGF0SXRlbSB7Li4uKGFyZ3MgYXMgYW55KX0gLz5cbn07XG5cbmV4cG9ydCBjb25zdCBDaGF0TGlzdFN0b3J5OiBTdG9yeSA9IHtcbiAgYXJnVHlwZXM6IHtcbiAgICBkYXRhU291cmNlOiB7Y29udHJvbDogJ29iamVjdCd9XG4gIH0sXG4gIGFyZ3M6IHtcbiAgICBkYXRhU291cmNlOiBbY2hhdEl0ZW0sIHsuLi5jaGF0SXRlbSwgaWQ6ICdjaGF0LTInLCBzdWJ0aXRsZTogJ0Egc2Vjb25kIGNvbnZlcnNhdGlvbicsIHRpdGxlOiAnRGVzaWduIFN5c3RlbXMnLCB1bnJlYWQ6IDJ9XSxcbiAgICBpZDogJ2NoYXQtbGlzdCcsXG4gICAgbGF6eUxvYWRpbmdJbWFnZTogYXZhdGFyXG4gIH0sXG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhcyxcbiAgcmVuZGVyOiAoYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IDxDaGF0TGlzdCB7Li4uKGFyZ3MgYXMgYW55KX0gLz5cbn07XG5cbmV4cG9ydCBjb25zdCBQcm9ncmVzc0NpcmNsZTogU3RvcnkgPSB7XG4gIGFyZ1R5cGVzOiB7XG4gICAgYW5pbWF0ZToge2NvbnRyb2w6IHttYXg6IDEsIG1pbjogMCwgc3RlcDogMC4xLCB0eXBlOiAncmFuZ2UnfX0sXG4gICAgcHJvZ3Jlc3NPcHRpb25zOiB7Y29udHJvbDogJ29iamVjdCd9XG4gIH0sXG4gIGFyZ3M6IHtcbiAgICBhbmltYXRlOiAwLjY1LFxuICAgIHByb2dyZXNzT3B0aW9uczoge1xuICAgICAgY29sb3I6ICcjMzk3OWFhJyxcbiAgICAgIHN0cm9rZVdpZHRoOiA2LFxuICAgICAgdHJhaWxDb2xvcjogJyNkMWQ1ZGInXG4gICAgfVxuICB9LFxuICBwbGF5OiBpbnRlcmFjdFdpdGhDYW52YXMsXG4gIHJlbmRlcjogKGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiA8Q2lyY2xlIHsuLi4oYXJncyBhcyBhbnkpfSAvPlxufTtcblxuZXhwb3J0IGNvbnN0IFJlcGx5TWVzc2FnZVN0b3J5OiBTdG9yeSA9IHtcbiAgYXJnVHlwZXM6IGNvbnRyb2xzLFxuICBhcmdzOiB7XG4gICAgLi4uYmFzZU1lc3NhZ2UsXG4gICAgbWVzc2FnZTogJ1ByZXZpb3VzIG1lc3NhZ2UgY29udGVudCcsXG4gICAgcGhvdG9VUkw6ICcnLFxuICAgIHRpdGxlOiAnQnJ1Y2UgV2F5bmUnXG4gIH0sXG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhcyxcbiAgcmVuZGVyOiAoYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IDxSZXBseU1lc3NhZ2Ugey4uLihhcmdzIGFzIGFueSl9IC8+XG59O1xuXG5leHBvcnQgY29uc3QgU3lzdGVtTWVzc2FnZVN0b3J5OiBTdG9yeSA9IHtcbiAgYXJnVHlwZXM6IGNvbnRyb2xzLFxuICBhcmdzOiB7XG4gICAgLi4uYmFzZU1lc3NhZ2UsXG4gICAgdGV4dDogJ1RvZGF5J1xuICB9LFxuICBwbGF5OiBpbnRlcmFjdFdpdGhDYW52YXMsXG4gIHJlbmRlcjogKGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiA8U3lzdGVtTWVzc2FnZSB7Li4uKGFyZ3MgYXMgYW55KX0gLz5cbn07XG5cbmV4cG9ydCBjb25zdCBQaG90b01lc3NhZ2VTdG9yeTogU3RvcnkgPSB7XG4gIGFyZ1R5cGVzOiB7XG4gICAgZGF0YToge2NvbnRyb2w6ICdvYmplY3QnfSxcbiAgICB0ZXh0OiB7Y29udHJvbDogJ3RleHQnfVxuICB9LFxuICBhcmdzOiB7XG4gICAgLi4uYmFzZU1lc3NhZ2UsXG4gICAgZGF0YToge1xuICAgICAgYWx0OiAnUHJldmlldycsXG4gICAgICBoZWlnaHQ6IDE4MCxcbiAgICAgIHN0YXR1czoge2Rvd25sb2FkOiB0cnVlfSxcbiAgICAgIHVyaTogbWVkaWEsXG4gICAgICB3aWR0aDogMzIwXG4gICAgfSxcbiAgICB0ZXh0OiAnUGhvdG8gYXR0YWNobWVudCcsXG4gICAgdHlwZTogJ3Bob3RvJ1xuICB9LFxuICBwbGF5OiBpbnRlcmFjdFdpdGhDYW52YXMsXG4gIHJlbmRlcjogKGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiA8UGhvdG9NZXNzYWdlIHsuLi4oYXJncyBhcyBhbnkpfSAvPlxufTtcblxuZXhwb3J0IGNvbnN0IFZpZGVvTWVzc2FnZVN0b3J5OiBTdG9yeSA9IHtcbiAgYXJnVHlwZXM6IHtcbiAgICBjb250cm9sc0xpc3Q6IHtjb250cm9sOiAndGV4dCd9LFxuICAgIGRhdGE6IHtjb250cm9sOiAnb2JqZWN0J30sXG4gICAgdGV4dDoge2NvbnRyb2w6ICd0ZXh0J31cbiAgfSxcbiAgYXJnczoge1xuICAgIC4uLmJhc2VNZXNzYWdlLFxuICAgIGNvbnRyb2xzTGlzdDogJ25vZG93bmxvYWQnLFxuICAgIGRhdGE6IHtcbiAgICAgIGFsdDogJ1ZpZGVvIHByZXZpZXcnLFxuICAgICAgaGVpZ2h0OiAxODAsXG4gICAgICBzdGF0dXM6IHtkb3dubG9hZDogZmFsc2V9LFxuICAgICAgdXJpOiBtZWRpYSxcbiAgICAgIHdpZHRoOiAzMjBcbiAgICB9LFxuICAgIHRleHQ6ICdWaWRlbyBhdHRhY2htZW50JyxcbiAgICB0eXBlOiAndmlkZW8nXG4gIH0sXG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhcyxcbiAgcmVuZGVyOiAoYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IDxWaWRlb01lc3NhZ2Ugey4uLihhcmdzIGFzIGFueSl9IC8+XG59O1xuXG5leHBvcnQgY29uc3QgQXVkaW9NZXNzYWdlU3Rvcnk6IFN0b3J5ID0ge1xuICBhcmdUeXBlczoge1xuICAgIGRhdGE6IHtjb250cm9sOiAnb2JqZWN0J30sXG4gICAgdGV4dDoge2NvbnRyb2w6ICd0ZXh0J31cbiAgfSxcbiAgYXJnczoge1xuICAgIC4uLmJhc2VNZXNzYWdlLFxuICAgIGRhdGE6IHtcbiAgICAgIGF1ZGlvVHlwZTogJ2F1ZGlvL21wMycsXG4gICAgICBhdWRpb1VSTDogJydcbiAgICB9LFxuICAgIHRleHQ6ICdBdWRpbyBub3RlJyxcbiAgICB0eXBlOiAnYXVkaW8nXG4gIH0sXG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhcyxcbiAgcmVuZGVyOiAoYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IDxBdWRpb01lc3NhZ2Ugey4uLihhcmdzIGFzIGFueSl9IC8+XG59O1xuXG5leHBvcnQgY29uc3QgRmlsZU1lc3NhZ2VTdG9yeTogU3RvcnkgPSB7XG4gIGFyZ1R5cGVzOiB7XG4gICAgZGF0YToge2NvbnRyb2w6ICdvYmplY3QnfSxcbiAgICB0ZXh0OiB7Y29udHJvbDogJ3RleHQnfVxuICB9LFxuICBhcmdzOiB7XG4gICAgLi4uYmFzZU1lc3NhZ2UsXG4gICAgZGF0YToge1xuICAgICAgbmFtZTogJ3JlbGVhc2Utbm90ZXMucGRmJyxcbiAgICAgIHNpemU6ICcxMjggS0InLFxuICAgICAgc3RhdHVzOiB7ZG93bmxvYWQ6IGZhbHNlfVxuICAgIH0sXG4gICAgdGV4dDogJ3JlbGVhc2Utbm90ZXMucGRmJyxcbiAgICB0eXBlOiAnZmlsZSdcbiAgfSxcbiAgcGxheTogaW50ZXJhY3RXaXRoQ2FudmFzLFxuICByZW5kZXI6IChhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gPEZpbGVNZXNzYWdlIHsuLi4oYXJncyBhcyBhbnkpfSAvPlxufTtcblxuZXhwb3J0IGNvbnN0IExvY2F0aW9uTWVzc2FnZVN0b3J5OiBTdG9yeSA9IHtcbiAgYXJnVHlwZXM6IHtcbiAgICBkYXRhOiB7Y29udHJvbDogJ29iamVjdCd9LFxuICAgIHRleHQ6IHtjb250cm9sOiAndGV4dCd9LFxuICAgIHpvb206IHtjb250cm9sOiAndGV4dCd9XG4gIH0sXG4gIGFyZ3M6IHtcbiAgICAuLi5iYXNlTWVzc2FnZSxcbiAgICBhcGlLZXk6ICdkZW1vJyxcbiAgICBkYXRhOiB7XG4gICAgICBsYXRpdHVkZTogJzQwLjcxMjgnLFxuICAgICAgbG9uZ2l0dWRlOiAnLTc0LjAwNjAnLFxuICAgICAgc3RhdGljVVJMOiBtZWRpYVxuICAgIH0sXG4gICAgaHJlZjogJyNtYXAnLFxuICAgIG1hcmtlckNvbG9yOiAnYmx1ZScsXG4gICAgdGV4dDogJ0dvdGhhbSBDaXR5JyxcbiAgICB0eXBlOiAnbG9jYXRpb24nLFxuICAgIHpvb206ICcxMydcbiAgfSxcbiAgcGxheTogaW50ZXJhY3RXaXRoQ2FudmFzLFxuICByZW5kZXI6IChhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gPExvY2F0aW9uTWVzc2FnZSB7Li4uKGFyZ3MgYXMgYW55KX0gLz5cbn07XG5cbmV4cG9ydCBjb25zdCBTcG90aWZ5TWVzc2FnZVN0b3J5OiBTdG9yeSA9IHtcbiAgYXJnVHlwZXM6IHtcbiAgICBoZWlnaHQ6IHtjb250cm9sOiAnbnVtYmVyJ30sXG4gICAgdXJpOiB7Y29udHJvbDogJ3RleHQnfSxcbiAgICB3aWR0aDoge2NvbnRyb2w6ICdudW1iZXInfVxuICB9LFxuICBhcmdzOiB7XG4gICAgLi4uYmFzZU1lc3NhZ2UsXG4gICAgaGVpZ2h0OiAxMjAsXG4gICAgdHlwZTogJ3Nwb3RpZnknLFxuICAgIHVyaTogJ3RyYWNrLzExZEZnaFZYQU5NbEttSlhzTkNiTmwnLFxuICAgIHdpZHRoOiAzMDBcbiAgfSxcbiAgcGxheTogaW50ZXJhY3RXaXRoQ2FudmFzLFxuICByZW5kZXI6IChhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gPFNwb3RpZnlNZXNzYWdlIHsuLi4oYXJncyBhcyBhbnkpfSAvPlxufTtcblxuZXhwb3J0IGNvbnN0IE1lZXRpbmdJdGVtU3Rvcnk6IFN0b3J5ID0ge1xuICBhcmdUeXBlczoge1xuICAgIHN1YmplY3Q6IHtjb250cm9sOiAndGV4dCd9LFxuICAgIHN1YmplY3RMaW1pdDoge2NvbnRyb2w6ICdudW1iZXInfVxuICB9LFxuICBhcmdzOiBtZWV0aW5nSXRlbSxcbiAgcGxheTogaW50ZXJhY3RXaXRoQ2FudmFzLFxuICByZW5kZXI6IChhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gPE1lZXRpbmdJdGVtIHsuLi4oYXJncyBhcyBhbnkpfSAvPlxufTtcblxuZXhwb3J0IGNvbnN0IE1lZXRpbmdMaXN0U3Rvcnk6IFN0b3J5ID0ge1xuICBhcmdUeXBlczoge1xuICAgIGRhdGFTb3VyY2U6IHtjb250cm9sOiAnb2JqZWN0J31cbiAgfSxcbiAgYXJnczoge1xuICAgIGRhdGFTb3VyY2U6IFttZWV0aW5nSXRlbSwgey4uLm1lZXRpbmdJdGVtLCBpZDogJ21lZXRpbmctMicsIHN1YmplY3Q6ICdEZXNpZ24gcmV2aWV3J31dLFxuICAgIGxhenlMb2FkaW5nSW1hZ2U6IGF2YXRhclxuICB9LFxuICBwbGF5OiBpbnRlcmFjdFdpdGhDYW52YXMsXG4gIHJlbmRlcjogKGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiA8TWVldGluZ0xpc3Qgey4uLihhcmdzIGFzIGFueSl9IC8+XG59O1xuXG5leHBvcnQgY29uc3QgTWVldGluZ0xpbmtTdG9yeTogU3RvcnkgPSB7XG4gIGFyZ1R5cGVzOiB7XG4gICAgbWVldGluZ0lEOiB7Y29udHJvbDogJ3RleHQnfSxcbiAgICB0ZXh0OiB7Y29udHJvbDogJ3RleHQnfVxuICB9LFxuICBhcmdzOiB7XG4gICAgLi4uYmFzZU1lc3NhZ2UsXG4gICAgYWN0aW9uQnV0dG9uczogW3tDb21wb25lbnQ6ICgpID0+IDxQaG9uZSBzaXplPXsxNn0gLz4sIG9uQ2xpY2tCdXR0b246IG5vb3B9XSxcbiAgICBtZWV0aW5nSUQ6ICdkYWlseS1zeW5jJyxcbiAgICB0ZXh0OiAnSm9pbiBkYWlseSBzeW5jJyxcbiAgICB0eXBlOiAnbWVldGluZ0xpbmsnXG4gIH0sXG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhcyxcbiAgcmVuZGVyOiAoYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IDxNZWV0aW5nTGluayB7Li4uKGFyZ3MgYXMgYW55KX0gLz5cbn07XG5cbmV4cG9ydCBjb25zdCBNZWV0aW5nTWVzc2FnZVN0b3J5OiBTdG9yeSA9IHtcbiAgYXJnVHlwZXM6IHtcbiAgICBwYXJ0aWNpcGFudHM6IHtjb250cm9sOiAnb2JqZWN0J30sXG4gICAgc3ViamVjdDoge2NvbnRyb2w6ICd0ZXh0J31cbiAgfSxcbiAgYXJnczoge1xuICAgIC4uLmJhc2VNZXNzYWdlLFxuICAgIGRhdGFTb3VyY2U6IFtdLFxuICAgIHBhcnRpY2lwYW50czogW3tpZDogMSwgdGl0bGU6ICdCcnVjZSd9LCB7aWQ6IDIsIHRpdGxlOiAnU2VsaW5hJ31dLFxuICAgIHN1YmplY3Q6ICdDb21wb25lbnQgcmV2aWV3JyxcbiAgICB0eXBlOiAnbWVldGluZydcbiAgfSxcbiAgcGxheTogaW50ZXJhY3RXaXRoQ2FudmFzLFxuICByZW5kZXI6IChhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gPE1lZXRpbmdNZXNzYWdlIHsuLi4oYXJncyBhcyBhbnkpfSAvPlxufTtcblxuZXhwb3J0IGNvbnN0IE1lc3NhZ2VCb3hTdG9yeTogU3RvcnkgPSB7XG4gIGFyZ1R5cGVzOiB7XG4gICAgcG9zaXRpb246IHtjb250cm9sOiAnc2VsZWN0Jywgb3B0aW9uczogWydsZWZ0JywgJ3JpZ2h0J119LFxuICAgIHRleHQ6IHtjb250cm9sOiAndGV4dCd9LFxuICAgIHR5cGU6IHtjb250cm9sOiAnc2VsZWN0Jywgb3B0aW9uczogWyd0ZXh0JywgJ3Bob3RvJywgJ2ZpbGUnLCAnbG9jYXRpb24nLCAnYXVkaW8nLCAndmlkZW8nLCAnc3BvdGlmeScsICdtZWV0aW5nJywgJ21lZXRpbmdMaW5rJ119XG4gIH0sXG4gIGFyZ3M6IGJhc2VNZXNzYWdlLFxuICBwbGF5OiBpbnRlcmFjdFdpdGhDYW52YXMsXG4gIHJlbmRlcjogKGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiA8TWVzc2FnZUJveCB7Li4uKGFyZ3MgYXMgYW55KX0gLz5cbn07XG5cbmV4cG9ydCBjb25zdCBNZXNzYWdlTGlzdFN0b3J5OiBTdG9yeSA9IHtcbiAgYXJnVHlwZXM6IHtcbiAgICBkYXRhU291cmNlOiB7Y29udHJvbDogJ29iamVjdCd9LFxuICAgIGxvY2thYmxlOiB7Y29udHJvbDogJ2Jvb2xlYW4nfVxuICB9LFxuICBhcmdzOiB7XG4gICAgZGF0YVNvdXJjZTogW2Jhc2VNZXNzYWdlLCB7Li4uYmFzZU1lc3NhZ2UsIGlkOiAnbWVzc2FnZS0yJywgcG9zaXRpb246ICdyaWdodCcsIHRleHQ6ICdSZXBseSBmcm9tIFN0b3J5Ym9vayd9XSxcbiAgICBsb2NrYWJsZTogZmFsc2UsXG4gICAgcmVmZXJhbmNlOiB1bmRlZmluZWRcbiAgfSxcbiAgcGxheTogaW50ZXJhY3RXaXRoQ2FudmFzLFxuICByZW5kZXI6IChhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4ge1xuICAgIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gICAgcmV0dXJuIDxNZXNzYWdlTGlzdCB7Li4uKGFyZ3MgYXMgYW55KX0gcmVmZXJhbmNlPXtyZWZ9IC8+O1xuICB9XG59O1xuIl0sIm5hbWVzIjpbIlJlYWN0IiwidXNlUmVmIiwiUGhvbmUiLCJWaWRlbyIsImludGVyYWN0V2l0aENhbnZhcyIsIkF1ZGlvTWVzc2FnZSIsIkF2YXRhciIsIkJ1dHRvbiIsIkNoYXRJdGVtIiwiQ2hhdExpc3QiLCJDaXJjbGUiLCJEcm9wZG93biIsIkZpbGVNZXNzYWdlIiwiSW5wdXQiLCJMb2NhdGlvbk1lc3NhZ2UiLCJNZWV0aW5nSXRlbSIsIk1lZXRpbmdMaW5rIiwiTWVldGluZ0xpc3QiLCJNZWV0aW5nTWVzc2FnZSIsIk1lc3NhZ2VCb3giLCJNZXNzYWdlTGlzdCIsIk5hdmJhciIsIlBob3RvTWVzc2FnZSIsIlBvcHVwIiwiUmVwbHlNZXNzYWdlIiwiU2lkZUJhciIsIlNwb3RpZnlNZXNzYWdlIiwiU3lzdGVtTWVzc2FnZSIsIlZpZGVvTWVzc2FnZSIsIm5vb3AiLCJ1bmRlZmluZWQiLCJhdmF0YXIiLCJtZWRpYSIsImJhc2VNZXNzYWdlIiwiZm9jdXMiLCJmb3J3YXJkZWQiLCJpZCIsIm5vdGNoIiwicG9zaXRpb24iLCJyZW1vdmVCdXR0b24iLCJyZXBseUJ1dHRvbiIsInJldHJhY3RlZCIsInN0YXR1cyIsInRleHQiLCJ0aXRsZSIsInRpdGxlQ29sb3IiLCJ0eXBlIiwiY2hhdEl0ZW0iLCJkYXRlU3RyaW5nIiwibXV0ZWQiLCJzaG93TXV0ZSIsInNob3dWaWRlb0NhbGwiLCJzdGF0dXNDb2xvciIsInN1YnRpdGxlIiwibWVldGluZ0l0ZW0iLCJhdmF0YXJzIiwiYWx0Iiwic3JjIiwic3ViamVjdCIsImNvbnRyb2xzIiwiY2xhc3NOYW1lIiwiY29udHJvbCIsIm1ldGEiLCJwYXJhbWV0ZXJzIiwibGF5b3V0IiwiQ2hhdEF2YXRhciIsImFyZ1R5cGVzIiwic2l6ZSIsIm9wdGlvbnMiLCJhcmdzIiwicGxheSIsInJlbmRlciIsIkNoYXRCdXR0b24iLCJiYWNrZ3JvdW5kQ29sb3IiLCJjb2xvciIsImRpc2FibGVkIiwiQ2hhdElucHV0IiwiYXV0b2ZvY3VzIiwibXVsdGlsaW5lIiwicGxhY2Vob2xkZXIiLCJ2YWx1ZSIsIm1heEhlaWdodCIsIkNoYXROYXZiYXIiLCJjZW50ZXIiLCJsZWZ0IiwicmlnaHQiLCJDaGF0U2lkZUJhciIsImRhdGEiLCJib3R0b20iLCJ0b3AiLCJDaGF0RHJvcGRvd24iLCJhbmltYXRpb25Qb3NpdGlvbiIsImJ1dHRvblByb3BzIiwiaXRlbXMiLCJvblNlbGVjdCIsIkNoYXRQb3B1cCIsInBvcHVwIiwiZm9vdGVyQnV0dG9ucyIsIm9uQ2xpY2siLCJoZWFkZXIiLCJzaG93IiwiQ2hhdEl0ZW1TdG9yeSIsInVucmVhZCIsIkNoYXRMaXN0U3RvcnkiLCJkYXRhU291cmNlIiwibGF6eUxvYWRpbmdJbWFnZSIsIlByb2dyZXNzQ2lyY2xlIiwiYW5pbWF0ZSIsIm1heCIsIm1pbiIsInN0ZXAiLCJwcm9ncmVzc09wdGlvbnMiLCJzdHJva2VXaWR0aCIsInRyYWlsQ29sb3IiLCJSZXBseU1lc3NhZ2VTdG9yeSIsIm1lc3NhZ2UiLCJwaG90b1VSTCIsIlN5c3RlbU1lc3NhZ2VTdG9yeSIsIlBob3RvTWVzc2FnZVN0b3J5IiwiaGVpZ2h0IiwiZG93bmxvYWQiLCJ1cmkiLCJ3aWR0aCIsIlZpZGVvTWVzc2FnZVN0b3J5IiwiY29udHJvbHNMaXN0IiwiQXVkaW9NZXNzYWdlU3RvcnkiLCJhdWRpb1R5cGUiLCJhdWRpb1VSTCIsIkZpbGVNZXNzYWdlU3RvcnkiLCJuYW1lIiwiTG9jYXRpb25NZXNzYWdlU3RvcnkiLCJ6b29tIiwiYXBpS2V5IiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJzdGF0aWNVUkwiLCJocmVmIiwibWFya2VyQ29sb3IiLCJTcG90aWZ5TWVzc2FnZVN0b3J5IiwiTWVldGluZ0l0ZW1TdG9yeSIsInN1YmplY3RMaW1pdCIsIk1lZXRpbmdMaXN0U3RvcnkiLCJNZWV0aW5nTGlua1N0b3J5IiwibWVldGluZ0lEIiwiYWN0aW9uQnV0dG9ucyIsIkNvbXBvbmVudCIsIm9uQ2xpY2tCdXR0b24iLCJNZWV0aW5nTWVzc2FnZVN0b3J5IiwicGFydGljaXBhbnRzIiwiTWVzc2FnZUJveFN0b3J5IiwiTWVzc2FnZUxpc3RTdG9yeSIsImxvY2thYmxlIiwicmVmZXJhbmNlIiwicmVmIl0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBT0EsU0FBUUMsTUFBTSxRQUFPLFFBQVE7QUFDcEMsU0FBUUMsS0FBSyxFQUFFQyxLQUFLLFFBQU8sZUFBZTtBQUMxQyxTQUFRQyxrQkFBa0IsUUFBTyxtQ0FBbUM7QUFDcEUsU0FDRUMsWUFBWSxFQUNaQyxNQUFNLEVBQ05DLE1BQU0sRUFDTkMsUUFBUSxFQUNSQyxRQUFRLEVBQ1JDLE1BQU0sRUFDTkMsUUFBUSxF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