@1money/component-ui 0.0.51 → 0.0.52-alpha.2

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 (897) hide show
  1. package/es/components/Accordion/Accordion.js +1 -1
  2. package/es/components/Accordion/constants.js +1 -1
  3. package/es/components/Accordion/index.js +1 -1
  4. package/es/components/Accordion/interface.js +1 -1
  5. package/es/components/Accordion/style/css.js +1 -1
  6. package/es/components/Accordion/style/index.js +1 -1
  7. package/es/components/Alert/Alert.js +1 -1
  8. package/es/components/Alert/index.js +1 -1
  9. package/es/components/Alert/interface.js +1 -1
  10. package/es/components/Alert/style/css.js +1 -1
  11. package/es/components/Alert/style/index.js +1 -1
  12. package/es/components/Button/Button.js +1 -1
  13. package/es/components/Button/constants.js +1 -1
  14. package/es/components/Button/index.js +1 -1
  15. package/es/components/Button/interface.js +1 -1
  16. package/es/components/Button/style/css.js +1 -1
  17. package/es/components/Button/style/index.js +1 -1
  18. package/es/components/Calendar/Calendar.js +1 -1
  19. package/es/components/Calendar/index.js +1 -1
  20. package/es/components/Calendar/interface.js +1 -1
  21. package/es/components/Calendar/style/css.js +1 -1
  22. package/es/components/Calendar/style/index.js +1 -1
  23. package/es/components/Carousel/Carousel.js +1 -1
  24. package/es/components/Carousel/index.js +1 -1
  25. package/es/components/Carousel/interface.js +1 -1
  26. package/es/components/Carousel/style/css.js +1 -1
  27. package/es/components/Carousel/style/index.js +1 -1
  28. package/es/components/Cell/Cell.js +1 -1
  29. package/es/components/Cell/index.js +1 -1
  30. package/es/components/Cell/interface.js +1 -1
  31. package/es/components/Cell/style/css.js +1 -1
  32. package/es/components/Cell/style/index.js +1 -1
  33. package/es/components/Checkbox/BaseCheckbox.js +1 -1
  34. package/es/components/Checkbox/Checkbox.js +1 -1
  35. package/es/components/Checkbox/CheckboxGroup.js +1 -1
  36. package/es/components/Checkbox/CheckboxGroupContext.js +1 -1
  37. package/es/components/Checkbox/constants.js +1 -1
  38. package/es/components/Checkbox/index.js +1 -1
  39. package/es/components/Checkbox/interface.js +1 -1
  40. package/es/components/Checkbox/style/css.js +1 -1
  41. package/es/components/Checkbox/style/index.js +1 -1
  42. package/es/components/CoachMark/CoachMark.js +1 -1
  43. package/es/components/CoachMark/index.js +1 -1
  44. package/es/components/CoachMark/interface.js +1 -1
  45. package/es/components/CoachMark/style/css.js +1 -1
  46. package/es/components/CoachMark/style/index.js +1 -1
  47. package/es/components/Copy/Clipboard.js +1 -1
  48. package/es/components/Copy/Copy.js +1 -1
  49. package/es/components/Copy/index.js +1 -1
  50. package/es/components/Copy/interface.js +1 -1
  51. package/es/components/Copy/style/css.js +1 -1
  52. package/es/components/Copy/style/index.js +1 -1
  53. package/es/components/Dialog/Dialog.js +1 -1
  54. package/es/components/Dialog/constants.js +1 -1
  55. package/es/components/Dialog/index.js +1 -1
  56. package/es/components/Dialog/interface.js +1 -1
  57. package/es/components/Dialog/style/css.js +1 -1
  58. package/es/components/Dialog/style/index.js +1 -1
  59. package/es/components/Divider/Divider.js +1 -1
  60. package/es/components/Divider/constants.js +1 -1
  61. package/es/components/Divider/index.js +1 -1
  62. package/es/components/Divider/interface.js +1 -1
  63. package/es/components/Divider/style/css.js +1 -1
  64. package/es/components/Divider/style/index.js +1 -1
  65. package/es/components/Drawer/Drawer.js +1 -1
  66. package/es/components/Drawer/constants.js +1 -1
  67. package/es/components/Drawer/hooks/index.js +1 -1
  68. package/es/components/Drawer/hooks/useBodyScrollLock.js +1 -1
  69. package/es/components/Drawer/hooks/useDialogFocus.js +1 -1
  70. package/es/components/Drawer/hooks/useDrawerTransition.js +1 -1
  71. package/es/components/Drawer/hooks/useEscapeClose.js +1 -1
  72. package/es/components/Drawer/index.js +1 -1
  73. package/es/components/Drawer/interface.js +1 -1
  74. package/es/components/Drawer/style/css.js +1 -1
  75. package/es/components/Drawer/style/index.js +1 -1
  76. package/es/components/Dropdown/Dropdown.js +1 -1
  77. package/es/components/Dropdown/index.js +1 -1
  78. package/es/components/Dropdown/interface.js +1 -1
  79. package/es/components/Dropdown/style/css.js +1 -1
  80. package/es/components/Dropdown/style/index.js +1 -1
  81. package/es/components/Empty/Empty.js +1 -1
  82. package/es/components/Empty/index.js +1 -1
  83. package/es/components/Empty/interface.js +1 -1
  84. package/es/components/Empty/style/css.js +1 -1
  85. package/es/components/Empty/style/index.js +1 -1
  86. package/es/components/Flex/Flex.js +1 -1
  87. package/es/components/Flex/constants.js +1 -1
  88. package/es/components/Flex/index.js +1 -1
  89. package/es/components/Flex/interface.js +1 -1
  90. package/es/components/Flex/style/css.js +1 -1
  91. package/es/components/Flex/style/index.js +1 -1
  92. package/es/components/Grid/Col.js +1 -1
  93. package/es/components/Grid/Grid.js +1 -1
  94. package/es/components/Grid/Row.js +1 -1
  95. package/es/components/Grid/constants.js +1 -1
  96. package/es/components/Grid/helper.js +1 -1
  97. package/es/components/Grid/index.js +1 -1
  98. package/es/components/Grid/interface.js +1 -1
  99. package/es/components/Grid/style/css.js +1 -1
  100. package/es/components/Grid/style/index.js +1 -1
  101. package/es/components/Icons/Icons.js +1 -1
  102. package/es/components/Icons/Illustrations.js +1 -1
  103. package/es/components/Icons/Logo.js +1 -1
  104. package/es/components/Icons/SVGs.js +1 -1
  105. package/es/components/Icons/Wrapper.js +1 -1
  106. package/es/components/Icons/index.js +1 -1
  107. package/es/components/Icons/interface.js +1 -1
  108. package/es/components/Icons/style/css.js +1 -1
  109. package/es/components/Icons/style/index.js +1 -1
  110. package/es/components/Input/Amount/Amount.js +4 -2
  111. package/es/components/Input/Amount/helper.js +1 -1
  112. package/es/components/Input/Amount/index.js +1 -1
  113. package/es/components/Input/Amount/style/css.js +1 -1
  114. package/es/components/Input/Amount/style/index.js +1 -1
  115. package/es/components/Input/FieldShell/FieldShell.d.ts +1 -0
  116. package/es/components/Input/FieldShell/FieldShell.js +4 -2
  117. package/es/components/Input/FieldShell/index.js +1 -1
  118. package/es/components/Input/Input/Input.css +1 -1
  119. package/es/components/Input/Input/Input.js +4 -2
  120. package/es/components/Input/Input/index.js +1 -1
  121. package/es/components/Input/Mask/Mask.js +4 -2
  122. package/es/components/Input/Mask/index.js +1 -1
  123. package/es/components/Input/OTP/OTP.js +3 -1
  124. package/es/components/Input/OTP/index.js +1 -1
  125. package/es/components/Input/Password/Password.js +4 -2
  126. package/es/components/Input/Password/index.js +1 -1
  127. package/es/components/Input/Search/Search.js +4 -2
  128. package/es/components/Input/Search/index.js +1 -1
  129. package/es/components/Input/TextArea/TextArea.css +1 -1
  130. package/es/components/Input/TextArea/TextArea.js +4 -2
  131. package/es/components/Input/TextArea/index.js +1 -1
  132. package/es/components/Input/Trade/Trade.js +1 -1
  133. package/es/components/Input/Trade/index.js +1 -1
  134. package/es/components/Input/constants.js +1 -1
  135. package/es/components/Input/index.js +1 -1
  136. package/es/components/Input/interface.d.ts +1 -0
  137. package/es/components/Input/interface.js +1 -1
  138. package/es/components/Input/style/css.js +1 -1
  139. package/es/components/Input/style/index.js +1 -1
  140. package/es/components/Input/useAmountInput.js +1 -1
  141. package/es/components/Input/useSyncRef.js +1 -1
  142. package/es/components/Link/Link.js +1 -1
  143. package/es/components/Link/constants.js +1 -1
  144. package/es/components/Link/index.js +1 -1
  145. package/es/components/Link/interface.js +1 -1
  146. package/es/components/Link/style/css.js +1 -1
  147. package/es/components/Link/style/index.js +1 -1
  148. package/es/components/Navigation/Nav.js +1 -1
  149. package/es/components/Navigation/Navigation.js +1 -1
  150. package/es/components/Navigation/NavigationLogo.js +1 -1
  151. package/es/components/Navigation/NavigationStepper.js +1 -1
  152. package/es/components/Navigation/index.js +1 -1
  153. package/es/components/Navigation/interface.js +1 -1
  154. package/es/components/Navigation/style/css.js +1 -1
  155. package/es/components/Navigation/style/index.js +1 -1
  156. package/es/components/Notification/Notification.js +1 -1
  157. package/es/components/Notification/NotificationStatic.js +22 -22
  158. package/es/components/Notification/constants.js +1 -1
  159. package/es/components/Notification/index.js +1 -1
  160. package/es/components/Notification/interface.js +1 -1
  161. package/es/components/Notification/style/css.js +1 -1
  162. package/es/components/Notification/style/index.js +1 -1
  163. package/es/components/Pagination/Pagination.js +1 -1
  164. package/es/components/Pagination/constants.js +1 -1
  165. package/es/components/Pagination/index.js +1 -1
  166. package/es/components/Pagination/interface.js +1 -1
  167. package/es/components/Pagination/style/css.js +1 -1
  168. package/es/components/Pagination/style/index.js +1 -1
  169. package/es/components/Pagination/usePagination.js +1 -1
  170. package/es/components/Popconfirm/Popconfirm.js +1 -1
  171. package/es/components/Popconfirm/constants.js +1 -1
  172. package/es/components/Popconfirm/index.js +1 -1
  173. package/es/components/Popconfirm/interface.js +1 -1
  174. package/es/components/Popconfirm/style/css.js +1 -1
  175. package/es/components/Popconfirm/style/index.js +1 -1
  176. package/es/components/Portal/Portal.js +1 -1
  177. package/es/components/Portal/index.js +1 -1
  178. package/es/components/Portal/interface.js +1 -1
  179. package/es/components/ProForm/ProForm.js +38 -38
  180. package/es/components/ProForm/ProFormDependency.js +5 -5
  181. package/es/components/ProForm/ProFormGroup.js +1 -1
  182. package/es/components/ProForm/ProFormItem.js +1 -1
  183. package/es/components/ProForm/ProFormList.js +1 -1
  184. package/es/components/ProForm/Submitter.js +4 -4
  185. package/es/components/ProForm/constants.js +1 -1
  186. package/es/components/ProForm/context.js +1 -1
  187. package/es/components/ProForm/core/constants.js +1 -1
  188. package/es/components/ProForm/core/hooks/useForm.js +101 -101
  189. package/es/components/ProForm/core/hooks/useFormCore.js +1 -1
  190. package/es/components/ProForm/core/index.js +1 -1
  191. package/es/components/ProForm/core/interface.js +1 -1
  192. package/es/components/ProForm/core/useFormItem.js +5 -5
  193. package/es/components/ProForm/fields/ProFormCheckbox.js +1 -1
  194. package/es/components/ProForm/fields/ProFormCheckboxGroup.js +1 -1
  195. package/es/components/ProForm/fields/ProFormDatePicker.js +1 -1
  196. package/es/components/ProForm/fields/ProFormFieldSet.js +1 -1
  197. package/es/components/ProForm/fields/ProFormPassword.js +1 -1
  198. package/es/components/ProForm/fields/ProFormRadioGroup.js +1 -1
  199. package/es/components/ProForm/fields/ProFormSelect.js +1 -1
  200. package/es/components/ProForm/fields/ProFormSlider.js +1 -1
  201. package/es/components/ProForm/fields/ProFormSwitch.js +1 -1
  202. package/es/components/ProForm/fields/ProFormText.js +1 -1
  203. package/es/components/ProForm/fields/ProFormTextArea.js +1 -1
  204. package/es/components/ProForm/fields/ProFormUpload.js +1 -1
  205. package/es/components/ProForm/fields/createProFormField.js +1 -1
  206. package/es/components/ProForm/fields/index.js +1 -1
  207. package/es/components/ProForm/hooks/useFieldRequest.js +12 -12
  208. package/es/components/ProForm/index.js +1 -1
  209. package/es/components/ProForm/interface.js +1 -1
  210. package/es/components/ProForm/layouts/DialogForm.js +1 -1
  211. package/es/components/ProForm/layouts/DrawerForm.js +1 -1
  212. package/es/components/ProForm/layouts/QueryFilter.js +1 -1
  213. package/es/components/ProForm/layouts/index.js +1 -1
  214. package/es/components/ProForm/layouts/useOverlayForm.js +5 -5
  215. package/es/components/ProForm/style/css.js +1 -1
  216. package/es/components/ProForm/style/index.js +1 -1
  217. package/es/components/ProForm/utils.js +1 -1
  218. package/es/components/Progress/Progress.js +1 -1
  219. package/es/components/Progress/constants.js +1 -1
  220. package/es/components/Progress/index.js +1 -1
  221. package/es/components/Progress/interface.js +1 -1
  222. package/es/components/Progress/style/css.js +1 -1
  223. package/es/components/Progress/style/index.js +1 -1
  224. package/es/components/Radio/BaseRadio.js +1 -1
  225. package/es/components/Radio/Radio.js +1 -1
  226. package/es/components/Radio/RadioGroup.js +1 -1
  227. package/es/components/Radio/RadioGroupContext.js +1 -1
  228. package/es/components/Radio/constants.js +1 -1
  229. package/es/components/Radio/index.js +1 -1
  230. package/es/components/Radio/interface.js +1 -1
  231. package/es/components/Radio/style/css.js +1 -1
  232. package/es/components/Radio/style/index.js +1 -1
  233. package/es/components/ResizeObserver/Collection.js +1 -1
  234. package/es/components/ResizeObserver/ResizeObserver.js +1 -1
  235. package/es/components/ResizeObserver/SingleObserver/index.js +1 -1
  236. package/es/components/ResizeObserver/index.js +1 -1
  237. package/es/components/ResizeObserver/interface.js +1 -1
  238. package/es/components/ResizeObserver/useResizeObserver.js +1 -1
  239. package/es/components/ResizeObserver/utils/observerUtil.js +1 -1
  240. package/es/components/ResizeObserver/utils/reactUtil.js +1 -1
  241. package/es/components/Segment/Segment.js +1 -1
  242. package/es/components/Segment/index.js +1 -1
  243. package/es/components/Segment/interface.js +1 -1
  244. package/es/components/Segment/style/css.js +1 -1
  245. package/es/components/Segment/style/index.js +1 -1
  246. package/es/components/Select/Select.js +3 -1
  247. package/es/components/Select/SelectCustom.js +3 -1
  248. package/es/components/Select/SelectFieldShell.d.ts +1 -0
  249. package/es/components/Select/SelectFieldShell.js +3 -2
  250. package/es/components/Select/SelectOptionContent.js +1 -1
  251. package/es/components/Select/SelectSearchControl.js +1 -1
  252. package/es/components/Select/SelectValueContent.js +1 -1
  253. package/es/components/Select/constants.js +1 -1
  254. package/es/components/Select/index.js +1 -1
  255. package/es/components/Select/interface.d.ts +2 -0
  256. package/es/components/Select/interface.js +1 -1
  257. package/es/components/Select/style/css.js +1 -1
  258. package/es/components/Select/style/index.js +1 -1
  259. package/es/components/Select/useSelectShell.js +1 -1
  260. package/es/components/Select/utils.js +1 -1
  261. package/es/components/Skeleton/Skeleton.js +1 -1
  262. package/es/components/Skeleton/index.js +1 -1
  263. package/es/components/Skeleton/interface.js +1 -1
  264. package/es/components/Skeleton/style/css.js +1 -1
  265. package/es/components/Skeleton/style/index.js +1 -1
  266. package/es/components/Slider/Slider.js +1 -1
  267. package/es/components/Slider/index.js +1 -1
  268. package/es/components/Slider/interface.js +1 -1
  269. package/es/components/Slider/style/css.js +1 -1
  270. package/es/components/Slider/style/index.js +1 -1
  271. package/es/components/Space/Space.js +1 -1
  272. package/es/components/Space/constants.js +1 -1
  273. package/es/components/Space/index.js +1 -1
  274. package/es/components/Space/interface.js +1 -1
  275. package/es/components/Space/style/css.js +1 -1
  276. package/es/components/Space/style/index.js +1 -1
  277. package/es/components/Spinner/Spinner.js +7 -7
  278. package/es/components/Spinner/index.js +1 -1
  279. package/es/components/Spinner/interface.js +1 -1
  280. package/es/components/Spinner/style/css.js +1 -1
  281. package/es/components/Spinner/style/index.js +1 -1
  282. package/es/components/Step/Step.js +1 -1
  283. package/es/components/Step/constants.js +1 -1
  284. package/es/components/Step/index.js +1 -1
  285. package/es/components/Step/interface.js +1 -1
  286. package/es/components/Step/style/css.js +1 -1
  287. package/es/components/Step/style/index.js +1 -1
  288. package/es/components/Switch/Switch.js +1 -1
  289. package/es/components/Switch/constants.js +1 -1
  290. package/es/components/Switch/index.js +1 -1
  291. package/es/components/Switch/interface.js +1 -1
  292. package/es/components/Switch/style/css.js +1 -1
  293. package/es/components/Switch/style/index.js +1 -1
  294. package/es/components/Table/Table.js +1 -1
  295. package/es/components/Table/VirtualTable.js +1 -1
  296. package/es/components/Table/constants.js +1 -1
  297. package/es/components/Table/core/useTableColumns.js +1 -1
  298. package/es/components/Table/core/useTableDataPipeline.js +1 -1
  299. package/es/components/Table/core/useTableExpand.js +1 -1
  300. package/es/components/Table/core/useTableSelection.js +1 -1
  301. package/es/components/Table/core/useTableSetup.js +1 -1
  302. package/es/components/Table/features/ExpandTrigger.js +1 -1
  303. package/es/components/Table/features/FilterTrigger.js +1 -1
  304. package/es/components/Table/features/SelectionColumn.js +1 -1
  305. package/es/components/Table/features/SortTrigger.js +1 -1
  306. package/es/components/Table/index.js +1 -1
  307. package/es/components/Table/interface.js +1 -1
  308. package/es/components/Table/internal/index.js +1 -1
  309. package/es/components/Table/internal/kernel/Body/BodyRow.js +1 -1
  310. package/es/components/Table/internal/kernel/Body/ExpandedRow.js +1 -1
  311. package/es/components/Table/internal/kernel/Body/MeasureCell.js +1 -1
  312. package/es/components/Table/internal/kernel/Body/MeasureRow.js +1 -1
  313. package/es/components/Table/internal/kernel/Body/index.js +1 -1
  314. package/es/components/Table/internal/kernel/Cell/index.js +1 -1
  315. package/es/components/Table/internal/kernel/Cell/useCellRender.js +1 -1
  316. package/es/components/Table/internal/kernel/Cell/useHoverState.js +1 -1
  317. package/es/components/Table/internal/kernel/ColGroup.js +1 -1
  318. package/es/components/Table/internal/kernel/FixedHolder/index.js +1 -1
  319. package/es/components/Table/internal/kernel/Footer/Cell.js +1 -1
  320. package/es/components/Table/internal/kernel/Footer/Row.js +1 -1
  321. package/es/components/Table/internal/kernel/Footer/Summary.js +1 -1
  322. package/es/components/Table/internal/kernel/Footer/SummaryContext.js +1 -1
  323. package/es/components/Table/internal/kernel/Footer/index.js +1 -1
  324. package/es/components/Table/internal/kernel/Header/Header.js +1 -1
  325. package/es/components/Table/internal/kernel/Header/HeaderRow.js +1 -1
  326. package/es/components/Table/internal/kernel/Panel/index.js +1 -1
  327. package/es/components/Table/internal/kernel/Table.js +1 -1
  328. package/es/components/Table/internal/kernel/VirtualTable/BodyGrid.js +1 -1
  329. package/es/components/Table/internal/kernel/VirtualTable/BodyLine.js +1 -1
  330. package/es/components/Table/internal/kernel/VirtualTable/VirtualCell.js +1 -1
  331. package/es/components/Table/internal/kernel/VirtualTable/context.js +1 -1
  332. package/es/components/Table/internal/kernel/VirtualTable/index.js +1 -1
  333. package/es/components/Table/internal/kernel/constant.js +1 -1
  334. package/es/components/Table/internal/kernel/context/PerfContext.js +1 -1
  335. package/es/components/Table/internal/kernel/context/TableContext.js +1 -1
  336. package/es/components/Table/internal/kernel/hooks/useColumns/index.js +1 -1
  337. package/es/components/Table/internal/kernel/hooks/useColumns/useWidthColumns.js +1 -1
  338. package/es/components/Table/internal/kernel/hooks/useExpand.js +1 -1
  339. package/es/components/Table/internal/kernel/hooks/useFixedInfo.js +1 -1
  340. package/es/components/Table/internal/kernel/hooks/useFlattenRecords.js +1 -1
  341. package/es/components/Table/internal/kernel/hooks/useFrame.js +1 -1
  342. package/es/components/Table/internal/kernel/hooks/useHover.js +1 -1
  343. package/es/components/Table/internal/kernel/hooks/useRenderTimes.js +1 -1
  344. package/es/components/Table/internal/kernel/hooks/useRowInfo.js +1 -1
  345. package/es/components/Table/internal/kernel/hooks/useSticky.js +1 -1
  346. package/es/components/Table/internal/kernel/hooks/useStickyOffsets.js +1 -1
  347. package/es/components/Table/internal/kernel/index.js +1 -1
  348. package/es/components/Table/internal/kernel/interface.js +1 -1
  349. package/es/components/Table/internal/kernel/namePathType.js +1 -1
  350. package/es/components/Table/internal/kernel/selector-context/Immutable.js +1 -1
  351. package/es/components/Table/internal/kernel/selector-context/context.js +1 -1
  352. package/es/components/Table/internal/kernel/selector-context/index.js +1 -1
  353. package/es/components/Table/internal/kernel/selector-context/isEqual.js +1 -1
  354. package/es/components/Table/internal/kernel/stickyScrollBar.js +1 -1
  355. package/es/components/Table/internal/kernel/sugar/Column.js +1 -1
  356. package/es/components/Table/internal/kernel/sugar/ColumnGroup.js +1 -1
  357. package/es/components/Table/internal/kernel/utils/dom/canUseDom.js +1 -1
  358. package/es/components/Table/internal/kernel/utils/dom/isVisible.js +1 -1
  359. package/es/components/Table/internal/kernel/utils/expandUtil.js +1 -1
  360. package/es/components/Table/internal/kernel/utils/fixUtil.js +1 -1
  361. package/es/components/Table/internal/kernel/utils/get.js +1 -1
  362. package/es/components/Table/internal/kernel/utils/getScrollBarSize.js +1 -1
  363. package/es/components/Table/internal/kernel/utils/legacyUtil.js +1 -1
  364. package/es/components/Table/internal/kernel/utils/offsetUtil.js +1 -1
  365. package/es/components/Table/internal/kernel/utils/pickAttrs.js +1 -1
  366. package/es/components/Table/internal/kernel/utils/useMemo.js +1 -1
  367. package/es/components/Table/internal/kernel/utils/valueUtil.js +1 -1
  368. package/es/components/Table/internal/kernel/utils/warning.js +1 -1
  369. package/es/components/Table/renderers/BodyCell.js +1 -1
  370. package/es/components/Table/renderers/CellContent.js +1 -1
  371. package/es/components/Table/renderers/EmptyState.js +1 -1
  372. package/es/components/Table/renderers/ExpandedRowContainer.js +1 -1
  373. package/es/components/Table/renderers/HeaderCell.js +1 -1
  374. package/es/components/Table/style/css.js +1 -1
  375. package/es/components/Table/style/index.js +1 -1
  376. package/es/components/Tabs/Tabs.js +1 -1
  377. package/es/components/Tabs/index.js +1 -1
  378. package/es/components/Tabs/interface.js +1 -1
  379. package/es/components/Tabs/style/css.js +1 -1
  380. package/es/components/Tabs/style/index.js +1 -1
  381. package/es/components/Tag/Tag.js +1 -1
  382. package/es/components/Tag/constants.js +1 -1
  383. package/es/components/Tag/index.js +1 -1
  384. package/es/components/Tag/interface.js +1 -1
  385. package/es/components/Tag/style/css.js +1 -1
  386. package/es/components/Tag/style/index.js +1 -1
  387. package/es/components/Tooltip/Tooltip.js +1 -1
  388. package/es/components/Tooltip/index.js +1 -1
  389. package/es/components/Tooltip/interface.js +1 -1
  390. package/es/components/Tooltip/style/css.js +1 -1
  391. package/es/components/Tooltip/style/index.js +1 -1
  392. package/es/components/Tour/Tour.js +1 -1
  393. package/es/components/Tour/index.js +1 -1
  394. package/es/components/Tour/interface.js +1 -1
  395. package/es/components/Trigger/Trigger.js +1 -1
  396. package/es/components/Trigger/index.js +1 -1
  397. package/es/components/Trigger/interface.js +1 -1
  398. package/es/components/Trigger/style/css.js +1 -1
  399. package/es/components/Trigger/style/index.js +1 -1
  400. package/es/components/Typography/Typography.js +1 -1
  401. package/es/components/Typography/constants.js +1 -1
  402. package/es/components/Typography/index.js +1 -1
  403. package/es/components/Typography/interface.js +1 -1
  404. package/es/components/Typography/render.js +1 -1
  405. package/es/components/Typography/style/Typography.css +8 -4
  406. package/es/components/Typography/style/css.js +1 -1
  407. package/es/components/Typography/style/index.js +1 -1
  408. package/es/components/Typography/useTypographyEnhancements.js +1 -1
  409. package/es/components/Typography/utils.js +1 -1
  410. package/es/components/Upload/Upload.js +1 -1
  411. package/es/components/Upload/UploadFileBar.js +1 -1
  412. package/es/components/Upload/index.js +1 -1
  413. package/es/components/Upload/interface.js +1 -1
  414. package/es/components/Upload/style/css.js +1 -1
  415. package/es/components/Upload/style/index.js +1 -1
  416. package/es/components/VirtualList/Filler.js +1 -1
  417. package/es/components/VirtualList/Item.js +1 -1
  418. package/es/components/VirtualList/ScrollBar.js +1 -1
  419. package/es/components/VirtualList/VirtualList.js +1 -1
  420. package/es/components/VirtualList/constants.js +1 -1
  421. package/es/components/VirtualList/hooks/useChildren.js +1 -1
  422. package/es/components/VirtualList/hooks/useDiffItem.js +1 -1
  423. package/es/components/VirtualList/hooks/useFrameWheel.js +1 -1
  424. package/es/components/VirtualList/hooks/useGetSize.js +1 -1
  425. package/es/components/VirtualList/hooks/useHeights.js +1 -1
  426. package/es/components/VirtualList/hooks/useMobileTouchMove.js +1 -1
  427. package/es/components/VirtualList/hooks/useOriginScroll.js +1 -1
  428. package/es/components/VirtualList/hooks/useScrollDrag.js +1 -1
  429. package/es/components/VirtualList/hooks/useScrollTo.js +1 -1
  430. package/es/components/VirtualList/index.js +1 -1
  431. package/es/components/VirtualList/interface.js +1 -1
  432. package/es/components/VirtualList/style/css.js +1 -1
  433. package/es/components/VirtualList/style/index.js +1 -1
  434. package/es/components/VirtualList/utils/CacheMap.js +1 -1
  435. package/es/components/VirtualList/utils/algorithmUtil.js +1 -1
  436. package/es/components/VirtualList/utils/isFirefox.js +1 -1
  437. package/es/components/VirtualList/utils/raf.js +1 -1
  438. package/es/components/VirtualList/utils/scrollbarUtil.js +1 -1
  439. package/es/hooks/index.js +1 -1
  440. package/es/hooks/useFloatingAnimation.js +1 -1
  441. package/es/index.css +1 -1
  442. package/es/index.js +1 -1
  443. package/es/stories/docs/ComponentDocsPage.js +1 -1
  444. package/es/stories/docs/componentDocMeta.js +1 -1
  445. package/es/utils/classnames.js +1 -1
  446. package/es/utils/clipboard.js +1 -1
  447. package/es/utils/ref.js +1 -1
  448. package/es/utils/uuid.js +1 -1
  449. package/lib/components/Accordion/Accordion.js +1 -1
  450. package/lib/components/Accordion/constants.js +1 -1
  451. package/lib/components/Accordion/index.js +1 -1
  452. package/lib/components/Accordion/interface.js +1 -1
  453. package/lib/components/Accordion/style/css.js +1 -1
  454. package/lib/components/Accordion/style/index.js +1 -1
  455. package/lib/components/Alert/Alert.js +1 -1
  456. package/lib/components/Alert/index.js +1 -1
  457. package/lib/components/Alert/interface.js +1 -1
  458. package/lib/components/Alert/style/css.js +1 -1
  459. package/lib/components/Alert/style/index.js +1 -1
  460. package/lib/components/Button/Button.js +1 -1
  461. package/lib/components/Button/constants.js +1 -1
  462. package/lib/components/Button/index.js +1 -1
  463. package/lib/components/Button/interface.js +1 -1
  464. package/lib/components/Button/style/css.js +1 -1
  465. package/lib/components/Button/style/index.js +1 -1
  466. package/lib/components/Calendar/Calendar.js +1 -1
  467. package/lib/components/Calendar/index.js +1 -1
  468. package/lib/components/Calendar/interface.js +1 -1
  469. package/lib/components/Calendar/style/css.js +1 -1
  470. package/lib/components/Calendar/style/index.js +1 -1
  471. package/lib/components/Carousel/Carousel.js +1 -1
  472. package/lib/components/Carousel/index.js +1 -1
  473. package/lib/components/Carousel/interface.js +1 -1
  474. package/lib/components/Carousel/style/css.js +1 -1
  475. package/lib/components/Carousel/style/index.js +1 -1
  476. package/lib/components/Cell/Cell.js +1 -1
  477. package/lib/components/Cell/index.js +1 -1
  478. package/lib/components/Cell/interface.js +1 -1
  479. package/lib/components/Cell/style/css.js +1 -1
  480. package/lib/components/Cell/style/index.js +1 -1
  481. package/lib/components/Checkbox/BaseCheckbox.js +1 -1
  482. package/lib/components/Checkbox/Checkbox.js +1 -1
  483. package/lib/components/Checkbox/CheckboxGroup.js +1 -1
  484. package/lib/components/Checkbox/CheckboxGroupContext.js +1 -1
  485. package/lib/components/Checkbox/constants.js +1 -1
  486. package/lib/components/Checkbox/index.js +1 -1
  487. package/lib/components/Checkbox/interface.js +1 -1
  488. package/lib/components/Checkbox/style/css.js +1 -1
  489. package/lib/components/Checkbox/style/index.js +1 -1
  490. package/lib/components/CoachMark/CoachMark.js +1 -1
  491. package/lib/components/CoachMark/index.js +1 -1
  492. package/lib/components/CoachMark/interface.js +1 -1
  493. package/lib/components/CoachMark/style/css.js +1 -1
  494. package/lib/components/CoachMark/style/index.js +1 -1
  495. package/lib/components/Copy/Clipboard.js +1 -1
  496. package/lib/components/Copy/Copy.js +1 -1
  497. package/lib/components/Copy/index.js +1 -1
  498. package/lib/components/Copy/interface.js +1 -1
  499. package/lib/components/Copy/style/css.js +1 -1
  500. package/lib/components/Copy/style/index.js +1 -1
  501. package/lib/components/Dialog/Dialog.js +1 -1
  502. package/lib/components/Dialog/constants.js +1 -1
  503. package/lib/components/Dialog/index.js +1 -1
  504. package/lib/components/Dialog/interface.js +1 -1
  505. package/lib/components/Dialog/style/css.js +1 -1
  506. package/lib/components/Dialog/style/index.js +1 -1
  507. package/lib/components/Divider/Divider.js +1 -1
  508. package/lib/components/Divider/constants.js +1 -1
  509. package/lib/components/Divider/index.js +1 -1
  510. package/lib/components/Divider/interface.js +1 -1
  511. package/lib/components/Divider/style/css.js +1 -1
  512. package/lib/components/Divider/style/index.js +1 -1
  513. package/lib/components/Drawer/Drawer.js +1 -1
  514. package/lib/components/Drawer/constants.js +1 -1
  515. package/lib/components/Drawer/hooks/index.js +1 -1
  516. package/lib/components/Drawer/hooks/useBodyScrollLock.js +1 -1
  517. package/lib/components/Drawer/hooks/useDialogFocus.js +1 -1
  518. package/lib/components/Drawer/hooks/useDrawerTransition.js +1 -1
  519. package/lib/components/Drawer/hooks/useEscapeClose.js +1 -1
  520. package/lib/components/Drawer/index.js +1 -1
  521. package/lib/components/Drawer/interface.js +1 -1
  522. package/lib/components/Drawer/style/css.js +1 -1
  523. package/lib/components/Drawer/style/index.js +1 -1
  524. package/lib/components/Dropdown/Dropdown.js +1 -1
  525. package/lib/components/Dropdown/index.js +1 -1
  526. package/lib/components/Dropdown/interface.js +1 -1
  527. package/lib/components/Dropdown/style/css.js +1 -1
  528. package/lib/components/Dropdown/style/index.js +1 -1
  529. package/lib/components/Empty/Empty.js +1 -1
  530. package/lib/components/Empty/index.js +1 -1
  531. package/lib/components/Empty/interface.js +1 -1
  532. package/lib/components/Empty/style/css.js +1 -1
  533. package/lib/components/Empty/style/index.js +1 -1
  534. package/lib/components/Flex/Flex.js +1 -1
  535. package/lib/components/Flex/constants.js +1 -1
  536. package/lib/components/Flex/index.js +1 -1
  537. package/lib/components/Flex/interface.js +1 -1
  538. package/lib/components/Flex/style/css.js +1 -1
  539. package/lib/components/Flex/style/index.js +1 -1
  540. package/lib/components/Grid/Col.js +1 -1
  541. package/lib/components/Grid/Grid.js +1 -1
  542. package/lib/components/Grid/Row.js +1 -1
  543. package/lib/components/Grid/constants.js +1 -1
  544. package/lib/components/Grid/helper.js +1 -1
  545. package/lib/components/Grid/index.js +1 -1
  546. package/lib/components/Grid/interface.js +1 -1
  547. package/lib/components/Grid/style/css.js +1 -1
  548. package/lib/components/Grid/style/index.js +1 -1
  549. package/lib/components/Icons/Icons.js +1 -1
  550. package/lib/components/Icons/Illustrations.js +1 -1
  551. package/lib/components/Icons/Logo.js +1 -1
  552. package/lib/components/Icons/SVGs.js +1 -1
  553. package/lib/components/Icons/Wrapper.js +1 -1
  554. package/lib/components/Icons/index.js +1 -1
  555. package/lib/components/Icons/interface.js +1 -1
  556. package/lib/components/Icons/style/css.js +1 -1
  557. package/lib/components/Icons/style/index.js +1 -1
  558. package/lib/components/Input/Amount/Amount.js +4 -2
  559. package/lib/components/Input/Amount/helper.js +1 -1
  560. package/lib/components/Input/Amount/index.js +1 -1
  561. package/lib/components/Input/Amount/style/css.js +1 -1
  562. package/lib/components/Input/Amount/style/index.js +1 -1
  563. package/lib/components/Input/FieldShell/FieldShell.d.ts +1 -0
  564. package/lib/components/Input/FieldShell/FieldShell.js +4 -2
  565. package/lib/components/Input/FieldShell/index.js +1 -1
  566. package/lib/components/Input/Input/Input.css +1 -1
  567. package/lib/components/Input/Input/Input.js +4 -2
  568. package/lib/components/Input/Input/index.js +1 -1
  569. package/lib/components/Input/Mask/Mask.js +4 -2
  570. package/lib/components/Input/Mask/index.js +1 -1
  571. package/lib/components/Input/OTP/OTP.js +3 -1
  572. package/lib/components/Input/OTP/index.js +1 -1
  573. package/lib/components/Input/Password/Password.js +4 -2
  574. package/lib/components/Input/Password/index.js +1 -1
  575. package/lib/components/Input/Search/Search.js +4 -2
  576. package/lib/components/Input/Search/index.js +1 -1
  577. package/lib/components/Input/TextArea/TextArea.css +1 -1
  578. package/lib/components/Input/TextArea/TextArea.js +4 -2
  579. package/lib/components/Input/TextArea/index.js +1 -1
  580. package/lib/components/Input/Trade/Trade.js +1 -1
  581. package/lib/components/Input/Trade/index.js +1 -1
  582. package/lib/components/Input/constants.js +1 -1
  583. package/lib/components/Input/index.js +1 -1
  584. package/lib/components/Input/interface.d.ts +1 -0
  585. package/lib/components/Input/interface.js +1 -1
  586. package/lib/components/Input/style/css.js +1 -1
  587. package/lib/components/Input/style/index.js +1 -1
  588. package/lib/components/Input/useAmountInput.js +1 -1
  589. package/lib/components/Input/useSyncRef.js +1 -1
  590. package/lib/components/Link/Link.js +1 -1
  591. package/lib/components/Link/constants.js +1 -1
  592. package/lib/components/Link/index.js +1 -1
  593. package/lib/components/Link/interface.js +1 -1
  594. package/lib/components/Link/style/css.js +1 -1
  595. package/lib/components/Link/style/index.js +1 -1
  596. package/lib/components/Navigation/Nav.js +1 -1
  597. package/lib/components/Navigation/Navigation.js +1 -1
  598. package/lib/components/Navigation/NavigationLogo.js +1 -1
  599. package/lib/components/Navigation/NavigationStepper.js +1 -1
  600. package/lib/components/Navigation/index.js +1 -1
  601. package/lib/components/Navigation/interface.js +1 -1
  602. package/lib/components/Navigation/style/css.js +1 -1
  603. package/lib/components/Navigation/style/index.js +1 -1
  604. package/lib/components/Notification/Notification.js +1 -1
  605. package/lib/components/Notification/NotificationStatic.js +22 -22
  606. package/lib/components/Notification/constants.js +1 -1
  607. package/lib/components/Notification/index.js +1 -1
  608. package/lib/components/Notification/interface.js +1 -1
  609. package/lib/components/Notification/style/css.js +1 -1
  610. package/lib/components/Notification/style/index.js +1 -1
  611. package/lib/components/Pagination/Pagination.js +1 -1
  612. package/lib/components/Pagination/constants.js +1 -1
  613. package/lib/components/Pagination/index.js +1 -1
  614. package/lib/components/Pagination/interface.js +1 -1
  615. package/lib/components/Pagination/style/css.js +1 -1
  616. package/lib/components/Pagination/style/index.js +1 -1
  617. package/lib/components/Pagination/usePagination.js +1 -1
  618. package/lib/components/Popconfirm/Popconfirm.js +1 -1
  619. package/lib/components/Popconfirm/constants.js +1 -1
  620. package/lib/components/Popconfirm/index.js +1 -1
  621. package/lib/components/Popconfirm/interface.js +1 -1
  622. package/lib/components/Popconfirm/style/css.js +1 -1
  623. package/lib/components/Popconfirm/style/index.js +1 -1
  624. package/lib/components/Portal/Portal.js +1 -1
  625. package/lib/components/Portal/index.js +1 -1
  626. package/lib/components/Portal/interface.js +1 -1
  627. package/lib/components/ProForm/ProForm.js +38 -38
  628. package/lib/components/ProForm/ProFormDependency.js +5 -5
  629. package/lib/components/ProForm/ProFormGroup.js +1 -1
  630. package/lib/components/ProForm/ProFormItem.js +1 -1
  631. package/lib/components/ProForm/ProFormList.js +1 -1
  632. package/lib/components/ProForm/Submitter.js +4 -4
  633. package/lib/components/ProForm/constants.js +1 -1
  634. package/lib/components/ProForm/context.js +1 -1
  635. package/lib/components/ProForm/core/constants.js +1 -1
  636. package/lib/components/ProForm/core/hooks/useForm.js +101 -101
  637. package/lib/components/ProForm/core/hooks/useFormCore.js +1 -1
  638. package/lib/components/ProForm/core/index.js +1 -1
  639. package/lib/components/ProForm/core/interface.js +1 -1
  640. package/lib/components/ProForm/core/useFormItem.js +5 -5
  641. package/lib/components/ProForm/fields/ProFormCheckbox.js +1 -1
  642. package/lib/components/ProForm/fields/ProFormCheckboxGroup.js +1 -1
  643. package/lib/components/ProForm/fields/ProFormDatePicker.js +1 -1
  644. package/lib/components/ProForm/fields/ProFormFieldSet.js +1 -1
  645. package/lib/components/ProForm/fields/ProFormPassword.js +1 -1
  646. package/lib/components/ProForm/fields/ProFormRadioGroup.js +1 -1
  647. package/lib/components/ProForm/fields/ProFormSelect.js +1 -1
  648. package/lib/components/ProForm/fields/ProFormSlider.js +1 -1
  649. package/lib/components/ProForm/fields/ProFormSwitch.js +1 -1
  650. package/lib/components/ProForm/fields/ProFormText.js +1 -1
  651. package/lib/components/ProForm/fields/ProFormTextArea.js +1 -1
  652. package/lib/components/ProForm/fields/ProFormUpload.js +1 -1
  653. package/lib/components/ProForm/fields/createProFormField.js +1 -1
  654. package/lib/components/ProForm/fields/index.js +1 -1
  655. package/lib/components/ProForm/hooks/useFieldRequest.js +12 -12
  656. package/lib/components/ProForm/index.js +1 -1
  657. package/lib/components/ProForm/interface.js +1 -1
  658. package/lib/components/ProForm/layouts/DialogForm.js +1 -1
  659. package/lib/components/ProForm/layouts/DrawerForm.js +1 -1
  660. package/lib/components/ProForm/layouts/QueryFilter.js +1 -1
  661. package/lib/components/ProForm/layouts/index.js +1 -1
  662. package/lib/components/ProForm/layouts/useOverlayForm.js +5 -5
  663. package/lib/components/ProForm/style/css.js +1 -1
  664. package/lib/components/ProForm/style/index.js +1 -1
  665. package/lib/components/ProForm/utils.js +1 -1
  666. package/lib/components/Progress/Progress.js +1 -1
  667. package/lib/components/Progress/constants.js +1 -1
  668. package/lib/components/Progress/index.js +1 -1
  669. package/lib/components/Progress/interface.js +1 -1
  670. package/lib/components/Progress/style/css.js +1 -1
  671. package/lib/components/Progress/style/index.js +1 -1
  672. package/lib/components/Radio/BaseRadio.js +1 -1
  673. package/lib/components/Radio/Radio.js +1 -1
  674. package/lib/components/Radio/RadioGroup.js +1 -1
  675. package/lib/components/Radio/RadioGroupContext.js +1 -1
  676. package/lib/components/Radio/constants.js +1 -1
  677. package/lib/components/Radio/index.js +1 -1
  678. package/lib/components/Radio/interface.js +1 -1
  679. package/lib/components/Radio/style/css.js +1 -1
  680. package/lib/components/Radio/style/index.js +1 -1
  681. package/lib/components/ResizeObserver/Collection.js +1 -1
  682. package/lib/components/ResizeObserver/ResizeObserver.js +1 -1
  683. package/lib/components/ResizeObserver/SingleObserver/index.js +1 -1
  684. package/lib/components/ResizeObserver/index.js +1 -1
  685. package/lib/components/ResizeObserver/interface.js +1 -1
  686. package/lib/components/ResizeObserver/useResizeObserver.js +1 -1
  687. package/lib/components/ResizeObserver/utils/observerUtil.js +1 -1
  688. package/lib/components/ResizeObserver/utils/reactUtil.js +1 -1
  689. package/lib/components/Segment/Segment.js +1 -1
  690. package/lib/components/Segment/index.js +1 -1
  691. package/lib/components/Segment/interface.js +1 -1
  692. package/lib/components/Segment/style/css.js +1 -1
  693. package/lib/components/Segment/style/index.js +1 -1
  694. package/lib/components/Select/Select.js +3 -1
  695. package/lib/components/Select/SelectCustom.js +3 -1
  696. package/lib/components/Select/SelectFieldShell.d.ts +1 -0
  697. package/lib/components/Select/SelectFieldShell.js +3 -2
  698. package/lib/components/Select/SelectOptionContent.js +1 -1
  699. package/lib/components/Select/SelectSearchControl.js +1 -1
  700. package/lib/components/Select/SelectValueContent.js +1 -1
  701. package/lib/components/Select/constants.js +1 -1
  702. package/lib/components/Select/index.js +1 -1
  703. package/lib/components/Select/interface.d.ts +2 -0
  704. package/lib/components/Select/interface.js +1 -1
  705. package/lib/components/Select/style/css.js +1 -1
  706. package/lib/components/Select/style/index.js +1 -1
  707. package/lib/components/Select/useSelectShell.js +1 -1
  708. package/lib/components/Select/utils.js +1 -1
  709. package/lib/components/Skeleton/Skeleton.js +1 -1
  710. package/lib/components/Skeleton/index.js +1 -1
  711. package/lib/components/Skeleton/interface.js +1 -1
  712. package/lib/components/Skeleton/style/css.js +1 -1
  713. package/lib/components/Skeleton/style/index.js +1 -1
  714. package/lib/components/Slider/Slider.js +1 -1
  715. package/lib/components/Slider/index.js +1 -1
  716. package/lib/components/Slider/interface.js +1 -1
  717. package/lib/components/Slider/style/css.js +1 -1
  718. package/lib/components/Slider/style/index.js +1 -1
  719. package/lib/components/Space/Space.js +1 -1
  720. package/lib/components/Space/constants.js +1 -1
  721. package/lib/components/Space/index.js +1 -1
  722. package/lib/components/Space/interface.js +1 -1
  723. package/lib/components/Space/style/css.js +1 -1
  724. package/lib/components/Space/style/index.js +1 -1
  725. package/lib/components/Spinner/Spinner.js +7 -7
  726. package/lib/components/Spinner/index.js +1 -1
  727. package/lib/components/Spinner/interface.js +1 -1
  728. package/lib/components/Spinner/style/css.js +1 -1
  729. package/lib/components/Spinner/style/index.js +1 -1
  730. package/lib/components/Step/Step.js +1 -1
  731. package/lib/components/Step/constants.js +1 -1
  732. package/lib/components/Step/index.js +1 -1
  733. package/lib/components/Step/interface.js +1 -1
  734. package/lib/components/Step/style/css.js +1 -1
  735. package/lib/components/Step/style/index.js +1 -1
  736. package/lib/components/Switch/Switch.js +1 -1
  737. package/lib/components/Switch/constants.js +1 -1
  738. package/lib/components/Switch/index.js +1 -1
  739. package/lib/components/Switch/interface.js +1 -1
  740. package/lib/components/Switch/style/css.js +1 -1
  741. package/lib/components/Switch/style/index.js +1 -1
  742. package/lib/components/Table/Table.js +1 -1
  743. package/lib/components/Table/VirtualTable.js +1 -1
  744. package/lib/components/Table/constants.js +1 -1
  745. package/lib/components/Table/core/useTableColumns.js +1 -1
  746. package/lib/components/Table/core/useTableDataPipeline.js +1 -1
  747. package/lib/components/Table/core/useTableExpand.js +1 -1
  748. package/lib/components/Table/core/useTableSelection.js +1 -1
  749. package/lib/components/Table/core/useTableSetup.js +1 -1
  750. package/lib/components/Table/features/ExpandTrigger.js +1 -1
  751. package/lib/components/Table/features/FilterTrigger.js +1 -1
  752. package/lib/components/Table/features/SelectionColumn.js +1 -1
  753. package/lib/components/Table/features/SortTrigger.js +1 -1
  754. package/lib/components/Table/index.js +1 -1
  755. package/lib/components/Table/interface.js +1 -1
  756. package/lib/components/Table/internal/index.js +1 -1
  757. package/lib/components/Table/internal/kernel/Body/BodyRow.js +1 -1
  758. package/lib/components/Table/internal/kernel/Body/ExpandedRow.js +1 -1
  759. package/lib/components/Table/internal/kernel/Body/MeasureCell.js +1 -1
  760. package/lib/components/Table/internal/kernel/Body/MeasureRow.js +1 -1
  761. package/lib/components/Table/internal/kernel/Body/index.js +1 -1
  762. package/lib/components/Table/internal/kernel/Cell/index.js +1 -1
  763. package/lib/components/Table/internal/kernel/Cell/useCellRender.js +1 -1
  764. package/lib/components/Table/internal/kernel/Cell/useHoverState.js +1 -1
  765. package/lib/components/Table/internal/kernel/ColGroup.js +1 -1
  766. package/lib/components/Table/internal/kernel/FixedHolder/index.js +1 -1
  767. package/lib/components/Table/internal/kernel/Footer/Cell.js +1 -1
  768. package/lib/components/Table/internal/kernel/Footer/Row.js +1 -1
  769. package/lib/components/Table/internal/kernel/Footer/Summary.js +1 -1
  770. package/lib/components/Table/internal/kernel/Footer/SummaryContext.js +1 -1
  771. package/lib/components/Table/internal/kernel/Footer/index.js +1 -1
  772. package/lib/components/Table/internal/kernel/Header/Header.js +1 -1
  773. package/lib/components/Table/internal/kernel/Header/HeaderRow.js +1 -1
  774. package/lib/components/Table/internal/kernel/Panel/index.js +1 -1
  775. package/lib/components/Table/internal/kernel/Table.js +1 -1
  776. package/lib/components/Table/internal/kernel/VirtualTable/BodyGrid.js +1 -1
  777. package/lib/components/Table/internal/kernel/VirtualTable/BodyLine.js +1 -1
  778. package/lib/components/Table/internal/kernel/VirtualTable/VirtualCell.js +1 -1
  779. package/lib/components/Table/internal/kernel/VirtualTable/context.js +1 -1
  780. package/lib/components/Table/internal/kernel/VirtualTable/index.js +1 -1
  781. package/lib/components/Table/internal/kernel/constant.js +1 -1
  782. package/lib/components/Table/internal/kernel/context/PerfContext.js +1 -1
  783. package/lib/components/Table/internal/kernel/context/TableContext.js +1 -1
  784. package/lib/components/Table/internal/kernel/hooks/useColumns/index.js +1 -1
  785. package/lib/components/Table/internal/kernel/hooks/useColumns/useWidthColumns.js +1 -1
  786. package/lib/components/Table/internal/kernel/hooks/useExpand.js +1 -1
  787. package/lib/components/Table/internal/kernel/hooks/useFixedInfo.js +1 -1
  788. package/lib/components/Table/internal/kernel/hooks/useFlattenRecords.js +1 -1
  789. package/lib/components/Table/internal/kernel/hooks/useFrame.js +1 -1
  790. package/lib/components/Table/internal/kernel/hooks/useHover.js +1 -1
  791. package/lib/components/Table/internal/kernel/hooks/useRenderTimes.js +1 -1
  792. package/lib/components/Table/internal/kernel/hooks/useRowInfo.js +1 -1
  793. package/lib/components/Table/internal/kernel/hooks/useSticky.js +1 -1
  794. package/lib/components/Table/internal/kernel/hooks/useStickyOffsets.js +1 -1
  795. package/lib/components/Table/internal/kernel/index.js +1 -1
  796. package/lib/components/Table/internal/kernel/interface.js +1 -1
  797. package/lib/components/Table/internal/kernel/namePathType.js +1 -1
  798. package/lib/components/Table/internal/kernel/selector-context/Immutable.js +1 -1
  799. package/lib/components/Table/internal/kernel/selector-context/context.js +1 -1
  800. package/lib/components/Table/internal/kernel/selector-context/index.js +1 -1
  801. package/lib/components/Table/internal/kernel/selector-context/isEqual.js +1 -1
  802. package/lib/components/Table/internal/kernel/stickyScrollBar.js +1 -1
  803. package/lib/components/Table/internal/kernel/sugar/Column.js +1 -1
  804. package/lib/components/Table/internal/kernel/sugar/ColumnGroup.js +1 -1
  805. package/lib/components/Table/internal/kernel/utils/dom/canUseDom.js +1 -1
  806. package/lib/components/Table/internal/kernel/utils/dom/isVisible.js +1 -1
  807. package/lib/components/Table/internal/kernel/utils/expandUtil.js +1 -1
  808. package/lib/components/Table/internal/kernel/utils/fixUtil.js +1 -1
  809. package/lib/components/Table/internal/kernel/utils/get.js +1 -1
  810. package/lib/components/Table/internal/kernel/utils/getScrollBarSize.js +1 -1
  811. package/lib/components/Table/internal/kernel/utils/legacyUtil.js +1 -1
  812. package/lib/components/Table/internal/kernel/utils/offsetUtil.js +1 -1
  813. package/lib/components/Table/internal/kernel/utils/pickAttrs.js +1 -1
  814. package/lib/components/Table/internal/kernel/utils/useMemo.js +1 -1
  815. package/lib/components/Table/internal/kernel/utils/valueUtil.js +1 -1
  816. package/lib/components/Table/internal/kernel/utils/warning.js +1 -1
  817. package/lib/components/Table/renderers/BodyCell.js +1 -1
  818. package/lib/components/Table/renderers/CellContent.js +1 -1
  819. package/lib/components/Table/renderers/EmptyState.js +1 -1
  820. package/lib/components/Table/renderers/ExpandedRowContainer.js +1 -1
  821. package/lib/components/Table/renderers/HeaderCell.js +1 -1
  822. package/lib/components/Table/style/css.js +1 -1
  823. package/lib/components/Table/style/index.js +1 -1
  824. package/lib/components/Tabs/Tabs.js +1 -1
  825. package/lib/components/Tabs/index.js +1 -1
  826. package/lib/components/Tabs/interface.js +1 -1
  827. package/lib/components/Tabs/style/css.js +1 -1
  828. package/lib/components/Tabs/style/index.js +1 -1
  829. package/lib/components/Tag/Tag.js +1 -1
  830. package/lib/components/Tag/constants.js +1 -1
  831. package/lib/components/Tag/index.js +1 -1
  832. package/lib/components/Tag/interface.js +1 -1
  833. package/lib/components/Tag/style/css.js +1 -1
  834. package/lib/components/Tag/style/index.js +1 -1
  835. package/lib/components/Tooltip/Tooltip.js +1 -1
  836. package/lib/components/Tooltip/index.js +1 -1
  837. package/lib/components/Tooltip/interface.js +1 -1
  838. package/lib/components/Tooltip/style/css.js +1 -1
  839. package/lib/components/Tooltip/style/index.js +1 -1
  840. package/lib/components/Tour/Tour.js +1 -1
  841. package/lib/components/Tour/index.js +1 -1
  842. package/lib/components/Tour/interface.js +1 -1
  843. package/lib/components/Trigger/Trigger.js +1 -1
  844. package/lib/components/Trigger/index.js +1 -1
  845. package/lib/components/Trigger/interface.js +1 -1
  846. package/lib/components/Trigger/style/css.js +1 -1
  847. package/lib/components/Trigger/style/index.js +1 -1
  848. package/lib/components/Typography/Typography.js +1 -1
  849. package/lib/components/Typography/constants.js +1 -1
  850. package/lib/components/Typography/index.js +1 -1
  851. package/lib/components/Typography/interface.js +1 -1
  852. package/lib/components/Typography/render.js +1 -1
  853. package/lib/components/Typography/style/Typography.css +8 -4
  854. package/lib/components/Typography/style/css.js +1 -1
  855. package/lib/components/Typography/style/index.js +1 -1
  856. package/lib/components/Typography/useTypographyEnhancements.js +1 -1
  857. package/lib/components/Typography/utils.js +1 -1
  858. package/lib/components/Upload/Upload.js +1 -1
  859. package/lib/components/Upload/UploadFileBar.js +1 -1
  860. package/lib/components/Upload/index.js +1 -1
  861. package/lib/components/Upload/interface.js +1 -1
  862. package/lib/components/Upload/style/css.js +1 -1
  863. package/lib/components/Upload/style/index.js +1 -1
  864. package/lib/components/VirtualList/Filler.js +1 -1
  865. package/lib/components/VirtualList/Item.js +1 -1
  866. package/lib/components/VirtualList/ScrollBar.js +1 -1
  867. package/lib/components/VirtualList/VirtualList.js +1 -1
  868. package/lib/components/VirtualList/constants.js +1 -1
  869. package/lib/components/VirtualList/hooks/useChildren.js +1 -1
  870. package/lib/components/VirtualList/hooks/useDiffItem.js +1 -1
  871. package/lib/components/VirtualList/hooks/useFrameWheel.js +1 -1
  872. package/lib/components/VirtualList/hooks/useGetSize.js +1 -1
  873. package/lib/components/VirtualList/hooks/useHeights.js +1 -1
  874. package/lib/components/VirtualList/hooks/useMobileTouchMove.js +1 -1
  875. package/lib/components/VirtualList/hooks/useOriginScroll.js +1 -1
  876. package/lib/components/VirtualList/hooks/useScrollDrag.js +1 -1
  877. package/lib/components/VirtualList/hooks/useScrollTo.js +1 -1
  878. package/lib/components/VirtualList/index.js +1 -1
  879. package/lib/components/VirtualList/interface.js +1 -1
  880. package/lib/components/VirtualList/style/css.js +1 -1
  881. package/lib/components/VirtualList/style/index.js +1 -1
  882. package/lib/components/VirtualList/utils/CacheMap.js +1 -1
  883. package/lib/components/VirtualList/utils/algorithmUtil.js +1 -1
  884. package/lib/components/VirtualList/utils/isFirefox.js +1 -1
  885. package/lib/components/VirtualList/utils/raf.js +1 -1
  886. package/lib/components/VirtualList/utils/scrollbarUtil.js +1 -1
  887. package/lib/hooks/index.js +1 -1
  888. package/lib/hooks/useFloatingAnimation.js +1 -1
  889. package/lib/index.css +1 -1
  890. package/lib/index.js +1 -1
  891. package/lib/stories/docs/ComponentDocsPage.js +1 -1
  892. package/lib/stories/docs/componentDocMeta.js +1 -1
  893. package/lib/utils/classnames.js +1 -1
  894. package/lib/utils/clipboard.js +1 -1
  895. package/lib/utils/ref.js +1 -1
  896. package/lib/utils/uuid.js +1 -1
  897. package/package.json +1 -1
@@ -103,34 +103,34 @@ var useForm = exports.useForm = function useForm() {
103
103
  // ---------------------------------------------------------------------------
104
104
  var validateFieldAsync = (0, _hooks.useMemoizedFn)(function (name, value, rules) {
105
105
  return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee() {
106
- var _iterator2, _step2, rule, error, _error, _error2, _error3, _error4, _error5, emailPattern, _error6, _error7, result, _error8, errorMessage, _t, _t2, _t3;
107
- return _regenerator["default"].wrap(function (_context) {
106
+ var _iterator2, _step2, rule, error, _error, _error2, _error3, _error4, _error5, emailPattern, _error6, _error7, result, _error8, errorMessage;
107
+ return _regenerator["default"].wrap(function _callee$(_context) {
108
108
  while (1) switch (_context.prev = _context.next) {
109
109
  case 0:
110
110
  if (!(!rules || rules.length === 0)) {
111
- _context.next = 1;
111
+ _context.next = 2;
112
112
  break;
113
113
  }
114
114
  return _context.abrupt("return", {
115
115
  isValid: true,
116
116
  error: null
117
117
  });
118
- case 1:
118
+ case 2:
119
119
  setValidating(function (prev) {
120
120
  return Object.assign(Object.assign({}, prev), (0, _defineProperty2["default"])({}, name, true));
121
121
  });
122
- _context.prev = 2;
123
- _iterator2 = _createForOfIteratorHelper(rules);
124
122
  _context.prev = 3;
123
+ _iterator2 = _createForOfIteratorHelper(rules);
124
+ _context.prev = 5;
125
125
  _iterator2.s();
126
- case 4:
126
+ case 7:
127
127
  if ((_step2 = _iterator2.n()).done) {
128
- _context.next = 20;
128
+ _context.next = 69;
129
129
  break;
130
130
  }
131
131
  rule = _step2.value;
132
132
  if (!(rule.required && (value === undefined || value === null || value === ''))) {
133
- _context.next = 5;
133
+ _context.next = 13;
134
134
  break;
135
135
  }
136
136
  error = rule.message || "".concat(name, " is required");
@@ -139,9 +139,9 @@ var useForm = exports.useForm = function useForm() {
139
139
  isValid: false,
140
140
  error: error
141
141
  });
142
- case 5:
142
+ case 13:
143
143
  if (!(rule.min && typeof value === 'string' && value.length < rule.min)) {
144
- _context.next = 6;
144
+ _context.next = 17;
145
145
  break;
146
146
  }
147
147
  _error = rule.message || "".concat(name, " must be at least ").concat(rule.min, " characters");
@@ -150,9 +150,9 @@ var useForm = exports.useForm = function useForm() {
150
150
  isValid: false,
151
151
  error: _error
152
152
  });
153
- case 6:
153
+ case 17:
154
154
  if (!(rule.max && typeof value === 'string' && value.length > rule.max)) {
155
- _context.next = 7;
155
+ _context.next = 21;
156
156
  break;
157
157
  }
158
158
  _error2 = rule.message || "".concat(name, " must be no more than ").concat(rule.max, " characters");
@@ -161,9 +161,9 @@ var useForm = exports.useForm = function useForm() {
161
161
  isValid: false,
162
162
  error: _error2
163
163
  });
164
- case 7:
164
+ case 21:
165
165
  if (!(rule.pattern && typeof value === 'string' && !rule.pattern.test(value))) {
166
- _context.next = 8;
166
+ _context.next = 25;
167
167
  break;
168
168
  }
169
169
  _error3 = rule.message || "".concat(name, " format is invalid");
@@ -172,13 +172,13 @@ var useForm = exports.useForm = function useForm() {
172
172
  isValid: false,
173
173
  error: _error3
174
174
  });
175
- case 8:
175
+ case 25:
176
176
  if (!(rule["enum"] && Array.isArray(rule["enum"]) && value)) {
177
- _context.next = 9;
177
+ _context.next = 30;
178
178
  break;
179
179
  }
180
180
  if (rule["enum"].includes(value)) {
181
- _context.next = 9;
181
+ _context.next = 30;
182
182
  break;
183
183
  }
184
184
  _error4 = rule.message || "".concat(name, " must be one of ").concat(rule["enum"].join(', '));
@@ -187,13 +187,13 @@ var useForm = exports.useForm = function useForm() {
187
187
  isValid: false,
188
188
  error: _error4
189
189
  });
190
- case 9:
190
+ case 30:
191
191
  if (!(rule.type === 'number' && value !== undefined && value !== null && value !== '')) {
192
- _context.next = 10;
192
+ _context.next = 35;
193
193
  break;
194
194
  }
195
195
  if (!(typeof value !== 'number' || isNaN(value))) {
196
- _context.next = 10;
196
+ _context.next = 35;
197
197
  break;
198
198
  }
199
199
  _error5 = rule.message || "".concat(name, " must be a number");
@@ -202,14 +202,14 @@ var useForm = exports.useForm = function useForm() {
202
202
  isValid: false,
203
203
  error: _error5
204
204
  });
205
- case 10:
205
+ case 35:
206
206
  if (!(rule.type === 'email' && value)) {
207
- _context.next = 11;
207
+ _context.next = 41;
208
208
  break;
209
209
  }
210
210
  emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
211
211
  if (emailPattern.test(String(value))) {
212
- _context.next = 11;
212
+ _context.next = 41;
213
213
  break;
214
214
  }
215
215
  _error6 = rule.message || "".concat(name, " must be a valid email");
@@ -218,36 +218,36 @@ var useForm = exports.useForm = function useForm() {
218
218
  isValid: false,
219
219
  error: _error6
220
220
  });
221
- case 11:
221
+ case 41:
222
222
  if (!(rule.type === 'url' && value)) {
223
- _context.next = 14;
223
+ _context.next = 51;
224
224
  break;
225
225
  }
226
- _context.prev = 12;
226
+ _context.prev = 42;
227
227
  new URL(String(value));
228
- _context.next = 14;
228
+ _context.next = 51;
229
229
  break;
230
- case 13:
231
- _context.prev = 13;
232
- _t = _context["catch"](12);
230
+ case 46:
231
+ _context.prev = 46;
232
+ _context.t0 = _context["catch"](42);
233
233
  _error7 = rule.message || "".concat(name, " must be a valid URL");
234
234
  formCore.setFieldError(name, _error7);
235
235
  return _context.abrupt("return", {
236
236
  isValid: false,
237
237
  error: _error7
238
238
  });
239
- case 14:
239
+ case 51:
240
240
  if (!(rule.validator && typeof rule.validator === 'function')) {
241
- _context.next = 19;
241
+ _context.next = 67;
242
242
  break;
243
243
  }
244
- _context.prev = 15;
245
- _context.next = 16;
244
+ _context.prev = 52;
245
+ _context.next = 55;
246
246
  return Promise.resolve(rule.validator(value, formCore.values));
247
- case 16:
247
+ case 55:
248
248
  result = _context.sent;
249
249
  if (!(result !== true && result !== undefined)) {
250
- _context.next = 17;
250
+ _context.next = 60;
251
251
  break;
252
252
  }
253
253
  _error8 = typeof result === 'string' ? result : 'Validation failed';
@@ -256,33 +256,33 @@ var useForm = exports.useForm = function useForm() {
256
256
  isValid: false,
257
257
  error: _error8
258
258
  });
259
- case 17:
260
- _context.next = 19;
259
+ case 60:
260
+ _context.next = 67;
261
261
  break;
262
- case 18:
263
- _context.prev = 18;
264
- _t2 = _context["catch"](15);
265
- errorMessage = _t2 instanceof Error ? _t2.message : 'Validation error';
262
+ case 62:
263
+ _context.prev = 62;
264
+ _context.t1 = _context["catch"](52);
265
+ errorMessage = _context.t1 instanceof Error ? _context.t1.message : 'Validation error';
266
266
  formCore.setFieldError(name, errorMessage);
267
267
  return _context.abrupt("return", {
268
268
  isValid: false,
269
269
  error: errorMessage
270
270
  });
271
- case 19:
272
- _context.next = 4;
271
+ case 67:
272
+ _context.next = 7;
273
273
  break;
274
- case 20:
275
- _context.next = 22;
274
+ case 69:
275
+ _context.next = 74;
276
276
  break;
277
- case 21:
278
- _context.prev = 21;
279
- _t3 = _context["catch"](3);
280
- _iterator2.e(_t3);
281
- case 22:
282
- _context.prev = 22;
277
+ case 71:
278
+ _context.prev = 71;
279
+ _context.t2 = _context["catch"](5);
280
+ _iterator2.e(_context.t2);
281
+ case 74:
282
+ _context.prev = 74;
283
283
  _iterator2.f();
284
- return _context.finish(22);
285
- case 23:
284
+ return _context.finish(74);
285
+ case 77:
286
286
  if (formCore.errors[name]) {
287
287
  formCore.setFieldError(name, null);
288
288
  }
@@ -290,19 +290,19 @@ var useForm = exports.useForm = function useForm() {
290
290
  isValid: true,
291
291
  error: null
292
292
  });
293
- case 24:
294
- _context.prev = 24;
293
+ case 79:
294
+ _context.prev = 79;
295
295
  setValidating(function (prev) {
296
296
  var newValidating = Object.assign({}, prev);
297
297
  delete newValidating[name];
298
298
  return newValidating;
299
299
  });
300
- return _context.finish(24);
301
- case 25:
300
+ return _context.finish(79);
301
+ case 82:
302
302
  case "end":
303
303
  return _context.stop();
304
304
  }
305
- }, _callee, null, [[2,, 24, 25], [3, 21, 22, 23], [12, 13], [15, 18]]);
305
+ }, _callee, null, [[3,, 79, 82], [5, 71, 74, 77], [42, 46], [52, 62]]);
306
306
  }));
307
307
  });
308
308
  // ---------------------------------------------------------------------------
@@ -311,7 +311,7 @@ var useForm = exports.useForm = function useForm() {
311
311
  var handleFieldBlur = (0, _hooks.useEventCallback)(function (name) {
312
312
  return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
313
313
  var rules;
314
- return _regenerator["default"].wrap(function (_context2) {
314
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
315
315
  while (1) switch (_context2.prev = _context2.next) {
316
316
  case 0:
317
317
  setExtraTouched(function (prev) {
@@ -319,12 +319,12 @@ var useForm = exports.useForm = function useForm() {
319
319
  });
320
320
  rules = formCore.fieldRules[name];
321
321
  if (!(rules && validateTrigger === 'onBlur')) {
322
- _context2.next = 1;
322
+ _context2.next = 5;
323
323
  break;
324
324
  }
325
- _context2.next = 1;
325
+ _context2.next = 5;
326
326
  return validateFieldAsync(name, resolveValue(formCore.values, name), rules);
327
- case 1:
327
+ case 5:
328
328
  case "end":
329
329
  return _context2.stop();
330
330
  }
@@ -337,7 +337,7 @@ var useForm = exports.useForm = function useForm() {
337
337
  var validateFieldsAsync = (0, _hooks.useMemoizedFn)(function (nameList) {
338
338
  return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
339
339
  var fieldsToValidate, hasError, fieldErrors, validationPromises, error;
340
- return _regenerator["default"].wrap(function (_context4) {
340
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
341
341
  while (1) switch (_context4.prev = _context4.next) {
342
342
  case 0:
343
343
  fieldsToValidate = nameList || Object.keys(formCore.fieldRules);
@@ -346,17 +346,17 @@ var useForm = exports.useForm = function useForm() {
346
346
  validationPromises = fieldsToValidate.map(function (name) {
347
347
  return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
348
348
  var rules, _yield$validateFieldA, isValid, error;
349
- return _regenerator["default"].wrap(function (_context3) {
349
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
350
350
  while (1) switch (_context3.prev = _context3.next) {
351
351
  case 0:
352
352
  rules = formCore.fieldRules[name];
353
353
  if (!rules) {
354
- _context3.next = 2;
354
+ _context3.next = 8;
355
355
  break;
356
356
  }
357
- _context3.next = 1;
357
+ _context3.next = 4;
358
358
  return validateFieldAsync(name, resolveValue(formCore.values, name), rules);
359
- case 1:
359
+ case 4:
360
360
  _yield$validateFieldA = _context3.sent;
361
361
  isValid = _yield$validateFieldA.isValid;
362
362
  error = _yield$validateFieldA.error;
@@ -364,36 +364,36 @@ var useForm = exports.useForm = function useForm() {
364
364
  hasError = true;
365
365
  fieldErrors[name] = error;
366
366
  }
367
- case 2:
367
+ case 8:
368
368
  case "end":
369
369
  return _context3.stop();
370
370
  }
371
371
  }, _callee3);
372
372
  }));
373
373
  });
374
- _context4.next = 1;
374
+ _context4.next = 6;
375
375
  return Promise.all(validationPromises);
376
- case 1:
376
+ case 6:
377
377
  if (!hasError) {
378
- _context4.next = 2;
378
+ _context4.next = 11;
379
379
  break;
380
380
  }
381
381
  error = new Error('Validation failed');
382
382
  error.values = formCore.values;
383
383
  error.errors = fieldErrors;
384
384
  throw error;
385
- case 2:
385
+ case 11:
386
386
  if (!nameList) {
387
- _context4.next = 3;
387
+ _context4.next = 13;
388
388
  break;
389
389
  }
390
390
  return _context4.abrupt("return", nameList.reduce(function (acc, name) {
391
391
  acc[name] = resolveValue(formCore.values, name);
392
392
  return acc;
393
393
  }, {}));
394
- case 3:
394
+ case 13:
395
395
  return _context4.abrupt("return", formCore.values);
396
- case 4:
396
+ case 14:
397
397
  case "end":
398
398
  return _context4.stop();
399
399
  }
@@ -494,32 +494,32 @@ var useForm = exports.useForm = function useForm() {
494
494
  // ---------------------------------------------------------------------------
495
495
  var handleSubmit = (0, _hooks.useEventCallback)(function (e) {
496
496
  return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
497
- var validatedValues, typed, _t4;
498
- return _regenerator["default"].wrap(function (_context5) {
497
+ var validatedValues, typed;
498
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
499
499
  while (1) switch (_context5.prev = _context5.next) {
500
500
  case 0:
501
501
  e === null || e === void 0 ? void 0 : e.preventDefault();
502
502
  _context5.prev = 1;
503
- _context5.next = 2;
503
+ _context5.next = 4;
504
504
  return validateFieldsAsync();
505
- case 2:
505
+ case 4:
506
506
  validatedValues = _context5.sent;
507
507
  onFinish === null || onFinish === void 0 ? void 0 : onFinish(validatedValues);
508
- _context5.next = 4;
508
+ _context5.next = 12;
509
509
  break;
510
- case 3:
511
- _context5.prev = 3;
512
- _t4 = _context5["catch"](1);
513
- typed = _t4;
510
+ case 8:
511
+ _context5.prev = 8;
512
+ _context5.t0 = _context5["catch"](1);
513
+ typed = _context5.t0;
514
514
  onFinishFailed === null || onFinishFailed === void 0 ? void 0 : onFinishFailed({
515
515
  values: typed.values,
516
516
  errors: typed.errors
517
517
  });
518
- case 4:
518
+ case 12:
519
519
  case "end":
520
520
  return _context5.stop();
521
521
  }
522
- }, _callee5, null, [[1, 3]]);
522
+ }, _callee5, null, [[1, 8]]);
523
523
  }));
524
524
  });
525
525
  var handleReset = (0, _hooks.useEventCallback)(function (e) {
@@ -624,32 +624,32 @@ var useForm = exports.useForm = function useForm() {
624
624
  },
625
625
  submit: function submit(callback) {
626
626
  return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
627
- var validatedValues, _t5;
628
- return _regenerator["default"].wrap(function (_context6) {
627
+ var validatedValues;
628
+ return _regenerator["default"].wrap(function _callee6$(_context6) {
629
629
  while (1) switch (_context6.prev = _context6.next) {
630
630
  case 0:
631
631
  _context6.prev = 0;
632
- _context6.next = 1;
632
+ _context6.next = 3;
633
633
  return validateFieldsAsync();
634
- case 1:
634
+ case 3:
635
635
  validatedValues = _context6.sent;
636
636
  if (!callback) {
637
- _context6.next = 2;
637
+ _context6.next = 7;
638
638
  break;
639
639
  }
640
- _context6.next = 2;
640
+ _context6.next = 7;
641
641
  return callback(validatedValues);
642
- case 2:
642
+ case 7:
643
643
  return _context6.abrupt("return", validatedValues);
644
- case 3:
645
- _context6.prev = 3;
646
- _t5 = _context6["catch"](0);
644
+ case 10:
645
+ _context6.prev = 10;
646
+ _context6.t0 = _context6["catch"](0);
647
647
  return _context6.abrupt("return", undefined);
648
- case 4:
648
+ case 13:
649
649
  case "end":
650
650
  return _context6.stop();
651
651
  }
652
- }, _callee6, null, [[0, 3]]);
652
+ }, _callee6, null, [[0, 10]]);
653
653
  }));
654
654
  },
655
655
  defineField: defineField,
@@ -683,4 +683,4 @@ var useForm = exports.useForm = function useForm() {
683
683
  };
684
684
  };
685
685
  var _default = exports["default"] = useForm;
686
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtLnRzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvaG9va3MvdXNlRm9ybS5qcyJdLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfaG9va3MiLCJfdXNlRm9ybUNvcmUiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YzIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIl9fYXdhaXRlciIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiUCIsImdlbmVyYXRvciIsImFkb3B0IiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJ0aGVuIiwiYXBwbHkiLCJfX3Jlc3QiLCJwIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwicmVzb2x2ZVZhbHVlIiwidmFsdWVzIiwiaW5jbHVkZXMiLCJrZXlzIiwic3BsaXQiLCJjdXJyZW50IiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJrZXkiLCJ1bmRlZmluZWQiLCJfdHlwZW9mMiIsImVyciIsInVzZUZvcm0iLCJleHBvcnRzIiwiY29uZmlnIiwiYXJndW1lbnRzIiwib25GaW5pc2giLCJvbkZpbmlzaEZhaWxlZCIsIm9uUmVzZXQiLCJfY29uZmlnJHZhbGlkYXRlVHJpZ2ciLCJ2YWxpZGF0ZVRyaWdnZXIiLCJmb3JtQ29yZSIsInVzZUZvcm1Db3JlIiwiX3VzZVNhZmVTdGF0ZSIsInVzZVNhZmVTdGF0ZSIsIl91c2VTYWZlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwidmFsaWRhdGluZyIsInNldFZhbGlkYXRpbmciLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJleHRyYVRvdWNoZWQiLCJzZXRFeHRyYVRvdWNoZWQiLCJhbGxUb3VjaGVkIiwidXNlTWVtbyIsImFzc2lnbiIsInRvdWNoZWQiLCJ2YWxpZGF0ZUZpZWxkQXN5bmMiLCJ1c2VNZW1vaXplZEZuIiwicnVsZXMiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJydWxlIiwiZXJyb3IiLCJfZXJyb3IiLCJfZXJyb3IyIiwiX2Vycm9yMyIsIl9lcnJvcjQiLCJfZXJyb3I1IiwiZW1haWxQYXR0ZXJuIiwiX2Vycm9yNiIsIl9lcnJvcjciLCJfZXJyb3I4IiwiZXJyb3JNZXNzYWdlIiwiX3QiLCJfdDIiLCJfdDMiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwiYWJydXB0IiwiaXNWYWxpZCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJyZXF1aXJlZCIsIm1lc3NhZ2UiLCJjb25jYXQiLCJzZXRGaWVsZEVycm9yIiwibWluIiwibWF4IiwicGF0dGVybiIsImpvaW4iLCJ0eXBlIiwiaXNOYU4iLCJTdHJpbmciLCJVUkwiLCJ2YWxpZGF0b3IiLCJzZW50IiwiRXJyb3IiLCJmaW5pc2giLCJlcnJvcnMiLCJuZXdWYWxpZGF0aW5nIiwic3RvcCIsImhhbmRsZUZpZWxkQmx1ciIsInVzZUV2ZW50Q2FsbGJhY2siLCJfY2FsbGVlMiIsIl9jb250ZXh0MiIsImZpZWxkUnVsZXMiLCJ2YWxpZGF0ZUZpZWxkc0FzeW5jIiwibmFtZUxpc3QiLCJfY2FsbGVlNCIsImZpZWxkc1RvVmFsaWRhdGUiLCJoYXNFcnJvciIsImZpZWxkRXJyb3JzIiwidmFsaWRhdGlvblByb21pc2VzIiwiX2NvbnRleHQ0IiwibWFwIiwiX2NhbGxlZTMiLCJfeWllbGQkdmFsaWRhdGVGaWVsZEEiLCJfY29udGV4dDMiLCJhbGwiLCJyZWR1Y2UiLCJhY2MiLCJkZWZpbmVGaWVsZCIsInVzZUNhbGxiYWNrIiwiZmllbGRPcHRpb25zIiwiX2ZpZWxkT3B0aW9ucyRydWxlcyIsIkZpZWxkQ29tcG9uZW50IiwibWVtbyIsIl9hIiwiX2IiLCJjaGlsZHJlbiIsInJlbmRlciIsInByb3BzIiwiZmllbGRWYWx1ZSIsImZpZWxkRXJyb3IiLCJmaWVsZFRvdWNoZWQiLCJmaWVsZFZhbGlkYXRpbmciLCJ1c2VFZmZlY3QiLCJleGlzdGluZ1J1bGVzIiwiZ2V0RmllbGRSdWxlcyIsInJlZ2lzdGVyRmllbGQiLCJ1bnJlZ2lzdGVyRmllbGQiLCJoYW5kbGVGaWVsZENoYW5nZSIsInNldEZpZWxkVmFsdWUiLCJ2YWxpZGF0ZUZpZWxkIiwiaGFuZGxlQmx1ciIsImZpZWxkUHJvcHMiLCJvbkNoYW5nZSIsIm9uQmx1ciIsImhhbmRsZU1lcmdlQ2hhbmdlIiwidGFyZ2V0IiwiUmVhY3QiLCJpc1ZhbGlkRWxlbWVudCIsImhhbmRsZU1lcmdlQmx1ciIsIm1lcmdlZFByb3BzIiwiY2xvbmVFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsIkZyYWdtZW50IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImNoaWxkIiwiaW5kZXgiLCJkaXNwbGF5TmFtZSIsImhhbmRsZVN1Ym1pdCIsIl9jYWxsZWU1IiwidmFsaWRhdGVkVmFsdWVzIiwidHlwZWQiLCJfdDQiLCJfY29udGV4dDUiLCJwcmV2ZW50RGVmYXVsdCIsImhhbmRsZVJlc2V0IiwicmVzZXRGaWVsZHMiLCJmb3JtSW5zdGFuY2UiLCJ2YWxpZGF0ZUZpZWxkcyIsImdldEZpZWxkRXJyb3IiLCJnZXRGaWVsZHNFcnJvciIsImZvckVhY2giLCJpc0ZpZWxkVG91Y2hlZCIsImlzRmllbGRzVG91Y2hlZCIsImFsbEZpZWxkc1RvdWNoZWQiLCJzb21lIiwiZXZlcnkiLCJpc0ZpZWxkVmFsaWRhdGluZyIsInNldEZpZWxkc0Vycm9yIiwiZmllbGRzRXJyb3IiLCJlbnRyaWVzIiwiX3JlZiIsIl9yZWYyIiwic2V0RmllbGRUb3VjaGVkIiwiaXNUb3VjaGVkIiwic2V0RmllbGRzVG91Y2hlZCIsImZpZWxkc1RvdWNoIiwiZmllbGRzIiwicmVzZXRWYWx1ZXMiLCJmaWVsZCIsImluaXRpYWxWYWx1ZXMiLCJzZXRGaWVsZHNWYWx1ZSIsIm5ld1RvdWNoZWQiLCJzdWJtaXQiLCJjYWxsYmFjayIsIl9jYWxsZWU2IiwiX3Q1IiwiX2NvbnRleHQ2IiwiaW50ZXJuYWxzIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFHQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxZQUFBLEdBQUFGLE9BQUE7QUFBNEMsU0FBQUcseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFMLHdCQUFBSyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLFFBQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxD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UHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm0uanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZU1lbW8sIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIG1lbW8sIEZyYWdtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUV2ZW50Q2FsbGJhY2ssIHVzZU1lbW9pemVkRm4sIHVzZVNhZmVTdGF0ZSB9IGZyb20gJ0AxbW9uZXkvaG9va3MnO1xuaW1wb3J0IHsgdXNlRm9ybUNvcmUgfSBmcm9tICcuL3VzZUZvcm1Db3JlJztcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gSGVscGVycyDigJMgcmVzb2x2ZSBuZXN0ZWQgcGF0aHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gcmVzb2x2ZVZhbHVlKHZhbHVlcywgbmFtZSkge1xuICAgIGlmICghbmFtZS5pbmNsdWRlcygnLicpKVxuICAgICAgICByZXR1cm4gdmFsdWVzW25hbWVdO1xuICAgIGNvbnN0IGtleXMgPSBuYW1lLnNwbGl0KCcuJyk7XG4gICAgbGV0IGN1cnJlbnQgPSB2YWx1ZXM7XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICBpZiAoY3VycmVudCA9PT0gbnVsbCB8fCBjdXJyZW50ID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGN1cnJlbnQgIT09ICdvYmplY3QnKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnRba2V5XTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG59XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHVzZUZvcm1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZXhwb3J0IGNvbnN0IHVzZUZvcm0gPSAoY29uZmlnID0ge30pID0+IHtcbiAgICBjb25zdCB7IG9uRmluaXNoLCBvbkZpbmlzaEZhaWxlZCwgb25SZXNldCwgdmFsaWRhdGVUcmlnZ2VyID0gJ29uQ2hhbmdlJywgfSA9IGNvbmZpZztcbiAgICBjb25zdCBmb3JtQ29yZSA9IHVzZUZvcm1Db3JlKGNvbmZpZyk7XG4gICAgY29uc3QgW3ZhbGlkYXRpbmcsIHNldFZhbGlkYXRpbmddID0gdXNlU2FmZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbZXh0cmFUb3VjaGVkLCBzZXRFeHRyYVRvdWNoZWRdID0gdXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IGFsbFRvdWNoZWQgPSB1c2VNZW1vKCgpID0+IChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGZvcm1Db3JlLnRvdWNoZWQpLCBleHRyYVRvdWNoZWQpKSwgW2Zvcm1Db3JlLnRvdWNoZWQsIGV4dHJhVG91Y2hlZF0pO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEFzeW5jIGZpZWxkIHZhbGlkYXRpb24g4oCTIGVhY2ggcnVsZSBpcyBwcm9jZXNzZWQgZXhhY3RseSBvbmNlXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgdmFsaWRhdGVGaWVsZEFzeW5jID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgdmFsdWUsIHJ1bGVzKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgaWYgKCFydWxlcyB8fCBydWxlcy5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBlcnJvcjogbnVsbCB9O1xuICAgICAgICBzZXRWYWxpZGF0aW5nKChwcmV2KSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcmV2KSwgeyBbbmFtZV06IHRydWUgfSkpKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiBydWxlcykge1xuICAgICAgICAgICAgICAgIC8vIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgaWYgKHJ1bGUucmVxdWlyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBpcyByZXF1aXJlZGA7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db3JlLnNldEZpZWxkRXJyb3IobmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiBmYWxzZSwgZXJyb3IgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gbWluXG4gICAgICAgICAgICAgICAgaWYgKHJ1bGUubWluICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoIDwgcnVsZS5taW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBhdCBsZWFzdCAke3J1bGUubWlufSBjaGFyYWN0ZXJzYDtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRFcnJvcihuYW1lLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGlzVmFsaWQ6IGZhbHNlLCBlcnJvciB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBtYXhcbiAgICAgICAgICAgICAgICBpZiAocnVsZS5tYXggJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPiBydWxlLm1heCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIG5vIG1vcmUgdGhhbiAke3J1bGUubWF4fSBjaGFyYWN0ZXJzYDtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRFcnJvcihuYW1lLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGlzVmFsaWQ6IGZhbHNlLCBlcnJvciB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBwYXR0ZXJuXG4gICAgICAgICAgICAgICAgaWYgKHJ1bGUucGF0dGVybiAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICFydWxlLnBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gZm9ybWF0IGlzIGludmFsaWRgO1xuICAgICAgICAgICAgICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZEVycm9yKG5hbWUsIGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogZmFsc2UsIGVycm9yIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGVudW1cbiAgICAgICAgICAgICAgICBpZiAocnVsZS5lbnVtICYmIEFycmF5LmlzQXJyYXkocnVsZS5lbnVtKSAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJ1bGUuZW51bS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgb25lIG9mICR7cnVsZS5lbnVtLmpvaW4oJywgJyl9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db3JlLnNldEZpZWxkRXJyb3IobmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogZmFsc2UsIGVycm9yIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gdHlwZSBjaGVja3NcbiAgICAgICAgICAgICAgICBpZiAocnVsZS50eXBlID09PSAnbnVtYmVyJyAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJyB8fCBpc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgYSBudW1iZXJgO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRFcnJvcihuYW1lLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiBmYWxzZSwgZXJyb3IgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocnVsZS50eXBlID09PSAnZW1haWwnICYmIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVtYWlsUGF0dGVybiA9IC9eW15cXHNAXStAW15cXHNAXStcXC5bXlxcc0BdKyQvO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWVtYWlsUGF0dGVybi50ZXN0KFN0cmluZyh2YWx1ZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIGEgdmFsaWQgZW1haWxgO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRFcnJvcihuYW1lLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiBmYWxzZSwgZXJyb3IgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocnVsZS50eXBlID09PSAndXJsJyAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFVSTChTdHJpbmcodmFsdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgYSB2YWxpZCBVUkxgO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRFcnJvcihuYW1lLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiBmYWxzZSwgZXJyb3IgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBjdXN0b20gdmFsaWRhdG9yIChzeW5jIG9yIGFzeW5jKSDigJQgZXhlY3V0ZWQgZXhhY3RseSBvbmNlXG4gICAgICAgICAgICAgICAgaWYgKHJ1bGUudmFsaWRhdG9yICYmIHR5cGVvZiBydWxlLnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0geWllbGQgUHJvbWlzZS5yZXNvbHZlKHJ1bGUudmFsaWRhdG9yKHZhbHVlLCBmb3JtQ29yZS52YWx1ZXMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IHRydWUgJiYgcmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnID8gcmVzdWx0IDogJ1ZhbGlkYXRpb24gZmFpbGVkJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZEVycm9yKG5hbWUsIGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiBmYWxzZSwgZXJyb3IgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ1ZhbGlkYXRpb24gZXJyb3InO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRFcnJvcihuYW1lLCBlcnJvck1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogZmFsc2UsIGVycm9yOiBlcnJvck1lc3NhZ2UgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmb3JtQ29yZS5lcnJvcnNbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZEVycm9yKG5hbWUsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSwgZXJyb3I6IG51bGwgfTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHNldFZhbGlkYXRpbmcoKHByZXYpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdWYWxpZGF0aW5nID0gT2JqZWN0LmFzc2lnbih7fSwgcHJldik7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG5ld1ZhbGlkYXRpbmdbbmFtZV07XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ld1ZhbGlkYXRpbmc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pKTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBBc3luYyBmaWVsZCBibHVyIGhhbmRsZXJcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBoYW5kbGVGaWVsZEJsdXIgPSB1c2VFdmVudENhbGxiYWNrKChuYW1lKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgc2V0RXh0cmFUb3VjaGVkKChwcmV2KSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcmV2KSwgeyBbbmFtZV06IHRydWUgfSkpKTtcbiAgICAgICAgY29uc3QgcnVsZXMgPSBmb3JtQ29yZS5maWVsZFJ1bGVzW25hbWVdO1xuICAgICAgICBpZiAocnVsZXMgJiYgdmFsaWRhdGVUcmlnZ2VyID09PSAnb25CbHVyJykge1xuICAgICAgICAgICAgeWllbGQgdmFsaWRhdGVGaWVsZEFzeW5jKG5hbWUsIHJlc29sdmVWYWx1ZShmb3JtQ29yZS52YWx1ZXMsIG5hbWUpLCBydWxlcyk7XG4gICAgICAgIH1cbiAgICB9KSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gVmFsaWRhdGUgYWxsIGZpZWxkcyBhc3luY1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IHZhbGlkYXRlRmllbGRzQXN5bmMgPSB1c2VNZW1vaXplZEZuKChuYW1lTGlzdCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkc1RvVmFsaWRhdGUgPSBuYW1lTGlzdCB8fCBPYmplY3Qua2V5cyhmb3JtQ29yZS5maWVsZFJ1bGVzKTtcbiAgICAgICAgbGV0IGhhc0Vycm9yID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGZpZWxkRXJyb3JzID0ge307XG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb25Qcm9taXNlcyA9IGZpZWxkc1RvVmFsaWRhdGUubWFwKChuYW1lKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVzID0gZm9ybUNvcmUuZmllbGRSdWxlc1tuYW1lXTtcbiAgICAgICAgICAgIGlmIChydWxlcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgaXNWYWxpZCwgZXJyb3IgfSA9IHlpZWxkIHZhbGlkYXRlRmllbGRBc3luYyhuYW1lLCByZXNvbHZlVmFsdWUoZm9ybUNvcmUudmFsdWVzLCBuYW1lKSwgcnVsZXMpO1xuICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZCAmJiBlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBoYXNFcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkRXJyb3JzW25hbWVdID0gZXJyb3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICAgIHlpZWxkIFByb21pc2UuYWxsKHZhbGlkYXRpb25Qcm9taXNlcyk7XG4gICAgICAgIGlmIChoYXNFcnJvcikge1xuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ1ZhbGlkYXRpb24gZmFpbGVkJyk7XG4gICAgICAgICAgICBlcnJvci52YWx1ZXMgPSBmb3JtQ29yZS52YWx1ZXM7XG4gICAgICAgICAgICBlcnJvci5lcnJvcnMgPSBmaWVsZEVycm9ycztcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuYW1lTGlzdCkge1xuICAgICAgICAgICAgcmV0dXJuIG5hbWVMaXN0LnJlZHVjZSgoYWNjLCBuYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgYWNjW25hbWVdID0gcmVzb2x2ZVZhbHVlKGZvcm1Db3JlLnZhbHVlcywgbmFtZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sIHt9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybUNvcmUudmFsdWVzO1xuICAgIH0pKTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBkZWZpbmVGaWVsZCDigJMgdXNlZCBieSBzdGFuZGFsb25lIChub24tUHJvRm9ybSkgY29uc3VtZXJzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgZGVmaW5lRmllbGQgPSB1c2VDYWxsYmFjaygobmFtZSwgZmllbGRPcHRpb25zID0ge30pID0+IHtcbiAgICAgICAgY29uc3QgeyBydWxlcyA9IFtdIH0gPSBmaWVsZE9wdGlvbnM7XG4gICAgICAgIGNvbnN0IEZpZWxkQ29tcG9uZW50ID0gbWVtbygoX2EpID0+IHtcbiAgICAgICAgICAgIHZhciBfYjtcbiAgICAgICAgICAgIHZhciB7IGNoaWxkcmVuLCByZW5kZXIgfSA9IF9hLCBwcm9wcyA9IF9fcmVzdChfYSwgW1wiY2hpbGRyZW5cIiwgXCJyZW5kZXJcIl0pO1xuICAgICAgICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IChfYiA9IGZvcm1Db3JlLnZhbHVlc1tuYW1lXSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJyc7XG4gICAgICAgICAgICBjb25zdCBmaWVsZEVycm9yID0gZm9ybUNvcmUuZXJyb3JzW25hbWVdO1xuICAgICAgICAgICAgY29uc3QgZmllbGRUb3VjaGVkID0gYWxsVG91Y2hlZFtuYW1lXTtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkVmFsaWRhdGluZyA9IHZhbGlkYXRpbmdbbmFtZV07XG4gICAgICAgICAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nUnVsZXMgPSBmb3JtQ29yZS5nZXRGaWVsZFJ1bGVzKG5hbWUpO1xuICAgICAgICAgICAgICAgIGlmICghZXhpc3RpbmdSdWxlcyAmJiBydWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db3JlLnJlZ2lzdGVyRmllbGQobmFtZSwgcnVsZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBmb3JtQ29yZS51bnJlZ2lzdGVyRmllbGQobmFtZSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sIFtdKTsgLy8gT25seSByZWdpc3RlciBvbiBtb3VudFxuICAgICAgICAgICAgY29uc3QgaGFuZGxlRmllbGRDaGFuZ2UgPSB1c2VFdmVudENhbGxiYWNrKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGZvcm1Db3JlLnNldEZpZWxkVmFsdWUobmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0ZVRyaWdnZXIgPT09ICdvbkNoYW5nZScpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvcmUudmFsaWRhdGVGaWVsZChuYW1lLCBydWxlcywgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZUZpZWxkQmx1cihuYW1lKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgZmllbGRQcm9wcyA9IE9iamVjdC5hc3NpZ24oeyBuYW1lLCB2YWx1ZTogZmllbGRWYWx1ZSwgZXJyb3I6IGZpZWxkRXJyb3IsIHRvdWNoZWQ6IGZpZWxkVG91Y2hlZCwgdmFsaWRhdGluZzogZmllbGRWYWxpZGF0aW5nLCBvbkNoYW5nZTogaGFuZGxlRmllbGRDaGFuZ2UsIG9uQmx1cjogaGFuZGxlQmx1ciB9LCBwcm9wcyk7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVNZXJnZUNoYW5nZSA9IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZSAmJiB0eXBlb2YgZSA9PT0gJ29iamVjdCcgJiYgJ3RhcmdldCcgaW4gZVxuICAgICAgICAgICAgICAgICAgICA/IGUudGFyZ2V0LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIDogZTtcbiAgICAgICAgICAgICAgICBoYW5kbGVGaWVsZENoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSAmJlxuICAgICAgICAgICAgICAgICAgICAoKF9hID0gY2hpbGRyZW4ucHJvcHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vbkNoYW5nZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVNZXJnZUJsdXIgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGhhbmRsZUJsdXIoKTtcbiAgICAgICAgICAgICAgICBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pICYmXG4gICAgICAgICAgICAgICAgICAgICgoX2EgPSBjaGlsZHJlbi5wcm9wcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm9uQmx1cikpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHJvcHMub25CbHVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChyZW5kZXIgJiYgdHlwZW9mIHJlbmRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXIoZmllbGRQcm9wcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuKGZpZWxkUHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lcmdlZFByb3BzID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBmaWVsZFByb3BzKSwgeyBvbkNoYW5nZTogaGFuZGxlTWVyZ2VDaGFuZ2UsIG9uQmx1cjogaGFuZGxlTWVyZ2VCbHVyIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIG1lcmdlZFByb3BzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KEZyYWdtZW50LCBudWxsLCAuLi5jaGlsZHJlbi5tYXAoKGNoaWxkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXJnZWRQcm9wcyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZmllbGRQcm9wcyksIHsga2V5OiBjaGlsZC5rZXkgfHwgaW5kZXgsIG9uQ2hhbmdlOiBoYW5kbGVNZXJnZUNoYW5nZSwgb25CbHVyOiBoYW5kbGVNZXJnZUJsdXIgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkLCBtZXJnZWRQcm9wcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KTtcbiAgICAgICAgRmllbGRDb21wb25lbnQuZGlzcGxheU5hbWUgPSBgRmllbGQoJHtuYW1lfSlgO1xuICAgICAgICByZXR1cm4gRmllbGRDb21wb25lbnQ7XG4gICAgfSwgW1xuICAgICAgICBmb3JtQ29yZSxcbiAgICAgICAgYWxsVG91Y2hlZCxcbiAgICAgICAgdmFsaWRhdGluZyxcbiAgICAgICAgdmFsaWRhdGVUcmlnZ2VyLFxuICAgICAgICBoYW5kbGVGaWVsZEJsdXIsXG4gICAgXSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gaGFuZGxlU3VibWl0IC8gaGFuZGxlUmVzZXQg4oCTIGZvciA8Zm9ybT4gZXZlbnQgaGFuZGxlcnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBoYW5kbGVTdWJtaXQgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0ZWRWYWx1ZXMgPSB5aWVsZCB2YWxpZGF0ZUZpZWxkc0FzeW5jKCk7XG4gICAgICAgICAgICBvbkZpbmlzaCA9PT0gbnVsbCB8fCBvbkZpbmlzaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaW5pc2godmFsaWRhdGVkVmFsdWVzKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zdCB0eXBlZCA9IGVycjtcbiAgICAgICAgICAgIG9uRmluaXNoRmFpbGVkID09PSBudWxsIHx8IG9uRmluaXNoRmFpbGVkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaEZhaWxlZCh7IHZhbHVlczogdHlwZWQudmFsdWVzLCBlcnJvcnM6IHR5cGVkLmVycm9ycyB9KTtcbiAgICAgICAgfVxuICAgIH0pKTtcbiAgICBjb25zdCBoYW5kbGVSZXNldCA9IHVzZUV2ZW50Q2FsbGJhY2soKGUpID0+IHtcbiAgICAgICAgZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGZvcm1Db3JlLnJlc2V0RmllbGRzKCk7XG4gICAgICAgIHNldEV4dHJhVG91Y2hlZCh7fSk7XG4gICAgICAgIHNldFZhbGlkYXRpbmcoe30pO1xuICAgICAgICBvblJlc2V0ID09PSBudWxsIHx8IG9uUmVzZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uUmVzZXQoKTtcbiAgICB9KTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBGb3JtSW5zdGFuY2Ug4oCTIGVuaGFuY2VkIEFQSSBmb3IgY29uc3VtZXJzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgZm9ybUluc3RhbmNlID0gdXNlTWVtbygoKSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBmb3JtQ29yZS5mb3JtSW5zdGFuY2UpLCB7IHZhbGlkYXRlRmllbGRzOiB2YWxpZGF0ZUZpZWxkc0FzeW5jLCBzZXRGaWVsZFZhbHVlOiBmb3JtQ29yZS5zZXRGaWVsZFZhbHVlLCBnZXRGaWVsZEVycm9yOiAobmFtZSkgPT4gZm9ybUNvcmUuZXJyb3JzW25hbWVdLCBnZXRGaWVsZHNFcnJvcjogKG5hbWVMaXN0KSA9PiB7XG4gICAgICAgICAgICBpZiAoIW5hbWVMaXN0KVxuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtQ29yZS5lcnJvcnM7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAgICAgICAgIG5hbWVMaXN0LmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZm9ybUNvcmUuZXJyb3JzW25hbWVdKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtuYW1lXSA9IGZvcm1Db3JlLmVycm9yc1tuYW1lXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sIGlzRmllbGRUb3VjaGVkOiAobmFtZSkgPT4gYWxsVG91Y2hlZFtuYW1lXSB8fCBmYWxzZSwgaXNGaWVsZHNUb3VjaGVkOiAobmFtZUxpc3QsIGFsbEZpZWxkc1RvdWNoZWQgPSBmYWxzZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFuYW1lTGlzdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhhbGxUb3VjaGVkKS5zb21lKChrZXkpID0+IGFsbFRvdWNoZWRba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYWxsRmllbGRzVG91Y2hlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuYW1lTGlzdC5ldmVyeSgobmFtZSkgPT4gYWxsVG91Y2hlZFtuYW1lXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmFtZUxpc3Quc29tZSgobmFtZSkgPT4gYWxsVG91Y2hlZFtuYW1lXSk7XG4gICAgICAgIH0sIGlzRmllbGRWYWxpZGF0aW5nOiAobmFtZSkgPT4gdmFsaWRhdGluZ1tuYW1lXSB8fCBmYWxzZSwgc2V0RmllbGRFcnJvcjogZm9ybUNvcmUuc2V0RmllbGRFcnJvciwgc2V0RmllbGRzRXJyb3I6IChmaWVsZHNFcnJvcikgPT4ge1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoZmllbGRzRXJyb3IpLmZvckVhY2goKFtuYW1lLCBlcnJvcl0pID0+IHtcbiAgICAgICAgICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZEVycm9yKG5hbWUsIGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCBzZXRGaWVsZFRvdWNoZWQ6IChuYW1lLCBpc1RvdWNoZWQgPSB0cnVlKSA9PiB7XG4gICAgICAgICAgICBzZXRFeHRyYVRvdWNoZWQoKHByZXYpID0+IChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHByZXYpLCB7IFtuYW1lXTogaXNUb3VjaGVkIH0pKSk7XG4gICAgICAgIH0sIHNldEZpZWxkc1RvdWNoZWQ6IChmaWVsZHNUb3VjaCkgPT4ge1xuICAgICAgICAgICAgc2V0RXh0cmFUb3VjaGVkKChwcmV2KSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcmV2KSwgZmllbGRzVG91Y2gpKSk7XG4gICAgICAgIH0sIHJlc2V0RmllbGRzOiAoZmllbGRzKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWZpZWxkcykge1xuICAgICAgICAgICAgICAgIGZvcm1Db3JlLnJlc2V0RmllbGRzKCk7XG4gICAgICAgICAgICAgICAgc2V0RXh0cmFUb3VjaGVkKHt9KTtcbiAgICAgICAgICAgICAgICBzZXRWYWxpZGF0aW5nKHt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc2V0VmFsdWVzID0ge307XG4gICAgICAgICAgICAgICAgZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgcmVzZXRWYWx1ZXNbZmllbGRdID0gKChfYSA9IGNvbmZpZy5pbml0aWFsVmFsdWVzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB7fSlbZmllbGRdO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGZvcm1Db3JlLnNldEZpZWxkc1ZhbHVlKHJlc2V0VmFsdWVzKTtcbiAgICAgICAgICAgICAgICBzZXRFeHRyYVRvdWNoZWQoKHByZXYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3VG91Y2hlZCA9IE9iamVjdC5hc3NpZ24oe30sIHByZXYpO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdUb3VjaGVkW2ZpZWxkXTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdUb3VjaGVkO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHNldFZhbGlkYXRpbmcoKHByZXYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3VmFsaWRhdGluZyA9IE9iamVjdC5hc3NpZ24oe30sIHByZXYpO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdWYWxpZGF0aW5nW2ZpZWxkXTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdWYWxpZGF0aW5nO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZEVycm9yKGZpZWxkLCBudWxsKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgc3VibWl0OiAoY2FsbGJhY2spID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0ZWRWYWx1ZXMgPSB5aWVsZCB2YWxpZGF0ZUZpZWxkc0FzeW5jKCk7XG4gICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIHlpZWxkIGNhbGxiYWNrKHZhbGlkYXRlZFZhbHVlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZWRWYWx1ZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoX2EpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSwgZGVmaW5lRmllbGQsIHJlZ2lzdGVyRmllbGQ6IGZvcm1Db3JlLnJlZ2lzdGVyRmllbGQsIHVucmVnaXN0ZXJGaWVsZDogZm9ybUNvcmUudW5yZWdpc3RlckZpZWxkIH0pKSwgW1xuICAgICAgICBmb3JtQ29yZSxcbiAgICAgICAgYWxsVG91Y2hlZCxcbiAgICAgICAgdmFsaWRhdGluZyxcbiAgICAgICAgdmFsaWRhdGVGaWVsZHNBc3luYyxcbiAgICAgICAgZGVmaW5lRmllbGQsXG4gICAgICAgIGNvbmZpZy5pbml0aWFsVmFsdWVzLFxuICAgICAgICBzZXRWYWxpZGF0aW5nLFxuICAgIF0pO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEludGVybmFscyDigJMgZXhwb3NlZCBmb3IgUHJvRm9ybSBpbnRlZ3JhdGlvblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGludGVybmFscyA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICAgICAgdmFsdWVzOiBmb3JtQ29yZS52YWx1ZXMsXG4gICAgICAgIGVycm9yczogZm9ybUNvcmUuZXJyb3JzLFxuICAgICAgICB0b3VjaGVkOiBhbGxUb3VjaGVkLFxuICAgICAgICB2YWxpZGF0aW5nLFxuICAgICAgICBmaWVsZFJ1bGVzOiBmb3JtQ29yZS5maWVsZFJ1bGVzLFxuICAgICAgICBzZXRGaWVsZFZhbHVlOiBmb3JtQ29yZS5zZXRGaWVsZFZhbHVlLFxuICAgICAgICBzZXRGaWVsZEVycm9yOiBmb3JtQ29yZS5zZXRGaWVsZEVycm9yLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkOiBmb3JtQ29yZS52YWxpZGF0ZUZpZWxkLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkQXN5bmMsXG4gICAgICAgIHJlZ2lzdGVyRmllbGQ6IGZvcm1Db3JlLnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHVucmVnaXN0ZXJGaWVsZDogZm9ybUNvcmUudW5yZWdpc3RlckZpZWxkLFxuICAgICAgICBoYW5kbGVTdWJtaXQsXG4gICAgICAgIGhhbmRsZVJlc2V0LFxuICAgIH0pLCBbXG4gICAgICAgIGZvcm1Db3JlLnZhbHVlcyxcbiAgICAgICAgZm9ybUNvcmUuZXJyb3JzLFxuICAgICAgICBhbGxUb3VjaGVkLFxuICAgICAgICB2YWxpZGF0aW5nLFxuICAgICAgICBmb3JtQ29yZS5maWVsZFJ1bGVzLFxuICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZFZhbHVlLFxuICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZEVycm9yLFxuICAgICAgICBmb3JtQ29yZS52YWxpZGF0ZUZpZWxkLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkQXN5bmMsXG4gICAgICAgIGZvcm1Db3JlLnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIGZvcm1Db3JlLnVucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgaGFuZGxlU3VibWl0LFxuICAgICAgICBoYW5kbGVSZXNldCxcbiAgICBdKTtcbiAgICByZXR1cm4geyBmb3JtSW5zdGFuY2UsIGludGVybmFscyB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IHVzZUZvcm07Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
686
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtLnRzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvaG9va3MvdXNlRm9ybS5qcyJdLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfaG9va3MiLCJfdXNlRm9ybUNvcmUiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YzIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIl9fYXdhaXRlciIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiUCIsImdlbmVyYXRvciIsImFkb3B0IiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJ0aGVuIiwiYXBwbHkiLCJfX3Jlc3QiLCJwIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwicmVzb2x2ZVZhbHVlIiwidmFsdWVzIiwiaW5jbHVkZXMiLCJrZXlzIiwic3BsaXQiLCJjdXJyZW50IiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJrZXkiLCJ1bmRlZmluZWQiLCJfdHlwZW9mMiIsImVyciIsInVzZUZvcm0iLCJleHBvcnRzIiwiY29uZmlnIiwiYXJndW1lbnRzIiwib25GaW5pc2giLCJvbkZpbmlzaEZhaWxlZCIsIm9uUmVzZXQiLCJfY29uZmlnJHZhbGlkYXRlVHJpZ2ciLCJ2YWxpZGF0ZVRyaWdnZXIiLCJmb3JtQ29yZSIsInVzZUZvcm1Db3JlIiwiX3VzZVNhZmVTdGF0ZSIsInVzZVNhZmVTdGF0ZSIsIl91c2VTYWZlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwidmFsaWRhdGluZyIsInNldFZhbGlkYXRpbmciLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJleHRyYVRvdWNoZWQiLCJzZXRFeHRyYVRvdWNoZWQiLCJhbGxUb3VjaGVkIiwidXNlTWVtbyIsImFzc2lnbiIsInRvdWNoZWQiLCJ2YWxpZGF0ZUZpZWxkQXN5bmMiLCJ1c2VNZW1vaXplZEZuIiwicnVsZXMiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJydWxlIiwiZXJyb3IiLCJfZXJyb3IiLCJfZXJyb3IyIiwiX2Vycm9yMyIsIl9lcnJvcjQiLCJfZXJyb3I1IiwiZW1haWxQYXR0ZXJuIiwiX2Vycm9yNiIsIl9lcnJvcjciLCJfZXJyb3I4IiwiZXJyb3JNZXNzYWdlIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwiYWJydXB0IiwiaXNWYWxpZCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJyZXF1aXJlZCIsIm1lc3NhZ2UiLCJjb25jYXQiLCJzZXRGaWVsZEVycm9yIiwibWluIiwibWF4IiwicGF0dGVybiIsImpvaW4iLCJ0eXBlIiwiaXNOYU4iLCJTdHJpbmciLCJVUkwiLCJ0MCIsInZhbGlkYXRvciIsInNlbnQiLCJ0MSIsIkVycm9yIiwidDIiLCJmaW5pc2giLCJlcnJvcnMiLCJuZXdWYWxpZGF0aW5nIiwic3RvcCIsImhhbmRsZUZpZWxkQmx1ciIsInVzZUV2ZW50Q2FsbGJhY2siLCJfY2FsbGVlMiIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsImZpZWxkUnVsZXMiLCJ2YWxpZGF0ZUZpZWxkc0FzeW5jIiwibmFtZUxpc3QiLCJfY2FsbGVlNCIsImZpZWxkc1RvVmFsaWRhdGUiLCJoYXNFcnJvciIsImZpZWxkRXJyb3JzIiwidmFsaWRhdGlvblByb21pc2VzIiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0IiwibWFwIiwiX2NhbGxlZTMiLCJfeWllbGQkdmFsaWRhdGVGaWVsZEEiLCJfY2FsbGVlMyQiLCJfY29udGV4dDMiLCJhbGwiLCJyZWR1Y2UiLCJhY2MiLCJkZWZpbmVGaWVsZCIsInVzZUNhbGxiYWNrIiwiZmllbGRPcHRpb25zIiwiX2ZpZWxkT3B0aW9ucyRydWxlcyIsIkZpZWxkQ29tcG9uZW50IiwibWVtbyIsIl9hIiwiX2IiLCJjaGlsZHJlbiIsInJlbmRlciIsInByb3BzIiwiZmllbGRWYWx1ZSIsImZpZWxkRXJyb3IiLCJmaWVsZFRvdWNoZWQiLCJmaWVsZFZhbGlkYXRpbmciLCJ1c2VFZmZlY3QiLCJleGlzdGluZ1J1bGVzIiwiZ2V0RmllbGRSdWxlcyIsInJlZ2lzdGVyRmllbGQiLCJ1bnJlZ2lzdGVyRmllbGQiLCJoYW5kbGVGaWVsZENoYW5nZSIsInNldEZpZWxkVmFsdWUiLCJ2YWxpZGF0ZUZpZWxkIiwiaGFuZGxlQmx1ciIsImZpZWxkUHJvcHMiLCJvbkNoYW5nZSIsIm9uQmx1ciIsImhhbmRsZU1lcmdlQ2hhbmdlIiwidGFyZ2V0IiwiUmVhY3QiLCJpc1ZhbGlkRWxlbWVudCIsImhhbmRsZU1lcmdlQmx1ciIsIm1lcmdlZFByb3BzIiwiY2xvbmVFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsIkZyYWdtZW50IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImNoaWxkIiwiaW5kZXgiLCJkaXNwbGF5TmFtZSIsImhhbmRsZVN1Ym1pdCIsIl9jYWxsZWU1IiwidmFsaWRhdGVkVmFsdWVzIiwidHlwZWQiLCJfY2FsbGVlNSQiLCJfY29udGV4dDUiLCJwcmV2ZW50RGVmYXVsdCIsImhhbmRsZVJlc2V0IiwicmVzZXRGaWVsZHMiLCJmb3JtSW5zdGFuY2UiLCJ2YWxpZGF0ZUZpZWxkcyIsImdldEZpZWxkRXJyb3IiLCJnZXRGaWVsZHNFcnJvciIsImZvckVhY2giLCJpc0ZpZWxkVG91Y2hlZCIsImlzRmllbGRzVG91Y2hlZCIsImFsbEZpZWxkc1RvdWNoZWQiLCJzb21lIiwiZXZlcnkiLCJpc0ZpZWxkVmFsaWRhdGluZyIsInNldEZpZWxkc0Vycm9yIiwiZmllbGRzRXJyb3IiLCJlbnRyaWVzIiwiX3JlZiIsIl9yZWYyIiwic2V0RmllbGRUb3VjaGVkIiwiaXNUb3VjaGVkIiwic2V0RmllbGRzVG91Y2hlZCIsImZpZWxkc1RvdWNoIiwiZmllbGRzIiwicmVzZXRWYWx1ZXMiLCJmaWVsZCIsImluaXRpYWxWYWx1ZXMiLCJzZXRGaWVsZHNWYWx1ZSIsIm5ld1RvdWNoZWQiLCJzdWJtaXQiLCJjYWxsYmFjayIsIl9jYWxsZWU2IiwiX2NhbGxlZTYkIiwiX2NvbnRleHQ2IiwiaW50ZXJuYWxzIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFHQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxZQUFBLEdBQUFGLE9BQUE7QUFBNEMsU0FBQUcseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFMLHdCQUFBSyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENB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QVksRUFDWk8sV0FBVyxDQUNaLENBQ0Y7RUFFRCxPQUFPO0lBQUVFLFlBQVksRUFBWkEsWUFBWTtJQUFFK0IsU0FBUyxFQUFUQTtFQUFTLENBQUU7QUFDcEMsQ0FBQztBQUFDLElBQUFDLFFBQUEsR0FBQWxMLE9BQUEsY0FFYUQsT0FBTyIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VNZW1vLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCBtZW1vLCBGcmFnbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFdmVudENhbGxiYWNrLCB1c2VNZW1vaXplZEZuLCB1c2VTYWZlU3RhdGUgfSBmcm9tICdAMW1vbmV5L2hvb2tzJztcbmltcG9ydCB7IHVzZUZvcm1Db3JlIH0gZnJvbSAnLi91c2VGb3JtQ29yZSc7XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEhlbHBlcnMg4oCTIHJlc29sdmUgbmVzdGVkIHBhdGhzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHJlc29sdmVWYWx1ZSh2YWx1ZXMsIG5hbWUpIHtcbiAgICBpZiAoIW5hbWUuaW5jbHVkZXMoJy4nKSlcbiAgICAgICAgcmV0dXJuIHZhbHVlc1tuYW1lXTtcbiAgICBjb25zdCBrZXlzID0gbmFtZS5zcGxpdCgnLicpO1xuICAgIGxldCBjdXJyZW50ID0gdmFsdWVzO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgaWYgKGN1cnJlbnQgPT09IG51bGwgfHwgY3VycmVudCA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBjdXJyZW50ICE9PSAnb2JqZWN0JylcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W2tleV07XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50O1xufVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyB1c2VGb3JtXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmV4cG9ydCBjb25zdCB1c2VGb3JtID0gKGNvbmZpZyA9IHt9KSA9PiB7XG4gICAgY29uc3QgeyBvbkZpbmlzaCwgb25GaW5pc2hGYWlsZWQsIG9uUmVzZXQsIHZhbGlkYXRlVHJpZ2dlciA9ICdvbkNoYW5nZScsIH0gPSBjb25maWc7XG4gICAgY29uc3QgZm9ybUNvcmUgPSB1c2VGb3JtQ29yZShjb25maWcpO1xuICAgIGNvbnN0IFt2YWxpZGF0aW5nLCBzZXRWYWxpZGF0aW5nXSA9IHVzZVNhZmVTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2V4dHJhVG91Y2hlZCwgc2V0RXh0cmFUb3VjaGVkXSA9IHVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBhbGxUb3VjaGVkID0gdXNlTWVtbygoKSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBmb3JtQ29yZS50b3VjaGVkKSwgZXh0cmFUb3VjaGVkKSksIFtmb3JtQ29yZS50b3VjaGVkLCBleHRyYVRvdWNoZWRdKTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBBc3luYyBmaWVsZCB2YWxpZGF0aW9uIOKAkyBlYWNoIHJ1bGUgaXMgcHJvY2Vzc2VkIGV4YWN0bHkgb25jZVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IHZhbGlkYXRlRmllbGRBc3luYyA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHZhbHVlLCBydWxlcykgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGlmICghcnVsZXMgfHwgcnVsZXMubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSwgZXJyb3I6IG51bGwgfTtcbiAgICAgICAgc2V0VmFsaWRhdGluZygocHJldikgPT4gKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcHJldiksIHsgW25hbWVdOiB0cnVlIH0pKSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcnVsZXMpIHtcbiAgICAgICAgICAgICAgICAvLyByZXF1aXJlZFxuICAgICAgICAgICAgICAgIGlmIChydWxlLnJlcXVpcmVkICYmXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJykpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gaXMgcmVxdWlyZWRgO1xuICAgICAgICAgICAgICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZEVycm9yKG5hbWUsIGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogZmFsc2UsIGVycm9yIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIG1pblxuICAgICAgICAgICAgICAgIGlmIChydWxlLm1pbiAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA8IHJ1bGUubWluKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgYXQgbGVhc3QgJHtydWxlLm1pbn0gY2hhcmFjdGVyc2A7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db3JlLnNldEZpZWxkRXJyb3IobmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiBmYWxzZSwgZXJyb3IgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gbWF4XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGUubWF4ICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID4gcnVsZS5tYXgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBubyBtb3JlIHRoYW4gJHtydWxlLm1heH0gY2hhcmFjdGVyc2A7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db3JlLnNldEZpZWxkRXJyb3IobmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiBmYWxzZSwgZXJyb3IgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gcGF0dGVyblxuICAgICAgICAgICAgICAgIGlmIChydWxlLnBhdHRlcm4gJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhcnVsZS5wYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IGZvcm1hdCBpcyBpbnZhbGlkYDtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRFcnJvcihuYW1lLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGlzVmFsaWQ6IGZhbHNlLCBlcnJvciB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBlbnVtXG4gICAgICAgICAgICAgICAgaWYgKHJ1bGUuZW51bSAmJiBBcnJheS5pc0FycmF5KHJ1bGUuZW51bSkgJiYgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFydWxlLmVudW0uaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIG9uZSBvZiAke3J1bGUuZW51bS5qb2luKCcsICcpfWA7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZEVycm9yKG5hbWUsIGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGlzVmFsaWQ6IGZhbHNlLCBlcnJvciB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIHR5cGUgY2hlY2tzXG4gICAgICAgICAgICAgICAgaWYgKHJ1bGUudHlwZSA9PT0gJ251bWJlcicgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgfHwgaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIGEgbnVtYmVyYDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db3JlLnNldEZpZWxkRXJyb3IobmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogZmFsc2UsIGVycm9yIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGUudHlwZSA9PT0gJ2VtYWlsJyAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbWFpbFBhdHRlcm4gPSAvXlteXFxzQF0rQFteXFxzQF0rXFwuW15cXHNAXSskLztcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbWFpbFBhdHRlcm4udGVzdChTdHJpbmcodmFsdWUpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBhIHZhbGlkIGVtYWlsYDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db3JlLnNldEZpZWxkRXJyb3IobmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogZmFsc2UsIGVycm9yIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGUudHlwZSA9PT0gJ3VybCcgJiYgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBVUkwoU3RyaW5nKHZhbHVlKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKF9hKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIGEgdmFsaWQgVVJMYDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db3JlLnNldEZpZWxkRXJyb3IobmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogZmFsc2UsIGVycm9yIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gY3VzdG9tIHZhbGlkYXRvciAoc3luYyBvciBhc3luYykg4oCUIGV4ZWN1dGVkIGV4YWN0bHkgb25jZVxuICAgICAgICAgICAgICAgIGlmIChydWxlLnZhbGlkYXRvciAmJiB0eXBlb2YgcnVsZS52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHlpZWxkIFByb21pc2UucmVzb2x2ZShydWxlLnZhbGlkYXRvcih2YWx1ZSwgZm9ybUNvcmUudmFsdWVzKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSB0cnVlICYmIHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSB0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyA/IHJlc3VsdCA6ICdWYWxpZGF0aW9uIGZhaWxlZCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRFcnJvcihuYW1lLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogZmFsc2UsIGVycm9yIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdWYWxpZGF0aW9uIGVycm9yJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db3JlLnNldEZpZWxkRXJyb3IobmFtZSwgZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGlzVmFsaWQ6IGZhbHNlLCBlcnJvcjogZXJyb3JNZXNzYWdlIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZm9ybUNvcmUuZXJyb3JzW25hbWVdKSB7XG4gICAgICAgICAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRFcnJvcihuYW1lLCBudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IGlzVmFsaWQ6IHRydWUsIGVycm9yOiBudWxsIH07XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBzZXRWYWxpZGF0aW5nKChwcmV2KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3VmFsaWRhdGluZyA9IE9iamVjdC5hc3NpZ24oe30sIHByZXYpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdWYWxpZGF0aW5nW25hbWVdO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXdWYWxpZGF0aW5nO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQXN5bmMgZmllbGQgYmx1ciBoYW5kbGVyXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgaGFuZGxlRmllbGRCbHVyID0gdXNlRXZlbnRDYWxsYmFjaygobmFtZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIHNldEV4dHJhVG91Y2hlZCgocHJldikgPT4gKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcHJldiksIHsgW25hbWVdOiB0cnVlIH0pKSk7XG4gICAgICAgIGNvbnN0IHJ1bGVzID0gZm9ybUNvcmUuZmllbGRSdWxlc1tuYW1lXTtcbiAgICAgICAgaWYgKHJ1bGVzICYmIHZhbGlkYXRlVHJpZ2dlciA9PT0gJ29uQmx1cicpIHtcbiAgICAgICAgICAgIHlpZWxkIHZhbGlkYXRlRmllbGRBc3luYyhuYW1lLCByZXNvbHZlVmFsdWUoZm9ybUNvcmUudmFsdWVzLCBuYW1lKSwgcnVsZXMpO1xuICAgICAgICB9XG4gICAgfSkpO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFZhbGlkYXRlIGFsbCBmaWVsZHMgYXN5bmNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCB2YWxpZGF0ZUZpZWxkc0FzeW5jID0gdXNlTWVtb2l6ZWRGbigobmFtZUxpc3QpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBmaWVsZHNUb1ZhbGlkYXRlID0gbmFtZUxpc3QgfHwgT2JqZWN0LmtleXMoZm9ybUNvcmUuZmllbGRSdWxlcyk7XG4gICAgICAgIGxldCBoYXNFcnJvciA9IGZhbHNlO1xuICAgICAgICBjb25zdCBmaWVsZEVycm9ycyA9IHt9O1xuICAgICAgICBjb25zdCB2YWxpZGF0aW9uUHJvbWlzZXMgPSBmaWVsZHNUb1ZhbGlkYXRlLm1hcCgobmFtZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBydWxlcyA9IGZvcm1Db3JlLmZpZWxkUnVsZXNbbmFtZV07XG4gICAgICAgICAgICBpZiAocnVsZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGlzVmFsaWQsIGVycm9yIH0gPSB5aWVsZCB2YWxpZGF0ZUZpZWxkQXN5bmMobmFtZSwgcmVzb2x2ZVZhbHVlKGZvcm1Db3JlLnZhbHVlcywgbmFtZSksIHJ1bGVzKTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWQgJiYgZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgaGFzRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZEVycm9yc1tuYW1lXSA9IGVycm9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuICAgICAgICB5aWVsZCBQcm9taXNlLmFsbCh2YWxpZGF0aW9uUHJvbWlzZXMpO1xuICAgICAgICBpZiAoaGFzRXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCdWYWxpZGF0aW9uIGZhaWxlZCcpO1xuICAgICAgICAgICAgZXJyb3IudmFsdWVzID0gZm9ybUNvcmUudmFsdWVzO1xuICAgICAgICAgICAgZXJyb3IuZXJyb3JzID0gZmllbGRFcnJvcnM7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmFtZUxpc3QpIHtcbiAgICAgICAgICAgIHJldHVybiBuYW1lTGlzdC5yZWR1Y2UoKGFjYywgbmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIGFjY1tuYW1lXSA9IHJlc29sdmVWYWx1ZShmb3JtQ29yZS52YWx1ZXMsIG5hbWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCB7fSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcm1Db3JlLnZhbHVlcztcbiAgICB9KSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gZGVmaW5lRmllbGQg4oCTIHVzZWQgYnkgc3RhbmRhbG9uZSAobm9uLVByb0Zvcm0pIGNvbnN1bWVyc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGRlZmluZUZpZWxkID0gdXNlQ2FsbGJhY2soKG5hbWUsIGZpZWxkT3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgcnVsZXMgPSBbXSB9ID0gZmllbGRPcHRpb25zO1xuICAgICAgICBjb25zdCBGaWVsZENvbXBvbmVudCA9IG1lbW8oKF9hKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2I7XG4gICAgICAgICAgICB2YXIgeyBjaGlsZHJlbiwgcmVuZGVyIH0gPSBfYSwgcHJvcHMgPSBfX3Jlc3QoX2EsIFtcImNoaWxkcmVuXCIsIFwicmVuZGVyXCJdKTtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSAoX2IgPSBmb3JtQ29yZS52YWx1ZXNbbmFtZV0pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnO1xuICAgICAgICAgICAgY29uc3QgZmllbGRFcnJvciA9IGZvcm1Db3JlLmVycm9yc1tuYW1lXTtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkVG91Y2hlZCA9IGFsbFRvdWNoZWRbbmFtZV07XG4gICAgICAgICAgICBjb25zdCBmaWVsZFZhbGlkYXRpbmcgPSB2YWxpZGF0aW5nW25hbWVdO1xuICAgICAgICAgICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ1J1bGVzID0gZm9ybUNvcmUuZ2V0RmllbGRSdWxlcyhuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoIWV4aXN0aW5nUnVsZXMgJiYgcnVsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBmb3JtQ29yZS5yZWdpc3RlckZpZWxkKG5hbWUsIHJ1bGVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvcmUudW5yZWdpc3RlckZpZWxkKG5hbWUpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LCBbXSk7IC8vIE9ubHkgcmVnaXN0ZXIgb24gbW91bnRcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZUZpZWxkQ2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZFZhbHVlKG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGVUcmlnZ2VyID09PSAnb25DaGFuZ2UnKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db3JlLnZhbGlkYXRlRmllbGQobmFtZSwgcnVsZXMsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZUJsdXIgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGVGaWVsZEJsdXIobmFtZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkUHJvcHMgPSBPYmplY3QuYXNzaWduKHsgbmFtZSwgdmFsdWU6IGZpZWxkVmFsdWUsIGVycm9yOiBmaWVsZEVycm9yLCB0b3VjaGVkOiBmaWVsZFRvdWNoZWQsIHZhbGlkYXRpbmc6IGZpZWxkVmFsaWRhdGluZywgb25DaGFuZ2U6IGhhbmRsZUZpZWxkQ2hhbmdlLCBvbkJsdXI6IGhhbmRsZUJsdXIgfSwgcHJvcHMpO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlTWVyZ2VDaGFuZ2UgPSAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGUgJiYgdHlwZW9mIGUgPT09ICdvYmplY3QnICYmICd0YXJnZXQnIGluIGVcbiAgICAgICAgICAgICAgICAgICAgPyBlLnRhcmdldC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICA6IGU7XG4gICAgICAgICAgICAgICAgaGFuZGxlRmllbGRDaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikgJiZcbiAgICAgICAgICAgICAgICAgICAgKChfYSA9IGNoaWxkcmVuLnByb3BzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub25DaGFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnByb3BzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlTWVyZ2VCbHVyID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBoYW5kbGVCbHVyKCk7XG4gICAgICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSAmJlxuICAgICAgICAgICAgICAgICAgICAoKF9hID0gY2hpbGRyZW4ucHJvcHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vbkJsdXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnByb3BzLm9uQmx1cigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAocmVuZGVyICYmIHR5cGVvZiByZW5kZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyKGZpZWxkUHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbihmaWVsZFByb3BzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXJnZWRQcm9wcyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZmllbGRQcm9wcyksIHsgb25DaGFuZ2U6IGhhbmRsZU1lcmdlQ2hhbmdlLCBvbkJsdXI6IGhhbmRsZU1lcmdlQmx1ciB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCBtZXJnZWRQcm9wcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChGcmFnbWVudCwgbnVsbCwgLi4uY2hpbGRyZW4ubWFwKChjaGlsZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVyZ2VkUHJvcHMgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGZpZWxkUHJvcHMpLCB7IGtleTogY2hpbGQua2V5IHx8IGluZGV4LCBvbkNoYW5nZTogaGFuZGxlTWVyZ2VDaGFuZ2UsIG9uQmx1cjogaGFuZGxlTWVyZ2VCbHVyIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwgbWVyZ2VkUHJvcHMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgICAgIEZpZWxkQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gYEZpZWxkKCR7bmFtZX0pYDtcbiAgICAgICAgcmV0dXJuIEZpZWxkQ29tcG9uZW50O1xuICAgIH0sIFtcbiAgICAgICAgZm9ybUNvcmUsXG4gICAgICAgIGFsbFRvdWNoZWQsXG4gICAgICAgIHZhbGlkYXRpbmcsXG4gICAgICAgIHZhbGlkYXRlVHJpZ2dlcixcbiAgICAgICAgaGFuZGxlRmllbGRCbHVyLFxuICAgIF0pO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIGhhbmRsZVN1Ym1pdCAvIGhhbmRsZVJlc2V0IOKAkyBmb3IgPGZvcm0+IGV2ZW50IGhhbmRsZXJzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgaGFuZGxlU3VibWl0ID0gdXNlRXZlbnRDYWxsYmFjaygoZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVkVmFsdWVzID0geWllbGQgdmFsaWRhdGVGaWVsZHNBc3luYygpO1xuICAgICAgICAgICAgb25GaW5pc2ggPT09IG51bGwgfHwgb25GaW5pc2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoKHZhbGlkYXRlZFZhbHVlcyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc3QgdHlwZWQgPSBlcnI7XG4gICAgICAgICAgICBvbkZpbmlzaEZhaWxlZCA9PT0gbnVsbCB8fCBvbkZpbmlzaEZhaWxlZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaW5pc2hGYWlsZWQoeyB2YWx1ZXM6IHR5cGVkLnZhbHVlcywgZXJyb3JzOiB0eXBlZC5lcnJvcnMgfSk7XG4gICAgICAgIH1cbiAgICB9KSk7XG4gICAgY29uc3QgaGFuZGxlUmVzZXQgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBmb3JtQ29yZS5yZXNldEZpZWxkcygpO1xuICAgICAgICBzZXRFeHRyYVRvdWNoZWQoe30pO1xuICAgICAgICBzZXRWYWxpZGF0aW5nKHt9KTtcbiAgICAgICAgb25SZXNldCA9PT0gbnVsbCB8fCBvblJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblJlc2V0KCk7XG4gICAgfSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gRm9ybUluc3RhbmNlIOKAkyBlbmhhbmNlZCBBUEkgZm9yIGNvbnN1bWVyc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGZvcm1JbnN0YW5jZSA9IHVzZU1lbW8oKCkgPT4gKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZm9ybUNvcmUuZm9ybUluc3RhbmNlKSwgeyB2YWxpZGF0ZUZpZWxkczogdmFsaWRhdGVGaWVsZHNBc3luYywgc2V0RmllbGRWYWx1ZTogZm9ybUNvcmUuc2V0RmllbGRWYWx1ZSwgZ2V0RmllbGRFcnJvcjogKG5hbWUpID0+IGZvcm1Db3JlLmVycm9yc1tuYW1lXSwgZ2V0RmllbGRzRXJyb3I6IChuYW1lTGlzdCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFuYW1lTGlzdClcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybUNvcmUuZXJyb3JzO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICAgICAgICBuYW1lTGlzdC5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGZvcm1Db3JlLmVycm9yc1tuYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRbbmFtZV0gPSBmb3JtQ29yZS5lcnJvcnNbbmFtZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LCBpc0ZpZWxkVG91Y2hlZDogKG5hbWUpID0+IGFsbFRvdWNoZWRbbmFtZV0gfHwgZmFsc2UsIGlzRmllbGRzVG91Y2hlZDogKG5hbWVMaXN0LCBhbGxGaWVsZHNUb3VjaGVkID0gZmFsc2UpID0+IHtcbiAgICAgICAgICAgIGlmICghbmFtZUxpc3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoYWxsVG91Y2hlZCkuc29tZSgoa2V5KSA9PiBhbGxUb3VjaGVkW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGFsbEZpZWxkc1RvdWNoZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmFtZUxpc3QuZXZlcnkoKG5hbWUpID0+IGFsbFRvdWNoZWRbbmFtZV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5hbWVMaXN0LnNvbWUoKG5hbWUpID0+IGFsbFRvdWNoZWRbbmFtZV0pO1xuICAgICAgICB9LCBpc0ZpZWxkVmFsaWRhdGluZzogKG5hbWUpID0+IHZhbGlkYXRpbmdbbmFtZV0gfHwgZmFsc2UsIHNldEZpZWxkRXJyb3I6IGZvcm1Db3JlLnNldEZpZWxkRXJyb3IsIHNldEZpZWxkc0Vycm9yOiAoZmllbGRzRXJyb3IpID0+IHtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGZpZWxkc0Vycm9yKS5mb3JFYWNoKChbbmFtZSwgZXJyb3JdKSA9PiB7XG4gICAgICAgICAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRFcnJvcihuYW1lLCBlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgc2V0RmllbGRUb3VjaGVkOiAobmFtZSwgaXNUb3VjaGVkID0gdHJ1ZSkgPT4ge1xuICAgICAgICAgICAgc2V0RXh0cmFUb3VjaGVkKChwcmV2KSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcmV2KSwgeyBbbmFtZV06IGlzVG91Y2hlZCB9KSkpO1xuICAgICAgICB9LCBzZXRGaWVsZHNUb3VjaGVkOiAoZmllbGRzVG91Y2gpID0+IHtcbiAgICAgICAgICAgIHNldEV4dHJhVG91Y2hlZCgocHJldikgPT4gKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcHJldiksIGZpZWxkc1RvdWNoKSkpO1xuICAgICAgICB9LCByZXNldEZpZWxkczogKGZpZWxkcykgPT4ge1xuICAgICAgICAgICAgaWYgKCFmaWVsZHMpIHtcbiAgICAgICAgICAgICAgICBmb3JtQ29yZS5yZXNldEZpZWxkcygpO1xuICAgICAgICAgICAgICAgIHNldEV4dHJhVG91Y2hlZCh7fSk7XG4gICAgICAgICAgICAgICAgc2V0VmFsaWRhdGluZyh7fSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNldFZhbHVlcyA9IHt9O1xuICAgICAgICAgICAgICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgIHJlc2V0VmFsdWVzW2ZpZWxkXSA9ICgoX2EgPSBjb25maWcuaW5pdGlhbFZhbHVlcykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDoge30pW2ZpZWxkXTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZHNWYWx1ZShyZXNldFZhbHVlcyk7XG4gICAgICAgICAgICAgICAgc2V0RXh0cmFUb3VjaGVkKChwcmV2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1RvdWNoZWQgPSBPYmplY3QuYXNzaWduKHt9LCBwcmV2KTtcbiAgICAgICAgICAgICAgICAgICAgZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgbmV3VG91Y2hlZFtmaWVsZF07XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3VG91Y2hlZDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBzZXRWYWxpZGF0aW5nKChwcmV2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1ZhbGlkYXRpbmcgPSBPYmplY3QuYXNzaWduKHt9LCBwcmV2KTtcbiAgICAgICAgICAgICAgICAgICAgZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgbmV3VmFsaWRhdGluZ1tmaWVsZF07XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3VmFsaWRhdGluZztcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRFcnJvcihmaWVsZCwgbnVsbCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHN1Ym1pdDogKGNhbGxiYWNrKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVkVmFsdWVzID0geWllbGQgdmFsaWRhdGVGaWVsZHNBc3luYygpO1xuICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICB5aWVsZCBjYWxsYmFjayh2YWxpZGF0ZWRWYWx1ZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVkVmFsdWVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKF9hKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSksIGRlZmluZUZpZWxkLCByZWdpc3RlckZpZWxkOiBmb3JtQ29yZS5yZWdpc3RlckZpZWxkLCB1bnJlZ2lzdGVyRmllbGQ6IGZvcm1Db3JlLnVucmVnaXN0ZXJGaWVsZCB9KSksIFtcbiAgICAgICAgZm9ybUNvcmUsXG4gICAgICAgIGFsbFRvdWNoZWQsXG4gICAgICAgIHZhbGlkYXRpbmcsXG4gICAgICAgIHZhbGlkYXRlRmllbGRzQXN5bmMsXG4gICAgICAgIGRlZmluZUZpZWxkLFxuICAgICAgICBjb25maWcuaW5pdGlhbFZhbHVlcyxcbiAgICAgICAgc2V0VmFsaWRhdGluZyxcbiAgICBdKTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBJbnRlcm5hbHMg4oCTIGV4cG9zZWQgZm9yIFByb0Zvcm0gaW50ZWdyYXRpb25cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBpbnRlcm5hbHMgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgICAgIHZhbHVlczogZm9ybUNvcmUudmFsdWVzLFxuICAgICAgICBlcnJvcnM6IGZvcm1Db3JlLmVycm9ycyxcbiAgICAgICAgdG91Y2hlZDogYWxsVG91Y2hlZCxcbiAgICAgICAgdmFsaWRhdGluZyxcbiAgICAgICAgZmllbGRSdWxlczogZm9ybUNvcmUuZmllbGRSdWxlcyxcbiAgICAgICAgc2V0RmllbGRWYWx1ZTogZm9ybUNvcmUuc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRFcnJvcjogZm9ybUNvcmUuc2V0RmllbGRFcnJvcixcbiAgICAgICAgdmFsaWRhdGVGaWVsZDogZm9ybUNvcmUudmFsaWRhdGVGaWVsZCxcbiAgICAgICAgdmFsaWRhdGVGaWVsZEFzeW5jLFxuICAgICAgICByZWdpc3RlckZpZWxkOiBmb3JtQ29yZS5yZWdpc3RlckZpZWxkLFxuICAgICAgICB1bnJlZ2lzdGVyRmllbGQ6IGZvcm1Db3JlLnVucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgaGFuZGxlU3VibWl0LFxuICAgICAgICBoYW5kbGVSZXNldCxcbiAgICB9KSwgW1xuICAgICAgICBmb3JtQ29yZS52YWx1ZXMsXG4gICAgICAgIGZvcm1Db3JlLmVycm9ycyxcbiAgICAgICAgYWxsVG91Y2hlZCxcbiAgICAgICAgdmFsaWRhdGluZyxcbiAgICAgICAgZm9ybUNvcmUuZmllbGRSdWxlcyxcbiAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRFcnJvcixcbiAgICAgICAgZm9ybUNvcmUudmFsaWRhdGVGaWVsZCxcbiAgICAgICAgdmFsaWRhdGVGaWVsZEFzeW5jLFxuICAgICAgICBmb3JtQ29yZS5yZWdpc3RlckZpZWxkLFxuICAgICAgICBmb3JtQ29yZS51bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIGhhbmRsZVN1Ym1pdCxcbiAgICAgICAgaGFuZGxlUmVzZXQsXG4gICAgXSk7XG4gICAgcmV0dXJuIHsgZm9ybUluc3RhbmNlLCBpbnRlcm5hbHMgfTtcbn07XG5leHBvcnQgZGVmYXVsdCB1c2VGb3JtOyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=