@payloadcms/ui 3.0.0-alpha.14 → 3.0.0-alpha.16

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 (409) hide show
  1. package/dist/@types/assets.d.js +0 -1
  2. package/dist/config.js +2 -12
  3. package/dist/elements/ArrayAction/index.js +25 -81
  4. package/dist/elements/ArrayAction/types.js +2 -5
  5. package/dist/elements/Autosave/index.js +37 -92
  6. package/dist/elements/Autosave/types.js +2 -5
  7. package/dist/elements/Banner/index.js +10 -34
  8. package/dist/elements/Banner/types.js +2 -5
  9. package/dist/elements/Button/index.js +30 -89
  10. package/dist/elements/Button/types.js +2 -5
  11. package/dist/elements/Card/index.js +9 -24
  12. package/dist/elements/Card/types.js +2 -5
  13. package/dist/elements/CodeEditor/CodeEditor.js +10 -25
  14. package/dist/elements/CodeEditor/index.js +8 -59
  15. package/dist/elements/CodeEditor/types.js +2 -5
  16. package/dist/elements/Collapsible/index.js +26 -82
  17. package/dist/elements/Collapsible/provider.js +7 -66
  18. package/dist/elements/Collapsible/types.js +2 -5
  19. package/dist/elements/ColumnSelector/index.js +20 -76
  20. package/dist/elements/ColumnSelector/types.js +2 -5
  21. package/dist/elements/CopyToClipboard/index.js +14 -65
  22. package/dist/elements/CopyToClipboard/types.js +2 -5
  23. package/dist/elements/DatePicker/DatePicker.js +19 -75
  24. package/dist/elements/DatePicker/index.js +8 -59
  25. package/dist/elements/DatePicker/types.js +2 -5
  26. package/dist/elements/DeleteDocument/index.js +36 -86
  27. package/dist/elements/DeleteDocument/types.js +2 -5
  28. package/dist/elements/DeleteMany/index.js +38 -102
  29. package/dist/elements/DeleteMany/types.js +2 -5
  30. package/dist/elements/DocumentControls/index.js +46 -102
  31. package/dist/elements/DocumentDrawer/DrawerContent.js +62 -114
  32. package/dist/elements/DocumentDrawer/index.js +33 -98
  33. package/dist/elements/DocumentDrawer/types.js +2 -5
  34. package/dist/elements/DocumentFields/index.js +16 -31
  35. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js +4 -14
  36. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +9 -24
  37. package/dist/elements/DocumentHeader/Tabs/Tab/index.js +9 -68
  38. package/dist/elements/DocumentHeader/Tabs/getCustomViews.js +5 -15
  39. package/dist/elements/DocumentHeader/Tabs/getViewConfig.js +2 -12
  40. package/dist/elements/DocumentHeader/Tabs/index.js +18 -33
  41. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js +8 -23
  42. package/dist/elements/DocumentHeader/Tabs/tabs/index.js +5 -23
  43. package/dist/elements/DocumentHeader/index.js +10 -66
  44. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js +7 -66
  45. package/dist/elements/DraggableSortable/DraggableSortableItem/types.js +2 -5
  46. package/dist/elements/DraggableSortable/index.js +15 -66
  47. package/dist/elements/DraggableSortable/types.js +2 -5
  48. package/dist/elements/DraggableSortable/useDraggableSortable/index.js +4 -14
  49. package/dist/elements/DraggableSortable/useDraggableSortable/types.js +2 -5
  50. package/dist/elements/Drawer/index.js +32 -94
  51. package/dist/elements/Drawer/types.js +2 -5
  52. package/dist/elements/Drawer/useDrawerSlug.js +8 -18
  53. package/dist/elements/Dropzone/index.js +20 -35
  54. package/dist/elements/DuplicateDocument/index.js +33 -83
  55. package/dist/elements/DuplicateDocument/types.js +2 -5
  56. package/dist/elements/EditMany/index.js +72 -128
  57. package/dist/elements/EditMany/types.js +2 -5
  58. package/dist/elements/EditUpload/index.js +66 -122
  59. package/dist/elements/ErrorPill/index.js +7 -22
  60. package/dist/elements/ErrorPill/types.js +2 -5
  61. package/dist/elements/FieldSelect/index.js +23 -79
  62. package/dist/elements/FileDetails/FileMeta/index.js +19 -75
  63. package/dist/elements/FileDetails/FileMeta/types.js +2 -5
  64. package/dist/elements/FileDetails/index.js +15 -30
  65. package/dist/elements/FileDetails/types.js +2 -5
  66. package/dist/elements/GenerateConfirmation/index.js +22 -37
  67. package/dist/elements/GenerateConfirmation/types.js +2 -5
  68. package/dist/elements/GetFilterOptions/index.js +18 -33
  69. package/dist/elements/Gutter/index.js +5 -56
  70. package/dist/elements/Hamburger/index.js +18 -33
  71. package/dist/elements/Header/index.js +39 -95
  72. package/dist/elements/HydrateClientUser/index.js +6 -16
  73. package/dist/elements/IDLabel/index.js +5 -20
  74. package/dist/elements/ListControls/getTextFieldsToBeSearched.js +6 -16
  75. package/dist/elements/ListControls/index.js +52 -104
  76. package/dist/elements/ListControls/types.js +2 -5
  77. package/dist/elements/ListDrawer/DrawerContent.js +72 -128
  78. package/dist/elements/ListDrawer/index.js +32 -100
  79. package/dist/elements/ListDrawer/types.js +2 -5
  80. package/dist/elements/ListSelection/index.js +11 -62
  81. package/dist/elements/Loading/index.js +25 -51
  82. package/dist/elements/LoadingOverlay/index.js +17 -79
  83. package/dist/elements/LoadingOverlay/reducer.js +3 -21
  84. package/dist/elements/LoadingOverlay/types.js +2 -5
  85. package/dist/elements/Localizer/LocalizerLabel/index.js +15 -30
  86. package/dist/elements/Localizer/index.js +24 -80
  87. package/dist/elements/Logout/index.js +13 -28
  88. package/dist/elements/Nav/NavHamburger/index.js +8 -23
  89. package/dist/elements/Nav/NavToggler/index.js +13 -28
  90. package/dist/elements/Nav/NavWrapper/index.js +8 -23
  91. package/dist/elements/Nav/context.js +20 -82
  92. package/dist/elements/Nav/index.js +36 -51
  93. package/dist/elements/NavGroup/index.js +21 -77
  94. package/dist/elements/Pagination/ClickableArrow/index.js +7 -22
  95. package/dist/elements/Pagination/ClickableArrow/types.js +2 -5
  96. package/dist/elements/Pagination/Page/index.js +4 -19
  97. package/dist/elements/Pagination/Page/types.js +2 -5
  98. package/dist/elements/Pagination/Separator/index.js +4 -19
  99. package/dist/elements/Pagination/index.js +20 -35
  100. package/dist/elements/Pagination/types.js +2 -5
  101. package/dist/elements/PerPage/index.js +28 -83
  102. package/dist/elements/Pill/index.js +16 -40
  103. package/dist/elements/Pill/types.js +2 -5
  104. package/dist/elements/Popup/PopupButtonList/index.js +10 -75
  105. package/dist/elements/Popup/PopupTrigger/index.js +6 -21
  106. package/dist/elements/Popup/PopupTrigger/types.js +2 -5
  107. package/dist/elements/Popup/index.js +29 -80
  108. package/dist/elements/Popup/types.js +2 -5
  109. package/dist/elements/PreviewButton/index.js +22 -73
  110. package/dist/elements/PreviewSizes/index.js +24 -80
  111. package/dist/elements/Publish/index.js +23 -79
  112. package/dist/elements/PublishMany/index.js +37 -93
  113. package/dist/elements/PublishMany/types.js +2 -5
  114. package/dist/elements/ReactSelect/ClearIndicator/index.js +7 -22
  115. package/dist/elements/ReactSelect/Control/index.js +5 -20
  116. package/dist/elements/ReactSelect/MultiValue/index.js +8 -23
  117. package/dist/elements/ReactSelect/MultiValueLabel/index.js +7 -22
  118. package/dist/elements/ReactSelect/MultiValueRemove/index.js +12 -27
  119. package/dist/elements/ReactSelect/SingleValue/index.js +5 -20
  120. package/dist/elements/ReactSelect/ValueContainer/index.js +7 -22
  121. package/dist/elements/ReactSelect/index.js +45 -60
  122. package/dist/elements/ReactSelect/types.js +2 -5
  123. package/dist/elements/RenderCustomComponent/index.js +5 -20
  124. package/dist/elements/RenderCustomComponent/types.js +2 -5
  125. package/dist/elements/RenderTitle/index.js +9 -24
  126. package/dist/elements/RenderTitle/types.js +2 -5
  127. package/dist/elements/Save/index.js +16 -72
  128. package/dist/elements/SaveDraft/index.js +24 -80
  129. package/dist/elements/SearchFilter/index.js +31 -86
  130. package/dist/elements/SearchFilter/types.js +2 -5
  131. package/dist/elements/SelectAll/index.js +13 -28
  132. package/dist/elements/SelectRow/index.js +10 -25
  133. package/dist/elements/ShimmerEffect/index.js +12 -71
  134. package/dist/elements/SortColumn/index.js +27 -90
  135. package/dist/elements/SortColumn/types.js +2 -5
  136. package/dist/elements/SortComplex/index.js +35 -90
  137. package/dist/elements/SortComplex/types.js +2 -5
  138. package/dist/elements/Status/index.js +38 -88
  139. package/dist/elements/StayLoggedIn/index.js +20 -34
  140. package/dist/elements/StayLoggedIn/types.js +2 -5
  141. package/dist/elements/StepNav/SetStepNav.js +6 -16
  142. package/dist/elements/StepNav/index.js +27 -93
  143. package/dist/elements/StepNav/types.js +2 -5
  144. package/dist/elements/Table/TableCellProvider/index.js +7 -30
  145. package/dist/elements/Table/index.js +15 -38
  146. package/dist/elements/Table/types.js +2 -5
  147. package/dist/elements/TableColumns/buildColumns.js +7 -22
  148. package/dist/elements/TableColumns/columnReducer.js +2 -12
  149. package/dist/elements/TableColumns/index.js +24 -86
  150. package/dist/elements/Thumbnail/index.js +12 -68
  151. package/dist/elements/Thumbnail/types.js +2 -5
  152. package/dist/elements/ThumbnailCard/index.js +13 -28
  153. package/dist/elements/ThumbnailCard/types.js +2 -5
  154. package/dist/elements/Tooltip/index.js +14 -65
  155. package/dist/elements/Tooltip/types.js +2 -5
  156. package/dist/elements/Translation/index.js +7 -58
  157. package/dist/elements/UnpublishMany/index.js +37 -93
  158. package/dist/elements/UnpublishMany/types.js +2 -5
  159. package/dist/elements/Upload/index.js +57 -127
  160. package/dist/elements/Upload/types.js +2 -5
  161. package/dist/elements/ViewDescription/index.js +12 -27
  162. package/dist/elements/ViewDescription/types.js +4 -19
  163. package/dist/elements/WhereBuilder/Condition/Date/index.js +6 -21
  164. package/dist/elements/WhereBuilder/Condition/Date/types.js +2 -5
  165. package/dist/elements/WhereBuilder/Condition/Number/index.js +7 -22
  166. package/dist/elements/WhereBuilder/Condition/Number/types.js +2 -5
  167. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +28 -84
  168. package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.js +5 -15
  169. package/dist/elements/WhereBuilder/Condition/Relationship/types.js +2 -5
  170. package/dist/elements/WhereBuilder/Condition/Select/index.js +15 -30
  171. package/dist/elements/WhereBuilder/Condition/Select/types.js +2 -5
  172. package/dist/elements/WhereBuilder/Condition/Text/index.js +7 -22
  173. package/dist/elements/WhereBuilder/Condition/Text/types.js +2 -5
  174. package/dist/elements/WhereBuilder/Condition/index.js +37 -93
  175. package/dist/elements/WhereBuilder/Condition/types.js +2 -5
  176. package/dist/elements/WhereBuilder/field-types.js +2 -12
  177. package/dist/elements/WhereBuilder/index.js +43 -98
  178. package/dist/elements/WhereBuilder/reducer.js +2 -12
  179. package/dist/elements/WhereBuilder/transformWhereQuery.js +6 -12
  180. package/dist/elements/WhereBuilder/types.js +2 -5
  181. package/dist/elements/WhereBuilder/validateWhereQuery.js +4 -14
  182. package/dist/exports/assets.js +3 -26
  183. package/dist/exports/elements.js +48 -249
  184. package/dist/exports/forms.js +38 -173
  185. package/dist/exports/graphics.js +3 -26
  186. package/dist/exports/hooks.js +10 -54
  187. package/dist/exports/icons.js +18 -81
  188. package/dist/exports/index.js +10 -27
  189. package/dist/exports/providers.js +24 -118
  190. package/dist/exports/templates.js +3 -21
  191. package/dist/exports/types.js +2 -5
  192. package/dist/exports/utilities.js +11 -61
  193. package/dist/forms/Error/index.js +11 -26
  194. package/dist/forms/FieldDescription/index.js +9 -24
  195. package/dist/forms/FieldDescription/types.js +2 -5
  196. package/dist/forms/FieldPathProvider/index.js +7 -30
  197. package/dist/forms/FieldPathProvider/types.js +2 -5
  198. package/dist/forms/Form/buildFieldSchemaMap.js +14 -14
  199. package/dist/forms/Form/buildInitialState.js +2 -12
  200. package/dist/forms/Form/context.js +17 -67
  201. package/dist/forms/Form/createNestedFieldPath.js +5 -15
  202. package/dist/forms/Form/errorMessages.js +2 -12
  203. package/dist/forms/Form/fieldReducer.js +25 -38
  204. package/dist/forms/Form/getDataByPath.js +4 -14
  205. package/dist/forms/Form/getSiblingData.js +6 -21
  206. package/dist/forms/Form/index.js +84 -140
  207. package/dist/forms/Form/initContextState.js +2 -12
  208. package/dist/forms/Form/mergeServerFormState.js +4 -14
  209. package/dist/forms/Form/reduceFieldsToValues.js +4 -14
  210. package/dist/forms/Form/rows.js +3 -21
  211. package/dist/forms/Form/types.js +2 -5
  212. package/dist/forms/Label/index.js +9 -24
  213. package/dist/forms/NullifyField/index.js +15 -71
  214. package/dist/forms/RenderFields/RenderField.js +6 -21
  215. package/dist/forms/RenderFields/index.js +13 -28
  216. package/dist/forms/RenderFields/types.js +2 -5
  217. package/dist/forms/RowLabel/index.js +13 -28
  218. package/dist/forms/RowLabel/types.js +4 -19
  219. package/dist/forms/Submit/index.js +11 -62
  220. package/dist/forms/WatchChildErrors/buildPathSegments.js +2 -12
  221. package/dist/forms/WatchChildErrors/getFieldStateFromPaths.js +2 -12
  222. package/dist/forms/WatchChildErrors/getNestedFieldState.js +5 -14
  223. package/dist/forms/WatchChildErrors/index.js +11 -26
  224. package/dist/forms/fields/Array/ArrayRow.js +24 -39
  225. package/dist/forms/fields/Array/index.js +59 -115
  226. package/dist/forms/fields/Array/types.js +2 -5
  227. package/dist/forms/fields/Blocks/BlockRow.js +27 -42
  228. package/dist/forms/fields/Blocks/BlocksDrawer/BlockSearch/index.js +10 -25
  229. package/dist/forms/fields/Blocks/BlocksDrawer/index.js +29 -85
  230. package/dist/forms/fields/Blocks/BlocksDrawer/types.js +2 -5
  231. package/dist/forms/fields/Blocks/RowActions.js +12 -27
  232. package/dist/forms/fields/Blocks/SectionTitle/index.js +10 -25
  233. package/dist/forms/fields/Blocks/SectionTitle/types.js +2 -5
  234. package/dist/forms/fields/Blocks/index.js +64 -120
  235. package/dist/forms/fields/Blocks/types.js +2 -5
  236. package/dist/forms/fields/Checkbox/Input.js +11 -34
  237. package/dist/forms/fields/Checkbox/index.js +19 -75
  238. package/dist/forms/fields/Checkbox/types.js +2 -5
  239. package/dist/forms/fields/Code/index.js +15 -71
  240. package/dist/forms/fields/Code/types.js +2 -5
  241. package/dist/forms/fields/Collapsible/index.js +31 -87
  242. package/dist/forms/fields/Collapsible/types.js +2 -5
  243. package/dist/forms/fields/ConfirmPassword/index.js +19 -75
  244. package/dist/forms/fields/ConfirmPassword/types.js +2 -5
  245. package/dist/forms/fields/DateTime/index.js +18 -74
  246. package/dist/forms/fields/DateTime/types.js +2 -5
  247. package/dist/forms/fields/Email/index.js +19 -83
  248. package/dist/forms/fields/Email/types.js +2 -5
  249. package/dist/forms/fields/Group/index.js +32 -88
  250. package/dist/forms/fields/Group/provider.js +7 -69
  251. package/dist/forms/fields/Group/types.js +2 -5
  252. package/dist/forms/fields/HiddenInput/index.js +8 -64
  253. package/dist/forms/fields/HiddenInput/types.js +2 -5
  254. package/dist/forms/fields/JSON/index.js +20 -76
  255. package/dist/forms/fields/JSON/types.js +2 -5
  256. package/dist/forms/fields/Number/index.js +26 -82
  257. package/dist/forms/fields/Number/types.js +2 -5
  258. package/dist/forms/fields/Password/index.js +15 -79
  259. package/dist/forms/fields/Password/types.js +2 -5
  260. package/dist/forms/fields/Point/index.js +24 -80
  261. package/dist/forms/fields/Point/types.js +2 -5
  262. package/dist/forms/fields/RadioGroup/Radio/index.js +13 -28
  263. package/dist/forms/fields/RadioGroup/index.js +23 -79
  264. package/dist/forms/fields/RadioGroup/types.js +2 -5
  265. package/dist/forms/fields/Relationship/AddNew/index.js +43 -99
  266. package/dist/forms/fields/Relationship/AddNew/types.js +2 -5
  267. package/dist/forms/fields/Relationship/AddNew/useRelatedCollections.js +6 -16
  268. package/dist/forms/fields/Relationship/createRelationMap.js +2 -12
  269. package/dist/forms/fields/Relationship/findOptionsByValue.js +2 -12
  270. package/dist/forms/fields/Relationship/index.js +64 -120
  271. package/dist/forms/fields/Relationship/optionsReducer.js +7 -17
  272. package/dist/forms/fields/Relationship/select-components/MultiValueLabel/index.js +21 -72
  273. package/dist/forms/fields/Relationship/select-components/SingleValue/index.js +22 -73
  274. package/dist/forms/fields/Relationship/types.js +2 -5
  275. package/dist/forms/fields/RichText/index.js +2 -12
  276. package/dist/forms/fields/RichText/types.js +2 -5
  277. package/dist/forms/fields/Row/index.js +11 -26
  278. package/dist/forms/fields/Row/provider.js +7 -69
  279. package/dist/forms/fields/Row/types.js +2 -5
  280. package/dist/forms/fields/Select/index.js +24 -88
  281. package/dist/forms/fields/Select/types.js +2 -5
  282. package/dist/forms/fields/Tabs/Tab/index.js +13 -64
  283. package/dist/forms/fields/Tabs/index.js +35 -91
  284. package/dist/forms/fields/Tabs/provider.js +7 -69
  285. package/dist/forms/fields/Tabs/types.js +2 -5
  286. package/dist/forms/fields/Text/Input.js +14 -29
  287. package/dist/forms/fields/Text/index.js +23 -79
  288. package/dist/forms/fields/Text/types.js +2 -5
  289. package/dist/forms/fields/Textarea/Input.js +15 -30
  290. package/dist/forms/fields/Textarea/index.js +20 -76
  291. package/dist/forms/fields/Textarea/types.js +2 -5
  292. package/dist/forms/fields/UI/index.js +2 -12
  293. package/dist/forms/fields/Upload/Input.js +35 -91
  294. package/dist/forms/fields/Upload/index.js +14 -70
  295. package/dist/forms/fields/Upload/types.js +2 -5
  296. package/dist/forms/fields/getFilterOptionsQuery.js +2 -12
  297. package/dist/forms/fields/index.js +50 -65
  298. package/dist/forms/fields/shared.js +7 -21
  299. package/dist/forms/useField/index.js +25 -40
  300. package/dist/forms/useField/types.js +2 -5
  301. package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.js +21 -33
  302. package/dist/forms/utilities/buildStateFromSchema/buildStateFromSchema.spec.js +5 -14
  303. package/dist/forms/utilities/buildStateFromSchema/index.js +4 -14
  304. package/dist/forms/utilities/buildStateFromSchema/iterateFields.js +8 -16
  305. package/dist/forms/withCondition/WatchCondition.js +7 -57
  306. package/dist/forms/withCondition/index.js +8 -23
  307. package/dist/graphics/Account/Default/index.js +7 -22
  308. package/dist/graphics/Account/Gravatar/index.js +10 -25
  309. package/dist/graphics/Account/index.js +15 -30
  310. package/dist/graphics/DefaultBlockImage/index.js +11 -62
  311. package/dist/graphics/ExternalLink/index.js +5 -20
  312. package/dist/graphics/File/index.js +7 -22
  313. package/dist/graphics/Icon/index.js +13 -28
  314. package/dist/graphics/Logo/index.js +15 -30
  315. package/dist/graphics/Search/index.js +6 -21
  316. package/dist/hooks/useAdminThumbnail.js +5 -15
  317. package/dist/hooks/useDebounce.js +6 -16
  318. package/dist/hooks/useDebouncedCallback.js +10 -15
  319. package/dist/hooks/useDebouncedEffect.js +6 -16
  320. package/dist/hooks/useDelay.js +7 -58
  321. package/dist/hooks/useDelayedRender.js +11 -62
  322. package/dist/hooks/useHotkey.js +10 -20
  323. package/dist/hooks/useIntersect.js +7 -17
  324. package/dist/hooks/usePayloadAPI.js +17 -32
  325. package/dist/hooks/useResize.js +5 -15
  326. package/dist/hooks/useThrottledEffect.js +5 -15
  327. package/dist/hooks/useThumbnail.js +8 -18
  328. package/dist/hooks/useUseAsTitle.js +6 -16
  329. package/dist/icons/Calendar/index.js +8 -23
  330. package/dist/icons/Check/index.js +6 -21
  331. package/dist/icons/Chevron/index.js +5 -20
  332. package/dist/icons/CloseMenu/index.js +6 -21
  333. package/dist/icons/CodeBlock/index.js +5 -20
  334. package/dist/icons/Copy/index.js +6 -21
  335. package/dist/icons/DragHandle/index.js +10 -25
  336. package/dist/icons/Edit/index.js +7 -22
  337. package/dist/icons/Line/index.js +5 -20
  338. package/dist/icons/Link/index.js +6 -21
  339. package/dist/icons/LogOut/index.js +7 -22
  340. package/dist/icons/Menu/index.js +7 -22
  341. package/dist/icons/MinimizeMaximize/index.js +12 -63
  342. package/dist/icons/More/index.js +7 -22
  343. package/dist/icons/Plus/index.js +6 -21
  344. package/dist/icons/Search/index.js +6 -21
  345. package/dist/icons/Swap/index.js +8 -23
  346. package/dist/icons/X/index.js +6 -21
  347. package/dist/index.js +2 -19
  348. package/dist/providers/ActionsProvider/SetViewActions/index.js +6 -16
  349. package/dist/providers/ActionsProvider/index.js +11 -70
  350. package/dist/providers/Auth/HydrateClientUser/index.js +6 -16
  351. package/dist/providers/Auth/index.js +52 -116
  352. package/dist/providers/Auth/types.js +2 -5
  353. package/dist/providers/ClientFunction/index.js +14 -40
  354. package/dist/providers/ComponentMapProvider/index.js +9 -68
  355. package/dist/providers/Config/index.js +6 -65
  356. package/dist/providers/CustomProvider/index.js +9 -24
  357. package/dist/providers/DocumentEvents/index.js +7 -66
  358. package/dist/providers/DocumentEvents/types.js +2 -5
  359. package/dist/providers/DocumentInfo/SetDocumentInfo/index.js +9 -19
  360. package/dist/providers/DocumentInfo/index.js +42 -100
  361. package/dist/providers/DocumentInfo/types.js +2 -5
  362. package/dist/providers/EditDepth/index.js +5 -67
  363. package/dist/providers/FormQueryParams/index.js +7 -69
  364. package/dist/providers/ListInfo/index.js +9 -68
  365. package/dist/providers/ListInfo/types.js +2 -5
  366. package/dist/providers/Locale/index.js +28 -87
  367. package/dist/providers/OperationProvider/index.js +5 -67
  368. package/dist/providers/Params/index.js +9 -67
  369. package/dist/providers/Portal/index.js +4 -19
  370. package/dist/providers/Preferences/index.js +25 -89
  371. package/dist/providers/Root/index.js +31 -82
  372. package/dist/providers/SearchParams/index.js +14 -77
  373. package/dist/providers/SearchParams/types.js +2 -5
  374. package/dist/providers/SelectionProvider/index.js +23 -90
  375. package/dist/providers/Theme/index.js +11 -73
  376. package/dist/providers/Theme/types.js +2 -5
  377. package/dist/providers/Theme/utilities.js +3 -21
  378. package/dist/providers/Translation/index.js +8 -67
  379. package/dist/templates/Default/NavHamburger/index.js +7 -22
  380. package/dist/templates/Default/Wrapper/index.js +7 -22
  381. package/dist/templates/Default/index.js +17 -68
  382. package/dist/templates/Default/types.js +2 -5
  383. package/dist/templates/Minimal/index.js +6 -21
  384. package/dist/templates/Minimal/types.js +2 -5
  385. package/dist/utilities/api.js +4 -19
  386. package/dist/utilities/arraysHaveSameStrings.js +2 -12
  387. package/dist/utilities/buildComponentMap/index.js +16 -31
  388. package/dist/utilities/buildComponentMap/mapActions.js +5 -20
  389. package/dist/utilities/buildComponentMap/mapFields.js +34 -90
  390. package/dist/utilities/buildComponentMap/types.js +2 -5
  391. package/dist/utilities/buildFieldSchemaMap/index.js +5 -15
  392. package/dist/utilities/buildFieldSchemaMap/traverseFields.js +9 -19
  393. package/dist/utilities/buildFieldSchemaMap/types.js +2 -5
  394. package/dist/utilities/canUseDOM.js +2 -12
  395. package/dist/utilities/findLocaleFromCode.js +4 -12
  396. package/dist/utilities/formatDate/getSupportedDateLocale.js +2 -12
  397. package/dist/utilities/formatDate/index.js +10 -69
  398. package/dist/utilities/formatDocTitle.js +6 -16
  399. package/dist/utilities/formatFields.js +3 -13
  400. package/dist/utilities/getFormState.js +2 -12
  401. package/dist/utilities/getOffsetTop.js +2 -12
  402. package/dist/utilities/getRequestLanguage.js +2 -12
  403. package/dist/utilities/getSupportedMonacoLocale.js +2 -12
  404. package/dist/utilities/groupNavItems.js +7 -25
  405. package/dist/utilities/scrollToID.js +2 -12
  406. package/dist/utilities/setsAreEqual.js +2 -12
  407. package/dist/utilities/withMergedProps/index.js +23 -21
  408. package/dist/views/Global/RenderCustomView.js +0 -1
  409. package/package.json +4 -4
@@ -1,80 +1,24 @@
1
1
  'use client';
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "ListDrawerContent", {
7
- enumerable: true,
8
- get: function() {
9
- return ListDrawerContent;
10
- }
11
- });
12
- const _modal = require("@faceless-ui/modal");
13
- const _translations = require("@payloadcms/translations");
14
- const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
15
- const _ = require(".");
16
- const _Label = /*#__PURE__*/ _interop_require_default(require("../../forms/Label"));
17
- const _usePayloadAPI = /*#__PURE__*/ _interop_require_default(require("../../hooks/usePayloadAPI"));
18
- const _useUseAsTitle = require("../../hooks/useUseAsTitle");
19
- const _X = require("../../icons/X");
20
- const _Auth = require("../../providers/Auth");
21
- const _ComponentMapProvider = require("../../providers/ComponentMapProvider");
22
- const _Config = require("../../providers/Config");
23
- const _ListInfo = require("../../providers/ListInfo");
24
- const _Preferences = require("../../providers/Preferences");
25
- const _Translation = require("../../providers/Translation");
26
- const _DocumentDrawer = require("../DocumentDrawer");
27
- const _Loading = require("../Loading");
28
- const _Pill = /*#__PURE__*/ _interop_require_default(require("../Pill"));
29
- const _ReactSelect = /*#__PURE__*/ _interop_require_default(require("../ReactSelect"));
30
- const _TableColumns = require("../TableColumns");
31
- const _ViewDescription = /*#__PURE__*/ _interop_require_default(require("../ViewDescription"));
32
- function _interop_require_default(obj) {
33
- return obj && obj.__esModule ? obj : {
34
- default: obj
35
- };
36
- }
37
- function _getRequireWildcardCache(nodeInterop) {
38
- if (typeof WeakMap !== "function") return null;
39
- var cacheBabelInterop = new WeakMap();
40
- var cacheNodeInterop = new WeakMap();
41
- return (_getRequireWildcardCache = function(nodeInterop) {
42
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
43
- })(nodeInterop);
44
- }
45
- function _interop_require_wildcard(obj, nodeInterop) {
46
- if (!nodeInterop && obj && obj.__esModule) {
47
- return obj;
48
- }
49
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
50
- return {
51
- default: obj
52
- };
53
- }
54
- var cache = _getRequireWildcardCache(nodeInterop);
55
- if (cache && cache.has(obj)) {
56
- return cache.get(obj);
57
- }
58
- var newObj = {
59
- __proto__: null
60
- };
61
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
62
- for(var key in obj){
63
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
64
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
65
- if (desc && (desc.get || desc.set)) {
66
- Object.defineProperty(newObj, key, desc);
67
- } else {
68
- newObj[key] = obj[key];
69
- }
70
- }
71
- }
72
- newObj.default = obj;
73
- if (cache) {
74
- cache.set(obj, newObj);
75
- }
76
- return newObj;
77
- }
2
+ import { useModal } from '@faceless-ui/modal';
3
+ import { getTranslation } from '@payloadcms/translations';
4
+ import React, { useCallback, useEffect, useReducer, useState } from 'react';
5
+ import { baseClass } from '.';
6
+ import Label from '../../forms/Label';
7
+ import usePayloadAPI from '../../hooks/usePayloadAPI';
8
+ import { useUseTitleField } from '../../hooks/useUseAsTitle';
9
+ import { X } from '../../icons/X';
10
+ import { useAuth } from '../../providers/Auth';
11
+ import { useComponentMap } from '../../providers/ComponentMapProvider';
12
+ import { useConfig } from '../../providers/Config';
13
+ import { ListInfoProvider } from '../../providers/ListInfo';
14
+ import { usePreferences } from '../../providers/Preferences';
15
+ import { useTranslation } from '../../providers/Translation';
16
+ import { useDocumentDrawer } from '../DocumentDrawer';
17
+ import { LoadingOverlay } from '../Loading';
18
+ import Pill from '../Pill';
19
+ import ReactSelect from '../ReactSelect';
20
+ import { TableColumnsProvider } from '../TableColumns';
21
+ import ViewDescription from '../ViewDescription';
78
22
  const hoistQueryParamsToAnd = (where, queryParams)=>{
79
23
  if ('and' in where) {
80
24
  where.and.push(queryParams);
@@ -95,38 +39,38 @@ const hoistQueryParamsToAnd = (where, queryParams)=>{
95
39
  }
96
40
  return where;
97
41
  };
98
- const ListDrawerContent = ({ collectionSlugs, customHeader, drawerSlug, filterOptions, onSelect, selectedCollection })=>{
99
- const { i18n, t } = (0, _Translation.useTranslation)();
100
- const { permissions } = (0, _Auth.useAuth)();
101
- const { setPreference } = (0, _Preferences.usePreferences)();
102
- const { closeModal, isModalOpen } = (0, _modal.useModal)();
103
- const [limit, setLimit] = (0, _react.useState)();
104
- const [sort, setSort] = (0, _react.useState)(null);
105
- const [page, setPage] = (0, _react.useState)(1);
106
- const [where, setWhere] = (0, _react.useState)(null);
107
- const [search, setSearch] = (0, _react.useState)('');
108
- const { componentMap } = (0, _ComponentMapProvider.useComponentMap)();
109
- const { collections, routes: { api }, serverURL } = (0, _Config.useConfig)();
42
+ export const ListDrawerContent = ({ collectionSlugs, customHeader, drawerSlug, filterOptions, onSelect, selectedCollection })=>{
43
+ const { i18n, t } = useTranslation();
44
+ const { permissions } = useAuth();
45
+ const { setPreference } = usePreferences();
46
+ const { closeModal, isModalOpen } = useModal();
47
+ const [limit, setLimit] = useState();
48
+ const [sort, setSort] = useState(null);
49
+ const [page, setPage] = useState(1);
50
+ const [where, setWhere] = useState(null);
51
+ const [search, setSearch] = useState('');
52
+ const { componentMap } = useComponentMap();
53
+ const { collections, routes: { api }, serverURL } = useConfig();
110
54
  const enabledCollectionConfigs = collections.filter(({ slug })=>{
111
55
  return collectionSlugs.includes(slug);
112
56
  });
113
- const [selectedCollectionConfig, setSelectedCollectionConfig] = (0, _react.useState)(()=>{
57
+ const [selectedCollectionConfig, setSelectedCollectionConfig] = useState(()=>{
114
58
  return enabledCollectionConfigs.find(({ slug })=>slug === selectedCollection) || enabledCollectionConfigs?.[0];
115
59
  });
116
60
  const { List } = componentMap.collections?.[selectedCollectionConfig?.slug] || {};
117
- const [selectedOption, setSelectedOption] = (0, _react.useState)(()=>selectedCollectionConfig ? {
118
- label: (0, _translations.getTranslation)(selectedCollectionConfig.labels.singular, i18n),
61
+ const [selectedOption, setSelectedOption] = useState(()=>selectedCollectionConfig ? {
62
+ label: getTranslation(selectedCollectionConfig.labels.singular, i18n),
119
63
  value: selectedCollectionConfig.slug
120
64
  } : undefined);
121
65
  // const [fields, setFields] = useState<Field[]>(() => formatFields(selectedCollectionConfig))
122
- const titleField = (0, _useUseAsTitle.useUseTitleField)(selectedCollectionConfig);
123
- (0, _react.useEffect)(()=>{
66
+ const titleField = useUseTitleField(selectedCollectionConfig);
67
+ useEffect(()=>{
124
68
  // setFields(formatFields(selectedCollectionConfig))
125
69
  }, [
126
70
  selectedCollectionConfig
127
71
  ]);
128
72
  // allow external control of selected collection, same as the initial state logic above
129
- (0, _react.useEffect)(()=>{
73
+ useEffect(()=>{
130
74
  if (selectedCollection) {
131
75
  // if passed a selection, find it and check if it's enabled
132
76
  const selectedConfig = enabledCollectionConfigs.find(({ slug })=>slug === selectedCollection) || enabledCollectionConfigs?.[0];
@@ -140,10 +84,10 @@ const ListDrawerContent = ({ collectionSlugs, customHeader, drawerSlug, filterOp
140
84
  ]);
141
85
  const preferenceKey = `${selectedCollectionConfig.slug}-list`;
142
86
  // this is the 'create new' drawer
143
- const [DocumentDrawer, DocumentDrawerToggler, { drawerSlug: documentDrawerSlug }] = (0, _DocumentDrawer.useDocumentDrawer)({
87
+ const [DocumentDrawer, DocumentDrawerToggler, { drawerSlug: documentDrawerSlug }] = useDocumentDrawer({
144
88
  collectionSlug: selectedCollectionConfig.slug
145
89
  });
146
- (0, _react.useEffect)(()=>{
90
+ useEffect(()=>{
147
91
  if (selectedOption) {
148
92
  setSelectedCollectionConfig(enabledCollectionConfigs.find(({ slug })=>selectedOption.value === slug));
149
93
  }
@@ -156,11 +100,11 @@ const ListDrawerContent = ({ collectionSlugs, customHeader, drawerSlug, filterOp
156
100
  // If modal is open, get active page of upload gallery
157
101
  const isOpen = isModalOpen(drawerSlug);
158
102
  const apiURL = isOpen ? `${serverURL}${api}/${selectedCollectionConfig.slug}` : null;
159
- const [cacheBust, dispatchCacheBust] = (0, _react.useReducer)((state)=>state + 1, 0) // used to force a re-fetch even when apiURL is unchanged
103
+ const [cacheBust, dispatchCacheBust] = useReducer((state)=>state + 1, 0) // used to force a re-fetch even when apiURL is unchanged
160
104
  ;
161
- const [{ data, isError, isLoading: isLoadingList }, { setParams }] = (0, _usePayloadAPI.default)(apiURL, {});
105
+ const [{ data, isError, isLoading: isLoadingList }, { setParams }] = usePayloadAPI(apiURL, {});
162
106
  const moreThanOneAvailableCollection = enabledCollectionConfigs.length > 1;
163
- (0, _react.useEffect)(()=>{
107
+ useEffect(()=>{
164
108
  const { slug, admin: { listSearchableFields } = {}, versions } = selectedCollectionConfig;
165
109
  const params = {};
166
110
  let copyOfWhere = {
@@ -207,7 +151,7 @@ const ListDrawerContent = ({ collectionSlugs, customHeader, drawerSlug, filterOp
207
151
  setParams,
208
152
  titleField?.name
209
153
  ]);
210
- (0, _react.useEffect)(()=>{
154
+ useEffect(()=>{
211
155
  const newPreferences = {
212
156
  limit,
213
157
  sort
@@ -219,7 +163,7 @@ const ListDrawerContent = ({ collectionSlugs, customHeader, drawerSlug, filterOp
219
163
  setPreference,
220
164
  preferenceKey
221
165
  ]);
222
- const onCreateNew = (0, _react.useCallback)(({ doc })=>{
166
+ const onCreateNew = useCallback(({ doc })=>{
223
167
  if (typeof onSelect === 'function') {
224
168
  onSelect({
225
169
  collectionSlug: selectedCollectionConfig.slug,
@@ -240,38 +184,38 @@ const ListDrawerContent = ({ collectionSlugs, customHeader, drawerSlug, filterOp
240
184
  return null;
241
185
  }
242
186
  if (isLoadingList) {
243
- return /*#__PURE__*/ _react.default.createElement(_Loading.LoadingOverlay, null);
187
+ return /*#__PURE__*/ React.createElement(LoadingOverlay, null);
244
188
  }
245
- return /*#__PURE__*/ _react.default.createElement(_ListInfo.ListInfoProvider, {
246
- Header: /*#__PURE__*/ _react.default.createElement("header", {
247
- className: `${_.baseClass}__header`
248
- }, /*#__PURE__*/ _react.default.createElement("div", {
249
- className: `${_.baseClass}__header-wrap`
250
- }, /*#__PURE__*/ _react.default.createElement("div", {
251
- className: `${_.baseClass}__header-content`
252
- }, /*#__PURE__*/ _react.default.createElement("h2", {
253
- className: `${_.baseClass}__header-text`
254
- }, !customHeader ? (0, _translations.getTranslation)(selectedCollectionConfig?.labels?.plural, i18n) : customHeader), hasCreatePermission && /*#__PURE__*/ _react.default.createElement(DocumentDrawerToggler, {
255
- className: `${_.baseClass}__create-new-button`
256
- }, /*#__PURE__*/ _react.default.createElement(_Pill.default, null, t('general:createNew')))), /*#__PURE__*/ _react.default.createElement("button", {
257
- className: `${_.baseClass}__header-close`,
189
+ return /*#__PURE__*/ React.createElement(ListInfoProvider, {
190
+ Header: /*#__PURE__*/ React.createElement("header", {
191
+ className: `${baseClass}__header`
192
+ }, /*#__PURE__*/ React.createElement("div", {
193
+ className: `${baseClass}__header-wrap`
194
+ }, /*#__PURE__*/ React.createElement("div", {
195
+ className: `${baseClass}__header-content`
196
+ }, /*#__PURE__*/ React.createElement("h2", {
197
+ className: `${baseClass}__header-text`
198
+ }, !customHeader ? getTranslation(selectedCollectionConfig?.labels?.plural, i18n) : customHeader), hasCreatePermission && /*#__PURE__*/ React.createElement(DocumentDrawerToggler, {
199
+ className: `${baseClass}__create-new-button`
200
+ }, /*#__PURE__*/ React.createElement(Pill, null, t('general:createNew')))), /*#__PURE__*/ React.createElement("button", {
201
+ className: `${baseClass}__header-close`,
258
202
  onClick: ()=>{
259
203
  closeModal(drawerSlug);
260
204
  },
261
205
  type: "button"
262
- }, /*#__PURE__*/ _react.default.createElement(_X.X, null))), selectedCollectionConfig?.admin?.description && /*#__PURE__*/ _react.default.createElement("div", {
263
- className: `${_.baseClass}__sub-header`
264
- }, /*#__PURE__*/ _react.default.createElement(_ViewDescription.default, {
206
+ }, /*#__PURE__*/ React.createElement(X, null))), selectedCollectionConfig?.admin?.description && /*#__PURE__*/ React.createElement("div", {
207
+ className: `${baseClass}__sub-header`
208
+ }, /*#__PURE__*/ React.createElement(ViewDescription, {
265
209
  description: selectedCollectionConfig.admin.description
266
- })), moreThanOneAvailableCollection && /*#__PURE__*/ _react.default.createElement("div", {
267
- className: `${_.baseClass}__select-collection-wrap`
268
- }, /*#__PURE__*/ _react.default.createElement(_Label.default, {
210
+ })), moreThanOneAvailableCollection && /*#__PURE__*/ React.createElement("div", {
211
+ className: `${baseClass}__select-collection-wrap`
212
+ }, /*#__PURE__*/ React.createElement(Label, {
269
213
  label: t('upload:selectCollectionToBrowse')
270
- }), /*#__PURE__*/ _react.default.createElement(_ReactSelect.default, {
271
- className: `${_.baseClass}__select-collection`,
214
+ }), /*#__PURE__*/ React.createElement(ReactSelect, {
215
+ className: `${baseClass}__select-collection`,
272
216
  onChange: setSelectedOption,
273
217
  options: enabledCollectionConfigs.map((coll)=>({
274
- label: (0, _translations.getTranslation)(coll.labels.singular, i18n),
218
+ label: getTranslation(coll.labels.singular, i18n),
275
219
  value: coll.slug
276
220
  })),
277
221
  value: selectedOption
@@ -290,10 +234,10 @@ const ListDrawerContent = ({ collectionSlugs, customHeader, drawerSlug, filterOp
290
234
  setLimit: setLimit,
291
235
  setSort: setSort,
292
236
  titleField: titleField
293
- }, /*#__PURE__*/ _react.default.createElement(_TableColumns.TableColumnsProvider, {
237
+ }, /*#__PURE__*/ React.createElement(TableColumnsProvider, {
294
238
  cellProps: [
295
239
  {
296
- className: `${_.baseClass}__first-cell`,
240
+ className: `${baseClass}__first-cell`,
297
241
  link: false,
298
242
  onClick: ({ collectionSlug: rowColl, rowData })=>{
299
243
  if (typeof onSelect === 'function') {
@@ -307,9 +251,9 @@ const ListDrawerContent = ({ collectionSlugs, customHeader, drawerSlug, filterOp
307
251
  ],
308
252
  collectionSlug: selectedCollectionConfig.slug,
309
253
  listPreferences: {}
310
- }, List, /*#__PURE__*/ _react.default.createElement(DocumentDrawer, {
254
+ }, List, /*#__PURE__*/ React.createElement(DocumentDrawer, {
311
255
  onSave: onCreateNew
312
256
  })));
313
257
  };
314
258
 
315
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9MaXN0RHJhd2VyL0RyYXdlckNvbnRlbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAncGF5bG9hZC90eXBlcydcbmltcG9ydCB0eXBlIHsgV2hlcmUgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyB1c2VNb2RhbCB9IGZyb20gJ0BmYWNlbGVzcy11aS9tb2RhbCdcbmltcG9ydCB7IGdldFRyYW5zbGF0aW9uIH0gZnJvbSAnQHBheWxvYWRjbXMvdHJhbnNsYXRpb25zJ1xuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZHVjZXIsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5cbmltcG9ydCB0eXBlIHsgTGlzdFByZWZlcmVuY2VzIH0gZnJvbSAnLi4vVGFibGVDb2x1bW5zJ1xuaW1wb3J0IHR5cGUgeyBMaXN0RHJhd2VyUHJvcHMgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBiYXNlQ2xhc3MgfSBmcm9tICcuJ1xuaW1wb3J0IExhYmVsIGZyb20gJy4uLy4uL2Zvcm1zL0xhYmVsJ1xuaW1wb3J0IHVzZVBheWxvYWRBUEkgZnJvbSAnLi4vLi4vaG9va3MvdXNlUGF5bG9hZEFQSSdcbmltcG9ydCB7IHVzZVVzZVRpdGxlRmllbGQgfSBmcm9tICcuLi8uLi9ob29rcy91c2VVc2VBc1RpdGxlJ1xuaW1wb3J0IHsgWCB9IGZyb20gJy4uLy4uL2ljb25zL1gnXG5pbXBvcnQgeyB1c2VBdXRoIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL0F1dGgnXG5pbXBvcnQgeyB1c2VDb21wb25lbnRNYXAgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvQ29tcG9uZW50TWFwUHJvdmlkZXInXG5pbXBvcnQgeyB1c2VDb25maWcgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvQ29uZmlnJ1xuaW1wb3J0IHsgTGlzdEluZm9Qcm92aWRlciB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9MaXN0SW5mbydcbmltcG9ydCB7IHVzZVByZWZlcmVuY2VzIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL1ByZWZlcmVuY2VzJ1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvVHJhbnNsYXRpb24nXG5pbXBvcnQgeyB1c2VEb2N1bWVudERyYXdlciB9IGZyb20gJy4uL0RvY3VtZW50RHJhd2VyJ1xuaW1wb3J0IHsgTG9hZGluZ092ZXJsYXkgfSBmcm9tICcuLi9Mb2FkaW5nJ1xuaW1wb3J0IFBpbGwgZnJvbSAnLi4vUGlsbCdcbmltcG9ydCBSZWFjdFNlbGVjdCBmcm9tICcuLi9SZWFjdFNlbGVjdCdcbmltcG9ydCB7IFRhYmxlQ29sdW1uc1Byb3ZpZGVyIH0gZnJvbSAnLi4vVGFibGVDb2x1bW5zJ1xuaW1wb3J0IFZpZXdEZXNjcmlwdGlvbiBmcm9tICcuLi9WaWV3RGVzY3JpcHRpb24nXG5cbmNvbnN0IGhvaXN0UXVlcnlQYXJhbXNUb0FuZCA9ICh3aGVyZTogV2hlcmUsIHF1ZXJ5UGFyYW1zOiBXaGVyZSkgPT4ge1xuICBpZiAoJ2FuZCcgaW4gd2hlcmUpIHtcbiAgICB3aGVyZS5hbmQucHVzaChxdWVyeVBhcmFtcylcbiAgfSBlbHNlIGlmICgnb3InIGluIHdoZXJlKSB7XG4gICAgd2hlcmUgPSB7XG4gICAgICBhbmQ6IFt3aGVyZSwgcXVlcnlQYXJhbXNdLFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB3aGVyZSA9IHtcbiAgICAgIGFuZDogW3doZXJlLCBxdWVyeVBhcmFtc10sXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHdoZXJlXG59XG5cbmV4cG9ydCBjb25zdCBMaXN0RHJhd2VyQ29udGVudDogUmVhY3QuRkM8TGlzdERyYXdlclByb3BzPiA9ICh7XG4gIGNvbGxlY3Rpb25TbHVncyxcbiAgY3VzdG9tSGVhZGVyLFxuICBkcmF3ZXJTbHVnLFxuICBmaWx0ZXJPcHRpb25zLFxuICBvblNlbGVjdCxcbiAgc2VsZWN0ZWRDb2xsZWN0aW9uLFxufSkgPT4ge1xuICBjb25zdCB7IGkxOG4sIHQgfSA9IHVzZVRyYW5zbGF0aW9uKClcbiAgY29uc3QgeyBwZXJtaXNzaW9ucyB9ID0gdXNlQXV0aCgpXG4gIGNvbnN0IHsgc2V0UHJlZmVyZW5jZSB9ID0gdXNlUHJlZmVyZW5jZXMoKVxuICBjb25zdCB7IGNsb3NlTW9kYWwsIGlzTW9kYWxPcGVuIH0gPSB1c2VNb2RhbCgpXG4gIGNvbnN0IFtsaW1pdCwgc2V0TGltaXRdID0gdXNlU3RhdGU8bnVtYmVyPigpXG4gIGNvbnN0IFtzb3J0LCBzZXRTb3J0XSA9IHVzZVN0YXRlPHN0cmluZz4obnVsbClcbiAgY29uc3QgW3BhZ2UsIHNldFBhZ2VdID0gdXNlU3RhdGU8bnVtYmVyPigxKVxuICBjb25zdCBbd2hlcmUsIHNldFdoZXJlXSA9IHVzZVN0YXRlPFdoZXJlPihudWxsKVxuICBjb25zdCBbc2VhcmNoLCBzZXRTZWFyY2hdID0gdXNlU3RhdGU8c3RyaW5nPignJylcblxuICBjb25zdCB7IGNvbXBvbmVudE1hcCB9ID0gdXNlQ29tcG9uZW50TWFwKClcblxuICBjb25zdCB7XG4gICAgY29sbGVjdGlvbnMsXG4gICAgcm91dGVzOiB7IGFwaSB9LFxuICAgIHNlcnZlclVSTCxcbiAgfSA9IHVzZUNvbmZpZygpXG5cbiAgY29uc3QgZW5hYmxlZENvbGxlY3Rpb25Db25maWdzID0gY29sbGVjdGlvbnMuZmlsdGVyKCh7IHNsdWcgfSkgPT4ge1xuICAgIHJldHVybiBjb2xsZWN0aW9uU2x1Z3MuaW5jbHVkZXMoc2x1ZylcbiAgfSlcblxuICBjb25zdCBbc2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnLCBzZXRTZWxlY3RlZENvbGxlY3Rpb25Db25maWddID1cbiAgICB1c2VTdGF0ZTxTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnPigoKSA9PiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBlbmFibGVkQ29sbGVjdGlvbkNvbmZpZ3MuZmluZCgoeyBzbHVnIH0pID0+IHNsdWcgPT09IHNlbGVjdGVkQ29sbGVjdGlvbikgfHxcbiAgICAgICAgZW5hYmxlZENvbGxlY3Rpb25Db25maWdzPy5bMF1cbiAgICAgIClcbiAgICB9KVxuXG4gIGNvbnN0IHsgTGlzdCB9ID0gY29tcG9uZW50TWFwLmNvbGxlY3Rpb25zPy5bc2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnPy5zbHVnXSB8fCB7fVxuXG4gIGNvbnN0IFtzZWxlY3RlZE9wdGlvbiwgc2V0U2VsZWN0ZWRPcHRpb25dID0gdXNlU3RhdGU8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+KCgpID0+XG4gICAgc2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnXG4gICAgICA/IHtcbiAgICAgICAgICBsYWJlbDogZ2V0VHJhbnNsYXRpb24oc2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnLmxhYmVscy5zaW5ndWxhciwgaTE4biksXG4gICAgICAgICAgdmFsdWU6IHNlbGVjdGVkQ29sbGVjdGlvbkNvbmZpZy5zbHVnLFxuICAgICAgICB9XG4gICAgICA6IHVuZGVmaW5lZCxcbiAgKVxuXG4gIC8vIGNvbnN0IFtmaWVsZHMsIHNldEZpZWxkc10gPSB1c2VTdGF0ZTxGaWVsZFtdPigoKSA9PiBmb3JtYXRGaWVsZHMoc2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnKSlcblxuICBjb25zdCB0aXRsZUZpZWxkID0gdXNlVXNlVGl0bGVGaWVsZChzZWxlY3RlZENvbGxlY3Rpb25Db25maWcpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBzZXRGaWVsZHMoZm9ybWF0RmllbGRzKHNlbGVjdGVkQ29sbGVjdGlvbkNvbmZpZykpXG4gIH0sIFtzZWxlY3RlZENvbGxlY3Rpb25Db25maWddKVxuXG4gIC8vIGFsbG93IGV4dGVybmFsIGNvbnRyb2wgb2Ygc2VsZWN0ZWQgY29sbGVjdGlvbiwgc2FtZSBhcyB0aGUgaW5pdGlhbCBzdGF0ZSBsb2dpYyBhYm92ZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzZWxlY3RlZENvbGxlY3Rpb24pIHtcbiAgICAgIC8vIGlmIHBhc3NlZCBhIHNlbGVjdGlvbiwgZmluZCBpdCBhbmQgY2hlY2sgaWYgaXQncyBlbmFibGVkXG4gICAgICBjb25zdCBzZWxlY3RlZENvbmZpZyA9XG4gICAgICAgIGVuYWJsZWRDb2xsZWN0aW9uQ29uZmlncy5maW5kKCh7IHNsdWcgfSkgPT4gc2x1ZyA9PT0gc2VsZWN0ZWRDb2xsZWN0aW9uKSB8fFxuICAgICAgICBlbmFibGVkQ29sbGVjdGlvbkNvbmZpZ3M/LlswXVxuICAgICAgc2V0U2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnKHNlbGVjdGVkQ29uZmlnKVxuICAgIH1cbiAgfSwgW3NlbGVjdGVkQ29sbGVjdGlvbiwgZW5hYmxlZENvbGxlY3Rpb25Db25maWdzLCBvblNlbGVjdCwgdF0pXG5cbiAgY29uc3QgcHJlZmVyZW5jZUtleSA9IGAke3NlbGVjdGVkQ29sbGVjdGlvbkNvbmZpZy5zbHVnfS1saXN0YFxuXG4gIC8vIHRoaXMgaXMgdGhlICdjcmVhdGUgbmV3JyBkcmF3ZXJcbiAgY29uc3QgW0RvY3VtZW50RHJhd2VyLCBEb2N1bWVudERyYXdlclRvZ2dsZXIsIHsgZHJhd2VyU2x1ZzogZG9jdW1lbnREcmF3ZXJTbHVnIH1dID1cbiAgICB1c2VEb2N1bWVudERyYXdlcih7XG4gICAgICBjb2xsZWN0aW9uU2x1Zzogc2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnLnNsdWcsXG4gICAgfSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzZWxlY3RlZE9wdGlvbikge1xuICAgICAgc2V0U2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnKFxuICAgICAgICBlbmFibGVkQ29sbGVjdGlvbkNvbmZpZ3MuZmluZCgoeyBzbHVnIH0pID0+IHNlbGVjdGVkT3B0aW9uLnZhbHVlID09PSBzbHVnKSxcbiAgICAgIClcbiAgICB9XG4gIH0sIFtzZWxlY3RlZE9wdGlvbiwgZW5hYmxlZENvbGxlY3Rpb25Db25maWdzXSlcblxuICBjb25zdCBjb2xsZWN0aW9uUGVybWlzc2lvbnMgPSBwZXJtaXNzaW9ucz8uY29sbGVjdGlvbnM/LltzZWxlY3RlZENvbGxlY3Rpb25Db25maWc/LnNsdWddXG4gIGNvbnN0IGhhc0NyZWF0ZVBlcm1pc3Npb24gPSBjb2xsZWN0aW9uUGVybWlzc2lvbnM/LmNyZWF0ZT8ucGVybWlzc2lvblxuXG4gIC8vIElmIG1vZGFsIGlzIG9wZW4sIGdldCBhY3RpdmUgcGFnZSBvZiB1cGxvYWQgZ2FsbGVyeVxuICBjb25zdCBpc09wZW4gPSBpc01vZGFsT3BlbihkcmF3ZXJTbHVnKVxuICBjb25zdCBhcGlVUkwgPSBpc09wZW4gPyBgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7c2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnLnNsdWd9YCA6IG51bGxcbiAgY29uc3QgW2NhY2hlQnVzdCwgZGlzcGF0Y2hDYWNoZUJ1c3RdID0gdXNlUmVkdWNlcigoc3RhdGUpID0+IHN0YXRlICsgMSwgMCkgLy8gdXNlZCB0byBmb3JjZSBhIHJlLWZldGNoIGV2ZW4gd2hlbiBhcGlVUkwgaXMgdW5jaGFuZ2VkXG4gIGNvbnN0IFt7IGRhdGEsIGlzRXJyb3IsIGlzTG9hZGluZzogaXNMb2FkaW5nTGlzdCB9LCB7IHNldFBhcmFtcyB9XSA9IHVzZVBheWxvYWRBUEkoYXBpVVJMLCB7fSlcbiAgY29uc3QgbW9yZVRoYW5PbmVBdmFpbGFibGVDb2xsZWN0aW9uID0gZW5hYmxlZENvbGxlY3Rpb25Db25maWdzLmxlbmd0aCA+IDFcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHsgc2x1ZywgYWRtaW46IHsgbGlzdFNlYXJjaGFibGVGaWVsZHMgfSA9IHt9LCB2ZXJzaW9ucyB9ID0gc2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnXG4gICAgY29uc3QgcGFyYW1zOiB7XG4gICAgICBjYWNoZUJ1c3Q/OiBudW1iZXJcbiAgICAgIGRyYWZ0Pzogc3RyaW5nXG4gICAgICBsaW1pdD86IG51bWJlclxuICAgICAgcGFnZT86IG51bWJlclxuICAgICAgc2VhcmNoPzogc3RyaW5nXG4gICAgICBzb3J0Pzogc3RyaW5nXG4gICAgICB3aGVyZT86IHVua25vd25cbiAgICB9ID0ge31cblxuICAgIGxldCBjb3B5T2ZXaGVyZSA9IHsgLi4uKHdoZXJlIHx8IHt9KSB9XG4gICAgY29uc3QgZmlsdGVyT3B0aW9uID0gZmlsdGVyT3B0aW9ucz8uW3NsdWddXG5cbiAgICBpZiAoZmlsdGVyT3B0aW9ucyAmJiB0eXBlb2YgZmlsdGVyT3B0aW9uICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIGNvcHlPZldoZXJlID0gaG9pc3RRdWVyeVBhcmFtc1RvQW5kKGNvcHlPZldoZXJlLCBmaWx0ZXJPcHRpb24pXG4gICAgfVxuXG4gICAgaWYgKHNlYXJjaCkge1xuICAgICAgY29uc3Qgc2VhcmNoQXNDb25kaXRpb25zID0gKGxpc3RTZWFyY2hhYmxlRmllbGRzIHx8IFt0aXRsZUZpZWxkPy5uYW1lXSkubWFwKChmaWVsZE5hbWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBbZmllbGROYW1lXToge1xuICAgICAgICAgICAgbGlrZTogc2VhcmNoLFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgIH0sIFtdKVxuXG4gICAgICBpZiAoc2VhcmNoQXNDb25kaXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoRmlsdGVyOiBXaGVyZSA9IHtcbiAgICAgICAgICBvcjogWy4uLnNlYXJjaEFzQ29uZGl0aW9uc10sXG4gICAgICAgIH1cblxuICAgICAgICBjb3B5T2ZXaGVyZSA9IGhvaXN0UXVlcnlQYXJhbXNUb0FuZChjb3B5T2ZXaGVyZSwgc2VhcmNoRmlsdGVyKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYWdlKSBwYXJhbXMucGFnZSA9IHBhZ2VcbiAgICBpZiAoc29ydCkgcGFyYW1zLnNvcnQgPSBzb3J0XG4gICAgaWYgKGNhY2hlQnVzdCkgcGFyYW1zLmNhY2hlQnVzdCA9IGNhY2hlQnVzdFxuICAgIGlmIChjb3B5T2ZXaGVyZSkgcGFyYW1zLndoZXJlID0gY29weU9mV2hlcmVcbiAgICBpZiAodmVyc2lvbnM/LmRyYWZ0cykgcGFyYW1zLmRyYWZ0ID0gJ3RydWUnXG5cbiAgICBzZXRQYXJhbXMocGFyYW1zKVxuICB9LCBbXG4gICAgcGFnZSxcbiAgICBzb3J0LFxuICAgIHdoZXJlLFxuICAgIHNlYXJjaCxcbiAgICBjYWNoZUJ1c3QsXG4gICAgZmlsdGVyT3B0aW9ucyxcbiAgICBzZWxlY3RlZENvbGxlY3Rpb25Db25maWcsXG4gICAgdCxcbiAgICBzZXRQYXJhbXMsXG4gICAgdGl0bGVGaWVsZD8ubmFtZSxcbiAgXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG5ld1ByZWZlcmVuY2VzID0ge1xuICAgICAgbGltaXQsXG4gICAgICBzb3J0LFxuICAgIH1cblxuICAgIHNldFByZWZlcmVuY2UocHJlZmVyZW5jZUtleSwgbmV3UHJlZmVyZW5jZXMsIHRydWUpXG4gIH0sIFtzb3J0LCBsaW1pdCwgc2V0UHJlZmVyZW5jZSwgcHJlZmVyZW5jZUtleV0pXG5cbiAgY29uc3Qgb25DcmVhdGVOZXcgPSB1c2VDYWxsYmFjayhcbiAgICAoeyBkb2MgfSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBvblNlbGVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvblNlbGVjdCh7XG4gICAgICAgICAgY29sbGVjdGlvblNsdWc6IHNlbGVjdGVkQ29sbGVjdGlvbkNvbmZpZy5zbHVnLFxuICAgICAgICAgIGRvY0lEOiBkb2MuaWQsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBkaXNwYXRjaENhY2hlQnVzdCgpXG4gICAgICBjbG9zZU1vZGFsKGRvY3VtZW50RHJhd2VyU2x1ZylcbiAgICAgIGNsb3NlTW9kYWwoZHJhd2VyU2x1ZylcbiAgICB9LFxuICAgIFtjbG9zZU1vZGFsLCBkb2N1bWVudERyYXdlclNsdWcsIGRyYXdlclNsdWcsIG9uU2VsZWN0LCBzZWxlY3RlZENvbGxlY3Rpb25Db25maWddLFxuICApXG5cbiAgaWYgKCFzZWxlY3RlZENvbGxlY3Rpb25Db25maWcgfHwgaXNFcnJvcikge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBpZiAoaXNMb2FkaW5nTGlzdCkge1xuICAgIHJldHVybiA8TG9hZGluZ092ZXJsYXkgLz5cbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPExpc3RJbmZvUHJvdmlkZXJcbiAgICAgIEhlYWRlcj17XG4gICAgICAgIDxoZWFkZXIgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19oZWFkZXJgfT5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9faGVhZGVyLXdyYXBgfT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19oZWFkZXItY29udGVudGB9PlxuICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19oZWFkZXItdGV4dGB9PlxuICAgICAgICAgICAgICAgIHshY3VzdG9tSGVhZGVyXG4gICAgICAgICAgICAgICAgICA/IGdldFRyYW5zbGF0aW9uKHNlbGVjdGVkQ29sbGVjdGlvbkNvbmZpZz8ubGFiZWxzPy5wbHVyYWwsIGkxOG4pXG4gICAgICAgICAgICAgICAgICA6IGN1c3RvbUhlYWRlcn1cbiAgICAgICAgICAgICAgPC9oMj5cbiAgICAgICAgICAgICAge2hhc0NyZWF0ZVBlcm1pc3Npb24gJiYgKFxuICAgICAgICAgICAgICAgIDxEb2N1bWVudERyYXdlclRvZ2dsZXIgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19jcmVhdGUtbmV3LWJ1dHRvbmB9PlxuICAgICAgICAgICAgICAgICAgPFBpbGw+e3QoJ2dlbmVyYWw6Y3JlYXRlTmV3Jyl9PC9QaWxsPlxuICAgICAgICAgICAgICAgIDwvRG9jdW1lbnREcmF3ZXJUb2dnbGVyPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9faGVhZGVyLWNsb3NlYH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGNsb3NlTW9kYWwoZHJhd2VyU2x1ZylcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxYIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7c2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnPy5hZG1pbj8uZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3N1Yi1oZWFkZXJgfT5cbiAgICAgICAgICAgICAgPFZpZXdEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbj17c2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnLmFkbWluLmRlc2NyaXB0aW9ufSAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7bW9yZVRoYW5PbmVBdmFpbGFibGVDb2xsZWN0aW9uICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19zZWxlY3QtY29sbGVjdGlvbi13cmFwYH0+XG4gICAgICAgICAgICAgIDxMYWJlbCBsYWJlbD17dCgndXBsb2FkOnNlbGVjdENvbGxlY3Rpb25Ub0Jyb3dzZScpfSAvPlxuICAgICAgICAgICAgICA8UmVhY3RTZWxlY3RcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3NlbGVjdC1jb2xsZWN0aW9uYH1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17c2V0U2VsZWN0ZWRPcHRpb259IC8vIHRoaXMgaXMgb25seSBjaGFuZ2luZyB0aGUgb3B0aW9ucyB3aGljaCBpcyBub3QgcmVydW5uaW5nIG15IGVmZmVjdFxuICAgICAgICAgICAgICAgIG9wdGlvbnM9e2VuYWJsZWRDb2xsZWN0aW9uQ29uZmlncy5tYXAoKGNvbGwpID0+ICh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogZ2V0VHJhbnNsYXRpb24oY29sbC5sYWJlbHMuc2luZ3VsYXIsIGkxOG4pLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbGwuc2x1ZyxcbiAgICAgICAgICAgICAgICB9KSl9XG4gICAgICAgICAgICAgICAgdmFsdWU9e3NlbGVjdGVkT3B0aW9ufVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9oZWFkZXI+XG4gICAgICB9XG4gICAgICBjb2xsZWN0aW9uU2x1Zz17c2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnLnNsdWd9XG4gICAgICBkYXRhPXtkYXRhfVxuICAgICAgaGFuZGxlUGFnZUNoYW5nZT17c2V0UGFnZX1cbiAgICAgIGhhbmRsZVBlclBhZ2VDaGFuZ2U9e3NldExpbWl0fVxuICAgICAgaGFuZGxlU2VhcmNoQ2hhbmdlPXtzZXRTZWFyY2h9XG4gICAgICBoYW5kbGVTb3J0Q2hhbmdlPXtzZXRTb3J0fVxuICAgICAgaGFuZGxlV2hlcmVDaGFuZ2U9e3NldFdoZXJlfVxuICAgICAgaGFzQ3JlYXRlUGVybWlzc2lvbj17aGFzQ3JlYXRlUGVybWlzc2lvbn1cbiAgICAgIGxpbWl0PXtsaW1pdCB8fCBzZWxlY3RlZENvbGxlY3Rpb25Db25maWc/LmFkbWluPy5wYWdpbmF0aW9uPy5kZWZhdWx0TGltaXR9XG4gICAgICBtb2RpZnlTZWFyY2hQYXJhbXM9e2ZhbHNlfVxuICAgICAgbmV3RG9jdW1lbnRVUkw9e251bGx9XG4gICAgICBzZXRMaW1pdD17c2V0TGltaXR9XG4gICAgICBzZXRTb3J0PXtzZXRTb3J0fVxuICAgICAgdGl0bGVGaWVsZD17dGl0bGVGaWVsZH1cbiAgICA+XG4gICAgICA8VGFibGVDb2x1bW5zUHJvdmlkZXJcbiAgICAgICAgY2VsbFByb3BzPXtbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiBgJHtiYXNlQ2xhc3N9X19maXJzdC1jZWxsYCxcbiAgICAgICAgICAgIGxpbms6IGZhbHNlLFxuICAgICAgICAgICAgb25DbGljazogKHsgY29sbGVjdGlvblNsdWc6IHJvd0NvbGwsIHJvd0RhdGEgfSkgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIG9uU2VsZWN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgb25TZWxlY3Qoe1xuICAgICAgICAgICAgICAgICAgY29sbGVjdGlvblNsdWc6IHJvd0NvbGwsXG4gICAgICAgICAgICAgICAgICBkb2NJRDogcm93RGF0YS5pZCBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdfVxuICAgICAgICBjb2xsZWN0aW9uU2x1Zz17c2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnLnNsdWd9XG4gICAgICAgIGxpc3RQcmVmZXJlbmNlcz17e30gYXMgTGlzdFByZWZlcmVuY2VzfSAvLyBUT0RPOiBnZXQgbGlzdCBwcmVmZXJlbmNlc1xuICAgICAgPlxuICAgICAgICB7TGlzdH1cbiAgICAgICAgPERvY3VtZW50RHJhd2VyIG9uU2F2ZT17b25DcmVhdGVOZXd9IC8+XG4gICAgICA8L1RhYmxlQ29sdW1uc1Byb3ZpZGVyPlxuICAgIDwvTGlzdEluZm9Qcm92aWRlcj5cbiAgKVxufVxuIl0sIm5hbWVzIjpbIkxpc3REcmF3ZXJDb250ZW50IiwiaG9pc3RRdWVyeVBhcmFtc1RvQW5kIiwid2hlcmUiLCJxdWVyeVBhcmFtcyIsImFuZCIsInB1c2giLCJjb2xsZWN0aW9uU2x1Z3MiLCJjdXN0b21IZWFkZXIiLCJkcmF3ZXJTbHVnIiwiZmlsdGVyT3B0aW9ucyIsIm9uU2VsZWN0Iiwic2VsZWN0ZWRDb2xsZWN0aW9uIiwiaTE4biIsInQiLCJ1c2VUcmFuc2xhdGlvbiIsInBlcm1pc3Npb25zIiwidXNlQXV0aCIsInNldFByZWZlcmVuY2UiLCJ1c2VQcmVmZXJlbmNlcyIsImNsb3NlTW9kYWwiLCJpc01vZGFsT3BlbiIsInVzZU1vZGFsIiwibGltaXQiLCJzZXRMaW1pdCIsInVzZVN0YXRlIiwic29ydCIsInNldFNvcnQiLCJwYWdlIiwic2V0UGFnZSIsInNldFdoZXJlIiwic2VhcmNoIiwic2V0U2VhcmNoIiwiY29tcG9uZW50TWFwIiwidXNlQ29tcG9uZW50TWFwIiwiY29sbGVjdGlvbnMiLCJyb3V0ZXMiLCJhcGkiLCJzZXJ2ZXJVUkwiLCJ1c2VDb25maWciLCJlbmFibGVkQ29sbGVjdGlvbkNvbmZpZ3MiLCJmaWx0ZXIiLCJzbHVnIiwiaW5jbHVkZXMiLCJzZWxlY3RlZENvbGxlY3Rpb25Db25maWciLCJzZXRTZWxlY3RlZENvbGxlY3Rpb25Db25maWciLCJmaW5kIiwiTGlzdCIsInNlbGVjdGVkT3B0aW9uIiwic2V0U2VsZWN0ZWRPcHRpb24iLCJsYWJlbCIsImdldFRyYW5zbGF0aW9uIiwibGFiZWxzIiwic2luZ3VsYXIiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsInRpdGxlRmllbGQiLCJ1c2VVc2VUaXRsZUZpZWxkIiwidXNlRWZmZWN0Iiwic2VsZWN0ZWRDb25maWciLCJwcmVmZXJlbmNlS2V5IiwiRG9jdW1lbnREcmF3ZXIiLCJEb2N1bWVudERyYXdlclRvZ2dsZXIiLCJkb2N1bWVudERyYXdlclNsdWciLCJ1c2VEb2N1bWVudERyYXdlciIsImNvbGxlY3Rpb25TbHVnIiwiY29sbGVjdGlvblBlcm1pc3Npb25zIiwiaGFzQ3JlYXRlUGVybWlzc2lvbiIsImNyZWF0ZSIsInBlcm1pc3Npb24iLCJpc09wZW4iLCJhcGlVUkwiLCJjYWNoZUJ1c3QiLCJkaXNwYXRjaENhY2hlQnVzdCIsInVzZVJlZHVjZXIiLCJzdGF0ZSIsImRhdGEiLCJpc0Vycm9yIiwiaXNMb2FkaW5nIiwiaXNMb2FkaW5nTGlzdCIsInNldFBhcmFtcyIsInVzZVBheWxvYWRBUEkiLCJtb3JlVGhhbk9uZUF2YWlsYWJsZUNvbGxlY3Rpb24iLCJsZW5ndGgiLCJhZG1pbiIsImxpc3RTZWFyY2hhYmxlRmllbGRzIiwidmVyc2lvbnMiLCJwYXJhbXMiLCJjb3B5T2ZXaGVyZSIsImZpbHRlck9wdGlvbiIsInNlYXJjaEFzQ29uZGl0aW9ucyIsIm5hbWUiLCJtYXAiLCJmaWVsZE5hbWUiLCJsaWtlIiwic2VhcmNoRmlsdGVyIiwib3IiLCJkcmFmdHMiLCJkcmFmdCIsIm5ld1ByZWZlcmVuY2VzIiwib25DcmVhdGVOZXciLCJ1c2VDYWxsYmFjayIsImRvYyIsImRvY0lEIiwiaWQiLCJMb2FkaW5nT3ZlcmxheSIsIkxpc3RJbmZvUHJvdmlkZXIiLCJIZWFkZXIiLCJoZWFkZXIiLCJjbGFzc05hbWUiLCJiYXNlQ2xhc3MiLCJkaXYiLCJoMiIsInBsdXJhbCIsIlBpbGwiLCJidXR0b24iLCJvbkNsaWNrIiwidHlwZSIsIlgiLCJkZXNjcmlwdGlvbiIsIlZpZXdEZXNjcmlwdGlvbiIsIkxhYmVsIiwiUmVhY3RTZWxlY3QiLCJvbkNoYW5nZSIsIm9wdGlvbnMiLCJjb2xsIiwiaGFuZGxlUGFnZUNoYW5nZSIsImhhbmRsZVBlclBhZ2VDaGFuZ2UiLCJoYW5kbGVTZWFyY2hDaGFuZ2UiLCJoYW5kbGVTb3J0Q2hhbmdlIiwiaGFuZGxlV2hlcmVDaGFuZ2UiLCJwYWdpbmF0aW9uIiwiZGVmYXVsdExpbWl0IiwibW9kaWZ5U2VhcmNoUGFyYW1zIiwibmV3RG9jdW1lbnRVUkwiLCJUYWJsZUNvbHVtbnNQcm92aWRlciIsImNlbGxQcm9wcyIsImxpbmsiLCJyb3dDb2xsIiwicm93RGF0YSIsImxpc3RQcmVmZXJlbmNlcyIsIm9uU2F2ZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OytCQTZDYUE7OztlQUFBQTs7O3VCQXpDWTs4QkFDTTsrREFDcUM7a0JBSzFDOzhEQUNSO3NFQUNROytCQUNPO21CQUNmO3NCQUNNO3NDQUNRO3dCQUNOOzBCQUNPOzZCQUNGOzZCQUNBO2dDQUNHO3lCQUNIOzZEQUNkO29FQUNPOzhCQUNhO3dFQUNUOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
259
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9MaXN0RHJhd2VyL0RyYXdlckNvbnRlbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAncGF5bG9hZC90eXBlcydcbmltcG9ydCB0eXBlIHsgV2hlcmUgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyB1c2VNb2RhbCB9IGZyb20gJ0BmYWNlbGVzcy11aS9tb2RhbCdcbmltcG9ydCB7IGdldFRyYW5zbGF0aW9uIH0gZnJvbSAnQHBheWxvYWRjbXMvdHJhbnNsYXRpb25zJ1xuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZHVjZXIsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5cbmltcG9ydCB0eXBlIHsgTGlzdFByZWZlcmVuY2VzIH0gZnJvbSAnLi4vVGFibGVDb2x1bW5zJ1xuaW1wb3J0IHR5cGUgeyBMaXN0RHJhd2VyUHJvcHMgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBiYXNlQ2xhc3MgfSBmcm9tICcuJ1xuaW1wb3J0IExhYmVsIGZyb20gJy4uLy4uL2Zvcm1zL0xhYmVsJ1xuaW1wb3J0IHVzZVBheWxvYWRBUEkgZnJvbSAnLi4vLi4vaG9va3MvdXNlUGF5bG9hZEFQSSdcbmltcG9ydCB7IHVzZVVzZVRpdGxlRmllbGQgfSBmcm9tICcuLi8uLi9ob29rcy91c2VVc2VBc1RpdGxlJ1xuaW1wb3J0IHsgWCB9IGZyb20gJy4uLy4uL2ljb25zL1gnXG5pbXBvcnQgeyB1c2VBdXRoIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL0F1dGgnXG5pbXBvcnQgeyB1c2VDb21wb25lbnRNYXAgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvQ29tcG9uZW50TWFwUHJvdmlkZXInXG5pbXBvcnQgeyB1c2VDb25maWcgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvQ29uZmlnJ1xuaW1wb3J0IHsgTGlzdEluZm9Qcm92aWRlciB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9MaXN0SW5mbydcbmltcG9ydCB7IHVzZVByZWZlcmVuY2VzIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL1ByZWZlcmVuY2VzJ1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvVHJhbnNsYXRpb24nXG5pbXBvcnQgeyB1c2VEb2N1bWVudERyYXdlciB9IGZyb20gJy4uL0RvY3VtZW50RHJhd2VyJ1xuaW1wb3J0IHsgTG9hZGluZ092ZXJsYXkgfSBmcm9tICcuLi9Mb2FkaW5nJ1xuaW1wb3J0IFBpbGwgZnJvbSAnLi4vUGlsbCdcbmltcG9ydCBSZWFjdFNlbGVjdCBmcm9tICcuLi9SZWFjdFNlbGVjdCdcbmltcG9ydCB7IFRhYmxlQ29sdW1uc1Byb3ZpZGVyIH0gZnJvbSAnLi4vVGFibGVDb2x1bW5zJ1xuaW1wb3J0IFZpZXdEZXNjcmlwdGlvbiBmcm9tICcuLi9WaWV3RGVzY3JpcHRpb24nXG5cbmNvbnN0IGhvaXN0UXVlcnlQYXJhbXNUb0FuZCA9ICh3aGVyZTogV2hlcmUsIHF1ZXJ5UGFyYW1zOiBXaGVyZSkgPT4ge1xuICBpZiAoJ2FuZCcgaW4gd2hlcmUpIHtcbiAgICB3aGVyZS5hbmQucHVzaChxdWVyeVBhcmFtcylcbiAgfSBlbHNlIGlmICgnb3InIGluIHdoZXJlKSB7XG4gICAgd2hlcmUgPSB7XG4gICAgICBhbmQ6IFt3aGVyZSwgcXVlcnlQYXJhbXNdLFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB3aGVyZSA9IHtcbiAgICAgIGFuZDogW3doZXJlLCBxdWVyeVBhcmFtc10sXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHdoZXJlXG59XG5cbmV4cG9ydCBjb25zdCBMaXN0RHJhd2VyQ29udGVudDogUmVhY3QuRkM8TGlzdERyYXdlclByb3BzPiA9ICh7XG4gIGNvbGxlY3Rpb25TbHVncyxcbiAgY3VzdG9tSGVhZGVyLFxuICBkcmF3ZXJTbHVnLFxuICBmaWx0ZXJPcHRpb25zLFxuICBvblNlbGVjdCxcbiAgc2VsZWN0ZWRDb2xsZWN0aW9uLFxufSkgPT4ge1xuICBjb25zdCB7IGkxOG4sIHQgfSA9IHVzZVRyYW5zbGF0aW9uKClcbiAgY29uc3QgeyBwZXJtaXNzaW9ucyB9ID0gdXNlQXV0aCgpXG4gIGNvbnN0IHsgc2V0UHJlZmVyZW5jZSB9ID0gdXNlUHJlZmVyZW5jZXMoKVxuICBjb25zdCB7IGNsb3NlTW9kYWwsIGlzTW9kYWxPcGVuIH0gPSB1c2VNb2RhbCgpXG4gIGNvbnN0IFtsaW1pdCwgc2V0TGltaXRdID0gdXNlU3RhdGU8bnVtYmVyPigpXG4gIGNvbnN0IFtzb3J0LCBzZXRTb3J0XSA9IHVzZVN0YXRlPHN0cmluZz4obnVsbClcbiAgY29uc3QgW3BhZ2UsIHNldFBhZ2VdID0gdXNlU3RhdGU8bnVtYmVyPigxKVxuICBjb25zdCBbd2hlcmUsIHNldFdoZXJlXSA9IHVzZVN0YXRlPFdoZXJlPihudWxsKVxuICBjb25zdCBbc2VhcmNoLCBzZXRTZWFyY2hdID0gdXNlU3RhdGU8c3RyaW5nPignJylcblxuICBjb25zdCB7IGNvbXBvbmVudE1hcCB9ID0gdXNlQ29tcG9uZW50TWFwKClcblxuICBjb25zdCB7XG4gICAgY29sbGVjdGlvbnMsXG4gICAgcm91dGVzOiB7IGFwaSB9LFxuICAgIHNlcnZlclVSTCxcbiAgfSA9IHVzZUNvbmZpZygpXG5cbiAgY29uc3QgZW5hYmxlZENvbGxlY3Rpb25Db25maWdzID0gY29sbGVjdGlvbnMuZmlsdGVyKCh7IHNsdWcgfSkgPT4ge1xuICAgIHJldHVybiBjb2xsZWN0aW9uU2x1Z3MuaW5jbHVkZXMoc2x1ZylcbiAgfSlcblxuICBjb25zdCBbc2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnLCBzZXRTZWxlY3RlZENvbGxlY3Rpb25Db25maWddID1cbiAgICB1c2VTdGF0ZTxTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnPigoKSA9PiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBlbmFibGVkQ29sbGVjdGlvbkNvbmZpZ3MuZmluZCgoeyBzbHVnIH0pID0+IHNsdWcgPT09IHNlbGVjdGVkQ29sbGVjdGlvbikgfHxcbiAgICAgICAgZW5hYmxlZENvbGxlY3Rpb25Db25maWdzPy5bMF1cbiAgICAgIClcbiAgICB9KVxuXG4gIGNvbnN0IHsgTGlzdCB9ID0gY29tcG9uZW50TWFwLmNvbGxlY3Rpb25zPy5bc2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnPy5zbHVnXSB8fCB7fVxuXG4gIGNvbnN0IFtzZWxlY3RlZE9wdGlvbiwgc2V0U2VsZWN0ZWRPcHRpb25dID0gdXNlU3RhdGU8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+KCgpID0+XG4gICAgc2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnXG4gICAgICA/IHtcbiAgICAgICAgICBsYWJlbDogZ2V0VHJhbnNsYXRpb24oc2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnLmxhYmVscy5zaW5ndWxhciwgaTE4biksXG4gICAgICAgICAgdmFsdWU6IHNlbGVjdGVkQ29sbGVjdGlvbkNvbmZpZy5zbHVnLFxuICAgICAgICB9XG4gICAgICA6IHVuZGVmaW5lZCxcbiAgKVxuXG4gIC8vIGNvbnN0IFtmaWVsZHMsIHNldEZpZWxkc10gPSB1c2VTdGF0ZTxGaWVsZFtdPigoKSA9PiBmb3JtYXRGaWVsZHMoc2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnKSlcblxuICBjb25zdCB0aXRsZUZpZWxkID0gdXNlVXNlVGl0bGVGaWVsZChzZWxlY3RlZENvbGxlY3Rpb25Db25maWcpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBzZXRGaWVsZHMoZm9ybWF0RmllbGRzKHNlbGVjdGVkQ29sbGVjdGlvbkNvbmZpZykpXG4gIH0sIFtzZWxlY3RlZENvbGxlY3Rpb25Db25maWddKVxuXG4gIC8vIGFsbG93IGV4dGVybmFsIGNvbnRyb2wgb2Ygc2VsZWN0ZWQgY29sbGVjdGlvbiwgc2FtZSBhcyB0aGUgaW5pdGlhbCBzdGF0ZSBsb2dpYyBhYm92ZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzZWxlY3RlZENvbGxlY3Rpb24pIHtcbiAgICAgIC8vIGlmIHBhc3NlZCBhIHNlbGVjdGlvbiwgZmluZCBpdCBhbmQgY2hlY2sgaWYgaXQncyBlbmFibGVkXG4gICAgICBjb25zdCBzZWxlY3RlZENvbmZpZyA9XG4gICAgICAgIGVuYWJsZWRDb2xsZWN0aW9uQ29uZmlncy5maW5kKCh7IHNsdWcgfSkgPT4gc2x1ZyA9PT0gc2VsZWN0ZWRDb2xsZWN0aW9uKSB8fFxuICAgICAgICBlbmFibGVkQ29sbGVjdGlvbkNvbmZpZ3M/LlswXVxuICAgICAgc2V0U2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnKHNlbGVjdGVkQ29uZmlnKVxuICAgIH1cbiAgfSwgW3NlbGVjdGVkQ29sbGVjdGlvbiwgZW5hYmxlZENvbGxlY3Rpb25Db25maWdzLCBvblNlbGVjdCwgdF0pXG5cbiAgY29uc3QgcHJlZmVyZW5jZUtleSA9IGAke3NlbGVjdGVkQ29sbGVjdGlvbkNvbmZpZy5zbHVnfS1saXN0YFxuXG4gIC8vIHRoaXMgaXMgdGhlICdjcmVhdGUgbmV3JyBkcmF3ZXJcbiAgY29uc3QgW0RvY3VtZW50RHJhd2VyLCBEb2N1bWVudERyYXdlclRvZ2dsZXIsIHsgZHJhd2VyU2x1ZzogZG9jdW1lbnREcmF3ZXJTbHVnIH1dID1cbiAgICB1c2VEb2N1bWVudERyYXdlcih7XG4gICAgICBjb2xsZWN0aW9uU2x1Zzogc2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnLnNsdWcsXG4gICAgfSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzZWxlY3RlZE9wdGlvbikge1xuICAgICAgc2V0U2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnKFxuICAgICAgICBlbmFibGVkQ29sbGVjdGlvbkNvbmZpZ3MuZmluZCgoeyBzbHVnIH0pID0+IHNlbGVjdGVkT3B0aW9uLnZhbHVlID09PSBzbHVnKSxcbiAgICAgIClcbiAgICB9XG4gIH0sIFtzZWxlY3RlZE9wdGlvbiwgZW5hYmxlZENvbGxlY3Rpb25Db25maWdzXSlcblxuICBjb25zdCBjb2xsZWN0aW9uUGVybWlzc2lvbnMgPSBwZXJtaXNzaW9ucz8uY29sbGVjdGlvbnM/LltzZWxlY3RlZENvbGxlY3Rpb25Db25maWc/LnNsdWddXG4gIGNvbnN0IGhhc0NyZWF0ZVBlcm1pc3Npb24gPSBjb2xsZWN0aW9uUGVybWlzc2lvbnM/LmNyZWF0ZT8ucGVybWlzc2lvblxuXG4gIC8vIElmIG1vZGFsIGlzIG9wZW4sIGdldCBhY3RpdmUgcGFnZSBvZiB1cGxvYWQgZ2FsbGVyeVxuICBjb25zdCBpc09wZW4gPSBpc01vZGFsT3BlbihkcmF3ZXJTbHVnKVxuICBjb25zdCBhcGlVUkwgPSBpc09wZW4gPyBgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7c2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnLnNsdWd9YCA6IG51bGxcbiAgY29uc3QgW2NhY2hlQnVzdCwgZGlzcGF0Y2hDYWNoZUJ1c3RdID0gdXNlUmVkdWNlcigoc3RhdGUpID0+IHN0YXRlICsgMSwgMCkgLy8gdXNlZCB0byBmb3JjZSBhIHJlLWZldGNoIGV2ZW4gd2hlbiBhcGlVUkwgaXMgdW5jaGFuZ2VkXG4gIGNvbnN0IFt7IGRhdGEsIGlzRXJyb3IsIGlzTG9hZGluZzogaXNMb2FkaW5nTGlzdCB9LCB7IHNldFBhcmFtcyB9XSA9IHVzZVBheWxvYWRBUEkoYXBpVVJMLCB7fSlcbiAgY29uc3QgbW9yZVRoYW5PbmVBdmFpbGFibGVDb2xsZWN0aW9uID0gZW5hYmxlZENvbGxlY3Rpb25Db25maWdzLmxlbmd0aCA+IDFcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHsgc2x1ZywgYWRtaW46IHsgbGlzdFNlYXJjaGFibGVGaWVsZHMgfSA9IHt9LCB2ZXJzaW9ucyB9ID0gc2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnXG4gICAgY29uc3QgcGFyYW1zOiB7XG4gICAgICBjYWNoZUJ1c3Q/OiBudW1iZXJcbiAgICAgIGRyYWZ0Pzogc3RyaW5nXG4gICAgICBsaW1pdD86IG51bWJlclxuICAgICAgcGFnZT86IG51bWJlclxuICAgICAgc2VhcmNoPzogc3RyaW5nXG4gICAgICBzb3J0Pzogc3RyaW5nXG4gICAgICB3aGVyZT86IHVua25vd25cbiAgICB9ID0ge31cblxuICAgIGxldCBjb3B5T2ZXaGVyZSA9IHsgLi4uKHdoZXJlIHx8IHt9KSB9XG4gICAgY29uc3QgZmlsdGVyT3B0aW9uID0gZmlsdGVyT3B0aW9ucz8uW3NsdWddXG5cbiAgICBpZiAoZmlsdGVyT3B0aW9ucyAmJiB0eXBlb2YgZmlsdGVyT3B0aW9uICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIGNvcHlPZldoZXJlID0gaG9pc3RRdWVyeVBhcmFtc1RvQW5kKGNvcHlPZldoZXJlLCBmaWx0ZXJPcHRpb24pXG4gICAgfVxuXG4gICAgaWYgKHNlYXJjaCkge1xuICAgICAgY29uc3Qgc2VhcmNoQXNDb25kaXRpb25zID0gKGxpc3RTZWFyY2hhYmxlRmllbGRzIHx8IFt0aXRsZUZpZWxkPy5uYW1lXSkubWFwKChmaWVsZE5hbWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBbZmllbGROYW1lXToge1xuICAgICAgICAgICAgbGlrZTogc2VhcmNoLFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgIH0sIFtdKVxuXG4gICAgICBpZiAoc2VhcmNoQXNDb25kaXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoRmlsdGVyOiBXaGVyZSA9IHtcbiAgICAgICAgICBvcjogWy4uLnNlYXJjaEFzQ29uZGl0aW9uc10sXG4gICAgICAgIH1cblxuICAgICAgICBjb3B5T2ZXaGVyZSA9IGhvaXN0UXVlcnlQYXJhbXNUb0FuZChjb3B5T2ZXaGVyZSwgc2VhcmNoRmlsdGVyKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYWdlKSBwYXJhbXMucGFnZSA9IHBhZ2VcbiAgICBpZiAoc29ydCkgcGFyYW1zLnNvcnQgPSBzb3J0XG4gICAgaWYgKGNhY2hlQnVzdCkgcGFyYW1zLmNhY2hlQnVzdCA9IGNhY2hlQnVzdFxuICAgIGlmIChjb3B5T2ZXaGVyZSkgcGFyYW1zLndoZXJlID0gY29weU9mV2hlcmVcbiAgICBpZiAodmVyc2lvbnM/LmRyYWZ0cykgcGFyYW1zLmRyYWZ0ID0gJ3RydWUnXG5cbiAgICBzZXRQYXJhbXMocGFyYW1zKVxuICB9LCBbXG4gICAgcGFnZSxcbiAgICBzb3J0LFxuICAgIHdoZXJlLFxuICAgIHNlYXJjaCxcbiAgICBjYWNoZUJ1c3QsXG4gICAgZmlsdGVyT3B0aW9ucyxcbiAgICBzZWxlY3RlZENvbGxlY3Rpb25Db25maWcsXG4gICAgdCxcbiAgICBzZXRQYXJhbXMsXG4gICAgdGl0bGVGaWVsZD8ubmFtZSxcbiAgXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG5ld1ByZWZlcmVuY2VzID0ge1xuICAgICAgbGltaXQsXG4gICAgICBzb3J0LFxuICAgIH1cblxuICAgIHNldFByZWZlcmVuY2UocHJlZmVyZW5jZUtleSwgbmV3UHJlZmVyZW5jZXMsIHRydWUpXG4gIH0sIFtzb3J0LCBsaW1pdCwgc2V0UHJlZmVyZW5jZSwgcHJlZmVyZW5jZUtleV0pXG5cbiAgY29uc3Qgb25DcmVhdGVOZXcgPSB1c2VDYWxsYmFjayhcbiAgICAoeyBkb2MgfSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBvblNlbGVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvblNlbGVjdCh7XG4gICAgICAgICAgY29sbGVjdGlvblNsdWc6IHNlbGVjdGVkQ29sbGVjdGlvbkNvbmZpZy5zbHVnLFxuICAgICAgICAgIGRvY0lEOiBkb2MuaWQsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBkaXNwYXRjaENhY2hlQnVzdCgpXG4gICAgICBjbG9zZU1vZGFsKGRvY3VtZW50RHJhd2VyU2x1ZylcbiAgICAgIGNsb3NlTW9kYWwoZHJhd2VyU2x1ZylcbiAgICB9LFxuICAgIFtjbG9zZU1vZGFsLCBkb2N1bWVudERyYXdlclNsdWcsIGRyYXdlclNsdWcsIG9uU2VsZWN0LCBzZWxlY3RlZENvbGxlY3Rpb25Db25maWddLFxuICApXG5cbiAgaWYgKCFzZWxlY3RlZENvbGxlY3Rpb25Db25maWcgfHwgaXNFcnJvcikge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBpZiAoaXNMb2FkaW5nTGlzdCkge1xuICAgIHJldHVybiA8TG9hZGluZ092ZXJsYXkgLz5cbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPExpc3RJbmZvUHJvdmlkZXJcbiAgICAgIEhlYWRlcj17XG4gICAgICAgIDxoZWFkZXIgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19oZWFkZXJgfT5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9faGVhZGVyLXdyYXBgfT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19oZWFkZXItY29udGVudGB9PlxuICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19oZWFkZXItdGV4dGB9PlxuICAgICAgICAgICAgICAgIHshY3VzdG9tSGVhZGVyXG4gICAgICAgICAgICAgICAgICA/IGdldFRyYW5zbGF0aW9uKHNlbGVjdGVkQ29sbGVjdGlvbkNvbmZpZz8ubGFiZWxzPy5wbHVyYWwsIGkxOG4pXG4gICAgICAgICAgICAgICAgICA6IGN1c3RvbUhlYWRlcn1cbiAgICAgICAgICAgICAgPC9oMj5cbiAgICAgICAgICAgICAge2hhc0NyZWF0ZVBlcm1pc3Npb24gJiYgKFxuICAgICAgICAgICAgICAgIDxEb2N1bWVudERyYXdlclRvZ2dsZXIgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19jcmVhdGUtbmV3LWJ1dHRvbmB9PlxuICAgICAgICAgICAgICAgICAgPFBpbGw+e3QoJ2dlbmVyYWw6Y3JlYXRlTmV3Jyl9PC9QaWxsPlxuICAgICAgICAgICAgICAgIDwvRG9jdW1lbnREcmF3ZXJUb2dnbGVyPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9faGVhZGVyLWNsb3NlYH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGNsb3NlTW9kYWwoZHJhd2VyU2x1ZylcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxYIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7c2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnPy5hZG1pbj8uZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3N1Yi1oZWFkZXJgfT5cbiAgICAgICAgICAgICAgPFZpZXdEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbj17c2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnLmFkbWluLmRlc2NyaXB0aW9ufSAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7bW9yZVRoYW5PbmVBdmFpbGFibGVDb2xsZWN0aW9uICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19zZWxlY3QtY29sbGVjdGlvbi13cmFwYH0+XG4gICAgICAgICAgICAgIDxMYWJlbCBsYWJlbD17dCgndXBsb2FkOnNlbGVjdENvbGxlY3Rpb25Ub0Jyb3dzZScpfSAvPlxuICAgICAgICAgICAgICA8UmVhY3RTZWxlY3RcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3NlbGVjdC1jb2xsZWN0aW9uYH1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17c2V0U2VsZWN0ZWRPcHRpb259IC8vIHRoaXMgaXMgb25seSBjaGFuZ2luZyB0aGUgb3B0aW9ucyB3aGljaCBpcyBub3QgcmVydW5uaW5nIG15IGVmZmVjdFxuICAgICAgICAgICAgICAgIG9wdGlvbnM9e2VuYWJsZWRDb2xsZWN0aW9uQ29uZmlncy5tYXAoKGNvbGwpID0+ICh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogZ2V0VHJhbnNsYXRpb24oY29sbC5sYWJlbHMuc2luZ3VsYXIsIGkxOG4pLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbGwuc2x1ZyxcbiAgICAgICAgICAgICAgICB9KSl9XG4gICAgICAgICAgICAgICAgdmFsdWU9e3NlbGVjdGVkT3B0aW9ufVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9oZWFkZXI+XG4gICAgICB9XG4gICAgICBjb2xsZWN0aW9uU2x1Zz17c2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnLnNsdWd9XG4gICAgICBkYXRhPXtkYXRhfVxuICAgICAgaGFuZGxlUGFnZUNoYW5nZT17c2V0UGFnZX1cbiAgICAgIGhhbmRsZVBlclBhZ2VDaGFuZ2U9e3NldExpbWl0fVxuICAgICAgaGFuZGxlU2VhcmNoQ2hhbmdlPXtzZXRTZWFyY2h9XG4gICAgICBoYW5kbGVTb3J0Q2hhbmdlPXtzZXRTb3J0fVxuICAgICAgaGFuZGxlV2hlcmVDaGFuZ2U9e3NldFdoZXJlfVxuICAgICAgaGFzQ3JlYXRlUGVybWlzc2lvbj17aGFzQ3JlYXRlUGVybWlzc2lvbn1cbiAgICAgIGxpbWl0PXtsaW1pdCB8fCBzZWxlY3RlZENvbGxlY3Rpb25Db25maWc/LmFkbWluPy5wYWdpbmF0aW9uPy5kZWZhdWx0TGltaXR9XG4gICAgICBtb2RpZnlTZWFyY2hQYXJhbXM9e2ZhbHNlfVxuICAgICAgbmV3RG9jdW1lbnRVUkw9e251bGx9XG4gICAgICBzZXRMaW1pdD17c2V0TGltaXR9XG4gICAgICBzZXRTb3J0PXtzZXRTb3J0fVxuICAgICAgdGl0bGVGaWVsZD17dGl0bGVGaWVsZH1cbiAgICA+XG4gICAgICA8VGFibGVDb2x1bW5zUHJvdmlkZXJcbiAgICAgICAgY2VsbFByb3BzPXtbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiBgJHtiYXNlQ2xhc3N9X19maXJzdC1jZWxsYCxcbiAgICAgICAgICAgIGxpbms6IGZhbHNlLFxuICAgICAgICAgICAgb25DbGljazogKHsgY29sbGVjdGlvblNsdWc6IHJvd0NvbGwsIHJvd0RhdGEgfSkgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIG9uU2VsZWN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgb25TZWxlY3Qoe1xuICAgICAgICAgICAgICAgICAgY29sbGVjdGlvblNsdWc6IHJvd0NvbGwsXG4gICAgICAgICAgICAgICAgICBkb2NJRDogcm93RGF0YS5pZCBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdfVxuICAgICAgICBjb2xsZWN0aW9uU2x1Zz17c2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnLnNsdWd9XG4gICAgICAgIGxpc3RQcmVmZXJlbmNlcz17e30gYXMgTGlzdFByZWZlcmVuY2VzfSAvLyBUT0RPOiBnZXQgbGlzdCBwcmVmZXJlbmNlc1xuICAgICAgPlxuICAgICAgICB7TGlzdH1cbiAgICAgICAgPERvY3VtZW50RHJhd2VyIG9uU2F2ZT17b25DcmVhdGVOZXd9IC8+XG4gICAgICA8L1RhYmxlQ29sdW1uc1Byb3ZpZGVyPlxuICAgIDwvTGlzdEluZm9Qcm92aWRlcj5cbiAgKVxufVxuIl0sIm5hbWVzIjpbInVzZU1vZGFsIiwiZ2V0VHJhbnNsYXRpb24iLCJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlUmVkdWNlciIsInVzZVN0YXRlIiwiYmFzZUNsYXNzIiwiTGFiZWwiLCJ1c2VQYXlsb2FkQVBJIiwidXNlVXNlVGl0bGVGaWVsZCIsIlgiLCJ1c2VBdXRoIiwidXNlQ29tcG9uZW50TWFwIiwidXNlQ29uZmlnIiwiTGlzdEluZm9Qcm92aWRlciIsInVzZVByZWZlcmVuY2VzIiwidXNlVHJhbnNsYXRpb24iLCJ1c2VEb2N1bWVudERyYXdlciIsIkxvYWRpbmdPdmVybGF5IiwiUGlsbCIsIlJlYWN0U2VsZWN0IiwiVGFibGVDb2x1bW5zUHJvdmlkZXIiLCJWaWV3RGVzY3JpcHRpb24iLCJob2lzdFF1ZXJ5UGFyYW1zVG9BbmQiLCJ3aGVyZSIsInF1ZXJ5UGFyYW1zIiwiYW5kIiwicHVzaCIsIkxpc3REcmF3ZXJDb250ZW50IiwiY29sbGVjdGlvblNsdWdzIiwiY3VzdG9tSGVhZGVyIiwiZHJhd2VyU2x1ZyIsImZpbHRlck9wdGlvbnMiLCJvblNlbGVjdCIsInNlbGVjdGVkQ29sbGVjdGlvbiIsImkxOG4iLCJ0IiwicGVybWlzc2lvbnMiLCJzZXRQcmVmZXJlbmNlIiwiY2xvc2VNb2RhbCIsImlzTW9kYWxPcGVuIiwibGltaXQiLCJzZXRMaW1pdCIsInNvcnQiLCJzZXRTb3J0IiwicGFnZSIsInNldFBhZ2UiLCJzZXRXaGVyZSIsInNlYXJjaCIsInNldFNlYXJjaCIsImNvbXBvbmVudE1hcCIsImNvbGxlY3Rpb25zIiwicm91dGVzIiwiYXBpIiwic2VydmVyVVJMIiwiZW5hYmxlZENvbGxlY3Rpb25Db25maWdzIiwiZmlsdGVyIiwic2x1ZyIsImluY2x1ZGVzIiwic2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnIiwic2V0U2VsZWN0ZWRDb2xsZWN0aW9uQ29uZmlnIiwiZmluZCIsIkxpc3QiLCJzZWxlY3RlZE9wdGlvbiIsInNldFNlbGVjdGVkT3B0aW9uIiwibGFiZWwiLCJsYWJlbHMiLCJzaW5ndWxhciIsInZhbHVlIiwidW5kZWZpbmVkIiwidGl0bGVGaWVsZCIsInNlbGVjdGVkQ29uZmlnIiwicHJlZmVyZW5jZUtleSIsIkRvY3VtZW50RHJhd2VyIiwiRG9jdW1lbnREcmF3ZXJUb2dnbGVyIiwiZG9jdW1lbnREcmF3ZXJTbHVnIiwiY29sbGVjdGlvblNsdWciLCJjb2xsZWN0aW9uUGVybWlzc2lvbnMiLCJoYXNDcmVhdGVQZXJtaXNzaW9uIiwiY3JlYXRlIiwicGVybWlzc2lvbiIsImlzT3BlbiIsImFwaVVSTCIsImNhY2hlQnVzdCIsImRpc3BhdGNoQ2FjaGVCdXN0Iiwic3RhdGUiLCJkYXRhIiwiaXNFcnJvciIsImlzTG9hZGluZyIsImlzTG9hZGluZ0xpc3QiLCJzZXRQYXJhbXMiLCJtb3JlVGhhbk9uZUF2YWlsYWJsZUNvbGxlY3Rpb24iLCJsZW5ndGgiLCJhZG1pbiIsImxpc3RTZWFyY2hhYmxlRmllbGRzIiwidmVyc2lvbnMiLCJwYXJhbXMiLCJjb3B5T2ZXaGVyZSIsImZpbHRlck9wdGlvbiIsInNlYXJjaEFzQ29uZGl0aW9ucyIsIm5hbWUiLCJtYXAiLCJmaWVsZE5hbWUiLCJsaWtlIiwic2VhcmNoRmlsdGVyIiwib3IiLCJkcmFmdHMiLCJkcmFmdCIsIm5ld1ByZWZlcmVuY2VzIiwib25DcmVhdGVOZXciLCJkb2MiLCJkb2NJRCIsImlkIiwiSGVhZGVyIiwiaGVhZGVyIiwiY2xhc3NOYW1lIiwiZGl2IiwiaDIiLCJwbHVyYWwiLCJidXR0b24iLCJvbkNsaWNrIiwidHlwZSIsImRlc2NyaXB0aW9uIiwib25DaGFuZ2UiLCJvcHRpb25zIiwiY29sbCIsImhhbmRsZVBhZ2VDaGFuZ2UiLCJoYW5kbGVQZXJQYWdlQ2hhbmdlIiwiaGFuZGxlU2VhcmNoQ2hhbmdlIiwiaGFuZGxlU29ydENoYW5nZSIsImhhbmRsZVdoZXJlQ2hhbmdlIiwicGFnaW5hdGlvbiIsImRlZmF1bHRMaW1pdCIsIm1vZGlmeVNlYXJjaFBhcmFtcyIsIm5ld0RvY3VtZW50VVJMIiwiY2VsbFByb3BzIiwibGluayIsInJvd0NvbGwiLCJyb3dEYXRhIiwibGlzdFByZWZlcmVuY2VzIiwib25TYXZlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUlBLFNBQVNBLFFBQVEsUUFBUSxxQkFBb0I7QUFDN0MsU0FBU0MsY0FBYyxRQUFRLDJCQUEwQjtBQUN6RCxPQUFPQyxTQUFTQyxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsVUFBVSxFQUFFQyxRQUFRLFFBQVEsUUFBTztBQUszRSxTQUFTQyxTQUFTLFFBQVEsSUFBRztBQUM3QixP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
@@ -1,83 +1,15 @@
1
1
  'use client';
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- function _export(target, all) {
7
- for(var name in all)Object.defineProperty(target, name, {
8
- enumerable: true,
9
- get: all[name]
10
- });
11
- }
12
- _export(exports, {
13
- ListDrawer: function() {
14
- return ListDrawer;
15
- },
16
- ListDrawerToggler: function() {
17
- return ListDrawerToggler;
18
- },
19
- baseClass: function() {
20
- return baseClass;
21
- },
22
- formatListDrawerSlug: function() {
23
- return formatListDrawerSlug;
24
- },
25
- useListDrawer: function() {
26
- return useListDrawer;
27
- }
28
- });
29
- const _modal = require("@faceless-ui/modal");
30
- const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
31
- const _Config = require("../../providers/Config");
32
- const _EditDepth = require("../../providers/EditDepth");
33
- const _Drawer = require("../Drawer");
34
- const _DrawerContent = require("./DrawerContent");
35
- require("./index.scss");
36
- function _getRequireWildcardCache(nodeInterop) {
37
- if (typeof WeakMap !== "function") return null;
38
- var cacheBabelInterop = new WeakMap();
39
- var cacheNodeInterop = new WeakMap();
40
- return (_getRequireWildcardCache = function(nodeInterop) {
41
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
42
- })(nodeInterop);
43
- }
44
- function _interop_require_wildcard(obj, nodeInterop) {
45
- if (!nodeInterop && obj && obj.__esModule) {
46
- return obj;
47
- }
48
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
49
- return {
50
- default: obj
51
- };
52
- }
53
- var cache = _getRequireWildcardCache(nodeInterop);
54
- if (cache && cache.has(obj)) {
55
- return cache.get(obj);
56
- }
57
- var newObj = {
58
- __proto__: null
59
- };
60
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
61
- for(var key in obj){
62
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
63
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
64
- if (desc && (desc.get || desc.set)) {
65
- Object.defineProperty(newObj, key, desc);
66
- } else {
67
- newObj[key] = obj[key];
68
- }
69
- }
70
- }
71
- newObj.default = obj;
72
- if (cache) {
73
- cache.set(obj, newObj);
74
- }
75
- return newObj;
76
- }
77
- const baseClass = 'list-drawer';
78
- const formatListDrawerSlug = ({ depth, uuid })=>`list-drawer_${depth}_${uuid}`;
79
- const ListDrawerToggler = ({ children, className, disabled, drawerSlug, ...rest })=>{
80
- return /*#__PURE__*/ _react.default.createElement(_Drawer.DrawerToggler, {
2
+ import { useModal } from '@faceless-ui/modal';
3
+ import React, { useCallback, useEffect, useId, useMemo, useState } from 'react';
4
+ import { useConfig } from '../../providers/Config';
5
+ import { useEditDepth } from '../../providers/EditDepth';
6
+ import { Drawer, DrawerToggler } from '../Drawer';
7
+ import { ListDrawerContent } from './DrawerContent';
8
+ import './index.scss';
9
+ export const baseClass = 'list-drawer';
10
+ export const formatListDrawerSlug = ({ depth, uuid })=>`list-drawer_${depth}_${uuid}`;
11
+ export const ListDrawerToggler = ({ children, className, disabled, drawerSlug, ...rest })=>{
12
+ return /*#__PURE__*/ React.createElement(DrawerToggler, {
81
13
  className: [
82
14
  className,
83
15
  `${baseClass}__toggler`
@@ -87,33 +19,33 @@ const ListDrawerToggler = ({ children, className, disabled, drawerSlug, ...rest
87
19
  ...rest
88
20
  }, children);
89
21
  };
90
- const ListDrawer = (props)=>{
22
+ export const ListDrawer = (props)=>{
91
23
  const { drawerSlug } = props;
92
- return /*#__PURE__*/ _react.default.createElement(_Drawer.Drawer, {
24
+ return /*#__PURE__*/ React.createElement(Drawer, {
93
25
  Header: null,
94
26
  className: baseClass,
95
27
  gutter: false,
96
28
  slug: drawerSlug
97
- }, /*#__PURE__*/ _react.default.createElement(_DrawerContent.ListDrawerContent, props));
29
+ }, /*#__PURE__*/ React.createElement(ListDrawerContent, props));
98
30
  };
99
- const useListDrawer = ({ collectionSlugs: collectionSlugsFromProps, filterOptions, selectedCollection, uploads })=>{
100
- const { collections } = (0, _Config.useConfig)();
101
- const drawerDepth = (0, _EditDepth.useEditDepth)();
102
- const uuid = (0, _react.useId)();
103
- const { closeModal, modalState, openModal, toggleModal } = (0, _modal.useModal)();
104
- const [isOpen, setIsOpen] = (0, _react.useState)(false);
105
- const [collectionSlugs, setCollectionSlugs] = (0, _react.useState)(collectionSlugsFromProps);
31
+ export const useListDrawer = ({ collectionSlugs: collectionSlugsFromProps, filterOptions, selectedCollection, uploads })=>{
32
+ const { collections } = useConfig();
33
+ const drawerDepth = useEditDepth();
34
+ const uuid = useId();
35
+ const { closeModal, modalState, openModal, toggleModal } = useModal();
36
+ const [isOpen, setIsOpen] = useState(false);
37
+ const [collectionSlugs, setCollectionSlugs] = useState(collectionSlugsFromProps);
106
38
  const drawerSlug = formatListDrawerSlug({
107
39
  depth: drawerDepth,
108
40
  uuid
109
41
  });
110
- (0, _react.useEffect)(()=>{
42
+ useEffect(()=>{
111
43
  setIsOpen(Boolean(modalState[drawerSlug]?.isOpen));
112
44
  }, [
113
45
  modalState,
114
46
  drawerSlug
115
47
  ]);
116
- (0, _react.useEffect)(()=>{
48
+ useEffect(()=>{
117
49
  if (!collectionSlugs || collectionSlugs.length === 0) {
118
50
  const filteredCollectionSlugs = collections.filter(({ upload })=>{
119
51
  if (uploads) {
@@ -128,26 +60,26 @@ const useListDrawer = ({ collectionSlugs: collectionSlugsFromProps, filterOption
128
60
  uploads,
129
61
  collections
130
62
  ]);
131
- const toggleDrawer = (0, _react.useCallback)(()=>{
63
+ const toggleDrawer = useCallback(()=>{
132
64
  toggleModal(drawerSlug);
133
65
  }, [
134
66
  toggleModal,
135
67
  drawerSlug
136
68
  ]);
137
- const closeDrawer = (0, _react.useCallback)(()=>{
69
+ const closeDrawer = useCallback(()=>{
138
70
  closeModal(drawerSlug);
139
71
  }, [
140
72
  drawerSlug,
141
73
  closeModal
142
74
  ]);
143
- const openDrawer = (0, _react.useCallback)(()=>{
75
+ const openDrawer = useCallback(()=>{
144
76
  openModal(drawerSlug);
145
77
  }, [
146
78
  drawerSlug,
147
79
  openModal
148
80
  ]);
149
- const MemoizedDrawer = (0, _react.useMemo)(()=>{
150
- return (props)=>/*#__PURE__*/ _react.default.createElement(ListDrawer, {
81
+ const MemoizedDrawer = useMemo(()=>{
82
+ return (props)=>/*#__PURE__*/ React.createElement(ListDrawer, {
151
83
  ...props,
152
84
  closeDrawer: closeDrawer,
153
85
  collectionSlugs: collectionSlugs,
@@ -165,15 +97,15 @@ const useListDrawer = ({ collectionSlugs: collectionSlugsFromProps, filterOption
165
97
  selectedCollection,
166
98
  filterOptions
167
99
  ]);
168
- const MemoizedDrawerToggler = (0, _react.useMemo)(()=>{
169
- return (props)=>/*#__PURE__*/ _react.default.createElement(ListDrawerToggler, {
100
+ const MemoizedDrawerToggler = useMemo(()=>{
101
+ return (props)=>/*#__PURE__*/ React.createElement(ListDrawerToggler, {
170
102
  ...props,
171
103
  drawerSlug: drawerSlug
172
104
  });
173
105
  }, [
174
106
  drawerSlug
175
107
  ]);
176
- const MemoizedDrawerState = (0, _react.useMemo)(()=>({
108
+ const MemoizedDrawerState = useMemo(()=>({
177
109
  closeDrawer,
178
110
  drawerDepth,
179
111
  drawerSlug,
@@ -195,4 +127,4 @@ const useListDrawer = ({ collectionSlugs: collectionSlugsFromProps, filterOption
195
127
  ];
196
128
  };
197
129
 
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9MaXN0RHJhd2VyL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB7IHVzZU1vZGFsIH0gZnJvbSAnQGZhY2VsZXNzLXVpL21vZGFsJ1xuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZUlkLCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgdHlwZSB7IExpc3REcmF3ZXJQcm9wcywgTGlzdFRvZ2dsZXJQcm9wcywgVXNlTGlzdERyYXdlciB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB7IHVzZUNvbmZpZyB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9Db25maWcnXG5pbXBvcnQgeyB1c2VFZGl0RGVwdGggfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvRWRpdERlcHRoJ1xuaW1wb3J0IHsgRHJhd2VyLCBEcmF3ZXJUb2dnbGVyIH0gZnJvbSAnLi4vRHJhd2VyJ1xuaW1wb3J0IHsgTGlzdERyYXdlckNvbnRlbnQgfSBmcm9tICcuL0RyYXdlckNvbnRlbnQnXG5pbXBvcnQgJy4vaW5kZXguc2NzcydcblxuZXhwb3J0IGNvbnN0IGJhc2VDbGFzcyA9ICdsaXN0LWRyYXdlcidcblxuZXhwb3J0IGNvbnN0IGZvcm1hdExpc3REcmF3ZXJTbHVnID0gKHtcbiAgZGVwdGgsXG4gIHV1aWQsXG59OiB7XG4gIGRlcHRoOiBudW1iZXJcbiAgdXVpZDogc3RyaW5nIC8vIHN1cHBseSB3aGVuIGNyZWF0aW5nIGEgbmV3IGRvY3VtZW50IGFuZCBubyBpZCBpcyBhdmFpbGFibGVcbn0pID0+IGBsaXN0LWRyYXdlcl8ke2RlcHRofV8ke3V1aWR9YFxuXG5leHBvcnQgY29uc3QgTGlzdERyYXdlclRvZ2dsZXI6IFJlYWN0LkZDPExpc3RUb2dnbGVyUHJvcHM+ID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgZGlzYWJsZWQsXG4gIGRyYXdlclNsdWcsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8RHJhd2VyVG9nZ2xlclxuICAgICAgY2xhc3NOYW1lPXtbY2xhc3NOYW1lLCBgJHtiYXNlQ2xhc3N9X190b2dnbGVyYF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKX1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIHNsdWc9e2RyYXdlclNsdWd9XG4gICAgICB7Li4ucmVzdH1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9EcmF3ZXJUb2dnbGVyPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBMaXN0RHJhd2VyOiBSZWFjdC5GQzxMaXN0RHJhd2VyUHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgZHJhd2VyU2x1ZyB9ID0gcHJvcHNcblxuICByZXR1cm4gKFxuICAgIDxEcmF3ZXIgSGVhZGVyPXtudWxsfSBjbGFzc05hbWU9e2Jhc2VDbGFzc30gZ3V0dGVyPXtmYWxzZX0gc2x1Zz17ZHJhd2VyU2x1Z30+XG4gICAgICA8TGlzdERyYXdlckNvbnRlbnQgey4uLnByb3BzfSAvPlxuICAgIDwvRHJhd2VyPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCB1c2VMaXN0RHJhd2VyOiBVc2VMaXN0RHJhd2VyID0gKHtcbiAgY29sbGVjdGlvblNsdWdzOiBjb2xsZWN0aW9uU2x1Z3NGcm9tUHJvcHMsXG4gIGZpbHRlck9wdGlvbnMsXG4gIHNlbGVjdGVkQ29sbGVjdGlvbixcbiAgdXBsb2Fkcyxcbn0pID0+IHtcbiAgY29uc3QgeyBjb2xsZWN0aW9ucyB9ID0gdXNlQ29uZmlnKClcbiAgY29uc3QgZHJhd2VyRGVwdGggPSB1c2VFZGl0RGVwdGgoKVxuICBjb25zdCB1dWlkID0gdXNlSWQoKVxuICBjb25zdCB7IGNsb3NlTW9kYWwsIG1vZGFsU3RhdGUsIG9wZW5Nb2RhbCwgdG9nZ2xlTW9kYWwgfSA9IHVzZU1vZGFsKClcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbY29sbGVjdGlvblNsdWdzLCBzZXRDb2xsZWN0aW9uU2x1Z3NdID0gdXNlU3RhdGUoY29sbGVjdGlvblNsdWdzRnJvbVByb3BzKVxuXG4gIGNvbnN0IGRyYXdlclNsdWcgPSBmb3JtYXRMaXN0RHJhd2VyU2x1Zyh7XG4gICAgZGVwdGg6IGRyYXdlckRlcHRoLFxuICAgIHV1aWQsXG4gIH0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJc09wZW4oQm9vbGVhbihtb2RhbFN0YXRlW2RyYXdlclNsdWddPy5pc09wZW4pKVxuICB9LCBbbW9kYWxTdGF0ZSwgZHJhd2VyU2x1Z10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWNvbGxlY3Rpb25TbHVncyB8fCBjb2xsZWN0aW9uU2x1Z3MubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJlZENvbGxlY3Rpb25TbHVncyA9IGNvbGxlY3Rpb25zLmZpbHRlcigoeyB1cGxvYWQgfSkgPT4ge1xuICAgICAgICBpZiAodXBsb2Fkcykge1xuICAgICAgICAgIHJldHVybiBCb29sZWFuKHVwbG9hZCkgPT09IHRydWVcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSlcblxuICAgICAgc2V0Q29sbGVjdGlvblNsdWdzKGZpbHRlcmVkQ29sbGVjdGlvblNsdWdzLm1hcCgoeyBzbHVnIH0pID0+IHNsdWcpKVxuICAgIH1cbiAgfSwgW2NvbGxlY3Rpb25TbHVncywgdXBsb2FkcywgY29sbGVjdGlvbnNdKVxuICBjb25zdCB0b2dnbGVEcmF3ZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdG9nZ2xlTW9kYWwoZHJhd2VyU2x1ZylcbiAgfSwgW3RvZ2dsZU1vZGFsLCBkcmF3ZXJTbHVnXSlcblxuICBjb25zdCBjbG9zZURyYXdlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjbG9zZU1vZGFsKGRyYXdlclNsdWcpXG4gIH0sIFtkcmF3ZXJTbHVnLCBjbG9zZU1vZGFsXSlcblxuICBjb25zdCBvcGVuRHJhd2VyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIG9wZW5Nb2RhbChkcmF3ZXJTbHVnKVxuICB9LCBbZHJhd2VyU2x1Zywgb3Blbk1vZGFsXSlcblxuICBjb25zdCBNZW1vaXplZERyYXdlciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiAocHJvcHMpID0+IChcbiAgICAgIDxMaXN0RHJhd2VyXG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgY2xvc2VEcmF3ZXI9e2Nsb3NlRHJhd2VyfVxuICAgICAgICBjb2xsZWN0aW9uU2x1Z3M9e2NvbGxlY3Rpb25TbHVnc31cbiAgICAgICAgZHJhd2VyU2x1Zz17ZHJhd2VyU2x1Z31cbiAgICAgICAgZmlsdGVyT3B0aW9ucz17ZmlsdGVyT3B0aW9uc31cbiAgICAgICAga2V5PXtkcmF3ZXJTbHVnfVxuICAgICAgICBzZWxlY3RlZENvbGxlY3Rpb249e3NlbGVjdGVkQ29sbGVjdGlvbn1cbiAgICAgICAgdXBsb2Fkcz17dXBsb2Fkc31cbiAgICAgIC8+XG4gICAgKVxuICB9LCBbZHJhd2VyU2x1ZywgY29sbGVjdGlvblNsdWdzLCB1cGxvYWRzLCBjbG9zZURyYXdlciwgc2VsZWN0ZWRDb2xsZWN0aW9uLCBmaWx0ZXJPcHRpb25zXSlcblxuICBjb25zdCBNZW1vaXplZERyYXdlclRvZ2dsZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gKHByb3BzKSA9PiA8TGlzdERyYXdlclRvZ2dsZXIgey4uLnByb3BzfSBkcmF3ZXJTbHVnPXtkcmF3ZXJTbHVnfSAvPlxuICB9LCBbZHJhd2VyU2x1Z10pXG5cbiAgY29uc3QgTWVtb2l6ZWREcmF3ZXJTdGF0ZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGNsb3NlRHJhd2VyLFxuICAgICAgZHJhd2VyRGVwdGgsXG4gICAgICBkcmF3ZXJTbHVnLFxuICAgICAgaXNEcmF3ZXJPcGVuOiBpc09wZW4sXG4gICAgICBvcGVuRHJhd2VyLFxuICAgICAgdG9nZ2xlRHJhd2VyLFxuICAgIH0pLFxuICAgIFtkcmF3ZXJEZXB0aCwgZHJhd2VyU2x1ZywgaXNPcGVuLCB0b2dnbGVEcmF3ZXIsIGNsb3NlRHJhd2VyLCBvcGVuRHJhd2VyXSxcbiAgKVxuXG4gIHJldHVybiBbTWVtb2l6ZWREcmF3ZXIsIE1lbW9pemVkRHJhd2VyVG9nZ2xlciwgTWVtb2l6ZWREcmF3ZXJTdGF0ZV1cbn1cbiJdLCJuYW1lcyI6WyJMaXN0RHJhd2VyIiwiTGlzdERyYXdlclRvZ2dsZXIiLCJiYXNlQ2xhc3MiLCJmb3JtYXRMaXN0RHJhd2VyU2x1ZyIsInVzZUxpc3REcmF3ZXIiLCJkZXB0aCIsInV1aWQiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsImRpc2FibGVkIiwiZHJhd2VyU2x1ZyIsInJlc3QiLCJEcmF3ZXJUb2dnbGVyIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJzbHVnIiwicHJvcHMiLCJEcmF3ZXIiLCJIZWFkZXIiLCJndXR0ZXIiLCJMaXN0RHJhd2VyQ29udGVudCIsImNvbGxlY3Rpb25TbHVncyIsImNvbGxlY3Rpb25TbHVnc0Zyb21Qcm9wcyIsImZpbHRlck9wdGlvbnMiLCJzZWxlY3RlZENvbGxlY3Rpb24iLCJ1cGxvYWRzIiwiY29sbGVjdGlvbnMiLCJ1c2VDb25maWciLCJkcmF3ZXJEZXB0aCIsInVzZUVkaXREZXB0aCIsInVzZUlkIiwiY2xvc2VNb2RhbCIsIm1vZGFsU3RhdGUiLCJvcGVuTW9kYWwiLCJ0b2dnbGVNb2RhbCIsInVzZU1vZGFsIiwiaXNPcGVuIiwic2V0SXNPcGVuIiwidXNlU3RhdGUiLCJzZXRDb2xsZWN0aW9uU2x1Z3MiLCJ1c2VFZmZlY3QiLCJsZW5ndGgiLCJmaWx0ZXJlZENvbGxlY3Rpb25TbHVncyIsInVwbG9hZCIsIm1hcCIsInRvZ2dsZURyYXdlciIsInVzZUNhbGxiYWNrIiwiY2xvc2VEcmF3ZXIiLCJvcGVuRHJhd2VyIiwiTWVtb2l6ZWREcmF3ZXIiLCJ1c2VNZW1vIiwia2V5IiwiTWVtb2l6ZWREcmF3ZXJUb2dnbGVyIiwiTWVtb2l6ZWREcmF3ZXJTdGF0ZSIsImlzRHJhd2VyT3BlbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7OztJQXlDYUEsVUFBVTtlQUFWQTs7SUFuQkFDLGlCQUFpQjtlQUFqQkE7O0lBVkFDLFNBQVM7ZUFBVEE7O0lBRUFDLG9CQUFvQjtlQUFwQkE7O0lBcUNBQyxhQUFhO2VBQWJBOzs7dUJBbERZOytEQUMrQzt3QkFJOUM7MkJBQ0c7d0JBQ1M7K0JBQ0o7UUFDM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLE1BQU1GLFlBQVk7QUFFbEIsTUFBTUMsdUJBQXVCLENBQUMsRUFDbkNFLEtBQUssRUFDTEMsSUFBSSxFQUlMLEdBQUssQ0FBQyxZQUFZLEVBQUVELE1BQU0sQ0FBQyxFQUFFQyxLQUFLLENBQUM7QUFFN0IsTUFBTUwsb0JBQWdELENBQUMsRUFDNURNLFFBQVEsRUFDUkMsU0FBUyxFQUNUQyxRQUFRLEVBQ1JDLFVBQVUsRUFDVixHQUFHQyxNQUNKO0lBQ0MscUJBQ0UsNkJBQUNDLHFCQUFhO1FBQ1pKLFdBQVc7WUFBQ0E7WUFBVyxDQUFDLEVBQUVOLFVBQVUsU0FBUyxDQUFDO1NBQUMsQ0FBQ1csTUFBTSxDQUFDQyxTQUFTQyxJQUFJLENBQUM7UUFDckVOLFVBQVVBO1FBQ1ZPLE1BQU1OO1FBQ0wsR0FBR0MsSUFBSTtPQUVQSjtBQUdQO0FBRU8sTUFBTVAsYUFBd0MsQ0FBQ2lCO0lBQ3BELE1BQU0sRUFBRVAsVUFBVSxFQUFFLEdBQUdPO0lBRXZCLHFCQUNFLDZCQUFDQyxjQUFNO1FBQUNDLFFBQVE7UUFBTVgsV0FBV047UUFBV2tCLFFBQVE7UUFBT0osTUFBTU47cUJBQy9ELDZCQUFDVyxnQ0FBaUIsRUFBS0o7QUFHN0I7QUFFTyxNQUFNYixnQkFBK0IsQ0FBQyxFQUMzQ2tCLGlCQUFpQkMsd0JBQXdCLEVBQ3pDQyxhQUFhLEVBQ2JDLGtCQUFrQixFQUNsQkMsT0FBTyxFQUNSO0lBQ0MsTUFBTSxFQUFFQyxXQUFXLEVBQUUsR0FBR0MsSUFBQUEsaUJBQVM7SUFDakMsTUFBTUMsY0FBY0MsSUFBQUEsdUJBQVk7SUFDaEMsTUFBTXhCLE9BQU95QixJQUFBQSxZQUFLO0lBQ2xCLE1BQU0sRUFBRUMsVUFBVSxFQUFFQyxVQUFVLEVBQUVDLFNBQVMsRUFBRUMsV0FBVyxFQUFFLEdBQUdDLElBQUFBLGVBQVE7SUFDbkUsTUFBTSxDQUFDQyxRQUFRQyxVQUFVLEdBQUdDLElBQUFBLGVBQVEsRUFBQztJQUNyQyxNQUFNLENBQUNqQixpQkFBaUJrQixtQkFBbUIsR0FBR0QsSUFBQUEsZUFBUSxFQUFDaEI7SUFFdkQsTUFBTWIsYUFBYVAscUJBQXFCO1FBQ3RDRSxPQUFPd0I7UUFDUHZCO0lBQ0Y7SUFFQW1DLElBQUFBLGdCQUFTLEVBQUM7UUFDUkgsVUFBVXhCLFFBQVFtQixVQUFVLENBQUN2QixXQUFXLEVBQUUyQjtJQUM1QyxHQUFHO1FBQUNKO1FBQVl2QjtLQUFXO0lBRTNCK0IsSUFBQUEsZ0JBQVMsRUFBQztRQUNSLElBQUksQ0FBQ25CLG1CQUFtQkEsZ0JBQWdCb0IsTUFBTSxLQUFLLEdBQUc7WUFDcEQsTUFBTUMsMEJBQTBCaEIsWUFBWWQsTUFBTSxDQUFDLENBQUMsRUFBRStCLE1BQU0sRUFBRTtnQkFDNUQsSUFBSWxCLFNBQVM7b0JBQ1gsT0FBT1osUUFBUThCLFlBQVk7Z0JBQzdCO2dCQUNBLE9BQU87WUFDVDtZQUVBSixtQkFBbUJHLHdCQUF3QkUsR0FBRyxDQUFDLENBQUMsRUFBRTdCLElBQUksRUFBRSxHQUFLQTtRQUMvRDtJQUNGLEdBQUc7UUFBQ007UUFBaUJJO1FBQVNDO0tBQVk7SUFDMUMsTUFBTW1CLGVBQWVDLElBQUFBLGtCQUFXLEVBQUM7UUFDL0JaLFlBQVl6QjtJQUNkLEdBQUc7UUFBQ3lCO1FBQWF6QjtLQUFXO0lBRTVCLE1BQU1zQyxjQUFjRCxJQUFBQSxrQkFBVyxFQUFDO1FBQzlCZixXQUFXdEI7SUFDYixHQUFHO1FBQUNBO1FBQVlzQjtLQUFXO0lBRTNCLE1BQU1pQixhQUFhRixJQUFBQSxrQkFBVyxFQUFDO1FBQzdCYixVQUFVeEI7SUFDWixHQUFHO1FBQUNBO1FBQVl3QjtLQUFVO0lBRTFCLE1BQU1nQixpQkFBaUJDLElBQUFBLGNBQU8sRUFBQztRQUM3QixPQUFPLENBQUNsQyxzQkFDTiw2QkFBQ2pCO2dCQUNFLEdBQUdpQixLQUFLO2dCQUNUK0IsYUFBYUE7Z0JBQ2IxQixpQkFBaUJBO2dCQUNqQlosWUFBWUE7Z0JBQ1pjLGVBQWVBO2dCQUNmNEIsS0FBSzFDO2dCQUNMZSxvQkFBb0JBO2dCQUNwQkMsU0FBU0E7O0lBR2YsR0FBRztRQUFDaEI7UUFBWVk7UUFBaUJJO1FBQVNzQjtRQUFhdkI7UUFBb0JEO0tBQWM7SUFFekYsTUFBTTZCLHdCQUF3QkYsSUFBQUEsY0FBTyxFQUFDO1FBQ3BDLE9BQU8sQ0FBQ2xDLHNCQUFVLDZCQUFDaEI7Z0JBQW1CLEdBQUdnQixLQUFLO2dCQUFFUCxZQUFZQTs7SUFDOUQsR0FBRztRQUFDQTtLQUFXO0lBRWYsTUFBTTRDLHNCQUFzQkgsSUFBQUEsY0FBTyxFQUNqQyxJQUFPLENBQUE7WUFDTEg7WUFDQW5CO1lBQ0FuQjtZQUNBNkMsY0FBY2xCO1lBQ2RZO1lBQ0FIO1FBQ0YsQ0FBQSxHQUNBO1FBQUNqQjtRQUFhbkI7UUFBWTJCO1FBQVFTO1FBQWNFO1FBQWFDO0tBQVc7SUFHMUUsT0FBTztRQUFDQztRQUFnQkc7UUFBdUJDO0tBQW9CO0FBQ3JFIn0=
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9MaXN0RHJhd2VyL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB7IHVzZU1vZGFsIH0gZnJvbSAnQGZhY2VsZXNzLXVpL21vZGFsJ1xuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZUlkLCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgdHlwZSB7IExpc3REcmF3ZXJQcm9wcywgTGlzdFRvZ2dsZXJQcm9wcywgVXNlTGlzdERyYXdlciB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB7IHVzZUNvbmZpZyB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9Db25maWcnXG5pbXBvcnQgeyB1c2VFZGl0RGVwdGggfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvRWRpdERlcHRoJ1xuaW1wb3J0IHsgRHJhd2VyLCBEcmF3ZXJUb2dnbGVyIH0gZnJvbSAnLi4vRHJhd2VyJ1xuaW1wb3J0IHsgTGlzdERyYXdlckNvbnRlbnQgfSBmcm9tICcuL0RyYXdlckNvbnRlbnQnXG5pbXBvcnQgJy4vaW5kZXguc2NzcydcblxuZXhwb3J0IGNvbnN0IGJhc2VDbGFzcyA9ICdsaXN0LWRyYXdlcidcblxuZXhwb3J0IGNvbnN0IGZvcm1hdExpc3REcmF3ZXJTbHVnID0gKHtcbiAgZGVwdGgsXG4gIHV1aWQsXG59OiB7XG4gIGRlcHRoOiBudW1iZXJcbiAgdXVpZDogc3RyaW5nIC8vIHN1cHBseSB3aGVuIGNyZWF0aW5nIGEgbmV3IGRvY3VtZW50IGFuZCBubyBpZCBpcyBhdmFpbGFibGVcbn0pID0+IGBsaXN0LWRyYXdlcl8ke2RlcHRofV8ke3V1aWR9YFxuXG5leHBvcnQgY29uc3QgTGlzdERyYXdlclRvZ2dsZXI6IFJlYWN0LkZDPExpc3RUb2dnbGVyUHJvcHM+ID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgZGlzYWJsZWQsXG4gIGRyYXdlclNsdWcsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8RHJhd2VyVG9nZ2xlclxuICAgICAgY2xhc3NOYW1lPXtbY2xhc3NOYW1lLCBgJHtiYXNlQ2xhc3N9X190b2dnbGVyYF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKX1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIHNsdWc9e2RyYXdlclNsdWd9XG4gICAgICB7Li4ucmVzdH1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9EcmF3ZXJUb2dnbGVyPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBMaXN0RHJhd2VyOiBSZWFjdC5GQzxMaXN0RHJhd2VyUHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgZHJhd2VyU2x1ZyB9ID0gcHJvcHNcblxuICByZXR1cm4gKFxuICAgIDxEcmF3ZXIgSGVhZGVyPXtudWxsfSBjbGFzc05hbWU9e2Jhc2VDbGFzc30gZ3V0dGVyPXtmYWxzZX0gc2x1Zz17ZHJhd2VyU2x1Z30+XG4gICAgICA8TGlzdERyYXdlckNvbnRlbnQgey4uLnByb3BzfSAvPlxuICAgIDwvRHJhd2VyPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCB1c2VMaXN0RHJhd2VyOiBVc2VMaXN0RHJhd2VyID0gKHtcbiAgY29sbGVjdGlvblNsdWdzOiBjb2xsZWN0aW9uU2x1Z3NGcm9tUHJvcHMsXG4gIGZpbHRlck9wdGlvbnMsXG4gIHNlbGVjdGVkQ29sbGVjdGlvbixcbiAgdXBsb2Fkcyxcbn0pID0+IHtcbiAgY29uc3QgeyBjb2xsZWN0aW9ucyB9ID0gdXNlQ29uZmlnKClcbiAgY29uc3QgZHJhd2VyRGVwdGggPSB1c2VFZGl0RGVwdGgoKVxuICBjb25zdCB1dWlkID0gdXNlSWQoKVxuICBjb25zdCB7IGNsb3NlTW9kYWwsIG1vZGFsU3RhdGUsIG9wZW5Nb2RhbCwgdG9nZ2xlTW9kYWwgfSA9IHVzZU1vZGFsKClcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbY29sbGVjdGlvblNsdWdzLCBzZXRDb2xsZWN0aW9uU2x1Z3NdID0gdXNlU3RhdGUoY29sbGVjdGlvblNsdWdzRnJvbVByb3BzKVxuXG4gIGNvbnN0IGRyYXdlclNsdWcgPSBmb3JtYXRMaXN0RHJhd2VyU2x1Zyh7XG4gICAgZGVwdGg6IGRyYXdlckRlcHRoLFxuICAgIHV1aWQsXG4gIH0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJc09wZW4oQm9vbGVhbihtb2RhbFN0YXRlW2RyYXdlclNsdWddPy5pc09wZW4pKVxuICB9LCBbbW9kYWxTdGF0ZSwgZHJhd2VyU2x1Z10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWNvbGxlY3Rpb25TbHVncyB8fCBjb2xsZWN0aW9uU2x1Z3MubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJlZENvbGxlY3Rpb25TbHVncyA9IGNvbGxlY3Rpb25zLmZpbHRlcigoeyB1cGxvYWQgfSkgPT4ge1xuICAgICAgICBpZiAodXBsb2Fkcykge1xuICAgICAgICAgIHJldHVybiBCb29sZWFuKHVwbG9hZCkgPT09IHRydWVcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSlcblxuICAgICAgc2V0Q29sbGVjdGlvblNsdWdzKGZpbHRlcmVkQ29sbGVjdGlvblNsdWdzLm1hcCgoeyBzbHVnIH0pID0+IHNsdWcpKVxuICAgIH1cbiAgfSwgW2NvbGxlY3Rpb25TbHVncywgdXBsb2FkcywgY29sbGVjdGlvbnNdKVxuICBjb25zdCB0b2dnbGVEcmF3ZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdG9nZ2xlTW9kYWwoZHJhd2VyU2x1ZylcbiAgfSwgW3RvZ2dsZU1vZGFsLCBkcmF3ZXJTbHVnXSlcblxuICBjb25zdCBjbG9zZURyYXdlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjbG9zZU1vZGFsKGRyYXdlclNsdWcpXG4gIH0sIFtkcmF3ZXJTbHVnLCBjbG9zZU1vZGFsXSlcblxuICBjb25zdCBvcGVuRHJhd2VyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIG9wZW5Nb2RhbChkcmF3ZXJTbHVnKVxuICB9LCBbZHJhd2VyU2x1Zywgb3Blbk1vZGFsXSlcblxuICBjb25zdCBNZW1vaXplZERyYXdlciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiAocHJvcHMpID0+IChcbiAgICAgIDxMaXN0RHJhd2VyXG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgY2xvc2VEcmF3ZXI9e2Nsb3NlRHJhd2VyfVxuICAgICAgICBjb2xsZWN0aW9uU2x1Z3M9e2NvbGxlY3Rpb25TbHVnc31cbiAgICAgICAgZHJhd2VyU2x1Zz17ZHJhd2VyU2x1Z31cbiAgICAgICAgZmlsdGVyT3B0aW9ucz17ZmlsdGVyT3B0aW9uc31cbiAgICAgICAga2V5PXtkcmF3ZXJTbHVnfVxuICAgICAgICBzZWxlY3RlZENvbGxlY3Rpb249e3NlbGVjdGVkQ29sbGVjdGlvbn1cbiAgICAgICAgdXBsb2Fkcz17dXBsb2Fkc31cbiAgICAgIC8+XG4gICAgKVxuICB9LCBbZHJhd2VyU2x1ZywgY29sbGVjdGlvblNsdWdzLCB1cGxvYWRzLCBjbG9zZURyYXdlciwgc2VsZWN0ZWRDb2xsZWN0aW9uLCBmaWx0ZXJPcHRpb25zXSlcblxuICBjb25zdCBNZW1vaXplZERyYXdlclRvZ2dsZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gKHByb3BzKSA9PiA8TGlzdERyYXdlclRvZ2dsZXIgey4uLnByb3BzfSBkcmF3ZXJTbHVnPXtkcmF3ZXJTbHVnfSAvPlxuICB9LCBbZHJhd2VyU2x1Z10pXG5cbiAgY29uc3QgTWVtb2l6ZWREcmF3ZXJTdGF0ZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGNsb3NlRHJhd2VyLFxuICAgICAgZHJhd2VyRGVwdGgsXG4gICAgICBkcmF3ZXJTbHVnLFxuICAgICAgaXNEcmF3ZXJPcGVuOiBpc09wZW4sXG4gICAgICBvcGVuRHJhd2VyLFxuICAgICAgdG9nZ2xlRHJhd2VyLFxuICAgIH0pLFxuICAgIFtkcmF3ZXJEZXB0aCwgZHJhd2VyU2x1ZywgaXNPcGVuLCB0b2dnbGVEcmF3ZXIsIGNsb3NlRHJhd2VyLCBvcGVuRHJhd2VyXSxcbiAgKVxuXG4gIHJldHVybiBbTWVtb2l6ZWREcmF3ZXIsIE1lbW9pemVkRHJhd2VyVG9nZ2xlciwgTWVtb2l6ZWREcmF3ZXJTdGF0ZV1cbn1cbiJdLCJuYW1lcyI6WyJ1c2VNb2RhbCIsIlJlYWN0IiwidXNlQ2FsbGJhY2siLCJ1c2VFZmZlY3QiLCJ1c2VJZCIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZUNvbmZpZyIsInVzZUVkaXREZXB0aCIsIkRyYXdlciIsIkRyYXdlclRvZ2dsZXIiLCJMaXN0RHJhd2VyQ29udGVudCIsImJhc2VDbGFzcyIsImZvcm1hdExpc3REcmF3ZXJTbHVnIiwiZGVwdGgiLCJ1dWlkIiwiTGlzdERyYXdlclRvZ2dsZXIiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsImRpc2FibGVkIiwiZHJhd2VyU2x1ZyIsInJlc3QiLCJmaWx0ZXIiLCJCb29sZWFuIiwiam9pbiIsInNsdWciLCJMaXN0RHJhd2VyIiwicHJvcHMiLCJIZWFkZXIiLCJndXR0ZXIiLCJ1c2VMaXN0RHJhd2VyIiwiY29sbGVjdGlvblNsdWdzIiwiY29sbGVjdGlvblNsdWdzRnJvbVByb3BzIiwiZmlsdGVyT3B0aW9ucyIsInNlbGVjdGVkQ29sbGVjdGlvbiIsInVwbG9hZHMiLCJjb2xsZWN0aW9ucyIsImRyYXdlckRlcHRoIiwiY2xvc2VNb2RhbCIsIm1vZGFsU3RhdGUiLCJvcGVuTW9kYWwiLCJ0b2dnbGVNb2RhbCIsImlzT3BlbiIsInNldElzT3BlbiIsInNldENvbGxlY3Rpb25TbHVncyIsImxlbmd0aCIsImZpbHRlcmVkQ29sbGVjdGlvblNsdWdzIiwidXBsb2FkIiwibWFwIiwidG9nZ2xlRHJhd2VyIiwiY2xvc2VEcmF3ZXIiLCJvcGVuRHJhd2VyIiwiTWVtb2l6ZWREcmF3ZXIiLCJrZXkiLCJNZW1vaXplZERyYXdlclRvZ2dsZXIiLCJNZW1vaXplZERyYXdlclN0YXRlIiwiaXNEcmF3ZXJPcGVuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFNBQVNBLFFBQVEsUUFBUSxxQkFBb0I7QUFDN0MsT0FBT0MsU0FBU0MsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxRQUFRLFFBQVEsUUFBTztBQUkvRSxTQUFTQyxTQUFTLFFBQVEseUJBQXdCO0FBQ2xELFNBQVNDLFlBQVksUUFBUSw0QkFBMkI7QUFDeEQsU0FBU0MsTUFBTSxFQUFFQyxhQUFhLFFBQVEsWUFBVztBQUNqRCxTQUFTQyxpQkFBaUIsUUFBUSxrQkFBaUI7QUFDbkQsT0FBTyxlQUFjO0FBRXJCLE9BQU8sTUFBTUMsWUFBWSxjQUFhO0FBRXRDLE9BQU8sTUFBTUMsdUJBQXVCLENBQUMsRUFDbkNDLEtBQUssRUFDTEMsSUFBSSxFQUlMLEdBQUssQ0FBQyxZQUFZLEVBQUVELE1BQU0sQ0FBQyxFQUFFQyxLQUFLLENBQUMsQ0FBQTtBQUVwQyxPQUFPLE1BQU1DLG9CQUFnRCxDQUFDLEVBQzVEQyxRQUFRLEVBQ1JDLFNBQVMsRUFDVEMsUUFBUSxFQUNSQyxVQUFVLEVBQ1YsR0FBR0MsTUFDSjtJQUNDLHFCQUNFLG9CQUFDWDtRQUNDUSxXQUFXO1lBQUNBO1lBQVcsQ0FBQyxFQUFFTixVQUFVLFNBQVMsQ0FBQztTQUFDLENBQUNVLE1BQU0sQ0FBQ0MsU0FBU0MsSUFBSSxDQUFDO1FBQ3JFTCxVQUFVQTtRQUNWTSxNQUFNTDtRQUNMLEdBQUdDLElBQUk7T0FFUEo7QUFHUCxFQUFDO0FBRUQsT0FBTyxNQUFNUyxhQUF3QyxDQUFDQztJQUNwRCxNQUFNLEVBQUVQLFVBQVUsRUFBRSxHQUFHTztJQUV2QixxQkFDRSxvQkFBQ2xCO1FBQU9tQixRQUFRO1FBQU1WLFdBQVdOO1FBQVdpQixRQUFRO1FBQU9KLE1BQU1MO3FCQUMvRCxvQkFBQ1QsbUJBQXNCZ0I7QUFHN0IsRUFBQztBQUVELE9BQU8sTUFBTUcsZ0JBQStCLENBQUMsRUFDM0NDLGlCQUFpQkMsd0JBQXdCLEVBQ3pDQyxhQUFhLEVBQ2JDLGtCQUFrQixFQUNsQkMsT0FBTyxFQUNSO0lBQ0MsTUFBTSxFQUFFQyxXQUFXLEVBQUUsR0FBRzdCO0lBQ3hCLE1BQU04QixjQUFjN0I7SUFDcEIsTUFBTU8sT0FBT1g7SUFDYixNQUFNLEVBQUVrQyxVQUFVLEVBQUVDLFVBQVUsRUFBRUMsU0FBUyxFQUFFQyxXQUFXLEVBQUUsR0FBR3pDO0lBQzNELE1BQU0sQ0FBQzBDLFFBQVFDLFVBQVUsR0FBR3JDLFNBQVM7SUFDckMsTUFBTSxDQUFDeUIsaUJBQWlCYSxtQkFBbUIsR0FBR3RDLFNBQVMwQjtJQUV2RCxNQUFNWixhQUFhUCxxQkFBcUI7UUFDdENDLE9BQU91QjtRQUNQdEI7SUFDRjtJQUVBWixVQUFVO1FBQ1J3QyxVQUFVcEIsUUFBUWdCLFVBQVUsQ0FBQ25CLFdBQVcsRUFBRXNCO0lBQzVDLEdBQUc7UUFBQ0g7UUFBWW5CO0tBQVc7SUFFM0JqQixVQUFVO1FBQ1IsSUFBSSxDQUFDNEIsbUJBQW1CQSxnQkFBZ0JjLE1BQU0sS0FBSyxHQUFHO1lBQ3BELE1BQU1DLDBCQUEwQlYsWUFBWWQsTUFBTSxDQUFDLENBQUMsRUFBRXlCLE1BQU0sRUFBRTtnQkFDNUQsSUFBSVosU0FBUztvQkFDWCxPQUFPWixRQUFRd0IsWUFBWTtnQkFDN0I7Z0JBQ0EsT0FBTztZQUNUO1lBRUFILG1CQUFtQkUsd0JBQXdCRSxHQUFHLENBQUMsQ0FBQyxFQUFFdkIsSUFBSSxFQUFFLEdBQUtBO1FBQy9EO0lBQ0YsR0FBRztRQUFDTTtRQUFpQkk7UUFBU0M7S0FBWTtJQUMxQyxNQUFNYSxlQUFlL0MsWUFBWTtRQUMvQnVDLFlBQVlyQjtJQUNkLEdBQUc7UUFBQ3FCO1FBQWFyQjtLQUFXO0lBRTVCLE1BQU04QixjQUFjaEQsWUFBWTtRQUM5Qm9DLFdBQVdsQjtJQUNiLEdBQUc7UUFBQ0E7UUFBWWtCO0tBQVc7SUFFM0IsTUFBTWEsYUFBYWpELFlBQVk7UUFDN0JzQyxVQUFVcEI7SUFDWixHQUFHO1FBQUNBO1FBQVlvQjtLQUFVO0lBRTFCLE1BQU1ZLGlCQUFpQi9DLFFBQVE7UUFDN0IsT0FBTyxDQUFDc0Isc0JBQ04sb0JBQUNEO2dCQUNFLEdBQUdDLEtBQUs7Z0JBQ1R1QixhQUFhQTtnQkFDYm5CLGlCQUFpQkE7Z0JBQ2pCWCxZQUFZQTtnQkFDWmEsZUFBZUE7Z0JBQ2ZvQixLQUFLakM7Z0JBQ0xjLG9CQUFvQkE7Z0JBQ3BCQyxTQUFTQTs7SUFHZixHQUFHO1FBQUNmO1FBQVlXO1FBQWlCSTtRQUFTZTtRQUFhaEI7UUFBb0JEO0tBQWM7SUFFekYsTUFBTXFCLHdCQUF3QmpELFFBQVE7UUFDcEMsT0FBTyxDQUFDc0Isc0JBQVUsb0JBQUNYO2dCQUFtQixHQUFHVyxLQUFLO2dCQUFFUCxZQUFZQTs7SUFDOUQsR0FBRztRQUFDQTtLQUFXO0lBRWYsTUFBTW1DLHNCQUFzQmxELFFBQzFCLElBQU8sQ0FBQTtZQUNMNkM7WUFDQWI7WUFDQWpCO1lBQ0FvQyxjQUFjZDtZQUNkUztZQUNBRjtRQUNGLENBQUEsR0FDQTtRQUFDWjtRQUFhakI7UUFBWXNCO1FBQVFPO1FBQWNDO1FBQWFDO0tBQVc7SUFHMUUsT0FBTztRQUFDQztRQUFnQkU7UUFBdUJDO0tBQW9CO0FBQ3JFLEVBQUMifQ==