@payloadcms/ui 3.0.0-alpha.2 → 3.0.0-alpha.21

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 (530) 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 +34 -93
  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.d.ts.map +1 -1
  32. package/dist/elements/DocumentDrawer/DrawerContent.js +62 -114
  33. package/dist/elements/DocumentDrawer/index.js +33 -98
  34. package/dist/elements/DocumentDrawer/types.js +2 -5
  35. package/dist/elements/DocumentFields/index.d.ts.map +1 -1
  36. package/dist/elements/DocumentFields/index.js +16 -31
  37. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js +4 -14
  38. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.d.ts.map +1 -1
  39. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +17 -26
  40. package/dist/elements/DocumentHeader/Tabs/Tab/index.js +9 -68
  41. package/dist/elements/DocumentHeader/Tabs/getCustomViews.js +5 -15
  42. package/dist/elements/DocumentHeader/Tabs/getViewConfig.js +2 -12
  43. package/dist/elements/DocumentHeader/Tabs/index.js +18 -33
  44. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js +8 -23
  45. package/dist/elements/DocumentHeader/Tabs/tabs/index.js +5 -23
  46. package/dist/elements/DocumentHeader/index.js +10 -66
  47. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js +7 -66
  48. package/dist/elements/DraggableSortable/DraggableSortableItem/types.js +2 -5
  49. package/dist/elements/DraggableSortable/index.js +15 -66
  50. package/dist/elements/DraggableSortable/types.js +2 -5
  51. package/dist/elements/DraggableSortable/useDraggableSortable/index.js +4 -14
  52. package/dist/elements/DraggableSortable/useDraggableSortable/types.js +2 -5
  53. package/dist/elements/Drawer/index.d.ts +1 -1
  54. package/dist/elements/Drawer/index.js +32 -94
  55. package/dist/elements/Drawer/types.js +2 -5
  56. package/dist/elements/Drawer/useDrawerSlug.js +8 -18
  57. package/dist/elements/Dropzone/index.js +20 -35
  58. package/dist/elements/DuplicateDocument/index.js +33 -83
  59. package/dist/elements/DuplicateDocument/types.js +2 -5
  60. package/dist/elements/EditMany/index.d.ts.map +1 -1
  61. package/dist/elements/EditMany/index.js +72 -125
  62. package/dist/elements/EditMany/types.js +2 -5
  63. package/dist/elements/EditUpload/index.js +66 -122
  64. package/dist/elements/ErrorPill/index.js +7 -22
  65. package/dist/elements/ErrorPill/types.js +2 -5
  66. package/dist/elements/FieldSelect/index.js +23 -79
  67. package/dist/elements/FileDetails/FileMeta/index.js +19 -75
  68. package/dist/elements/FileDetails/FileMeta/types.js +2 -5
  69. package/dist/elements/FileDetails/index.js +15 -30
  70. package/dist/elements/FileDetails/types.js +2 -5
  71. package/dist/elements/GenerateConfirmation/index.js +22 -37
  72. package/dist/elements/GenerateConfirmation/types.js +2 -5
  73. package/dist/elements/GetFilterOptions/index.js +18 -33
  74. package/dist/elements/Gutter/index.js +5 -56
  75. package/dist/elements/Hamburger/index.js +18 -33
  76. package/dist/elements/Header/index.js +39 -95
  77. package/dist/elements/HydrateClientUser/index.js +6 -16
  78. package/dist/elements/IDLabel/index.js +5 -20
  79. package/dist/elements/ListControls/getTextFieldsToBeSearched.js +6 -16
  80. package/dist/elements/ListControls/index.js +52 -104
  81. package/dist/elements/ListControls/types.js +2 -5
  82. package/dist/elements/ListDrawer/DrawerContent.js +72 -128
  83. package/dist/elements/ListDrawer/index.js +32 -100
  84. package/dist/elements/ListDrawer/types.js +2 -5
  85. package/dist/elements/ListSelection/index.js +11 -62
  86. package/dist/elements/Loading/index.js +25 -51
  87. package/dist/elements/LoadingOverlay/index.js +17 -79
  88. package/dist/elements/LoadingOverlay/reducer.js +3 -21
  89. package/dist/elements/LoadingOverlay/types.js +2 -5
  90. package/dist/elements/Localizer/LocalizerLabel/index.js +15 -30
  91. package/dist/elements/Localizer/index.d.ts.map +1 -1
  92. package/dist/elements/Localizer/index.js +37 -95
  93. package/dist/elements/Logout/index.js +13 -28
  94. package/dist/elements/Nav/NavHamburger/index.js +8 -23
  95. package/dist/elements/Nav/NavToggler/index.js +13 -28
  96. package/dist/elements/Nav/NavWrapper/index.js +8 -23
  97. package/dist/elements/Nav/context.js +20 -82
  98. package/dist/elements/Nav/index.js +36 -51
  99. package/dist/elements/NavGroup/index.js +21 -77
  100. package/dist/elements/Pagination/ClickableArrow/index.js +7 -22
  101. package/dist/elements/Pagination/ClickableArrow/types.js +2 -5
  102. package/dist/elements/Pagination/Page/index.js +4 -19
  103. package/dist/elements/Pagination/Page/types.js +2 -5
  104. package/dist/elements/Pagination/Separator/index.js +4 -19
  105. package/dist/elements/Pagination/index.js +20 -35
  106. package/dist/elements/Pagination/types.js +2 -5
  107. package/dist/elements/PerPage/index.js +28 -83
  108. package/dist/elements/Pill/index.js +16 -40
  109. package/dist/elements/Pill/types.js +2 -5
  110. package/dist/elements/Popup/PopupButtonList/index.js +10 -75
  111. package/dist/elements/Popup/PopupTrigger/index.js +6 -21
  112. package/dist/elements/Popup/PopupTrigger/types.js +2 -5
  113. package/dist/elements/Popup/index.js +29 -80
  114. package/dist/elements/Popup/types.js +2 -5
  115. package/dist/elements/PreviewButton/index.js +22 -73
  116. package/dist/elements/PreviewSizes/index.js +24 -80
  117. package/dist/elements/Publish/index.js +23 -79
  118. package/dist/elements/PublishMany/index.js +37 -93
  119. package/dist/elements/PublishMany/types.js +2 -5
  120. package/dist/elements/ReactSelect/ClearIndicator/index.js +7 -22
  121. package/dist/elements/ReactSelect/Control/index.js +5 -20
  122. package/dist/elements/ReactSelect/MultiValue/index.js +8 -23
  123. package/dist/elements/ReactSelect/MultiValueLabel/index.js +7 -22
  124. package/dist/elements/ReactSelect/MultiValueRemove/index.js +12 -27
  125. package/dist/elements/ReactSelect/SingleValue/index.js +5 -20
  126. package/dist/elements/ReactSelect/ValueContainer/index.js +7 -22
  127. package/dist/elements/ReactSelect/index.js +45 -60
  128. package/dist/elements/ReactSelect/types.js +2 -5
  129. package/dist/elements/RenderCustomComponent/index.js +5 -20
  130. package/dist/elements/RenderCustomComponent/types.js +2 -5
  131. package/dist/elements/RenderTitle/index.js +9 -24
  132. package/dist/elements/RenderTitle/types.js +2 -5
  133. package/dist/elements/Save/index.js +16 -72
  134. package/dist/elements/SaveDraft/index.js +24 -80
  135. package/dist/elements/SearchFilter/index.js +31 -86
  136. package/dist/elements/SearchFilter/types.js +2 -5
  137. package/dist/elements/SelectAll/index.d.ts.map +1 -1
  138. package/dist/elements/SelectAll/index.js +13 -26
  139. package/dist/elements/SelectRow/index.d.ts.map +1 -1
  140. package/dist/elements/SelectRow/index.js +10 -23
  141. package/dist/elements/ShimmerEffect/index.js +12 -71
  142. package/dist/elements/SortColumn/index.js +27 -90
  143. package/dist/elements/SortColumn/types.js +2 -5
  144. package/dist/elements/SortComplex/index.js +35 -90
  145. package/dist/elements/SortComplex/types.js +2 -5
  146. package/dist/elements/Status/index.js +38 -88
  147. package/dist/elements/StayLoggedIn/index.js +20 -34
  148. package/dist/elements/StayLoggedIn/types.js +2 -5
  149. package/dist/elements/StepNav/SetStepNav.js +6 -16
  150. package/dist/elements/StepNav/index.js +27 -93
  151. package/dist/elements/StepNav/types.js +2 -5
  152. package/dist/elements/Table/TableCellProvider/index.js +9 -32
  153. package/dist/elements/Table/index.js +15 -38
  154. package/dist/elements/Table/types.js +2 -5
  155. package/dist/elements/TableColumns/buildColumns.d.ts.map +1 -1
  156. package/dist/elements/TableColumns/buildColumns.js +7 -16
  157. package/dist/elements/TableColumns/columnReducer.js +2 -12
  158. package/dist/elements/TableColumns/index.js +24 -86
  159. package/dist/elements/Thumbnail/index.js +12 -68
  160. package/dist/elements/Thumbnail/types.js +2 -5
  161. package/dist/elements/ThumbnailCard/index.js +13 -28
  162. package/dist/elements/ThumbnailCard/types.js +2 -5
  163. package/dist/elements/Tooltip/index.js +14 -65
  164. package/dist/elements/Tooltip/types.js +2 -5
  165. package/dist/elements/Translation/index.js +7 -58
  166. package/dist/elements/UnpublishMany/index.js +37 -93
  167. package/dist/elements/UnpublishMany/types.js +2 -5
  168. package/dist/elements/Upload/index.js +57 -127
  169. package/dist/elements/Upload/types.d.ts +1 -2
  170. package/dist/elements/Upload/types.d.ts.map +1 -1
  171. package/dist/elements/Upload/types.js +2 -5
  172. package/dist/elements/ViewDescription/index.js +12 -27
  173. package/dist/elements/ViewDescription/types.js +4 -19
  174. package/dist/elements/WhereBuilder/Condition/Date/index.js +6 -21
  175. package/dist/elements/WhereBuilder/Condition/Date/types.js +2 -5
  176. package/dist/elements/WhereBuilder/Condition/Number/index.js +7 -22
  177. package/dist/elements/WhereBuilder/Condition/Number/types.js +2 -5
  178. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +28 -84
  179. package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.js +5 -15
  180. package/dist/elements/WhereBuilder/Condition/Relationship/types.js +2 -5
  181. package/dist/elements/WhereBuilder/Condition/Select/index.js +15 -30
  182. package/dist/elements/WhereBuilder/Condition/Select/types.js +2 -5
  183. package/dist/elements/WhereBuilder/Condition/Text/index.js +7 -22
  184. package/dist/elements/WhereBuilder/Condition/Text/types.js +2 -5
  185. package/dist/elements/WhereBuilder/Condition/index.js +37 -93
  186. package/dist/elements/WhereBuilder/Condition/types.js +2 -5
  187. package/dist/elements/WhereBuilder/field-types.js +2 -12
  188. package/dist/elements/WhereBuilder/index.js +43 -98
  189. package/dist/elements/WhereBuilder/reducer.js +2 -12
  190. package/dist/elements/WhereBuilder/transformWhereQuery.js +6 -12
  191. package/dist/elements/WhereBuilder/types.js +2 -5
  192. package/dist/elements/WhereBuilder/validateWhereQuery.js +4 -14
  193. package/dist/exports/assets.js +3 -26
  194. package/dist/exports/elements.d.ts +6 -0
  195. package/dist/exports/elements.d.ts.map +1 -1
  196. package/dist/exports/elements.js +48 -225
  197. package/dist/exports/forms.d.ts +4 -1
  198. package/dist/exports/forms.d.ts.map +1 -1
  199. package/dist/exports/forms.js +38 -157
  200. package/dist/exports/graphics.js +3 -26
  201. package/dist/exports/hooks.js +10 -54
  202. package/dist/exports/icons.js +18 -81
  203. package/dist/exports/index.js +10 -27
  204. package/dist/exports/providers.d.ts +1 -0
  205. package/dist/exports/providers.d.ts.map +1 -1
  206. package/dist/exports/providers.js +24 -115
  207. package/dist/exports/templates.js +3 -21
  208. package/dist/exports/types.d.ts +1 -0
  209. package/dist/exports/types.d.ts.map +1 -1
  210. package/dist/exports/types.js +2 -5
  211. package/dist/exports/utilities.js +11 -61
  212. package/dist/forms/Error/index.js +11 -26
  213. package/dist/forms/FieldDescription/index.js +9 -24
  214. package/dist/forms/FieldDescription/types.js +2 -5
  215. package/dist/forms/FieldPathProvider/index.d.ts.map +1 -1
  216. package/dist/forms/FieldPathProvider/index.js +7 -30
  217. package/dist/forms/Form/buildFieldSchemaMap.js +14 -14
  218. package/dist/forms/Form/buildInitialState.js +2 -12
  219. package/dist/forms/Form/context.js +17 -67
  220. package/dist/forms/Form/createNestedFieldPath.js +5 -15
  221. package/dist/forms/Form/errorMessages.js +2 -12
  222. package/dist/forms/Form/fieldReducer.d.ts +2 -1
  223. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  224. package/dist/forms/Form/fieldReducer.js +25 -38
  225. package/dist/forms/Form/getDataByPath.d.ts +1 -1
  226. package/dist/forms/Form/getDataByPath.d.ts.map +1 -1
  227. package/dist/forms/Form/getDataByPath.js +4 -14
  228. package/dist/forms/Form/getSiblingData.d.ts +1 -2
  229. package/dist/forms/Form/getSiblingData.d.ts.map +1 -1
  230. package/dist/forms/Form/getSiblingData.js +6 -21
  231. package/dist/forms/Form/index.d.ts.map +1 -1
  232. package/dist/forms/Form/index.js +85 -141
  233. package/dist/forms/Form/initContextState.d.ts.map +1 -1
  234. package/dist/forms/Form/initContextState.js +2 -12
  235. package/dist/forms/Form/mergeServerFormState.d.ts +1 -1
  236. package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
  237. package/dist/forms/Form/mergeServerFormState.js +5 -15
  238. package/dist/forms/Form/reduceFieldsToValues.d.ts +1 -2
  239. package/dist/forms/Form/reduceFieldsToValues.d.ts.map +1 -1
  240. package/dist/forms/Form/reduceFieldsToValues.js +4 -14
  241. package/dist/forms/Form/rows.d.ts +1 -1
  242. package/dist/forms/Form/rows.d.ts.map +1 -1
  243. package/dist/forms/Form/rows.js +3 -21
  244. package/dist/forms/Form/types.d.ts +2 -23
  245. package/dist/forms/Form/types.d.ts.map +1 -1
  246. package/dist/forms/Form/types.js +2 -5
  247. package/dist/forms/Label/index.js +9 -24
  248. package/dist/forms/NullifyField/index.d.ts.map +1 -1
  249. package/dist/forms/NullifyField/index.js +16 -72
  250. package/dist/forms/ReadOnlyProvider/index.d.ts +7 -0
  251. package/dist/forms/ReadOnlyProvider/index.d.ts.map +1 -0
  252. package/dist/forms/ReadOnlyProvider/index.js +15 -0
  253. package/dist/forms/RenderFields/RenderField.d.ts +3 -0
  254. package/dist/forms/RenderFields/RenderField.d.ts.map +1 -1
  255. package/dist/forms/RenderFields/RenderField.js +22 -23
  256. package/dist/forms/RenderFields/index.d.ts.map +1 -1
  257. package/dist/forms/RenderFields/index.js +16 -29
  258. package/dist/forms/RenderFields/types.d.ts +2 -0
  259. package/dist/forms/RenderFields/types.d.ts.map +1 -1
  260. package/dist/forms/RenderFields/types.js +2 -5
  261. package/dist/forms/RowLabel/index.js +13 -28
  262. package/dist/forms/RowLabel/types.d.ts +1 -2
  263. package/dist/forms/RowLabel/types.d.ts.map +1 -1
  264. package/dist/forms/RowLabel/types.js +4 -19
  265. package/dist/forms/Submit/index.js +11 -62
  266. package/dist/forms/WatchChildErrors/buildPathSegments.js +2 -12
  267. package/dist/forms/WatchChildErrors/getFieldStateFromPaths.d.ts +1 -1
  268. package/dist/forms/WatchChildErrors/getFieldStateFromPaths.js +2 -12
  269. package/dist/forms/WatchChildErrors/getNestedFieldState.d.ts +1 -2
  270. package/dist/forms/WatchChildErrors/getNestedFieldState.d.ts.map +1 -1
  271. package/dist/forms/WatchChildErrors/getNestedFieldState.js +5 -14
  272. package/dist/forms/WatchChildErrors/index.js +11 -26
  273. package/dist/forms/fields/Array/ArrayRow.d.ts +1 -2
  274. package/dist/forms/fields/Array/ArrayRow.d.ts.map +1 -1
  275. package/dist/forms/fields/Array/ArrayRow.js +24 -39
  276. package/dist/forms/fields/Array/index.js +59 -115
  277. package/dist/forms/fields/Array/types.js +2 -5
  278. package/dist/forms/fields/Blocks/BlockRow.d.ts +1 -2
  279. package/dist/forms/fields/Blocks/BlockRow.d.ts.map +1 -1
  280. package/dist/forms/fields/Blocks/BlockRow.js +27 -42
  281. package/dist/forms/fields/Blocks/BlocksDrawer/BlockSearch/index.js +10 -25
  282. package/dist/forms/fields/Blocks/BlocksDrawer/index.js +29 -85
  283. package/dist/forms/fields/Blocks/BlocksDrawer/types.js +2 -5
  284. package/dist/forms/fields/Blocks/RowActions.js +12 -27
  285. package/dist/forms/fields/Blocks/SectionTitle/index.js +10 -25
  286. package/dist/forms/fields/Blocks/SectionTitle/types.js +2 -5
  287. package/dist/forms/fields/Blocks/index.js +78 -133
  288. package/dist/forms/fields/Blocks/types.js +2 -5
  289. package/dist/forms/fields/Checkbox/Input.d.ts.map +1 -1
  290. package/dist/forms/fields/Checkbox/Input.js +11 -33
  291. package/dist/forms/fields/Checkbox/index.js +19 -75
  292. package/dist/forms/fields/Checkbox/types.js +2 -5
  293. package/dist/forms/fields/Code/index.js +15 -71
  294. package/dist/forms/fields/Code/types.js +2 -5
  295. package/dist/forms/fields/Collapsible/index.js +31 -87
  296. package/dist/forms/fields/Collapsible/types.js +2 -5
  297. package/dist/forms/fields/ConfirmPassword/index.d.ts.map +1 -1
  298. package/dist/forms/fields/ConfirmPassword/index.js +19 -75
  299. package/dist/forms/fields/ConfirmPassword/types.js +2 -5
  300. package/dist/forms/fields/DateTime/index.js +18 -74
  301. package/dist/forms/fields/DateTime/types.js +2 -5
  302. package/dist/forms/fields/Email/index.js +19 -83
  303. package/dist/forms/fields/Email/types.js +2 -5
  304. package/dist/forms/fields/Group/index.js +32 -88
  305. package/dist/forms/fields/Group/provider.js +7 -69
  306. package/dist/forms/fields/Group/types.js +2 -5
  307. package/dist/forms/fields/HiddenInput/index.js +8 -64
  308. package/dist/forms/fields/HiddenInput/types.js +2 -5
  309. package/dist/forms/fields/JSON/index.js +20 -76
  310. package/dist/forms/fields/JSON/types.js +2 -5
  311. package/dist/forms/fields/Number/index.js +26 -82
  312. package/dist/forms/fields/Number/types.js +2 -5
  313. package/dist/forms/fields/Password/index.js +15 -79
  314. package/dist/forms/fields/Password/types.js +2 -5
  315. package/dist/forms/fields/Point/index.js +24 -80
  316. package/dist/forms/fields/Point/types.js +2 -5
  317. package/dist/forms/fields/RadioGroup/Radio/index.js +13 -28
  318. package/dist/forms/fields/RadioGroup/index.js +23 -79
  319. package/dist/forms/fields/RadioGroup/types.js +2 -5
  320. package/dist/forms/fields/Relationship/AddNew/index.js +43 -99
  321. package/dist/forms/fields/Relationship/AddNew/types.js +2 -5
  322. package/dist/forms/fields/Relationship/AddNew/useRelatedCollections.js +6 -16
  323. package/dist/forms/fields/Relationship/createRelationMap.js +2 -12
  324. package/dist/forms/fields/Relationship/findOptionsByValue.js +2 -12
  325. package/dist/forms/fields/Relationship/index.js +64 -120
  326. package/dist/forms/fields/Relationship/optionsReducer.js +7 -17
  327. package/dist/forms/fields/Relationship/select-components/MultiValueLabel/index.js +21 -72
  328. package/dist/forms/fields/Relationship/select-components/SingleValue/index.js +22 -73
  329. package/dist/forms/fields/Relationship/types.js +2 -5
  330. package/dist/forms/fields/RichText/index.js +2 -12
  331. package/dist/forms/fields/RichText/types.js +2 -5
  332. package/dist/forms/fields/Row/index.js +11 -26
  333. package/dist/forms/fields/Row/provider.js +7 -69
  334. package/dist/forms/fields/Row/types.js +2 -5
  335. package/dist/forms/fields/Select/index.js +24 -88
  336. package/dist/forms/fields/Select/types.js +2 -5
  337. package/dist/forms/fields/Tabs/Tab/index.js +13 -64
  338. package/dist/forms/fields/Tabs/index.d.ts.map +1 -1
  339. package/dist/forms/fields/Tabs/index.js +35 -91
  340. package/dist/forms/fields/Tabs/provider.js +7 -69
  341. package/dist/forms/fields/Tabs/types.js +2 -5
  342. package/dist/forms/fields/Text/Input.d.ts +18 -0
  343. package/dist/forms/fields/Text/Input.d.ts.map +1 -0
  344. package/dist/forms/fields/Text/Input.js +62 -0
  345. package/dist/forms/fields/Text/index.d.ts.map +1 -1
  346. package/dist/forms/fields/Text/index.js +44 -129
  347. package/dist/forms/fields/Text/types.d.ts +2 -2
  348. package/dist/forms/fields/Text/types.d.ts.map +1 -1
  349. package/dist/forms/fields/Text/types.js +2 -5
  350. package/dist/forms/fields/Textarea/Input.d.ts +11 -0
  351. package/dist/forms/fields/Textarea/Input.d.ts.map +1 -0
  352. package/dist/forms/fields/Textarea/Input.js +43 -0
  353. package/dist/forms/fields/Textarea/index.d.ts.map +1 -1
  354. package/dist/forms/fields/Textarea/index.js +39 -104
  355. package/dist/forms/fields/Textarea/types.js +2 -5
  356. package/dist/forms/fields/UI/index.js +2 -12
  357. package/dist/forms/fields/Upload/Input.d.ts +15 -1
  358. package/dist/forms/fields/Upload/Input.d.ts.map +1 -1
  359. package/dist/forms/fields/Upload/Input.js +127 -2
  360. package/dist/forms/fields/Upload/index.d.ts.map +1 -1
  361. package/dist/forms/fields/Upload/index.js +32 -180
  362. package/dist/forms/fields/Upload/types.js +2 -5
  363. package/dist/forms/fields/getFilterOptionsQuery.js +2 -12
  364. package/dist/forms/fields/index.js +50 -65
  365. package/dist/forms/fields/shared.d.ts +3 -3
  366. package/dist/forms/fields/shared.d.ts.map +1 -1
  367. package/dist/forms/fields/shared.js +7 -21
  368. package/dist/forms/useField/index.d.ts.map +1 -1
  369. package/dist/forms/useField/index.js +30 -41
  370. package/dist/forms/useField/types.d.ts +2 -2
  371. package/dist/forms/useField/types.d.ts.map +1 -1
  372. package/dist/forms/useField/types.js +2 -5
  373. package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.d.ts +1 -2
  374. package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.d.ts.map +1 -1
  375. package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.js +21 -33
  376. package/dist/forms/utilities/buildStateFromSchema/buildStateFromSchema.spec.js +5 -14
  377. package/dist/forms/utilities/buildStateFromSchema/index.d.ts +1 -2
  378. package/dist/forms/utilities/buildStateFromSchema/index.d.ts.map +1 -1
  379. package/dist/forms/utilities/buildStateFromSchema/index.js +4 -14
  380. package/dist/forms/utilities/buildStateFromSchema/iterateFields.d.ts +1 -2
  381. package/dist/forms/utilities/buildStateFromSchema/iterateFields.d.ts.map +1 -1
  382. package/dist/forms/utilities/buildStateFromSchema/iterateFields.js +8 -16
  383. package/dist/forms/withCondition/WatchCondition.js +7 -57
  384. package/dist/forms/withCondition/index.js +8 -23
  385. package/dist/graphics/Account/Default/index.js +7 -22
  386. package/dist/graphics/Account/Gravatar/index.js +10 -25
  387. package/dist/graphics/Account/index.js +15 -30
  388. package/dist/graphics/DefaultBlockImage/index.js +11 -62
  389. package/dist/graphics/ExternalLink/index.js +5 -20
  390. package/dist/graphics/File/index.js +7 -22
  391. package/dist/graphics/Icon/index.js +13 -28
  392. package/dist/graphics/Logo/index.js +15 -30
  393. package/dist/graphics/Search/index.js +6 -21
  394. package/dist/hooks/useAdminThumbnail.js +5 -15
  395. package/dist/hooks/useDebounce.js +6 -16
  396. package/dist/hooks/useDebouncedCallback.js +10 -15
  397. package/dist/hooks/useDebouncedEffect.js +6 -16
  398. package/dist/hooks/useDelay.js +7 -58
  399. package/dist/hooks/useDelayedRender.js +11 -62
  400. package/dist/hooks/useHotkey.js +10 -20
  401. package/dist/hooks/useIntersect.js +7 -17
  402. package/dist/hooks/usePayloadAPI.js +17 -32
  403. package/dist/hooks/useResize.js +5 -15
  404. package/dist/hooks/useThrottledEffect.js +5 -15
  405. package/dist/hooks/useThumbnail.js +8 -18
  406. package/dist/hooks/useUseAsTitle.js +6 -16
  407. package/dist/icons/Calendar/index.js +8 -23
  408. package/dist/icons/Check/index.js +6 -21
  409. package/dist/icons/Chevron/index.js +5 -20
  410. package/dist/icons/CloseMenu/index.js +6 -21
  411. package/dist/icons/CodeBlock/index.js +5 -20
  412. package/dist/icons/Copy/index.js +6 -21
  413. package/dist/icons/DragHandle/index.js +10 -25
  414. package/dist/icons/Edit/index.js +7 -22
  415. package/dist/icons/Line/index.js +5 -20
  416. package/dist/icons/Link/index.js +6 -21
  417. package/dist/icons/LogOut/index.js +7 -22
  418. package/dist/icons/Menu/index.js +7 -22
  419. package/dist/icons/MinimizeMaximize/index.js +12 -63
  420. package/dist/icons/More/index.js +7 -22
  421. package/dist/icons/Plus/index.js +6 -21
  422. package/dist/icons/Search/index.js +6 -21
  423. package/dist/icons/Swap/index.js +8 -23
  424. package/dist/icons/X/index.js +6 -21
  425. package/dist/index.js +2 -19
  426. package/dist/providers/ActionsProvider/SetViewActions/index.d.ts +6 -0
  427. package/dist/providers/ActionsProvider/SetViewActions/index.d.ts.map +1 -0
  428. package/dist/providers/ActionsProvider/SetViewActions/index.js +18 -0
  429. package/dist/providers/ActionsProvider/index.d.ts +3 -2
  430. package/dist/providers/ActionsProvider/index.d.ts.map +1 -1
  431. package/dist/providers/ActionsProvider/index.js +13 -72
  432. package/dist/providers/Auth/index.d.ts.map +1 -1
  433. package/dist/providers/Auth/index.js +56 -132
  434. package/dist/providers/Auth/types.js +2 -5
  435. package/dist/providers/ClientFunction/index.js +14 -40
  436. package/dist/providers/ComponentMapProvider/index.d.ts +4 -0
  437. package/dist/providers/ComponentMapProvider/index.d.ts.map +1 -1
  438. package/dist/providers/ComponentMapProvider/index.js +20 -67
  439. package/dist/providers/Config/index.js +6 -65
  440. package/dist/providers/CustomProvider/index.js +9 -24
  441. package/dist/providers/DocumentEvents/index.js +7 -66
  442. package/dist/providers/DocumentEvents/types.d.ts +1 -1
  443. package/dist/providers/DocumentEvents/types.d.ts.map +1 -1
  444. package/dist/providers/DocumentEvents/types.js +2 -5
  445. package/dist/providers/DocumentInfo/SetDocumentInfo/index.js +9 -19
  446. package/dist/providers/DocumentInfo/index.js +42 -100
  447. package/dist/providers/DocumentInfo/types.d.ts +1 -2
  448. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  449. package/dist/providers/DocumentInfo/types.js +2 -5
  450. package/dist/providers/EditDepth/index.js +5 -67
  451. package/dist/providers/FormQueryParams/index.js +7 -69
  452. package/dist/providers/ListInfo/index.js +9 -68
  453. package/dist/providers/ListInfo/types.d.ts +2 -2
  454. package/dist/providers/ListInfo/types.d.ts.map +1 -1
  455. package/dist/providers/ListInfo/types.js +2 -5
  456. package/dist/providers/Locale/index.d.ts.map +1 -1
  457. package/dist/providers/Locale/index.js +56 -97
  458. package/dist/providers/OperationProvider/index.js +5 -67
  459. package/dist/providers/Params/index.js +9 -67
  460. package/dist/providers/Portal/index.js +4 -19
  461. package/dist/providers/Preferences/index.js +25 -89
  462. package/dist/providers/Root/index.d.ts +2 -1
  463. package/dist/providers/Root/index.d.ts.map +1 -1
  464. package/dist/providers/Root/index.js +31 -82
  465. package/dist/providers/SearchParams/index.d.ts.map +1 -1
  466. package/dist/providers/SearchParams/index.js +14 -77
  467. package/dist/providers/SearchParams/types.js +2 -5
  468. package/dist/providers/SelectionProvider/index.js +23 -90
  469. package/dist/providers/Theme/index.d.ts +6 -3
  470. package/dist/providers/Theme/index.d.ts.map +1 -1
  471. package/dist/providers/Theme/index.js +42 -106
  472. package/dist/providers/Theme/types.d.ts +1 -0
  473. package/dist/providers/Theme/types.d.ts.map +1 -1
  474. package/dist/providers/Theme/types.js +2 -5
  475. package/dist/providers/Theme/utilities.js +3 -21
  476. package/dist/providers/Translation/index.d.ts +1 -6
  477. package/dist/providers/Translation/index.d.ts.map +1 -1
  478. package/dist/providers/Translation/index.js +12 -69
  479. package/dist/scss/toastify.scss +0 -1
  480. package/dist/templates/Default/NavHamburger/index.js +7 -22
  481. package/dist/templates/Default/Wrapper/index.js +7 -22
  482. package/dist/templates/Default/index.js +17 -68
  483. package/dist/templates/Default/types.js +2 -5
  484. package/dist/templates/Minimal/index.js +6 -21
  485. package/dist/templates/Minimal/types.js +2 -5
  486. package/dist/utilities/api.js +4 -19
  487. package/dist/utilities/arraysHaveSameStrings.js +2 -12
  488. package/dist/utilities/buildComponentMap/index.d.ts +3 -7
  489. package/dist/utilities/buildComponentMap/index.d.ts.map +1 -1
  490. package/dist/utilities/buildComponentMap/index.js +36 -45
  491. package/dist/utilities/buildComponentMap/mapActions.d.ts +7 -0
  492. package/dist/utilities/buildComponentMap/mapActions.d.ts.map +1 -0
  493. package/dist/utilities/buildComponentMap/mapActions.js +39 -0
  494. package/dist/utilities/buildComponentMap/mapFields.d.ts +2 -5
  495. package/dist/utilities/buildComponentMap/mapFields.d.ts.map +1 -1
  496. package/dist/utilities/buildComponentMap/mapFields.js +48 -114
  497. package/dist/utilities/buildComponentMap/types.d.ts +10 -0
  498. package/dist/utilities/buildComponentMap/types.d.ts.map +1 -1
  499. package/dist/utilities/buildComponentMap/types.js +2 -5
  500. package/dist/utilities/buildFieldSchemaMap/index.js +5 -15
  501. package/dist/utilities/buildFieldSchemaMap/traverseFields.js +9 -19
  502. package/dist/utilities/buildFieldSchemaMap/types.js +2 -5
  503. package/dist/utilities/canUseDOM.js +2 -12
  504. package/dist/utilities/findLocaleFromCode.js +4 -12
  505. package/dist/utilities/formatDate/getSupportedDateLocale.js +2 -12
  506. package/dist/utilities/formatDate/index.js +10 -69
  507. package/dist/utilities/formatDocTitle.d.ts +1 -2
  508. package/dist/utilities/formatDocTitle.d.ts.map +1 -1
  509. package/dist/utilities/formatDocTitle.js +6 -16
  510. package/dist/utilities/formatFields.js +3 -13
  511. package/dist/utilities/getFormState.d.ts +1 -2
  512. package/dist/utilities/getFormState.d.ts.map +1 -1
  513. package/dist/utilities/getFormState.js +2 -12
  514. package/dist/utilities/getOffsetTop.js +2 -12
  515. package/dist/utilities/getRequestLanguage.js +2 -12
  516. package/dist/utilities/getSupportedMonacoLocale.js +2 -12
  517. package/dist/utilities/groupNavItems.js +7 -25
  518. package/dist/utilities/scrollToID.js +2 -12
  519. package/dist/utilities/setsAreEqual.js +2 -12
  520. package/dist/utilities/withMergedProps/index.js +23 -21
  521. package/dist/views/Global/RenderCustomView.d.ts +0 -1
  522. package/dist/views/Global/RenderCustomView.js +0 -1
  523. package/package.json +7 -6
  524. package/dist/forms/FieldPathProvider/index.scss +0 -12
  525. package/dist/forms/FieldPathProvider/types.d.ts +0 -7
  526. package/dist/forms/FieldPathProvider/types.d.ts.map +0 -1
  527. package/dist/forms/FieldPathProvider/types.js +0 -6
  528. package/dist/providers/Auth/HydrateClientUser/index.d.ts +0 -7
  529. package/dist/providers/Auth/HydrateClientUser/index.d.ts.map +0 -1
  530. package/dist/providers/Auth/HydrateClientUser/index.js +0 -28
@@ -1,14 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "createRelationMap", {
6
- enumerable: true,
7
- get: function() {
8
- return createRelationMap;
9
- }
10
- });
11
- const createRelationMap = ({ hasMany, relationTo, value })=>{
1
+ export const createRelationMap = ({ hasMany, relationTo, value })=>{
12
2
  const hasMultipleRelations = Array.isArray(relationTo);
13
3
  let relationMap;
14
4
  if (Array.isArray(relationTo)) {
@@ -56,4 +46,4 @@ const createRelationMap = ({ hasMany, relationTo, value })=>{
56
46
  return relationMap;
57
47
  };
58
48
 
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9mb3Jtcy9maWVsZHMvUmVsYXRpb25zaGlwL2NyZWF0ZVJlbGF0aW9uTWFwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVmFsdWUgfSBmcm9tICcuL3R5cGVzJ1xuXG50eXBlIFJlbGF0aW9uTWFwID0ge1xuICBbcmVsYXRpb246IHN0cmluZ106IChudW1iZXIgfCBzdHJpbmcpW11cbn1cblxudHlwZSBDcmVhdGVSZWxhdGlvbk1hcCA9IChhcmdzOiB7XG4gIGhhc01hbnk6IGJvb2xlYW5cbiAgcmVsYXRpb25Ubzogc3RyaW5nIHwgc3RyaW5nW11cbiAgdmFsdWU6IFZhbHVlIHwgVmFsdWVbXSB8IG51bGwgLy8gcmVhbGx5IG5lZWRzIHRvIGJlIGBWYWx1ZVdpdGhSZWxhdGlvbmBcbn0pID0+IFJlbGF0aW9uTWFwXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVSZWxhdGlvbk1hcDogQ3JlYXRlUmVsYXRpb25NYXAgPSAoeyBoYXNNYW55LCByZWxhdGlvblRvLCB2YWx1ZSB9KSA9PiB7XG4gIGNvbnN0IGhhc011bHRpcGxlUmVsYXRpb25zID0gQXJyYXkuaXNBcnJheShyZWxhdGlvblRvKVxuICBsZXQgcmVsYXRpb25NYXA6IFJlbGF0aW9uTWFwXG4gIGlmIChBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pKSB7XG4gICAgcmVsYXRpb25NYXAgPSByZWxhdGlvblRvLnJlZHVjZSgobWFwLCBjdXJyZW50KSA9PiB7XG4gICAgICByZXR1cm4geyAuLi5tYXAsIFtjdXJyZW50XTogW10gfVxuICAgIH0sIHt9KVxuICB9IGVsc2Uge1xuICAgIHJlbGF0aW9uTWFwID0geyBbcmVsYXRpb25Ub106IFtdIH1cbiAgfVxuXG4gIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiByZWxhdGlvbk1hcFxuICB9XG5cbiAgY29uc3QgYWRkID0gKHJlbGF0aW9uOiBzdHJpbmcsIGlkOiB1bmtub3duKSA9PiB7XG4gICAgaWYgKCh0eXBlb2YgaWQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBpZCA9PT0gJ251bWJlcicpICYmIHR5cGVvZiByZWxhdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChyZWxhdGlvbk1hcFtyZWxhdGlvbl0pIHtcbiAgICAgICAgcmVsYXRpb25NYXBbcmVsYXRpb25dLnB1c2goaWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWxhdGlvbk1hcFtyZWxhdGlvbl0gPSBbaWRdXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGhhc01hbnkgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICB2YWx1ZS5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgaGFzTXVsdGlwbGVSZWxhdGlvbnMgJiZcbiAgICAgICAgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgJ3JlbGF0aW9uVG8nIGluIHZhbCAmJlxuICAgICAgICAndmFsdWUnIGluIHZhbFxuICAgICAgKSB7XG4gICAgICAgIGFkZCh2YWwucmVsYXRpb25UbywgdmFsLnZhbHVlKVxuICAgICAgfVxuXG4gICAgICBpZiAoIWhhc011bHRpcGxlUmVsYXRpb25zICYmIHR5cGVvZiByZWxhdGlvblRvID09PSAnc3RyaW5nJykge1xuICAgICAgICBhZGQocmVsYXRpb25UbywgdmFsKVxuICAgICAgfVxuICAgIH0pXG4gIH0gZWxzZSBpZiAoaGFzTXVsdGlwbGVSZWxhdGlvbnMgJiYgQXJyYXkuaXNBcnJheShyZWxhdGlvblRvKSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdyZWxhdGlvblRvJyBpbiB2YWx1ZSAmJiAndmFsdWUnIGluIHZhbHVlKSB7XG4gICAgICBhZGQodmFsdWUucmVsYXRpb25UbywgdmFsdWUudmFsdWUpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGFkZChyZWxhdGlvblRvLCB2YWx1ZSlcbiAgfVxuXG4gIHJldHVybiByZWxhdGlvbk1hcFxufVxuIl0sIm5hbWVzIjpbImNyZWF0ZVJlbGF0aW9uTWFwIiwiaGFzTWFueSIsInJlbGF0aW9uVG8iLCJ2YWx1ZSIsImhhc011bHRpcGxlUmVsYXRpb25zIiwiQXJyYXkiLCJpc0FycmF5IiwicmVsYXRpb25NYXAiLCJyZWR1Y2UiLCJtYXAiLCJjdXJyZW50IiwiYWRkIiwicmVsYXRpb24iLCJpZCIsInB1c2giLCJmb3JFYWNoIiwidmFsIl0sIm1hcHBpbmdzIjoiOzs7OytCQVlhQTs7O2VBQUFBOzs7QUFBTixNQUFNQSxvQkFBdUMsQ0FBQyxFQUFFQyxPQUFPLEVBQUVDLFVBQVUsRUFBRUMsS0FBSyxFQUFFO0lBQ2pGLE1BQU1DLHVCQUF1QkMsTUFBTUMsT0FBTyxDQUFDSjtJQUMzQyxJQUFJSztJQUNKLElBQUlGLE1BQU1DLE9BQU8sQ0FBQ0osYUFBYTtRQUM3QkssY0FBY0wsV0FBV00sTUFBTSxDQUFDLENBQUNDLEtBQUtDO1lBQ3BDLE9BQU87Z0JBQUUsR0FBR0QsR0FBRztnQkFBRSxDQUFDQyxRQUFRLEVBQUUsRUFBRTtZQUFDO1FBQ2pDLEdBQUcsQ0FBQztJQUNOLE9BQU87UUFDTEgsY0FBYztZQUFFLENBQUNMLFdBQVcsRUFBRSxFQUFFO1FBQUM7SUFDbkM7SUFFQSxJQUFJQyxVQUFVLE1BQU07UUFDbEIsT0FBT0k7SUFDVDtJQUVBLE1BQU1JLE1BQU0sQ0FBQ0MsVUFBa0JDO1FBQzdCLElBQUksQUFBQyxDQUFBLE9BQU9BLE9BQU8sWUFBWSxPQUFPQSxPQUFPLFFBQU8sS0FBTSxPQUFPRCxhQUFhLFVBQVU7WUFDdEYsSUFBSUwsV0FBVyxDQUFDSyxTQUFTLEVBQUU7Z0JBQ3pCTCxXQUFXLENBQUNLLFNBQVMsQ0FBQ0UsSUFBSSxDQUFDRDtZQUM3QixPQUFPO2dCQUNMTixXQUFXLENBQUNLLFNBQVMsR0FBRztvQkFBQ0M7aUJBQUc7WUFDOUI7UUFDRjtJQUNGO0lBRUEsSUFBSVosV0FBV0ksTUFBTUMsT0FBTyxDQUFDSCxRQUFRO1FBQ25DQSxNQUFNWSxPQUFPLENBQUMsQ0FBQ0M7WUFDYixJQUNFWix3QkFDQSxPQUFPWSxRQUFRLFlBQ2YsZ0JBQWdCQSxPQUNoQixXQUFXQSxLQUNYO2dCQUNBTCxJQUFJSyxJQUFJZCxVQUFVLEVBQUVjLElBQUliLEtBQUs7WUFDL0I7WUFFQSxJQUFJLENBQUNDLHdCQUF3QixPQUFPRixlQUFlLFVBQVU7Z0JBQzNEUyxJQUFJVCxZQUFZYztZQUNsQjtRQUNGO0lBQ0YsT0FBTyxJQUFJWix3QkFBd0JDLE1BQU1DLE9BQU8sQ0FBQ0osYUFBYTtRQUM1RCxJQUFJLE9BQU9DLFVBQVUsWUFBWSxnQkFBZ0JBLFNBQVMsV0FBV0EsT0FBTztZQUMxRVEsSUFBSVIsTUFBTUQsVUFBVSxFQUFFQyxNQUFNQSxLQUFLO1FBQ25DO0lBQ0YsT0FBTztRQUNMUSxJQUFJVCxZQUFZQztJQUNsQjtJQUVBLE9BQU9JO0FBQ1QifQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9mb3Jtcy9maWVsZHMvUmVsYXRpb25zaGlwL2NyZWF0ZVJlbGF0aW9uTWFwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVmFsdWUgfSBmcm9tICcuL3R5cGVzJ1xuXG50eXBlIFJlbGF0aW9uTWFwID0ge1xuICBbcmVsYXRpb246IHN0cmluZ106IChudW1iZXIgfCBzdHJpbmcpW11cbn1cblxudHlwZSBDcmVhdGVSZWxhdGlvbk1hcCA9IChhcmdzOiB7XG4gIGhhc01hbnk6IGJvb2xlYW5cbiAgcmVsYXRpb25Ubzogc3RyaW5nIHwgc3RyaW5nW11cbiAgdmFsdWU6IFZhbHVlIHwgVmFsdWVbXSB8IG51bGwgLy8gcmVhbGx5IG5lZWRzIHRvIGJlIGBWYWx1ZVdpdGhSZWxhdGlvbmBcbn0pID0+IFJlbGF0aW9uTWFwXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVSZWxhdGlvbk1hcDogQ3JlYXRlUmVsYXRpb25NYXAgPSAoeyBoYXNNYW55LCByZWxhdGlvblRvLCB2YWx1ZSB9KSA9PiB7XG4gIGNvbnN0IGhhc011bHRpcGxlUmVsYXRpb25zID0gQXJyYXkuaXNBcnJheShyZWxhdGlvblRvKVxuICBsZXQgcmVsYXRpb25NYXA6IFJlbGF0aW9uTWFwXG4gIGlmIChBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pKSB7XG4gICAgcmVsYXRpb25NYXAgPSByZWxhdGlvblRvLnJlZHVjZSgobWFwLCBjdXJyZW50KSA9PiB7XG4gICAgICByZXR1cm4geyAuLi5tYXAsIFtjdXJyZW50XTogW10gfVxuICAgIH0sIHt9KVxuICB9IGVsc2Uge1xuICAgIHJlbGF0aW9uTWFwID0geyBbcmVsYXRpb25Ub106IFtdIH1cbiAgfVxuXG4gIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiByZWxhdGlvbk1hcFxuICB9XG5cbiAgY29uc3QgYWRkID0gKHJlbGF0aW9uOiBzdHJpbmcsIGlkOiB1bmtub3duKSA9PiB7XG4gICAgaWYgKCh0eXBlb2YgaWQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBpZCA9PT0gJ251bWJlcicpICYmIHR5cGVvZiByZWxhdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChyZWxhdGlvbk1hcFtyZWxhdGlvbl0pIHtcbiAgICAgICAgcmVsYXRpb25NYXBbcmVsYXRpb25dLnB1c2goaWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWxhdGlvbk1hcFtyZWxhdGlvbl0gPSBbaWRdXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGhhc01hbnkgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICB2YWx1ZS5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgaGFzTXVsdGlwbGVSZWxhdGlvbnMgJiZcbiAgICAgICAgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgJ3JlbGF0aW9uVG8nIGluIHZhbCAmJlxuICAgICAgICAndmFsdWUnIGluIHZhbFxuICAgICAgKSB7XG4gICAgICAgIGFkZCh2YWwucmVsYXRpb25UbywgdmFsLnZhbHVlKVxuICAgICAgfVxuXG4gICAgICBpZiAoIWhhc011bHRpcGxlUmVsYXRpb25zICYmIHR5cGVvZiByZWxhdGlvblRvID09PSAnc3RyaW5nJykge1xuICAgICAgICBhZGQocmVsYXRpb25UbywgdmFsKVxuICAgICAgfVxuICAgIH0pXG4gIH0gZWxzZSBpZiAoaGFzTXVsdGlwbGVSZWxhdGlvbnMgJiYgQXJyYXkuaXNBcnJheShyZWxhdGlvblRvKSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdyZWxhdGlvblRvJyBpbiB2YWx1ZSAmJiAndmFsdWUnIGluIHZhbHVlKSB7XG4gICAgICBhZGQodmFsdWUucmVsYXRpb25UbywgdmFsdWUudmFsdWUpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGFkZChyZWxhdGlvblRvLCB2YWx1ZSlcbiAgfVxuXG4gIHJldHVybiByZWxhdGlvbk1hcFxufVxuIl0sIm5hbWVzIjpbImNyZWF0ZVJlbGF0aW9uTWFwIiwiaGFzTWFueSIsInJlbGF0aW9uVG8iLCJ2YWx1ZSIsImhhc011bHRpcGxlUmVsYXRpb25zIiwiQXJyYXkiLCJpc0FycmF5IiwicmVsYXRpb25NYXAiLCJyZWR1Y2UiLCJtYXAiLCJjdXJyZW50IiwiYWRkIiwicmVsYXRpb24iLCJpZCIsInB1c2giLCJmb3JFYWNoIiwidmFsIl0sIm1hcHBpbmdzIjoiQUFZQSxPQUFPLE1BQU1BLG9CQUF1QyxDQUFDLEVBQUVDLE9BQU8sRUFBRUMsVUFBVSxFQUFFQyxLQUFLLEVBQUU7SUFDakYsTUFBTUMsdUJBQXVCQyxNQUFNQyxPQUFPLENBQUNKO0lBQzNDLElBQUlLO0lBQ0osSUFBSUYsTUFBTUMsT0FBTyxDQUFDSixhQUFhO1FBQzdCSyxjQUFjTCxXQUFXTSxNQUFNLENBQUMsQ0FBQ0MsS0FBS0M7WUFDcEMsT0FBTztnQkFBRSxHQUFHRCxHQUFHO2dCQUFFLENBQUNDLFFBQVEsRUFBRSxFQUFFO1lBQUM7UUFDakMsR0FBRyxDQUFDO0lBQ04sT0FBTztRQUNMSCxjQUFjO1lBQUUsQ0FBQ0wsV0FBVyxFQUFFLEVBQUU7UUFBQztJQUNuQztJQUVBLElBQUlDLFVBQVUsTUFBTTtRQUNsQixPQUFPSTtJQUNUO0lBRUEsTUFBTUksTUFBTSxDQUFDQyxVQUFrQkM7UUFDN0IsSUFBSSxBQUFDLENBQUEsT0FBT0EsT0FBTyxZQUFZLE9BQU9BLE9BQU8sUUFBTyxLQUFNLE9BQU9ELGFBQWEsVUFBVTtZQUN0RixJQUFJTCxXQUFXLENBQUNLLFNBQVMsRUFBRTtnQkFDekJMLFdBQVcsQ0FBQ0ssU0FBUyxDQUFDRSxJQUFJLENBQUNEO1lBQzdCLE9BQU87Z0JBQ0xOLFdBQVcsQ0FBQ0ssU0FBUyxHQUFHO29CQUFDQztpQkFBRztZQUM5QjtRQUNGO0lBQ0Y7SUFFQSxJQUFJWixXQUFXSSxNQUFNQyxPQUFPLENBQUNILFFBQVE7UUFDbkNBLE1BQU1ZLE9BQU8sQ0FBQyxDQUFDQztZQUNiLElBQ0VaLHdCQUNBLE9BQU9ZLFFBQVEsWUFDZixnQkFBZ0JBLE9BQ2hCLFdBQVdBLEtBQ1g7Z0JBQ0FMLElBQUlLLElBQUlkLFVBQVUsRUFBRWMsSUFBSWIsS0FBSztZQUMvQjtZQUVBLElBQUksQ0FBQ0Msd0JBQXdCLE9BQU9GLGVBQWUsVUFBVTtnQkFDM0RTLElBQUlULFlBQVljO1lBQ2xCO1FBQ0Y7SUFDRixPQUFPLElBQUlaLHdCQUF3QkMsTUFBTUMsT0FBTyxDQUFDSixhQUFhO1FBQzVELElBQUksT0FBT0MsVUFBVSxZQUFZLGdCQUFnQkEsU0FBUyxXQUFXQSxPQUFPO1lBQzFFUSxJQUFJUixNQUFNRCxVQUFVLEVBQUVDLE1BQU1BLEtBQUs7UUFDbkM7SUFDRixPQUFPO1FBQ0xRLElBQUlULFlBQVlDO0lBQ2xCO0lBRUEsT0FBT0k7QUFDVCxFQUFDIn0=
@@ -1,14 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "findOptionsByValue", {
6
- enumerable: true,
7
- get: function() {
8
- return findOptionsByValue;
9
- }
10
- });
11
- const findOptionsByValue = ({ options, value })=>{
1
+ export const findOptionsByValue = ({ options, value })=>{
12
2
  if (value) {
13
3
  if (Array.isArray(value)) {
14
4
  return value.map((val)=>{
@@ -42,4 +32,4 @@ const findOptionsByValue = ({ options, value })=>{
42
32
  return undefined;
43
33
  };
44
34
 
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9mb3Jtcy9maWVsZHMvUmVsYXRpb25zaGlwL2ZpbmRPcHRpb25zQnlWYWx1ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE9wdGlvbiB9IGZyb20gJy4uLy4uLy4uL2VsZW1lbnRzL1JlYWN0U2VsZWN0L3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25Hcm91cCwgVmFsdWUgfSBmcm9tICcuL3R5cGVzJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIG9wdGlvbnM6IE9wdGlvbkdyb3VwW11cbiAgdmFsdWU6IFZhbHVlIHwgVmFsdWVbXVxufVxuXG5leHBvcnQgY29uc3QgZmluZE9wdGlvbnNCeVZhbHVlID0gKHsgb3B0aW9ucywgdmFsdWUgfTogQXJncyk6IE9wdGlvbiB8IE9wdGlvbltdID0+IHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUubWFwKCh2YWwpID0+IHtcbiAgICAgICAgbGV0IG1hdGNoZWRPcHRpb246IE9wdGlvblxuXG4gICAgICAgIG9wdGlvbnMuZm9yRWFjaCgob3B0R3JvdXApID0+IHtcbiAgICAgICAgICBpZiAoIW1hdGNoZWRPcHRpb24pIHtcbiAgICAgICAgICAgIG1hdGNoZWRPcHRpb24gPSBvcHRHcm91cC5vcHRpb25zLmZpbmQoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnZhbHVlID09PSB2YWwudmFsdWUgJiYgb3B0aW9uLnJlbGF0aW9uVG8gPT09IHZhbC5yZWxhdGlvblRvXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gdmFsID09PSBvcHRpb24udmFsdWVcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiBtYXRjaGVkT3B0aW9uXG4gICAgICB9KVxuICAgIH1cblxuICAgIGxldCBtYXRjaGVkT3B0aW9uOiBPcHRpb25cblxuICAgIG9wdGlvbnMuZm9yRWFjaCgob3B0R3JvdXApID0+IHtcbiAgICAgIGlmICghbWF0Y2hlZE9wdGlvbikge1xuICAgICAgICBtYXRjaGVkT3B0aW9uID0gb3B0R3JvdXAub3B0aW9ucy5maW5kKChvcHRpb24pID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUudmFsdWUgJiYgb3B0aW9uLnJlbGF0aW9uVG8gPT09IHZhbHVlLnJlbGF0aW9uVG9cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHZhbHVlID09PSBvcHRpb24udmFsdWVcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIG1hdGNoZWRPcHRpb25cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWRcbn1cbiJdLCJuYW1lcyI6WyJmaW5kT3B0aW9uc0J5VmFsdWUiLCJvcHRpb25zIiwidmFsdWUiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJ2YWwiLCJtYXRjaGVkT3B0aW9uIiwiZm9yRWFjaCIsIm9wdEdyb3VwIiwiZmluZCIsIm9wdGlvbiIsInJlbGF0aW9uVG8iLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBUWFBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLHFCQUFxQixDQUFDLEVBQUVDLE9BQU8sRUFBRUMsS0FBSyxFQUFRO0lBQ3pELElBQUlBLE9BQU87UUFDVCxJQUFJQyxNQUFNQyxPQUFPLENBQUNGLFFBQVE7WUFDeEIsT0FBT0EsTUFBTUcsR0FBRyxDQUFDLENBQUNDO2dCQUNoQixJQUFJQztnQkFFSk4sUUFBUU8sT0FBTyxDQUFDLENBQUNDO29CQUNmLElBQUksQ0FBQ0YsZUFBZTt3QkFDbEJBLGdCQUFnQkUsU0FBU1IsT0FBTyxDQUFDUyxJQUFJLENBQUMsQ0FBQ0M7NEJBQ3JDLElBQUksT0FBT0wsUUFBUSxVQUFVO2dDQUMzQixPQUFPSyxPQUFPVCxLQUFLLEtBQUtJLElBQUlKLEtBQUssSUFBSVMsT0FBT0MsVUFBVSxLQUFLTixJQUFJTSxVQUFVOzRCQUMzRTs0QkFFQSxPQUFPTixRQUFRSyxPQUFPVCxLQUFLO3dCQUM3QjtvQkFDRjtnQkFDRjtnQkFFQSxPQUFPSztZQUNUO1FBQ0Y7UUFFQSxJQUFJQTtRQUVKTixRQUFRTyxPQUFPLENBQUMsQ0FBQ0M7WUFDZixJQUFJLENBQUNGLGVBQWU7Z0JBQ2xCQSxnQkFBZ0JFLFNBQVNSLE9BQU8sQ0FBQ1MsSUFBSSxDQUFDLENBQUNDO29CQUNyQyxJQUFJLE9BQU9ULFVBQVUsVUFBVTt3QkFDN0IsT0FBT1MsT0FBT1QsS0FBSyxLQUFLQSxNQUFNQSxLQUFLLElBQUlTLE9BQU9DLFVBQVUsS0FBS1YsTUFBTVUsVUFBVTtvQkFDL0U7b0JBQ0EsT0FBT1YsVUFBVVMsT0FBT1QsS0FBSztnQkFDL0I7WUFDRjtRQUNGO1FBRUEsT0FBT0s7SUFDVDtJQUVBLE9BQU9NO0FBQ1QifQ==
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9mb3Jtcy9maWVsZHMvUmVsYXRpb25zaGlwL2ZpbmRPcHRpb25zQnlWYWx1ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE9wdGlvbiB9IGZyb20gJy4uLy4uLy4uL2VsZW1lbnRzL1JlYWN0U2VsZWN0L3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25Hcm91cCwgVmFsdWUgfSBmcm9tICcuL3R5cGVzJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIG9wdGlvbnM6IE9wdGlvbkdyb3VwW11cbiAgdmFsdWU6IFZhbHVlIHwgVmFsdWVbXVxufVxuXG5leHBvcnQgY29uc3QgZmluZE9wdGlvbnNCeVZhbHVlID0gKHsgb3B0aW9ucywgdmFsdWUgfTogQXJncyk6IE9wdGlvbiB8IE9wdGlvbltdID0+IHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUubWFwKCh2YWwpID0+IHtcbiAgICAgICAgbGV0IG1hdGNoZWRPcHRpb246IE9wdGlvblxuXG4gICAgICAgIG9wdGlvbnMuZm9yRWFjaCgob3B0R3JvdXApID0+IHtcbiAgICAgICAgICBpZiAoIW1hdGNoZWRPcHRpb24pIHtcbiAgICAgICAgICAgIG1hdGNoZWRPcHRpb24gPSBvcHRHcm91cC5vcHRpb25zLmZpbmQoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnZhbHVlID09PSB2YWwudmFsdWUgJiYgb3B0aW9uLnJlbGF0aW9uVG8gPT09IHZhbC5yZWxhdGlvblRvXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gdmFsID09PSBvcHRpb24udmFsdWVcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiBtYXRjaGVkT3B0aW9uXG4gICAgICB9KVxuICAgIH1cblxuICAgIGxldCBtYXRjaGVkT3B0aW9uOiBPcHRpb25cblxuICAgIG9wdGlvbnMuZm9yRWFjaCgob3B0R3JvdXApID0+IHtcbiAgICAgIGlmICghbWF0Y2hlZE9wdGlvbikge1xuICAgICAgICBtYXRjaGVkT3B0aW9uID0gb3B0R3JvdXAub3B0aW9ucy5maW5kKChvcHRpb24pID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUudmFsdWUgJiYgb3B0aW9uLnJlbGF0aW9uVG8gPT09IHZhbHVlLnJlbGF0aW9uVG9cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHZhbHVlID09PSBvcHRpb24udmFsdWVcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIG1hdGNoZWRPcHRpb25cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWRcbn1cbiJdLCJuYW1lcyI6WyJmaW5kT3B0aW9uc0J5VmFsdWUiLCJvcHRpb25zIiwidmFsdWUiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJ2YWwiLCJtYXRjaGVkT3B0aW9uIiwiZm9yRWFjaCIsIm9wdEdyb3VwIiwiZmluZCIsIm9wdGlvbiIsInJlbGF0aW9uVG8iLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sTUFBTUEscUJBQXFCLENBQUMsRUFBRUMsT0FBTyxFQUFFQyxLQUFLLEVBQVE7SUFDekQsSUFBSUEsT0FBTztRQUNULElBQUlDLE1BQU1DLE9BQU8sQ0FBQ0YsUUFBUTtZQUN4QixPQUFPQSxNQUFNRyxHQUFHLENBQUMsQ0FBQ0M7Z0JBQ2hCLElBQUlDO2dCQUVKTixRQUFRTyxPQUFPLENBQUMsQ0FBQ0M7b0JBQ2YsSUFBSSxDQUFDRixlQUFlO3dCQUNsQkEsZ0JBQWdCRSxTQUFTUixPQUFPLENBQUNTLElBQUksQ0FBQyxDQUFDQzs0QkFDckMsSUFBSSxPQUFPTCxRQUFRLFVBQVU7Z0NBQzNCLE9BQU9LLE9BQU9ULEtBQUssS0FBS0ksSUFBSUosS0FBSyxJQUFJUyxPQUFPQyxVQUFVLEtBQUtOLElBQUlNLFVBQVU7NEJBQzNFOzRCQUVBLE9BQU9OLFFBQVFLLE9BQU9ULEtBQUs7d0JBQzdCO29CQUNGO2dCQUNGO2dCQUVBLE9BQU9LO1lBQ1Q7UUFDRjtRQUVBLElBQUlBO1FBRUpOLFFBQVFPLE9BQU8sQ0FBQyxDQUFDQztZQUNmLElBQUksQ0FBQ0YsZUFBZTtnQkFDbEJBLGdCQUFnQkUsU0FBU1IsT0FBTyxDQUFDUyxJQUFJLENBQUMsQ0FBQ0M7b0JBQ3JDLElBQUksT0FBT1QsVUFBVSxVQUFVO3dCQUM3QixPQUFPUyxPQUFPVCxLQUFLLEtBQUtBLE1BQU1BLEtBQUssSUFBSVMsT0FBT0MsVUFBVSxLQUFLVixNQUFNVSxVQUFVO29CQUMvRTtvQkFDQSxPQUFPVixVQUFVUyxPQUFPVCxLQUFLO2dCQUMvQjtZQUNGO1FBQ0Y7UUFFQSxPQUFPSztJQUNUO0lBRUEsT0FBT007QUFDVCxFQUFDIn0=
@@ -1,86 +1,30 @@
1
1
  'use client';
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "default", {
7
- enumerable: true,
8
- get: function() {
9
- return _default;
10
- }
11
- });
12
- const _utilities = require("payload/utilities");
13
- const _qs = /*#__PURE__*/ _interop_require_default(require("qs"));
14
- const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
15
- const _GetFilterOptions = require("../../../elements/GetFilterOptions");
16
- const _ReactSelect = /*#__PURE__*/ _interop_require_default(require("../../../elements/ReactSelect"));
17
- const _useDebouncedCallback = require("../../../hooks/useDebouncedCallback");
18
- const _Auth = require("../../../providers/Auth");
19
- const _Config = require("../../../providers/Config");
20
- const _Locale = require("../../../providers/Locale");
21
- const _Translation = require("../../../providers/Translation");
22
- const _context = require("../../Form/context");
23
- const _useField = /*#__PURE__*/ _interop_require_default(require("../../useField"));
24
- const _withCondition = require("../../withCondition");
25
- const _shared = require("../shared");
26
- const _AddNew = require("./AddNew");
27
- const _createRelationMap = require("./createRelationMap");
28
- const _findOptionsByValue = require("./findOptionsByValue");
29
- require("./index.scss");
30
- const _optionsReducer = /*#__PURE__*/ _interop_require_default(require("./optionsReducer"));
31
- const _MultiValueLabel = require("./select-components/MultiValueLabel");
32
- const _SingleValue = require("./select-components/SingleValue");
33
- function _interop_require_default(obj) {
34
- return obj && obj.__esModule ? obj : {
35
- default: obj
36
- };
37
- }
38
- function _getRequireWildcardCache(nodeInterop) {
39
- if (typeof WeakMap !== "function") return null;
40
- var cacheBabelInterop = new WeakMap();
41
- var cacheNodeInterop = new WeakMap();
42
- return (_getRequireWildcardCache = function(nodeInterop) {
43
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
44
- })(nodeInterop);
45
- }
46
- function _interop_require_wildcard(obj, nodeInterop) {
47
- if (!nodeInterop && obj && obj.__esModule) {
48
- return obj;
49
- }
50
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
51
- return {
52
- default: obj
53
- };
54
- }
55
- var cache = _getRequireWildcardCache(nodeInterop);
56
- if (cache && cache.has(obj)) {
57
- return cache.get(obj);
58
- }
59
- var newObj = {
60
- __proto__: null
61
- };
62
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
63
- for(var key in obj){
64
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
65
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
66
- if (desc && (desc.get || desc.set)) {
67
- Object.defineProperty(newObj, key, desc);
68
- } else {
69
- newObj[key] = obj[key];
70
- }
71
- }
72
- }
73
- newObj.default = obj;
74
- if (cache) {
75
- cache.set(obj, newObj);
76
- }
77
- return newObj;
78
- }
2
+ import { wordBoundariesRegex } from 'payload/utilities';
3
+ import qs from 'qs';
4
+ import React, { useCallback, useEffect, useReducer, useRef, useState } from 'react';
5
+ import { GetFilterOptions } from '../../../elements/GetFilterOptions';
6
+ import ReactSelect from '../../../elements/ReactSelect';
7
+ import { useDebouncedCallback } from '../../../hooks/useDebouncedCallback';
8
+ import { useAuth } from '../../../providers/Auth';
9
+ import { useConfig } from '../../../providers/Config';
10
+ import { useLocale } from '../../../providers/Locale';
11
+ import { useTranslation } from '../../../providers/Translation';
12
+ import { useFormProcessing } from '../../Form/context';
13
+ import useField from '../../useField';
14
+ import { withCondition } from '../../withCondition';
15
+ import { fieldBaseClass } from '../shared';
16
+ import { AddNewRelation } from './AddNew';
17
+ import { createRelationMap } from './createRelationMap';
18
+ import { findOptionsByValue } from './findOptionsByValue';
19
+ import './index.scss';
20
+ import optionsReducer from './optionsReducer';
21
+ import { MultiValueLabel } from './select-components/MultiValueLabel';
22
+ import { SingleValue } from './select-components/SingleValue';
79
23
  const maxResultsPerRequest = 10;
80
24
  const baseClass = 'relationship';
81
25
  const Relationship = (props)=>{
82
26
  const { name, Description, Error, Label, className, path: pathFromProps, readOnly, required, style, validate, width } = props;
83
- const config = (0, _Config.useConfig)();
27
+ const config = useConfig();
84
28
  const { collections, routes: { api }, serverURL } = config;
85
29
  const relationTo = 'relationTo' in props ? props?.relationTo : undefined;
86
30
  const hasMany = 'hasMany' in props ? props?.hasMany : undefined;
@@ -88,22 +32,22 @@ const Relationship = (props)=>{
88
32
  const sortOptions = 'sortOptions' in props ? props?.sortOptions : undefined;
89
33
  const isSortable = 'isSortable' in props ? props?.isSortable : true;
90
34
  const allowCreate = 'allowCreate' in props ? props?.allowCreate : true;
91
- const { i18n, t } = (0, _Translation.useTranslation)();
92
- const { permissions } = (0, _Auth.useAuth)();
93
- const { code: locale } = (0, _Locale.useLocale)();
94
- const formProcessing = (0, _context.useFormProcessing)();
35
+ const { i18n, t } = useTranslation();
36
+ const { permissions } = useAuth();
37
+ const { code: locale } = useLocale();
38
+ const formProcessing = useFormProcessing();
95
39
  const hasMultipleRelations = Array.isArray(relationTo);
96
- const [options, dispatchOptions] = (0, _react.useReducer)(_optionsReducer.default, []);
97
- const [lastFullyLoadedRelation, setLastFullyLoadedRelation] = (0, _react.useState)(-1);
98
- const [lastLoadedPage, setLastLoadedPage] = (0, _react.useState)({});
99
- const [errorLoading, setErrorLoading] = (0, _react.useState)('');
100
- const [filterOptionsResult, setFilterOptionsResult] = (0, _react.useState)();
101
- const [search, setSearch] = (0, _react.useState)('');
102
- const [isLoading, setIsLoading] = (0, _react.useState)(false);
103
- const [hasLoadedFirstPage, setHasLoadedFirstPage] = (0, _react.useState)(false);
104
- const [enableWordBoundarySearch, setEnableWordBoundarySearch] = (0, _react.useState)(false);
105
- const firstRun = (0, _react.useRef)(true);
106
- const memoizedValidate = (0, _react.useCallback)((value, validationOptions)=>{
40
+ const [options, dispatchOptions] = useReducer(optionsReducer, []);
41
+ const [lastFullyLoadedRelation, setLastFullyLoadedRelation] = useState(-1);
42
+ const [lastLoadedPage, setLastLoadedPage] = useState({});
43
+ const [errorLoading, setErrorLoading] = useState('');
44
+ const [filterOptionsResult, setFilterOptionsResult] = useState();
45
+ const [search, setSearch] = useState('');
46
+ const [isLoading, setIsLoading] = useState(false);
47
+ const [hasLoadedFirstPage, setHasLoadedFirstPage] = useState(false);
48
+ const [enableWordBoundarySearch, setEnableWordBoundarySearch] = useState(false);
49
+ const firstRun = useRef(true);
50
+ const memoizedValidate = useCallback((value, validationOptions)=>{
107
51
  if (typeof validate === 'function') {
108
52
  return validate(value, {
109
53
  ...validationOptions,
@@ -114,12 +58,12 @@ const Relationship = (props)=>{
114
58
  validate,
115
59
  required
116
60
  ]);
117
- const { initialValue, path, setValue, showError, value } = (0, _useField.default)({
61
+ const { initialValue, path, setValue, showError, value } = useField({
118
62
  path: pathFromProps || name,
119
63
  validate: memoizedValidate
120
64
  });
121
- const [drawerIsOpen, setDrawerIsOpen] = (0, _react.useState)(false);
122
- const getResults = (0, _react.useCallback)(async ({ lastFullyLoadedRelation: lastFullyLoadedRelationArg, onSuccess, search: searchArg, sort, value: valueArg })=>{
65
+ const [drawerIsOpen, setDrawerIsOpen] = useState(false);
66
+ const getResults = useCallback(async ({ lastFullyLoadedRelation: lastFullyLoadedRelationArg, onSuccess, search: searchArg, sort, value: valueArg })=>{
123
67
  if (!permissions) {
124
68
  return;
125
69
  }
@@ -129,7 +73,7 @@ const Relationship = (props)=>{
129
73
  ];
130
74
  const relationsToFetch = lastFullyLoadedRelationToUse === -1 ? relations : relations.slice(lastFullyLoadedRelationToUse + 1);
131
75
  let resultsFetched = 0;
132
- const relationMap = (0, _createRelationMap.createRelationMap)({
76
+ const relationMap = createRelationMap({
133
77
  hasMany,
134
78
  relationTo,
135
79
  value: valueArg
@@ -185,7 +129,7 @@ const Relationship = (props)=>{
185
129
  if (relationFilterOption && typeof relationFilterOption !== 'boolean') {
186
130
  query.where.and.push(relationFilterOption);
187
131
  }
188
- const response = await fetch(`${serverURL}${api}/${relation}?${_qs.default.stringify(query)}`, {
132
+ const response = await fetch(`${serverURL}${api}/${relation}?${qs.stringify(query)}`, {
189
133
  credentials: 'include',
190
134
  headers: {
191
135
  'Accept-Language': i18n.language
@@ -252,7 +196,7 @@ const Relationship = (props)=>{
252
196
  config,
253
197
  t
254
198
  ]);
255
- const updateSearch = (0, _useDebouncedCallback.useDebouncedCallback)((searchArg, valueArg)=>{
199
+ const updateSearch = useDebouncedCallback((searchArg, valueArg)=>{
256
200
  getResults({
257
201
  search: searchArg,
258
202
  sort: true,
@@ -260,7 +204,7 @@ const Relationship = (props)=>{
260
204
  });
261
205
  setSearch(searchArg);
262
206
  }, 300);
263
- const handleInputChange = (0, _react.useCallback)((searchArg, valueArg)=>{
207
+ const handleInputChange = useCallback((searchArg, valueArg)=>{
264
208
  if (search !== searchArg) {
265
209
  setLastLoadedPage({});
266
210
  updateSearch(searchArg, valueArg, searchArg !== '');
@@ -272,8 +216,8 @@ const Relationship = (props)=>{
272
216
  // ///////////////////////////////////
273
217
  // Ensure we have an option for each value
274
218
  // ///////////////////////////////////
275
- (0, _react.useEffect)(()=>{
276
- const relationMap = (0, _createRelationMap.createRelationMap)({
219
+ useEffect(()=>{
220
+ const relationMap = createRelationMap({
277
221
  hasMany,
278
222
  relationTo,
279
223
  value
@@ -296,7 +240,7 @@ const Relationship = (props)=>{
296
240
  }
297
241
  };
298
242
  if (!errorLoading) {
299
- const response = await fetch(`${serverURL}${api}/${relation}?${_qs.default.stringify(query)}`, {
243
+ const response = await fetch(`${serverURL}${api}/${relation}?${qs.stringify(query)}`, {
300
244
  credentials: 'include',
301
245
  headers: {
302
246
  'Accept-Language': i18n.language
@@ -337,7 +281,7 @@ const Relationship = (props)=>{
337
281
  config
338
282
  ]);
339
283
  // Determine if we should switch to word boundary search
340
- (0, _react.useEffect)(()=>{
284
+ useEffect(()=>{
341
285
  const relations = Array.isArray(relationTo) ? relationTo : [
342
286
  relationTo
343
287
  ];
@@ -353,7 +297,7 @@ const Relationship = (props)=>{
353
297
  ]);
354
298
  // When (`relationTo` || `filterOptionsResult` || `locale`) changes, reset component
355
299
  // Note - effect should not run on first run
356
- (0, _react.useEffect)(()=>{
300
+ useEffect(()=>{
357
301
  if (firstRun.current) {
358
302
  firstRun.current = false;
359
303
  return;
@@ -369,7 +313,7 @@ const Relationship = (props)=>{
369
313
  filterOptionsResult,
370
314
  locale
371
315
  ]);
372
- const onSave = (0, _react.useCallback)((args)=>{
316
+ const onSave = useCallback((args)=>{
373
317
  dispatchOptions({
374
318
  type: 'UPDATE',
375
319
  collection: args.collectionConfig,
@@ -383,11 +327,11 @@ const Relationship = (props)=>{
383
327
  i18n,
384
328
  config
385
329
  ]);
386
- const filterOption = (0, _react.useCallback)((item, searchFilter)=>{
330
+ const filterOption = useCallback((item, searchFilter)=>{
387
331
  if (!searchFilter) {
388
332
  return true;
389
333
  }
390
- const r = (0, _utilities.wordBoundariesRegex)(searchFilter || '');
334
+ const r = wordBoundariesRegex(searchFilter || '');
391
335
  // breaking the labels to search into smaller parts increases performance
392
336
  const breakApartThreshold = 250;
393
337
  let string = item.label;
@@ -402,14 +346,14 @@ const Relationship = (props)=>{
402
346
  }
403
347
  return r.test(string.slice(-breakApartThreshold));
404
348
  }, []);
405
- const valueToRender = (0, _findOptionsByValue.findOptionsByValue)({
349
+ const valueToRender = findOptionsByValue({
406
350
  options,
407
351
  value
408
352
  });
409
353
  if (!Array.isArray(valueToRender) && valueToRender?.value === 'null') valueToRender.value = null;
410
- return /*#__PURE__*/ _react.default.createElement("div", {
354
+ return /*#__PURE__*/ React.createElement("div", {
411
355
  className: [
412
- _shared.fieldBaseClass,
356
+ fieldBaseClass,
413
357
  baseClass,
414
358
  className,
415
359
  showError && 'error',
@@ -421,19 +365,19 @@ const Relationship = (props)=>{
421
365
  ...style,
422
366
  width
423
367
  }
424
- }, Error, Label, /*#__PURE__*/ _react.default.createElement(_GetFilterOptions.GetFilterOptions, {
368
+ }, Error, Label, /*#__PURE__*/ React.createElement(GetFilterOptions, {
425
369
  filterOptions,
426
370
  filterOptionsResult,
427
371
  path,
428
372
  relationTo,
429
373
  setFilterOptionsResult
430
- }), !errorLoading && /*#__PURE__*/ _react.default.createElement("div", {
374
+ }), !errorLoading && /*#__PURE__*/ React.createElement("div", {
431
375
  className: `${baseClass}__wrap`
432
- }, /*#__PURE__*/ _react.default.createElement(_ReactSelect.default, {
376
+ }, /*#__PURE__*/ React.createElement(ReactSelect, {
433
377
  backspaceRemovesValue: !drawerIsOpen,
434
378
  components: {
435
- MultiValueLabel: _MultiValueLabel.MultiValueLabel,
436
- SingleValue: _SingleValue.SingleValue
379
+ MultiValueLabel,
380
+ SingleValue
437
381
  },
438
382
  customProps: {
439
383
  disableKeyDown: drawerIsOpen,
@@ -492,7 +436,7 @@ const Relationship = (props)=>{
492
436
  options: options,
493
437
  showError: showError,
494
438
  value: valueToRender ?? null
495
- }), !readOnly && allowCreate && /*#__PURE__*/ _react.default.createElement(_AddNew.AddNewRelation, {
439
+ }), !readOnly && allowCreate && /*#__PURE__*/ React.createElement(AddNewRelation, {
496
440
  dispatchOptions,
497
441
  hasMany,
498
442
  options,
@@ -500,10 +444,10 @@ const Relationship = (props)=>{
500
444
  relationTo,
501
445
  setValue,
502
446
  value
503
- })), errorLoading && /*#__PURE__*/ _react.default.createElement("div", {
447
+ })), errorLoading && /*#__PURE__*/ React.createElement("div", {
504
448
  className: `${baseClass}__error-loading`
505
449
  }, errorLoading), Description);
506
450
  };
507
- const _default = (0, _withCondition.withCondition)(Relationship);
451
+ export default withCondition(Relationship);
508
452
 
509
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9mb3Jtcy9maWVsZHMvUmVsYXRpb25zaGlwL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgUGFnaW5hdGVkRG9jcyB9IGZyb20gJ3BheWxvYWQvZGF0YWJhc2UnXG5pbXBvcnQgdHlwZSB7IFdoZXJlIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHsgd29yZEJvdW5kYXJpZXNSZWdleCB9IGZyb20gJ3BheWxvYWQvdXRpbGl0aWVzJ1xuaW1wb3J0IHFzIGZyb20gJ3FzJ1xuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZHVjZXIsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHR5cGUgeyBEb2N1bWVudERyYXdlclByb3BzIH0gZnJvbSAnLi4vLi4vLi4vZWxlbWVudHMvRG9jdW1lbnREcmF3ZXIvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpbHRlck9wdGlvbnNSZXN1bHQsIEdldFJlc3VsdHMsIE9wdGlvbiwgUHJvcHMsIFZhbHVlIH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgR2V0RmlsdGVyT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2VsZW1lbnRzL0dldEZpbHRlck9wdGlvbnMnXG5pbXBvcnQgUmVhY3RTZWxlY3QgZnJvbSAnLi4vLi4vLi4vZWxlbWVudHMvUmVhY3RTZWxlY3QnXG5pbXBvcnQgeyB1c2VEZWJvdW5jZWRDYWxsYmFjayB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZURlYm91bmNlZENhbGxiYWNrJ1xuaW1wb3J0IHsgdXNlQXV0aCB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9BdXRoJ1xuaW1wb3J0IHsgdXNlQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL0NvbmZpZydcbmltcG9ydCB7IHVzZUxvY2FsZSB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9Mb2NhbGUnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9UcmFuc2xhdGlvbidcbmltcG9ydCB7IHVzZUZvcm1Qcm9jZXNzaW5nIH0gZnJvbSAnLi4vLi4vRm9ybS9jb250ZXh0J1xuaW1wb3J0IHVzZUZpZWxkIGZyb20gJy4uLy4uL3VzZUZpZWxkJ1xuaW1wb3J0IHsgd2l0aENvbmRpdGlvbiB9IGZyb20gJy4uLy4uL3dpdGhDb25kaXRpb24nXG5pbXBvcnQgeyBmaWVsZEJhc2VDbGFzcyB9IGZyb20gJy4uL3NoYXJlZCdcbmltcG9ydCB7IEFkZE5ld1JlbGF0aW9uIH0gZnJvbSAnLi9BZGROZXcnXG5pbXBvcnQgeyBjcmVhdGVSZWxhdGlvbk1hcCB9IGZyb20gJy4vY3JlYXRlUmVsYXRpb25NYXAnXG5pbXBvcnQgeyBmaW5kT3B0aW9uc0J5VmFsdWUgfSBmcm9tICcuL2ZpbmRPcHRpb25zQnlWYWx1ZSdcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuaW1wb3J0IG9wdGlvbnNSZWR1Y2VyIGZyb20gJy4vb3B0aW9uc1JlZHVjZXInXG5pbXBvcnQgeyBNdWx0aVZhbHVlTGFiZWwgfSBmcm9tICcuL3NlbGVjdC1jb21wb25lbnRzL011bHRpVmFsdWVMYWJlbCdcbmltcG9ydCB7IFNpbmdsZVZhbHVlIH0gZnJvbSAnLi9zZWxlY3QtY29tcG9uZW50cy9TaW5nbGVWYWx1ZSdcblxuY29uc3QgbWF4UmVzdWx0c1BlclJlcXVlc3QgPSAxMFxuXG5jb25zdCBiYXNlQ2xhc3MgPSAncmVsYXRpb25zaGlwJ1xuXG5jb25zdCBSZWxhdGlvbnNoaXA6IFJlYWN0LkZDPFByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgbmFtZSxcbiAgICBEZXNjcmlwdGlvbixcbiAgICBFcnJvcixcbiAgICBMYWJlbCxcbiAgICBjbGFzc05hbWUsXG4gICAgcGF0aDogcGF0aEZyb21Qcm9wcyxcbiAgICByZWFkT25seSxcbiAgICByZXF1aXJlZCxcbiAgICBzdHlsZSxcbiAgICB2YWxpZGF0ZSxcbiAgICB3aWR0aCxcbiAgfSA9IHByb3BzXG5cbiAgY29uc3QgY29uZmlnID0gdXNlQ29uZmlnKClcblxuICBjb25zdCB7XG4gICAgY29sbGVjdGlvbnMsXG4gICAgcm91dGVzOiB7IGFwaSB9LFxuICAgIHNlcnZlclVSTCxcbiAgfSA9IGNvbmZpZ1xuXG4gIGNvbnN0IHJlbGF0aW9uVG8gPSAncmVsYXRpb25UbycgaW4gcHJvcHMgPyBwcm9wcz8ucmVsYXRpb25UbyA6IHVuZGVmaW5lZFxuICBjb25zdCBoYXNNYW55ID0gJ2hhc01hbnknIGluIHByb3BzID8gcHJvcHM/Lmhhc01hbnkgOiB1bmRlZmluZWRcbiAgY29uc3QgZmlsdGVyT3B0aW9ucyA9ICdmaWx0ZXJPcHRpb25zJyBpbiBwcm9wcyA/IHByb3BzPy5maWx0ZXJPcHRpb25zIDogdW5kZWZpbmVkXG4gIGNvbnN0IHNvcnRPcHRpb25zID0gJ3NvcnRPcHRpb25zJyBpbiBwcm9wcyA/IHByb3BzPy5zb3J0T3B0aW9ucyA6IHVuZGVmaW5lZFxuICBjb25zdCBpc1NvcnRhYmxlID0gJ2lzU29ydGFibGUnIGluIHByb3BzID8gcHJvcHM/LmlzU29ydGFibGUgOiB0cnVlXG4gIGNvbnN0IGFsbG93Q3JlYXRlID0gJ2FsbG93Q3JlYXRlJyBpbiBwcm9wcyA/IHByb3BzPy5hbGxvd0NyZWF0ZSA6IHRydWVcblxuICBjb25zdCB7IGkxOG4sIHQgfSA9IHVzZVRyYW5zbGF0aW9uKClcbiAgY29uc3QgeyBwZXJtaXNzaW9ucyB9ID0gdXNlQXV0aCgpXG4gIGNvbnN0IHsgY29kZTogbG9jYWxlIH0gPSB1c2VMb2NhbGUoKVxuICBjb25zdCBmb3JtUHJvY2Vzc2luZyA9IHVzZUZvcm1Qcm9jZXNzaW5nKClcbiAgY29uc3QgaGFzTXVsdGlwbGVSZWxhdGlvbnMgPSBBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pXG4gIGNvbnN0IFtvcHRpb25zLCBkaXNwYXRjaE9wdGlvbnNdID0gdXNlUmVkdWNlcihvcHRpb25zUmVkdWNlciwgW10pXG4gIGNvbnN0IFtsYXN0RnVsbHlMb2FkZWRSZWxhdGlvbiwgc2V0TGFzdEZ1bGx5TG9hZGVkUmVsYXRpb25dID0gdXNlU3RhdGUoLTEpXG4gIGNvbnN0IFtsYXN0TG9hZGVkUGFnZSwgc2V0TGFzdExvYWRlZFBhZ2VdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgbnVtYmVyPj4oe30pXG4gIGNvbnN0IFtlcnJvckxvYWRpbmcsIHNldEVycm9yTG9hZGluZ10gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3QgW2ZpbHRlck9wdGlvbnNSZXN1bHQsIHNldEZpbHRlck9wdGlvbnNSZXN1bHRdID0gdXNlU3RhdGU8RmlsdGVyT3B0aW9uc1Jlc3VsdD4oKVxuICBjb25zdCBbc2VhcmNoLCBzZXRTZWFyY2hdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2hhc0xvYWRlZEZpcnN0UGFnZSwgc2V0SGFzTG9hZGVkRmlyc3RQYWdlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZW5hYmxlV29yZEJvdW5kYXJ5U2VhcmNoLCBzZXRFbmFibGVXb3JkQm91bmRhcnlTZWFyY2hdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IGZpcnN0UnVuID0gdXNlUmVmKHRydWUpXG5cbiAgY29uc3QgbWVtb2l6ZWRWYWxpZGF0ZSA9IHVzZUNhbGxiYWNrKFxuICAgICh2YWx1ZSwgdmFsaWRhdGlvbk9wdGlvbnMpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdmFsaWRhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlKHZhbHVlLCB7IC4uLnZhbGlkYXRpb25PcHRpb25zLCByZXF1aXJlZCB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW3ZhbGlkYXRlLCByZXF1aXJlZF0sXG4gIClcblxuICBjb25zdCB7IGluaXRpYWxWYWx1ZSwgcGF0aCwgc2V0VmFsdWUsIHNob3dFcnJvciwgdmFsdWUgfSA9IHVzZUZpZWxkPFZhbHVlIHwgVmFsdWVbXT4oe1xuICAgIHBhdGg6IHBhdGhGcm9tUHJvcHMgfHwgbmFtZSxcbiAgICB2YWxpZGF0ZTogbWVtb2l6ZWRWYWxpZGF0ZSxcbiAgfSlcblxuICBjb25zdCBbZHJhd2VySXNPcGVuLCBzZXREcmF3ZXJJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgZ2V0UmVzdWx0czogR2V0UmVzdWx0cyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh7XG4gICAgICBsYXN0RnVsbHlMb2FkZWRSZWxhdGlvbjogbGFzdEZ1bGx5TG9hZGVkUmVsYXRpb25BcmcsXG4gICAgICBvblN1Y2Nlc3MsXG4gICAgICBzZWFyY2g6IHNlYXJjaEFyZyxcbiAgICAgIHNvcnQsXG4gICAgICB2YWx1ZTogdmFsdWVBcmcsXG4gICAgfSkgPT4ge1xuICAgICAgaWYgKCFwZXJtaXNzaW9ucykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IGxhc3RGdWxseUxvYWRlZFJlbGF0aW9uVG9Vc2UgPVxuICAgICAgICB0eXBlb2YgbGFzdEZ1bGx5TG9hZGVkUmVsYXRpb25BcmcgIT09ICd1bmRlZmluZWQnID8gbGFzdEZ1bGx5TG9hZGVkUmVsYXRpb25BcmcgOiAtMVxuXG4gICAgICBjb25zdCByZWxhdGlvbnMgPSBBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pID8gcmVsYXRpb25UbyA6IFtyZWxhdGlvblRvXVxuICAgICAgY29uc3QgcmVsYXRpb25zVG9GZXRjaCA9XG4gICAgICAgIGxhc3RGdWxseUxvYWRlZFJlbGF0aW9uVG9Vc2UgPT09IC0xXG4gICAgICAgICAgPyByZWxhdGlvbnNcbiAgICAgICAgICA6IHJlbGF0aW9ucy5zbGljZShsYXN0RnVsbHlMb2FkZWRSZWxhdGlvblRvVXNlICsgMSlcblxuICAgICAgbGV0IHJlc3VsdHNGZXRjaGVkID0gMFxuICAgICAgY29uc3QgcmVsYXRpb25NYXAgPSBjcmVhdGVSZWxhdGlvbk1hcCh7XG4gICAgICAgIGhhc01hbnksXG4gICAgICAgIHJlbGF0aW9uVG8sXG4gICAgICAgIHZhbHVlOiB2YWx1ZUFyZyxcbiAgICAgIH0pXG5cbiAgICAgIGlmICghZXJyb3JMb2FkaW5nKSB7XG4gICAgICAgIHJlbGF0aW9uc1RvRmV0Y2gucmVkdWNlKGFzeW5jIChwcmlvclJlbGF0aW9uLCByZWxhdGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlbGF0aW9uRmlsdGVyT3B0aW9uID0gZmlsdGVyT3B0aW9uc1Jlc3VsdD8uW3JlbGF0aW9uXVxuICAgICAgICAgIGxldCBsYXN0TG9hZGVkUGFnZVRvVXNlXG4gICAgICAgICAgaWYgKHNlYXJjaCAhPT0gc2VhcmNoQXJnKSB7XG4gICAgICAgICAgICBsYXN0TG9hZGVkUGFnZVRvVXNlID0gMVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsYXN0TG9hZGVkUGFnZVRvVXNlID0gbGFzdExvYWRlZFBhZ2VbcmVsYXRpb25dICsgMVxuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCBwcmlvclJlbGF0aW9uXG5cbiAgICAgICAgICBpZiAocmVsYXRpb25GaWx0ZXJPcHRpb24gPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBzZXRMYXN0RnVsbHlMb2FkZWRSZWxhdGlvbihyZWxhdGlvbnMuaW5kZXhPZihyZWxhdGlvbikpXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocmVzdWx0c0ZldGNoZWQgPCAxMCkge1xuICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IGNvbGxlY3Rpb25zLmZpbmQoKGNvbGwpID0+IGNvbGwuc2x1ZyA9PT0gcmVsYXRpb24pXG4gICAgICAgICAgICBsZXQgZmllbGRUb1NlYXJjaCA9IGNvbGxlY3Rpb24/LmRlZmF1bHRTb3J0IHx8IGNvbGxlY3Rpb24/LmFkbWluPy51c2VBc1RpdGxlIHx8ICdpZCdcbiAgICAgICAgICAgIGlmICghc2VhcmNoQXJnKSB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2Ygc29ydE9wdGlvbnMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZmllbGRUb1NlYXJjaCA9IHNvcnRPcHRpb25zXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoc29ydE9wdGlvbnM/LltyZWxhdGlvbl0pIHtcbiAgICAgICAgICAgICAgICBmaWVsZFRvU2VhcmNoID0gc29ydE9wdGlvbnNbcmVsYXRpb25dXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcXVlcnk6IHtcbiAgICAgICAgICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93blxuICAgICAgICAgICAgICB3aGVyZTogV2hlcmVcbiAgICAgICAgICAgIH0gPSB7XG4gICAgICAgICAgICAgIGRlcHRoOiAwLFxuICAgICAgICAgICAgICBkcmFmdDogdHJ1ZSxcbiAgICAgICAgICAgICAgbGltaXQ6IG1heFJlc3VsdHNQZXJSZXF1ZXN0LFxuICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgIHBhZ2U6IGxhc3RMb2FkZWRQYWdlVG9Vc2UsXG4gICAgICAgICAgICAgIHNvcnQ6IGZpZWxkVG9TZWFyY2gsXG4gICAgICAgICAgICAgIHdoZXJlOiB7XG4gICAgICAgICAgICAgICAgYW5kOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiB7XG4gICAgICAgICAgICAgICAgICAgICAgbm90X2luOiByZWxhdGlvbk1hcFtyZWxhdGlvbl0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzZWFyY2hBcmcpIHtcbiAgICAgICAgICAgICAgcXVlcnkud2hlcmUuYW5kLnB1c2goe1xuICAgICAgICAgICAgICAgIFtmaWVsZFRvU2VhcmNoXToge1xuICAgICAgICAgICAgICAgICAgbGlrZTogc2VhcmNoQXJnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZWxhdGlvbkZpbHRlck9wdGlvbiAmJiB0eXBlb2YgcmVsYXRpb25GaWx0ZXJPcHRpb24gIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICBxdWVyeS53aGVyZS5hbmQucHVzaChyZWxhdGlvbkZpbHRlck9wdGlvbilcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7cmVsYXRpb259PyR7cXMuc3RyaW5naWZ5KHF1ZXJ5KX1gLCB7XG4gICAgICAgICAgICAgIGNyZWRlbnRpYWxzOiAnaW5jbHVkZScsXG4gICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICAgICAgICBjb25zdCBkYXRhOiBQYWdpbmF0ZWREb2NzPHVua25vd24+ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICAgICAgICAgIHNldExhc3RMb2FkZWRQYWdlKChwcmV2U3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgICAgICAgW3JlbGF0aW9uXTogbGFzdExvYWRlZFBhZ2VUb1VzZSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgaWYgKCFkYXRhLm5leHRQYWdlKSB7XG4gICAgICAgICAgICAgICAgc2V0TGFzdEZ1bGx5TG9hZGVkUmVsYXRpb24ocmVsYXRpb25zLmluZGV4T2YocmVsYXRpb24pKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGRhdGEuZG9jcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0c0ZldGNoZWQgKz0gZGF0YS5kb2NzLmxlbmd0aFxuXG4gICAgICAgICAgICAgICAgZGlzcGF0Y2hPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdBREQnLFxuICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICAgIC8vIFRPRE86IGZpeCB0aGlzXG4gICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlLW5leHQtbGluZVxuICAgICAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgICAgICAgZG9jczogZGF0YS5kb2NzLFxuICAgICAgICAgICAgICAgICAgaTE4bixcbiAgICAgICAgICAgICAgICAgIHNvcnQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMykge1xuICAgICAgICAgICAgICBzZXRMYXN0RnVsbHlMb2FkZWRSZWxhdGlvbihyZWxhdGlvbnMuaW5kZXhPZihyZWxhdGlvbikpXG4gICAgICAgICAgICAgIGRpc3BhdGNoT3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ0FERCcsXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBmaXggdGhpc1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUtbmV4dC1saW5lXG4gICAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgICAgIGRvY3M6IFtdLFxuICAgICAgICAgICAgICAgIGkxOG4sXG4gICAgICAgICAgICAgICAgaWRzOiByZWxhdGlvbk1hcFtyZWxhdGlvbl0sXG4gICAgICAgICAgICAgICAgc29ydCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldEVycm9yTG9hZGluZyh0KCdlcnJvcjp1bnNwZWNpZmljJykpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcblxuICAgICAgICBpZiAodHlwZW9mIG9uU3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykgb25TdWNjZXNzKClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgcmVsYXRpb25UbyxcbiAgICAgIGhhc01hbnksXG4gICAgICBlcnJvckxvYWRpbmcsXG4gICAgICBzZWFyY2gsXG4gICAgICBsYXN0TG9hZGVkUGFnZSxcbiAgICAgIGNvbGxlY3Rpb25zLFxuICAgICAgbG9jYWxlLFxuICAgICAgZmlsdGVyT3B0aW9uc1Jlc3VsdCxcbiAgICAgIHNlcnZlclVSTCxcbiAgICAgIHNvcnRPcHRpb25zLFxuICAgICAgYXBpLFxuICAgICAgaTE4bixcbiAgICAgIGNvbmZpZyxcbiAgICAgIHQsXG4gICAgXSxcbiAgKVxuXG4gIGNvbnN0IHVwZGF0ZVNlYXJjaCA9IHVzZURlYm91bmNlZENhbGxiYWNrKChzZWFyY2hBcmc6IHN0cmluZywgdmFsdWVBcmc6IFZhbHVlIHwgVmFsdWVbXSkgPT4ge1xuICAgIGdldFJlc3VsdHMoeyBzZWFyY2g6IHNlYXJjaEFyZywgc29ydDogdHJ1ZSwgdmFsdWU6IHZhbHVlQXJnIH0pXG4gICAgc2V0U2VhcmNoKHNlYXJjaEFyZylcbiAgfSwgMzAwKVxuXG4gIGNvbnN0IGhhbmRsZUlucHV0Q2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKHNlYXJjaEFyZzogc3RyaW5nLCB2YWx1ZUFyZzogVmFsdWUgfCBWYWx1ZVtdKSA9PiB7XG4gICAgICBpZiAoc2VhcmNoICE9PSBzZWFyY2hBcmcpIHtcbiAgICAgICAgc2V0TGFzdExvYWRlZFBhZ2Uoe30pXG4gICAgICAgIHVwZGF0ZVNlYXJjaChzZWFyY2hBcmcsIHZhbHVlQXJnLCBzZWFyY2hBcmcgIT09ICcnKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3NlYXJjaCwgdXBkYXRlU2VhcmNoXSxcbiAgKVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIEVuc3VyZSB3ZSBoYXZlIGFuIG9wdGlvbiBmb3IgZWFjaCB2YWx1ZVxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcmVsYXRpb25NYXAgPSBjcmVhdGVSZWxhdGlvbk1hcCh7XG4gICAgICBoYXNNYW55LFxuICAgICAgcmVsYXRpb25UbyxcbiAgICAgIHZhbHVlLFxuICAgIH0pXG5cbiAgICBPYmplY3QuZW50cmllcyhyZWxhdGlvbk1hcCkucmVkdWNlKGFzeW5jIChwcmlvclJlbGF0aW9uLCBbcmVsYXRpb24sIGlkc10pID0+IHtcbiAgICAgIGF3YWl0IHByaW9yUmVsYXRpb25cblxuICAgICAgY29uc3QgaWRzVG9Mb2FkID0gaWRzLmZpbHRlcigoaWQpID0+IHtcbiAgICAgICAgcmV0dXJuICFvcHRpb25zLmZpbmQoKG9wdGlvbkdyb3VwKSA9PlxuICAgICAgICAgIG9wdGlvbkdyb3VwPy5vcHRpb25zPy5maW5kKFxuICAgICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSBpZCAmJiBvcHRpb24ucmVsYXRpb25UbyA9PT0gcmVsYXRpb24sXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSlcblxuICAgICAgaWYgKGlkc1RvTG9hZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0ge1xuICAgICAgICAgIGRlcHRoOiAwLFxuICAgICAgICAgIGRyYWZ0OiB0cnVlLFxuICAgICAgICAgIGxpbWl0OiBpZHNUb0xvYWQubGVuZ3RoLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICB3aGVyZToge1xuICAgICAgICAgICAgaWQ6IHtcbiAgICAgICAgICAgICAgaW46IGlkc1RvTG9hZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZXJyb3JMb2FkaW5nKSB7XG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7cmVsYXRpb259PyR7cXMuc3RyaW5naWZ5KHF1ZXJ5KX1gLCB7XG4gICAgICAgICAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBjb2xsZWN0aW9ucy5maW5kKChjb2xsKSA9PiBjb2xsLnNsdWcgPT09IHJlbGF0aW9uKVxuICAgICAgICAgIGxldCBkb2NzID0gW11cblxuICAgICAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgICAgICAgICAgZG9jcyA9IGRhdGEuZG9jc1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRpc3BhdGNoT3B0aW9ucyh7XG4gICAgICAgICAgICB0eXBlOiAnQUREJyxcbiAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAvLyBUT0RPOiBmaXggdGhpc1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZS1uZXh0LWxpbmVcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIGRvY3MsXG4gICAgICAgICAgICBpMThuLFxuICAgICAgICAgICAgaWRzOiBpZHNUb0xvYWQsXG4gICAgICAgICAgICBzb3J0OiB0cnVlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcbiAgfSwgW1xuICAgIG9wdGlvbnMsXG4gICAgdmFsdWUsXG4gICAgaGFzTWFueSxcbiAgICBlcnJvckxvYWRpbmcsXG4gICAgY29sbGVjdGlvbnMsXG4gICAgaGFzTXVsdGlwbGVSZWxhdGlvbnMsXG4gICAgc2VydmVyVVJMLFxuICAgIGFwaSxcbiAgICBpMThuLFxuICAgIHJlbGF0aW9uVG8sXG4gICAgbG9jYWxlLFxuICAgIGNvbmZpZyxcbiAgXSlcblxuICAvLyBEZXRlcm1pbmUgaWYgd2Ugc2hvdWxkIHN3aXRjaCB0byB3b3JkIGJvdW5kYXJ5IHNlYXJjaFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHJlbGF0aW9ucyA9IEFycmF5LmlzQXJyYXkocmVsYXRpb25UbykgPyByZWxhdGlvblRvIDogW3JlbGF0aW9uVG9dXG4gICAgY29uc3QgaXNJZE9ubHkgPSByZWxhdGlvbnMucmVkdWNlKChpZE9ubHksIHJlbGF0aW9uKSA9PiB7XG4gICAgICBjb25zdCBjb2xsZWN0aW9uID0gY29sbGVjdGlvbnMuZmluZCgoY29sbCkgPT4gY29sbC5zbHVnID09PSByZWxhdGlvbilcbiAgICAgIGNvbnN0IGZpZWxkVG9TZWFyY2ggPSBjb2xsZWN0aW9uPy5hZG1pbj8udXNlQXNUaXRsZSB8fCAnaWQnXG4gICAgICByZXR1cm4gZmllbGRUb1NlYXJjaCA9PT0gJ2lkJyAmJiBpZE9ubHlcbiAgICB9LCB0cnVlKVxuICAgIHNldEVuYWJsZVdvcmRCb3VuZGFyeVNlYXJjaCghaXNJZE9ubHkpXG4gIH0sIFtyZWxhdGlvblRvLCBjb2xsZWN0aW9uc10pXG5cbiAgLy8gV2hlbiAoYHJlbGF0aW9uVG9gIHx8IGBmaWx0ZXJPcHRpb25zUmVzdWx0YCB8fCBgbG9jYWxlYCkgY2hhbmdlcywgcmVzZXQgY29tcG9uZW50XG4gIC8vIE5vdGUgLSBlZmZlY3Qgc2hvdWxkIG5vdCBydW4gb24gZmlyc3QgcnVuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGZpcnN0UnVuLmN1cnJlbnQpIHtcbiAgICAgIGZpcnN0UnVuLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZGlzcGF0Y2hPcHRpb25zKHsgdHlwZTogJ0NMRUFSJyB9KVxuICAgIHNldExhc3RGdWxseUxvYWRlZFJlbGF0aW9uKC0xKVxuICAgIHNldExhc3RMb2FkZWRQYWdlKHt9KVxuICAgIHNldEhhc0xvYWRlZEZpcnN0UGFnZShmYWxzZSlcbiAgfSwgW3JlbGF0aW9uVG8sIGZpbHRlck9wdGlvbnNSZXN1bHQsIGxvY2FsZV0pXG5cbiAgY29uc3Qgb25TYXZlID0gdXNlQ2FsbGJhY2s8RG9jdW1lbnREcmF3ZXJQcm9wc1snb25TYXZlJ10+KFxuICAgIChhcmdzKSA9PiB7XG4gICAgICBkaXNwYXRjaE9wdGlvbnMoe1xuICAgICAgICB0eXBlOiAnVVBEQVRFJyxcbiAgICAgICAgY29sbGVjdGlvbjogYXJncy5jb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgICAvLyBUT0RPOiBmaXggdGhpc1xuICAgICAgICAvLyBAdHMtaWdub3JlLW5leHQtbGluZVxuICAgICAgICBjb25maWcsXG4gICAgICAgIGRvYzogYXJncy5kb2MsXG4gICAgICAgIGkxOG4sXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2kxOG4sIGNvbmZpZ10sXG4gIClcblxuICBjb25zdCBmaWx0ZXJPcHRpb24gPSB1c2VDYWxsYmFjaygoaXRlbTogT3B0aW9uLCBzZWFyY2hGaWx0ZXI6IHN0cmluZykgPT4ge1xuICAgIGlmICghc2VhcmNoRmlsdGVyKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICBjb25zdCByID0gd29yZEJvdW5kYXJpZXNSZWdleChzZWFyY2hGaWx0ZXIgfHwgJycpXG4gICAgLy8gYnJlYWtpbmcgdGhlIGxhYmVscyB0byBzZWFyY2ggaW50byBzbWFsbGVyIHBhcnRzIGluY3JlYXNlcyBwZXJmb3JtYW5jZVxuICAgIGNvbnN0IGJyZWFrQXBhcnRUaHJlc2hvbGQgPSAyNTBcbiAgICBsZXQgc3RyaW5nID0gaXRlbS5sYWJlbFxuICAgIC8vIHN0cmluZ3MgbGVzcyB0aGFuIGJyZWFrQXBhcnRUaHJlc2hvbGQgbGVuZ3RoIHdvbid0IGJlIGNodW5rZWRcbiAgICB3aGlsZSAoc3RyaW5nLmxlbmd0aCA+IGJyZWFrQXBhcnRUaHJlc2hvbGQpIHtcbiAgICAgIC8vIHNsaWNpbmcgYnkgdGhlIG5leHQgc3BhY2UgYWZ0ZXIgdGhlIGxlbmd0aCBvZiB0aGUgc2VhcmNoIGlucHV0IHByZXZlbnRzIHNsaWNpbmcgdGhlIHN0cmluZyB1cCBieSBwYXJ0aWFsIHdvcmRzXG4gICAgICBjb25zdCBpbmRleE9mU3BhY2UgPSBzdHJpbmcuaW5kZXhPZignICcsIHNlYXJjaEZpbHRlci5sZW5ndGgpXG4gICAgICBpZiAoci50ZXN0KHN0cmluZy5zbGljZSgwLCBpbmRleE9mU3BhY2UgPT09IC0xID8gc2VhcmNoRmlsdGVyLmxlbmd0aCA6IGluZGV4T2ZTcGFjZSArIDEpKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgc3RyaW5nID0gc3RyaW5nLnNsaWNlKGluZGV4T2ZTcGFjZSA9PT0gLTEgPyBzZWFyY2hGaWx0ZXIubGVuZ3RoIDogaW5kZXhPZlNwYWNlICsgMSlcbiAgICB9XG4gICAgcmV0dXJuIHIudGVzdChzdHJpbmcuc2xpY2UoLWJyZWFrQXBhcnRUaHJlc2hvbGQpKVxuICB9LCBbXSlcblxuICBjb25zdCB2YWx1ZVRvUmVuZGVyID0gZmluZE9wdGlvbnNCeVZhbHVlKHsgb3B0aW9ucywgdmFsdWUgfSlcblxuICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWVUb1JlbmRlcikgJiYgdmFsdWVUb1JlbmRlcj8udmFsdWUgPT09ICdudWxsJykgdmFsdWVUb1JlbmRlci52YWx1ZSA9IG51bGxcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17W1xuICAgICAgICBmaWVsZEJhc2VDbGFzcyxcbiAgICAgICAgYmFzZUNsYXNzLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgIHNob3dFcnJvciAmJiAnZXJyb3InLFxuICAgICAgICBlcnJvckxvYWRpbmcgJiYgJ2Vycm9yLWxvYWRpbmcnLFxuICAgICAgICByZWFkT25seSAmJiBgJHtiYXNlQ2xhc3N9LS1yZWFkLW9ubHlgLFxuICAgICAgXVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgIC5qb2luKCcgJyl9XG4gICAgICBpZD17YGZpZWxkLSR7cGF0aC5yZXBsYWNlKC9cXC4vZywgJ19fJyl9YH1cbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIC4uLnN0eWxlLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH19XG4gICAgPlxuICAgICAge0Vycm9yfVxuICAgICAge0xhYmVsfVxuICAgICAgPEdldEZpbHRlck9wdGlvbnNcbiAgICAgICAgey4uLntcbiAgICAgICAgICBmaWx0ZXJPcHRpb25zLFxuICAgICAgICAgIGZpbHRlck9wdGlvbnNSZXN1bHQsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICByZWxhdGlvblRvLFxuICAgICAgICAgIHNldEZpbHRlck9wdGlvbnNSZXN1bHQsXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICAgeyFlcnJvckxvYWRpbmcgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fd3JhcGB9PlxuICAgICAgICAgIDxSZWFjdFNlbGVjdFxuICAgICAgICAgICAgYmFja3NwYWNlUmVtb3Zlc1ZhbHVlPXshZHJhd2VySXNPcGVufVxuICAgICAgICAgICAgY29tcG9uZW50cz17e1xuICAgICAgICAgICAgICBNdWx0aVZhbHVlTGFiZWwsXG4gICAgICAgICAgICAgIFNpbmdsZVZhbHVlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGN1c3RvbVByb3BzPXt7XG4gICAgICAgICAgICAgIGRpc2FibGVLZXlEb3duOiBkcmF3ZXJJc09wZW4sXG4gICAgICAgICAgICAgIGRpc2FibGVNb3VzZURvd246IGRyYXdlcklzT3BlbixcbiAgICAgICAgICAgICAgb25TYXZlLFxuICAgICAgICAgICAgICBzZXREcmF3ZXJJc09wZW4sXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3JlYWRPbmx5IHx8IGZvcm1Qcm9jZXNzaW5nfVxuICAgICAgICAgICAgZmlsdGVyT3B0aW9uPXtlbmFibGVXb3JkQm91bmRhcnlTZWFyY2ggPyBmaWx0ZXJPcHRpb24gOiB1bmRlZmluZWR9XG4gICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAgIGlzTXVsdGk9e2hhc01hbnl9XG4gICAgICAgICAgICBpc1NvcnRhYmxlPXtpc1NvcnRhYmxlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e1xuICAgICAgICAgICAgICAhcmVhZE9ubHlcbiAgICAgICAgICAgICAgICA/IChzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShoYXNNYW55ID8gW10gOiBudWxsKVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGhhc01hbnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gc2VsZWN0ZWQubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNNdWx0aXBsZVJlbGF0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IG9wdGlvbi5yZWxhdGlvblRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFzTXVsdGlwbGVSZWxhdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvblRvOiBzZWxlY3RlZC5yZWxhdGlvblRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlbGVjdGVkLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoc2VsZWN0ZWQudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb25JbnB1dENoYW5nZT17KG5ld1NlYXJjaCkgPT4gaGFuZGxlSW5wdXRDaGFuZ2UobmV3U2VhcmNoLCB2YWx1ZSl9XG4gICAgICAgICAgICBvbk1lbnVPcGVuPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghaGFzTG9hZGVkRmlyc3RQYWdlKSB7XG4gICAgICAgICAgICAgICAgc2V0SXNMb2FkaW5nKHRydWUpXG4gICAgICAgICAgICAgICAgZ2V0UmVzdWx0cyh7XG4gICAgICAgICAgICAgICAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0SGFzTG9hZGVkRmlyc3RQYWdlKHRydWUpXG4gICAgICAgICAgICAgICAgICAgIHNldElzTG9hZGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogaW5pdGlhbFZhbHVlLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbk1lbnVTY3JvbGxUb0JvdHRvbT17KCkgPT4ge1xuICAgICAgICAgICAgICBnZXRSZXN1bHRzKHtcbiAgICAgICAgICAgICAgICBsYXN0RnVsbHlMb2FkZWRSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGluaXRpYWxWYWx1ZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgICAgICAgc2hvd0Vycm9yPXtzaG93RXJyb3J9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWVUb1JlbmRlciA/PyBudWxsfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgeyFyZWFkT25seSAmJiBhbGxvd0NyZWF0ZSAmJiAoXG4gICAgICAgICAgICA8QWRkTmV3UmVsYXRpb25cbiAgICAgICAgICAgICAgey4uLntcbiAgICAgICAgICAgICAgICBkaXNwYXRjaE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgaGFzTWFueSxcbiAgICAgICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25UbyxcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAge2Vycm9yTG9hZGluZyAmJiA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZXJyb3ItbG9hZGluZ2B9PntlcnJvckxvYWRpbmd9PC9kaXY+fVxuICAgICAge0Rlc2NyaXB0aW9ufVxuICAgIDwvZGl2PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhDb25kaXRpb24oUmVsYXRpb25zaGlwKVxuIl0sIm5hbWVzIjpbIm1heFJlc3VsdHNQZXJSZXF1ZXN0IiwiYmFzZUNsYXNzIiwiUmVsYXRpb25zaGlwIiwicHJvcHMiLCJuYW1lIiwiRGVzY3JpcHRpb24iLCJFcnJvciIsIkxhYmVsIiwiY2xhc3NOYW1lIiwicGF0aCIsInBhdGhGcm9tUHJvcHMiLCJyZWFkT25seSIsInJlcXVpcmVkIiwic3R5bGUiLCJ2YWxpZGF0ZSIsIndpZHRoIiwiY29uZmlnIiwidXNlQ29uZmlnIiwiY29sbGVjdGlvbnMiLCJyb3V0ZXMiLCJhcGkiLCJzZXJ2ZXJVUkwiLCJyZWxhdGlvblRvIiwidW5kZWZpbmVkIiwiaGFzTWFueSIsImZpbHRlck9wdGlvbnMiLCJzb3J0T3B0aW9ucyIsImlzU29ydGFibGUiLCJhbGxvd0NyZWF0ZSIsImkxOG4iLCJ0IiwidXNlVHJhbnNsYXRpb24iLCJwZXJtaXNzaW9ucyIsInVzZUF1dGgiLCJjb2RlIiwibG9jYWxlIiwidXNlTG9jYWxlIiwiZm9ybVByb2Nlc3NpbmciLCJ1c2VGb3JtUHJvY2Vzc2luZyIsImhhc011bHRpcGxlUmVsYXRpb25zIiwiQXJyYXkiLCJpc0FycmF5Iiwib3B0aW9ucyIsImRpc3BhdGNoT3B0aW9ucyIsInVzZVJlZHVjZXIiLCJvcHRpb25zUmVkdWNlciIsImxhc3RGdWxseUxvYWRlZFJlbGF0aW9uIiwic2V0TGFzdEZ1bGx5TG9hZGVkUmVsYXRpb24iLCJ1c2VTdGF0ZSIsImxhc3RMb2FkZWRQYWdlIiwic2V0TGFzdExvYWRlZFBhZ2UiLCJlcnJvckxvYWRpbmciLCJzZXRFcnJvckxvYWRpbmciLCJmaWx0ZXJPcHRpb25zUmVzdWx0Iiwic2V0RmlsdGVyT3B0aW9uc1Jlc3VsdCIsInNlYXJjaCIsInNldFNlYXJjaCIsImlzTG9hZGluZyIsInNldElzTG9hZGluZyIsImhhc0xvYWRlZEZpcnN0UGFnZSIsInNldEhhc0xvYWRlZEZpcnN0UGFnZSIsImVuYWJsZVdvcmRCb3VuZGFyeVNlYXJjaCIsInNldEVuYWJsZVdvcmRCb3VuZGFyeVNlYXJjaCIsImZpcnN0UnVuIiwidXNlUmVmIiwibWVtb2l6ZWRWYWxpZGF0ZSIsInVzZUNhbGxiYWNrIiwidmFsdWUiLCJ2YWxpZGF0aW9uT3B0aW9ucyIsImluaXRpYWxWYWx1ZSIsInNldFZhbHVlIiwic2hvd0Vycm9yIiwidXNlRmllbGQiLCJkcmF3ZXJJc09wZW4iLCJzZXREcmF3ZXJJc09wZW4iLCJnZXRSZXN1bHRzIiwibGFzdEZ1bGx5TG9hZGVkUmVsYXRpb25BcmciLCJvblN1Y2Nlc3MiLCJzZWFyY2hBcmciLCJzb3J0IiwidmFsdWVBcmciLCJsYXN0RnVsbHlMb2FkZWRSZWxhdGlvblRvVXNlIiwicmVsYXRpb25zIiwicmVsYXRpb25zVG9GZXRjaCIsInNsaWNlIiwicmVzdWx0c0ZldGNoZWQiLCJyZWxhdGlvbk1hcCIsImNyZWF0ZVJlbGF0aW9uTWFwIiwicmVkdWNlIiwicHJpb3JSZWxhdGlvbiIsInJlbGF0aW9uIiwicmVsYXRpb25GaWx0ZXJPcHRpb24iLCJsYXN0TG9hZGVkUGFnZVRvVXNlIiwiaW5kZXhPZiIsIlByb21pc2UiLCJyZXNvbHZlIiwiY29sbGVjdGlvbiIsImZpbmQiLCJjb2xsIiwic2x1ZyIsImZpZWxkVG9TZWFyY2giLCJkZWZhdWx0U29ydCIsImFkbWluIiwidXNlQXNUaXRsZSIsInF1ZXJ5IiwiZGVwdGgiLCJkcmFmdCIsImxpbWl0IiwicGFnZSIsIndoZXJlIiwiYW5kIiwiaWQiLCJub3RfaW4iLCJwdXNoIiwibGlrZSIsInJlc3BvbnNlIiwiZmV0Y2giLCJxcyIsInN0cmluZ2lmeSIsImNyZWRlbnRpYWxzIiwiaGVhZGVycyIsImxhbmd1YWdlIiwib2siLCJkYXRhIiwianNvbiIsInByZXZTdGF0ZSIsIm5leHRQYWdlIiwiZG9jcyIsImxlbmd0aCIsInR5cGUiLCJzdGF0dXMiLCJpZHMiLCJ1cGRhdGVTZWFyY2giLCJ1c2VEZWJvdW5jZWRDYWxsYmFjayIsImhhbmRsZUlucHV0Q2hhbmdlIiwidXNlRWZmZWN0IiwiT2JqZWN0IiwiZW50cmllcyIsImlkc1RvTG9hZCIsImZpbHRlciIsIm9wdGlvbkdyb3VwIiwib3B0aW9uIiwiaW4iLCJpc0lkT25seSIsImlkT25seSIsImN1cnJlbnQiLCJvblNhdmUiLCJhcmdzIiwiY29sbGVjdGlvbkNvbmZpZyIsImRvYyIsImZpbHRlck9wdGlvbiIsIml0ZW0iLCJzZWFyY2hGaWx0ZXIiLCJyIiwid29yZEJvdW5kYXJpZXNSZWdleCIsImJyZWFrQXBhcnRUaHJlc2hvbGQiLCJzdHJpbmciLCJsYWJlbCIsImluZGV4T2ZTcGFjZSIsInRlc3QiLCJ2YWx1ZVRvUmVuZGVyIiwiZmluZE9wdGlvbnNCeVZhbHVlIiwiZGl2IiwiZmllbGRCYXNlQ2xhc3MiLCJCb29sZWFuIiwiam9pbiIsInJlcGxhY2UiLCJHZXRGaWx0ZXJPcHRpb25zIiwiUmVhY3RTZWxlY3QiLCJiYWNrc3BhY2VSZW1vdmVzVmFsdWUiLCJjb21wb25lbnRzIiwiTXVsdGlWYWx1ZUxhYmVsIiwiU2luZ2xlVmFsdWUiLCJjdXN0b21Qcm9wcyIsImRpc2FibGVLZXlEb3duIiwiZGlzYWJsZU1vdXNlRG93biIsImRpc2FibGVkIiwiaXNNdWx0aSIsIm9uQ2hhbmdlIiwic2VsZWN0ZWQiLCJtYXAiLCJvbklucHV0Q2hhbmdlIiwibmV3U2VhcmNoIiwib25NZW51T3BlbiIsIm9uTWVudVNjcm9sbFRvQm90dG9tIiwiQWRkTmV3UmVsYXRpb24iLCJ3aXRoQ29uZGl0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7K0JBOGhCQTs7O2VBQUE7OzsyQkExaEJvQzsyREFDckI7K0RBQzZEO2tDQUszQztvRUFDVDtzQ0FDYTtzQkFDYjt3QkFDRTt3QkFDQTs2QkFDSzt5QkFDRztpRUFDYjsrQkFDUzt3QkFDQzt3QkFDQTttQ0FDRztvQ0FDQztRQUM1Qjt1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
453
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9mb3Jtcy9maWVsZHMvUmVsYXRpb25zaGlwL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgUGFnaW5hdGVkRG9jcyB9IGZyb20gJ3BheWxvYWQvZGF0YWJhc2UnXG5pbXBvcnQgdHlwZSB7IFdoZXJlIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHsgd29yZEJvdW5kYXJpZXNSZWdleCB9IGZyb20gJ3BheWxvYWQvdXRpbGl0aWVzJ1xuaW1wb3J0IHFzIGZyb20gJ3FzJ1xuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZHVjZXIsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHR5cGUgeyBEb2N1bWVudERyYXdlclByb3BzIH0gZnJvbSAnLi4vLi4vLi4vZWxlbWVudHMvRG9jdW1lbnREcmF3ZXIvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpbHRlck9wdGlvbnNSZXN1bHQsIEdldFJlc3VsdHMsIE9wdGlvbiwgUHJvcHMsIFZhbHVlIH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgR2V0RmlsdGVyT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2VsZW1lbnRzL0dldEZpbHRlck9wdGlvbnMnXG5pbXBvcnQgUmVhY3RTZWxlY3QgZnJvbSAnLi4vLi4vLi4vZWxlbWVudHMvUmVhY3RTZWxlY3QnXG5pbXBvcnQgeyB1c2VEZWJvdW5jZWRDYWxsYmFjayB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZURlYm91bmNlZENhbGxiYWNrJ1xuaW1wb3J0IHsgdXNlQXV0aCB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9BdXRoJ1xuaW1wb3J0IHsgdXNlQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL0NvbmZpZydcbmltcG9ydCB7IHVzZUxvY2FsZSB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9Mb2NhbGUnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9UcmFuc2xhdGlvbidcbmltcG9ydCB7IHVzZUZvcm1Qcm9jZXNzaW5nIH0gZnJvbSAnLi4vLi4vRm9ybS9jb250ZXh0J1xuaW1wb3J0IHVzZUZpZWxkIGZyb20gJy4uLy4uL3VzZUZpZWxkJ1xuaW1wb3J0IHsgd2l0aENvbmRpdGlvbiB9IGZyb20gJy4uLy4uL3dpdGhDb25kaXRpb24nXG5pbXBvcnQgeyBmaWVsZEJhc2VDbGFzcyB9IGZyb20gJy4uL3NoYXJlZCdcbmltcG9ydCB7IEFkZE5ld1JlbGF0aW9uIH0gZnJvbSAnLi9BZGROZXcnXG5pbXBvcnQgeyBjcmVhdGVSZWxhdGlvbk1hcCB9IGZyb20gJy4vY3JlYXRlUmVsYXRpb25NYXAnXG5pbXBvcnQgeyBmaW5kT3B0aW9uc0J5VmFsdWUgfSBmcm9tICcuL2ZpbmRPcHRpb25zQnlWYWx1ZSdcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuaW1wb3J0IG9wdGlvbnNSZWR1Y2VyIGZyb20gJy4vb3B0aW9uc1JlZHVjZXInXG5pbXBvcnQgeyBNdWx0aVZhbHVlTGFiZWwgfSBmcm9tICcuL3NlbGVjdC1jb21wb25lbnRzL011bHRpVmFsdWVMYWJlbCdcbmltcG9ydCB7IFNpbmdsZVZhbHVlIH0gZnJvbSAnLi9zZWxlY3QtY29tcG9uZW50cy9TaW5nbGVWYWx1ZSdcblxuY29uc3QgbWF4UmVzdWx0c1BlclJlcXVlc3QgPSAxMFxuXG5jb25zdCBiYXNlQ2xhc3MgPSAncmVsYXRpb25zaGlwJ1xuXG5jb25zdCBSZWxhdGlvbnNoaXA6IFJlYWN0LkZDPFByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgbmFtZSxcbiAgICBEZXNjcmlwdGlvbixcbiAgICBFcnJvcixcbiAgICBMYWJlbCxcbiAgICBjbGFzc05hbWUsXG4gICAgcGF0aDogcGF0aEZyb21Qcm9wcyxcbiAgICByZWFkT25seSxcbiAgICByZXF1aXJlZCxcbiAgICBzdHlsZSxcbiAgICB2YWxpZGF0ZSxcbiAgICB3aWR0aCxcbiAgfSA9IHByb3BzXG5cbiAgY29uc3QgY29uZmlnID0gdXNlQ29uZmlnKClcblxuICBjb25zdCB7XG4gICAgY29sbGVjdGlvbnMsXG4gICAgcm91dGVzOiB7IGFwaSB9LFxuICAgIHNlcnZlclVSTCxcbiAgfSA9IGNvbmZpZ1xuXG4gIGNvbnN0IHJlbGF0aW9uVG8gPSAncmVsYXRpb25UbycgaW4gcHJvcHMgPyBwcm9wcz8ucmVsYXRpb25UbyA6IHVuZGVmaW5lZFxuICBjb25zdCBoYXNNYW55ID0gJ2hhc01hbnknIGluIHByb3BzID8gcHJvcHM/Lmhhc01hbnkgOiB1bmRlZmluZWRcbiAgY29uc3QgZmlsdGVyT3B0aW9ucyA9ICdmaWx0ZXJPcHRpb25zJyBpbiBwcm9wcyA/IHByb3BzPy5maWx0ZXJPcHRpb25zIDogdW5kZWZpbmVkXG4gIGNvbnN0IHNvcnRPcHRpb25zID0gJ3NvcnRPcHRpb25zJyBpbiBwcm9wcyA/IHByb3BzPy5zb3J0T3B0aW9ucyA6IHVuZGVmaW5lZFxuICBjb25zdCBpc1NvcnRhYmxlID0gJ2lzU29ydGFibGUnIGluIHByb3BzID8gcHJvcHM/LmlzU29ydGFibGUgOiB0cnVlXG4gIGNvbnN0IGFsbG93Q3JlYXRlID0gJ2FsbG93Q3JlYXRlJyBpbiBwcm9wcyA/IHByb3BzPy5hbGxvd0NyZWF0ZSA6IHRydWVcblxuICBjb25zdCB7IGkxOG4sIHQgfSA9IHVzZVRyYW5zbGF0aW9uKClcbiAgY29uc3QgeyBwZXJtaXNzaW9ucyB9ID0gdXNlQXV0aCgpXG4gIGNvbnN0IHsgY29kZTogbG9jYWxlIH0gPSB1c2VMb2NhbGUoKVxuICBjb25zdCBmb3JtUHJvY2Vzc2luZyA9IHVzZUZvcm1Qcm9jZXNzaW5nKClcbiAgY29uc3QgaGFzTXVsdGlwbGVSZWxhdGlvbnMgPSBBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pXG4gIGNvbnN0IFtvcHRpb25zLCBkaXNwYXRjaE9wdGlvbnNdID0gdXNlUmVkdWNlcihvcHRpb25zUmVkdWNlciwgW10pXG4gIGNvbnN0IFtsYXN0RnVsbHlMb2FkZWRSZWxhdGlvbiwgc2V0TGFzdEZ1bGx5TG9hZGVkUmVsYXRpb25dID0gdXNlU3RhdGUoLTEpXG4gIGNvbnN0IFtsYXN0TG9hZGVkUGFnZSwgc2V0TGFzdExvYWRlZFBhZ2VdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgbnVtYmVyPj4oe30pXG4gIGNvbnN0IFtlcnJvckxvYWRpbmcsIHNldEVycm9yTG9hZGluZ10gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3QgW2ZpbHRlck9wdGlvbnNSZXN1bHQsIHNldEZpbHRlck9wdGlvbnNSZXN1bHRdID0gdXNlU3RhdGU8RmlsdGVyT3B0aW9uc1Jlc3VsdD4oKVxuICBjb25zdCBbc2VhcmNoLCBzZXRTZWFyY2hdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2hhc0xvYWRlZEZpcnN0UGFnZSwgc2V0SGFzTG9hZGVkRmlyc3RQYWdlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZW5hYmxlV29yZEJvdW5kYXJ5U2VhcmNoLCBzZXRFbmFibGVXb3JkQm91bmRhcnlTZWFyY2hdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IGZpcnN0UnVuID0gdXNlUmVmKHRydWUpXG5cbiAgY29uc3QgbWVtb2l6ZWRWYWxpZGF0ZSA9IHVzZUNhbGxiYWNrKFxuICAgICh2YWx1ZSwgdmFsaWRhdGlvbk9wdGlvbnMpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdmFsaWRhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlKHZhbHVlLCB7IC4uLnZhbGlkYXRpb25PcHRpb25zLCByZXF1aXJlZCB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW3ZhbGlkYXRlLCByZXF1aXJlZF0sXG4gIClcblxuICBjb25zdCB7IGluaXRpYWxWYWx1ZSwgcGF0aCwgc2V0VmFsdWUsIHNob3dFcnJvciwgdmFsdWUgfSA9IHVzZUZpZWxkPFZhbHVlIHwgVmFsdWVbXT4oe1xuICAgIHBhdGg6IHBhdGhGcm9tUHJvcHMgfHwgbmFtZSxcbiAgICB2YWxpZGF0ZTogbWVtb2l6ZWRWYWxpZGF0ZSxcbiAgfSlcblxuICBjb25zdCBbZHJhd2VySXNPcGVuLCBzZXREcmF3ZXJJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgZ2V0UmVzdWx0czogR2V0UmVzdWx0cyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh7XG4gICAgICBsYXN0RnVsbHlMb2FkZWRSZWxhdGlvbjogbGFzdEZ1bGx5TG9hZGVkUmVsYXRpb25BcmcsXG4gICAgICBvblN1Y2Nlc3MsXG4gICAgICBzZWFyY2g6IHNlYXJjaEFyZyxcbiAgICAgIHNvcnQsXG4gICAgICB2YWx1ZTogdmFsdWVBcmcsXG4gICAgfSkgPT4ge1xuICAgICAgaWYgKCFwZXJtaXNzaW9ucykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IGxhc3RGdWxseUxvYWRlZFJlbGF0aW9uVG9Vc2UgPVxuICAgICAgICB0eXBlb2YgbGFzdEZ1bGx5TG9hZGVkUmVsYXRpb25BcmcgIT09ICd1bmRlZmluZWQnID8gbGFzdEZ1bGx5TG9hZGVkUmVsYXRpb25BcmcgOiAtMVxuXG4gICAgICBjb25zdCByZWxhdGlvbnMgPSBBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pID8gcmVsYXRpb25UbyA6IFtyZWxhdGlvblRvXVxuICAgICAgY29uc3QgcmVsYXRpb25zVG9GZXRjaCA9XG4gICAgICAgIGxhc3RGdWxseUxvYWRlZFJlbGF0aW9uVG9Vc2UgPT09IC0xXG4gICAgICAgICAgPyByZWxhdGlvbnNcbiAgICAgICAgICA6IHJlbGF0aW9ucy5zbGljZShsYXN0RnVsbHlMb2FkZWRSZWxhdGlvblRvVXNlICsgMSlcblxuICAgICAgbGV0IHJlc3VsdHNGZXRjaGVkID0gMFxuICAgICAgY29uc3QgcmVsYXRpb25NYXAgPSBjcmVhdGVSZWxhdGlvbk1hcCh7XG4gICAgICAgIGhhc01hbnksXG4gICAgICAgIHJlbGF0aW9uVG8sXG4gICAgICAgIHZhbHVlOiB2YWx1ZUFyZyxcbiAgICAgIH0pXG5cbiAgICAgIGlmICghZXJyb3JMb2FkaW5nKSB7XG4gICAgICAgIHJlbGF0aW9uc1RvRmV0Y2gucmVkdWNlKGFzeW5jIChwcmlvclJlbGF0aW9uLCByZWxhdGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlbGF0aW9uRmlsdGVyT3B0aW9uID0gZmlsdGVyT3B0aW9uc1Jlc3VsdD8uW3JlbGF0aW9uXVxuICAgICAgICAgIGxldCBsYXN0TG9hZGVkUGFnZVRvVXNlXG4gICAgICAgICAgaWYgKHNlYXJjaCAhPT0gc2VhcmNoQXJnKSB7XG4gICAgICAgICAgICBsYXN0TG9hZGVkUGFnZVRvVXNlID0gMVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsYXN0TG9hZGVkUGFnZVRvVXNlID0gbGFzdExvYWRlZFBhZ2VbcmVsYXRpb25dICsgMVxuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCBwcmlvclJlbGF0aW9uXG5cbiAgICAgICAgICBpZiAocmVsYXRpb25GaWx0ZXJPcHRpb24gPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBzZXRMYXN0RnVsbHlMb2FkZWRSZWxhdGlvbihyZWxhdGlvbnMuaW5kZXhPZihyZWxhdGlvbikpXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocmVzdWx0c0ZldGNoZWQgPCAxMCkge1xuICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IGNvbGxlY3Rpb25zLmZpbmQoKGNvbGwpID0+IGNvbGwuc2x1ZyA9PT0gcmVsYXRpb24pXG4gICAgICAgICAgICBsZXQgZmllbGRUb1NlYXJjaCA9IGNvbGxlY3Rpb24/LmRlZmF1bHRTb3J0IHx8IGNvbGxlY3Rpb24/LmFkbWluPy51c2VBc1RpdGxlIHx8ICdpZCdcbiAgICAgICAgICAgIGlmICghc2VhcmNoQXJnKSB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2Ygc29ydE9wdGlvbnMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZmllbGRUb1NlYXJjaCA9IHNvcnRPcHRpb25zXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoc29ydE9wdGlvbnM/LltyZWxhdGlvbl0pIHtcbiAgICAgICAgICAgICAgICBmaWVsZFRvU2VhcmNoID0gc29ydE9wdGlvbnNbcmVsYXRpb25dXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcXVlcnk6IHtcbiAgICAgICAgICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93blxuICAgICAgICAgICAgICB3aGVyZTogV2hlcmVcbiAgICAgICAgICAgIH0gPSB7XG4gICAgICAgICAgICAgIGRlcHRoOiAwLFxuICAgICAgICAgICAgICBkcmFmdDogdHJ1ZSxcbiAgICAgICAgICAgICAgbGltaXQ6IG1heFJlc3VsdHNQZXJSZXF1ZXN0LFxuICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgIHBhZ2U6IGxhc3RMb2FkZWRQYWdlVG9Vc2UsXG4gICAgICAgICAgICAgIHNvcnQ6IGZpZWxkVG9TZWFyY2gsXG4gICAgICAgICAgICAgIHdoZXJlOiB7XG4gICAgICAgICAgICAgICAgYW5kOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiB7XG4gICAgICAgICAgICAgICAgICAgICAgbm90X2luOiByZWxhdGlvbk1hcFtyZWxhdGlvbl0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzZWFyY2hBcmcpIHtcbiAgICAgICAgICAgICAgcXVlcnkud2hlcmUuYW5kLnB1c2goe1xuICAgICAgICAgICAgICAgIFtmaWVsZFRvU2VhcmNoXToge1xuICAgICAgICAgICAgICAgICAgbGlrZTogc2VhcmNoQXJnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZWxhdGlvbkZpbHRlck9wdGlvbiAmJiB0eXBlb2YgcmVsYXRpb25GaWx0ZXJPcHRpb24gIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICBxdWVyeS53aGVyZS5hbmQucHVzaChyZWxhdGlvbkZpbHRlck9wdGlvbilcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7cmVsYXRpb259PyR7cXMuc3RyaW5naWZ5KHF1ZXJ5KX1gLCB7XG4gICAgICAgICAgICAgIGNyZWRlbnRpYWxzOiAnaW5jbHVkZScsXG4gICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICAgICAgICBjb25zdCBkYXRhOiBQYWdpbmF0ZWREb2NzPHVua25vd24+ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICAgICAgICAgIHNldExhc3RMb2FkZWRQYWdlKChwcmV2U3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgICAgICAgW3JlbGF0aW9uXTogbGFzdExvYWRlZFBhZ2VUb1VzZSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgaWYgKCFkYXRhLm5leHRQYWdlKSB7XG4gICAgICAgICAgICAgICAgc2V0TGFzdEZ1bGx5TG9hZGVkUmVsYXRpb24ocmVsYXRpb25zLmluZGV4T2YocmVsYXRpb24pKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGRhdGEuZG9jcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0c0ZldGNoZWQgKz0gZGF0YS5kb2NzLmxlbmd0aFxuXG4gICAgICAgICAgICAgICAgZGlzcGF0Y2hPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdBREQnLFxuICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICAgIC8vIFRPRE86IGZpeCB0aGlzXG4gICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlLW5leHQtbGluZVxuICAgICAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgICAgICAgZG9jczogZGF0YS5kb2NzLFxuICAgICAgICAgICAgICAgICAgaTE4bixcbiAgICAgICAgICAgICAgICAgIHNvcnQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMykge1xuICAgICAgICAgICAgICBzZXRMYXN0RnVsbHlMb2FkZWRSZWxhdGlvbihyZWxhdGlvbnMuaW5kZXhPZihyZWxhdGlvbikpXG4gICAgICAgICAgICAgIGRpc3BhdGNoT3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ0FERCcsXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBmaXggdGhpc1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUtbmV4dC1saW5lXG4gICAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgICAgIGRvY3M6IFtdLFxuICAgICAgICAgICAgICAgIGkxOG4sXG4gICAgICAgICAgICAgICAgaWRzOiByZWxhdGlvbk1hcFtyZWxhdGlvbl0sXG4gICAgICAgICAgICAgICAgc29ydCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldEVycm9yTG9hZGluZyh0KCdlcnJvcjp1bnNwZWNpZmljJykpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcblxuICAgICAgICBpZiAodHlwZW9mIG9uU3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykgb25TdWNjZXNzKClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgcmVsYXRpb25UbyxcbiAgICAgIGhhc01hbnksXG4gICAgICBlcnJvckxvYWRpbmcsXG4gICAgICBzZWFyY2gsXG4gICAgICBsYXN0TG9hZGVkUGFnZSxcbiAgICAgIGNvbGxlY3Rpb25zLFxuICAgICAgbG9jYWxlLFxuICAgICAgZmlsdGVyT3B0aW9uc1Jlc3VsdCxcbiAgICAgIHNlcnZlclVSTCxcbiAgICAgIHNvcnRPcHRpb25zLFxuICAgICAgYXBpLFxuICAgICAgaTE4bixcbiAgICAgIGNvbmZpZyxcbiAgICAgIHQsXG4gICAgXSxcbiAgKVxuXG4gIGNvbnN0IHVwZGF0ZVNlYXJjaCA9IHVzZURlYm91bmNlZENhbGxiYWNrKChzZWFyY2hBcmc6IHN0cmluZywgdmFsdWVBcmc6IFZhbHVlIHwgVmFsdWVbXSkgPT4ge1xuICAgIGdldFJlc3VsdHMoeyBzZWFyY2g6IHNlYXJjaEFyZywgc29ydDogdHJ1ZSwgdmFsdWU6IHZhbHVlQXJnIH0pXG4gICAgc2V0U2VhcmNoKHNlYXJjaEFyZylcbiAgfSwgMzAwKVxuXG4gIGNvbnN0IGhhbmRsZUlucHV0Q2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKHNlYXJjaEFyZzogc3RyaW5nLCB2YWx1ZUFyZzogVmFsdWUgfCBWYWx1ZVtdKSA9PiB7XG4gICAgICBpZiAoc2VhcmNoICE9PSBzZWFyY2hBcmcpIHtcbiAgICAgICAgc2V0TGFzdExvYWRlZFBhZ2Uoe30pXG4gICAgICAgIHVwZGF0ZVNlYXJjaChzZWFyY2hBcmcsIHZhbHVlQXJnLCBzZWFyY2hBcmcgIT09ICcnKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3NlYXJjaCwgdXBkYXRlU2VhcmNoXSxcbiAgKVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIEVuc3VyZSB3ZSBoYXZlIGFuIG9wdGlvbiBmb3IgZWFjaCB2YWx1ZVxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcmVsYXRpb25NYXAgPSBjcmVhdGVSZWxhdGlvbk1hcCh7XG4gICAgICBoYXNNYW55LFxuICAgICAgcmVsYXRpb25UbyxcbiAgICAgIHZhbHVlLFxuICAgIH0pXG5cbiAgICBPYmplY3QuZW50cmllcyhyZWxhdGlvbk1hcCkucmVkdWNlKGFzeW5jIChwcmlvclJlbGF0aW9uLCBbcmVsYXRpb24sIGlkc10pID0+IHtcbiAgICAgIGF3YWl0IHByaW9yUmVsYXRpb25cblxuICAgICAgY29uc3QgaWRzVG9Mb2FkID0gaWRzLmZpbHRlcigoaWQpID0+IHtcbiAgICAgICAgcmV0dXJuICFvcHRpb25zLmZpbmQoKG9wdGlvbkdyb3VwKSA9PlxuICAgICAgICAgIG9wdGlvbkdyb3VwPy5vcHRpb25zPy5maW5kKFxuICAgICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSBpZCAmJiBvcHRpb24ucmVsYXRpb25UbyA9PT0gcmVsYXRpb24sXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSlcblxuICAgICAgaWYgKGlkc1RvTG9hZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0ge1xuICAgICAgICAgIGRlcHRoOiAwLFxuICAgICAgICAgIGRyYWZ0OiB0cnVlLFxuICAgICAgICAgIGxpbWl0OiBpZHNUb0xvYWQubGVuZ3RoLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICB3aGVyZToge1xuICAgICAgICAgICAgaWQ6IHtcbiAgICAgICAgICAgICAgaW46IGlkc1RvTG9hZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZXJyb3JMb2FkaW5nKSB7XG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7cmVsYXRpb259PyR7cXMuc3RyaW5naWZ5KHF1ZXJ5KX1gLCB7XG4gICAgICAgICAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBjb2xsZWN0aW9ucy5maW5kKChjb2xsKSA9PiBjb2xsLnNsdWcgPT09IHJlbGF0aW9uKVxuICAgICAgICAgIGxldCBkb2NzID0gW11cblxuICAgICAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgICAgICAgICAgZG9jcyA9IGRhdGEuZG9jc1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRpc3BhdGNoT3B0aW9ucyh7XG4gICAgICAgICAgICB0eXBlOiAnQUREJyxcbiAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAvLyBUT0RPOiBmaXggdGhpc1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZS1uZXh0LWxpbmVcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIGRvY3MsXG4gICAgICAgICAgICBpMThuLFxuICAgICAgICAgICAgaWRzOiBpZHNUb0xvYWQsXG4gICAgICAgICAgICBzb3J0OiB0cnVlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcbiAgfSwgW1xuICAgIG9wdGlvbnMsXG4gICAgdmFsdWUsXG4gICAgaGFzTWFueSxcbiAgICBlcnJvckxvYWRpbmcsXG4gICAgY29sbGVjdGlvbnMsXG4gICAgaGFzTXVsdGlwbGVSZWxhdGlvbnMsXG4gICAgc2VydmVyVVJMLFxuICAgIGFwaSxcbiAgICBpMThuLFxuICAgIHJlbGF0aW9uVG8sXG4gICAgbG9jYWxlLFxuICAgIGNvbmZpZyxcbiAgXSlcblxuICAvLyBEZXRlcm1pbmUgaWYgd2Ugc2hvdWxkIHN3aXRjaCB0byB3b3JkIGJvdW5kYXJ5IHNlYXJjaFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHJlbGF0aW9ucyA9IEFycmF5LmlzQXJyYXkocmVsYXRpb25UbykgPyByZWxhdGlvblRvIDogW3JlbGF0aW9uVG9dXG4gICAgY29uc3QgaXNJZE9ubHkgPSByZWxhdGlvbnMucmVkdWNlKChpZE9ubHksIHJlbGF0aW9uKSA9PiB7XG4gICAgICBjb25zdCBjb2xsZWN0aW9uID0gY29sbGVjdGlvbnMuZmluZCgoY29sbCkgPT4gY29sbC5zbHVnID09PSByZWxhdGlvbilcbiAgICAgIGNvbnN0IGZpZWxkVG9TZWFyY2ggPSBjb2xsZWN0aW9uPy5hZG1pbj8udXNlQXNUaXRsZSB8fCAnaWQnXG4gICAgICByZXR1cm4gZmllbGRUb1NlYXJjaCA9PT0gJ2lkJyAmJiBpZE9ubHlcbiAgICB9LCB0cnVlKVxuICAgIHNldEVuYWJsZVdvcmRCb3VuZGFyeVNlYXJjaCghaXNJZE9ubHkpXG4gIH0sIFtyZWxhdGlvblRvLCBjb2xsZWN0aW9uc10pXG5cbiAgLy8gV2hlbiAoYHJlbGF0aW9uVG9gIHx8IGBmaWx0ZXJPcHRpb25zUmVzdWx0YCB8fCBgbG9jYWxlYCkgY2hhbmdlcywgcmVzZXQgY29tcG9uZW50XG4gIC8vIE5vdGUgLSBlZmZlY3Qgc2hvdWxkIG5vdCBydW4gb24gZmlyc3QgcnVuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGZpcnN0UnVuLmN1cnJlbnQpIHtcbiAgICAgIGZpcnN0UnVuLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZGlzcGF0Y2hPcHRpb25zKHsgdHlwZTogJ0NMRUFSJyB9KVxuICAgIHNldExhc3RGdWxseUxvYWRlZFJlbGF0aW9uKC0xKVxuICAgIHNldExhc3RMb2FkZWRQYWdlKHt9KVxuICAgIHNldEhhc0xvYWRlZEZpcnN0UGFnZShmYWxzZSlcbiAgfSwgW3JlbGF0aW9uVG8sIGZpbHRlck9wdGlvbnNSZXN1bHQsIGxvY2FsZV0pXG5cbiAgY29uc3Qgb25TYXZlID0gdXNlQ2FsbGJhY2s8RG9jdW1lbnREcmF3ZXJQcm9wc1snb25TYXZlJ10+KFxuICAgIChhcmdzKSA9PiB7XG4gICAgICBkaXNwYXRjaE9wdGlvbnMoe1xuICAgICAgICB0eXBlOiAnVVBEQVRFJyxcbiAgICAgICAgY29sbGVjdGlvbjogYXJncy5jb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgICAvLyBUT0RPOiBmaXggdGhpc1xuICAgICAgICAvLyBAdHMtaWdub3JlLW5leHQtbGluZVxuICAgICAgICBjb25maWcsXG4gICAgICAgIGRvYzogYXJncy5kb2MsXG4gICAgICAgIGkxOG4sXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2kxOG4sIGNvbmZpZ10sXG4gIClcblxuICBjb25zdCBmaWx0ZXJPcHRpb24gPSB1c2VDYWxsYmFjaygoaXRlbTogT3B0aW9uLCBzZWFyY2hGaWx0ZXI6IHN0cmluZykgPT4ge1xuICAgIGlmICghc2VhcmNoRmlsdGVyKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICBjb25zdCByID0gd29yZEJvdW5kYXJpZXNSZWdleChzZWFyY2hGaWx0ZXIgfHwgJycpXG4gICAgLy8gYnJlYWtpbmcgdGhlIGxhYmVscyB0byBzZWFyY2ggaW50byBzbWFsbGVyIHBhcnRzIGluY3JlYXNlcyBwZXJmb3JtYW5jZVxuICAgIGNvbnN0IGJyZWFrQXBhcnRUaHJlc2hvbGQgPSAyNTBcbiAgICBsZXQgc3RyaW5nID0gaXRlbS5sYWJlbFxuICAgIC8vIHN0cmluZ3MgbGVzcyB0aGFuIGJyZWFrQXBhcnRUaHJlc2hvbGQgbGVuZ3RoIHdvbid0IGJlIGNodW5rZWRcbiAgICB3aGlsZSAoc3RyaW5nLmxlbmd0aCA+IGJyZWFrQXBhcnRUaHJlc2hvbGQpIHtcbiAgICAgIC8vIHNsaWNpbmcgYnkgdGhlIG5leHQgc3BhY2UgYWZ0ZXIgdGhlIGxlbmd0aCBvZiB0aGUgc2VhcmNoIGlucHV0IHByZXZlbnRzIHNsaWNpbmcgdGhlIHN0cmluZyB1cCBieSBwYXJ0aWFsIHdvcmRzXG4gICAgICBjb25zdCBpbmRleE9mU3BhY2UgPSBzdHJpbmcuaW5kZXhPZignICcsIHNlYXJjaEZpbHRlci5sZW5ndGgpXG4gICAgICBpZiAoci50ZXN0KHN0cmluZy5zbGljZSgwLCBpbmRleE9mU3BhY2UgPT09IC0xID8gc2VhcmNoRmlsdGVyLmxlbmd0aCA6IGluZGV4T2ZTcGFjZSArIDEpKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgc3RyaW5nID0gc3RyaW5nLnNsaWNlKGluZGV4T2ZTcGFjZSA9PT0gLTEgPyBzZWFyY2hGaWx0ZXIubGVuZ3RoIDogaW5kZXhPZlNwYWNlICsgMSlcbiAgICB9XG4gICAgcmV0dXJuIHIudGVzdChzdHJpbmcuc2xpY2UoLWJyZWFrQXBhcnRUaHJlc2hvbGQpKVxuICB9LCBbXSlcblxuICBjb25zdCB2YWx1ZVRvUmVuZGVyID0gZmluZE9wdGlvbnNCeVZhbHVlKHsgb3B0aW9ucywgdmFsdWUgfSlcblxuICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWVUb1JlbmRlcikgJiYgdmFsdWVUb1JlbmRlcj8udmFsdWUgPT09ICdudWxsJykgdmFsdWVUb1JlbmRlci52YWx1ZSA9IG51bGxcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17W1xuICAgICAgICBmaWVsZEJhc2VDbGFzcyxcbiAgICAgICAgYmFzZUNsYXNzLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgIHNob3dFcnJvciAmJiAnZXJyb3InLFxuICAgICAgICBlcnJvckxvYWRpbmcgJiYgJ2Vycm9yLWxvYWRpbmcnLFxuICAgICAgICByZWFkT25seSAmJiBgJHtiYXNlQ2xhc3N9LS1yZWFkLW9ubHlgLFxuICAgICAgXVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgIC5qb2luKCcgJyl9XG4gICAgICBpZD17YGZpZWxkLSR7cGF0aC5yZXBsYWNlKC9cXC4vZywgJ19fJyl9YH1cbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIC4uLnN0eWxlLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH19XG4gICAgPlxuICAgICAge0Vycm9yfVxuICAgICAge0xhYmVsfVxuICAgICAgPEdldEZpbHRlck9wdGlvbnNcbiAgICAgICAgey4uLntcbiAgICAgICAgICBmaWx0ZXJPcHRpb25zLFxuICAgICAgICAgIGZpbHRlck9wdGlvbnNSZXN1bHQsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICByZWxhdGlvblRvLFxuICAgICAgICAgIHNldEZpbHRlck9wdGlvbnNSZXN1bHQsXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICAgeyFlcnJvckxvYWRpbmcgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fd3JhcGB9PlxuICAgICAgICAgIDxSZWFjdFNlbGVjdFxuICAgICAgICAgICAgYmFja3NwYWNlUmVtb3Zlc1ZhbHVlPXshZHJhd2VySXNPcGVufVxuICAgICAgICAgICAgY29tcG9uZW50cz17e1xuICAgICAgICAgICAgICBNdWx0aVZhbHVlTGFiZWwsXG4gICAgICAgICAgICAgIFNpbmdsZVZhbHVlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGN1c3RvbVByb3BzPXt7XG4gICAgICAgICAgICAgIGRpc2FibGVLZXlEb3duOiBkcmF3ZXJJc09wZW4sXG4gICAgICAgICAgICAgIGRpc2FibGVNb3VzZURvd246IGRyYXdlcklzT3BlbixcbiAgICAgICAgICAgICAgb25TYXZlLFxuICAgICAgICAgICAgICBzZXREcmF3ZXJJc09wZW4sXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3JlYWRPbmx5IHx8IGZvcm1Qcm9jZXNzaW5nfVxuICAgICAgICAgICAgZmlsdGVyT3B0aW9uPXtlbmFibGVXb3JkQm91bmRhcnlTZWFyY2ggPyBmaWx0ZXJPcHRpb24gOiB1bmRlZmluZWR9XG4gICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAgIGlzTXVsdGk9e2hhc01hbnl9XG4gICAgICAgICAgICBpc1NvcnRhYmxlPXtpc1NvcnRhYmxlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e1xuICAgICAgICAgICAgICAhcmVhZE9ubHlcbiAgICAgICAgICAgICAgICA/IChzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShoYXNNYW55ID8gW10gOiBudWxsKVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGhhc01hbnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gc2VsZWN0ZWQubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNNdWx0aXBsZVJlbGF0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IG9wdGlvbi5yZWxhdGlvblRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFzTXVsdGlwbGVSZWxhdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvblRvOiBzZWxlY3RlZC5yZWxhdGlvblRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlbGVjdGVkLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoc2VsZWN0ZWQudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb25JbnB1dENoYW5nZT17KG5ld1NlYXJjaCkgPT4gaGFuZGxlSW5wdXRDaGFuZ2UobmV3U2VhcmNoLCB2YWx1ZSl9XG4gICAgICAgICAgICBvbk1lbnVPcGVuPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghaGFzTG9hZGVkRmlyc3RQYWdlKSB7XG4gICAgICAgICAgICAgICAgc2V0SXNMb2FkaW5nKHRydWUpXG4gICAgICAgICAgICAgICAgZ2V0UmVzdWx0cyh7XG4gICAgICAgICAgICAgICAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0SGFzTG9hZGVkRmlyc3RQYWdlKHRydWUpXG4gICAgICAgICAgICAgICAgICAgIHNldElzTG9hZGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogaW5pdGlhbFZhbHVlLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbk1lbnVTY3JvbGxUb0JvdHRvbT17KCkgPT4ge1xuICAgICAgICAgICAgICBnZXRSZXN1bHRzKHtcbiAgICAgICAgICAgICAgICBsYXN0RnVsbHlMb2FkZWRSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGluaXRpYWxWYWx1ZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgICAgICAgc2hvd0Vycm9yPXtzaG93RXJyb3J9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWVUb1JlbmRlciA/PyBudWxsfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgeyFyZWFkT25seSAmJiBhbGxvd0NyZWF0ZSAmJiAoXG4gICAgICAgICAgICA8QWRkTmV3UmVsYXRpb25cbiAgICAgICAgICAgICAgey4uLntcbiAgICAgICAgICAgICAgICBkaXNwYXRjaE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgaGFzTWFueSxcbiAgICAgICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25UbyxcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAge2Vycm9yTG9hZGluZyAmJiA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZXJyb3ItbG9hZGluZ2B9PntlcnJvckxvYWRpbmd9PC9kaXY+fVxuICAgICAge0Rlc2NyaXB0aW9ufVxuICAgIDwvZGl2PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhDb25kaXRpb24oUmVsYXRpb25zaGlwKVxuIl0sIm5hbWVzIjpbIndvcmRCb3VuZGFyaWVzUmVnZXgiLCJxcyIsIlJlYWN0IiwidXNlQ2FsbGJhY2siLCJ1c2VFZmZlY3QiLCJ1c2VSZWR1Y2VyIiwidXNlUmVmIiwidXNlU3RhdGUiLCJHZXRGaWx0ZXJPcHRpb25zIiwiUmVhY3RTZWxlY3QiLCJ1c2VEZWJvdW5jZWRDYWxsYmFjayIsInVzZUF1dGgiLCJ1c2VDb25maWciLCJ1c2VMb2NhbGUiLCJ1c2VUcmFuc2xhdGlvbiIsInVzZUZvcm1Qcm9jZXNzaW5nIiwidXNlRmllbGQiLCJ3aXRoQ29uZGl0aW9uIiwiZmllbGRCYXNlQ2xhc3MiLCJBZGROZXdSZWxhdGlvbiIsImNyZWF0ZVJlbGF0aW9uTWFwIiwiZmluZE9wdGlvbnNCeVZhbHVlIiwib3B0aW9uc1JlZHVjZXIiLCJNdWx0aVZhbHVlTGFiZWwiLCJTaW5nbGVWYWx1ZSIsIm1heFJlc3VsdHNQZXJSZXF1ZXN0IiwiYmFzZUNsYXNzIiwiUmVsYXRpb25zaGlwIiwicHJvcHMiLCJuYW1lIiwiRGVzY3JpcHRpb24iLCJFcnJvciIsIkxhYmVsIiwiY2xhc3NOYW1lIiwicGF0aCIsInBhdGhGcm9tUHJvcHMiLCJyZWFkT25seSIsInJlcXVpcmVkIiwic3R5bGUiLCJ2YWxpZGF0ZSIsIndpZHRoIiwiY29uZmlnIiwiY29sbGVjdGlvbnMiLCJyb3V0ZXMiLCJhcGkiLCJzZXJ2ZXJVUkwiLCJyZWxhdGlvblRvIiwidW5kZWZpbmVkIiwiaGFzTWFueSIsImZpbHRlck9wdGlvbnMiLCJzb3J0T3B0aW9ucyIsImlzU29ydGFibGUiLCJhbGxvd0NyZWF0ZSIsImkxOG4iLCJ0IiwicGVybWlzc2lvbnMiLCJjb2RlIiwibG9jYWxlIiwiZm9ybVByb2Nlc3NpbmciLCJoYXNNdWx0aXBsZVJlbGF0aW9ucyIsIkFycmF5IiwiaXNBcnJheSIsIm9wdGlvbnMiLCJkaXNwYXRjaE9wdGlvbnMiLCJsYXN0RnVsbHlMb2FkZWRSZWxhdGlvbiIsInNldExhc3RGdWxseUxvYWRlZFJlbGF0aW9uIiwibGFzdExvYWRlZFBhZ2UiLCJzZXRMYXN0TG9hZGVkUGFnZSIsImVycm9yTG9hZGluZyIsInNldEVycm9yTG9hZGluZyIsImZpbHRlck9wdGlvbnNSZXN1bHQiLCJzZXRGaWx0ZXJPcHRpb25zUmVzdWx0Iiwic2VhcmNoIiwic2V0U2VhcmNoIiwiaXNMb2FkaW5nIiwic2V0SXNMb2FkaW5nIiwiaGFzTG9hZGVkRmlyc3RQYWdlIiwic2V0SGFzTG9hZGVkRmlyc3RQYWdlIiwiZW5hYmxlV29yZEJvdW5kYXJ5U2VhcmNoIiwic2V0RW5hYmxlV29yZEJvdW5kYXJ5U2VhcmNoIiwiZmlyc3RSdW4iLCJtZW1vaXplZFZhbGlkYXRlIiwidmFsdWUiLCJ2YWxpZGF0aW9uT3B0aW9ucyIsImluaXRpYWxWYWx1ZSIsInNldFZhbHVlIiwic2hvd0Vycm9yIiwiZHJhd2VySXNPcGVuIiwic2V0RHJhd2VySXNPcGVuIiwiZ2V0UmVzdWx0cyIsImxhc3RGdWxseUxvYWRlZFJlbGF0aW9uQXJnIiwib25TdWNjZXNzIiwic2VhcmNoQXJnIiwic29ydCIsInZhbHVlQXJnIiwibGFzdEZ1bGx5TG9hZGVkUmVsYXRpb25Ub1VzZSIsInJlbGF0aW9ucyIsInJlbGF0aW9uc1RvRmV0Y2giLCJzbGljZSIsInJlc3VsdHNGZXRjaGVkIiwicmVsYXRpb25NYXAiLCJyZWR1Y2UiLCJwcmlvclJlbGF0aW9uIiwicmVsYXRpb24iLCJyZWxhdGlvbkZpbHRlck9wdGlvbiIsImxhc3RMb2FkZWRQYWdlVG9Vc2UiLCJpbmRleE9mIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjb2xsZWN0aW9uIiwiZmluZCIsImNvbGwiLCJzbHVnIiwiZmllbGRUb1NlYXJjaCIsImRlZmF1bHRTb3J0IiwiYWRtaW4iLCJ1c2VBc1RpdGxlIiwicXVlcnkiLCJkZXB0aCIsImRyYWZ0IiwibGltaXQiLCJwYWdlIiwid2hlcmUiLCJhbmQiLCJpZCIsIm5vdF9pbiIsInB1c2giLCJsaWtlIiwicmVzcG9uc2UiLCJmZXRjaCIsInN0cmluZ2lmeSIsImNyZWRlbnRpYWxzIiwiaGVhZGVycyIsImxhbmd1YWdlIiwib2siLCJkYXRhIiwianNvbiIsInByZXZTdGF0ZSIsIm5leHRQYWdlIiwiZG9jcyIsImxlbmd0aCIsInR5cGUiLCJzdGF0dXMiLCJpZHMiLCJ1cGRhdGVTZWFyY2giLCJoYW5kbGVJbnB1dENoYW5nZSIsIk9iamVjdCIsImVudHJpZXMiLCJpZHNUb0xvYWQiLCJmaWx0ZXIiLCJvcHRpb25Hcm91cCIsIm9wdGlvbiIsImluIiwiaXNJZE9ubHkiLCJpZE9ubHkiLCJjdXJyZW50Iiwib25TYXZlIiwiYXJncyIsImNvbGxlY3Rpb25Db25maWciLCJkb2MiLCJmaWx0ZXJPcHRpb24iLCJpdGVtIiwic2VhcmNoRmlsdGVyIiwiciIsImJyZWFrQXBhcnRUaHJlc2hvbGQiLCJzdHJpbmciLCJsYWJlbCIsImluZGV4T2ZTcGFjZSIsInRlc3QiLCJ2YWx1ZVRvUmVuZGVyIiwiZGl2IiwiQm9vbGVhbiIsImpvaW4iLCJyZXBsYWNlIiwiYmFja3NwYWNlUmVtb3Zlc1ZhbHVlIiwiY29tcG9uZW50cyIsImN1c3RvbVByb3BzIiwiZGlzYWJsZUtleURvd24iLCJkaXNhYmxlTW91c2VEb3duIiwiZGlzYWJsZWQiLCJpc011bHRpIiwib25DaGFuZ2UiLCJzZWxlY3RlZCIsIm1hcCIsIm9uSW5wdXRDaGFuZ2UiLCJuZXdTZWFyY2giLCJvbk1lbnVPcGVuIiwib25NZW51U2Nyb2xsVG9Cb3R0b20iXSwibWFwcGluZ3MiOiJBQUFBO0FBSUEsU0FBU0EsbUJBQW1CLFFBQVEsb0JBQW1CO0FBQ3ZELE9BQU9DLFFBQVEsS0FBSTtBQUNuQixPQUFPQyxTQUFTQyxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsVUFBVSxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxRQUFP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