@1money/component-ui 0.0.100 → 0.0.102-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/business/Dialog/BaseDialog/BaseDialog.js +1 -1
- package/es/business/Dialog/BaseDialog/constants.js +1 -1
- package/es/business/Dialog/BaseDialog/index.js +1 -1
- package/es/business/Dialog/BaseDialog/interface.js +1 -1
- package/es/business/Dialog/Descriptions/Descriptions.js +8 -1
- package/es/business/Dialog/Descriptions/constants.js +1 -1
- package/es/business/Dialog/Descriptions/index.js +1 -1
- package/es/business/Dialog/Descriptions/interface.d.ts +2 -1
- package/es/business/Dialog/Descriptions/interface.js +1 -1
- package/es/business/Dialog/Descriptions/style/css.js +1 -1
- package/es/business/Dialog/Descriptions/style/index.js +1 -1
- package/es/business/Dialog/DetailsDialog/DetailsDialog.js +6 -4
- package/es/business/Dialog/DetailsDialog/index.js +1 -1
- package/es/business/Dialog/DetailsDialog/interface.js +1 -1
- package/es/business/Dialog/DetailsDialog/style/css.js +1 -1
- package/es/business/Dialog/DetailsDialog/style/index.js +1 -1
- package/es/business/Dialog/FormDialog/FormDialog.js +1 -1
- package/es/business/Dialog/FormDialog/index.js +1 -1
- package/es/business/Dialog/FormDialog/interface.js +1 -1
- package/es/business/Dialog/FormDialog/style/css.js +1 -1
- package/es/business/Dialog/FormDialog/style/index.js +1 -1
- package/es/business/Dialog/VerificationDialog/VerificationDialog.js +1 -1
- package/es/business/Dialog/VerificationDialog/constants.js +1 -1
- package/es/business/Dialog/VerificationDialog/index.js +1 -1
- package/es/business/Dialog/VerificationDialog/interface.js +1 -1
- package/es/business/Dialog/VerificationDialog/style/css.js +1 -1
- package/es/business/Dialog/VerificationDialog/style/index.js +1 -1
- package/es/business/Dialog/index.js +1 -1
- package/es/business/Dialog/variants/DeleteDialog.js +1 -1
- package/es/business/Dialog/variants/FailureDialog.js +1 -1
- package/es/business/Dialog/variants/LoadingDialog.js +5 -6
- package/es/business/Dialog/variants/PendingDialog.js +1 -1
- package/es/business/Dialog/variants/SuccessDialog.js +1 -1
- package/es/business/Dialog/variants/index.js +1 -1
- package/es/business/Dialog/variants/style/css.js +1 -1
- package/es/business/Dialog/variants/style/index.js +1 -1
- package/es/business/FieldList/index.js +1 -1
- package/es/business/FieldList/style/css.js +1 -1
- package/es/business/FieldList/style/index.js +1 -1
- package/es/business/Filter/Account/Account.js +42 -40
- package/es/business/Filter/Account/index.js +1 -1
- package/es/business/Filter/Account/interface.js +1 -1
- package/es/business/Filter/Account/style/css.js +1 -1
- package/es/business/Filter/Account/style/index.js +1 -1
- package/es/business/Filter/Asset/Asset.js +43 -42
- package/es/business/Filter/Asset/index.js +1 -1
- package/es/business/Filter/Asset/interface.js +1 -1
- package/es/business/Filter/Asset/style/css.js +1 -1
- package/es/business/Filter/Asset/style/index.js +1 -1
- package/es/business/Filter/DateRange/DateRange.js +37 -26
- package/es/business/Filter/DateRange/index.js +1 -1
- package/es/business/Filter/DateRange/interface.js +1 -1
- package/es/business/Filter/DateRange/style/css.js +1 -1
- package/es/business/Filter/DateRange/style/index.js +1 -1
- package/es/business/Filter/Option/Option.js +33 -31
- package/es/business/Filter/Option/index.js +1 -1
- package/es/business/Filter/Option/interface.js +1 -1
- package/es/business/Filter/Option/style/css.js +1 -1
- package/es/business/Filter/Option/style/index.js +1 -1
- package/es/business/Filter/index.js +1 -1
- package/es/business/Form/PageForm/PageForm.js +1 -1
- package/es/business/Form/PageForm/index.js +1 -1
- package/es/business/Form/PageForm/interface.js +1 -1
- package/es/business/Form/ResultForm/ResultForm.js +1 -1
- package/es/business/Form/ResultForm/index.js +1 -1
- package/es/business/Form/ResultForm/interface.js +1 -1
- package/es/business/Form/index.js +1 -1
- package/es/business/Form/variants/ExpiredForm.js +1 -1
- package/es/business/Form/variants/FailureForm.js +1 -1
- package/es/business/Form/variants/PendingForm.js +1 -1
- package/es/business/Form/variants/SuccessForm.js +1 -1
- package/es/business/Form/variants/index.js +1 -1
- package/es/business/Select/Asset/AssetSelect.js +13 -13
- package/es/business/Select/Asset/index.js +1 -1
- package/es/business/Select/Asset/interface.js +1 -1
- package/es/business/Select/Asset/style/css.js +1 -1
- package/es/business/Select/Asset/style/index.js +1 -1
- package/es/business/Select/Country/CountrySelect.js +13 -10
- package/es/business/Select/Country/index.js +1 -1
- package/es/business/Select/Country/interface.js +1 -1
- package/es/business/Select/Country/style/css.js +1 -1
- package/es/business/Select/Country/style/index.js +1 -1
- package/es/business/Select/Currency/CurrencySelect.js +7 -5
- package/es/business/Select/Currency/index.js +1 -1
- package/es/business/Select/Currency/interface.js +1 -1
- package/es/business/Select/Currency/style/css.js +1 -1
- package/es/business/Select/Currency/style/index.js +1 -1
- package/es/business/Select/Network/NetworkSelect.js +7 -5
- package/es/business/Select/Network/index.js +1 -1
- package/es/business/Select/Network/interface.js +1 -1
- package/es/business/Select/Network/style/css.js +1 -1
- package/es/business/Select/Network/style/index.js +1 -1
- package/es/business/Select/PaymentMethod/PaymentMethodSelect.js +7 -5
- package/es/business/Select/PaymentMethod/index.js +1 -1
- package/es/business/Select/PaymentMethod/interface.js +1 -1
- package/es/business/Select/PaymentMethod/style/css.js +1 -1
- package/es/business/Select/PaymentMethod/style/index.js +1 -1
- package/es/business/Select/index.js +1 -1
- package/es/business/index.js +1 -1
- package/es/business/shared/formCore/BaseProForm.js +1 -1
- package/es/business/shared/formCore/useFormDomId.js +1 -1
- package/es/business/shared/formCore/useRelayedFormRef.js +1 -1
- package/es/business/shared/formCore/useSubmitAction.js +1 -1
- package/es/components/Accordion/Accordion.js +1 -1
- package/es/components/Accordion/constants.js +1 -1
- package/es/components/Accordion/index.js +1 -1
- package/es/components/Accordion/interface.js +1 -1
- package/es/components/Accordion/style/css.js +1 -1
- package/es/components/Accordion/style/index.js +1 -1
- package/es/components/ActionBar/ActionBar.js +1 -1
- package/es/components/ActionBar/constants.js +1 -1
- package/es/components/ActionBar/index.js +1 -1
- package/es/components/ActionBar/interface.js +1 -1
- package/es/components/ActionBar/style/css.js +1 -1
- package/es/components/ActionBar/style/index.js +1 -1
- package/es/components/Alert/Alert.js +4 -3
- package/es/components/Alert/index.js +1 -1
- package/es/components/Alert/interface.js +1 -1
- package/es/components/Alert/style/css.js +1 -1
- package/es/components/Alert/style/index.js +1 -1
- package/es/components/Button/Button.js +1 -1
- package/es/components/Button/constants.js +1 -1
- package/es/components/Button/index.js +1 -1
- package/es/components/Button/interface.js +1 -1
- package/es/components/Button/style/css.js +1 -1
- package/es/components/Button/style/index.js +1 -1
- package/es/components/Calendar/Calendar.js +17 -4
- package/es/components/Calendar/constants.js +1 -1
- package/es/components/Calendar/index.js +1 -1
- package/es/components/Calendar/interface.js +1 -1
- package/es/components/Calendar/style/css.js +1 -1
- package/es/components/Calendar/style/index.js +1 -1
- package/es/components/Carousel/Carousel.js +1 -1
- package/es/components/Carousel/index.js +1 -1
- package/es/components/Carousel/interface.js +1 -1
- package/es/components/Carousel/style/css.js +1 -1
- package/es/components/Carousel/style/index.js +1 -1
- package/es/components/Cell/Cell.js +1 -1
- package/es/components/Cell/index.js +1 -1
- package/es/components/Cell/interface.js +1 -1
- package/es/components/Cell/style/css.js +1 -1
- package/es/components/Cell/style/index.js +1 -1
- package/es/components/Checkbox/BaseCheckbox.js +1 -1
- package/es/components/Checkbox/Checkbox.js +1 -1
- package/es/components/Checkbox/CheckboxGroup.js +1 -1
- package/es/components/Checkbox/CheckboxGroupContext.js +1 -1
- package/es/components/Checkbox/constants.js +1 -1
- package/es/components/Checkbox/index.js +1 -1
- package/es/components/Checkbox/interface.js +1 -1
- package/es/components/Checkbox/style/css.js +1 -1
- package/es/components/Checkbox/style/index.js +1 -1
- package/es/components/CoachMark/CoachMark.js +1 -1
- package/es/components/CoachMark/index.js +1 -1
- package/es/components/CoachMark/interface.js +1 -1
- package/es/components/CoachMark/style/css.js +1 -1
- package/es/components/CoachMark/style/index.js +1 -1
- package/es/components/ConfigProvider/ConfigProvider.d.ts +2 -0
- package/es/components/ConfigProvider/ConfigProvider.js +44 -0
- package/es/components/ConfigProvider/context.d.ts +34 -0
- package/es/components/ConfigProvider/context.js +66 -0
- package/es/components/ConfigProvider/index.d.ts +4 -0
- package/es/components/ConfigProvider/index.js +3 -0
- package/es/components/ConfigProvider/interface.d.ts +11 -0
- package/es/components/ConfigProvider/interface.js +2 -0
- package/es/components/Copy/Clipboard.js +1 -1
- package/es/components/Copy/Copy.js +4 -2
- package/es/components/Copy/index.js +1 -1
- package/es/components/Copy/interface.js +1 -1
- package/es/components/Copy/style/css.js +1 -1
- package/es/components/Copy/style/index.js +1 -1
- package/es/components/Dialog/Dialog.js +8 -4
- package/es/components/Dialog/DialogContent.js +1 -1
- package/es/components/Dialog/DialogControls.d.ts +3 -1
- package/es/components/Dialog/DialogControls.js +3 -2
- package/es/components/Dialog/className.js +1 -1
- package/es/components/Dialog/constants.js +1 -1
- package/es/components/Dialog/hooks.js +1 -1
- package/es/components/Dialog/index.js +1 -1
- package/es/components/Dialog/interface.js +1 -1
- package/es/components/Dialog/style/css.js +1 -1
- package/es/components/Dialog/style/index.js +1 -1
- package/es/components/Dialog/types.js +1 -1
- package/es/components/Divider/Divider.js +1 -1
- package/es/components/Divider/constants.js +1 -1
- package/es/components/Divider/index.js +1 -1
- package/es/components/Divider/interface.js +1 -1
- package/es/components/Divider/style/css.js +1 -1
- package/es/components/Divider/style/index.js +1 -1
- package/es/components/Drawer/Drawer.js +5 -3
- package/es/components/Drawer/constants.js +1 -1
- package/es/components/Drawer/hooks/index.js +1 -1
- package/es/components/Drawer/hooks/useBodyScrollLock.js +1 -1
- package/es/components/Drawer/hooks/useDialogFocus.js +1 -1
- package/es/components/Drawer/hooks/useDrawerTransition.js +1 -1
- package/es/components/Drawer/hooks/useEscapeClose.js +1 -1
- package/es/components/Drawer/index.js +1 -1
- package/es/components/Drawer/interface.js +1 -1
- package/es/components/Drawer/style/css.js +1 -1
- package/es/components/Drawer/style/index.js +1 -1
- package/es/components/Dropdown/Dropdown.js +1 -1
- package/es/components/Dropdown/index.js +1 -1
- package/es/components/Dropdown/interface.js +1 -1
- package/es/components/Dropdown/style/css.js +1 -1
- package/es/components/Dropdown/style/index.js +1 -1
- package/es/components/Empty/Empty.js +1 -1
- package/es/components/Empty/index.js +1 -1
- package/es/components/Empty/interface.js +1 -1
- package/es/components/Empty/style/css.js +1 -1
- package/es/components/Empty/style/index.js +1 -1
- package/es/components/Filter/Filter.js +37 -40
- package/es/components/Filter/index.js +1 -1
- package/es/components/Filter/interface.js +1 -1
- package/es/components/Filter/style/css.js +1 -1
- package/es/components/Filter/style/index.js +1 -1
- package/es/components/Flex/Flex.js +1 -1
- package/es/components/Flex/constants.js +1 -1
- package/es/components/Flex/index.js +1 -1
- package/es/components/Flex/interface.js +1 -1
- package/es/components/Flex/style/css.js +1 -1
- package/es/components/Flex/style/index.js +1 -1
- package/es/components/FormLayout/FormLayout.js +1 -1
- package/es/components/FormLayout/config.js +1 -1
- package/es/components/FormLayout/context.js +1 -1
- package/es/components/FormLayout/index.js +1 -1
- package/es/components/FormLayout/interface.js +1 -1
- package/es/components/FormLayout/style/css.js +1 -1
- package/es/components/FormLayout/style/index.js +1 -1
- package/es/components/Grid/Col.js +1 -1
- package/es/components/Grid/Grid.js +1 -1
- package/es/components/Grid/Row.js +1 -1
- package/es/components/Grid/constants.js +1 -1
- package/es/components/Grid/helper.js +1 -1
- package/es/components/Grid/index.js +1 -1
- package/es/components/Grid/interface.js +1 -1
- package/es/components/Grid/style/css.js +1 -1
- package/es/components/Grid/style/index.js +1 -1
- package/es/components/Icons/Icons.js +1 -1
- package/es/components/Icons/Illustrations.js +1 -1
- package/es/components/Icons/Logo.js +1 -1
- package/es/components/Icons/SVGs.js +1 -1
- package/es/components/Icons/Wrapper.js +1 -1
- package/es/components/Icons/constants.js +1 -1
- package/es/components/Icons/index.js +1 -1
- package/es/components/Icons/interface.js +1 -1
- package/es/components/Icons/style/css.js +1 -1
- package/es/components/Icons/style/index.js +1 -1
- package/es/components/Input/Amount/Amount.js +4 -2
- package/es/components/Input/Amount/helper.js +1 -1
- package/es/components/Input/Amount/index.js +1 -1
- package/es/components/Input/Amount/style/css.js +1 -1
- package/es/components/Input/Amount/style/index.js +1 -1
- package/es/components/Input/FieldShell/FieldShell.js +4 -2
- package/es/components/Input/FieldShell/index.js +1 -1
- package/es/components/Input/Input/Input.js +4 -2
- package/es/components/Input/Input/index.js +1 -1
- package/es/components/Input/Mask/Mask.js +1 -1
- package/es/components/Input/Mask/index.js +1 -1
- package/es/components/Input/OTP/OTP.js +1 -1
- package/es/components/Input/OTP/index.js +1 -1
- package/es/components/Input/Password/Password.js +4 -2
- package/es/components/Input/Password/index.js +1 -1
- package/es/components/Input/Search/Search.js +4 -2
- package/es/components/Input/Search/index.js +1 -1
- package/es/components/Input/TextArea/TextArea.js +1 -1
- package/es/components/Input/TextArea/index.js +1 -1
- package/es/components/Input/Trade/Trade.js +4 -2
- package/es/components/Input/Trade/index.js +1 -1
- package/es/components/Input/constants.js +1 -1
- package/es/components/Input/index.js +1 -1
- package/es/components/Input/interface.js +1 -1
- package/es/components/Input/style/css.js +1 -1
- package/es/components/Input/style/index.js +1 -1
- package/es/components/Input/useAmountInput.js +1 -1
- package/es/components/Input/useSyncRef.js +1 -1
- package/es/components/Link/Link.js +1 -1
- package/es/components/Link/constants.js +1 -1
- package/es/components/Link/index.js +1 -1
- package/es/components/Link/interface.js +1 -1
- package/es/components/Link/style/css.js +1 -1
- package/es/components/Link/style/index.js +1 -1
- package/es/components/Navigation/Nav.js +1 -1
- package/es/components/Navigation/Navigation.js +1 -1
- package/es/components/Navigation/NavigationLogo.js +1 -1
- package/es/components/Navigation/NavigationStepper.js +4 -3
- package/es/components/Navigation/index.js +1 -1
- package/es/components/Navigation/interface.js +1 -1
- package/es/components/Navigation/style/css.js +1 -1
- package/es/components/Navigation/style/index.js +1 -1
- package/es/components/Notification/Notification.js +5 -3
- package/es/components/Notification/NotificationStatic.js +1 -1
- package/es/components/Notification/constants.js +1 -1
- package/es/components/Notification/index.js +1 -1
- package/es/components/Notification/interface.js +1 -1
- package/es/components/Notification/style/css.js +1 -1
- package/es/components/Notification/style/index.js +1 -1
- package/es/components/Pagination/Pagination.js +8 -5
- package/es/components/Pagination/constants.js +1 -1
- package/es/components/Pagination/index.js +1 -1
- package/es/components/Pagination/interface.js +1 -1
- package/es/components/Pagination/style/css.js +1 -1
- package/es/components/Pagination/style/index.js +1 -1
- package/es/components/Pagination/usePagination.js +1 -1
- package/es/components/PanelLayout/PanelLayout.js +5 -3
- package/es/components/PanelLayout/constants.js +1 -1
- package/es/components/PanelLayout/index.js +1 -1
- package/es/components/PanelLayout/interface.js +1 -1
- package/es/components/PanelLayout/style/css.js +1 -1
- package/es/components/PanelLayout/style/index.js +1 -1
- package/es/components/Popconfirm/Popconfirm.js +6 -4
- package/es/components/Popconfirm/constants.js +1 -1
- package/es/components/Popconfirm/index.js +1 -1
- package/es/components/Popconfirm/interface.js +1 -1
- package/es/components/Popconfirm/style/css.js +1 -1
- package/es/components/Popconfirm/style/index.js +1 -1
- package/es/components/Portal/Portal.js +1 -1
- package/es/components/Portal/index.js +1 -1
- package/es/components/Portal/interface.js +1 -1
- package/es/components/ProForm/ProForm.js +1 -1
- package/es/components/ProForm/ProFormDependency.js +1 -1
- package/es/components/ProForm/ProFormGroup.js +1 -1
- package/es/components/ProForm/ProFormItem.js +4 -3
- package/es/components/ProForm/ProFormList.js +4 -2
- package/es/components/ProForm/SchemaForm.js +1 -1
- package/es/components/ProForm/Submitter.js +1 -1
- package/es/components/ProForm/constants.js +1 -1
- package/es/components/ProForm/context.js +1 -1
- package/es/components/ProForm/core/constants.js +1 -1
- package/es/components/ProForm/core/devWarning.js +1 -1
- package/es/components/ProForm/core/formStore.js +1 -1
- package/es/components/ProForm/core/hooks/useForm.js +4 -3
- package/es/components/ProForm/core/hooks/useFormCore.js +1 -1
- package/es/components/ProForm/core/index.js +1 -1
- package/es/components/ProForm/core/interface.js +1 -1
- package/es/components/ProForm/core/namePathType.js +1 -1
- package/es/components/ProForm/core/pathUtils.js +1 -1
- package/es/components/ProForm/core/runRules.js +3 -2
- package/es/components/ProForm/core/useFormItem.js +1 -1
- package/es/components/ProForm/core/validationError.js +1 -1
- package/es/components/ProForm/fields/ProFormCheckbox.js +1 -1
- package/es/components/ProForm/fields/ProFormCheckboxGroup.js +1 -1
- package/es/components/ProForm/fields/ProFormDatePicker.js +4 -3
- package/es/components/ProForm/fields/ProFormFieldSet.js +1 -1
- package/es/components/ProForm/fields/ProFormPassword.js +1 -1
- package/es/components/ProForm/fields/ProFormRadioGroup.js +1 -1
- package/es/components/ProForm/fields/ProFormSelect.js +1 -1
- package/es/components/ProForm/fields/ProFormSlider.js +1 -1
- package/es/components/ProForm/fields/ProFormSwitch.js +1 -1
- package/es/components/ProForm/fields/ProFormText.js +1 -1
- package/es/components/ProForm/fields/ProFormTextArea.js +1 -1
- package/es/components/ProForm/fields/ProFormUpload.js +1 -1
- package/es/components/ProForm/fields/createProFormField.js +1 -1
- package/es/components/ProForm/fields/index.js +1 -1
- package/es/components/ProForm/hooks/useFieldRequest.js +1 -1
- package/es/components/ProForm/hooks/useUrlSync.js +1 -1
- package/es/components/ProForm/index.js +1 -1
- package/es/components/ProForm/interface.js +1 -1
- package/es/components/ProForm/layouts/DialogForm.js +1 -1
- package/es/components/ProForm/layouts/DrawerForm.js +4 -2
- package/es/components/ProForm/layouts/QueryFilter.js +1 -1
- package/es/components/ProForm/layouts/index.js +1 -1
- package/es/components/ProForm/layouts/useOverlayForm.js +1 -1
- package/es/components/ProForm/style/css.js +1 -1
- package/es/components/ProForm/style/index.js +1 -1
- package/es/components/ProForm/utils.js +1 -1
- package/es/components/ProTable/ProTable.js +1 -1
- package/es/components/ProTable/constants.js +1 -1
- package/es/components/ProTable/core/genColumns.js +5 -4
- package/es/components/ProTable/core/genSearchFields.js +1 -1
- package/es/components/ProTable/core/useAwaitableReload.js +1 -1
- package/es/components/ProTable/core/utils.js +1 -1
- package/es/components/ProTable/index.js +1 -1
- package/es/components/ProTable/interface.js +1 -1
- package/es/components/ProTable/style/css.js +1 -1
- package/es/components/ProTable/style/index.js +1 -1
- package/es/components/ProTable/useFetchData.js +1 -1
- package/es/components/Progress/Progress.js +1 -1
- package/es/components/Progress/constants.js +1 -1
- package/es/components/Progress/index.js +1 -1
- package/es/components/Progress/interface.js +1 -1
- package/es/components/Progress/style/css.js +1 -1
- package/es/components/Progress/style/index.js +1 -1
- package/es/components/Radio/BaseRadio.js +1 -1
- package/es/components/Radio/Radio.js +1 -1
- package/es/components/Radio/RadioGroup.js +1 -1
- package/es/components/Radio/RadioGroupContext.js +1 -1
- package/es/components/Radio/constants.js +1 -1
- package/es/components/Radio/index.js +1 -1
- package/es/components/Radio/interface.js +1 -1
- package/es/components/Radio/style/css.js +1 -1
- package/es/components/Radio/style/index.js +1 -1
- package/es/components/ResizeObserver/Collection.js +1 -1
- package/es/components/ResizeObserver/ResizeObserver.js +1 -1
- package/es/components/ResizeObserver/SingleObserver/index.js +1 -1
- package/es/components/ResizeObserver/index.js +1 -1
- package/es/components/ResizeObserver/interface.js +1 -1
- package/es/components/ResizeObserver/useResizeObserver.js +1 -1
- package/es/components/ResizeObserver/utils/observerUtil.js +1 -1
- package/es/components/ResizeObserver/utils/reactUtil.js +1 -1
- package/es/components/Segment/Segment.js +1 -1
- package/es/components/Segment/index.js +1 -1
- package/es/components/Segment/interface.js +1 -1
- package/es/components/Segment/style/css.js +1 -1
- package/es/components/Segment/style/index.js +1 -1
- package/es/components/Select/Select.js +6 -4
- package/es/components/Select/SelectCustom.js +4 -2
- package/es/components/Select/SelectFieldShell.js +4 -2
- package/es/components/Select/SelectOptionContent.js +1 -1
- package/es/components/Select/SelectSearchControl.js +1 -1
- package/es/components/Select/SelectValueContent.js +1 -1
- package/es/components/Select/constants.js +1 -1
- package/es/components/Select/index.js +1 -1
- package/es/components/Select/interface.js +1 -1
- package/es/components/Select/style/css.js +1 -1
- package/es/components/Select/style/index.js +1 -1
- package/es/components/Select/useSelectShell.js +1 -1
- package/es/components/Select/utils.js +1 -1
- package/es/components/Skeleton/Skeleton.js +1 -1
- package/es/components/Skeleton/index.js +1 -1
- package/es/components/Skeleton/interface.js +1 -1
- package/es/components/Skeleton/style/css.js +1 -1
- package/es/components/Skeleton/style/index.js +1 -1
- package/es/components/Slider/Slider.js +1 -1
- package/es/components/Slider/index.js +1 -1
- package/es/components/Slider/interface.js +1 -1
- package/es/components/Slider/style/css.js +1 -1
- package/es/components/Slider/style/index.js +1 -1
- package/es/components/Space/Space.js +1 -1
- package/es/components/Space/constants.js +1 -1
- package/es/components/Space/index.js +1 -1
- package/es/components/Space/interface.js +1 -1
- package/es/components/Space/style/css.js +1 -1
- package/es/components/Space/style/index.js +1 -1
- package/es/components/Spinner/Spinner.js +1 -1
- package/es/components/Spinner/index.js +1 -1
- package/es/components/Spinner/interface.js +1 -1
- package/es/components/Spinner/style/css.js +1 -1
- package/es/components/Spinner/style/index.js +1 -1
- package/es/components/Step/Step.js +1 -1
- package/es/components/Step/constants.js +1 -1
- package/es/components/Step/index.js +1 -1
- package/es/components/Step/interface.js +1 -1
- package/es/components/Step/style/css.js +1 -1
- package/es/components/Step/style/index.js +1 -1
- package/es/components/Switch/Switch.js +1 -1
- package/es/components/Switch/constants.js +1 -1
- package/es/components/Switch/index.js +1 -1
- package/es/components/Switch/interface.js +1 -1
- package/es/components/Switch/style/css.js +1 -1
- package/es/components/Switch/style/index.js +1 -1
- package/es/components/Table/Table.js +1 -1
- package/es/components/Table/VirtualTable.js +1 -1
- package/es/components/Table/constants.js +1 -1
- package/es/components/Table/core/columnUtil.js +1 -1
- package/es/components/Table/core/useTableColumns.js +1 -1
- package/es/components/Table/core/useTableDataPipeline.js +1 -1
- package/es/components/Table/core/useTableExpand.js +1 -1
- package/es/components/Table/core/useTableSelection.js +1 -1
- package/es/components/Table/core/useTableSetup.js +4 -2
- package/es/components/Table/features/ExpandTrigger.js +4 -2
- package/es/components/Table/features/FilterTrigger.js +6 -4
- package/es/components/Table/features/SelectionColumn.js +6 -3
- package/es/components/Table/features/SortTrigger.js +1 -1
- package/es/components/Table/index.js +1 -1
- package/es/components/Table/interface.js +1 -1
- package/es/components/Table/internal/index.js +1 -1
- package/es/components/Table/internal/kernel/Body/BodyRow.js +1 -1
- package/es/components/Table/internal/kernel/Body/ExpandedRow.js +1 -1
- package/es/components/Table/internal/kernel/Body/MeasureCell.js +1 -1
- package/es/components/Table/internal/kernel/Body/MeasureRow.js +1 -1
- package/es/components/Table/internal/kernel/Body/index.js +1 -1
- package/es/components/Table/internal/kernel/Cell/index.js +1 -1
- package/es/components/Table/internal/kernel/Cell/useCellRender.js +1 -1
- package/es/components/Table/internal/kernel/Cell/useHoverState.js +1 -1
- package/es/components/Table/internal/kernel/ColGroup.js +1 -1
- package/es/components/Table/internal/kernel/FixedHolder/index.js +1 -1
- package/es/components/Table/internal/kernel/Footer/Cell.js +1 -1
- package/es/components/Table/internal/kernel/Footer/Row.js +1 -1
- package/es/components/Table/internal/kernel/Footer/Summary.js +1 -1
- package/es/components/Table/internal/kernel/Footer/SummaryContext.js +1 -1
- package/es/components/Table/internal/kernel/Footer/index.js +1 -1
- package/es/components/Table/internal/kernel/Header/Header.js +1 -1
- package/es/components/Table/internal/kernel/Header/HeaderRow.js +1 -1
- package/es/components/Table/internal/kernel/Panel/index.js +1 -1
- package/es/components/Table/internal/kernel/Table.js +1 -1
- package/es/components/Table/internal/kernel/VirtualTable/BodyGrid.js +1 -1
- package/es/components/Table/internal/kernel/VirtualTable/BodyLine.js +1 -1
- package/es/components/Table/internal/kernel/VirtualTable/VirtualCell.js +1 -1
- package/es/components/Table/internal/kernel/VirtualTable/context.js +1 -1
- package/es/components/Table/internal/kernel/VirtualTable/index.js +1 -1
- package/es/components/Table/internal/kernel/constant.js +1 -1
- package/es/components/Table/internal/kernel/context/PerfContext.js +1 -1
- package/es/components/Table/internal/kernel/context/TableContext.js +1 -1
- package/es/components/Table/internal/kernel/hooks/useColumns/index.js +1 -1
- package/es/components/Table/internal/kernel/hooks/useColumns/useWidthColumns.js +1 -1
- package/es/components/Table/internal/kernel/hooks/useExpand.js +1 -1
- package/es/components/Table/internal/kernel/hooks/useFixedInfo.js +1 -1
- package/es/components/Table/internal/kernel/hooks/useFlattenRecords.js +1 -1
- package/es/components/Table/internal/kernel/hooks/useFrame.js +1 -1
- package/es/components/Table/internal/kernel/hooks/useHover.js +1 -1
- package/es/components/Table/internal/kernel/hooks/useRenderTimes.js +1 -1
- package/es/components/Table/internal/kernel/hooks/useRowInfo.js +1 -1
- package/es/components/Table/internal/kernel/hooks/useSticky.js +1 -1
- package/es/components/Table/internal/kernel/hooks/useStickyOffsets.js +1 -1
- package/es/components/Table/internal/kernel/index.js +1 -1
- package/es/components/Table/internal/kernel/interface.js +1 -1
- package/es/components/Table/internal/kernel/namePathType.js +1 -1
- package/es/components/Table/internal/kernel/selector-context/Immutable.js +1 -1
- package/es/components/Table/internal/kernel/selector-context/context.js +1 -1
- package/es/components/Table/internal/kernel/selector-context/index.js +1 -1
- package/es/components/Table/internal/kernel/selector-context/isEqual.js +1 -1
- package/es/components/Table/internal/kernel/stickyScrollBar.js +1 -1
- package/es/components/Table/internal/kernel/sugar/Column.js +1 -1
- package/es/components/Table/internal/kernel/sugar/ColumnGroup.js +1 -1
- package/es/components/Table/internal/kernel/utils/dom/canUseDom.js +1 -1
- package/es/components/Table/internal/kernel/utils/dom/isVisible.js +1 -1
- package/es/components/Table/internal/kernel/utils/expandUtil.js +1 -1
- package/es/components/Table/internal/kernel/utils/fixUtil.js +1 -1
- package/es/components/Table/internal/kernel/utils/get.js +1 -1
- package/es/components/Table/internal/kernel/utils/getScrollBarSize.js +1 -1
- package/es/components/Table/internal/kernel/utils/legacyUtil.js +1 -1
- package/es/components/Table/internal/kernel/utils/offsetUtil.js +1 -1
- package/es/components/Table/internal/kernel/utils/pickAttrs.js +1 -1
- package/es/components/Table/internal/kernel/utils/useMemo.js +1 -1
- package/es/components/Table/internal/kernel/utils/valueUtil.js +1 -1
- package/es/components/Table/internal/kernel/utils/warning.js +1 -1
- package/es/components/Table/renderers/BodyCell.js +1 -1
- package/es/components/Table/renderers/CellContent.js +1 -1
- package/es/components/Table/renderers/EmptyState.js +4 -2
- package/es/components/Table/renderers/ExpandedRowContainer.js +1 -1
- package/es/components/Table/renderers/HeaderCell.js +1 -1
- package/es/components/Table/renderers/TableShell.js +1 -1
- package/es/components/Table/style/css.js +1 -1
- package/es/components/Table/style/index.js +1 -1
- package/es/components/Tabs/Tabs.js +1 -1
- package/es/components/Tabs/index.js +1 -1
- package/es/components/Tabs/interface.js +1 -1
- package/es/components/Tabs/style/css.js +1 -1
- package/es/components/Tabs/style/index.js +1 -1
- package/es/components/Tag/Tag.js +4 -2
- package/es/components/Tag/constants.js +1 -1
- package/es/components/Tag/index.js +1 -1
- package/es/components/Tag/interface.js +1 -1
- package/es/components/Tag/style/css.js +1 -1
- package/es/components/Tag/style/index.js +1 -1
- package/es/components/Tooltip/Tooltip.js +1 -1
- package/es/components/Tooltip/index.js +1 -1
- package/es/components/Tooltip/interface.js +1 -1
- package/es/components/Tooltip/style/css.js +1 -1
- package/es/components/Tooltip/style/index.js +1 -1
- package/es/components/Tour/Tour.js +1 -1
- package/es/components/Tour/index.js +1 -1
- package/es/components/Tour/interface.js +1 -1
- package/es/components/Trigger/Trigger.js +1 -1
- package/es/components/Trigger/index.js +1 -1
- package/es/components/Trigger/interface.js +1 -1
- package/es/components/Trigger/style/css.js +1 -1
- package/es/components/Trigger/style/index.js +1 -1
- package/es/components/Typography/Typography.js +1 -1
- package/es/components/Typography/constants.js +1 -1
- package/es/components/Typography/index.js +1 -1
- package/es/components/Typography/interface.js +1 -1
- package/es/components/Typography/render.js +7 -5
- package/es/components/Typography/style/css.js +1 -1
- package/es/components/Typography/style/index.js +1 -1
- package/es/components/Typography/useTypographyEnhancements.js +1 -1
- package/es/components/Typography/utils.js +1 -1
- package/es/components/Upload/Upload.js +4 -3
- package/es/components/Upload/UploadFileBar.js +4 -2
- package/es/components/Upload/index.js +1 -1
- package/es/components/Upload/interface.js +1 -1
- package/es/components/Upload/style/css.js +1 -1
- package/es/components/Upload/style/index.js +1 -1
- package/es/components/VirtualList/Filler.js +1 -1
- package/es/components/VirtualList/Item.js +1 -1
- package/es/components/VirtualList/ScrollBar.js +1 -1
- package/es/components/VirtualList/VirtualList.js +1 -1
- package/es/components/VirtualList/constants.js +1 -1
- package/es/components/VirtualList/hooks/useChildren.js +1 -1
- package/es/components/VirtualList/hooks/useDiffItem.js +1 -1
- package/es/components/VirtualList/hooks/useFrameWheel.js +1 -1
- package/es/components/VirtualList/hooks/useGetSize.js +1 -1
- package/es/components/VirtualList/hooks/useHeights.js +1 -1
- package/es/components/VirtualList/hooks/useMobileTouchMove.js +1 -1
- package/es/components/VirtualList/hooks/useOriginScroll.js +1 -1
- package/es/components/VirtualList/hooks/useScrollDrag.js +1 -1
- package/es/components/VirtualList/hooks/useScrollTo.js +1 -1
- package/es/components/VirtualList/index.js +1 -1
- package/es/components/VirtualList/interface.js +1 -1
- package/es/components/VirtualList/style/css.js +1 -1
- package/es/components/VirtualList/style/index.js +1 -1
- package/es/components/VirtualList/utils/CacheMap.js +1 -1
- package/es/components/VirtualList/utils/algorithmUtil.js +1 -1
- package/es/components/VirtualList/utils/isFirefox.js +1 -1
- package/es/components/VirtualList/utils/raf.js +1 -1
- package/es/components/VirtualList/utils/scrollbarUtil.js +1 -1
- package/es/hooks/index.js +1 -1
- package/es/hooks/useFloatingAnimation.js +1 -1
- package/es/index.css +1 -1
- package/es/index.d.ts +3 -0
- package/es/index.js +2 -1
- package/es/locale/en_US/business.d.ts +3 -0
- package/es/locale/en_US/business.js +70 -0
- package/es/locale/en_US/components.d.ts +3 -0
- package/es/locale/en_US/components.js +93 -0
- package/es/locale/en_US/index.d.ts +10 -0
- package/es/locale/en_US/index.js +14 -0
- package/es/locale/index.d.ts +4 -0
- package/es/locale/index.js +4 -0
- package/es/locale/interface.d.ts +207 -0
- package/es/locale/interface.js +15 -0
- package/es/locale/pt_BR/business.d.ts +3 -0
- package/es/locale/pt_BR/business.js +70 -0
- package/es/locale/pt_BR/components.d.ts +3 -0
- package/es/locale/pt_BR/components.js +104 -0
- package/es/locale/pt_BR/index.d.ts +8 -0
- package/es/locale/pt_BR/index.js +12 -0
- package/es/locale/zh_CN/business.d.ts +3 -0
- package/es/locale/zh_CN/business.js +70 -0
- package/es/locale/zh_CN/components.d.ts +3 -0
- package/es/locale/zh_CN/components.js +104 -0
- package/es/locale/zh_CN/index.d.ts +8 -0
- package/es/locale/zh_CN/index.js +12 -0
- package/es/stories/docs/ComponentDocsPage.js +1 -1
- package/es/stories/docs/componentDocMeta.js +1 -1
- package/es/utils/classnames.js +1 -1
- package/es/utils/clipboard.js +1 -1
- package/es/utils/devWarn.js +1 -1
- package/es/utils/ref.js +1 -1
- package/es/utils/uuid.js +1 -1
- package/lib/business/Dialog/BaseDialog/BaseDialog.js +1 -1
- package/lib/business/Dialog/BaseDialog/constants.js +1 -1
- package/lib/business/Dialog/BaseDialog/index.js +1 -1
- package/lib/business/Dialog/BaseDialog/interface.js +1 -1
- package/lib/business/Dialog/Descriptions/Descriptions.js +8 -1
- package/lib/business/Dialog/Descriptions/constants.js +1 -1
- package/lib/business/Dialog/Descriptions/index.js +1 -1
- package/lib/business/Dialog/Descriptions/interface.d.ts +2 -1
- package/lib/business/Dialog/Descriptions/interface.js +1 -1
- package/lib/business/Dialog/Descriptions/style/css.js +1 -1
- package/lib/business/Dialog/Descriptions/style/index.js +1 -1
- package/lib/business/Dialog/DetailsDialog/DetailsDialog.js +6 -4
- package/lib/business/Dialog/DetailsDialog/index.js +1 -1
- package/lib/business/Dialog/DetailsDialog/interface.js +1 -1
- package/lib/business/Dialog/DetailsDialog/style/css.js +1 -1
- package/lib/business/Dialog/DetailsDialog/style/index.js +1 -1
- package/lib/business/Dialog/FormDialog/FormDialog.js +1 -1
- package/lib/business/Dialog/FormDialog/index.js +1 -1
- package/lib/business/Dialog/FormDialog/interface.js +1 -1
- package/lib/business/Dialog/FormDialog/style/css.js +1 -1
- package/lib/business/Dialog/FormDialog/style/index.js +1 -1
- package/lib/business/Dialog/VerificationDialog/VerificationDialog.js +1 -1
- package/lib/business/Dialog/VerificationDialog/constants.js +1 -1
- package/lib/business/Dialog/VerificationDialog/index.js +1 -1
- package/lib/business/Dialog/VerificationDialog/interface.js +1 -1
- package/lib/business/Dialog/VerificationDialog/style/css.js +1 -1
- package/lib/business/Dialog/VerificationDialog/style/index.js +1 -1
- package/lib/business/Dialog/index.js +1 -1
- package/lib/business/Dialog/variants/DeleteDialog.js +1 -1
- package/lib/business/Dialog/variants/FailureDialog.js +1 -1
- package/lib/business/Dialog/variants/LoadingDialog.js +5 -6
- package/lib/business/Dialog/variants/PendingDialog.js +1 -1
- package/lib/business/Dialog/variants/SuccessDialog.js +1 -1
- package/lib/business/Dialog/variants/index.js +1 -1
- package/lib/business/Dialog/variants/style/css.js +1 -1
- package/lib/business/Dialog/variants/style/index.js +1 -1
- package/lib/business/FieldList/index.js +1 -1
- package/lib/business/FieldList/style/css.js +1 -1
- package/lib/business/FieldList/style/index.js +1 -1
- package/lib/business/Filter/Account/Account.js +42 -40
- package/lib/business/Filter/Account/index.js +1 -1
- package/lib/business/Filter/Account/interface.js +1 -1
- package/lib/business/Filter/Account/style/css.js +1 -1
- package/lib/business/Filter/Account/style/index.js +1 -1
- package/lib/business/Filter/Asset/Asset.js +43 -42
- package/lib/business/Filter/Asset/index.js +1 -1
- package/lib/business/Filter/Asset/interface.js +1 -1
- package/lib/business/Filter/Asset/style/css.js +1 -1
- package/lib/business/Filter/Asset/style/index.js +1 -1
- package/lib/business/Filter/DateRange/DateRange.js +36 -25
- package/lib/business/Filter/DateRange/index.js +1 -1
- package/lib/business/Filter/DateRange/interface.js +1 -1
- package/lib/business/Filter/DateRange/style/css.js +1 -1
- package/lib/business/Filter/DateRange/style/index.js +1 -1
- package/lib/business/Filter/Option/Option.js +33 -31
- package/lib/business/Filter/Option/index.js +1 -1
- package/lib/business/Filter/Option/interface.js +1 -1
- package/lib/business/Filter/Option/style/css.js +1 -1
- package/lib/business/Filter/Option/style/index.js +1 -1
- package/lib/business/Filter/index.js +1 -1
- package/lib/business/Form/PageForm/PageForm.js +1 -1
- package/lib/business/Form/PageForm/index.js +1 -1
- package/lib/business/Form/PageForm/interface.js +1 -1
- package/lib/business/Form/ResultForm/ResultForm.js +1 -1
- package/lib/business/Form/ResultForm/index.js +1 -1
- package/lib/business/Form/ResultForm/interface.js +1 -1
- package/lib/business/Form/index.js +1 -1
- package/lib/business/Form/variants/ExpiredForm.js +1 -1
- package/lib/business/Form/variants/FailureForm.js +1 -1
- package/lib/business/Form/variants/PendingForm.js +1 -1
- package/lib/business/Form/variants/SuccessForm.js +1 -1
- package/lib/business/Form/variants/index.js +1 -1
- package/lib/business/Select/Asset/AssetSelect.js +13 -13
- package/lib/business/Select/Asset/index.js +1 -1
- package/lib/business/Select/Asset/interface.js +1 -1
- package/lib/business/Select/Asset/style/css.js +1 -1
- package/lib/business/Select/Asset/style/index.js +1 -1
- package/lib/business/Select/Country/CountrySelect.js +13 -10
- package/lib/business/Select/Country/index.js +1 -1
- package/lib/business/Select/Country/interface.js +1 -1
- package/lib/business/Select/Country/style/css.js +1 -1
- package/lib/business/Select/Country/style/index.js +1 -1
- package/lib/business/Select/Currency/CurrencySelect.js +7 -5
- package/lib/business/Select/Currency/index.js +1 -1
- package/lib/business/Select/Currency/interface.js +1 -1
- package/lib/business/Select/Currency/style/css.js +1 -1
- package/lib/business/Select/Currency/style/index.js +1 -1
- package/lib/business/Select/Network/NetworkSelect.js +7 -5
- package/lib/business/Select/Network/index.js +1 -1
- package/lib/business/Select/Network/interface.js +1 -1
- package/lib/business/Select/Network/style/css.js +1 -1
- package/lib/business/Select/Network/style/index.js +1 -1
- package/lib/business/Select/PaymentMethod/PaymentMethodSelect.js +7 -5
- package/lib/business/Select/PaymentMethod/index.js +1 -1
- package/lib/business/Select/PaymentMethod/interface.js +1 -1
- package/lib/business/Select/PaymentMethod/style/css.js +1 -1
- package/lib/business/Select/PaymentMethod/style/index.js +1 -1
- package/lib/business/Select/index.js +1 -1
- package/lib/business/index.js +1 -1
- package/lib/business/shared/formCore/BaseProForm.js +1 -1
- package/lib/business/shared/formCore/useFormDomId.js +1 -1
- package/lib/business/shared/formCore/useRelayedFormRef.js +1 -1
- package/lib/business/shared/formCore/useSubmitAction.js +1 -1
- package/lib/components/Accordion/Accordion.js +1 -1
- package/lib/components/Accordion/constants.js +1 -1
- package/lib/components/Accordion/index.js +1 -1
- package/lib/components/Accordion/interface.js +1 -1
- package/lib/components/Accordion/style/css.js +1 -1
- package/lib/components/Accordion/style/index.js +1 -1
- package/lib/components/ActionBar/ActionBar.js +1 -1
- package/lib/components/ActionBar/constants.js +1 -1
- package/lib/components/ActionBar/index.js +1 -1
- package/lib/components/ActionBar/interface.js +1 -1
- package/lib/components/ActionBar/style/css.js +1 -1
- package/lib/components/ActionBar/style/index.js +1 -1
- package/lib/components/Alert/Alert.js +4 -3
- package/lib/components/Alert/index.js +1 -1
- package/lib/components/Alert/interface.js +1 -1
- package/lib/components/Alert/style/css.js +1 -1
- package/lib/components/Alert/style/index.js +1 -1
- package/lib/components/Button/Button.js +1 -1
- package/lib/components/Button/constants.js +1 -1
- package/lib/components/Button/index.js +1 -1
- package/lib/components/Button/interface.js +1 -1
- package/lib/components/Button/style/css.js +1 -1
- package/lib/components/Button/style/index.js +1 -1
- package/lib/components/Calendar/Calendar.js +17 -4
- package/lib/components/Calendar/constants.js +1 -1
- package/lib/components/Calendar/index.js +1 -1
- package/lib/components/Calendar/interface.js +1 -1
- package/lib/components/Calendar/style/css.js +1 -1
- package/lib/components/Calendar/style/index.js +1 -1
- package/lib/components/Carousel/Carousel.js +1 -1
- package/lib/components/Carousel/index.js +1 -1
- package/lib/components/Carousel/interface.js +1 -1
- package/lib/components/Carousel/style/css.js +1 -1
- package/lib/components/Carousel/style/index.js +1 -1
- package/lib/components/Cell/Cell.js +1 -1
- package/lib/components/Cell/index.js +1 -1
- package/lib/components/Cell/interface.js +1 -1
- package/lib/components/Cell/style/css.js +1 -1
- package/lib/components/Cell/style/index.js +1 -1
- package/lib/components/Checkbox/BaseCheckbox.js +1 -1
- package/lib/components/Checkbox/Checkbox.js +1 -1
- package/lib/components/Checkbox/CheckboxGroup.js +1 -1
- package/lib/components/Checkbox/CheckboxGroupContext.js +1 -1
- package/lib/components/Checkbox/constants.js +1 -1
- package/lib/components/Checkbox/index.js +1 -1
- package/lib/components/Checkbox/interface.js +1 -1
- package/lib/components/Checkbox/style/css.js +1 -1
- package/lib/components/Checkbox/style/index.js +1 -1
- package/lib/components/CoachMark/CoachMark.js +1 -1
- package/lib/components/CoachMark/index.js +1 -1
- package/lib/components/CoachMark/interface.js +1 -1
- package/lib/components/CoachMark/style/css.js +1 -1
- package/lib/components/CoachMark/style/index.js +1 -1
- package/lib/components/ConfigProvider/ConfigProvider.d.ts +2 -0
- package/lib/components/ConfigProvider/ConfigProvider.js +50 -0
- package/lib/components/ConfigProvider/context.d.ts +34 -0
- package/lib/components/ConfigProvider/context.js +73 -0
- package/lib/components/ConfigProvider/index.d.ts +4 -0
- package/lib/components/ConfigProvider/index.js +44 -0
- package/lib/components/ConfigProvider/interface.d.ts +11 -0
- package/lib/components/ConfigProvider/interface.js +6 -0
- package/lib/components/Copy/Clipboard.js +1 -1
- package/lib/components/Copy/Copy.js +4 -2
- package/lib/components/Copy/index.js +1 -1
- package/lib/components/Copy/interface.js +1 -1
- package/lib/components/Copy/style/css.js +1 -1
- package/lib/components/Copy/style/index.js +1 -1
- package/lib/components/Dialog/Dialog.js +7 -3
- package/lib/components/Dialog/DialogContent.js +1 -1
- package/lib/components/Dialog/DialogControls.d.ts +3 -1
- package/lib/components/Dialog/DialogControls.js +3 -2
- package/lib/components/Dialog/className.js +1 -1
- package/lib/components/Dialog/constants.js +1 -1
- package/lib/components/Dialog/hooks.js +1 -1
- package/lib/components/Dialog/index.js +1 -1
- package/lib/components/Dialog/interface.js +1 -1
- package/lib/components/Dialog/style/css.js +1 -1
- package/lib/components/Dialog/style/index.js +1 -1
- package/lib/components/Dialog/types.js +1 -1
- package/lib/components/Divider/Divider.js +1 -1
- package/lib/components/Divider/constants.js +1 -1
- package/lib/components/Divider/index.js +1 -1
- package/lib/components/Divider/interface.js +1 -1
- package/lib/components/Divider/style/css.js +1 -1
- package/lib/components/Divider/style/index.js +1 -1
- package/lib/components/Drawer/Drawer.js +5 -3
- package/lib/components/Drawer/constants.js +1 -1
- package/lib/components/Drawer/hooks/index.js +1 -1
- package/lib/components/Drawer/hooks/useBodyScrollLock.js +1 -1
- package/lib/components/Drawer/hooks/useDialogFocus.js +1 -1
- package/lib/components/Drawer/hooks/useDrawerTransition.js +1 -1
- package/lib/components/Drawer/hooks/useEscapeClose.js +1 -1
- package/lib/components/Drawer/index.js +1 -1
- package/lib/components/Drawer/interface.js +1 -1
- package/lib/components/Drawer/style/css.js +1 -1
- package/lib/components/Drawer/style/index.js +1 -1
- package/lib/components/Dropdown/Dropdown.js +1 -1
- package/lib/components/Dropdown/index.js +1 -1
- package/lib/components/Dropdown/interface.js +1 -1
- package/lib/components/Dropdown/style/css.js +1 -1
- package/lib/components/Dropdown/style/index.js +1 -1
- package/lib/components/Empty/Empty.js +1 -1
- package/lib/components/Empty/index.js +1 -1
- package/lib/components/Empty/interface.js +1 -1
- package/lib/components/Empty/style/css.js +1 -1
- package/lib/components/Empty/style/index.js +1 -1
- package/lib/components/Filter/Filter.js +37 -40
- package/lib/components/Filter/index.js +1 -1
- package/lib/components/Filter/interface.js +1 -1
- package/lib/components/Filter/style/css.js +1 -1
- package/lib/components/Filter/style/index.js +1 -1
- package/lib/components/Flex/Flex.js +1 -1
- package/lib/components/Flex/constants.js +1 -1
- package/lib/components/Flex/index.js +1 -1
- package/lib/components/Flex/interface.js +1 -1
- package/lib/components/Flex/style/css.js +1 -1
- package/lib/components/Flex/style/index.js +1 -1
- package/lib/components/FormLayout/FormLayout.js +1 -1
- package/lib/components/FormLayout/config.js +1 -1
- package/lib/components/FormLayout/context.js +1 -1
- package/lib/components/FormLayout/index.js +1 -1
- package/lib/components/FormLayout/interface.js +1 -1
- package/lib/components/FormLayout/style/css.js +1 -1
- package/lib/components/FormLayout/style/index.js +1 -1
- package/lib/components/Grid/Col.js +1 -1
- package/lib/components/Grid/Grid.js +1 -1
- package/lib/components/Grid/Row.js +1 -1
- package/lib/components/Grid/constants.js +1 -1
- package/lib/components/Grid/helper.js +1 -1
- package/lib/components/Grid/index.js +1 -1
- package/lib/components/Grid/interface.js +1 -1
- package/lib/components/Grid/style/css.js +1 -1
- package/lib/components/Grid/style/index.js +1 -1
- package/lib/components/Icons/Icons.js +1 -1
- package/lib/components/Icons/Illustrations.js +1 -1
- package/lib/components/Icons/Logo.js +1 -1
- package/lib/components/Icons/SVGs.js +1 -1
- package/lib/components/Icons/Wrapper.js +1 -1
- package/lib/components/Icons/constants.js +1 -1
- package/lib/components/Icons/index.js +1 -1
- package/lib/components/Icons/interface.js +1 -1
- package/lib/components/Icons/style/css.js +1 -1
- package/lib/components/Icons/style/index.js +1 -1
- package/lib/components/Input/Amount/Amount.js +4 -2
- package/lib/components/Input/Amount/helper.js +1 -1
- package/lib/components/Input/Amount/index.js +1 -1
- package/lib/components/Input/Amount/style/css.js +1 -1
- package/lib/components/Input/Amount/style/index.js +1 -1
- package/lib/components/Input/FieldShell/FieldShell.js +4 -2
- package/lib/components/Input/FieldShell/index.js +1 -1
- package/lib/components/Input/Input/Input.js +4 -2
- package/lib/components/Input/Input/index.js +1 -1
- package/lib/components/Input/Mask/Mask.js +1 -1
- package/lib/components/Input/Mask/index.js +1 -1
- package/lib/components/Input/OTP/OTP.js +1 -1
- package/lib/components/Input/OTP/index.js +1 -1
- package/lib/components/Input/Password/Password.js +4 -2
- package/lib/components/Input/Password/index.js +1 -1
- package/lib/components/Input/Search/Search.js +4 -2
- package/lib/components/Input/Search/index.js +1 -1
- package/lib/components/Input/TextArea/TextArea.js +1 -1
- package/lib/components/Input/TextArea/index.js +1 -1
- package/lib/components/Input/Trade/Trade.js +4 -2
- package/lib/components/Input/Trade/index.js +1 -1
- package/lib/components/Input/constants.js +1 -1
- package/lib/components/Input/index.js +1 -1
- package/lib/components/Input/interface.js +1 -1
- package/lib/components/Input/style/css.js +1 -1
- package/lib/components/Input/style/index.js +1 -1
- package/lib/components/Input/useAmountInput.js +1 -1
- package/lib/components/Input/useSyncRef.js +1 -1
- package/lib/components/Link/Link.js +1 -1
- package/lib/components/Link/constants.js +1 -1
- package/lib/components/Link/index.js +1 -1
- package/lib/components/Link/interface.js +1 -1
- package/lib/components/Link/style/css.js +1 -1
- package/lib/components/Link/style/index.js +1 -1
- package/lib/components/Navigation/Nav.js +1 -1
- package/lib/components/Navigation/Navigation.js +1 -1
- package/lib/components/Navigation/NavigationLogo.js +1 -1
- package/lib/components/Navigation/NavigationStepper.js +4 -3
- package/lib/components/Navigation/index.js +1 -1
- package/lib/components/Navigation/interface.js +1 -1
- package/lib/components/Navigation/style/css.js +1 -1
- package/lib/components/Navigation/style/index.js +1 -1
- package/lib/components/Notification/Notification.js +4 -2
- package/lib/components/Notification/NotificationStatic.js +1 -1
- package/lib/components/Notification/constants.js +1 -1
- package/lib/components/Notification/index.js +1 -1
- package/lib/components/Notification/interface.js +1 -1
- package/lib/components/Notification/style/css.js +1 -1
- package/lib/components/Notification/style/index.js +1 -1
- package/lib/components/Pagination/Pagination.js +8 -5
- package/lib/components/Pagination/constants.js +1 -1
- package/lib/components/Pagination/index.js +1 -1
- package/lib/components/Pagination/interface.js +1 -1
- package/lib/components/Pagination/style/css.js +1 -1
- package/lib/components/Pagination/style/index.js +1 -1
- package/lib/components/Pagination/usePagination.js +1 -1
- package/lib/components/PanelLayout/PanelLayout.js +4 -2
- package/lib/components/PanelLayout/constants.js +1 -1
- package/lib/components/PanelLayout/index.js +1 -1
- package/lib/components/PanelLayout/interface.js +1 -1
- package/lib/components/PanelLayout/style/css.js +1 -1
- package/lib/components/PanelLayout/style/index.js +1 -1
- package/lib/components/Popconfirm/Popconfirm.js +5 -3
- package/lib/components/Popconfirm/constants.js +1 -1
- package/lib/components/Popconfirm/index.js +1 -1
- package/lib/components/Popconfirm/interface.js +1 -1
- package/lib/components/Popconfirm/style/css.js +1 -1
- package/lib/components/Popconfirm/style/index.js +1 -1
- package/lib/components/Portal/Portal.js +1 -1
- package/lib/components/Portal/index.js +1 -1
- package/lib/components/Portal/interface.js +1 -1
- package/lib/components/ProForm/ProForm.js +1 -1
- package/lib/components/ProForm/ProFormDependency.js +1 -1
- package/lib/components/ProForm/ProFormGroup.js +1 -1
- package/lib/components/ProForm/ProFormItem.js +4 -3
- package/lib/components/ProForm/ProFormList.js +4 -2
- package/lib/components/ProForm/SchemaForm.js +1 -1
- package/lib/components/ProForm/Submitter.js +1 -1
- package/lib/components/ProForm/constants.js +1 -1
- package/lib/components/ProForm/context.js +1 -1
- package/lib/components/ProForm/core/constants.js +1 -1
- package/lib/components/ProForm/core/devWarning.js +1 -1
- package/lib/components/ProForm/core/formStore.js +1 -1
- package/lib/components/ProForm/core/hooks/useForm.js +4 -3
- package/lib/components/ProForm/core/hooks/useFormCore.js +1 -1
- package/lib/components/ProForm/core/index.js +1 -1
- package/lib/components/ProForm/core/interface.js +1 -1
- package/lib/components/ProForm/core/namePathType.js +1 -1
- package/lib/components/ProForm/core/pathUtils.js +1 -1
- package/lib/components/ProForm/core/runRules.js +3 -2
- package/lib/components/ProForm/core/useFormItem.js +1 -1
- package/lib/components/ProForm/core/validationError.js +1 -1
- package/lib/components/ProForm/fields/ProFormCheckbox.js +1 -1
- package/lib/components/ProForm/fields/ProFormCheckboxGroup.js +1 -1
- package/lib/components/ProForm/fields/ProFormDatePicker.js +4 -3
- package/lib/components/ProForm/fields/ProFormFieldSet.js +1 -1
- package/lib/components/ProForm/fields/ProFormPassword.js +1 -1
- package/lib/components/ProForm/fields/ProFormRadioGroup.js +1 -1
- package/lib/components/ProForm/fields/ProFormSelect.js +1 -1
- package/lib/components/ProForm/fields/ProFormSlider.js +1 -1
- package/lib/components/ProForm/fields/ProFormSwitch.js +1 -1
- package/lib/components/ProForm/fields/ProFormText.js +1 -1
- package/lib/components/ProForm/fields/ProFormTextArea.js +1 -1
- package/lib/components/ProForm/fields/ProFormUpload.js +1 -1
- package/lib/components/ProForm/fields/createProFormField.js +1 -1
- package/lib/components/ProForm/fields/index.js +1 -1
- package/lib/components/ProForm/hooks/useFieldRequest.js +1 -1
- package/lib/components/ProForm/hooks/useUrlSync.js +1 -1
- package/lib/components/ProForm/index.js +1 -1
- package/lib/components/ProForm/interface.js +1 -1
- package/lib/components/ProForm/layouts/DialogForm.js +1 -1
- package/lib/components/ProForm/layouts/DrawerForm.js +4 -2
- package/lib/components/ProForm/layouts/QueryFilter.js +1 -1
- package/lib/components/ProForm/layouts/index.js +1 -1
- package/lib/components/ProForm/layouts/useOverlayForm.js +1 -1
- package/lib/components/ProForm/style/css.js +1 -1
- package/lib/components/ProForm/style/index.js +1 -1
- package/lib/components/ProForm/utils.js +1 -1
- package/lib/components/ProTable/ProTable.js +1 -1
- package/lib/components/ProTable/constants.js +1 -1
- package/lib/components/ProTable/core/genColumns.js +5 -4
- package/lib/components/ProTable/core/genSearchFields.js +1 -1
- package/lib/components/ProTable/core/useAwaitableReload.js +1 -1
- package/lib/components/ProTable/core/utils.js +1 -1
- package/lib/components/ProTable/index.js +1 -1
- package/lib/components/ProTable/interface.js +1 -1
- package/lib/components/ProTable/style/css.js +1 -1
- package/lib/components/ProTable/style/index.js +1 -1
- package/lib/components/ProTable/useFetchData.js +1 -1
- package/lib/components/Progress/Progress.js +1 -1
- package/lib/components/Progress/constants.js +1 -1
- package/lib/components/Progress/index.js +1 -1
- package/lib/components/Progress/interface.js +1 -1
- package/lib/components/Progress/style/css.js +1 -1
- package/lib/components/Progress/style/index.js +1 -1
- package/lib/components/Radio/BaseRadio.js +1 -1
- package/lib/components/Radio/Radio.js +1 -1
- package/lib/components/Radio/RadioGroup.js +1 -1
- package/lib/components/Radio/RadioGroupContext.js +1 -1
- package/lib/components/Radio/constants.js +1 -1
- package/lib/components/Radio/index.js +1 -1
- package/lib/components/Radio/interface.js +1 -1
- package/lib/components/Radio/style/css.js +1 -1
- package/lib/components/Radio/style/index.js +1 -1
- package/lib/components/ResizeObserver/Collection.js +1 -1
- package/lib/components/ResizeObserver/ResizeObserver.js +1 -1
- package/lib/components/ResizeObserver/SingleObserver/index.js +1 -1
- package/lib/components/ResizeObserver/index.js +1 -1
- package/lib/components/ResizeObserver/interface.js +1 -1
- package/lib/components/ResizeObserver/useResizeObserver.js +1 -1
- package/lib/components/ResizeObserver/utils/observerUtil.js +1 -1
- package/lib/components/ResizeObserver/utils/reactUtil.js +1 -1
- package/lib/components/Segment/Segment.js +1 -1
- package/lib/components/Segment/index.js +1 -1
- package/lib/components/Segment/interface.js +1 -1
- package/lib/components/Segment/style/css.js +1 -1
- package/lib/components/Segment/style/index.js +1 -1
- package/lib/components/Select/Select.js +6 -4
- package/lib/components/Select/SelectCustom.js +4 -2
- package/lib/components/Select/SelectFieldShell.js +4 -2
- package/lib/components/Select/SelectOptionContent.js +1 -1
- package/lib/components/Select/SelectSearchControl.js +1 -1
- package/lib/components/Select/SelectValueContent.js +1 -1
- package/lib/components/Select/constants.js +1 -1
- package/lib/components/Select/index.js +1 -1
- package/lib/components/Select/interface.js +1 -1
- package/lib/components/Select/style/css.js +1 -1
- package/lib/components/Select/style/index.js +1 -1
- package/lib/components/Select/useSelectShell.js +1 -1
- package/lib/components/Select/utils.js +1 -1
- package/lib/components/Skeleton/Skeleton.js +1 -1
- package/lib/components/Skeleton/index.js +1 -1
- package/lib/components/Skeleton/interface.js +1 -1
- package/lib/components/Skeleton/style/css.js +1 -1
- package/lib/components/Skeleton/style/index.js +1 -1
- package/lib/components/Slider/Slider.js +1 -1
- package/lib/components/Slider/index.js +1 -1
- package/lib/components/Slider/interface.js +1 -1
- package/lib/components/Slider/style/css.js +1 -1
- package/lib/components/Slider/style/index.js +1 -1
- package/lib/components/Space/Space.js +1 -1
- package/lib/components/Space/constants.js +1 -1
- package/lib/components/Space/index.js +1 -1
- package/lib/components/Space/interface.js +1 -1
- package/lib/components/Space/style/css.js +1 -1
- package/lib/components/Space/style/index.js +1 -1
- package/lib/components/Spinner/Spinner.js +1 -1
- package/lib/components/Spinner/index.js +1 -1
- package/lib/components/Spinner/interface.js +1 -1
- package/lib/components/Spinner/style/css.js +1 -1
- package/lib/components/Spinner/style/index.js +1 -1
- package/lib/components/Step/Step.js +1 -1
- package/lib/components/Step/constants.js +1 -1
- package/lib/components/Step/index.js +1 -1
- package/lib/components/Step/interface.js +1 -1
- package/lib/components/Step/style/css.js +1 -1
- package/lib/components/Step/style/index.js +1 -1
- package/lib/components/Switch/Switch.js +1 -1
- package/lib/components/Switch/constants.js +1 -1
- package/lib/components/Switch/index.js +1 -1
- package/lib/components/Switch/interface.js +1 -1
- package/lib/components/Switch/style/css.js +1 -1
- package/lib/components/Switch/style/index.js +1 -1
- package/lib/components/Table/Table.js +1 -1
- package/lib/components/Table/VirtualTable.js +1 -1
- package/lib/components/Table/constants.js +1 -1
- package/lib/components/Table/core/columnUtil.js +1 -1
- package/lib/components/Table/core/useTableColumns.js +1 -1
- package/lib/components/Table/core/useTableDataPipeline.js +1 -1
- package/lib/components/Table/core/useTableExpand.js +1 -1
- package/lib/components/Table/core/useTableSelection.js +1 -1
- package/lib/components/Table/core/useTableSetup.js +4 -2
- package/lib/components/Table/features/ExpandTrigger.js +4 -2
- package/lib/components/Table/features/FilterTrigger.js +6 -4
- package/lib/components/Table/features/SelectionColumn.js +6 -3
- package/lib/components/Table/features/SortTrigger.js +1 -1
- package/lib/components/Table/index.js +1 -1
- package/lib/components/Table/interface.js +1 -1
- package/lib/components/Table/internal/index.js +1 -1
- package/lib/components/Table/internal/kernel/Body/BodyRow.js +1 -1
- package/lib/components/Table/internal/kernel/Body/ExpandedRow.js +1 -1
- package/lib/components/Table/internal/kernel/Body/MeasureCell.js +1 -1
- package/lib/components/Table/internal/kernel/Body/MeasureRow.js +1 -1
- package/lib/components/Table/internal/kernel/Body/index.js +1 -1
- package/lib/components/Table/internal/kernel/Cell/index.js +1 -1
- package/lib/components/Table/internal/kernel/Cell/useCellRender.js +1 -1
- package/lib/components/Table/internal/kernel/Cell/useHoverState.js +1 -1
- package/lib/components/Table/internal/kernel/ColGroup.js +1 -1
- package/lib/components/Table/internal/kernel/FixedHolder/index.js +1 -1
- package/lib/components/Table/internal/kernel/Footer/Cell.js +1 -1
- package/lib/components/Table/internal/kernel/Footer/Row.js +1 -1
- package/lib/components/Table/internal/kernel/Footer/Summary.js +1 -1
- package/lib/components/Table/internal/kernel/Footer/SummaryContext.js +1 -1
- package/lib/components/Table/internal/kernel/Footer/index.js +1 -1
- package/lib/components/Table/internal/kernel/Header/Header.js +1 -1
- package/lib/components/Table/internal/kernel/Header/HeaderRow.js +1 -1
- package/lib/components/Table/internal/kernel/Panel/index.js +1 -1
- package/lib/components/Table/internal/kernel/Table.js +1 -1
- package/lib/components/Table/internal/kernel/VirtualTable/BodyGrid.js +1 -1
- package/lib/components/Table/internal/kernel/VirtualTable/BodyLine.js +1 -1
- package/lib/components/Table/internal/kernel/VirtualTable/VirtualCell.js +1 -1
- package/lib/components/Table/internal/kernel/VirtualTable/context.js +1 -1
- package/lib/components/Table/internal/kernel/VirtualTable/index.js +1 -1
- package/lib/components/Table/internal/kernel/constant.js +1 -1
- package/lib/components/Table/internal/kernel/context/PerfContext.js +1 -1
- package/lib/components/Table/internal/kernel/context/TableContext.js +1 -1
- package/lib/components/Table/internal/kernel/hooks/useColumns/index.js +1 -1
- package/lib/components/Table/internal/kernel/hooks/useColumns/useWidthColumns.js +1 -1
- package/lib/components/Table/internal/kernel/hooks/useExpand.js +1 -1
- package/lib/components/Table/internal/kernel/hooks/useFixedInfo.js +1 -1
- package/lib/components/Table/internal/kernel/hooks/useFlattenRecords.js +1 -1
- package/lib/components/Table/internal/kernel/hooks/useFrame.js +1 -1
- package/lib/components/Table/internal/kernel/hooks/useHover.js +1 -1
- package/lib/components/Table/internal/kernel/hooks/useRenderTimes.js +1 -1
- package/lib/components/Table/internal/kernel/hooks/useRowInfo.js +1 -1
- package/lib/components/Table/internal/kernel/hooks/useSticky.js +1 -1
- package/lib/components/Table/internal/kernel/hooks/useStickyOffsets.js +1 -1
- package/lib/components/Table/internal/kernel/index.js +1 -1
- package/lib/components/Table/internal/kernel/interface.js +1 -1
- package/lib/components/Table/internal/kernel/namePathType.js +1 -1
- package/lib/components/Table/internal/kernel/selector-context/Immutable.js +1 -1
- package/lib/components/Table/internal/kernel/selector-context/context.js +1 -1
- package/lib/components/Table/internal/kernel/selector-context/index.js +1 -1
- package/lib/components/Table/internal/kernel/selector-context/isEqual.js +1 -1
- package/lib/components/Table/internal/kernel/stickyScrollBar.js +1 -1
- package/lib/components/Table/internal/kernel/sugar/Column.js +1 -1
- package/lib/components/Table/internal/kernel/sugar/ColumnGroup.js +1 -1
- package/lib/components/Table/internal/kernel/utils/dom/canUseDom.js +1 -1
- package/lib/components/Table/internal/kernel/utils/dom/isVisible.js +1 -1
- package/lib/components/Table/internal/kernel/utils/expandUtil.js +1 -1
- package/lib/components/Table/internal/kernel/utils/fixUtil.js +1 -1
- package/lib/components/Table/internal/kernel/utils/get.js +1 -1
- package/lib/components/Table/internal/kernel/utils/getScrollBarSize.js +1 -1
- package/lib/components/Table/internal/kernel/utils/legacyUtil.js +1 -1
- package/lib/components/Table/internal/kernel/utils/offsetUtil.js +1 -1
- package/lib/components/Table/internal/kernel/utils/pickAttrs.js +1 -1
- package/lib/components/Table/internal/kernel/utils/useMemo.js +1 -1
- package/lib/components/Table/internal/kernel/utils/valueUtil.js +1 -1
- package/lib/components/Table/internal/kernel/utils/warning.js +1 -1
- package/lib/components/Table/renderers/BodyCell.js +1 -1
- package/lib/components/Table/renderers/CellContent.js +1 -1
- package/lib/components/Table/renderers/EmptyState.js +4 -2
- package/lib/components/Table/renderers/ExpandedRowContainer.js +1 -1
- package/lib/components/Table/renderers/HeaderCell.js +1 -1
- package/lib/components/Table/renderers/TableShell.js +1 -1
- package/lib/components/Table/style/css.js +1 -1
- package/lib/components/Table/style/index.js +1 -1
- package/lib/components/Tabs/Tabs.js +1 -1
- package/lib/components/Tabs/index.js +1 -1
- package/lib/components/Tabs/interface.js +1 -1
- package/lib/components/Tabs/style/css.js +1 -1
- package/lib/components/Tabs/style/index.js +1 -1
- package/lib/components/Tag/Tag.js +4 -2
- package/lib/components/Tag/constants.js +1 -1
- package/lib/components/Tag/index.js +1 -1
- package/lib/components/Tag/interface.js +1 -1
- package/lib/components/Tag/style/css.js +1 -1
- package/lib/components/Tag/style/index.js +1 -1
- package/lib/components/Tooltip/Tooltip.js +1 -1
- package/lib/components/Tooltip/index.js +1 -1
- package/lib/components/Tooltip/interface.js +1 -1
- package/lib/components/Tooltip/style/css.js +1 -1
- package/lib/components/Tooltip/style/index.js +1 -1
- package/lib/components/Tour/Tour.js +1 -1
- package/lib/components/Tour/index.js +1 -1
- package/lib/components/Tour/interface.js +1 -1
- package/lib/components/Trigger/Trigger.js +1 -1
- package/lib/components/Trigger/index.js +1 -1
- package/lib/components/Trigger/interface.js +1 -1
- package/lib/components/Trigger/style/css.js +1 -1
- package/lib/components/Trigger/style/index.js +1 -1
- package/lib/components/Typography/Typography.js +1 -1
- package/lib/components/Typography/constants.js +1 -1
- package/lib/components/Typography/index.js +1 -1
- package/lib/components/Typography/interface.js +1 -1
- package/lib/components/Typography/render.js +7 -5
- package/lib/components/Typography/style/css.js +1 -1
- package/lib/components/Typography/style/index.js +1 -1
- package/lib/components/Typography/useTypographyEnhancements.js +1 -1
- package/lib/components/Typography/utils.js +1 -1
- package/lib/components/Upload/Upload.js +4 -3
- package/lib/components/Upload/UploadFileBar.js +4 -2
- package/lib/components/Upload/index.js +1 -1
- package/lib/components/Upload/interface.js +1 -1
- package/lib/components/Upload/style/css.js +1 -1
- package/lib/components/Upload/style/index.js +1 -1
- package/lib/components/VirtualList/Filler.js +1 -1
- package/lib/components/VirtualList/Item.js +1 -1
- package/lib/components/VirtualList/ScrollBar.js +1 -1
- package/lib/components/VirtualList/VirtualList.js +1 -1
- package/lib/components/VirtualList/constants.js +1 -1
- package/lib/components/VirtualList/hooks/useChildren.js +1 -1
- package/lib/components/VirtualList/hooks/useDiffItem.js +1 -1
- package/lib/components/VirtualList/hooks/useFrameWheel.js +1 -1
- package/lib/components/VirtualList/hooks/useGetSize.js +1 -1
- package/lib/components/VirtualList/hooks/useHeights.js +1 -1
- package/lib/components/VirtualList/hooks/useMobileTouchMove.js +1 -1
- package/lib/components/VirtualList/hooks/useOriginScroll.js +1 -1
- package/lib/components/VirtualList/hooks/useScrollDrag.js +1 -1
- package/lib/components/VirtualList/hooks/useScrollTo.js +1 -1
- package/lib/components/VirtualList/index.js +1 -1
- package/lib/components/VirtualList/interface.js +1 -1
- package/lib/components/VirtualList/style/css.js +1 -1
- package/lib/components/VirtualList/style/index.js +1 -1
- package/lib/components/VirtualList/utils/CacheMap.js +1 -1
- package/lib/components/VirtualList/utils/algorithmUtil.js +1 -1
- package/lib/components/VirtualList/utils/isFirefox.js +1 -1
- package/lib/components/VirtualList/utils/raf.js +1 -1
- package/lib/components/VirtualList/utils/scrollbarUtil.js +1 -1
- package/lib/hooks/index.js +1 -1
- package/lib/hooks/useFloatingAnimation.js +1 -1
- package/lib/index.css +1 -1
- package/lib/index.d.ts +3 -0
- package/lib/index.js +8 -1
- package/lib/locale/en_US/business.d.ts +3 -0
- package/lib/locale/en_US/business.js +76 -0
- package/lib/locale/en_US/components.d.ts +3 -0
- package/lib/locale/en_US/components.js +99 -0
- package/lib/locale/en_US/index.d.ts +10 -0
- package/lib/locale/en_US/index.js +21 -0
- package/lib/locale/index.d.ts +4 -0
- package/lib/locale/index.js +28 -0
- package/lib/locale/interface.d.ts +207 -0
- package/lib/locale/interface.js +6 -0
- package/lib/locale/pt_BR/business.d.ts +3 -0
- package/lib/locale/pt_BR/business.js +76 -0
- package/lib/locale/pt_BR/components.d.ts +3 -0
- package/lib/locale/pt_BR/components.js +110 -0
- package/lib/locale/pt_BR/index.d.ts +8 -0
- package/lib/locale/pt_BR/index.js +19 -0
- package/lib/locale/zh_CN/business.d.ts +3 -0
- package/lib/locale/zh_CN/business.js +76 -0
- package/lib/locale/zh_CN/components.d.ts +3 -0
- package/lib/locale/zh_CN/components.js +110 -0
- package/lib/locale/zh_CN/index.d.ts +8 -0
- package/lib/locale/zh_CN/index.js +19 -0
- package/lib/stories/docs/ComponentDocsPage.js +1 -1
- package/lib/stories/docs/componentDocMeta.js +1 -1
- package/lib/utils/classnames.js +1 -1
- package/lib/utils/clipboard.js +1 -1
- package/lib/utils/devWarn.js +1 -1
- package/lib/utils/ref.js +1 -1
- package/lib/utils/uuid.js +1 -1
- package/package.json +26 -1
- package/scripts/mcp-server/examples.generated.json +30 -0
- package/scripts/mcp-server/index.generated.json +112 -0
|
@@ -42,6 +42,7 @@ var __rest = this && this.__rest || function (s, e) {
|
|
|
42
42
|
}
|
|
43
43
|
return t;
|
|
44
44
|
};
|
|
45
|
+
import { getLocale } from '../../../ConfigProvider/context';
|
|
45
46
|
import { useMemo, useEffect, useRef, memo, Fragment } from 'react';
|
|
46
47
|
import React from 'react';
|
|
47
48
|
import useEventCallback from '@1money/hooks/useEventCallback';
|
|
@@ -229,7 +230,7 @@ export var useForm = function useForm() {
|
|
|
229
230
|
// leaving the field marked valid.
|
|
230
231
|
outcome = {
|
|
231
232
|
name: name,
|
|
232
|
-
error: (_a = coerceFailureReason(_t)) !== null && _a !== void 0 ? _a : '
|
|
233
|
+
error: (_a = coerceFailureReason(_t)) !== null && _a !== void 0 ? _a : getLocale('ProForm').validationFailed,
|
|
233
234
|
warning: null
|
|
234
235
|
};
|
|
235
236
|
case 5:
|
|
@@ -359,7 +360,7 @@ export var useForm = function useForm() {
|
|
|
359
360
|
_t2 = _context3.v;
|
|
360
361
|
// Last-resort net (see validateFieldAsync) — keep the normal
|
|
361
362
|
// constructed-error flow so onFinishFailed gets a real payload.
|
|
362
|
-
error = (_a = coerceFailureReason(_t2)) !== null && _a !== void 0 ? _a : '
|
|
363
|
+
error = (_a = coerceFailureReason(_t2)) !== null && _a !== void 0 ? _a : getLocale('ProForm').validationFailed;
|
|
363
364
|
case 5:
|
|
364
365
|
// The store commit is staleness-guarded; the SUBMIT decision
|
|
365
366
|
// (fieldErrors / the thrown FormValidationError) still reflects
|
|
@@ -785,4 +786,4 @@ export var useForm = function useForm() {
|
|
|
785
786
|
};
|
|
786
787
|
};
|
|
787
788
|
export default useForm;
|
|
788
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm0uanMiLCJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvaG9va3MvdXNlRm9ybS50cyJdLCJuYW1lcyI6WyJlIiwidCIsInIiLCJTeW1ib2wiLCJuIiwiaXRlcmF0b3IiLCJvIiwidG9TdHJpbmdUYWciLCJpIiwiYyIsInByb3RvdHlwZSIsIkdlbmVyYXRvciIsInUiLCJPYmplY3QiLCJjcmVhdGUiLCJfcmVnZW5lcmF0b3JEZWZpbmUyIiwiZiIsInAiLCJ5IiwiRyIsInYiLCJhIiwiZCIsImJpbmQiLCJsZW5ndGgiLCJsIiwiVHlwZUVycm9yIiwiY2FsbCIsImRvbmUiLCJ2YWx1ZSIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJnZXRQcm90b3R5cGVPZiIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiZGlzcGxheU5hbWUiLCJfcmVnZW5lcmF0b3IiLCJ3IiwibSIsImRlZmluZVByb3BlcnR5IiwiX3JlZ2VuZXJhdG9yRGVmaW5lIiwiX2ludm9rZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX24iLCJGIiwicyIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIl9fYXdhaXRlciIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiUCIsImdlbmVyYXRvciIsImFkb3B0IiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJ0aGVuIiwiYXBwbHkiLCJfX3Jlc3QiLCJoYXNPd25Qcm9wZXJ0eSIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInVzZU1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJtZW1vIiwiRnJhZ21lbnQiLCJSZWFjdCIsInVzZUV2ZW50Q2FsbGJhY2siLCJ1c2VNZW1vaXplZEZuIiwidXNlRm9ybUNvcmUiLCJyZXNvbHZlVmFsdWUiLCJzZXROZXN0ZWRWYWx1ZSIsImNvZXJjZUZhaWx1cmVSZWFzb24iLCJmaWx0ZXJSdWxlc0J5VHJpZ2dlciIsIm5vcm1hbGl6ZVRyaWdnZXJzIiwicmVzb2x2ZVJ1bGVzIiwicnVuUnVsZXNBc3luYyIsInVzZVN0b3JlU2VsZWN0b3IiLCJzaGFsbG93RXF1YWxBcnJheXMiLCJzYW1lVmFsaWRhdGlvbk5vZGUiLCJGb3JtVmFsaWRhdGlvbkVycm9yIiwiYXNSdWxlQXJyYXkiLCJydWxlIiwicnVsZUhhc1ZhbGlkYXRvciIsInZhbGlkYXRvciIsImRlZmF1bHRGaWVsZCIsInNvbWUiLCJmaWVsZHMiLCJ2YWx1ZXMiLCJzdWIiLCJoYXNSZXNvbHZlZFZhbGlkYXRvciIsInJlc29sdmVkIiwidXNlRm9ybSIsImNvbmZpZyIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIm9uRmluaXNoIiwib25GaW5pc2hGYWlsZWQiLCJvblJlc2V0IiwiX2NvbmZpZyR2YWxpZGF0ZVRyaWdnIiwidmFsaWRhdGVUcmlnZ2VyIiwiZm9ybUNvcmUiLCJzdG9yZSIsImxhc3RBc3luY0Vwb2NoUmVmIiwibWFya1ZhbGlkYXRpbmciLCJuYW1lcyIsImFzc2lnbiIsImdldFN0YXRlIiwidmFsaWRhdGluZyIsImZvckVhY2giLCJzZXRTdGF0ZSIsImNvbW1pdFJ1bGVPdXRjb21lcyIsIm91dGNvbWVzIiwiY2xlYXJWYWxpZGF0aW5nIiwic3RhdGUiLCJlcnJvcnNDaGFuZ2VkIiwid2FybmluZ3NDaGFuZ2VkIiwibmV3RXJyb3JzIiwiZXJyb3JzIiwibmV3V2FybmluZ3MiLCJ3YXJuaW5ncyIsIl9pdGVyYXRvciIsIl9zdGVwIiwiX3N0ZXAkdmFsdWUiLCJlcnJvciIsIndhcm5pbmciLCJlcnIiLCJmbGFnc1RvQ2xlYXIiLCJmaWx0ZXIiLCJwYXRjaCIsIm5ld1ZhbGlkYXRpbmciLCJrZXlzIiwidmFsaWRhdGVGaWVsZEFzeW5jIiwicnVsZXMiLCJfY2FsbGVlIiwiX2EiLCJlcG9jaCIsImZsYWdnZWQiLCJvdXRjb21lIiwiX3lpZWxkJHJ1blJ1bGVzQXN5bmMiLCJpc0N1cnJlbnQiLCJjbGVhckZsYWdzIiwiX3QiLCJfY29udGV4dCIsImlzVmFsaWQiLCJiZWdpblZhbGlkYXRpb25SdW4iLCJnZXRGaWVsZHNWYWx1ZSIsImdldFJ1bGVDb250ZXh0SW5zdGFuY2UiLCJmbGFnZ2VkTmFtZSIsImN1cnJlbnQiLCJpc1ZhbGlkYXRpb25SdW5DdXJyZW50IiwiaGFuZGxlRmllbGRCbHVyIiwiZmllbGRUcmlnZ2VyIiwiX2NhbGxlZTIiLCJ0b3VjaGVkIiwiYXBwbGljYWJsZSIsIl9jb250ZXh0MiIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldEZpZWxkUnVsZXMiLCJ2YWxpZGF0ZUZpZWxkc0FzeW5jIiwibmFtZUxpc3QiLCJfY2FsbGVlNCIsImZpZWxkc1RvVmFsaWRhdGUiLCJmaWVsZEVycm9ycyIsInJlc29sdmVkQnlGaWVsZCIsImVwb2NoQnlGaWVsZCIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJfY29udGV4dDQiLCJmaWVsZFJ1bGVzIiwiTWFwIiwic2V0IiwiZ2V0IiwiYWxsIiwibWFwIiwiX2NhbGxlZTMiLCJfeWllbGQkcnVuUnVsZXNBc3luYzIiLCJfdDIiLCJfY29udGV4dDMiLCJwdXNoIiwicmVkdWNlIiwiYWNjIiwiZGVmaW5lRmllbGQiLCJmaWVsZE9wdGlvbnMiLCJfZmllbGRPcHRpb25zJHJ1bGVzIiwiRmllbGRDb21wb25lbnQiLCJjaGlsZHJlbiIsInJlbmRlciIsInByb3BzIiwiX3VzZVN0b3JlU2VsZWN0b3IiLCJfdXNlU3RvcmVTZWxlY3RvcjIiLCJfc2xpY2VkVG9BcnJheSIsImZpZWxkVmFsdWUiLCJmaWVsZEVycm9yIiwiZmllbGRUb3VjaGVkIiwiZmllbGRWYWxpZGF0aW5nIiwicmV0YWluRmllbGQiLCJleGlzdGluZ1J1bGVzIiwicmVnaXN0ZXJGaWVsZCIsInJlbGVhc2VGaWVsZCIsImhhbmRsZUZpZWxkQ2hhbmdlIiwic2V0RmllbGRWYWx1ZSIsImhhbmRsZUJsdXIiLCJmaWVsZFByb3BzIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJoYW5kbGVNZXJnZUNoYW5nZSIsIl90eXBlb2YiLCJ0YXJnZXQiLCJpc1ZhbGlkRWxlbWVudCIsImhhbmRsZU1lcmdlQmx1ciIsImRvbVNhZmVQcm9wcyIsImNsb25lRWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJjaGlsZCIsImluZGV4Iiwia2V5IiwiaGFuZGxlU3VibWl0IiwiX2NhbGxlZTUiLCJ2YWxpZGF0ZWRWYWx1ZXMiLCJfdDMiLCJfY29udGV4dDUiLCJwcmV2ZW50RGVmYXVsdCIsImNvbnNvbGUiLCJoYW5kbGVSZXNldCIsInJlc2V0RmllbGRzIiwiZ2V0RmllbGRFcnJvciIsImdldEZpZWxkV2FybmluZyIsImdldEZpZWxkc0Vycm9yIiwiaXNGaWVsZFRvdWNoZWQiLCJpc0ZpZWxkc1RvdWNoZWQiLCJhbGxGaWVsZHNUb3VjaGVkIiwiZXZlcnkiLCJpc0ZpZWxkVmFsaWRhdGluZyIsInNldEZpZWxkc0Vycm9yIiwiZmllbGRzRXJyb3IiLCJlbnRyaWVzIiwiX3JlZiIsIl9yZWYyIiwic2V0RmllbGRFcnJvciIsInNldEZpZWxkVG91Y2hlZCIsImlzVG91Y2hlZCIsInNldEZpZWxkc1RvdWNoZWQiLCJmaWVsZHNUb3VjaCIsInJlc2V0Rm9ybUZpZWxkcyIsImluaXRpYWxWYWx1ZXMiLCJnZXRJbml0aWFsVmFsdWVzIiwibmV3VmFsdWVzIiwiZmllbGQiLCJpbml0aWFsIiwiaW5jbHVkZXMiLCJpbnZhbGlkYXRlVmFsaWRhdGlvblJ1bnMiLCJuZXdUb3VjaGVkIiwic3VibWl0V2l0aFZhbGlkYXRpb24iLCJjYWxsYmFjayIsIl9jYWxsZWU2IiwiX3Q0IiwiX3Q1IiwiX2NvbnRleHQ2IiwiZm9ybUluc3RhbmNlIiwiZ2V0RmllbGRWYWx1ZSIsInZhbGlkYXRlRmllbGRzIiwic2V0RmllbGRzVmFsdWUiLCJzdWJtaXQiLCJ1bnJlZ2lzdGVyRmllbGQiLCJzZXRSdWxlQ29udGV4dEluc3RhbmNlIiwiaW50ZXJuYWxzIiwic2V0RmllbGRXYXJuaW5nIl0sIm1hcHBpbmdzIjoiOzs7OzBCQUNBLHVLQUFBQSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssV0FBQSw4QkFBQUMsRUFBQU4sQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBQyxDQUFBLEdBQUFMLENBQUEsSUFBQUEsQ0FBQSxDQUFBTSxTQUFBLFlBQUFDLFNBQUEsR0FBQVAsQ0FBQSxHQUFBTyxTQUFBLEVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxNQUFBLENBQUFMLENBQUEsQ0FBQUMsU0FBQSxVQUFBSyxtQkFBQSxDQUFBSCxDQUFBLHVCQUFBVixDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEVBQUFDLENBQUEsRUFBQUcsQ0FBQSxFQUFBSSxDQUFBLE1BQUFDLENBQUEsR0FBQVgsQ0FBQSxRQUFBWSxDQUFBLE9BQUFDLENBQUEsS0FBQUYsQ0FBQSxLQUFBYixDQUFBLEtBQUFnQixDQUFBLEVBQUFwQixDQUFBLEVBQUFxQixDQUFBLEVBQUFDLENBQUEsRUFBQU4sQ0FBQSxFQUFBTSxDQUFBLENBQUFDLElBQUEsQ0FBQXZCLENBQUEsTUFBQXNCLENBQUEsV0FBQUEsRUFBQXJCLENBQUEsRUFBQUMsQ0FBQSxXQUFBTSxDQUFBLEdBQUFQLENBQUEsRUFBQVEsQ0FBQSxNQUFBRyxDQUFBLEdBQUFaLENBQUEsRUFB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TUFDckNvRSxlQUFlLEVBQUVySyxRQUFRLENBQUNxSyxlQUFlO01BQ3pDdEUsV0FBVyxFQUFFL0YsUUFBUSxDQUFDK0YsV0FBVztNQUNqQ0csWUFBWSxFQUFFbEcsUUFBUSxDQUFDa0csWUFBWTtNQUNuQ29CLFlBQVksRUFBWkEsWUFBWTtNQUNaTyxXQUFXLEVBQVhBO0lENUpGLENDNkpDO0VBQUEsQ0FBQyxFQUNGLENBQ0U1SCxLQUFLLEVBQ0xELFFBQVEsQ0FBQ29FLFVBQVUsRUFDbkJwRSxRQUFRLENBQUNvRyxhQUFhLEVBQ3RCcEcsUUFBUSxDQUFDNEksYUFBYSxFQUN0QjVJLFFBQVEsQ0FBQ3dLLGVBQWUsRUFDeEJ6SSxrQkFBa0IsRUFDbEIvQixRQUFRLENBQUNpRyxhQUFhLEVBQ3RCakcsUUFBUSxDQUFDcUssZUFBZSxFQUN4QnJLLFFBQVEsQ0FBQytGLFdBQVcsRUFDcEIvRixRQUFRLENBQUNrRyxZQUFZLEVBQ3JCb0IsWUFBWSxFQUNaTyxXQUFXLENBQ1osQ0FDRjtFQUVELE9BQU87SUFBRW1DLFlBQVksRUFBWkEsWUFBWTtJQUFFTyxTQUFTLEVBQVRBLFNBQVM7SUFBRXRLLEtBQUssRUFBTEE7RUFBSyxDQUFFO0FBQzNDLENBQUM7QUFFRCxlQUFlVixPQUFPIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IHVzZU1lbW8sIHVzZUVmZmVjdCwgdXNlUmVmLCBtZW1vLCBGcmFnbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmltcG9ydCB7IHVzZUZvcm1Db3JlIH0gZnJvbSAnLi91c2VGb3JtQ29yZSc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUsIHNldE5lc3RlZFZhbHVlIH0gZnJvbSAnLi4vcGF0aFV0aWxzJztcbmltcG9ydCB7IGNvZXJjZUZhaWx1cmVSZWFzb24sIGZpbHRlclJ1bGVzQnlUcmlnZ2VyLCBub3JtYWxpemVUcmlnZ2VycywgcmVzb2x2ZVJ1bGVzLCBydW5SdWxlc0FzeW5jLCB9IGZyb20gJy4uL3J1blJ1bGVzJztcbmltcG9ydCB7IHVzZVN0b3JlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbEFycmF5cywgc2FtZVZhbGlkYXRpb25Ob2RlIH0gZnJvbSAnLi4vZm9ybVN0b3JlJztcbmltcG9ydCB7IEZvcm1WYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuLi92YWxpZGF0aW9uRXJyb3InO1xuLyoqXG4gKiBPbmx5IHJ1bGVzIHdpdGggYSBjdXN0b20gYHZhbGlkYXRvcmAgY2FuIGJlIGdlbnVpbmVseSBhc3luY2hyb25vdXMg4oCUXG4gKiBidWlsdGluIHJ1bGVzIHJlc29sdmUgd2l0aGluIGEgbWljcm90YXNrLCBzbyBmbGlwcGluZyBgdmFsaWRhdGluZ2AgZm9yXG4gKiB0aGVtIHdvdWxkIG9ubHkgY2h1cm4gc3Vic2NyaWJlcnMgd2l0aG91dCBldmVyIGJlaW5nIHZpc2libGUuIERlY2lkZWQgb25cbiAqIFJFU09MVkVEIHJ1bGVzOiBhIGZ1bmN0aW9uLWZvcm0gcnVsZSB0aGF0IHJlc29sdmVzIHRvIGJ1aWx0aW4tb25seSBjaGVja3NcbiAqIG11c3Qgbm90IGZsaWNrZXIgdGhlIGZsYWcuXG4gKlxuICogVGhlIGFzeW5jIGVuZ2luZSBhd2FpdHMgdmFsaWRhdG9ycyBuZXN0ZWQgaW5zaWRlIGBmaWVsZHNgIC8gYGRlZmF1bHRGaWVsZGBcbiAqIHRvbywgc28gdGhlIGRlY2lzaW9uIG11c3QgZGVzY2VuZCB0aGUgc2FtZSB3YXkg4oCUIG90aGVyd2lzZSBhIGRlZXAtb25seVxuICogdmFsaWRhdG9yIChlLmcuIGB7IGRlZmF1bHRGaWVsZDogeyB2YWxpZGF0b3IgfSB9YCkgcnVucyBwZW5kaW5nIHdpdGggdGhlXG4gKiBmbGFnIHN0dWNrIGZhbHNlLCBhbmQgYGlzRmllbGRWYWxpZGF0aW5nKG5hbWUpYCB1bmRlci1yZXBvcnRzIGZvciB0aGUgd2hvbGVcbiAqIHdpbmRvdy4gT3Zlci1mbGFnZ2luZyB3aGVuIHRoZSBkZWVwIHZhbGlkYXRvciB3b24ndCBhY3R1YWxseSBmaXJlIChlbXB0eSAvXG4gKiBwcmltaXRpdmUgdmFsdWUpIGlzIGFjY2VwdGFibGU6IHRoZSBmbGFnIGlzIGRlY2lkZWQgb24gcnVsZSBTSEFQRSwgZXhhY3RseVxuICogYXMgdGhlIHRvcC1sZXZlbCBjYXNlIGFscmVhZHkgb3Zlci1mbGFncyBhIHZhbGlkYXRvciBzaG9ydC1jaXJjdWl0ZWQgYnkgYW5cbiAqIGVhcmxpZXIgYnVpbHRpbiBmYWlsdXJlOyB0aGUgcnVuIGNsZWFycyBpdCBvbiBzZXR0bGUgZWl0aGVyIHdheS5cbiAqL1xuY29uc3QgYXNSdWxlQXJyYXkgPSAocnVsZSkgPT4gcnVsZSA/IChBcnJheS5pc0FycmF5KHJ1bGUpID8gcnVsZSA6IFtydWxlXSkgOiBbXTtcbmNvbnN0IHJ1bGVIYXNWYWxpZGF0b3IgPSAocnVsZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgcnVsZS52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIGlmIChhc1J1bGVBcnJheShydWxlLmRlZmF1bHRGaWVsZCkuc29tZShydWxlSGFzVmFsaWRhdG9yKSlcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgaWYgKHJ1bGUuZmllbGRzKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKHJ1bGUuZmllbGRzKS5zb21lKChzdWIpID0+IGFzUnVsZUFycmF5KHN1Yikuc29tZShydWxlSGFzVmFsaWRhdG9yKSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5jb25zdCBoYXNSZXNvbHZlZFZhbGlkYXRvciA9IChyZXNvbHZlZCkgPT4gcmVzb2x2ZWQuc29tZShydWxlSGFzVmFsaWRhdG9yKTtcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gdXNlRm9ybVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5leHBvcnQgY29uc3QgdXNlRm9ybSA9IChjb25maWcgPSB7fSkgPT4ge1xuICAgIGNvbnN0IHsgb25GaW5pc2gsIG9uRmluaXNoRmFpbGVkLCBvblJlc2V0LCB2YWxpZGF0ZVRyaWdnZXIgPSAnb25DaGFuZ2UnLCB9ID0gY29uZmlnO1xuICAgIGNvbnN0IGZvcm1Db3JlID0gdXNlRm9ybUNvcmUoY29uZmlnKTtcbiAgICBjb25zdCB7IHN0b3JlIH0gPSBmb3JtQ29yZTtcbiAgICAvLyBFcG9jaCBvZiB0aGUgTEFURVNUIGFzeW5jIHJ1biB0aGF0IHJhaXNlZCBlYWNoIGZpZWxkJ3MgYHZhbGlkYXRpbmdgIGZsYWcuXG4gICAgLy8gQSBzZXR0bGluZyBydW4gY2xlYXJzIHRoZSBmbGFnIG9ubHkgd2hpbGUgaXQgaXMgc3RpbGwgdGhlIGxhdGVzdCByYWlzZXIg4oCUXG4gICAgLy8gYW4gb2xkZXIgcnVuIG11c3Qgbm90IGJsYW5rIHRoZSBzcGlubmVyIG9mIGEgbmV3ZXIgb25lLCBhbmQgYSBydW5cbiAgICAvLyBzdXBlcnNlZGVkIGJ5IGEgU1lOQyBjb21taXQgKHdoaWNoIG5ldmVyIHRvdWNoZXMgZmxhZ3MpIG11c3Qgc3RpbGwgY2xlYW5cbiAgICAvLyB1cCBhZnRlciBpdHNlbGYuXG4gICAgY29uc3QgbGFzdEFzeW5jRXBvY2hSZWYgPSB1c2VSZWYoe30pO1xuICAgIC8vIE1hcmsgZmllbGRzIGFzIHZhbGlkYXRpbmcgaW4gT05FIGNvbW1pdC4gdmFsaWRhdGluZyAvIHRvdWNoZWQgbGl2ZSBpbiB0aGVcbiAgICAvLyBzdG9yZSBhbG9uZ3NpZGUgdmFsdWVzIOKAlCBmbGlwcGluZyB0aGVtIChlLmcuIGFzeW5jIHZhbGlkYXRpb24gYXJvdW5kIGFcbiAgICAvLyBibHVyKSBtdXN0IG5vdCByZS1yZW5kZXIgdGhlIGZvcm0gcm9vdCwgb25seSB0aGUgZmllbGRzIHRoYXQgc3Vic2NyaWJlZC5cbiAgICBjb25zdCBtYXJrVmFsaWRhdGluZyA9IHVzZU1lbW9pemVkRm4oKG5hbWVzKSA9PiB7XG4gICAgICAgIGlmIChuYW1lcy5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG5leHQgPSBPYmplY3QuYXNzaWduKHt9LCBzdG9yZS5nZXRTdGF0ZSgpLnZhbGlkYXRpbmcpO1xuICAgICAgICBuYW1lcy5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgICAgICBuZXh0W25hbWVdID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHN0b3JlLnNldFN0YXRlKHsgdmFsaWRhdGluZzogbmV4dCB9KTtcbiAgICB9KTtcbiAgICAvLyBGb2xkIHBlci1maWVsZCBydWxlIG91dGNvbWVzIGludG8gQVQgTU9TVCBvbmUgc3RvcmUgY29tbWl0OiBlcnJvcnMgYW5kXG4gICAgLy8gd2FybmluZ3MgYXJlIG1lcmdlZCBvdmVyIHRoZSBjdXJyZW50IG1hcHMgYW5kIHRoZSBgY2xlYXJWYWxpZGF0aW5nYCBmbGFnc1xuICAgIC8vIGFyZSByZW1vdmVkIGluIHRoZSBTQU1FIHBhdGNoLiBBIG5vLW9wIG91dGNvbWUgY29tbWl0cyBub3RoaW5nIGF0IGFsbCDigJRcbiAgICAvLyBwZXItZmllbGQgY29tbWl0cyBoZXJlIHByZXZpb3VzbHkgbWFkZSBzdWJtaXQtdGltZSB2YWxpZGF0aW9uIHN3ZWVwIGV2ZXJ5XG4gICAgLy8gc3Vic2NyaWJlciBPKGZpZWxkcykgdGltZXMuXG4gICAgY29uc3QgY29tbWl0UnVsZU91dGNvbWVzID0gdXNlTWVtb2l6ZWRGbigob3V0Y29tZXMsIGNsZWFyVmFsaWRhdGluZykgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHN0b3JlLmdldFN0YXRlKCk7XG4gICAgICAgIGxldCBlcnJvcnNDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIGxldCB3YXJuaW5nc0NoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgbmV3RXJyb3JzID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuZXJyb3JzKTtcbiAgICAgICAgY29uc3QgbmV3V2FybmluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS53YXJuaW5ncyk7XG4gICAgICAgIGZvciAoY29uc3QgeyBuYW1lLCBlcnJvciwgd2FybmluZyB9IG9mIG91dGNvbWVzKSB7XG4gICAgICAgICAgICBpZiAoZXJyb3IgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAobmFtZSBpbiBuZXdFcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG5ld0Vycm9yc1tuYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIXNhbWVWYWxpZGF0aW9uTm9kZShuZXdFcnJvcnNbbmFtZV0sIGVycm9yKSkge1xuICAgICAgICAgICAgICAgIG5ld0Vycm9yc1tuYW1lXSA9IGVycm9yO1xuICAgICAgICAgICAgICAgIGVycm9yc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdhcm5pbmcgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAobmFtZSBpbiBuZXdXYXJuaW5ncykge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbmV3V2FybmluZ3NbbmFtZV07XG4gICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIXNhbWVWYWxpZGF0aW9uTm9kZShuZXdXYXJuaW5nc1tuYW1lXSwgd2FybmluZykpIHtcbiAgICAgICAgICAgICAgICBuZXdXYXJuaW5nc1tuYW1lXSA9IHdhcm5pbmc7XG4gICAgICAgICAgICAgICAgd2FybmluZ3NDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmbGFnc1RvQ2xlYXIgPSBjbGVhclZhbGlkYXRpbmcuZmlsdGVyKChuYW1lKSA9PiBuYW1lIGluIHN0YXRlLnZhbGlkYXRpbmcpO1xuICAgICAgICBjb25zdCBwYXRjaCA9IHt9O1xuICAgICAgICBpZiAoZXJyb3JzQ2hhbmdlZClcbiAgICAgICAgICAgIHBhdGNoLmVycm9ycyA9IG5ld0Vycm9ycztcbiAgICAgICAgaWYgKHdhcm5pbmdzQ2hhbmdlZClcbiAgICAgICAgICAgIHBhdGNoLndhcm5pbmdzID0gbmV3V2FybmluZ3M7XG4gICAgICAgIGlmIChmbGFnc1RvQ2xlYXIubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsaWRhdGluZyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnZhbGlkYXRpbmcpO1xuICAgICAgICAgICAgZmxhZ3NUb0NsZWFyLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICBkZWxldGUgbmV3VmFsaWRhdGluZ1tuYW1lXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcGF0Y2gudmFsaWRhdGluZyA9IG5ld1ZhbGlkYXRpbmc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHBhdGNoKS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgc3RvcmUuc2V0U3RhdGUocGF0Y2gpO1xuICAgIH0pO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEFzeW5jIGZpZWxkIHZhbGlkYXRpb24g4oCTIGVhY2ggcnVsZSBpcyBwcm9jZXNzZWQgZXhhY3RseSBvbmNlXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgdmFsaWRhdGVGaWVsZEFzeW5jID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgdmFsdWUsIHJ1bGVzKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoIXJ1bGVzIHx8IHJ1bGVzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiB7IGlzVmFsaWQ6IHRydWUsIGVycm9yOiBudWxsIH07XG4gICAgICAgIC8vIENhcHR1cmUgdGhpcyBydW4ncyBlcG9jaDogaWYgYSBORVdFUiBydW4gKHN5bmMgb3IgYXN5bmMpIHN0YXJ0cyBmb3JcbiAgICAgICAgLy8gdGhlIGZpZWxkIGJlZm9yZSB0aGlzIG9uZSBzZXR0bGVzLCB0aGUgb3V0Y29tZSBiZWxvdyBpcyBzdGFsZSBhbmQgaXNcbiAgICAgICAgLy8gZGlzY2FyZGVkIGluc3RlYWQgb2Ygb3ZlcndyaXRpbmcgdGhlIG5ld2VyIHJlc3VsdC5cbiAgICAgICAgY29uc3QgZXBvY2ggPSBmb3JtQ29yZS5iZWdpblZhbGlkYXRpb25SdW4obmFtZSk7XG4gICAgICAgIC8vIFJlc29sdmUgb25jZTogdGhlIGZsYWcgZGVjaXNpb24gbmVlZHMgcmVzb2x2ZWQgcnVsZXMsIGFuZCBwYXNzaW5nIHRoZVxuICAgICAgICAvLyByZXNvbHZlZCBhcnJheSBvbndhcmQgc3BhcmVzIHRoZSBlbmdpbmUgYSByZS1yZXNvbHV0aW9uLlxuICAgICAgICBjb25zdCB2YWx1ZXMgPSBmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpO1xuICAgICAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVSdWxlcyhydWxlcywgdmFsdWVzLCBmb3JtQ29yZS5nZXRSdWxlQ29udGV4dEluc3RhbmNlKCkpO1xuICAgICAgICBjb25zdCBmbGFnZ2VkID0gaGFzUmVzb2x2ZWRWYWxpZGF0b3IocmVzb2x2ZWQpID8gW25hbWVdIDogW107XG4gICAgICAgIG1hcmtWYWxpZGF0aW5nKGZsYWdnZWQpO1xuICAgICAgICBmbGFnZ2VkLmZvckVhY2goKGZsYWdnZWROYW1lKSA9PiB7XG4gICAgICAgICAgICBsYXN0QXN5bmNFcG9jaFJlZi5jdXJyZW50W2ZsYWdnZWROYW1lXSA9IGVwb2NoO1xuICAgICAgICB9KTtcbiAgICAgICAgbGV0IG91dGNvbWUgPSB7IG5hbWUsIGVycm9yOiBudWxsLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB7IGVycm9yLCB3YXJuaW5nIH0gPSB5aWVsZCBydW5SdWxlc0FzeW5jKG5hbWUsIHZhbHVlLCB2YWx1ZXMsIHJlc29sdmVkLCBmb3JtQ29yZS5nZXRSdWxlQ29udGV4dEluc3RhbmNlKCkpO1xuICAgICAgICAgICAgb3V0Y29tZSA9IHsgbmFtZSwgZXJyb3IsIHdhcm5pbmcgfTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAvLyBUaGUgZW5naW5lIGNvbnRhaW5zIHJ1bGUtbGV2ZWwgdGhyb3dzIGl0c2VsZjsgdGhpcyBpcyBhIGxhc3QtcmVzb3J0XG4gICAgICAgICAgICAvLyBuZXQgc28gYW4gdW5leHBlY3RlZCBmYWlsdXJlIHN1cmZhY2VzIGFzIGEgZmllbGQgZXJyb3IgaW5zdGVhZCBvZlxuICAgICAgICAgICAgLy8gbGVhdmluZyB0aGUgZmllbGQgbWFya2VkIHZhbGlkLlxuICAgICAgICAgICAgb3V0Y29tZSA9IHsgbmFtZSwgZXJyb3I6IChfYSA9IGNvZXJjZUZhaWx1cmVSZWFzb24oZXJyKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ1ZhbGlkYXRpb24gZmFpbGVkJywgd2FybmluZzogbnVsbCB9O1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgY29uc3QgaXNDdXJyZW50ID0gZm9ybUNvcmUuaXNWYWxpZGF0aW9uUnVuQ3VycmVudChuYW1lLCBlcG9jaCk7XG4gICAgICAgICAgICBjb25zdCBjbGVhckZsYWdzID0gZmxhZ2dlZC5maWx0ZXIoKGZsYWdnZWROYW1lKSA9PiBsYXN0QXN5bmNFcG9jaFJlZi5jdXJyZW50W2ZsYWdnZWROYW1lXSA9PT0gZXBvY2gpO1xuICAgICAgICAgICAgY29tbWl0UnVsZU91dGNvbWVzKGlzQ3VycmVudCA/IFtvdXRjb21lXSA6IFtdLCBjbGVhckZsYWdzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGUgQ0FMTEVSIGdldHMgdGhpcyBydW4ncyBvd24gcmVzdWx0IGVpdGhlciB3YXkgKGl0cyBwcm9taXNlIGlzXG4gICAgICAgIC8vIGFib3V0IHRoZSB2YWx1ZSBpdCB3YXMgYXNrZWQgdG8gdmFsaWRhdGUpOyBvbmx5IHRoZSBTVE9SRSBjb21taXQgaXNcbiAgICAgICAgLy8gc3RhbGVuZXNzLWd1YXJkZWQuXG4gICAgICAgIHJldHVybiB7IGlzVmFsaWQ6IG91dGNvbWUuZXJyb3IgPT09IG51bGwsIGVycm9yOiBvdXRjb21lLmVycm9yIH07XG4gICAgfSkpO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEFzeW5jIGZpZWxkIGJsdXIgaGFuZGxlclxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGhhbmRsZUZpZWxkQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKG5hbWUsIGZpZWxkVHJpZ2dlcikgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHRvdWNoZWQgPSBzdG9yZS5nZXRTdGF0ZSgpLnRvdWNoZWQ7XG4gICAgICAgIGlmICghdG91Y2hlZFtuYW1lXSkge1xuICAgICAgICAgICAgc3RvcmUuc2V0U3RhdGUoeyB0b3VjaGVkOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHRvdWNoZWQpLCB7IFtuYW1lXTogdHJ1ZSB9KSB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBydWxlcyA9IGZvcm1Db3JlLmdldEZpZWxkUnVsZXMobmFtZSk7XG4gICAgICAgIGlmICghcnVsZXMpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCk7XG4gICAgICAgIGNvbnN0IGFwcGxpY2FibGUgPSBmaWx0ZXJSdWxlc0J5VHJpZ2dlcihyZXNvbHZlUnVsZXMocnVsZXMsIHZhbHVlcywgZm9ybUNvcmUuZ2V0UnVsZUNvbnRleHRJbnN0YW5jZSgpKSwgJ29uQmx1cicsIG5vcm1hbGl6ZVRyaWdnZXJzKGZpZWxkVHJpZ2dlciwgdmFsaWRhdGVUcmlnZ2VyKSwgbmFtZSk7XG4gICAgICAgIGlmIChhcHBsaWNhYmxlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHlpZWxkIHZhbGlkYXRlRmllbGRBc3luYyhuYW1lLCByZXNvbHZlVmFsdWUodmFsdWVzLCBuYW1lKSwgYXBwbGljYWJsZSk7XG4gICAgICAgIH1cbiAgICB9KSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gVmFsaWRhdGUgYWxsIGZpZWxkcyBhc3luY1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IHZhbGlkYXRlRmllbGRzQXN5bmMgPSB1c2VNZW1vaXplZEZuKChuYW1lTGlzdCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkc1RvVmFsaWRhdGUgPSBuYW1lTGlzdCB8fCBPYmplY3Qua2V5cyhmb3JtQ29yZS5maWVsZFJ1bGVzKTtcbiAgICAgICAgY29uc3QgZmllbGRFcnJvcnMgPSB7fTtcbiAgICAgICAgLy8gUmVzb2x2ZSBldmVyeSBmaWVsZCBvbmNlIHVwIGZyb250OiB0aGUgZmxhZyBkZWNpc2lvbiBuZWVkcyByZXNvbHZlZFxuICAgICAgICAvLyBydWxlcywgYW5kIHRoZSByZXNvbHZlZCBhcnJheXMgYXJlIHJldXNlZCBmb3IgdGhlIGFjdHVhbCBydW5zLiBFYWNoXG4gICAgICAgIC8vIGZpZWxkIGFsc28gY2FwdHVyZXMgaXRzIHZhbGlkYXRpb24gZXBvY2gg4oCUIGEgZmllbGQgd2hvc2UgdmFsdWVcbiAgICAgICAgLy8gY2hhbmdlcyBtaWQtc3VibWl0IGdldHMgYSBuZXdlciBydW4sIGFuZCB0aGlzIHJ1bidzIHN0YWxlIG91dGNvbWVcbiAgICAgICAgLy8gbXVzdCBub3Qgb3ZlcndyaXRlIGl0IGluIHRoZSBzdG9yZS5cbiAgICAgICAgY29uc3QgcmVzb2x2ZWRCeUZpZWxkID0gbmV3IE1hcCgpO1xuICAgICAgICBjb25zdCBlcG9jaEJ5RmllbGQgPSBuZXcgTWFwKCk7XG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBvZiBmaWVsZHNUb1ZhbGlkYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBydWxlcyA9IGZvcm1Db3JlLmZpZWxkUnVsZXNbbmFtZV07XG4gICAgICAgICAgICBpZiAocnVsZXMpIHtcbiAgICAgICAgICAgICAgICBlcG9jaEJ5RmllbGQuc2V0KG5hbWUsIGZvcm1Db3JlLmJlZ2luVmFsaWRhdGlvblJ1bihuYW1lKSk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRCeUZpZWxkLnNldChuYW1lLCByZXNvbHZlUnVsZXMocnVsZXMsIGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCksIGZvcm1Db3JlLmdldFJ1bGVDb250ZXh0SW5zdGFuY2UoKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIE9uZSBjb21taXQgdG8gcmFpc2UgdGhlIHZhbGlkYXRpbmcgZmxhZ3MgKHZhbGlkYXRvci1iZWFyaW5nIGZpZWxkc1xuICAgICAgICAvLyBvbmx5KSwgb25lIGNvbW1pdCB0byBsYW5kIGV2ZXJ5IGVycm9yL3dhcm5pbmcgYW5kIGNsZWFyIHRoZSBmbGFncy5cbiAgICAgICAgY29uc3QgZmxhZ2dlZCA9IGZpZWxkc1RvVmFsaWRhdGUuZmlsdGVyKChuYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVkQnlGaWVsZC5nZXQobmFtZSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWQgPyBoYXNSZXNvbHZlZFZhbGlkYXRvcihyZXNvbHZlZCkgOiBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIG1hcmtWYWxpZGF0aW5nKGZsYWdnZWQpO1xuICAgICAgICBmbGFnZ2VkLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgIGxhc3RBc3luY0Vwb2NoUmVmLmN1cnJlbnRbbmFtZV0gPSBlcG9jaEJ5RmllbGQuZ2V0KG5hbWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgb3V0Y29tZXMgPSBbXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHlpZWxkIFByb21pc2UuYWxsKGZpZWxkc1RvVmFsaWRhdGUubWFwKChuYW1lKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlZEJ5RmllbGQuZ2V0KG5hbWUpO1xuICAgICAgICAgICAgICAgIGlmICghcmVzb2x2ZWQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IgPSBudWxsO1xuICAgICAgICAgICAgICAgIGxldCB3YXJuaW5nID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAoeyBlcnJvciwgd2FybmluZyB9ID0geWllbGQgcnVuUnVsZXNBc3luYyhuYW1lLCByZXNvbHZlVmFsdWUoZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKSwgbmFtZSksIGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCksIHJlc29sdmVkLCBmb3JtQ29yZS5nZXRSdWxlQ29udGV4dEluc3RhbmNlKCkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAvLyBMYXN0LXJlc29ydCBuZXQgKHNlZSB2YWxpZGF0ZUZpZWxkQXN5bmMpIOKAlCBrZWVwIHRoZSBub3JtYWxcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc3RydWN0ZWQtZXJyb3IgZmxvdyBzbyBvbkZpbmlzaEZhaWxlZCBnZXRzIGEgcmVhbCBwYXlsb2FkLlxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IChfYSA9IGNvZXJjZUZhaWx1cmVSZWFzb24oZXJyKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ1ZhbGlkYXRpb24gZmFpbGVkJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVGhlIHN0b3JlIGNvbW1pdCBpcyBzdGFsZW5lc3MtZ3VhcmRlZDsgdGhlIFNVQk1JVCBkZWNpc2lvblxuICAgICAgICAgICAgICAgIC8vIChmaWVsZEVycm9ycyAvIHRoZSB0aHJvd24gRm9ybVZhbGlkYXRpb25FcnJvcikgc3RpbGwgcmVmbGVjdHNcbiAgICAgICAgICAgICAgICAvLyB0aGlzIHJ1bidzIG93biByZXN1bHRzIGZvciB0aGUgdmFsdWVzIGl0IHZhbGlkYXRlZC5cbiAgICAgICAgICAgICAgICBjb25zdCBlcG9jaCA9IGVwb2NoQnlGaWVsZC5nZXQobmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGVwb2NoICE9PSB1bmRlZmluZWQgJiYgZm9ybUNvcmUuaXNWYWxpZGF0aW9uUnVuQ3VycmVudChuYW1lLCBlcG9jaCkpIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0Y29tZXMucHVzaCh7IG5hbWUsIGVycm9yLCB3YXJuaW5nIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGRFcnJvcnNbbmFtZV0gPSBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgY29uc3QgY2xlYXJGbGFncyA9IGZsYWdnZWQuZmlsdGVyKChuYW1lKSA9PiBsYXN0QXN5bmNFcG9jaFJlZi5jdXJyZW50W25hbWVdID09PSBlcG9jaEJ5RmllbGQuZ2V0KG5hbWUpKTtcbiAgICAgICAgICAgIGNvbW1pdFJ1bGVPdXRjb21lcyhvdXRjb21lcywgY2xlYXJGbGFncyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGZpZWxkRXJyb3JzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRm9ybVZhbGlkYXRpb25FcnJvcihmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpLCBmaWVsZEVycm9ycyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5hbWVMaXN0KSB7XG4gICAgICAgICAgICByZXR1cm4gbmFtZUxpc3QucmVkdWNlKChhY2MsIG5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICBhY2NbbmFtZV0gPSByZXNvbHZlVmFsdWUoZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKSwgbmFtZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sIHt9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKTtcbiAgICB9KSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gZGVmaW5lRmllbGQg4oCTIHVzZWQgYnkgc3RhbmRhbG9uZSAobm9uLVByb0Zvcm0pIGNvbnN1bWVyc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGRlZmluZUZpZWxkID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgZmllbGRPcHRpb25zID0ge30pID0+IHtcbiAgICAgICAgY29uc3QgeyBydWxlcyA9IFtdIH0gPSBmaWVsZE9wdGlvbnM7XG4gICAgICAgIGNvbnN0IEZpZWxkQ29tcG9uZW50ID0gbWVtbygoX2EpID0+IHtcbiAgICAgICAgICAgIHZhciB7IGNoaWxkcmVuLCByZW5kZXIgfSA9IF9hLCBwcm9wcyA9IF9fcmVzdChfYSwgW1wiY2hpbGRyZW5cIiwgXCJyZW5kZXJcIl0pO1xuICAgICAgICAgICAgLy8gUGVyLWZpZWxkIHN0b3JlIHN1YnNjcmlwdGlvbjogdGhpcyBmaWVsZCByZS1yZW5kZXJzIG9ubHkgd2hlbiBpdHNcbiAgICAgICAgICAgIC8vIG93biB2YWx1ZS9lcnJvci90b3VjaGVkL3ZhbGlkYXRpbmcgc2xpY2UgY2hhbmdlcy4gRG90LXBhdGhzXG4gICAgICAgICAgICAvLyByZXNvbHZlIGludG8gdGhlIG5lc3RlZCB2YWx1ZXMgbGlrZSBldmVyeXdoZXJlIGVsc2UuXG4gICAgICAgICAgICBjb25zdCBbZmllbGRWYWx1ZSwgZmllbGRFcnJvciwgZmllbGRUb3VjaGVkLCBmaWVsZFZhbGlkYXRpbmddID0gdXNlU3RvcmVTZWxlY3RvcihzdG9yZSwgKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIChfYSA9IHJlc29sdmVWYWx1ZShzdGF0ZS52YWx1ZXMsIG5hbWUpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuZXJyb3JzW25hbWVdLFxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS50b3VjaGVkW25hbWVdLFxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS52YWxpZGF0aW5nW25hbWVdLFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9LCBzaGFsbG93RXF1YWxBcnJheXMpO1xuICAgICAgICAgICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBNb3VudC1jb3VudGVkOiByZWxlYXNlRmllbGQgcmVtb3ZlcyB0aGUgcnVsZXMgb25seSB3aGVuIHRoZVxuICAgICAgICAgICAgICAgIC8vIExBU1Qgc2FtZS1uYW1lIGluc3RhbmNlIHVubW91bnRzIOKAlCBhbiBpbnN0YW5jZSB0aGF0IHBpZ2d5YmFja2VkXG4gICAgICAgICAgICAgICAgLy8gb24gYW4gZXhpc3RpbmcgcmVnaXN0cmF0aW9uIChlLmcuIGEgUHJvRm9ybS5JdGVtJ3MpIGNhbiBuZXZlclxuICAgICAgICAgICAgICAgIC8vIHdpcGUgaXQgb24gaXRzIG93biB1bm1vdW50LlxuICAgICAgICAgICAgICAgIGZvcm1Db3JlLnJldGFpbkZpZWxkKG5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nUnVsZXMgPSBmb3JtQ29yZS5nZXRGaWVsZFJ1bGVzKG5hbWUpO1xuICAgICAgICAgICAgICAgIGlmICghZXhpc3RpbmdSdWxlcyAmJiBydWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db3JlLnJlZ2lzdGVyRmllbGQobmFtZSwgcnVsZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBmb3JtQ29yZS5yZWxlYXNlRmllbGQobmFtZSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sIFtdKTsgLy8gT25seSByZWdpc3RlciBvbiBtb3VudFxuICAgICAgICAgICAgY29uc3QgaGFuZGxlRmllbGRDaGFuZ2UgPSB1c2VFdmVudENhbGxiYWNrKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGZvcm1Db3JlLnNldEZpZWxkVmFsdWUobmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIC8vIFRvdWNoZWQgaXMgc2V0IGJ5IHRoZSB1c2VyIGNoYW5nZSB0cmlnZ2VyIChtYXRjaGluZyB0aGVcbiAgICAgICAgICAgICAgICAvLyBQcm9Gb3JtLkl0ZW0gcGF0aCkg4oCUIHByb2dyYW1tYXRpYyBzZXRGaWVsZHNWYWx1ZSBkb2VzIG5vdC5cbiAgICAgICAgICAgICAgICBjb25zdCB0b3VjaGVkID0gc3RvcmUuZ2V0U3RhdGUoKS50b3VjaGVkO1xuICAgICAgICAgICAgICAgIGlmICghdG91Y2hlZFtuYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7IHRvdWNoZWQ6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdG91Y2hlZCksIHsgW25hbWVdOiB0cnVlIH0pIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBhcHBsaWNhYmxlID0gZmlsdGVyUnVsZXNCeVRyaWdnZXIocmVzb2x2ZVJ1bGVzKHJ1bGVzLCBmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpLCBmb3JtQ29yZS5nZXRSdWxlQ29udGV4dEluc3RhbmNlKCkpLCAnb25DaGFuZ2UnLCBub3JtYWxpemVUcmlnZ2VycyhmaWVsZE9wdGlvbnMudmFsaWRhdGVUcmlnZ2VyLCB2YWxpZGF0ZVRyaWdnZXIpLCBuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoYXBwbGljYWJsZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEFzeW5jIHBhdGggKG1hdGNoaW5nIFByb0Zvcm0uSXRlbSkgc28gYSBQcm9taXNlLXJldHVybmluZ1xuICAgICAgICAgICAgICAgICAgICAvLyB2YWxpZGF0b3IgaXMgaG9ub3JlZCBvbiBjaGFuZ2UgaW5zdGVhZCBvZiBiZWluZyBzaWxlbnRseVxuICAgICAgICAgICAgICAgICAgICAvLyBza2lwcGVkOyBmaXJlLWFuZC1mb3JnZXQg4oCUIHRoZSByZXN1bHQgbGFuZHMgb24gdGhlIHN0b3JlLlxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZUZpZWxkQXN5bmMobmFtZSwgdmFsdWUsIGFwcGxpY2FibGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZUZpZWxkQmx1cihuYW1lLCBmaWVsZE9wdGlvbnMudmFsaWRhdGVUcmlnZ2VyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgZmllbGRQcm9wcyA9IE9iamVjdC5hc3NpZ24oeyBuYW1lLCB2YWx1ZTogZmllbGRWYWx1ZSwgZXJyb3I6IGZpZWxkRXJyb3IsIHRvdWNoZWQ6IGZpZWxkVG91Y2hlZCwgdmFsaWRhdGluZzogZmllbGRWYWxpZGF0aW5nLCBvbkNoYW5nZTogaGFuZGxlRmllbGRDaGFuZ2UsIG9uQmx1cjogaGFuZGxlQmx1ciB9LCBwcm9wcyk7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVNZXJnZUNoYW5nZSA9IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZSAmJiB0eXBlb2YgZSA9PT0gJ29iamVjdCcgJiYgJ3RhcmdldCcgaW4gZVxuICAgICAgICAgICAgICAgICAgICA/IGUudGFyZ2V0LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIDogZTtcbiAgICAgICAgICAgICAgICBoYW5kbGVGaWVsZENoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSAmJlxuICAgICAgICAgICAgICAgICAgICAoKF9hID0gY2hpbGRyZW4ucHJvcHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vbkNoYW5nZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVNZXJnZUJsdXIgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGhhbmRsZUJsdXIoKTtcbiAgICAgICAgICAgICAgICBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pICYmXG4gICAgICAgICAgICAgICAgICAgICgoX2EgPSBjaGlsZHJlbi5wcm9wcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm9uQmx1cikpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHJvcHMub25CbHVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChyZW5kZXIgJiYgdHlwZW9mIHJlbmRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXIoZmllbGRQcm9wcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuKGZpZWxkUHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRWxlbWVudCBjaGlsZHJlbiByZWNlaXZlIG9ubHkgRE9NLXNhZmUgcHJvcHMg4oCUIGVycm9yL3RvdWNoZWQvXG4gICAgICAgICAgICAvLyB2YWxpZGF0aW5nIGFyZSBmaWVsZCBNRVRBLCBub3QgY29udHJvbCBwcm9wczsgc3ByZWFkaW5nIHRoZW0gb250b1xuICAgICAgICAgICAgLy8gYSBob3N0IGVsZW1lbnQgd291bGQgbGVhayBhbnkgYXR0cmlidXRlcy4gUmVuZGVyLXByb3AgYW5kXG4gICAgICAgICAgICAvLyBmdW5jdGlvbiBjaGlsZHJlbiBrZWVwIHRoZSBmdWxsIGZpZWxkUHJvcHMuXG4gICAgICAgICAgICBjb25zdCBkb21TYWZlUHJvcHMgPSBPYmplY3QuYXNzaWduKHsgbmFtZSwgdmFsdWU6IGZpZWxkVmFsdWUsIG9uQ2hhbmdlOiBoYW5kbGVNZXJnZUNoYW5nZSwgb25CbHVyOiBoYW5kbGVNZXJnZUJsdXIgfSwgcHJvcHMpO1xuICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIGRvbVNhZmVQcm9wcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChGcmFnbWVudCwgbnVsbCwgLi4uY2hpbGRyZW4ubWFwKChjaGlsZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwgT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBkb21TYWZlUHJvcHMpLCB7IGtleTogY2hpbGQua2V5IHx8IGluZGV4IH0pKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pO1xuICAgICAgICBGaWVsZENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IGBGaWVsZCgke25hbWV9KWA7XG4gICAgICAgIHJldHVybiBGaWVsZENvbXBvbmVudDtcbiAgICB9KTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBoYW5kbGVTdWJtaXQgLyBoYW5kbGVSZXNldCDigJMgZm9yIDxmb3JtPiBldmVudCBoYW5kbGVyc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IHVzZUV2ZW50Q2FsbGJhY2soKGUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlZFZhbHVlcyA9IHlpZWxkIHZhbGlkYXRlRmllbGRzQXN5bmMoKTtcbiAgICAgICAgICAgIG9uRmluaXNoID09PSBudWxsIHx8IG9uRmluaXNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaCh2YWxpZGF0ZWRWYWx1ZXMpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIC8vIE9ubHkgYSBWQUxJREFUSU9OIGZhaWx1cmUgcmVhY2hlcyBvbkZpbmlzaEZhaWxlZCDigJQgYW4gZXhjZXB0aW9uIG91dFxuICAgICAgICAgICAgLy8gb2YgdGhlIGNvbnN1bWVyJ3Mgb3duIG9uRmluaXNoIGlzIG5vdCBhIHZhbGlkYXRpb24gcmVzdWx0IGFuZCBpc1xuICAgICAgICAgICAgLy8gc3VyZmFjZWQgaW5zdGVhZCBvZiBiZWluZyBtaXNyZXBvcnRlZC5cbiAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBGb3JtVmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgb25GaW5pc2hGYWlsZWQgPT09IG51bGwgfHwgb25GaW5pc2hGYWlsZWQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoRmFpbGVkKHsgdmFsdWVzOiBlcnIudmFsdWVzLCBlcnJvcnM6IGVyci5lcnJvcnMgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbUHJvRm9ybV0gb25GaW5pc2ggdGhyZXcgZHVyaW5nIHN1Ym1pdDonLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSkpO1xuICAgIGNvbnN0IGhhbmRsZVJlc2V0ID0gdXNlRXZlbnRDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICBlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZm9ybUNvcmUucmVzZXRGaWVsZHMoKTtcbiAgICAgICAgb25SZXNldCA9PT0gbnVsbCB8fCBvblJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblJlc2V0KCk7XG4gICAgfSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gRm9ybUluc3RhbmNlIOKAkyBlbmhhbmNlZCBBUEkgZm9yIGNvbnN1bWVycy5cbiAgICAvL1xuICAgIC8vIEV2ZXJ5IG1ldGhvZCBpcyB3cmFwcGVkIGluIHVzZU1lbW9pemVkRm4gKHN0YWJsZSBpZGVudGl0eSwgYWx3YXlzIHJlYWRzIHRoZVxuICAgIC8vIGxhdGVzdCBzdG9yZSBzdGF0ZSkgc28gdGhlIGluc3RhbmNlIG9iamVjdCBpdHNlbGYgaXMgSURFTlRJVFktU1RBQkxFIGZvclxuICAgIC8vIHRoZSBsaWZldGltZSBvZiB0aGUgZm9ybSDigJQgdGhpcyBpcyB3aGF0IGxldHMgUHJvRm9ybSBwdWJsaXNoIGl0IHRocm91Z2ggdGhlXG4gICAgLy8gc3RhYmxlIGNvbnRleHQgd2l0aG91dCByZS1yZW5kZXJpbmcgc3Vic2NyaWJlcnMgb24gZWFjaCBrZXlzdHJva2UuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgZ2V0RmllbGRFcnJvciA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHN0b3JlLmdldFN0YXRlKCkuZXJyb3JzW25hbWVdKTtcbiAgICBjb25zdCBnZXRGaWVsZFdhcm5pbmcgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiBzdG9yZS5nZXRTdGF0ZSgpLndhcm5pbmdzW25hbWVdKTtcbiAgICBjb25zdCBnZXRGaWVsZHNFcnJvciA9IHVzZU1lbW9pemVkRm4oKG5hbWVMaXN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9ycyA9IHN0b3JlLmdldFN0YXRlKCkuZXJyb3JzO1xuICAgICAgICBpZiAoIW5hbWVMaXN0KVxuICAgICAgICAgICAgcmV0dXJuIGVycm9ycztcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICAgIG5hbWVMaXN0LmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvcnNbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbbmFtZV0gPSBlcnJvcnNbbmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuICAgIGNvbnN0IGlzRmllbGRUb3VjaGVkID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4gc3RvcmUuZ2V0U3RhdGUoKS50b3VjaGVkW25hbWVdIHx8IGZhbHNlKTtcbiAgICBjb25zdCBpc0ZpZWxkc1RvdWNoZWQgPSB1c2VNZW1vaXplZEZuKChuYW1lTGlzdCwgYWxsRmllbGRzVG91Y2hlZCA9IGZhbHNlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvdWNoZWQgPSBzdG9yZS5nZXRTdGF0ZSgpLnRvdWNoZWQ7XG4gICAgICAgIGlmICghbmFtZUxpc3QpIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0b3VjaGVkKS5zb21lKChrZXkpID0+IHRvdWNoZWRba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFsbEZpZWxkc1RvdWNoZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBuYW1lTGlzdC5ldmVyeSgobmFtZSkgPT4gdG91Y2hlZFtuYW1lXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5hbWVMaXN0LnNvbWUoKG5hbWUpID0+IHRvdWNoZWRbbmFtZV0pO1xuICAgIH0pO1xuICAgIGNvbnN0IGlzRmllbGRWYWxpZGF0aW5nID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4gc3RvcmUuZ2V0U3RhdGUoKS52YWxpZGF0aW5nW25hbWVdIHx8IGZhbHNlKTtcbiAgICBjb25zdCBzZXRGaWVsZHNFcnJvciA9IHVzZU1lbW9pemVkRm4oKGZpZWxkc0Vycm9yKSA9PiB7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGZpZWxkc0Vycm9yKS5mb3JFYWNoKChbbmFtZSwgZXJyb3JdKSA9PiB7XG4gICAgICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZEVycm9yKG5hbWUsIGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmllbGRUb3VjaGVkID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgaXNUb3VjaGVkID0gdHJ1ZSkgPT4ge1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7IHRvdWNoZWQ6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc3RvcmUuZ2V0U3RhdGUoKS50b3VjaGVkKSwgeyBbbmFtZV06IGlzVG91Y2hlZCB9KSB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBzZXRGaWVsZHNUb3VjaGVkID0gdXNlTWVtb2l6ZWRGbigoZmllbGRzVG91Y2gpID0+IHtcbiAgICAgICAgc3RvcmUuc2V0U3RhdGUoeyB0b3VjaGVkOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHN0b3JlLmdldFN0YXRlKCkudG91Y2hlZCksIGZpZWxkc1RvdWNoKSB9KTtcbiAgICB9KTtcbiAgICBjb25zdCByZXNldEZvcm1GaWVsZHMgPSB1c2VNZW1vaXplZEZuKChmaWVsZHMpID0+IHtcbiAgICAgICAgaWYgKCFmaWVsZHMpIHtcbiAgICAgICAgICAgIGZvcm1Db3JlLnJlc2V0RmllbGRzKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gTW91bnQtZnJvemVuIGluaXRpYWxWYWx1ZXMg4oCUIGNvbnNpc3RlbnQgd2l0aCB0aGUgZnVsbCByZXNldEZpZWxkcy5cbiAgICAgICAgLy8gUmVhZHMgQU5EIHdyaXRlcyBhcmUgbmVzdGVkLXBhdGggYXdhcmUsIHNvIGRvdC1wYXRoIG5hbWVzXG4gICAgICAgIC8vIChgYWRkcmVzcy5jaXR5YCwgYGl0ZW1zLjAudGl0bGVgKSByZXNldCBjb3JyZWN0bHkgaW5zdGVhZCBvZiBwcm9iaW5nIGFcbiAgICAgICAgLy8gbGl0ZXJhbCBrZXkgYW5kIHNoYWxsb3ctbWVyZ2luZyBvbmUgYmFjay5cbiAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IGZvcm1Db3JlLmdldEluaXRpYWxWYWx1ZXMoKTtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICAgICAgICBsZXQgbmV3VmFsdWVzID0gc3RhdGUudmFsdWVzO1xuICAgICAgICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluaXRpYWwgPSByZXNvbHZlVmFsdWUoaW5pdGlhbFZhbHVlcywgZmllbGQpO1xuICAgICAgICAgICAgbmV3VmFsdWVzID0gZmllbGQuaW5jbHVkZXMoJy4nKVxuICAgICAgICAgICAgICAgID8gc2V0TmVzdGVkVmFsdWUobmV3VmFsdWVzLCBmaWVsZCwgaW5pdGlhbClcbiAgICAgICAgICAgICAgICA6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgbmV3VmFsdWVzKSwgeyBbZmllbGRdOiBpbml0aWFsIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gTGlrZSB0aGUgZnVsbCByZXNldDogY2xlYXIgQUxMIHBlci1maWVsZCBtZXRhIChlcnJvcnMgQU5EIHdhcm5pbmdzIEFORFxuICAgICAgICAvLyB0b3VjaGVkL3ZhbGlkYXRpbmcpLCBpbnZhbGlkYXRlIGluLWZsaWdodCB2YWxpZGF0aW9uIHJ1bnMsIGFuZCBsYW5kXG4gICAgICAgIC8vIGV2ZXJ5dGhpbmcgaW4gT05FIGNvbW1pdC4gTm8gb25WYWx1ZXNDaGFuZ2Ug4oCUIHJlc2V0IGlzIG5vdCBhIGNoYW5nZVxuICAgICAgICAvLyBldmVudCBvbiBlaXRoZXIgcGF0aC5cbiAgICAgICAgZm9ybUNvcmUuaW52YWxpZGF0ZVZhbGlkYXRpb25SdW5zKGZpZWxkcyk7XG4gICAgICAgIGNvbnN0IG5ld0Vycm9ycyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLmVycm9ycyk7XG4gICAgICAgIGNvbnN0IG5ld1dhcm5pbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUud2FybmluZ3MpO1xuICAgICAgICBjb25zdCBuZXdUb3VjaGVkID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUudG91Y2hlZCk7XG4gICAgICAgIGNvbnN0IG5ld1ZhbGlkYXRpbmcgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS52YWxpZGF0aW5nKTtcbiAgICAgICAgZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBkZWxldGUgbmV3RXJyb3JzW2ZpZWxkXTtcbiAgICAgICAgICAgIGRlbGV0ZSBuZXdXYXJuaW5nc1tmaWVsZF07XG4gICAgICAgICAgICBkZWxldGUgbmV3VG91Y2hlZFtmaWVsZF07XG4gICAgICAgICAgICBkZWxldGUgbmV3VmFsaWRhdGluZ1tmaWVsZF07XG4gICAgICAgIH0pO1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICB2YWx1ZXM6IG5ld1ZhbHVlcyxcbiAgICAgICAgICAgIGVycm9yczogbmV3RXJyb3JzLFxuICAgICAgICAgICAgd2FybmluZ3M6IG5ld1dhcm5pbmdzLFxuICAgICAgICAgICAgdG91Y2hlZDogbmV3VG91Y2hlZCxcbiAgICAgICAgICAgIHZhbGlkYXRpbmc6IG5ld1ZhbGlkYXRpbmcsXG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHN1Ym1pdFdpdGhWYWxpZGF0aW9uID0gdXNlTWVtb2l6ZWRGbigoY2FsbGJhY2spID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBsZXQgdmFsaWRhdGVkVmFsdWVzO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFsaWRhdGVkVmFsdWVzID0geWllbGQgdmFsaWRhdGVGaWVsZHNBc3luYygpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChfYSkge1xuICAgICAgICAgICAgLy8gVmFsaWRhdGlvbiBmYWlsdXJlIOKAlCB0aGUgZmllbGQgZXJyb3JzIGFyZSBhbHJlYWR5IGluIHRoZSBzdG9yZS5cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHlpZWxkIGNhbGxiYWNrKHZhbGlkYXRlZFZhbHVlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gQSB0aHJvd2luZyBjYWxsYmFjayBpcyBhIGNvbnN1bWVyIGJ1Zywgbm90IGEgdmFsaWRhdGlvbiBmYWlsdXJlIOKAlFxuICAgICAgICAgICAgICAgIC8vIHN1cmZhY2UgaXQgKG1pcnJvcmluZyByYy1maWVsZC1mb3JtJ3Mgb25GaW5pc2ggaGFuZGxpbmcpIGluc3RlYWRcbiAgICAgICAgICAgICAgICAvLyBvZiBzd2FsbG93aW5nIGl0IHNpbGVudGx5LlxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tQcm9Gb3JtXSBzdWJtaXQgY2FsbGJhY2sgdGhyZXc6JywgZXJyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZWRWYWx1ZXM7XG4gICAgfSkpO1xuICAgIGNvbnN0IGZvcm1JbnN0YW5jZSA9IHVzZU1lbW8oKCkgPT4gKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZm9ybUNvcmUuZm9ybUluc3RhbmNlKSwgeyBnZXRGaWVsZFZhbHVlOiBmb3JtQ29yZS5nZXRGaWVsZFZhbHVlLCBnZXRGaWVsZHNWYWx1ZTogZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUsIHZhbGlkYXRlRmllbGRzOiB2YWxpZGF0ZUZpZWxkc0FzeW5jLCBzZXRGaWVsZFZhbHVlOiBmb3JtQ29yZS5zZXRGaWVsZFZhbHVlLCBzZXRGaWVsZHNWYWx1ZTogZm9ybUNvcmUuc2V0RmllbGRzVmFsdWUsIGdldEZpZWxkRXJyb3I6IGdldEZpZWxkRXJyb3IsIGdldEZpZWxkV2FybmluZzogZ2V0RmllbGRXYXJuaW5nLCBnZXRGaWVsZHNFcnJvcjogZ2V0RmllbGRzRXJyb3IsIGlzRmllbGRUb3VjaGVkOiBpc0ZpZWxkVG91Y2hlZCwgaXNGaWVsZHNUb3VjaGVkOiBpc0ZpZWxkc1RvdWNoZWQsIGlzRmllbGRWYWxpZGF0aW5nOiBpc0ZpZWxkVmFsaWRhdGluZywgc2V0RmllbGRFcnJvcjogZm9ybUNvcmUuc2V0RmllbGRFcnJvciwgc2V0RmllbGRzRXJyb3IsIHNldEZpZWxkVG91Y2hlZDogc2V0RmllbGRUb3VjaGVkLCBzZXRGaWVsZHNUb3VjaGVkLCByZXNldEZpZWxkczogcmVzZXRGb3JtRmllbGRzLCBzdWJtaXQ6IHN1Ym1pdFdpdGhWYWxpZGF0aW9uLCBkZWZpbmVGaWVsZCwgcmVnaXN0ZXJGaWVsZDogZm9ybUNvcmUucmVnaXN0ZXJGaWVsZCwgdW5yZWdpc3RlckZpZWxkOiBmb3JtQ29yZS51bnJlZ2lzdGVyRmllbGQgfSkpLCBbXG4gICAgICAgIGZvcm1Db3JlLmZvcm1JbnN0YW5jZSxcbiAgICAgICAgZm9ybUNvcmUuZ2V0RmllbGRWYWx1ZSxcbiAgICAgICAgZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUsXG4gICAgICAgIGZvcm1Db3JlLnNldEZpZWxkVmFsdWUsXG4gICAgICAgIGZvcm1Db3JlLnNldEZpZWxkc1ZhbHVlLFxuICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZEVycm9yLFxuICAgICAgICBmb3JtQ29yZS5yZWdpc3RlckZpZWxkLFxuICAgICAgICBmb3JtQ29yZS51bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHZhbGlkYXRlRmllbGRzQXN5bmMsXG4gICAgICAgIGdldEZpZWxkRXJyb3IsXG4gICAgICAgIGdldEZpZWxkV2FybmluZyxcbiAgICAgICAgZ2V0RmllbGRzRXJyb3IsXG4gICAgICAgIGlzRmllbGRUb3VjaGVkLFxuICAgICAgICBpc0ZpZWxkc1RvdWNoZWQsXG4gICAgICAgIGlzRmllbGRWYWxpZGF0aW5nLFxuICAgICAgICBzZXRGaWVsZHNFcnJvcixcbiAgICAgICAgc2V0RmllbGRUb3VjaGVkLFxuICAgICAgICBzZXRGaWVsZHNUb3VjaGVkLFxuICAgICAgICByZXNldEZvcm1GaWVsZHMsXG4gICAgICAgIHN1Ym1pdFdpdGhWYWxpZGF0aW9uLFxuICAgICAgICBkZWZpbmVGaWVsZCxcbiAgICBdKTtcbiAgICAvLyBGdW5jdGlvbi1mb3JtIHJ1bGVzIGdldCB0aGUgRlVMTCBmb3JtIGluc3RhbmNlIChlcnJvciBnZXR0ZXJzLCB0b3VjaGVkXG4gICAgLy8gc3RhdGUsIG11dGF0b3JzKSBpbnN0ZWFkIG9mIHRoZSBiYXJlIGNvcmUgbWV0aG9kcy4gUmVmIHdyaXRlIOKAlCBjaGVhcCBhbmRcbiAgICAvLyBpZGVtcG90ZW50IHBlciByZW5kZXIuXG4gICAgZm9ybUNvcmUuc2V0UnVsZUNvbnRleHRJbnN0YW5jZShmb3JtSW5zdGFuY2UpO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEludGVybmFscyDigJMgZXhwb3NlZCBmb3IgUHJvRm9ybSBpbnRlZ3JhdGlvbi4gRGF0YSBmaWVsZHMgYXJlIEdFVFRFUlMgdGhhdFxuICAgIC8vIHJlYWQgdGhlIGxpdmUgc3RvcmUsIHNvIHRoZSBvYmplY3QgaXMgaWRlbnRpdHktc3RhYmxlIHlldCBuZXZlciBzdGFsZS5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBpbnRlcm5hbHMgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgICAgIGdldCB2YWx1ZXMoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuZ2V0U3RhdGUoKS52YWx1ZXM7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBlcnJvcnMoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuZ2V0U3RhdGUoKS5lcnJvcnM7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCB3YXJuaW5ncygpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5nZXRTdGF0ZSgpLndhcm5pbmdzO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgdG91Y2hlZCgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5nZXRTdGF0ZSgpLnRvdWNoZWQ7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCB2YWxpZGF0aW5nKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmdldFN0YXRlKCkudmFsaWRhdGluZztcbiAgICAgICAgfSxcbiAgICAgICAgZmllbGRSdWxlczogZm9ybUNvcmUuZmllbGRSdWxlcyxcbiAgICAgICAgc2V0RmllbGRWYWx1ZTogZm9ybUNvcmUuc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRFcnJvcjogZm9ybUNvcmUuc2V0RmllbGRFcnJvcixcbiAgICAgICAgc2V0RmllbGRXYXJuaW5nOiBmb3JtQ29yZS5zZXRGaWVsZFdhcm5pbmcsXG4gICAgICAgIHZhbGlkYXRlRmllbGRBc3luYyxcbiAgICAgICAgcmVnaXN0ZXJGaWVsZDogZm9ybUNvcmUucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgdW5yZWdpc3RlckZpZWxkOiBmb3JtQ29yZS51bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHJldGFpbkZpZWxkOiBmb3JtQ29yZS5yZXRhaW5GaWVsZCxcbiAgICAgICAgcmVsZWFzZUZpZWxkOiBmb3JtQ29yZS5yZWxlYXNlRmllbGQsXG4gICAgICAgIGhhbmRsZVN1Ym1pdCxcbiAgICAgICAgaGFuZGxlUmVzZXQsXG4gICAgfSksIFtcbiAgICAgICAgc3RvcmUsXG4gICAgICAgIGZvcm1Db3JlLmZpZWxkUnVsZXMsXG4gICAgICAgIGZvcm1Db3JlLnNldEZpZWxkVmFsdWUsXG4gICAgICAgIGZvcm1Db3JlLnNldEZpZWxkRXJyb3IsXG4gICAgICAgIGZvcm1Db3JlLnNldEZpZWxkV2FybmluZyxcbiAgICAgICAgdmFsaWRhdGVGaWVsZEFzeW5jLFxuICAgICAgICBmb3JtQ29yZS5yZWdpc3RlckZpZWxkLFxuICAgICAgICBmb3JtQ29yZS51bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIGZvcm1Db3JlLnJldGFpbkZpZWxkLFxuICAgICAgICBmb3JtQ29yZS5yZWxlYXNlRmllbGQsXG4gICAgICAgIGhhbmRsZVN1Ym1pdCxcbiAgICAgICAgaGFuZGxlUmVzZXQsXG4gICAgXSk7XG4gICAgcmV0dXJuIHsgZm9ybUluc3RhbmNlLCBpbnRlcm5hbHMsIHN0b3JlIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgdXNlRm9ybTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
789
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm0uanMiLCJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvaG9va3MvdXNlRm9ybS50cyJdLCJuYW1lcyI6WyJlIiwidCIsInIiLCJTeW1ib2wiLCJuIiwiaXRlcmF0b3IiLCJvIiwidG9TdHJpbmdUYWciLCJpIiwiYyIsInByb3RvdHlwZSIsIkdlbmVyYXRvciIsInUiLCJPYmplY3QiLCJjcmVhdGUiLCJfcmVnZW5lcmF0b3JEZWZpbmUyIiwiZiIsInAiLCJ5IiwiRyIsInYiLCJhIiwiZCIsImJpbmQiLCJsZW5ndGgiLCJsIiwiVHlwZUVycm9yIiwiY2FsbCIsImRvbmUiLCJ2YWx1ZSIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJnZXRQcm90b3R5cGVPZiIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiZGlzcGxheU5hbWUiLCJfcmVnZW5lcmF0b3IiLCJ3IiwibSIsImRlZmluZVByb3BlcnR5IiwiX3JlZ2VuZXJhdG9yRGVmaW5lIiwiX2ludm9rZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX24iLCJGIiwicyIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIl9fYXdhaXRlciIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiUCIsImdlbmVyYXRvciIsImFkb3B0IiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJ0aGVuIiwiYXBwbHkiLCJfX3Jlc3QiLCJoYXNPd25Qcm9wZXJ0eSIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImdldExvY2FsZSIsInVzZU1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJtZW1vIiwiRnJhZ21lbnQiLCJSZWFjdCIsInVzZUV2ZW50Q2FsbGJhY2siLCJ1c2VNZW1vaXplZEZuIiwidXNlRm9ybUNvcmUiLCJyZXNvbHZlVmFsdWUiLCJzZXROZXN0ZWRWYWx1ZSIsImNvZXJjZUZhaWx1cmVSZWFzb24iLCJmaWx0ZXJSdWxlc0J5VHJpZ2dlciIsIm5vcm1hbGl6ZVRyaWdnZXJzIiwicmVzb2x2ZVJ1bGVzIiwicnVuUnVsZXNBc3luYyIsInVzZVN0b3JlU2VsZWN0b3IiLCJzaGFsbG93RXF1YWxBcnJheXMiLCJzYW1lVmFsaWRhdGlvbk5vZGUiLCJGb3JtVmFsaWRhdGlvbkVycm9yIiwiYXNSdWxlQXJyYXkiLCJydWxlIiwicnVsZUhhc1ZhbGlkYXRvciIsInZhbGlkYXRvciIsImRlZmF1bHRGaWVsZCIsInNvbWUiLCJmaWVsZHMiLCJ2YWx1ZXMiLCJzdWIiLCJoYXNSZXNvbHZlZFZhbGlkYXRvciIsInJlc29sdmVkIiwidXNlRm9ybSIsImNvbmZpZyIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIm9uRmluaXNoIiwib25GaW5pc2hGYWlsZWQiLCJvblJlc2V0IiwiX2NvbmZpZyR2YWxpZGF0ZVRyaWdnIiwidmFsaWRhdGVUcmlnZ2VyIiwiZm9ybUNvcmUiLCJzdG9yZSIsImxhc3RBc3luY0Vwb2NoUmVmIiwibWFya1ZhbGlkYXRpbmciLCJuYW1lcyIsImFzc2lnbiIsImdldFN0YXRlIiwidmFsaWRhdGluZyIsImZvckVhY2giLCJzZXRTdGF0ZSIsImNvbW1pdFJ1bGVPdXRjb21lcyIsIm91dGNvbWVzIiwiY2xlYXJWYWxpZGF0aW5nIiwic3RhdGUiLCJlcnJvcnNDaGFuZ2VkIiwid2FybmluZ3NDaGFuZ2VkIiwibmV3RXJyb3JzIiwiZXJyb3JzIiwibmV3V2FybmluZ3MiLCJ3YXJuaW5ncyIsIl9pdGVyYXRvciIsIl9zdGVwIiwiX3N0ZXAkdmFsdWUiLCJlcnJvciIsIndhcm5pbmciLCJlcnIiLCJmbGFnc1RvQ2xlYXIiLCJmaWx0ZXIiLCJwYXRjaCIsIm5ld1ZhbGlkYXRpbmciLCJrZXlzIiwidmFsaWRhdGVGaWVsZEFzeW5jIiwicnVsZXMiLCJfY2FsbGVlIiwiX2EiLCJlcG9jaCIsImZsYWdnZWQiLCJvdXRjb21lIiwiX3lpZWxkJHJ1blJ1bGVzQXN5bmMiLCJpc0N1cnJlbnQiLCJjbGVhckZsYWdzIiwiX3QiLCJfY29udGV4dCIsImlzVmFsaWQiLCJiZWdpblZhbGlkYXRpb25SdW4iLCJnZXRGaWVsZHNWYWx1ZSIsImdldFJ1bGVDb250ZXh0SW5zdGFuY2UiLCJmbGFnZ2VkTmFtZSIsImN1cnJlbnQiLCJ2YWxpZGF0aW9uRmFpbGVkIiwiaXNWYWxpZGF0aW9uUnVuQ3VycmVudCIsImhhbmRsZUZpZWxkQmx1ciIsImZpZWxkVHJpZ2dlciIsIl9jYWxsZWUyIiwidG91Y2hlZCIsImFwcGxpY2FibGUiLCJfY29udGV4dDIiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRGaWVsZFJ1bGVzIiwidmFsaWRhdGVGaWVsZHNBc3luYyIsIm5hbWVMaXN0IiwiX2NhbGxlZTQiLCJmaWVsZHNUb1ZhbGlkYXRlIiwiZmllbGRFcnJvcnMiLCJyZXNvbHZlZEJ5RmllbGQiLCJlcG9jaEJ5RmllbGQiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiX2NvbnRleHQ0IiwiZmllbGRSdWxlcyIsIk1hcCIsInNldCIsImdldCIsImFsbCIsIm1hcCIsIl9jYWxsZWUzIiwiX3lpZWxkJHJ1blJ1bGVzQXN5bmMyIiwiX3QyIiwiX2NvbnRleHQzIiwicHVzaCIsInJlZHVjZSIsImFjYyIsImRlZmluZUZpZWxkIiwiZmllbGRPcHRpb25zIiwiX2ZpZWxkT3B0aW9ucyRydWxlcyIsIkZpZWxkQ29tcG9uZW50IiwiY2hpbGRyZW4iLCJyZW5kZXIiLCJwcm9wcyIsIl91c2VTdG9yZVNlbGVjdG9yIiwiX3VzZVN0b3JlU2VsZWN0b3IyIiwiX3NsaWNlZFRvQXJyYXkiLCJmaWVsZFZhbHVlIiwiZmllbGRFcnJvciIsImZpZWxkVG91Y2hlZCIsImZpZWxkVmFsaWRhdGluZyIsInJldGFpbkZpZWxkIiwiZXhpc3RpbmdSdWxlcyIsInJlZ2lzdGVyRmllbGQiLCJyZWxlYXNlRmllbGQiLCJoYW5kbGVGaWVsZENoYW5nZSIsInNldEZpZWxkVmFsdWUiLCJoYW5kbGVCbHVyIiwiZmllbGRQcm9wcyIsIm9uQ2hhbmdlIiwib25CbHVyIiwiaGFuZGxlTWVyZ2VDaGFuZ2UiLCJfdHlwZW9mIiwidGFyZ2V0IiwiaXNWYWxpZEVsZW1lbnQiLCJoYW5kbGVNZXJnZUJsdXIiLCJkb21TYWZlUHJvcHMiLCJjbG9uZUVsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiY2hpbGQiLCJpbmRleCIsImtleSIsImhhbmRsZVN1Ym1pdCIsIl9jYWxsZWU1IiwidmFsaWRhdGVkVmFsdWVzIiwiX3QzIiwiX2NvbnRleHQ1IiwicHJldmVudERlZmF1bHQiLCJjb25zb2xlIiwiaGFuZGxlUmVzZXQiLCJyZXNldEZpZWxkcyIsImdldEZpZWxkRXJyb3IiLCJnZXRGaWVsZFdhcm5pbmciLCJnZXRGaWVsZHNFcnJvciIsImlzRmllbGRUb3VjaGVkIiwiaXNGaWVsZHNUb3VjaGVkIiwiYWxsRmllbGRzVG91Y2hlZCIsImV2ZXJ5IiwiaXNGaWVsZFZhbGlkYXRpbmciLCJzZXRGaWVsZHNFcnJvciIsImZpZWxkc0Vycm9yIiwiZW50cmllcyIsIl9yZWYiLCJfcmVmMiIsInNldEZpZWxkRXJyb3IiLCJzZXRGaWVsZFRvdWNoZWQiLCJpc1RvdWNoZWQiLCJzZXRGaWVsZHNUb3VjaGVkIiwiZmllbGRzVG91Y2giLCJyZXNldEZvcm1GaWVsZHMiLCJpbml0aWFsVmFsdWVzIiwiZ2V0SW5pdGlhbFZhbHVlcyIsIm5ld1ZhbHVlcyIsImZpZWxkIiwiaW5pdGlhbCIsImluY2x1ZGVzIiwiaW52YWxpZGF0ZVZhbGlkYXRpb25SdW5zIiwibmV3VG91Y2hlZCIsInN1Ym1pdFdpdGhWYWxpZGF0aW9uIiwiY2FsbGJhY2siLCJfY2FsbGVlNiIsIl90NCIsIl90NSIsIl9jb250ZXh0NiIsImZvcm1JbnN0YW5jZSIsImdldEZpZWxkVmFsdWUiLCJ2YWxpZGF0ZUZpZWxkcyIsInNldEZpZWxkc1ZhbHVlIiwic3VibWl0IiwidW5yZWdpc3RlckZpZWxkIiwic2V0UnVsZUNvbnRleHRJbnN0YW5jZSIsImludGVybmFscyIsInNldEZpZWxkV2FybmluZyJdLCJtYXBwaW5ncyI6Ijs7OzswQkFDQSx1S0FBQUEsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsd0JBQUFDLE1BQUEsR0FBQUEsTUFBQSxPQUFBQyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsUUFBQSxrQkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLFdBQUEsOEJBQUFDLEVBQUFOLENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsUUFBQUMsQ0FBQSxHQUFBTCxDQUFBLElBQUFBLENBQUEsQ0FBQU0sU0FBQSxZQUFBQyxTQUFBLEdBQUFQLENBQUEsR0FBQU8sU0FBQSxFQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsTUFBQSxDQUFBTCxDQUFBLENBQUFDLFNBQUEsVUFBQUssbUJBQUEsQ0FBQUgsQ0FBQSx1QkFBQVYsQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsUUFBQUUsQ0FBQSxFQUFBQyxDQUFBLEVBQUFHLENBQUEsRUFBQUksQ0FBQSxNQUFBQyxDQUFBLEdBQUFYLENBQUEsUUFBQVksQ0FBQSxPQUFBQyxDQUFBLEtBQUFGLENBQUEsS0FBQWIsQ0FBQSxLQUFBZ0IsQ0FBQSxFQUFBcEIsQ0FBQSxFQUFBcUIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFOLENBQUEsRUFBQU0sQ0FBQSxDQUFBQyxJQUFBLENBQUF2QixDQUFBLE1BQUFzQixDQUFBLFdBQUFBLEVBQUFyQixDQUFBLEVBQUFDLENBQUEsV0FBQU0sQ0FBQSxHQUFBUCxDQUFBLEVBQUFR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UUFBUSxDQUFDNkksYUFBYTtNQUNyQzRCLGVBQWUsRUFBRXpLLFFBQVEsQ0FBQ3lLLGVBQWU7TUFDekMxSSxrQkFBa0IsRUFBbEJBLGtCQUFrQjtNQUNsQm1FLGFBQWEsRUFBRWxHLFFBQVEsQ0FBQ2tHLGFBQWE7TUFDckNvRSxlQUFlLEVBQUV0SyxRQUFRLENBQUNzSyxlQUFlO01BQ3pDdEUsV0FBVyxFQUFFaEcsUUFBUSxDQUFDZ0csV0FBVztNQUNqQ0csWUFBWSxFQUFFbkcsUUFBUSxDQUFDbUcsWUFBWTtNQUNuQ29CLFlBQVksRUFBWkEsWUFBWTtNQUNaTyxXQUFXLEVBQVhBO0lENUpGLENDNkpDO0VBQUEsQ0FBQyxFQUNGLENBQ0U3SCxLQUFLLEVBQ0xELFFBQVEsQ0FBQ3FFLFVBQVUsRUFDbkJyRSxRQUFRLENBQUNxRyxhQUFhLEVBQ3RCckcsUUFBUSxDQUFDNkksYUFBYSxFQUN0QjdJLFFBQVEsQ0FBQ3lLLGVBQWUsRUFDeEIxSSxrQkFBa0IsRUFDbEIvQixRQUFRLENBQUNrRyxhQUFhLEVBQ3RCbEcsUUFBUSxDQUFDc0ssZUFBZSxFQUN4QnRLLFFBQVEsQ0FBQ2dHLFdBQVcsRUFDcEJoRyxRQUFRLENBQUNtRyxZQUFZLEVBQ3JCb0IsWUFBWSxFQUNaTyxXQUFXLENBQ1osQ0FDRjtFQUVELE9BQU87SUFBRW1DLFlBQVksRUFBWkEsWUFBWTtJQUFFTyxTQUFTLEVBQVRBLFNBQVM7SUFBRXZLLEtBQUssRUFBTEE7RUFBSyxDQUFFO0FBQzNDLENBQUM7QUFFRCxlQUFlVixPQUFPIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGdldExvY2FsZSB9IGZyb20gJy4uLy4uLy4uL0NvbmZpZ1Byb3ZpZGVyL2NvbnRleHQnO1xuaW1wb3J0IHsgdXNlTWVtbywgdXNlRWZmZWN0LCB1c2VSZWYsIG1lbW8sIEZyYWdtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgdXNlTWVtb2l6ZWRGbiBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZU1lbW9pemVkRm4nO1xuaW1wb3J0IHsgdXNlRm9ybUNvcmUgfSBmcm9tICcuL3VzZUZvcm1Db3JlJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSwgc2V0TmVzdGVkVmFsdWUgfSBmcm9tICcuLi9wYXRoVXRpbHMnO1xuaW1wb3J0IHsgY29lcmNlRmFpbHVyZVJlYXNvbiwgZmlsdGVyUnVsZXNCeVRyaWdnZXIsIG5vcm1hbGl6ZVRyaWdnZXJzLCByZXNvbHZlUnVsZXMsIHJ1blJ1bGVzQXN5bmMsIH0gZnJvbSAnLi4vcnVuUnVsZXMnO1xuaW1wb3J0IHsgdXNlU3RvcmVTZWxlY3Rvciwgc2hhbGxvd0VxdWFsQXJyYXlzLCBzYW1lVmFsaWRhdGlvbk5vZGUgfSBmcm9tICcuLi9mb3JtU3RvcmUnO1xuaW1wb3J0IHsgRm9ybVZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4uL3ZhbGlkYXRpb25FcnJvcic7XG4vKipcbiAqIE9ubHkgcnVsZXMgd2l0aCBhIGN1c3RvbSBgdmFsaWRhdG9yYCBjYW4gYmUgZ2VudWluZWx5IGFzeW5jaHJvbm91cyDigJRcbiAqIGJ1aWx0aW4gcnVsZXMgcmVzb2x2ZSB3aXRoaW4gYSBtaWNyb3Rhc2ssIHNvIGZsaXBwaW5nIGB2YWxpZGF0aW5nYCBmb3JcbiAqIHRoZW0gd291bGQgb25seSBjaHVybiBzdWJzY3JpYmVycyB3aXRob3V0IGV2ZXIgYmVpbmcgdmlzaWJsZS4gRGVjaWRlZCBvblxuICogUkVTT0xWRUQgcnVsZXM6IGEgZnVuY3Rpb24tZm9ybSBydWxlIHRoYXQgcmVzb2x2ZXMgdG8gYnVpbHRpbi1vbmx5IGNoZWNrc1xuICogbXVzdCBub3QgZmxpY2tlciB0aGUgZmxhZy5cbiAqXG4gKiBUaGUgYXN5bmMgZW5naW5lIGF3YWl0cyB2YWxpZGF0b3JzIG5lc3RlZCBpbnNpZGUgYGZpZWxkc2AgLyBgZGVmYXVsdEZpZWxkYFxuICogdG9vLCBzbyB0aGUgZGVjaXNpb24gbXVzdCBkZXNjZW5kIHRoZSBzYW1lIHdheSDigJQgb3RoZXJ3aXNlIGEgZGVlcC1vbmx5XG4gKiB2YWxpZGF0b3IgKGUuZy4gYHsgZGVmYXVsdEZpZWxkOiB7IHZhbGlkYXRvciB9IH1gKSBydW5zIHBlbmRpbmcgd2l0aCB0aGVcbiAqIGZsYWcgc3R1Y2sgZmFsc2UsIGFuZCBgaXNGaWVsZFZhbGlkYXRpbmcobmFtZSlgIHVuZGVyLXJlcG9ydHMgZm9yIHRoZSB3aG9sZVxuICogd2luZG93LiBPdmVyLWZsYWdnaW5nIHdoZW4gdGhlIGRlZXAgdmFsaWRhdG9yIHdvbid0IGFjdHVhbGx5IGZpcmUgKGVtcHR5IC9cbiAqIHByaW1pdGl2ZSB2YWx1ZSkgaXMgYWNjZXB0YWJsZTogdGhlIGZsYWcgaXMgZGVjaWRlZCBvbiBydWxlIFNIQVBFLCBleGFjdGx5XG4gKiBhcyB0aGUgdG9wLWxldmVsIGNhc2UgYWxyZWFkeSBvdmVyLWZsYWdzIGEgdmFsaWRhdG9yIHNob3J0LWNpcmN1aXRlZCBieSBhblxuICogZWFybGllciBidWlsdGluIGZhaWx1cmU7IHRoZSBydW4gY2xlYXJzIGl0IG9uIHNldHRsZSBlaXRoZXIgd2F5LlxuICovXG5jb25zdCBhc1J1bGVBcnJheSA9IChydWxlKSA9PiBydWxlID8gKEFycmF5LmlzQXJyYXkocnVsZSkgPyBydWxlIDogW3J1bGVdKSA6IFtdO1xuY29uc3QgcnVsZUhhc1ZhbGlkYXRvciA9IChydWxlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBydWxlLnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgaWYgKGFzUnVsZUFycmF5KHJ1bGUuZGVmYXVsdEZpZWxkKS5zb21lKHJ1bGVIYXNWYWxpZGF0b3IpKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAocnVsZS5maWVsZHMpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMocnVsZS5maWVsZHMpLnNvbWUoKHN1YikgPT4gYXNSdWxlQXJyYXkoc3ViKS5zb21lKHJ1bGVIYXNWYWxpZGF0b3IpKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcbmNvbnN0IGhhc1Jlc29sdmVkVmFsaWRhdG9yID0gKHJlc29sdmVkKSA9PiByZXNvbHZlZC5zb21lKHJ1bGVIYXNWYWxpZGF0b3IpO1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyB1c2VGb3JtXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmV4cG9ydCBjb25zdCB1c2VGb3JtID0gKGNvbmZpZyA9IHt9KSA9PiB7XG4gICAgY29uc3QgeyBvbkZpbmlzaCwgb25GaW5pc2hGYWlsZWQsIG9uUmVzZXQsIHZhbGlkYXRlVHJpZ2dlciA9ICdvbkNoYW5nZScsIH0gPSBjb25maWc7XG4gICAgY29uc3QgZm9ybUNvcmUgPSB1c2VGb3JtQ29yZShjb25maWcpO1xuICAgIGNvbnN0IHsgc3RvcmUgfSA9IGZvcm1Db3JlO1xuICAgIC8vIEVwb2NoIG9mIHRoZSBMQVRFU1QgYXN5bmMgcnVuIHRoYXQgcmFpc2VkIGVhY2ggZmllbGQncyBgdmFsaWRhdGluZ2AgZmxhZy5cbiAgICAvLyBBIHNldHRsaW5nIHJ1biBjbGVhcnMgdGhlIGZsYWcgb25seSB3aGlsZSBpdCBpcyBzdGlsbCB0aGUgbGF0ZXN0IHJhaXNlciDigJRcbiAgICAvLyBhbiBvbGRlciBydW4gbXVzdCBub3QgYmxhbmsgdGhlIHNwaW5uZXIgb2YgYSBuZXdlciBvbmUsIGFuZCBhIHJ1blxuICAgIC8vIHN1cGVyc2VkZWQgYnkgYSBTWU5DIGNvbW1pdCAod2hpY2ggbmV2ZXIgdG91Y2hlcyBmbGFncykgbXVzdCBzdGlsbCBjbGVhblxuICAgIC8vIHVwIGFmdGVyIGl0c2VsZi5cbiAgICBjb25zdCBsYXN0QXN5bmNFcG9jaFJlZiA9IHVzZVJlZih7fSk7XG4gICAgLy8gTWFyayBmaWVsZHMgYXMgdmFsaWRhdGluZyBpbiBPTkUgY29tbWl0LiB2YWxpZGF0aW5nIC8gdG91Y2hlZCBsaXZlIGluIHRoZVxuICAgIC8vIHN0b3JlIGFsb25nc2lkZSB2YWx1ZXMg4oCUIGZsaXBwaW5nIHRoZW0gKGUuZy4gYXN5bmMgdmFsaWRhdGlvbiBhcm91bmQgYVxuICAgIC8vIGJsdXIpIG11c3Qgbm90IHJlLXJlbmRlciB0aGUgZm9ybSByb290LCBvbmx5IHRoZSBmaWVsZHMgdGhhdCBzdWJzY3JpYmVkLlxuICAgIGNvbnN0IG1hcmtWYWxpZGF0aW5nID0gdXNlTWVtb2l6ZWRGbigobmFtZXMpID0+IHtcbiAgICAgICAgaWYgKG5hbWVzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbmV4dCA9IE9iamVjdC5hc3NpZ24oe30sIHN0b3JlLmdldFN0YXRlKCkudmFsaWRhdGluZyk7XG4gICAgICAgIG5hbWVzLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgIG5leHRbbmFtZV0gPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgc3RvcmUuc2V0U3RhdGUoeyB2YWxpZGF0aW5nOiBuZXh0IH0pO1xuICAgIH0pO1xuICAgIC8vIEZvbGQgcGVyLWZpZWxkIHJ1bGUgb3V0Y29tZXMgaW50byBBVCBNT1NUIG9uZSBzdG9yZSBjb21taXQ6IGVycm9ycyBhbmRcbiAgICAvLyB3YXJuaW5ncyBhcmUgbWVyZ2VkIG92ZXIgdGhlIGN1cnJlbnQgbWFwcyBhbmQgdGhlIGBjbGVhclZhbGlkYXRpbmdgIGZsYWdzXG4gICAgLy8gYXJlIHJlbW92ZWQgaW4gdGhlIFNBTUUgcGF0Y2guIEEgbm8tb3Agb3V0Y29tZSBjb21taXRzIG5vdGhpbmcgYXQgYWxsIOKAlFxuICAgIC8vIHBlci1maWVsZCBjb21taXRzIGhlcmUgcHJldmlvdXNseSBtYWRlIHN1Ym1pdC10aW1lIHZhbGlkYXRpb24gc3dlZXAgZXZlcnlcbiAgICAvLyBzdWJzY3JpYmVyIE8oZmllbGRzKSB0aW1lcy5cbiAgICBjb25zdCBjb21taXRSdWxlT3V0Y29tZXMgPSB1c2VNZW1vaXplZEZuKChvdXRjb21lcywgY2xlYXJWYWxpZGF0aW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgICAgICAgbGV0IGVycm9yc0NoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgbGV0IHdhcm5pbmdzQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBuZXdFcnJvcnMgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5lcnJvcnMpO1xuICAgICAgICBjb25zdCBuZXdXYXJuaW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLndhcm5pbmdzKTtcbiAgICAgICAgZm9yIChjb25zdCB7IG5hbWUsIGVycm9yLCB3YXJuaW5nIH0gb2Ygb3V0Y29tZXMpIHtcbiAgICAgICAgICAgIGlmIChlcnJvciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChuYW1lIGluIG5ld0Vycm9ycykge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbmV3RXJyb3JzW25hbWVdO1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnNDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghc2FtZVZhbGlkYXRpb25Ob2RlKG5ld0Vycm9yc1tuYW1lXSwgZXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgbmV3RXJyb3JzW25hbWVdID0gZXJyb3I7XG4gICAgICAgICAgICAgICAgZXJyb3JzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAod2FybmluZyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChuYW1lIGluIG5ld1dhcm5pbmdzKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdXYXJuaW5nc1tuYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgd2FybmluZ3NDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghc2FtZVZhbGlkYXRpb25Ob2RlKG5ld1dhcm5pbmdzW25hbWVdLCB3YXJuaW5nKSkge1xuICAgICAgICAgICAgICAgIG5ld1dhcm5pbmdzW25hbWVdID0gd2FybmluZztcbiAgICAgICAgICAgICAgICB3YXJuaW5nc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZsYWdzVG9DbGVhciA9IGNsZWFyVmFsaWRhdGluZy5maWx0ZXIoKG5hbWUpID0+IG5hbWUgaW4gc3RhdGUudmFsaWRhdGluZyk7XG4gICAgICAgIGNvbnN0IHBhdGNoID0ge307XG4gICAgICAgIGlmIChlcnJvcnNDaGFuZ2VkKVxuICAgICAgICAgICAgcGF0Y2guZXJyb3JzID0gbmV3RXJyb3JzO1xuICAgICAgICBpZiAod2FybmluZ3NDaGFuZ2VkKVxuICAgICAgICAgICAgcGF0Y2gud2FybmluZ3MgPSBuZXdXYXJuaW5ncztcbiAgICAgICAgaWYgKGZsYWdzVG9DbGVhci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdWYWxpZGF0aW5nID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUudmFsaWRhdGluZyk7XG4gICAgICAgICAgICBmbGFnc1RvQ2xlYXIuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdWYWxpZGF0aW5nW25hbWVdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBwYXRjaC52YWxpZGF0aW5nID0gbmV3VmFsaWRhdGluZztcbiAgICAgICAgfVxuICAgICAgICBpZiAoT2JqZWN0LmtleXMocGF0Y2gpLmxlbmd0aCA+IDApXG4gICAgICAgICAgICBzdG9yZS5zZXRTdGF0ZShwYXRjaCk7XG4gICAgfSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQXN5bmMgZmllbGQgdmFsaWRhdGlvbiDigJMgZWFjaCBydWxlIGlzIHByb2Nlc3NlZCBleGFjdGx5IG9uY2VcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCB2YWxpZGF0ZUZpZWxkQXN5bmMgPSB1c2VNZW1vaXplZEZuKChuYW1lLCB2YWx1ZSwgcnVsZXMpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICghcnVsZXMgfHwgcnVsZXMubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSwgZXJyb3I6IG51bGwgfTtcbiAgICAgICAgLy8gQ2FwdHVyZSB0aGlzIHJ1bidzIGVwb2NoOiBpZiBhIE5FV0VSIHJ1biAoc3luYyBvciBhc3luYykgc3RhcnRzIGZvclxuICAgICAgICAvLyB0aGUgZmllbGQgYmVmb3JlIHRoaXMgb25lIHNldHRsZXMsIHRoZSBvdXRjb21lIGJlbG93IGlzIHN0YWxlIGFuZCBpc1xuICAgICAgICAvLyBkaXNjYXJkZWQgaW5zdGVhZCBvZiBvdmVyd3JpdGluZyB0aGUgbmV3ZXIgcmVzdWx0LlxuICAgICAgICBjb25zdCBlcG9jaCA9IGZvcm1Db3JlLmJlZ2luVmFsaWRhdGlvblJ1bihuYW1lKTtcbiAgICAgICAgLy8gUmVzb2x2ZSBvbmNlOiB0aGUgZmxhZyBkZWNpc2lvbiBuZWVkcyByZXNvbHZlZCBydWxlcywgYW5kIHBhc3NpbmcgdGhlXG4gICAgICAgIC8vIHJlc29sdmVkIGFycmF5IG9ud2FyZCBzcGFyZXMgdGhlIGVuZ2luZSBhIHJlLXJlc29sdXRpb24uXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZVJ1bGVzKHJ1bGVzLCB2YWx1ZXMsIGZvcm1Db3JlLmdldFJ1bGVDb250ZXh0SW5zdGFuY2UoKSk7XG4gICAgICAgIGNvbnN0IGZsYWdnZWQgPSBoYXNSZXNvbHZlZFZhbGlkYXRvcihyZXNvbHZlZCkgPyBbbmFtZV0gOiBbXTtcbiAgICAgICAgbWFya1ZhbGlkYXRpbmcoZmxhZ2dlZCk7XG4gICAgICAgIGZsYWdnZWQuZm9yRWFjaCgoZmxhZ2dlZE5hbWUpID0+IHtcbiAgICAgICAgICAgIGxhc3RBc3luY0Vwb2NoUmVmLmN1cnJlbnRbZmxhZ2dlZE5hbWVdID0gZXBvY2g7XG4gICAgICAgIH0pO1xuICAgICAgICBsZXQgb3V0Y29tZSA9IHsgbmFtZSwgZXJyb3I6IG51bGwsIHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZXJyb3IsIHdhcm5pbmcgfSA9IHlpZWxkIHJ1blJ1bGVzQXN5bmMobmFtZSwgdmFsdWUsIHZhbHVlcywgcmVzb2x2ZWQsIGZvcm1Db3JlLmdldFJ1bGVDb250ZXh0SW5zdGFuY2UoKSk7XG4gICAgICAgICAgICBvdXRjb21lID0geyBuYW1lLCBlcnJvciwgd2FybmluZyB9O1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIC8vIFRoZSBlbmdpbmUgY29udGFpbnMgcnVsZS1sZXZlbCB0aHJvd3MgaXRzZWxmOyB0aGlzIGlzIGEgbGFzdC1yZXNvcnRcbiAgICAgICAgICAgIC8vIG5ldCBzbyBhbiB1bmV4cGVjdGVkIGZhaWx1cmUgc3VyZmFjZXMgYXMgYSBmaWVsZCBlcnJvciBpbnN0ZWFkIG9mXG4gICAgICAgICAgICAvLyBsZWF2aW5nIHRoZSBmaWVsZCBtYXJrZWQgdmFsaWQuXG4gICAgICAgICAgICBvdXRjb21lID0geyBuYW1lLCBlcnJvcjogKF9hID0gY29lcmNlRmFpbHVyZVJlYXNvbihlcnIpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBnZXRMb2NhbGUoJ1Byb0Zvcm0nKS52YWxpZGF0aW9uRmFpbGVkLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBjb25zdCBpc0N1cnJlbnQgPSBmb3JtQ29yZS5pc1ZhbGlkYXRpb25SdW5DdXJyZW50KG5hbWUsIGVwb2NoKTtcbiAgICAgICAgICAgIGNvbnN0IGNsZWFyRmxhZ3MgPSBmbGFnZ2VkLmZpbHRlcigoZmxhZ2dlZE5hbWUpID0+IGxhc3RBc3luY0Vwb2NoUmVmLmN1cnJlbnRbZmxhZ2dlZE5hbWVdID09PSBlcG9jaCk7XG4gICAgICAgICAgICBjb21taXRSdWxlT3V0Y29tZXMoaXNDdXJyZW50ID8gW291dGNvbWVdIDogW10sIGNsZWFyRmxhZ3MpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoZSBDQUxMRVIgZ2V0cyB0aGlzIHJ1bidzIG93biByZXN1bHQgZWl0aGVyIHdheSAoaXRzIHByb21pc2UgaXNcbiAgICAgICAgLy8gYWJvdXQgdGhlIHZhbHVlIGl0IHdhcyBhc2tlZCB0byB2YWxpZGF0ZSk7IG9ubHkgdGhlIFNUT1JFIGNvbW1pdCBpc1xuICAgICAgICAvLyBzdGFsZW5lc3MtZ3VhcmRlZC5cbiAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogb3V0Y29tZS5lcnJvciA9PT0gbnVsbCwgZXJyb3I6IG91dGNvbWUuZXJyb3IgfTtcbiAgICB9KSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQXN5bmMgZmllbGQgYmx1ciBoYW5kbGVyXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgaGFuZGxlRmllbGRCbHVyID0gdXNlRXZlbnRDYWxsYmFjaygobmFtZSwgZmllbGRUcmlnZ2VyKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgdG91Y2hlZCA9IHN0b3JlLmdldFN0YXRlKCkudG91Y2hlZDtcbiAgICAgICAgaWYgKCF0b3VjaGVkW25hbWVdKSB7XG4gICAgICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7IHRvdWNoZWQ6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdG91Y2hlZCksIHsgW25hbWVdOiB0cnVlIH0pIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJ1bGVzID0gZm9ybUNvcmUuZ2V0RmllbGRSdWxlcyhuYW1lKTtcbiAgICAgICAgaWYgKCFydWxlcylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKTtcbiAgICAgICAgY29uc3QgYXBwbGljYWJsZSA9IGZpbHRlclJ1bGVzQnlUcmlnZ2VyKHJlc29sdmVSdWxlcyhydWxlcywgdmFsdWVzLCBmb3JtQ29yZS5nZXRSdWxlQ29udGV4dEluc3RhbmNlKCkpLCAnb25CbHVyJywgbm9ybWFsaXplVHJpZ2dlcnMoZmllbGRUcmlnZ2VyLCB2YWxpZGF0ZVRyaWdnZXIpLCBuYW1lKTtcbiAgICAgICAgaWYgKGFwcGxpY2FibGUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgeWllbGQgdmFsaWRhdGVGaWVsZEFzeW5jKG5hbWUsIHJlc29sdmVWYWx1ZSh2YWx1ZXMsIG5hbWUpLCBhcHBsaWNhYmxlKTtcbiAgICAgICAgfVxuICAgIH0pKTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBWYWxpZGF0ZSBhbGwgZmllbGRzIGFzeW5jXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgdmFsaWRhdGVGaWVsZHNBc3luYyA9IHVzZU1lbW9pemVkRm4oKG5hbWVMaXN0KSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgZmllbGRzVG9WYWxpZGF0ZSA9IG5hbWVMaXN0IHx8IE9iamVjdC5rZXlzKGZvcm1Db3JlLmZpZWxkUnVsZXMpO1xuICAgICAgICBjb25zdCBmaWVsZEVycm9ycyA9IHt9O1xuICAgICAgICAvLyBSZXNvbHZlIGV2ZXJ5IGZpZWxkIG9uY2UgdXAgZnJvbnQ6IHRoZSBmbGFnIGRlY2lzaW9uIG5lZWRzIHJlc29sdmVkXG4gICAgICAgIC8vIHJ1bGVzLCBhbmQgdGhlIHJlc29sdmVkIGFycmF5cyBhcmUgcmV1c2VkIGZvciB0aGUgYWN0dWFsIHJ1bnMuIEVhY2hcbiAgICAgICAgLy8gZmllbGQgYWxzbyBjYXB0dXJlcyBpdHMgdmFsaWRhdGlvbiBlcG9jaCDigJQgYSBmaWVsZCB3aG9zZSB2YWx1ZVxuICAgICAgICAvLyBjaGFuZ2VzIG1pZC1zdWJtaXQgZ2V0cyBhIG5ld2VyIHJ1biwgYW5kIHRoaXMgcnVuJ3Mgc3RhbGUgb3V0Y29tZVxuICAgICAgICAvLyBtdXN0IG5vdCBvdmVyd3JpdGUgaXQgaW4gdGhlIHN0b3JlLlxuICAgICAgICBjb25zdCByZXNvbHZlZEJ5RmllbGQgPSBuZXcgTWFwKCk7XG4gICAgICAgIGNvbnN0IGVwb2NoQnlGaWVsZCA9IG5ldyBNYXAoKTtcbiAgICAgICAgZm9yIChjb25zdCBuYW1lIG9mIGZpZWxkc1RvVmFsaWRhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVzID0gZm9ybUNvcmUuZmllbGRSdWxlc1tuYW1lXTtcbiAgICAgICAgICAgIGlmIChydWxlcykge1xuICAgICAgICAgICAgICAgIGVwb2NoQnlGaWVsZC5zZXQobmFtZSwgZm9ybUNvcmUuYmVnaW5WYWxpZGF0aW9uUnVuKG5hbWUpKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlZEJ5RmllbGQuc2V0KG5hbWUsIHJlc29sdmVSdWxlcyhydWxlcywgZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKSwgZm9ybUNvcmUuZ2V0UnVsZUNvbnRleHRJbnN0YW5jZSgpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gT25lIGNvbW1pdCB0byByYWlzZSB0aGUgdmFsaWRhdGluZyBmbGFncyAodmFsaWRhdG9yLWJlYXJpbmcgZmllbGRzXG4gICAgICAgIC8vIG9ubHkpLCBvbmUgY29tbWl0IHRvIGxhbmQgZXZlcnkgZXJyb3Ivd2FybmluZyBhbmQgY2xlYXIgdGhlIGZsYWdzLlxuICAgICAgICBjb25zdCBmbGFnZ2VkID0gZmllbGRzVG9WYWxpZGF0ZS5maWx0ZXIoKG5hbWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZWRCeUZpZWxkLmdldChuYW1lKTtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlZCA/IGhhc1Jlc29sdmVkVmFsaWRhdG9yKHJlc29sdmVkKSA6IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgbWFya1ZhbGlkYXRpbmcoZmxhZ2dlZCk7XG4gICAgICAgIGZsYWdnZWQuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICAgICAgbGFzdEFzeW5jRXBvY2hSZWYuY3VycmVudFtuYW1lXSA9IGVwb2NoQnlGaWVsZC5nZXQobmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBvdXRjb21lcyA9IFtdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgeWllbGQgUHJvbWlzZS5hbGwoZmllbGRzVG9WYWxpZGF0ZS5tYXAoKG5hbWUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVkQnlGaWVsZC5nZXQobmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXNvbHZlZClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGxldCBlcnJvciA9IG51bGw7XG4gICAgICAgICAgICAgICAgbGV0IHdhcm5pbmcgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICh7IGVycm9yLCB3YXJuaW5nIH0gPSB5aWVsZCBydW5SdWxlc0FzeW5jKG5hbWUsIHJlc29sdmVWYWx1ZShmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpLCBuYW1lKSwgZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKSwgcmVzb2x2ZWQsIGZvcm1Db3JlLmdldFJ1bGVDb250ZXh0SW5zdGFuY2UoKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIExhc3QtcmVzb3J0IG5ldCAoc2VlIHZhbGlkYXRlRmllbGRBc3luYykg4oCUIGtlZXAgdGhlIG5vcm1hbFxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zdHJ1Y3RlZC1lcnJvciBmbG93IHNvIG9uRmluaXNoRmFpbGVkIGdldHMgYSByZWFsIHBheWxvYWQuXG4gICAgICAgICAgICAgICAgICAgIGVycm9yID0gKF9hID0gY29lcmNlRmFpbHVyZVJlYXNvbihlcnIpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBnZXRMb2NhbGUoJ1Byb0Zvcm0nKS52YWxpZGF0aW9uRmFpbGVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBUaGUgc3RvcmUgY29tbWl0IGlzIHN0YWxlbmVzcy1ndWFyZGVkOyB0aGUgU1VCTUlUIGRlY2lzaW9uXG4gICAgICAgICAgICAgICAgLy8gKGZpZWxkRXJyb3JzIC8gdGhlIHRocm93biBGb3JtVmFsaWRhdGlvbkVycm9yKSBzdGlsbCByZWZsZWN0c1xuICAgICAgICAgICAgICAgIC8vIHRoaXMgcnVuJ3Mgb3duIHJlc3VsdHMgZm9yIHRoZSB2YWx1ZXMgaXQgdmFsaWRhdGVkLlxuICAgICAgICAgICAgICAgIGNvbnN0IGVwb2NoID0gZXBvY2hCeUZpZWxkLmdldChuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoZXBvY2ggIT09IHVuZGVmaW5lZCAmJiBmb3JtQ29yZS5pc1ZhbGlkYXRpb25SdW5DdXJyZW50KG5hbWUsIGVwb2NoKSkge1xuICAgICAgICAgICAgICAgICAgICBvdXRjb21lcy5wdXNoKHsgbmFtZSwgZXJyb3IsIHdhcm5pbmcgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChlcnJvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZEVycm9yc1tuYW1lXSA9IGVycm9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBjb25zdCBjbGVhckZsYWdzID0gZmxhZ2dlZC5maWx0ZXIoKG5hbWUpID0+IGxhc3RBc3luY0Vwb2NoUmVmLmN1cnJlbnRbbmFtZV0gPT09IGVwb2NoQnlGaWVsZC5nZXQobmFtZSkpO1xuICAgICAgICAgICAgY29tbWl0UnVsZU91dGNvbWVzKG91dGNvbWVzLCBjbGVhckZsYWdzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoT2JqZWN0LmtleXMoZmllbGRFcnJvcnMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBGb3JtVmFsaWRhdGlvbkVycm9yKGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCksIGZpZWxkRXJyb3JzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmFtZUxpc3QpIHtcbiAgICAgICAgICAgIHJldHVybiBuYW1lTGlzdC5yZWR1Y2UoKGFjYywgbmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIGFjY1tuYW1lXSA9IHJlc29sdmVWYWx1ZShmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpLCBuYW1lKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSwge30pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpO1xuICAgIH0pKTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBkZWZpbmVGaWVsZCDigJMgdXNlZCBieSBzdGFuZGFsb25lIChub24tUHJvRm9ybSkgY29uc3VtZXJzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgZGVmaW5lRmllbGQgPSB1c2VNZW1vaXplZEZuKChuYW1lLCBmaWVsZE9wdGlvbnMgPSB7fSkgPT4ge1xuICAgICAgICBjb25zdCB7IHJ1bGVzID0gW10gfSA9IGZpZWxkT3B0aW9ucztcbiAgICAgICAgY29uc3QgRmllbGRDb21wb25lbnQgPSBtZW1vKChfYSkgPT4ge1xuICAgICAgICAgICAgdmFyIHsgY2hpbGRyZW4sIHJlbmRlciB9ID0gX2EsIHByb3BzID0gX19yZXN0KF9hLCBbXCJjaGlsZHJlblwiLCBcInJlbmRlclwiXSk7XG4gICAgICAgICAgICAvLyBQZXItZmllbGQgc3RvcmUgc3Vic2NyaXB0aW9uOiB0aGlzIGZpZWxkIHJlLXJlbmRlcnMgb25seSB3aGVuIGl0c1xuICAgICAgICAgICAgLy8gb3duIHZhbHVlL2Vycm9yL3RvdWNoZWQvdmFsaWRhdGluZyBzbGljZSBjaGFuZ2VzLiBEb3QtcGF0aHNcbiAgICAgICAgICAgIC8vIHJlc29sdmUgaW50byB0aGUgbmVzdGVkIHZhbHVlcyBsaWtlIGV2ZXJ5d2hlcmUgZWxzZS5cbiAgICAgICAgICAgIGNvbnN0IFtmaWVsZFZhbHVlLCBmaWVsZEVycm9yLCBmaWVsZFRvdWNoZWQsIGZpZWxkVmFsaWRhdGluZ10gPSB1c2VTdG9yZVNlbGVjdG9yKHN0b3JlLCAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgKF9hID0gcmVzb2x2ZVZhbHVlKHN0YXRlLnZhbHVlcywgbmFtZSkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnLFxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5lcnJvcnNbbmFtZV0sXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLnRvdWNoZWRbbmFtZV0sXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLnZhbGlkYXRpbmdbbmFtZV0sXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0sIHNoYWxsb3dFcXVhbEFycmF5cyk7XG4gICAgICAgICAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIE1vdW50LWNvdW50ZWQ6IHJlbGVhc2VGaWVsZCByZW1vdmVzIHRoZSBydWxlcyBvbmx5IHdoZW4gdGhlXG4gICAgICAgICAgICAgICAgLy8gTEFTVCBzYW1lLW5hbWUgaW5zdGFuY2UgdW5tb3VudHMg4oCUIGFuIGluc3RhbmNlIHRoYXQgcGlnZ3liYWNrZWRcbiAgICAgICAgICAgICAgICAvLyBvbiBhbiBleGlzdGluZyByZWdpc3RyYXRpb24gKGUuZy4gYSBQcm9Gb3JtLkl0ZW0ncykgY2FuIG5ldmVyXG4gICAgICAgICAgICAgICAgLy8gd2lwZSBpdCBvbiBpdHMgb3duIHVubW91bnQuXG4gICAgICAgICAgICAgICAgZm9ybUNvcmUucmV0YWluRmllbGQobmFtZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdSdWxlcyA9IGZvcm1Db3JlLmdldEZpZWxkUnVsZXMobmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKCFleGlzdGluZ1J1bGVzICYmIHJ1bGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvcmUucmVnaXN0ZXJGaWVsZChuYW1lLCBydWxlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db3JlLnJlbGVhc2VGaWVsZChuYW1lKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSwgW10pOyAvLyBPbmx5IHJlZ2lzdGVyIG9uIG1vdW50XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVGaWVsZENoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRWYWx1ZShuYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgLy8gVG91Y2hlZCBpcyBzZXQgYnkgdGhlIHVzZXIgY2hhbmdlIHRyaWdnZXIgKG1hdGNoaW5nIHRoZVxuICAgICAgICAgICAgICAgIC8vIFByb0Zvcm0uSXRlbSBwYXRoKSDigJQgcHJvZ3JhbW1hdGljIHNldEZpZWxkc1ZhbHVlIGRvZXMgbm90LlxuICAgICAgICAgICAgICAgIGNvbnN0IHRvdWNoZWQgPSBzdG9yZS5nZXRTdGF0ZSgpLnRvdWNoZWQ7XG4gICAgICAgICAgICAgICAgaWYgKCF0b3VjaGVkW25hbWVdKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLnNldFN0YXRlKHsgdG91Y2hlZDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB0b3VjaGVkKSwgeyBbbmFtZV06IHRydWUgfSkgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGFwcGxpY2FibGUgPSBmaWx0ZXJSdWxlc0J5VHJpZ2dlcihyZXNvbHZlUnVsZXMocnVsZXMsIGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCksIGZvcm1Db3JlLmdldFJ1bGVDb250ZXh0SW5zdGFuY2UoKSksICdvbkNoYW5nZScsIG5vcm1hbGl6ZVRyaWdnZXJzKGZpZWxkT3B0aW9ucy52YWxpZGF0ZVRyaWdnZXIsIHZhbGlkYXRlVHJpZ2dlciksIG5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChhcHBsaWNhYmxlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQXN5bmMgcGF0aCAobWF0Y2hpbmcgUHJvRm9ybS5JdGVtKSBzbyBhIFByb21pc2UtcmV0dXJuaW5nXG4gICAgICAgICAgICAgICAgICAgIC8vIHZhbGlkYXRvciBpcyBob25vcmVkIG9uIGNoYW5nZSBpbnN0ZWFkIG9mIGJlaW5nIHNpbGVudGx5XG4gICAgICAgICAgICAgICAgICAgIC8vIHNraXBwZWQ7IGZpcmUtYW5kLWZvcmdldCDigJQgdGhlIHJlc3VsdCBsYW5kcyBvbiB0aGUgc3RvcmUuXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlRmllbGRBc3luYyhuYW1lLCB2YWx1ZSwgYXBwbGljYWJsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVCbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgICAgICAgICAgaGFuZGxlRmllbGRCbHVyKG5hbWUsIGZpZWxkT3B0aW9ucy52YWxpZGF0ZVRyaWdnZXIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBmaWVsZFByb3BzID0gT2JqZWN0LmFzc2lnbih7IG5hbWUsIHZhbHVlOiBmaWVsZFZhbHVlLCBlcnJvcjogZmllbGRFcnJvciwgdG91Y2hlZDogZmllbGRUb3VjaGVkLCB2YWxpZGF0aW5nOiBmaWVsZFZhbGlkYXRpbmcsIG9uQ2hhbmdlOiBoYW5kbGVGaWVsZENoYW5nZSwgb25CbHVyOiBoYW5kbGVCbHVyIH0sIHByb3BzKTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZU1lcmdlQ2hhbmdlID0gKGUpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBlICYmIHR5cGVvZiBlID09PSAnb2JqZWN0JyAmJiAndGFyZ2V0JyBpbiBlXG4gICAgICAgICAgICAgICAgICAgID8gZS50YXJnZXQudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgOiBlO1xuICAgICAgICAgICAgICAgIGhhbmRsZUZpZWxkQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pICYmXG4gICAgICAgICAgICAgICAgICAgICgoX2EgPSBjaGlsZHJlbi5wcm9wcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm9uQ2hhbmdlKSkge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wcm9wcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZU1lcmdlQmx1ciA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgaGFuZGxlQmx1cigpO1xuICAgICAgICAgICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikgJiZcbiAgICAgICAgICAgICAgICAgICAgKChfYSA9IGNoaWxkcmVuLnByb3BzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub25CbHVyKSkge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wcm9wcy5vbkJsdXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHJlbmRlciAmJiB0eXBlb2YgcmVuZGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcihmaWVsZFByb3BzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW4oZmllbGRQcm9wcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBFbGVtZW50IGNoaWxkcmVuIHJlY2VpdmUgb25seSBET00tc2FmZSBwcm9wcyDigJQgZXJyb3IvdG91Y2hlZC9cbiAgICAgICAgICAgIC8vIHZhbGlkYXRpbmcgYXJlIGZpZWxkIE1FVEEsIG5vdCBjb250cm9sIHByb3BzOyBzcHJlYWRpbmcgdGhlbSBvbnRvXG4gICAgICAgICAgICAvLyBhIGhvc3QgZWxlbWVudCB3b3VsZCBsZWFrIGFueSBhdHRyaWJ1dGVzLiBSZW5kZXItcHJvcCBhbmRcbiAgICAgICAgICAgIC8vIGZ1bmN0aW9uIGNoaWxkcmVuIGtlZXAgdGhlIGZ1bGwgZmllbGRQcm9wcy5cbiAgICAgICAgICAgIGNvbnN0IGRvbVNhZmVQcm9wcyA9IE9iamVjdC5hc3NpZ24oeyBuYW1lLCB2YWx1ZTogZmllbGRWYWx1ZSwgb25DaGFuZ2U6IGhhbmRsZU1lcmdlQ2hhbmdlLCBvbkJsdXI6IGhhbmRsZU1lcmdlQmx1ciB9LCBwcm9wcyk7XG4gICAgICAgICAgICBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwgZG9tU2FmZVByb3BzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KEZyYWdtZW50LCBudWxsLCAuLi5jaGlsZHJlbi5tYXAoKGNoaWxkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkLCBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGRvbVNhZmVQcm9wcyksIHsga2V5OiBjaGlsZC5rZXkgfHwgaW5kZXggfSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgICAgIEZpZWxkQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gYEZpZWxkKCR7bmFtZX0pYDtcbiAgICAgICAgcmV0dXJuIEZpZWxkQ29tcG9uZW50O1xuICAgIH0pO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIGhhbmRsZVN1Ym1pdCAvIGhhbmRsZVJlc2V0IOKAkyBmb3IgPGZvcm0+IGV2ZW50IGhhbmRsZXJzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgaGFuZGxlU3VibWl0ID0gdXNlRXZlbnRDYWxsYmFjaygoZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVkVmFsdWVzID0geWllbGQgdmFsaWRhdGVGaWVsZHNBc3luYygpO1xuICAgICAgICAgICAgb25GaW5pc2ggPT09IG51bGwgfHwgb25GaW5pc2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoKHZhbGlkYXRlZFZhbHVlcyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgLy8gT25seSBhIFZBTElEQVRJT04gZmFpbHVyZSByZWFjaGVzIG9uRmluaXNoRmFpbGVkIOKAlCBhbiBleGNlcHRpb24gb3V0XG4gICAgICAgICAgICAvLyBvZiB0aGUgY29uc3VtZXIncyBvd24gb25GaW5pc2ggaXMgbm90IGEgdmFsaWRhdGlvbiByZXN1bHQgYW5kIGlzXG4gICAgICAgICAgICAvLyBzdXJmYWNlZCBpbnN0ZWFkIG9mIGJlaW5nIG1pc3JlcG9ydGVkLlxuICAgICAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEZvcm1WYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBvbkZpbmlzaEZhaWxlZCA9PT0gbnVsbCB8fCBvbkZpbmlzaEZhaWxlZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaW5pc2hGYWlsZWQoeyB2YWx1ZXM6IGVyci52YWx1ZXMsIGVycm9yczogZXJyLmVycm9ycyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tQcm9Gb3JtXSBvbkZpbmlzaCB0aHJldyBkdXJpbmcgc3VibWl0OicsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KSk7XG4gICAgY29uc3QgaGFuZGxlUmVzZXQgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBmb3JtQ29yZS5yZXNldEZpZWxkcygpO1xuICAgICAgICBvblJlc2V0ID09PSBudWxsIHx8IG9uUmVzZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uUmVzZXQoKTtcbiAgICB9KTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBGb3JtSW5zdGFuY2Ug4oCTIGVuaGFuY2VkIEFQSSBmb3IgY29uc3VtZXJzLlxuICAgIC8vXG4gICAgLy8gRXZlcnkgbWV0aG9kIGlzIHdyYXBwZWQgaW4gdXNlTWVtb2l6ZWRGbiAoc3RhYmxlIGlkZW50aXR5LCBhbHdheXMgcmVhZHMgdGhlXG4gICAgLy8gbGF0ZXN0IHN0b3JlIHN0YXRlKSBzbyB0aGUgaW5zdGFuY2Ugb2JqZWN0IGl0c2VsZiBpcyBJREVOVElUWS1TVEFCTEUgZm9yXG4gICAgLy8gdGhlIGxpZmV0aW1lIG9mIHRoZSBmb3JtIOKAlCB0aGlzIGlzIHdoYXQgbGV0cyBQcm9Gb3JtIHB1Ymxpc2ggaXQgdGhyb3VnaCB0aGVcbiAgICAvLyBzdGFibGUgY29udGV4dCB3aXRob3V0IHJlLXJlbmRlcmluZyBzdWJzY3JpYmVycyBvbiBlYWNoIGtleXN0cm9rZS5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBnZXRGaWVsZEVycm9yID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4gc3RvcmUuZ2V0U3RhdGUoKS5lcnJvcnNbbmFtZV0pO1xuICAgIGNvbnN0IGdldEZpZWxkV2FybmluZyA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHN0b3JlLmdldFN0YXRlKCkud2FybmluZ3NbbmFtZV0pO1xuICAgIGNvbnN0IGdldEZpZWxkc0Vycm9yID0gdXNlTWVtb2l6ZWRGbigobmFtZUxpc3QpID0+IHtcbiAgICAgICAgY29uc3QgZXJyb3JzID0gc3RvcmUuZ2V0U3RhdGUoKS5lcnJvcnM7XG4gICAgICAgIGlmICghbmFtZUxpc3QpXG4gICAgICAgICAgICByZXR1cm4gZXJyb3JzO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAgICAgbmFtZUxpc3QuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yc1tuYW1lXSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtuYW1lXSA9IGVycm9yc1tuYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG4gICAgY29uc3QgaXNGaWVsZFRvdWNoZWQgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiBzdG9yZS5nZXRTdGF0ZSgpLnRvdWNoZWRbbmFtZV0gfHwgZmFsc2UpO1xuICAgIGNvbnN0IGlzRmllbGRzVG91Y2hlZCA9IHVzZU1lbW9pemVkRm4oKG5hbWVMaXN0LCBhbGxGaWVsZHNUb3VjaGVkID0gZmFsc2UpID0+IHtcbiAgICAgICAgY29uc3QgdG91Y2hlZCA9IHN0b3JlLmdldFN0YXRlKCkudG91Y2hlZDtcbiAgICAgICAgaWYgKCFuYW1lTGlzdCkge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRvdWNoZWQpLnNvbWUoKGtleSkgPT4gdG91Y2hlZFtrZXldKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWxsRmllbGRzVG91Y2hlZCkge1xuICAgICAgICAgICAgcmV0dXJuIG5hbWVMaXN0LmV2ZXJ5KChuYW1lKSA9PiB0b3VjaGVkW25hbWVdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmFtZUxpc3Quc29tZSgobmFtZSkgPT4gdG91Y2hlZFtuYW1lXSk7XG4gICAgfSk7XG4gICAgY29uc3QgaXNGaWVsZFZhbGlkYXRpbmcgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiBzdG9yZS5nZXRTdGF0ZSgpLnZhbGlkYXRpbmdbbmFtZV0gfHwgZmFsc2UpO1xuICAgIGNvbnN0IHNldEZpZWxkc0Vycm9yID0gdXNlTWVtb2l6ZWRGbigoZmllbGRzRXJyb3IpID0+IHtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoZmllbGRzRXJyb3IpLmZvckVhY2goKFtuYW1lLCBlcnJvcl0pID0+IHtcbiAgICAgICAgICAgIGZvcm1Db3JlLnNldEZpZWxkRXJyb3IobmFtZSwgZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBzZXRGaWVsZFRvdWNoZWQgPSB1c2VNZW1vaXplZEZuKChuYW1lLCBpc1RvdWNoZWQgPSB0cnVlKSA9PiB7XG4gICAgICAgIHN0b3JlLnNldFN0YXRlKHsgdG91Y2hlZDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzdG9yZS5nZXRTdGF0ZSgpLnRvdWNoZWQpLCB7IFtuYW1lXTogaXNUb3VjaGVkIH0pIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEZpZWxkc1RvdWNoZWQgPSB1c2VNZW1vaXplZEZuKChmaWVsZHNUb3VjaCkgPT4ge1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7IHRvdWNoZWQ6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc3RvcmUuZ2V0U3RhdGUoKS50b3VjaGVkKSwgZmllbGRzVG91Y2gpIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHJlc2V0Rm9ybUZpZWxkcyA9IHVzZU1lbW9pemVkRm4oKGZpZWxkcykgPT4ge1xuICAgICAgICBpZiAoIWZpZWxkcykge1xuICAgICAgICAgICAgZm9ybUNvcmUucmVzZXRGaWVsZHMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBNb3VudC1mcm96ZW4gaW5pdGlhbFZhbHVlcyDigJQgY29uc2lzdGVudCB3aXRoIHRoZSBmdWxsIHJlc2V0RmllbGRzLlxuICAgICAgICAvLyBSZWFkcyBBTkQgd3JpdGVzIGFyZSBuZXN0ZWQtcGF0aCBhd2FyZSwgc28gZG90LXBhdGggbmFtZXNcbiAgICAgICAgLy8gKGBhZGRyZXNzLmNpdHlgLCBgaXRlbXMuMC50aXRsZWApIHJlc2V0IGNvcnJlY3RseSBpbnN0ZWFkIG9mIHByb2JpbmcgYVxuICAgICAgICAvLyBsaXRlcmFsIGtleSBhbmQgc2hhbGxvdy1tZXJnaW5nIG9uZSBiYWNrLlxuICAgICAgICBjb25zdCBpbml0aWFsVmFsdWVzID0gZm9ybUNvcmUuZ2V0SW5pdGlhbFZhbHVlcygpO1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHN0b3JlLmdldFN0YXRlKCk7XG4gICAgICAgIGxldCBuZXdWYWx1ZXMgPSBzdGF0ZS52YWx1ZXM7XG4gICAgICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5pdGlhbCA9IHJlc29sdmVWYWx1ZShpbml0aWFsVmFsdWVzLCBmaWVsZCk7XG4gICAgICAgICAgICBuZXdWYWx1ZXMgPSBmaWVsZC5pbmNsdWRlcygnLicpXG4gICAgICAgICAgICAgICAgPyBzZXROZXN0ZWRWYWx1ZShuZXdWYWx1ZXMsIGZpZWxkLCBpbml0aWFsKVxuICAgICAgICAgICAgICAgIDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBuZXdWYWx1ZXMpLCB7IFtmaWVsZF06IGluaXRpYWwgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBMaWtlIHRoZSBmdWxsIHJlc2V0OiBjbGVhciBBTEwgcGVyLWZpZWxkIG1ldGEgKGVycm9ycyBBTkQgd2FybmluZ3MgQU5EXG4gICAgICAgIC8vIHRvdWNoZWQvdmFsaWRhdGluZyksIGludmFsaWRhdGUgaW4tZmxpZ2h0IHZhbGlkYXRpb24gcnVucywgYW5kIGxhbmRcbiAgICAgICAgLy8gZXZlcnl0aGluZyBpbiBPTkUgY29tbWl0LiBObyBvblZhbHVlc0NoYW5nZSDigJQgcmVzZXQgaXMgbm90IGEgY2hhbmdlXG4gICAgICAgIC8vIGV2ZW50IG9uIGVpdGhlciBwYXRoLlxuICAgICAgICBmb3JtQ29yZS5pbnZhbGlkYXRlVmFsaWRhdGlvblJ1bnMoZmllbGRzKTtcbiAgICAgICAgY29uc3QgbmV3RXJyb3JzID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuZXJyb3JzKTtcbiAgICAgICAgY29uc3QgbmV3V2FybmluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS53YXJuaW5ncyk7XG4gICAgICAgIGNvbnN0IG5ld1RvdWNoZWQgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS50b3VjaGVkKTtcbiAgICAgICAgY29uc3QgbmV3VmFsaWRhdGluZyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnZhbGlkYXRpbmcpO1xuICAgICAgICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgIGRlbGV0ZSBuZXdFcnJvcnNbZmllbGRdO1xuICAgICAgICAgICAgZGVsZXRlIG5ld1dhcm5pbmdzW2ZpZWxkXTtcbiAgICAgICAgICAgIGRlbGV0ZSBuZXdUb3VjaGVkW2ZpZWxkXTtcbiAgICAgICAgICAgIGRlbGV0ZSBuZXdWYWxpZGF0aW5nW2ZpZWxkXTtcbiAgICAgICAgfSk7XG4gICAgICAgIHN0b3JlLnNldFN0YXRlKHtcbiAgICAgICAgICAgIHZhbHVlczogbmV3VmFsdWVzLFxuICAgICAgICAgICAgZXJyb3JzOiBuZXdFcnJvcnMsXG4gICAgICAgICAgICB3YXJuaW5nczogbmV3V2FybmluZ3MsXG4gICAgICAgICAgICB0b3VjaGVkOiBuZXdUb3VjaGVkLFxuICAgICAgICAgICAgdmFsaWRhdGluZzogbmV3VmFsaWRhdGluZyxcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc3VibWl0V2l0aFZhbGlkYXRpb24gPSB1c2VNZW1vaXplZEZuKChjYWxsYmFjaykgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGxldCB2YWxpZGF0ZWRWYWx1ZXM7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YWxpZGF0ZWRWYWx1ZXMgPSB5aWVsZCB2YWxpZGF0ZUZpZWxkc0FzeW5jKCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKF9hKSB7XG4gICAgICAgICAgICAvLyBWYWxpZGF0aW9uIGZhaWx1cmUg4oCUIHRoZSBmaWVsZCBlcnJvcnMgYXJlIGFscmVhZHkgaW4gdGhlIHN0b3JlLlxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgeWllbGQgY2FsbGJhY2sodmFsaWRhdGVkVmFsdWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAvLyBBIHRocm93aW5nIGNhbGxiYWNrIGlzIGEgY29uc3VtZXIgYnVnLCBub3QgYSB2YWxpZGF0aW9uIGZhaWx1cmUg4oCUXG4gICAgICAgICAgICAgICAgLy8gc3VyZmFjZSBpdCAobWlycm9yaW5nIHJjLWZpZWxkLWZvcm0ncyBvbkZpbmlzaCBoYW5kbGluZykgaW5zdGVhZFxuICAgICAgICAgICAgICAgIC8vIG9mIHN3YWxsb3dpbmcgaXQgc2lsZW50bHkuXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignW1Byb0Zvcm1dIHN1Ym1pdCBjYWxsYmFjayB0aHJldzonLCBlcnIpO1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlZFZhbHVlcztcbiAgICB9KSk7XG4gICAgY29uc3QgZm9ybUluc3RhbmNlID0gdXNlTWVtbygoKSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBmb3JtQ29yZS5mb3JtSW5zdGFuY2UpLCB7IGdldEZpZWxkVmFsdWU6IGZvcm1Db3JlLmdldEZpZWxkVmFsdWUsIGdldEZpZWxkc1ZhbHVlOiBmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSwgdmFsaWRhdGVGaWVsZHM6IHZhbGlkYXRlRmllbGRzQXN5bmMsIHNldEZpZWxkVmFsdWU6IGZvcm1Db3JlLnNldEZpZWxkVmFsdWUsIHNldEZpZWxkc1ZhbHVlOiBmb3JtQ29yZS5zZXRGaWVsZHNWYWx1ZSwgZ2V0RmllbGRFcnJvcjogZ2V0RmllbGRFcnJvciwgZ2V0RmllbGRXYXJuaW5nOiBnZXRGaWVsZFdhcm5pbmcsIGdldEZpZWxkc0Vycm9yOiBnZXRGaWVsZHNFcnJvciwgaXNGaWVsZFRvdWNoZWQ6IGlzRmllbGRUb3VjaGVkLCBpc0ZpZWxkc1RvdWNoZWQ6IGlzRmllbGRzVG91Y2hlZCwgaXNGaWVsZFZhbGlkYXRpbmc6IGlzRmllbGRWYWxpZGF0aW5nLCBzZXRGaWVsZEVycm9yOiBmb3JtQ29yZS5zZXRGaWVsZEVycm9yLCBzZXRGaWVsZHNFcnJvciwgc2V0RmllbGRUb3VjaGVkOiBzZXRGaWVsZFRvdWNoZWQsIHNldEZpZWxkc1RvdWNoZWQsIHJlc2V0RmllbGRzOiByZXNldEZvcm1GaWVsZHMsIHN1Ym1pdDogc3VibWl0V2l0aFZhbGlkYXRpb24sIGRlZmluZUZpZWxkLCByZWdpc3RlckZpZWxkOiBmb3JtQ29yZS5yZWdpc3RlckZpZWxkLCB1bnJlZ2lzdGVyRmllbGQ6IGZvcm1Db3JlLnVucmVnaXN0ZXJGaWVsZCB9KSksIFtcbiAgICAgICAgZm9ybUNvcmUuZm9ybUluc3RhbmNlLFxuICAgICAgICBmb3JtQ29yZS5nZXRGaWVsZFZhbHVlLFxuICAgICAgICBmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRzVmFsdWUsXG4gICAgICAgIGZvcm1Db3JlLnNldEZpZWxkRXJyb3IsXG4gICAgICAgIGZvcm1Db3JlLnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIGZvcm1Db3JlLnVucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgdmFsaWRhdGVGaWVsZHNBc3luYyxcbiAgICAgICAgZ2V0RmllbGRFcnJvcixcbiAgICAgICAgZ2V0RmllbGRXYXJuaW5nLFxuICAgICAgICBnZXRGaWVsZHNFcnJvcixcbiAgICAgICAgaXNGaWVsZFRvdWNoZWQsXG4gICAgICAgIGlzRmllbGRzVG91Y2hlZCxcbiAgICAgICAgaXNGaWVsZFZhbGlkYXRpbmcsXG4gICAgICAgIHNldEZpZWxkc0Vycm9yLFxuICAgICAgICBzZXRGaWVsZFRvdWNoZWQsXG4gICAgICAgIHNldEZpZWxkc1RvdWNoZWQsXG4gICAgICAgIHJlc2V0Rm9ybUZpZWxkcyxcbiAgICAgICAgc3VibWl0V2l0aFZhbGlkYXRpb24sXG4gICAgICAgIGRlZmluZUZpZWxkLFxuICAgIF0pO1xuICAgIC8vIEZ1bmN0aW9uLWZvcm0gcnVsZXMgZ2V0IHRoZSBGVUxMIGZvcm0gaW5zdGFuY2UgKGVycm9yIGdldHRlcnMsIHRvdWNoZWRcbiAgICAvLyBzdGF0ZSwgbXV0YXRvcnMpIGluc3RlYWQgb2YgdGhlIGJhcmUgY29yZSBtZXRob2RzLiBSZWYgd3JpdGUg4oCUIGNoZWFwIGFuZFxuICAgIC8vIGlkZW1wb3RlbnQgcGVyIHJlbmRlci5cbiAgICBmb3JtQ29yZS5zZXRSdWxlQ29udGV4dEluc3RhbmNlKGZvcm1JbnN0YW5jZSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gSW50ZXJuYWxzIOKAkyBleHBvc2VkIGZvciBQcm9Gb3JtIGludGVncmF0aW9uLiBEYXRhIGZpZWxkcyBhcmUgR0VUVEVSUyB0aGF0XG4gICAgLy8gcmVhZCB0aGUgbGl2ZSBzdG9yZSwgc28gdGhlIG9iamVjdCBpcyBpZGVudGl0eS1zdGFibGUgeWV0IG5ldmVyIHN0YWxlLlxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGludGVybmFscyA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICAgICAgZ2V0IHZhbHVlcygpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5nZXRTdGF0ZSgpLnZhbHVlcztcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGVycm9ycygpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5nZXRTdGF0ZSgpLmVycm9ycztcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHdhcm5pbmdzKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmdldFN0YXRlKCkud2FybmluZ3M7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCB0b3VjaGVkKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmdldFN0YXRlKCkudG91Y2hlZDtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHZhbGlkYXRpbmcoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuZ2V0U3RhdGUoKS52YWxpZGF0aW5nO1xuICAgICAgICB9LFxuICAgICAgICBmaWVsZFJ1bGVzOiBmb3JtQ29yZS5maWVsZFJ1bGVzLFxuICAgICAgICBzZXRGaWVsZFZhbHVlOiBmb3JtQ29yZS5zZXRGaWVsZFZhbHVlLFxuICAgICAgICBzZXRGaWVsZEVycm9yOiBmb3JtQ29yZS5zZXRGaWVsZEVycm9yLFxuICAgICAgICBzZXRGaWVsZFdhcm5pbmc6IGZvcm1Db3JlLnNldEZpZWxkV2FybmluZyxcbiAgICAgICAgdmFsaWRhdGVGaWVsZEFzeW5jLFxuICAgICAgICByZWdpc3RlckZpZWxkOiBmb3JtQ29yZS5yZWdpc3RlckZpZWxkLFxuICAgICAgICB1bnJlZ2lzdGVyRmllbGQ6IGZvcm1Db3JlLnVucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgcmV0YWluRmllbGQ6IGZvcm1Db3JlLnJldGFpbkZpZWxkLFxuICAgICAgICByZWxlYXNlRmllbGQ6IGZvcm1Db3JlLnJlbGVhc2VGaWVsZCxcbiAgICAgICAgaGFuZGxlU3VibWl0LFxuICAgICAgICBoYW5kbGVSZXNldCxcbiAgICB9KSwgW1xuICAgICAgICBzdG9yZSxcbiAgICAgICAgZm9ybUNvcmUuZmllbGRSdWxlcyxcbiAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRFcnJvcixcbiAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRXYXJuaW5nLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkQXN5bmMsXG4gICAgICAgIGZvcm1Db3JlLnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIGZvcm1Db3JlLnVucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgZm9ybUNvcmUucmV0YWluRmllbGQsXG4gICAgICAgIGZvcm1Db3JlLnJlbGVhc2VGaWVsZCxcbiAgICAgICAgaGFuZGxlU3VibWl0LFxuICAgICAgICBoYW5kbGVSZXNldCxcbiAgICBdKTtcbiAgICByZXR1cm4geyBmb3JtSW5zdGFuY2UsIGludGVybmFscywgc3RvcmUgfTtcbn07XG5leHBvcnQgZGVmYXVsdCB1c2VGb3JtOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
@@ -274,4 +274,4 @@ export var useFormCore = function useFormCore() {
|
|
|
274
274
|
};
|
|
275
275
|
};
|
|
276
276
|
export default useFormCore;
|
|
277
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtQ29yZS50cyIsImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm1Db3JlLmpzIl0sIm5hbWVzIjpbInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VFdmVudENhbGxiYWNrIiwidXNlTWVtb2l6ZWRGbiIsIm1lcmdlVmFsdWVzUGF0Y2giLCJyZXNvbHZlVmFsdWUiLCJzZXROZXN0ZWRWYWx1ZSIsImNyZWF0ZUZvcm1TdG9yZSIsInNhbWVWYWxpZGF0aW9uTm9kZSIsInVzZUZvcm1Db3JlIiwiY29uZmlnIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiX2NvbmZpZyRpbml0aWFsVmFsdWVzIiwiaW5pdGlhbFZhbHVlcyIsIm9uVmFsdWVzQ2hhbmdlIiwib25SZXNldCIsIl9jb25maWckc2l6ZSIsInNpemUiLCJfY29uZmlnJGxhYmVsQWxpZ24iLCJsYWJlbEFsaWduIiwiX2NvbmZpZyRkaXNhYmxlZCIsImRpc2FibGVkIiwiX2NvbmZpZyR2YWxpZGF0ZVRyaWdnIiwidmFsaWRhdGVUcmlnZ2VyIiwiaW5pdGlhbFZhbHVlc1JlZiIsImN1cnJlbnQiLCJtb3VudEluaXRpYWxWYWx1ZXMiLCJzdG9yZVJlZiIsInN0b3JlIiwiZmllbGRSdWxlc1JlZiIsInZhbGlkYXRpb25FcG9jaFJlZiIsImJlZ2luVmFsaWRhdGlvblJ1biIsIm5hbWUiLCJuZXh0IiwiaXNWYWxpZGF0aW9uUnVuQ3VycmVudCIsImVwb2NoIiwiaW52YWxpZGF0ZVZhbGlkYXRpb25SdW5zIiwibmFtZXMiLCJrZXlzIiwiT2JqZWN0IiwiZm9yRWFjaCIsImtleSIsInJ1bGVDb250ZXh0SW5zdGFuY2VSZWYiLCJzZXRSdWxlQ29udGV4dEluc3RhbmNlIiwiaW5zdGFuY2UiLCJnZXRSdWxlQ29udGV4dEluc3RhbmNlIiwiY29tbWl0VmFsdWVzIiwibmV3VmFsdWVzIiwic2V0U3RhdGUiLCJ2YWx1ZXMiLCJzZXRGaWVsZFZhbHVlIiwidmFsdWUiLCJwcmV2IiwiZ2V0U3RhdGUiLCJpbmNsdWRlcyIsImFzc2lnbiIsIl9kZWZpbmVQcm9wZXJ0eSIsInNldEZpZWxkRXJyb3IiLCJlcnJvciIsImVycm9ycyIsIm5ld0Vycm9ycyIsInNldEZpZWxkV2FybmluZyIsIndhcm5pbmciLCJ3YXJuaW5ncyIsIm5ld1dhcm5pbmdzIiwiZmllbGRNb3VudENvdW50c1JlZiIsImZpZWxkUmVnaXN0cmF0aW9uT3duZWRSZWYiLCJyZWdpc3RlckZpZWxkIiwicnVsZXMiLCJnZXRGaWVsZFJ1bGVzIiwidW5yZWdpc3RlckZpZWxkIiwicmV0YWluRmllbGQiLCJyZWxlYXNlRmllbGQiLCJjb3VudCIsInJlc2V0RmllbGRzIiwidG91Y2hlZCIsInZhbGlkYXRpbmciLCJoYW5kbGVSZXNldCIsImUiLCJwcmV2ZW50RGVmYXVsdCIsImdldEZpZWxkVmFsdWUiLCJnZXRGaWVsZHNWYWx1ZSIsIm5hbWVMaXN0IiwicmVkdWNlIiwiYWNjIiwic2V0RmllbGRzVmFsdWUiLCJ2YWx1ZXNQYXRjaCIsInVwZGF0ZWRWYWx1ZXMiLCJzb21lIiwiX2kiLCJfT2JqZWN0JGVudHJpZXMiLCJlbnRyaWVzIiwiX09iamVjdCRlbnRyaWVzJF9pIiwiX3NsaWNlZFRvQXJyYXkiLCJmb3JtSW5zdGFuY2UiLCJzdGF0ZSIsImZpZWxkUnVsZXMiLCJnZXRJbml0aWFsVmFsdWVzIl0sIm1hcHBpbmdzIjoiOztBQUFBLFNBQVNBLE9BQU8sRUFBRUMsTUFBTSxRQUFRLE9BQU87QUFFdkMsT0FBT0MsZ0JBQWdCLE1BQU0sZ0NBQWdDO0FBQzdELE9BQU9DLGFBQWEsTUFBTSw2QkFBNkI7QUFDdkQsU0FBU0MsZ0JBQWdCLEVBQUVDLFlBQVksRUFBRUMsY0FBYyxRQUFRLGNBQWM7QUFDN0UsU0FBU0MsZUFBZSxFQUFFQyxrQkFBa0IsUUFBUSxjQUFjO0FBV2xFLE9BQU8sSUFBTUMsV0FBVyxHQUFHLFNBQWRBLFdBQVdB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S0FBSyxDQUFDcEIsT0FBTztJQUN0QjtJQUNBcUIsVUFBVSxFQUFFbkUsYUFBYSxDQUFDSixPQUFPO0lBQ2pDNEMsYUFBYSxFQUFiQSxhQUFhO0lBQ2J4QixzQkFBc0IsRUFBdEJBLHNCQUFzQjtJQUN0QkYsc0JBQXNCLEVBQXRCQSxzQkFBc0I7SUFDdEJaLGtCQUFrQixFQUFsQkEsa0JBQWtCO0lBQ2xCRyxzQkFBc0IsRUFBdEJBLHNCQUFzQjtJQUN0QkUsd0JBQXdCLEVBQXhCQSx3QkFBd0I7SUFDeEJjLGFBQWEsRUFBYkEsYUFBYTtJQUNiTyxhQUFhLEVBQWJBLGFBQWE7SUFDYkksZUFBZSxFQUFmQSxlQUFlO0lBQ2Z3QixjQUFjLEVBQWRBLGNBQWM7SUFDZEwsYUFBYSxFQUFiQSxhQUFhO0lBQ2JDLGNBQWMsRUFBRUEsY0FBNEQ7SUFDNUVkLGFBQWEsRUFBYkEsYUFBYTtJQUNiRyxlQUFlLEVBQWZBLGVBQWU7SUFDZkMsV0FBVyxFQUFYQSxXQUFXO0lBQ1hDLFlBQVksRUFBWkEsWUFBWTtJQUNaSyxXQUFXLEVBQVhBLFdBQVc7SUFDWEgsV0FBVyxFQUFYQSxXQUFXO0lBQ1hvQixZQUFZLEVBQVpBLFlBQVk7SUFDWmxFLEtBQUssRUFBTEEsS0FBSztJQUNMcUUsZ0JBQWdCLEVBQUUsU0FBbEJBLGdCQUFnQkEsQ0FBQTtNQUFBLE9BQVF2RSxrQkFBa0I7SUFBQTtFQ3pDMUMsQ0QwQ0Q7QUFDSCxDQUFDO0FBRUQsZUFBZW5CLFdBQVciLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvaG9va3MvdXNlRm9ybUNvcmUuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IHVzZU1lbW8sIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgdXNlTWVtb2l6ZWRGbiBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZU1lbW9pemVkRm4nO1xuaW1wb3J0IHsgbWVyZ2VWYWx1ZXNQYXRjaCwgcmVzb2x2ZVZhbHVlLCBzZXROZXN0ZWRWYWx1ZSB9IGZyb20gJy4uL3BhdGhVdGlscyc7XG5pbXBvcnQgeyBjcmVhdGVGb3JtU3RvcmUsIHNhbWVWYWxpZGF0aW9uTm9kZSB9IGZyb20gJy4uL2Zvcm1TdG9yZSc7XG5leHBvcnQgY29uc3QgdXNlRm9ybUNvcmUgPSAoY29uZmlnID0ge30pID0+IHtcbiAgICBjb25zdCB7IGluaXRpYWxWYWx1ZXMgPSB7fSwgb25WYWx1ZXNDaGFuZ2UsIG9uUmVzZXQsIHNpemUgPSAnbGFyZ2UnLCBsYWJlbEFsaWduID0gJ2xlZnQnLCBkaXNhYmxlZCA9IGZhbHNlLCB2YWxpZGF0ZVRyaWdnZXIgPSAnb25DaGFuZ2UnLCB9ID0gY29uZmlnO1xuICAgIC8vIGluaXRpYWxWYWx1ZXMgaXMgTU9VTlQtT05MWSAodGhlIGRvY3VtZW50ZWQgY29udHJhY3QpOiBmcmVlemUgdGhlIGZpcnN0XG4gICAgLy8gcmVuZGVyJ3MgdmFsdWUgc28gcmVzZXRGaWVsZHMgYWx3YXlzIHJlc3RvcmVzIHRoZSBtb3VudC10aW1lIGRlZmF1bHRzLFxuICAgIC8vIGV2ZW4gd2hlbiB0aGUgY29uc3VtZXIgcmUtcmVuZGVycyB3aXRoIGEgZGlmZmVyZW50IChlLmcuIGNvbnRyb2xsZWQpXG4gICAgLy8gaW5pdGlhbFZhbHVlcyBvYmplY3QuXG4gICAgY29uc3QgaW5pdGlhbFZhbHVlc1JlZiA9IHVzZVJlZihudWxsKTtcbiAgICBpZiAoaW5pdGlhbFZhbHVlc1JlZi5jdXJyZW50ID09PSBudWxsKSB7XG4gICAgICAgIGluaXRpYWxWYWx1ZXNSZWYuY3VycmVudCA9IGluaXRpYWxWYWx1ZXM7XG4gICAgfVxuICAgIGNvbnN0IG1vdW50SW5pdGlhbFZhbHVlcyA9IGluaXRpYWxWYWx1ZXNSZWYuY3VycmVudDtcbiAgICAvLyBBbGwgdm9sYXRpbGUgZm9ybSBzdGF0ZSBsaXZlcyBpbiBhbiBleHRlcm5hbCBzdG9yZSwgTk9UIFJlYWN0IHN0YXRlIOKAlCBhXG4gICAgLy8ga2V5c3Ryb2tlIG11c3QgbmV2ZXIgcmUtcmVuZGVyIHRoZSBjb21wb25lbnQgdGhhdCBvd25zIHRoZSBmb3JtLiBGaWVsZHNcbiAgICAvLyBhbmQgd2F0Y2hlcnMgc3Vic2NyaWJlIHdpdGggcGVyLWZpZWxkIHNlbGVjdG9ycyAodXNlU3RvcmVTZWxlY3Rvcik7IGV2ZXJ5XG4gICAgLy8gbXV0YXRvciBiZWxvdyByZWFkcyB0aGUgTEFURVNUIHN0YXRlIHZpYSBzdG9yZS5nZXRTdGF0ZSgpLCB3aGljaCBhbHNvXG4gICAgLy8ga2VlcHMgbXVsdGlwbGUgd3JpdGVzIGluIHRoZSBzYW1lIHRpY2sgdmlzaWJsZSB0byBlYWNoIG90aGVyLlxuICAgIGNvbnN0IHN0b3JlUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGlmIChzdG9yZVJlZi5jdXJyZW50ID09PSBudWxsKSB7XG4gICAgICAgIHN0b3JlUmVmLmN1cnJlbnQgPSBjcmVhdGVGb3JtU3RvcmUobW91bnRJbml0aWFsVmFsdWVzKTtcbiAgICB9XG4gICAgY29uc3Qgc3RvcmUgPSBzdG9yZVJlZi5jdXJyZW50O1xuICAgIC8vIExpdmUgcnVsZSByZWdpc3RyeSDigJQgT05FIHN0YWJsZSBvYmplY3QgbXV0YXRlZCBpbiBwbGFjZS4gUmVnaXN0cmF0aW9uIG11c3RcbiAgICAvLyBub3QgdHJpZ2dlciByZW5kZXJzLCBhbmQgc3VibWl0LXRpbWUgdmFsaWRhdGlvbiBtdXN0IGFsd2F5cyByZWFkIHRoZSBsYXRlc3RcbiAgICAvLyBydWxlcyAodGhleSBjYW4gY2hhbmdlIGJldHdlZW4gcmVuZGVycywgZS5nLiBhIGNvbmRpdGlvbmFsIGByZXF1aXJlZGApLlxuICAgIGNvbnN0IGZpZWxkUnVsZXNSZWYgPSB1c2VSZWYoe30pO1xuICAgIC8vIFBlci1maWVsZCB2YWxpZGF0aW9uIHJ1biBlcG9jaHMuIEVWRVJZIHZhbGlkYXRpb24gcnVuIChzeW5jIG9yIGFzeW5jKVxuICAgIC8vIGJ1bXBzIGl0cyBmaWVsZCdzIGVwb2NoOyBhbiBhc3luYyBydW4gcmUtY2hlY2tzIGl0cyBjYXB0dXJlZCBlcG9jaCBhdFxuICAgIC8vIHNldHRsZSB0aW1lIGFuZCBkaXNjYXJkcyBhIFNUQUxFIG91dGNvbWUg4oCUIHRoZSBzYW1lIHByb3RlY3Rpb24gYXNcbiAgICAvLyByYy1maWVsZC1mb3JtJ3MgdmFsaWRhdGVQcm9taXNlIGlkZW50aXR5IGNoZWNrLiBXaXRob3V0IGl0LCBhIHNsb3cgYXN5bmNcbiAgICAvLyB2YWxpZGF0b3IgKGUuZy4gYSBzZXJ2ZXItc2lkZSB1bmlxdWVuZXNzIGNoZWNrIHN0YXJ0ZWQgb24gYmx1cikgY291bGRcbiAgICAvLyBzZXR0bGUgYWZ0ZXIgdGhlIHVzZXIgYWxyZWFkeSBmaXhlZCB0aGUgdmFsdWUgYW5kIHN0YW1wIGEgc3RhbGUgZXJyb3JcbiAgICAvLyBvdmVyIGEgbmV3ZXIsIHBhc3NpbmcgcmVzdWx0LlxuICAgIGNvbnN0IHZhbGlkYXRpb25FcG9jaFJlZiA9IHVzZVJlZih7fSk7XG4gICAgY29uc3QgYmVnaW5WYWxpZGF0aW9uUnVuID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4ge1xuICAgICAgICBjb25zdCBuZXh0ID0gKHZhbGlkYXRpb25FcG9jaFJlZi5jdXJyZW50W25hbWVdIHx8IDApICsgMTtcbiAgICAgICAgdmFsaWRhdGlvbkVwb2NoUmVmLmN1cnJlbnRbbmFtZV0gPSBuZXh0O1xuICAgICAgICByZXR1cm4gbmV4dDtcbiAgICB9KTtcbiAgICBjb25zdCBpc1ZhbGlkYXRpb25SdW5DdXJyZW50ID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgZXBvY2gpID0+IHZhbGlkYXRpb25FcG9jaFJlZi5jdXJyZW50W25hbWVdID09PSBlcG9jaCk7XG4gICAgLy8gQnVtcCAobmV2ZXIgZGVsZXRlIOKAlCBkZWxldGlvbiB3b3VsZCBsZXQgYSBuZXcgcnVuIHJlLWlzc3VlIGFuIG9sZCBlcG9jaFxuICAgIC8vIG51bWJlciBhbmQgY29sbGlkZSB3aXRoIGEgc3RpbGwtaW4tZmxpZ2h0IHByZS1yZXNldCBydW4pLlxuICAgIGNvbnN0IGludmFsaWRhdGVWYWxpZGF0aW9uUnVucyA9IHVzZU1lbW9pemVkRm4oKG5hbWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBuYW1lcyAhPT0gbnVsbCAmJiBuYW1lcyAhPT0gdm9pZCAwID8gbmFtZXMgOiBPYmplY3Qua2V5cyh2YWxpZGF0aW9uRXBvY2hSZWYuY3VycmVudCk7XG4gICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAodmFsaWRhdGlvbkVwb2NoUmVmLmN1cnJlbnRba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvbkVwb2NoUmVmLmN1cnJlbnRba2V5XSArPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICAvLyBJbnN0YW5jZSBoYW5kZWQgdG8gZnVuY3Rpb24tZm9ybSBydWxlcy4gRGVmYXVsdHMgdG8gdGhlIGNvcmUgbWV0aG9kc1xuICAgIC8vIChhc3NpZ25lZCBhdCB0aGUgZW5kIG9mIHRoaXMgaG9vayBib2R5KTsgdXNlRm9ybSB1cGdyYWRlcyBpdCB0byB0aGUgRlVMTFxuICAgIC8vIGZvcm0gaW5zdGFuY2Ugb25jZSBpdCBoYXMgYnVpbHQgb25lLCBzbyBydWxlcyBzZWUgdGhlIHNhbWUgY29udGV4dCBvblxuICAgIC8vIGV2ZXJ5IHBhdGggKGludGVyYWN0aXZlLCBibHVyLCBzdWJtaXQpLlxuICAgIGNvbnN0IHJ1bGVDb250ZXh0SW5zdGFuY2VSZWYgPSB1c2VSZWYoe30pO1xuICAgIGNvbnN0IHNldFJ1bGVDb250ZXh0SW5zdGFuY2UgPSB1c2VNZW1vaXplZEZuKChpbnN0YW5jZSkgPT4ge1xuICAgICAgICBydWxlQ29udGV4dEluc3RhbmNlUmVmLmN1cnJlbnQgPSBpbnN0YW5jZTtcbiAgICB9KTtcbiAgICBjb25zdCBnZXRSdWxlQ29udGV4dEluc3RhbmNlID0gdXNlTWVtb2l6ZWRGbigoKSA9PiBydWxlQ29udGV4dEluc3RhbmNlUmVmLmN1cnJlbnQpO1xuICAgIGNvbnN0IGNvbW1pdFZhbHVlcyA9IHVzZU1lbW9pemVkRm4oKG5ld1ZhbHVlcykgPT4ge1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7IHZhbHVlczogbmV3VmFsdWVzIH0pO1xuICAgIH0pO1xuICAgIC8vIE5PVEU6IHNldHRpbmcgYSB2YWx1ZSBkb2VzIE5PVCB0b3VjaCB0aGUgZmllbGQncyBlcnJvciDigJQgZXJyb3JzIGFyZVxuICAgIC8vIGNsZWFyZWQgZXhjbHVzaXZlbHkgYnkgdmFsaWRhdGlvbiBydW5zICh3aG9zZSB0aW1pbmcgZm9sbG93cyB0aGVcbiAgICAvLyB2YWxpZGF0ZVRyaWdnZXIgY29uZmlnKSwgc28gYW4gb25CbHVyLW9ubHkgZmllbGQga2VlcHMgaXRzIGVycm9yIHdoaWxlXG4gICAgLy8gdGhlIHVzZXIgaXMgc3RpbGwgdHlwaW5nLlxuICAgIGNvbnN0IHNldEZpZWxkVmFsdWUgPSB1c2VNZW1vaXplZEZuKChuYW1lLCB2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCBwcmV2ID0gc3RvcmUuZ2V0U3RhdGUoKS52YWx1ZXM7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlcyA9IG5hbWUuaW5jbHVkZXMoJy4nKVxuICAgICAgICAgICAgPyBzZXROZXN0ZWRWYWx1ZShwcmV2LCBuYW1lLCB2YWx1ZSlcbiAgICAgICAgICAgIDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcmV2KSwgeyBbbmFtZV06IHZhbHVlIH0pO1xuICAgICAgICBjb21taXRWYWx1ZXMobmV3VmFsdWVzKTtcbiAgICAgICAgb25WYWx1ZXNDaGFuZ2UgPT09IG51bGwgfHwgb25WYWx1ZXNDaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uVmFsdWVzQ2hhbmdlKHsgW25hbWVdOiB2YWx1ZSB9LCBuZXdWYWx1ZXMpO1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEZpZWxkRXJyb3IgPSB1c2VNZW1vaXplZEZuKChuYW1lLCBlcnJvcikgPT4ge1xuICAgICAgICBjb25zdCBlcnJvcnMgPSBzdG9yZS5nZXRTdGF0ZSgpLmVycm9ycztcbiAgICAgICAgaWYgKGVycm9yID09PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAoIWVycm9yc1tuYW1lXSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjb25zdCBuZXdFcnJvcnMgPSBPYmplY3QuYXNzaWduKHt9LCBlcnJvcnMpO1xuICAgICAgICAgICAgZGVsZXRlIG5ld0Vycm9yc1tuYW1lXTtcbiAgICAgICAgICAgIHN0b3JlLnNldFN0YXRlKHsgZXJyb3JzOiBuZXdFcnJvcnMgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNhbWVWYWxpZGF0aW9uTm9kZShlcnJvcnNbbmFtZV0sIGVycm9yKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc3RvcmUuc2V0U3RhdGUoeyBlcnJvcnM6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZXJyb3JzKSwgeyBbbmFtZV06IGVycm9yIH0pIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEZpZWxkV2FybmluZyA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHdhcm5pbmcpID0+IHtcbiAgICAgICAgY29uc3Qgd2FybmluZ3MgPSBzdG9yZS5nZXRTdGF0ZSgpLndhcm5pbmdzO1xuICAgICAgICBpZiAod2FybmluZyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKCF3YXJuaW5nc1tuYW1lXSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjb25zdCBuZXdXYXJuaW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHdhcm5pbmdzKTtcbiAgICAgICAgICAgIGRlbGV0ZSBuZXdXYXJuaW5nc1tuYW1lXTtcbiAgICAgICAgICAgIHN0b3JlLnNldFN0YXRlKHsgd2FybmluZ3M6IG5ld1dhcm5pbmdzIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzYW1lVmFsaWRhdGlvbk5vZGUod2FybmluZ3NbbmFtZV0sIHdhcm5pbmcpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7IHdhcm5pbmdzOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHdhcm5pbmdzKSwgeyBbbmFtZV06IHdhcm5pbmcgfSkgfSk7XG4gICAgfSk7XG4gICAgLy8gTW91bnRlZC1pbnN0YW5jZSBjb3VudHMgcGVyIGZpZWxkIG5hbWUsIHBsdXMgd2hldGhlciB0aGUgQ1VSUkVOVCBydWxlc1xuICAgIC8vIHJlZ2lzdHJhdGlvbiB3YXMgbWFkZSBieSBhIGNvdW50ZWQgaW5zdGFuY2UuIFJ1bGVzIGFyZSByZW1vdmVkIG9ubHkgd2hlblxuICAgIC8vIHRoZSBMQVNUIG1vdW50ZWQgaW5zdGFuY2UgZm9yIGEgbmFtZSByZWxlYXNlczogd2l0aCB0d28gc2FtZS1uYW1lIGZpZWxkc1xuICAgIC8vIG1vdW50ZWQsIHRoZSBmaXJzdCB1bm1vdW50IG11c3Qgbm90IHdpcGUgdGhlIHJlZ2lzdHJhdGlvbiB3aGlsZSB0aGVcbiAgICAvLyBzdXJ2aXZvciAocG9zc2libHkgbWVtby1iYWlsZWQsIHNvIG5vdCByZS1yZW5kZXJpbmcgdG8gcmUtcmVnaXN0ZXIpIHN0aWxsXG4gICAgLy8gcmVsaWVzIG9uIGl0IGZvciBzdWJtaXQtdGltZSB2YWxpZGF0aW9uLiBBIE1BTlVBTCByZWdpc3RlckZpZWxkIChub1xuICAgIC8vIG1vdW50ZWQgaG9sZGVyLCBvd25lZD1mYWxzZSkgc3Vydml2ZXMgdGhlIHVubW91bnQgb2YgcGlnZ3liYWNraW5nXG4gICAgLy8gaW5zdGFuY2VzIHRoYXQgbmV2ZXIgcmVnaXN0ZXJlZCBydWxlcyB0aGVtc2VsdmVzLlxuICAgIC8vIE5PVEU6IGNhbGxlcnMgbXVzdCByZXRhaW4gQkVGT1JFIHJlZ2lzdGVyaW5nIChyZXRhaW4gZWZmZWN0IGRlY2xhcmVkXG4gICAgLy8gZmlyc3QpLCBvciB0aGUgcmVnaXN0cmF0aW9uIGlzIG1pc2NsYXNzaWZpZWQgYXMgbWFudWFsIGFuZCBsZWFrcy5cbiAgICBjb25zdCBmaWVsZE1vdW50Q291bnRzUmVmID0gdXNlUmVmKHt9KTtcbiAgICBjb25zdCBmaWVsZFJlZ2lzdHJhdGlvbk93bmVkUmVmID0gdXNlUmVmKHt9KTtcbiAgICBjb25zdCByZWdpc3RlckZpZWxkID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgcnVsZXMpID0+IHtcbiAgICAgICAgZmllbGRSdWxlc1JlZi5jdXJyZW50W25hbWVdID0gcnVsZXM7XG4gICAgICAgIGZpZWxkUmVnaXN0cmF0aW9uT3duZWRSZWYuY3VycmVudFtuYW1lXSA9IChmaWVsZE1vdW50Q291bnRzUmVmLmN1cnJlbnRbbmFtZV0gfHwgMCkgPiAwO1xuICAgIH0pO1xuICAgIGNvbnN0IGdldEZpZWxkUnVsZXMgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiB7XG4gICAgICAgIHJldHVybiBmaWVsZFJ1bGVzUmVmLmN1cnJlbnRbbmFtZV07XG4gICAgfSk7XG4gICAgY29uc3QgdW5yZWdpc3RlckZpZWxkID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4ge1xuICAgICAgICBkZWxldGUgZmllbGRSdWxlc1JlZi5jdXJyZW50W25hbWVdO1xuICAgICAgICBkZWxldGUgZmllbGRSZWdpc3RyYXRpb25Pd25lZFJlZi5jdXJyZW50W25hbWVdO1xuICAgIH0pO1xuICAgIGNvbnN0IHJldGFpbkZpZWxkID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4ge1xuICAgICAgICBmaWVsZE1vdW50Q291bnRzUmVmLmN1cnJlbnRbbmFtZV0gPSAoZmllbGRNb3VudENvdW50c1JlZi5jdXJyZW50W25hbWVdIHx8IDApICsgMTtcbiAgICB9KTtcbiAgICBjb25zdCByZWxlYXNlRmllbGQgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvdW50ID0gKGZpZWxkTW91bnRDb3VudHNSZWYuY3VycmVudFtuYW1lXSB8fCAwKSAtIDE7XG4gICAgICAgIGlmIChjb3VudCA8PSAwKSB7XG4gICAgICAgICAgICBkZWxldGUgZmllbGRNb3VudENvdW50c1JlZi5jdXJyZW50W25hbWVdO1xuICAgICAgICAgICAgaWYgKGZpZWxkUmVnaXN0cmF0aW9uT3duZWRSZWYuY3VycmVudFtuYW1lXSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBmaWVsZFJ1bGVzUmVmLmN1cnJlbnRbbmFtZV07XG4gICAgICAgICAgICAgICAgZGVsZXRlIGZpZWxkUmVnaXN0cmF0aW9uT3duZWRSZWYuY3VycmVudFtuYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZpZWxkTW91bnRDb3VudHNSZWYuY3VycmVudFtuYW1lXSA9IGNvdW50O1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgLy8gUHVyZSBzdGF0ZSBBUEk6IHRoZSBpbXBlcmF0aXZlIHJlc2V0RmllbGRzKClcbiAgICAvLyBuZXZlciBmaXJlcyBvblJlc2V0LiBUaGUgY2FsbGJhY2sgYmVsb25ncyB0byB0aGUgcmVzZXQgQUNUSU9OIGxheWVyXG4gICAgLy8gKHN1Ym1pdHRlciBidXR0b24gLyBuYXRpdmUgcmVzZXQgZXZlbnQpLCB3aGljaCBmaXJlcyBpdCBleGFjdGx5IG9uY2UuXG4gICAgY29uc3QgcmVzZXRGaWVsZHMgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgLy8gSW52YWxpZGF0ZSBpbi1mbGlnaHQgYXN5bmMgdmFsaWRhdGlvbiBydW5zIOKAlCB0aGVpciByZXN1bHRzIGJlbG9uZyB0b1xuICAgICAgICAvLyBwcmUtcmVzZXQgdmFsdWVzIGFuZCBtdXN0IG5vdCBzdGFtcCBlcnJvcnMgb250byB0aGUgcmVzZXQgZm9ybS5cbiAgICAgICAgaW52YWxpZGF0ZVZhbGlkYXRpb25SdW5zKCk7XG4gICAgICAgIHN0b3JlLnNldFN0YXRlKHtcbiAgICAgICAgICAgIHZhbHVlczogbW91bnRJbml0aWFsVmFsdWVzLFxuICAgICAgICAgICAgZXJyb3JzOiB7fSxcbiAgICAgICAgICAgIHdhcm5pbmdzOiB7fSxcbiAgICAgICAgICAgIHRvdWNoZWQ6IHt9LFxuICAgICAgICAgICAgdmFsaWRhdGluZzoge30sXG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVJlc2V0ID0gdXNlRXZlbnRDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICBlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmVzZXRGaWVsZHMoKTtcbiAgICAgICAgb25SZXNldCA9PT0gbnVsbCB8fCBvblJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblJlc2V0KCk7XG4gICAgfSk7XG4gICAgY29uc3QgZ2V0RmllbGRWYWx1ZSA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVWYWx1ZShzdG9yZS5nZXRTdGF0ZSgpLnZhbHVlcywgbmFtZSk7XG4gICAgfSk7XG4gICAgY29uc3QgZ2V0RmllbGRzVmFsdWUgPSB1c2VNZW1vaXplZEZuKChuYW1lTGlzdCkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBzdG9yZS5nZXRTdGF0ZSgpLnZhbHVlcztcbiAgICAgICAgaWYgKCFuYW1lTGlzdClcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgICAgIHJldHVybiBuYW1lTGlzdC5yZWR1Y2UoKGFjYywgbmFtZSkgPT4ge1xuICAgICAgICAgICAgYWNjW25hbWVdID0gcmVzb2x2ZVZhbHVlKHZhbHVlcywgbmFtZSk7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmllbGRzVmFsdWUgPSB1c2VNZW1vaXplZEZuKChuZXdWYWx1ZXMpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWVzUGF0Y2ggPSBuZXdWYWx1ZXM7XG4gICAgICAgIGNvbnN0IHByZXYgPSBzdG9yZS5nZXRTdGF0ZSgpLnZhbHVlcztcbiAgICAgICAgbGV0IHVwZGF0ZWRWYWx1ZXM7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyh2YWx1ZXNQYXRjaCkuc29tZSgoa2V5KSA9PiBrZXkuaW5jbHVkZXMoJy4nKSkpIHtcbiAgICAgICAgICAgIC8vIERvdC1wYXRoIGtleXMgd3JpdGUgaW50byB0aGUgTkVTVEVEIHN0cnVjdHVyZSAodGhlIHNldEZpZWxkVmFsdWVcbiAgICAgICAgICAgIC8vIGNvbnRyYWN0KSDigJQgYSBzaGFsbG93IG1lcmdlIHdvdWxkIGxhbmQgdGhlbSBhcyBsaXRlcmFsIHRvcC1sZXZlbFxuICAgICAgICAgICAgLy8ga2V5cyB0aGF0IHRoZSBuZXN0ZWQtYXdhcmUgcmVhZGVycyBuZXZlciBmaW5kLlxuICAgICAgICAgICAgdXBkYXRlZFZhbHVlcyA9IHByZXY7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YWx1ZXNQYXRjaCkpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVkVmFsdWVzID0ga2V5LmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgICAgICAgICAgPyBzZXROZXN0ZWRWYWx1ZSh1cGRhdGVkVmFsdWVzLCBrZXksIHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICA6IG1lcmdlVmFsdWVzUGF0Y2godXBkYXRlZFZhbHVlcywgeyBba2V5XTogdmFsdWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB1cGRhdGVkVmFsdWVzID0gbWVyZ2VWYWx1ZXNQYXRjaChwcmV2LCB2YWx1ZXNQYXRjaCk7XG4gICAgICAgIH1cbiAgICAgICAgY29tbWl0VmFsdWVzKHVwZGF0ZWRWYWx1ZXMpO1xuICAgICAgICBvblZhbHVlc0NoYW5nZSA9PT0gbnVsbCB8fCBvblZhbHVlc0NoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25WYWx1ZXNDaGFuZ2UodmFsdWVzUGF0Y2gsIHVwZGF0ZWRWYWx1ZXMpO1xuICAgIH0pO1xuICAgIC8vIFNlZWQgdGhlIHJ1bGUtY29udGV4dCBpbnN0YW5jZSB3aXRoIHRoZSBjb3JlIG1ldGhvZHMgZXhhY3RseSBvbmNlIOKAlFxuICAgIC8vIHVzZUZvcm0ncyByaWNoZXIgaW5zdGFuY2UgbXVzdCBub3QgYmUgZG93bmdyYWRlZCBvbiBsYXRlciByZW5kZXJzLlxuICAgIGlmIChPYmplY3Qua2V5cyhydWxlQ29udGV4dEluc3RhbmNlUmVmLmN1cnJlbnQpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBydWxlQ29udGV4dEluc3RhbmNlUmVmLmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBnZXRGaWVsZFZhbHVlOiBnZXRGaWVsZFZhbHVlLFxuICAgICAgICAgICAgZ2V0RmllbGRzVmFsdWU6IGdldEZpZWxkc1ZhbHVlLFxuICAgICAgICAgICAgc2V0RmllbGRWYWx1ZTogc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgICAgIHNldEZpZWxkc1ZhbHVlOiBzZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgICAgIHJlc2V0RmllbGRzLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBmb3JtSW5zdGFuY2UgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgICAgIHJlc2V0RmllbGRzLFxuICAgICAgICBnZXRGaWVsZFZhbHVlOiBnZXRGaWVsZFZhbHVlLFxuICAgICAgICBnZXRGaWVsZHNWYWx1ZTogZ2V0RmllbGRzVmFsdWUsXG4gICAgICAgIHNldEZpZWxkc1ZhbHVlOiBzZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRWYWx1ZTogc2V0RmllbGRWYWx1ZSxcbiAgICB9KSwgW1xuICAgICAgICByZXNldEZpZWxkcyxcbiAgICAgICAgZ2V0RmllbGRWYWx1ZSxcbiAgICAgICAgZ2V0RmllbGRzVmFsdWUsXG4gICAgICAgIHNldEZpZWxkc1ZhbHVlLFxuICAgICAgICBzZXRGaWVsZFZhbHVlLFxuICAgIF0pO1xuICAgIC8vIFJlbmRlci10aW1lIHNuYXBzaG90IOKAlCBrZXB0IGZvciB0aGUgVXNlRm9ybUNvcmVSZXR1cm4gY29udHJhY3QuIFJlYWN0aXZlXG4gICAgLy8gY29uc3VtZXJzIG11c3QgZ28gdGhyb3VnaCB0aGUgc3RvcmUsIG5ldmVyIHRocm91Z2ggdGhlc2UgZmllbGRzLlxuICAgIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZXM6IHN0YXRlLnZhbHVlcyxcbiAgICAgICAgZXJyb3JzOiBzdGF0ZS5lcnJvcnMsXG4gICAgICAgIHdhcm5pbmdzOiBzdGF0ZS53YXJuaW5ncyxcbiAgICAgICAgdG91Y2hlZDogc3RhdGUudG91Y2hlZCxcbiAgICAgICAgLy8gTGl2ZSByZWdpc3RyeSDigJQgc3RhYmxlIGlkZW50aXR5LCBtdXRhdGVkIGluIHBsYWNlIGJ5IHJlZ2lzdGVyL3VucmVnaXN0ZXIuXG4gICAgICAgIGZpZWxkUnVsZXM6IGZpZWxkUnVsZXNSZWYuY3VycmVudCxcbiAgICAgICAgZ2V0RmllbGRSdWxlcyxcbiAgICAgICAgZ2V0UnVsZUNvbnRleHRJbnN0YW5jZSxcbiAgICAgICAgc2V0UnVsZUNvbnRleHRJbnN0YW5jZSxcbiAgICAgICAgYmVnaW5WYWxpZGF0aW9uUnVuLFxuICAgICAgICBpc1ZhbGlkYXRpb25SdW5DdXJyZW50LFxuICAgICAgICBpbnZhbGlkYXRlVmFsaWRhdGlvblJ1bnMsXG4gICAgICAgIHNldEZpZWxkVmFsdWUsXG4gICAgICAgIHNldEZpZWxkRXJyb3IsXG4gICAgICAgIHNldEZpZWxkV2FybmluZyxcbiAgICAgICAgc2V0RmllbGRzVmFsdWUsXG4gICAgICAgIGdldEZpZWxkVmFsdWUsXG4gICAgICAgIGdldEZpZWxkc1ZhbHVlOiBnZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgcmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgdW5yZWdpc3RlckZpZWxkLFxuICAgICAgICByZXRhaW5GaWVsZCxcbiAgICAgICAgcmVsZWFzZUZpZWxkLFxuICAgICAgICBoYW5kbGVSZXNldCxcbiAgICAgICAgcmVzZXRGaWVsZHMsXG4gICAgICAgIGZvcm1JbnN0YW5jZSxcbiAgICAgICAgc3RvcmUsXG4gICAgICAgIGdldEluaXRpYWxWYWx1ZXM6ICgpID0+IG1vdW50SW5pdGlhbFZhbHVlcyxcbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IHVzZUZvcm1Db3JlOyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
277
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtQ29yZS50cyIsImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm1Db3JlLmpzIl0sIm5hbWVzIjpbInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VFdmVudENhbGxiYWNrIiwidXNlTWVtb2l6ZWRGbiIsIm1lcmdlVmFsdWVzUGF0Y2giLCJyZXNvbHZlVmFsdWUiLCJzZXROZXN0ZWRWYWx1ZSIsImNyZWF0ZUZvcm1TdG9yZSIsInNhbWVWYWxpZGF0aW9uTm9kZSIsInVzZUZvcm1Db3JlIiwiY29uZmlnIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiX2NvbmZpZyRpbml0aWFsVmFsdWVzIiwiaW5pdGlhbFZhbHVlcyIsIm9uVmFsdWVzQ2hhbmdlIiwib25SZXNldCIsIl9jb25maWckc2l6ZSIsInNpemUiLCJfY29uZmlnJGxhYmVsQWxpZ24iLCJsYWJlbEFsaWduIiwiX2NvbmZpZyRkaXNhYmxlZCIsImRpc2FibGVkIiwiX2NvbmZpZyR2YWxpZGF0ZVRyaWdnIiwidmFsaWRhdGVUcmlnZ2VyIiwiaW5pdGlhbFZhbHVlc1JlZiIsImN1cnJlbnQiLCJtb3VudEluaXRpYWxWYWx1ZXMiLCJzdG9yZVJlZiIsInN0b3JlIiwiZmllbGRSdWxlc1JlZiIsInZhbGlkYXRpb25FcG9jaFJlZiIsImJlZ2luVmFsaWRhdGlvblJ1biIsIm5hbWUiLCJuZXh0IiwiaXNWYWxpZGF0aW9uUnVuQ3VycmVudCIsImVwb2NoIiwiaW52YWxpZGF0ZVZhbGlkYXRpb25SdW5zIiwibmFtZXMiLCJrZXlzIiwiT2JqZWN0IiwiZm9yRWFjaCIsImtleSIsInJ1bGVDb250ZXh0SW5zdGFuY2VSZWYiLCJzZXRSdWxlQ29udGV4dEluc3RhbmNlIiwiaW5zdGFuY2UiLCJnZXRSdWxlQ29udGV4dEluc3RhbmNlIiwiY29tbWl0VmFsdWVzIiwibmV3VmFsdWVzIiwic2V0U3RhdGUiLCJ2YWx1ZXMiLCJzZXRGaWVsZFZhbHVlIiwidmFsdWUiLCJwcmV2IiwiZ2V0U3RhdGUiLCJpbmNsdWRlcyIsImFzc2lnbiIsIl9kZWZpbmVQcm9wZXJ0eSIsInNldEZpZWxkRXJyb3IiLCJlcnJvciIsImVycm9ycyIsIm5ld0Vycm9ycyIsInNldEZpZWxkV2FybmluZyIsIndhcm5pbmciLCJ3YXJuaW5ncyIsIm5ld1dhcm5pbmdzIiwiZmllbGRNb3VudENvdW50c1JlZiIsImZpZWxkUmVnaXN0cmF0aW9uT3duZWRSZWYiLCJyZWdpc3RlckZpZWxkIiwicnVsZXMiLCJnZXRGaWVsZFJ1bGVzIiwidW5yZWdpc3RlckZpZWxkIiwicmV0YWluRmllbGQiLCJyZWxlYXNlRmllbGQiLCJjb3VudCIsInJlc2V0RmllbGRzIiwidG91Y2hlZCIsInZhbGlkYXRpbmciLCJoYW5kbGVSZXNldCIsImUiLCJwcmV2ZW50RGVmYXVsdCIsImdldEZpZWxkVmFsdWUiLCJnZXRGaWVsZHNWYWx1ZSIsIm5hbWVMaXN0IiwicmVkdWNlIiwiYWNjIiwic2V0RmllbGRzVmFsdWUiLCJ2YWx1ZXNQYXRjaCIsInVwZGF0ZWRWYWx1ZXMiLCJzb21lIiwiX2kiLCJfT2JqZWN0JGVudHJpZXMiLCJlbnRyaWVzIiwiX09iamVjdCRlbnRyaWVzJF9pIiwiX3NsaWNlZFRvQXJyYXkiLCJmb3JtSW5zdGFuY2UiLCJzdGF0ZSIsImZpZWxkUnVsZXMiLCJnZXRJbml0aWFsVmFsdWVzIl0sIm1hcHBpbmdzIjoiOztBQUFBLFNBQVNBLE9BQU8sRUFBRUMsTUFBTSxRQUFRLE9BQU87QUFFdkMsT0FBT0MsZ0JBQWdCLE1BQU0sZ0NBQWdDO0FBQzdELE9BQU9DLGFBQWEsTUFBTSw2QkFBNkI7QUFDdkQsU0FBU0MsZ0JBQWdCLEVBQUVDLFlBQVksRUFBRUMsY0FBYyxRQUFRLGNBQWM7QUFDN0UsU0FBU0MsZUFBZSxFQUFFQyxrQkFBa0IsUUFBUSxjQUFjO0FBV2xFLE9BQU8sSUFBTUMsV0FBVyxHQUFHLFNBQWRBLFdBQVdB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S0FBSyxDQUFDcEIsT0FBTztJQUN0QjtJQUNBcUIsVUFBVSxFQUFFbkUsYUFBYSxDQUFDSixPQUFPO0lBQ2pDNEMsYUFBYSxFQUFiQSxhQUFhO0lBQ2J4QixzQkFBc0IsRUFBdEJBLHNCQUFzQjtJQUN0QkYsc0JBQXNCLEVBQXRCQSxzQkFBc0I7SUFDdEJaLGtCQUFrQixFQUFsQkEsa0JBQWtCO0lBQ2xCRyxzQkFBc0IsRUFBdEJBLHNCQUFzQjtJQUN0QkUsd0JBQXdCLEVBQXhCQSx3QkFBd0I7SUFDeEJjLGFBQWEsRUFBYkEsYUFBYTtJQUNiTyxhQUFhLEVBQWJBLGFBQWE7SUFDYkksZUFBZSxFQUFmQSxlQUFlO0lBQ2Z3QixjQUFjLEVBQWRBLGNBQWM7SUFDZEwsYUFBYSxFQUFiQSxhQUFhO0lBQ2JDLGNBQWMsRUFBRUEsY0FBNEQ7SUFDNUVkLGFBQWEsRUFBYkEsYUFBYTtJQUNiRyxlQUFlLEVBQWZBLGVBQWU7SUFDZkMsV0FBVyxFQUFYQSxXQUFXO0lBQ1hDLFlBQVksRUFBWkEsWUFBWTtJQUNaSyxXQUFXLEVBQVhBLFdBQVc7SUFDWEgsV0FBVyxFQUFYQSxXQUFXO0lBQ1hvQixZQUFZLEVBQVpBLFlBQVk7SUFDWmxFLEtBQUssRUFBTEEsS0FBSztJQUNMcUUsZ0JBQWdCLEVBQUUsU0FBbEJBLGdCQUFnQkEsQ0FBQTtNQUFBLE9BQVF2RSxrQkFBa0I7SUFBQTtFQ3pDMUMsQ0QwQ0Q7QUFDSCxDQUFDO0FBRUQsZUFBZW5CLFdBQVciLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvaG9va3MvdXNlRm9ybUNvcmUuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IHVzZU1lbW8sIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgdXNlTWVtb2l6ZWRGbiBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZU1lbW9pemVkRm4nO1xuaW1wb3J0IHsgbWVyZ2VWYWx1ZXNQYXRjaCwgcmVzb2x2ZVZhbHVlLCBzZXROZXN0ZWRWYWx1ZSB9IGZyb20gJy4uL3BhdGhVdGlscyc7XG5pbXBvcnQgeyBjcmVhdGVGb3JtU3RvcmUsIHNhbWVWYWxpZGF0aW9uTm9kZSB9IGZyb20gJy4uL2Zvcm1TdG9yZSc7XG5leHBvcnQgY29uc3QgdXNlRm9ybUNvcmUgPSAoY29uZmlnID0ge30pID0+IHtcbiAgICBjb25zdCB7IGluaXRpYWxWYWx1ZXMgPSB7fSwgb25WYWx1ZXNDaGFuZ2UsIG9uUmVzZXQsIHNpemUgPSAnbGFyZ2UnLCBsYWJlbEFsaWduID0gJ2xlZnQnLCBkaXNhYmxlZCA9IGZhbHNlLCB2YWxpZGF0ZVRyaWdnZXIgPSAnb25DaGFuZ2UnLCB9ID0gY29uZmlnO1xuICAgIC8vIGluaXRpYWxWYWx1ZXMgaXMgTU9VTlQtT05MWSAodGhlIGRvY3VtZW50ZWQgY29udHJhY3QpOiBmcmVlemUgdGhlIGZpcnN0XG4gICAgLy8gcmVuZGVyJ3MgdmFsdWUgc28gcmVzZXRGaWVsZHMgYWx3YXlzIHJlc3RvcmVzIHRoZSBtb3VudC10aW1lIGRlZmF1bHRzLFxuICAgIC8vIGV2ZW4gd2hlbiB0aGUgY29uc3VtZXIgcmUtcmVuZGVycyB3aXRoIGEgZGlmZmVyZW50IChlLmcuIGNvbnRyb2xsZWQpXG4gICAgLy8gaW5pdGlhbFZhbHVlcyBvYmplY3QuXG4gICAgY29uc3QgaW5pdGlhbFZhbHVlc1JlZiA9IHVzZVJlZihudWxsKTtcbiAgICBpZiAoaW5pdGlhbFZhbHVlc1JlZi5jdXJyZW50ID09PSBudWxsKSB7XG4gICAgICAgIGluaXRpYWxWYWx1ZXNSZWYuY3VycmVudCA9IGluaXRpYWxWYWx1ZXM7XG4gICAgfVxuICAgIGNvbnN0IG1vdW50SW5pdGlhbFZhbHVlcyA9IGluaXRpYWxWYWx1ZXNSZWYuY3VycmVudDtcbiAgICAvLyBBbGwgdm9sYXRpbGUgZm9ybSBzdGF0ZSBsaXZlcyBpbiBhbiBleHRlcm5hbCBzdG9yZSwgTk9UIFJlYWN0IHN0YXRlIOKAlCBhXG4gICAgLy8ga2V5c3Ryb2tlIG11c3QgbmV2ZXIgcmUtcmVuZGVyIHRoZSBjb21wb25lbnQgdGhhdCBvd25zIHRoZSBmb3JtLiBGaWVsZHNcbiAgICAvLyBhbmQgd2F0Y2hlcnMgc3Vic2NyaWJlIHdpdGggcGVyLWZpZWxkIHNlbGVjdG9ycyAodXNlU3RvcmVTZWxlY3Rvcik7IGV2ZXJ5XG4gICAgLy8gbXV0YXRvciBiZWxvdyByZWFkcyB0aGUgTEFURVNUIHN0YXRlIHZpYSBzdG9yZS5nZXRTdGF0ZSgpLCB3aGljaCBhbHNvXG4gICAgLy8ga2VlcHMgbXVsdGlwbGUgd3JpdGVzIGluIHRoZSBzYW1lIHRpY2sgdmlzaWJsZSB0byBlYWNoIG90aGVyLlxuICAgIGNvbnN0IHN0b3JlUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGlmIChzdG9yZVJlZi5jdXJyZW50ID09PSBudWxsKSB7XG4gICAgICAgIHN0b3JlUmVmLmN1cnJlbnQgPSBjcmVhdGVGb3JtU3RvcmUobW91bnRJbml0aWFsVmFsdWVzKTtcbiAgICB9XG4gICAgY29uc3Qgc3RvcmUgPSBzdG9yZVJlZi5jdXJyZW50O1xuICAgIC8vIExpdmUgcnVsZSByZWdpc3RyeSDigJQgT05FIHN0YWJsZSBvYmplY3QgbXV0YXRlZCBpbiBwbGFjZS4gUmVnaXN0cmF0aW9uIG11c3RcbiAgICAvLyBub3QgdHJpZ2dlciByZW5kZXJzLCBhbmQgc3VibWl0LXRpbWUgdmFsaWRhdGlvbiBtdXN0IGFsd2F5cyByZWFkIHRoZSBsYXRlc3RcbiAgICAvLyBydWxlcyAodGhleSBjYW4gY2hhbmdlIGJldHdlZW4gcmVuZGVycywgZS5nLiBhIGNvbmRpdGlvbmFsIGByZXF1aXJlZGApLlxuICAgIGNvbnN0IGZpZWxkUnVsZXNSZWYgPSB1c2VSZWYoe30pO1xuICAgIC8vIFBlci1maWVsZCB2YWxpZGF0aW9uIHJ1biBlcG9jaHMuIEVWRVJZIHZhbGlkYXRpb24gcnVuIChzeW5jIG9yIGFzeW5jKVxuICAgIC8vIGJ1bXBzIGl0cyBmaWVsZCdzIGVwb2NoOyBhbiBhc3luYyBydW4gcmUtY2hlY2tzIGl0cyBjYXB0dXJlZCBlcG9jaCBhdFxuICAgIC8vIHNldHRsZSB0aW1lIGFuZCBkaXNjYXJkcyBhIFNUQUxFIG91dGNvbWUg4oCUIHRoZSBzYW1lIHByb3RlY3Rpb24gYXNcbiAgICAvLyByYy1maWVsZC1mb3JtJ3MgdmFsaWRhdGVQcm9taXNlIGlkZW50aXR5IGNoZWNrLiBXaXRob3V0IGl0LCBhIHNsb3cgYXN5bmNcbiAgICAvLyB2YWxpZGF0b3IgKGUuZy4gYSBzZXJ2ZXItc2lkZSB1bmlxdWVuZXNzIGNoZWNrIHN0YXJ0ZWQgb24gYmx1cikgY291bGRcbiAgICAvLyBzZXR0bGUgYWZ0ZXIgdGhlIHVzZXIgYWxyZWFkeSBmaXhlZCB0aGUgdmFsdWUgYW5kIHN0YW1wIGEgc3RhbGUgZXJyb3JcbiAgICAvLyBvdmVyIGEgbmV3ZXIsIHBhc3NpbmcgcmVzdWx0LlxuICAgIGNvbnN0IHZhbGlkYXRpb25FcG9jaFJlZiA9IHVzZVJlZih7fSk7XG4gICAgY29uc3QgYmVnaW5WYWxpZGF0aW9uUnVuID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4ge1xuICAgICAgICBjb25zdCBuZXh0ID0gKHZhbGlkYXRpb25FcG9jaFJlZi5jdXJyZW50W25hbWVdIHx8IDApICsgMTtcbiAgICAgICAgdmFsaWRhdGlvbkVwb2NoUmVmLmN1cnJlbnRbbmFtZV0gPSBuZXh0O1xuICAgICAgICByZXR1cm4gbmV4dDtcbiAgICB9KTtcbiAgICBjb25zdCBpc1ZhbGlkYXRpb25SdW5DdXJyZW50ID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgZXBvY2gpID0+IHZhbGlkYXRpb25FcG9jaFJlZi5jdXJyZW50W25hbWVdID09PSBlcG9jaCk7XG4gICAgLy8gQnVtcCAobmV2ZXIgZGVsZXRlIOKAlCBkZWxldGlvbiB3b3VsZCBsZXQgYSBuZXcgcnVuIHJlLWlzc3VlIGFuIG9sZCBlcG9jaFxuICAgIC8vIG51bWJlciBhbmQgY29sbGlkZSB3aXRoIGEgc3RpbGwtaW4tZmxpZ2h0IHByZS1yZXNldCBydW4pLlxuICAgIGNvbnN0IGludmFsaWRhdGVWYWxpZGF0aW9uUnVucyA9IHVzZU1lbW9pemVkRm4oKG5hbWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBuYW1lcyAhPT0gbnVsbCAmJiBuYW1lcyAhPT0gdm9pZCAwID8gbmFtZXMgOiBPYmplY3Qua2V5cyh2YWxpZGF0aW9uRXBvY2hSZWYuY3VycmVudCk7XG4gICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAodmFsaWRhdGlvbkVwb2NoUmVmLmN1cnJlbnRba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvbkVwb2NoUmVmLmN1cnJlbnRba2V5XSArPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICAvLyBJbnN0YW5jZSBoYW5kZWQgdG8gZnVuY3Rpb24tZm9ybSBydWxlcy4gRGVmYXVsdHMgdG8gdGhlIGNvcmUgbWV0aG9kc1xuICAgIC8vIChhc3NpZ25lZCBhdCB0aGUgZW5kIG9mIHRoaXMgaG9vayBib2R5KTsgdXNlRm9ybSB1cGdyYWRlcyBpdCB0byB0aGUgRlVMTFxuICAgIC8vIGZvcm0gaW5zdGFuY2Ugb25jZSBpdCBoYXMgYnVpbHQgb25lLCBzbyBydWxlcyBzZWUgdGhlIHNhbWUgY29udGV4dCBvblxuICAgIC8vIGV2ZXJ5IHBhdGggKGludGVyYWN0aXZlLCBibHVyLCBzdWJtaXQpLlxuICAgIGNvbnN0IHJ1bGVDb250ZXh0SW5zdGFuY2VSZWYgPSB1c2VSZWYoe30pO1xuICAgIGNvbnN0IHNldFJ1bGVDb250ZXh0SW5zdGFuY2UgPSB1c2VNZW1vaXplZEZuKChpbnN0YW5jZSkgPT4ge1xuICAgICAgICBydWxlQ29udGV4dEluc3RhbmNlUmVmLmN1cnJlbnQgPSBpbnN0YW5jZTtcbiAgICB9KTtcbiAgICBjb25zdCBnZXRSdWxlQ29udGV4dEluc3RhbmNlID0gdXNlTWVtb2l6ZWRGbigoKSA9PiBydWxlQ29udGV4dEluc3RhbmNlUmVmLmN1cnJlbnQpO1xuICAgIGNvbnN0IGNvbW1pdFZhbHVlcyA9IHVzZU1lbW9pemVkRm4oKG5ld1ZhbHVlcykgPT4ge1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7IHZhbHVlczogbmV3VmFsdWVzIH0pO1xuICAgIH0pO1xuICAgIC8vIE5PVEU6IHNldHRpbmcgYSB2YWx1ZSBkb2VzIE5PVCB0b3VjaCB0aGUgZmllbGQncyBlcnJvciDigJQgZXJyb3JzIGFyZVxuICAgIC8vIGNsZWFyZWQgZXhjbHVzaXZlbHkgYnkgdmFsaWRhdGlvbiBydW5zICh3aG9zZSB0aW1pbmcgZm9sbG93cyB0aGVcbiAgICAvLyB2YWxpZGF0ZVRyaWdnZXIgY29uZmlnKSwgc28gYW4gb25CbHVyLW9ubHkgZmllbGQga2VlcHMgaXRzIGVycm9yIHdoaWxlXG4gICAgLy8gdGhlIHVzZXIgaXMgc3RpbGwgdHlwaW5nLlxuICAgIGNvbnN0IHNldEZpZWxkVmFsdWUgPSB1c2VNZW1vaXplZEZuKChuYW1lLCB2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCBwcmV2ID0gc3RvcmUuZ2V0U3RhdGUoKS52YWx1ZXM7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlcyA9IG5hbWUuaW5jbHVkZXMoJy4nKVxuICAgICAgICAgICAgPyBzZXROZXN0ZWRWYWx1ZShwcmV2LCBuYW1lLCB2YWx1ZSlcbiAgICAgICAgICAgIDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcmV2KSwgeyBbbmFtZV06IHZhbHVlIH0pO1xuICAgICAgICBjb21taXRWYWx1ZXMobmV3VmFsdWVzKTtcbiAgICAgICAgb25WYWx1ZXNDaGFuZ2UgPT09IG51bGwgfHwgb25WYWx1ZXNDaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uVmFsdWVzQ2hhbmdlKHsgW25hbWVdOiB2YWx1ZSB9LCBuZXdWYWx1ZXMpO1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEZpZWxkRXJyb3IgPSB1c2VNZW1vaXplZEZuKChuYW1lLCBlcnJvcikgPT4ge1xuICAgICAgICBjb25zdCBlcnJvcnMgPSBzdG9yZS5nZXRTdGF0ZSgpLmVycm9ycztcbiAgICAgICAgaWYgKGVycm9yID09PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAoIWVycm9yc1tuYW1lXSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjb25zdCBuZXdFcnJvcnMgPSBPYmplY3QuYXNzaWduKHt9LCBlcnJvcnMpO1xuICAgICAgICAgICAgZGVsZXRlIG5ld0Vycm9yc1tuYW1lXTtcbiAgICAgICAgICAgIHN0b3JlLnNldFN0YXRlKHsgZXJyb3JzOiBuZXdFcnJvcnMgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNhbWVWYWxpZGF0aW9uTm9kZShlcnJvcnNbbmFtZV0sIGVycm9yKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc3RvcmUuc2V0U3RhdGUoeyBlcnJvcnM6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZXJyb3JzKSwgeyBbbmFtZV06IGVycm9yIH0pIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEZpZWxkV2FybmluZyA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHdhcm5pbmcpID0+IHtcbiAgICAgICAgY29uc3Qgd2FybmluZ3MgPSBzdG9yZS5nZXRTdGF0ZSgpLndhcm5pbmdzO1xuICAgICAgICBpZiAod2FybmluZyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKCF3YXJuaW5nc1tuYW1lXSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjb25zdCBuZXdXYXJuaW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHdhcm5pbmdzKTtcbiAgICAgICAgICAgIGRlbGV0ZSBuZXdXYXJuaW5nc1tuYW1lXTtcbiAgICAgICAgICAgIHN0b3JlLnNldFN0YXRlKHsgd2FybmluZ3M6IG5ld1dhcm5pbmdzIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzYW1lVmFsaWRhdGlvbk5vZGUod2FybmluZ3NbbmFtZV0sIHdhcm5pbmcpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7IHdhcm5pbmdzOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHdhcm5pbmdzKSwgeyBbbmFtZV06IHdhcm5pbmcgfSkgfSk7XG4gICAgfSk7XG4gICAgLy8gTW91bnRlZC1pbnN0YW5jZSBjb3VudHMgcGVyIGZpZWxkIG5hbWUsIHBsdXMgd2hldGhlciB0aGUgQ1VSUkVOVCBydWxlc1xuICAgIC8vIHJlZ2lzdHJhdGlvbiB3YXMgbWFkZSBieSBhIGNvdW50ZWQgaW5zdGFuY2UuIFJ1bGVzIGFyZSByZW1vdmVkIG9ubHkgd2hlblxuICAgIC8vIHRoZSBMQVNUIG1vdW50ZWQgaW5zdGFuY2UgZm9yIGEgbmFtZSByZWxlYXNlczogd2l0aCB0d28gc2FtZS1uYW1lIGZpZWxkc1xuICAgIC8vIG1vdW50ZWQsIHRoZSBmaXJzdCB1bm1vdW50IG11c3Qgbm90IHdpcGUgdGhlIHJlZ2lzdHJhdGlvbiB3aGlsZSB0aGVcbiAgICAvLyBzdXJ2aXZvciAocG9zc2libHkgbWVtby1iYWlsZWQsIHNvIG5vdCByZS1yZW5kZXJpbmcgdG8gcmUtcmVnaXN0ZXIpIHN0aWxsXG4gICAgLy8gcmVsaWVzIG9uIGl0IGZvciBzdWJtaXQtdGltZSB2YWxpZGF0aW9uLiBBIE1BTlVBTCByZWdpc3RlckZpZWxkIChub1xuICAgIC8vIG1vdW50ZWQgaG9sZGVyLCBvd25lZD1mYWxzZSkgc3Vydml2ZXMgdGhlIHVubW91bnQgb2YgcGlnZ3liYWNraW5nXG4gICAgLy8gaW5zdGFuY2VzIHRoYXQgbmV2ZXIgcmVnaXN0ZXJlZCBydWxlcyB0aGVtc2VsdmVzLlxuICAgIC8vIE5PVEU6IGNhbGxlcnMgbXVzdCByZXRhaW4gQkVGT1JFIHJlZ2lzdGVyaW5nIChyZXRhaW4gZWZmZWN0IGRlY2xhcmVkXG4gICAgLy8gZmlyc3QpLCBvciB0aGUgcmVnaXN0cmF0aW9uIGlzIG1pc2NsYXNzaWZpZWQgYXMgbWFudWFsIGFuZCBsZWFrcy5cbiAgICBjb25zdCBmaWVsZE1vdW50Q291bnRzUmVmID0gdXNlUmVmKHt9KTtcbiAgICBjb25zdCBmaWVsZFJlZ2lzdHJhdGlvbk93bmVkUmVmID0gdXNlUmVmKHt9KTtcbiAgICBjb25zdCByZWdpc3RlckZpZWxkID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgcnVsZXMpID0+IHtcbiAgICAgICAgZmllbGRSdWxlc1JlZi5jdXJyZW50W25hbWVdID0gcnVsZXM7XG4gICAgICAgIGZpZWxkUmVnaXN0cmF0aW9uT3duZWRSZWYuY3VycmVudFtuYW1lXSA9IChmaWVsZE1vdW50Q291bnRzUmVmLmN1cnJlbnRbbmFtZV0gfHwgMCkgPiAwO1xuICAgIH0pO1xuICAgIGNvbnN0IGdldEZpZWxkUnVsZXMgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiB7XG4gICAgICAgIHJldHVybiBmaWVsZFJ1bGVzUmVmLmN1cnJlbnRbbmFtZV07XG4gICAgfSk7XG4gICAgY29uc3QgdW5yZWdpc3RlckZpZWxkID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4ge1xuICAgICAgICBkZWxldGUgZmllbGRSdWxlc1JlZi5jdXJyZW50W25hbWVdO1xuICAgICAgICBkZWxldGUgZmllbGRSZWdpc3RyYXRpb25Pd25lZFJlZi5jdXJyZW50W25hbWVdO1xuICAgIH0pO1xuICAgIGNvbnN0IHJldGFpbkZpZWxkID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4ge1xuICAgICAgICBmaWVsZE1vdW50Q291bnRzUmVmLmN1cnJlbnRbbmFtZV0gPSAoZmllbGRNb3VudENvdW50c1JlZi5jdXJyZW50W25hbWVdIHx8IDApICsgMTtcbiAgICB9KTtcbiAgICBjb25zdCByZWxlYXNlRmllbGQgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvdW50ID0gKGZpZWxkTW91bnRDb3VudHNSZWYuY3VycmVudFtuYW1lXSB8fCAwKSAtIDE7XG4gICAgICAgIGlmIChjb3VudCA8PSAwKSB7XG4gICAgICAgICAgICBkZWxldGUgZmllbGRNb3VudENvdW50c1JlZi5jdXJyZW50W25hbWVdO1xuICAgICAgICAgICAgaWYgKGZpZWxkUmVnaXN0cmF0aW9uT3duZWRSZWYuY3VycmVudFtuYW1lXSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBmaWVsZFJ1bGVzUmVmLmN1cnJlbnRbbmFtZV07XG4gICAgICAgICAgICAgICAgZGVsZXRlIGZpZWxkUmVnaXN0cmF0aW9uT3duZWRSZWYuY3VycmVudFtuYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZpZWxkTW91bnRDb3VudHNSZWYuY3VycmVudFtuYW1lXSA9IGNvdW50O1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgLy8gUHVyZSBzdGF0ZSBBUEk6IHRoZSBpbXBlcmF0aXZlIHJlc2V0RmllbGRzKClcbiAgICAvLyBuZXZlciBmaXJlcyBvblJlc2V0LiBUaGUgY2FsbGJhY2sgYmVsb25ncyB0byB0aGUgcmVzZXQgQUNUSU9OIGxheWVyXG4gICAgLy8gKHN1Ym1pdHRlciBidXR0b24gLyBuYXRpdmUgcmVzZXQgZXZlbnQpLCB3aGljaCBmaXJlcyBpdCBleGFjdGx5IG9uY2UuXG4gICAgY29uc3QgcmVzZXRGaWVsZHMgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgLy8gSW52YWxpZGF0ZSBpbi1mbGlnaHQgYXN5bmMgdmFsaWRhdGlvbiBydW5zIOKAlCB0aGVpciByZXN1bHRzIGJlbG9uZyB0b1xuICAgICAgICAvLyBwcmUtcmVzZXQgdmFsdWVzIGFuZCBtdXN0IG5vdCBzdGFtcCBlcnJvcnMgb250byB0aGUgcmVzZXQgZm9ybS5cbiAgICAgICAgaW52YWxpZGF0ZVZhbGlkYXRpb25SdW5zKCk7XG4gICAgICAgIHN0b3JlLnNldFN0YXRlKHtcbiAgICAgICAgICAgIHZhbHVlczogbW91bnRJbml0aWFsVmFsdWVzLFxuICAgICAgICAgICAgZXJyb3JzOiB7fSxcbiAgICAgICAgICAgIHdhcm5pbmdzOiB7fSxcbiAgICAgICAgICAgIHRvdWNoZWQ6IHt9LFxuICAgICAgICAgICAgdmFsaWRhdGluZzoge30sXG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVJlc2V0ID0gdXNlRXZlbnRDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICBlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmVzZXRGaWVsZHMoKTtcbiAgICAgICAgb25SZXNldCA9PT0gbnVsbCB8fCBvblJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblJlc2V0KCk7XG4gICAgfSk7XG4gICAgY29uc3QgZ2V0RmllbGRWYWx1ZSA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVWYWx1ZShzdG9yZS5nZXRTdGF0ZSgpLnZhbHVlcywgbmFtZSk7XG4gICAgfSk7XG4gICAgY29uc3QgZ2V0RmllbGRzVmFsdWUgPSB1c2VNZW1vaXplZEZuKChuYW1lTGlzdCkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBzdG9yZS5nZXRTdGF0ZSgpLnZhbHVlcztcbiAgICAgICAgaWYgKCFuYW1lTGlzdClcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgICAgIHJldHVybiBuYW1lTGlzdC5yZWR1Y2UoKGFjYywgbmFtZSkgPT4ge1xuICAgICAgICAgICAgYWNjW25hbWVdID0gcmVzb2x2ZVZhbHVlKHZhbHVlcywgbmFtZSk7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmllbGRzVmFsdWUgPSB1c2VNZW1vaXplZEZuKChuZXdWYWx1ZXMpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWVzUGF0Y2ggPSBuZXdWYWx1ZXM7XG4gICAgICAgIGNvbnN0IHByZXYgPSBzdG9yZS5nZXRTdGF0ZSgpLnZhbHVlcztcbiAgICAgICAgbGV0IHVwZGF0ZWRWYWx1ZXM7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyh2YWx1ZXNQYXRjaCkuc29tZSgoa2V5KSA9PiBrZXkuaW5jbHVkZXMoJy4nKSkpIHtcbiAgICAgICAgICAgIC8vIERvdC1wYXRoIGtleXMgd3JpdGUgaW50byB0aGUgTkVTVEVEIHN0cnVjdHVyZSAodGhlIHNldEZpZWxkVmFsdWVcbiAgICAgICAgICAgIC8vIGNvbnRyYWN0KSDigJQgYSBzaGFsbG93IG1lcmdlIHdvdWxkIGxhbmQgdGhlbSBhcyBsaXRlcmFsIHRvcC1sZXZlbFxuICAgICAgICAgICAgLy8ga2V5cyB0aGF0IHRoZSBuZXN0ZWQtYXdhcmUgcmVhZGVycyBuZXZlciBmaW5kLlxuICAgICAgICAgICAgdXBkYXRlZFZhbHVlcyA9IHByZXY7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YWx1ZXNQYXRjaCkpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVkVmFsdWVzID0ga2V5LmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgICAgICAgICAgPyBzZXROZXN0ZWRWYWx1ZSh1cGRhdGVkVmFsdWVzLCBrZXksIHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICA6IG1lcmdlVmFsdWVzUGF0Y2godXBkYXRlZFZhbHVlcywgeyBba2V5XTogdmFsdWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB1cGRhdGVkVmFsdWVzID0gbWVyZ2VWYWx1ZXNQYXRjaChwcmV2LCB2YWx1ZXNQYXRjaCk7XG4gICAgICAgIH1cbiAgICAgICAgY29tbWl0VmFsdWVzKHVwZGF0ZWRWYWx1ZXMpO1xuICAgICAgICBvblZhbHVlc0NoYW5nZSA9PT0gbnVsbCB8fCBvblZhbHVlc0NoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25WYWx1ZXNDaGFuZ2UodmFsdWVzUGF0Y2gsIHVwZGF0ZWRWYWx1ZXMpO1xuICAgIH0pO1xuICAgIC8vIFNlZWQgdGhlIHJ1bGUtY29udGV4dCBpbnN0YW5jZSB3aXRoIHRoZSBjb3JlIG1ldGhvZHMgZXhhY3RseSBvbmNlIOKAlFxuICAgIC8vIHVzZUZvcm0ncyByaWNoZXIgaW5zdGFuY2UgbXVzdCBub3QgYmUgZG93bmdyYWRlZCBvbiBsYXRlciByZW5kZXJzLlxuICAgIGlmIChPYmplY3Qua2V5cyhydWxlQ29udGV4dEluc3RhbmNlUmVmLmN1cnJlbnQpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBydWxlQ29udGV4dEluc3RhbmNlUmVmLmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBnZXRGaWVsZFZhbHVlOiBnZXRGaWVsZFZhbHVlLFxuICAgICAgICAgICAgZ2V0RmllbGRzVmFsdWU6IGdldEZpZWxkc1ZhbHVlLFxuICAgICAgICAgICAgc2V0RmllbGRWYWx1ZTogc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgICAgIHNldEZpZWxkc1ZhbHVlOiBzZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgICAgIHJlc2V0RmllbGRzLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBmb3JtSW5zdGFuY2UgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgICAgIHJlc2V0RmllbGRzLFxuICAgICAgICBnZXRGaWVsZFZhbHVlOiBnZXRGaWVsZFZhbHVlLFxuICAgICAgICBnZXRGaWVsZHNWYWx1ZTogZ2V0RmllbGRzVmFsdWUsXG4gICAgICAgIHNldEZpZWxkc1ZhbHVlOiBzZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRWYWx1ZTogc2V0RmllbGRWYWx1ZSxcbiAgICB9KSwgW1xuICAgICAgICByZXNldEZpZWxkcyxcbiAgICAgICAgZ2V0RmllbGRWYWx1ZSxcbiAgICAgICAgZ2V0RmllbGRzVmFsdWUsXG4gICAgICAgIHNldEZpZWxkc1ZhbHVlLFxuICAgICAgICBzZXRGaWVsZFZhbHVlLFxuICAgIF0pO1xuICAgIC8vIFJlbmRlci10aW1lIHNuYXBzaG90IOKAlCBrZXB0IGZvciB0aGUgVXNlRm9ybUNvcmVSZXR1cm4gY29udHJhY3QuIFJlYWN0aXZlXG4gICAgLy8gY29uc3VtZXJzIG11c3QgZ28gdGhyb3VnaCB0aGUgc3RvcmUsIG5ldmVyIHRocm91Z2ggdGhlc2UgZmllbGRzLlxuICAgIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZXM6IHN0YXRlLnZhbHVlcyxcbiAgICAgICAgZXJyb3JzOiBzdGF0ZS5lcnJvcnMsXG4gICAgICAgIHdhcm5pbmdzOiBzdGF0ZS53YXJuaW5ncyxcbiAgICAgICAgdG91Y2hlZDogc3RhdGUudG91Y2hlZCxcbiAgICAgICAgLy8gTGl2ZSByZWdpc3RyeSDigJQgc3RhYmxlIGlkZW50aXR5LCBtdXRhdGVkIGluIHBsYWNlIGJ5IHJlZ2lzdGVyL3VucmVnaXN0ZXIuXG4gICAgICAgIGZpZWxkUnVsZXM6IGZpZWxkUnVsZXNSZWYuY3VycmVudCxcbiAgICAgICAgZ2V0RmllbGRSdWxlcyxcbiAgICAgICAgZ2V0UnVsZUNvbnRleHRJbnN0YW5jZSxcbiAgICAgICAgc2V0UnVsZUNvbnRleHRJbnN0YW5jZSxcbiAgICAgICAgYmVnaW5WYWxpZGF0aW9uUnVuLFxuICAgICAgICBpc1ZhbGlkYXRpb25SdW5DdXJyZW50LFxuICAgICAgICBpbnZhbGlkYXRlVmFsaWRhdGlvblJ1bnMsXG4gICAgICAgIHNldEZpZWxkVmFsdWUsXG4gICAgICAgIHNldEZpZWxkRXJyb3IsXG4gICAgICAgIHNldEZpZWxkV2FybmluZyxcbiAgICAgICAgc2V0RmllbGRzVmFsdWUsXG4gICAgICAgIGdldEZpZWxkVmFsdWUsXG4gICAgICAgIGdldEZpZWxkc1ZhbHVlOiBnZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgcmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgdW5yZWdpc3RlckZpZWxkLFxuICAgICAgICByZXRhaW5GaWVsZCxcbiAgICAgICAgcmVsZWFzZUZpZWxkLFxuICAgICAgICBoYW5kbGVSZXNldCxcbiAgICAgICAgcmVzZXRGaWVsZHMsXG4gICAgICAgIGZvcm1JbnN0YW5jZSxcbiAgICAgICAgc3RvcmUsXG4gICAgICAgIGdldEluaXRpYWxWYWx1ZXM6ICgpID0+IG1vdW50SW5pdGlhbFZhbHVlcyxcbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IHVzZUZvcm1Db3JlOyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -3,4 +3,4 @@ export { useForm } from './hooks/useForm';
|
|
|
3
3
|
export { useFormCore } from './hooks/useFormCore';
|
|
4
4
|
export * from './interface';
|
|
5
5
|
export * from './constants';
|
|
6
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvaW5kZXgudHMiXSwibmFtZXMiOlsidXNlRm9ybUl0ZW0iLCJ1c2VGb3JtIiwidXNlRm9ybUNvcmUiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFdBQVcsUUFBUSxlQUFlO0FBRTNDLFNBQVNDLE9BQU8sUUFBUSxpQkFBaUI7QUFDekMsU0FBU0MsV0FBVyxRQUFRLHFCQUFxQjtBQUNqRCxjQUFjLGFBQWE7QUFDM0IsY0FBYyxhQUFhIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvaW50ZXJmYWNlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIiwic291cmNlcyI6WyJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9pbnRlcmZhY2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHt9OyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvbmFtZVBhdGhUeXBlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIiwic291cmNlcyI6WyJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9uYW1lUGF0aFR5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHt9OyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|