@1money/component-ui 0.0.90 → 0.0.91
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.d.ts +3 -0
- package/es/business/Dialog/BaseDialog/BaseDialog.js +131 -0
- package/es/business/Dialog/BaseDialog/constants.d.ts +12 -0
- package/es/business/Dialog/BaseDialog/constants.js +13 -0
- package/es/business/Dialog/BaseDialog/index.d.ts +4 -0
- package/es/business/Dialog/BaseDialog/index.js +5 -0
- package/es/business/Dialog/BaseDialog/interface.d.ts +69 -0
- package/es/business/Dialog/BaseDialog/interface.js +2 -0
- package/es/business/Dialog/BaseDialog/style/BaseDialog.css +72 -0
- package/es/business/Dialog/BaseDialog/style/css.js +2 -0
- package/es/business/Dialog/BaseDialog/style/index.d.ts +1 -0
- package/es/business/Dialog/BaseDialog/style/index.js +2 -0
- package/es/business/Dialog/Descriptions/Descriptions.d.ts +3 -0
- package/es/business/Dialog/Descriptions/Descriptions.js +102 -0
- package/es/business/Dialog/Descriptions/constants.d.ts +16 -0
- package/es/business/Dialog/Descriptions/constants.js +24 -0
- package/es/business/Dialog/Descriptions/index.d.ts +4 -0
- package/es/business/Dialog/Descriptions/index.js +5 -0
- package/es/business/Dialog/Descriptions/interface.d.ts +58 -0
- package/es/business/Dialog/{ResultDialog → Descriptions}/interface.js +1 -1
- package/es/business/Dialog/Descriptions/style/Descriptions.css +60 -0
- package/es/business/Dialog/{ResultDialog → Descriptions}/style/css.js +2 -2
- package/es/business/Dialog/Descriptions/style/index.d.ts +1 -0
- package/es/business/Dialog/{ResultDialog → Descriptions}/style/index.js +2 -2
- package/es/business/Dialog/DetailsDialog/DetailsDialog.d.ts +3 -0
- package/es/business/Dialog/DetailsDialog/DetailsDialog.js +101 -0
- package/es/business/Dialog/DetailsDialog/index.d.ts +4 -0
- package/es/business/Dialog/DetailsDialog/index.js +5 -0
- package/es/business/Dialog/DetailsDialog/interface.d.ts +31 -0
- package/es/business/Dialog/DetailsDialog/interface.js +2 -0
- package/es/business/Dialog/DetailsDialog/style/DetailsDialog.css +43 -0
- package/es/business/Dialog/DetailsDialog/style/css.js +2 -0
- package/es/business/Dialog/DetailsDialog/style/index.d.ts +1 -0
- package/es/business/Dialog/DetailsDialog/style/index.js +2 -0
- package/es/business/Dialog/FormDialog/FormDialog.d.ts +5 -0
- package/es/business/Dialog/FormDialog/FormDialog.js +121 -0
- package/es/business/Dialog/FormDialog/index.d.ts +6 -0
- package/es/business/Dialog/FormDialog/index.js +6 -0
- package/es/business/Dialog/FormDialog/interface.d.ts +53 -0
- package/es/business/Dialog/FormDialog/interface.js +2 -0
- package/{lib/business/Dialog/TransactionDialog/style/TransactionDialog.css → es/business/Dialog/FormDialog/style/FormDialog.css} +11 -11
- package/es/business/Dialog/FormDialog/style/css.js +2 -0
- package/es/business/Dialog/FormDialog/style/index.d.ts +1 -0
- package/es/business/Dialog/FormDialog/style/index.js +2 -0
- package/es/business/Dialog/VerificationDialog/VerificationDialog.js +249 -95
- package/es/business/Dialog/VerificationDialog/constants.d.ts +8 -35
- package/es/business/Dialog/VerificationDialog/constants.js +8 -30
- package/es/business/Dialog/VerificationDialog/index.d.ts +2 -1
- package/es/business/Dialog/VerificationDialog/index.js +3 -2
- package/es/business/Dialog/VerificationDialog/interface.d.ts +42 -106
- package/es/business/Dialog/VerificationDialog/style/VerificationDialog.css +17 -6
- package/es/business/Dialog/index.d.ts +5 -2
- package/es/business/Dialog/index.js +8 -3
- package/es/business/Dialog/variants/DeleteDialog.d.ts +3 -0
- package/es/business/Dialog/variants/DeleteDialog.js +20 -0
- package/es/business/Dialog/variants/FailureDialog.d.ts +3 -0
- package/es/business/Dialog/variants/FailureDialog.js +20 -0
- package/es/business/Dialog/variants/LoadingDialog.d.ts +33 -0
- package/es/business/Dialog/variants/LoadingDialog.js +189 -0
- package/es/business/Dialog/variants/PendingDialog.d.ts +3 -0
- package/es/business/Dialog/variants/PendingDialog.js +19 -0
- package/es/business/Dialog/variants/SuccessDialog.d.ts +3 -0
- package/es/business/Dialog/variants/SuccessDialog.js +19 -0
- package/es/business/Dialog/variants/index.d.ts +10 -0
- package/es/business/Dialog/variants/index.js +9 -0
- package/es/business/Dialog/variants/style/LoadingDialog.css +62 -0
- package/es/business/Dialog/variants/style/css.js +2 -0
- package/es/business/Dialog/variants/style/index.d.ts +1 -0
- package/es/business/Dialog/variants/style/index.js +2 -0
- package/es/business/FieldList/index.d.ts +30 -0
- package/es/business/FieldList/index.js +59 -0
- package/es/business/FieldList/style/FieldList.css +89 -0
- package/es/business/FieldList/style/css.js +2 -0
- package/es/business/FieldList/style/index.d.ts +1 -0
- package/es/business/FieldList/style/index.js +2 -0
- package/es/business/FormPage/FormPage.d.ts +4 -0
- package/es/business/FormPage/FormPage.js +92 -0
- package/es/business/FormPage/index.d.ts +4 -0
- package/es/business/FormPage/index.js +5 -0
- package/es/business/FormPage/interface.d.ts +53 -0
- package/es/business/FormPage/interface.js +2 -0
- package/es/business/Select/Asset/AssetSelect.js +5 -1
- package/es/business/Select/Country/CountrySelect.js +5 -1
- package/es/business/Select/Currency/CurrencySelect.js +5 -1
- package/es/business/Select/Network/NetworkSelect.js +5 -1
- package/es/business/Select/PaymentMethod/PaymentMethodSelect.js +5 -1
- package/es/business/index.d.ts +3 -0
- package/es/business/index.js +3 -1
- package/es/business/shared/formCore/BaseProForm.d.ts +40 -0
- package/es/business/shared/formCore/BaseProForm.js +87 -0
- package/es/business/shared/formCore/useRelayedFormRef.d.ts +16 -0
- package/es/business/shared/formCore/useRelayedFormRef.js +43 -0
- package/es/business/shared/formCore/useSubmitAction.d.ts +11 -0
- package/es/business/shared/formCore/useSubmitAction.js +92 -0
- package/es/components/ActionBar/ActionBar.d.ts +3 -0
- package/es/components/ActionBar/ActionBar.js +115 -0
- package/es/components/ActionBar/constants.d.ts +29 -0
- package/es/components/ActionBar/constants.js +30 -0
- package/es/components/ActionBar/index.d.ts +4 -0
- package/es/components/ActionBar/index.js +5 -0
- package/es/components/ActionBar/interface.d.ts +82 -0
- package/es/components/ActionBar/interface.js +2 -0
- package/es/components/ActionBar/style/ActionBar.css +44 -0
- package/es/components/ActionBar/style/css.js +2 -0
- package/es/components/ActionBar/style/index.d.ts +1 -0
- package/es/components/ActionBar/style/index.js +2 -0
- package/es/components/Dialog/Dialog.js +13 -8
- package/es/components/Dialog/interface.d.ts +11 -0
- package/es/components/Dialog/style/Dialog.css +7 -4
- package/es/{business/Dialog/ResultDialog/style/ResultDialog.css → components/Dialog/style/DialogBare.css} +10 -5
- package/es/components/Dialog/style/css.js +2 -1
- package/es/components/Dialog/style/index.d.ts +1 -0
- package/es/components/Dialog/style/index.js +2 -1
- package/es/components/FormLayout/FormLayout.d.ts +25 -0
- package/es/components/FormLayout/FormLayout.js +128 -0
- package/es/components/FormLayout/config.d.ts +96 -0
- package/es/components/FormLayout/config.js +93 -0
- package/es/components/FormLayout/context.d.ts +9 -0
- package/es/components/FormLayout/context.js +13 -0
- package/es/components/FormLayout/index.d.ts +7 -0
- package/es/components/FormLayout/index.js +7 -0
- package/es/components/FormLayout/interface.d.ts +51 -0
- package/es/components/FormLayout/interface.js +2 -0
- package/es/components/FormLayout/style/FormLayout.css +110 -0
- package/es/components/FormLayout/style/css.js +2 -0
- package/es/components/FormLayout/style/index.d.ts +1 -0
- package/es/components/FormLayout/style/index.js +2 -0
- package/es/components/Grid/Col.d.ts +1 -0
- package/es/components/Grid/Col.js +2 -1
- package/es/components/Grid/Row.d.ts +1 -0
- package/es/components/Grid/Row.js +2 -1
- package/es/components/Input/Input/Input.css +1 -1
- package/es/components/Input/Input/Input.js +16 -4
- package/es/components/Input/Mask/Mask.js +3 -2
- package/es/components/Input/interface.d.ts +5 -0
- package/es/components/ProForm/ProForm.js +24 -13
- package/es/components/ProForm/ProFormItem.js +2 -1
- package/es/components/ProForm/core/constants.d.ts +1 -1
- package/es/components/ProForm/core/constants.js +5 -2
- package/es/components/ProForm/style/ProForm.css +1 -1
- package/es/components/Select/Select.js +8 -3
- package/es/index.css +1 -1
- package/es/index.d.ts +5 -1
- package/es/index.js +3 -1
- package/lib/business/Dialog/BaseDialog/BaseDialog.d.ts +3 -0
- package/lib/business/Dialog/BaseDialog/BaseDialog.js +140 -0
- package/lib/business/Dialog/BaseDialog/constants.d.ts +12 -0
- package/lib/business/Dialog/BaseDialog/constants.js +19 -0
- package/lib/business/Dialog/BaseDialog/index.d.ts +4 -0
- package/lib/business/Dialog/BaseDialog/index.js +30 -0
- package/lib/business/Dialog/BaseDialog/interface.d.ts +69 -0
- package/lib/business/Dialog/BaseDialog/interface.js +6 -0
- package/lib/business/Dialog/BaseDialog/style/BaseDialog.css +72 -0
- package/lib/business/Dialog/BaseDialog/style/css.js +4 -0
- package/lib/business/Dialog/BaseDialog/style/index.d.ts +1 -0
- package/lib/business/Dialog/BaseDialog/style/index.js +4 -0
- package/lib/business/Dialog/Descriptions/Descriptions.d.ts +3 -0
- package/lib/business/Dialog/Descriptions/Descriptions.js +112 -0
- package/lib/business/Dialog/Descriptions/constants.d.ts +16 -0
- package/lib/business/Dialog/Descriptions/constants.js +30 -0
- package/lib/business/Dialog/Descriptions/index.d.ts +4 -0
- package/lib/business/Dialog/Descriptions/index.js +30 -0
- package/lib/business/Dialog/Descriptions/interface.d.ts +58 -0
- package/lib/business/Dialog/{ResultDialog → Descriptions}/interface.js +1 -1
- package/lib/business/Dialog/Descriptions/style/Descriptions.css +60 -0
- package/lib/business/Dialog/{ResultDialog → Descriptions}/style/css.js +2 -2
- package/lib/business/Dialog/Descriptions/style/index.d.ts +1 -0
- package/lib/business/Dialog/{ResultDialog → Descriptions}/style/index.js +2 -2
- package/lib/business/Dialog/DetailsDialog/DetailsDialog.d.ts +3 -0
- package/lib/business/Dialog/DetailsDialog/DetailsDialog.js +111 -0
- package/lib/business/Dialog/DetailsDialog/index.d.ts +4 -0
- package/lib/business/Dialog/DetailsDialog/index.js +30 -0
- package/lib/business/Dialog/DetailsDialog/interface.d.ts +31 -0
- package/lib/business/Dialog/DetailsDialog/interface.js +6 -0
- package/lib/business/Dialog/DetailsDialog/style/DetailsDialog.css +43 -0
- package/lib/business/Dialog/DetailsDialog/style/css.js +4 -0
- package/lib/business/Dialog/DetailsDialog/style/index.d.ts +1 -0
- package/lib/business/Dialog/DetailsDialog/style/index.js +4 -0
- package/lib/business/Dialog/FormDialog/FormDialog.d.ts +5 -0
- package/lib/business/Dialog/FormDialog/FormDialog.js +130 -0
- package/lib/business/Dialog/FormDialog/index.d.ts +6 -0
- package/lib/business/Dialog/FormDialog/index.js +52 -0
- package/lib/business/Dialog/FormDialog/interface.d.ts +53 -0
- package/lib/business/Dialog/FormDialog/interface.js +6 -0
- package/{es/business/Dialog/TransactionDialog/style/TransactionDialog.css → lib/business/Dialog/FormDialog/style/FormDialog.css} +11 -11
- package/lib/business/Dialog/FormDialog/style/css.js +4 -0
- package/lib/business/Dialog/FormDialog/style/index.d.ts +1 -0
- package/lib/business/Dialog/FormDialog/style/index.js +4 -0
- package/lib/business/Dialog/VerificationDialog/VerificationDialog.js +250 -92
- package/lib/business/Dialog/VerificationDialog/constants.d.ts +8 -35
- package/lib/business/Dialog/VerificationDialog/constants.js +9 -31
- package/lib/business/Dialog/VerificationDialog/index.d.ts +2 -1
- package/lib/business/Dialog/VerificationDialog/index.js +4 -17
- package/lib/business/Dialog/VerificationDialog/interface.d.ts +42 -106
- package/lib/business/Dialog/VerificationDialog/style/VerificationDialog.css +17 -6
- package/lib/business/Dialog/index.d.ts +5 -2
- package/lib/business/Dialog/index.js +31 -9
- package/lib/business/Dialog/variants/DeleteDialog.d.ts +3 -0
- package/lib/business/Dialog/variants/DeleteDialog.js +26 -0
- package/lib/business/Dialog/variants/FailureDialog.d.ts +3 -0
- package/lib/business/Dialog/variants/FailureDialog.js +26 -0
- package/lib/business/Dialog/variants/LoadingDialog.d.ts +33 -0
- package/lib/business/Dialog/variants/LoadingDialog.js +199 -0
- package/lib/business/Dialog/variants/PendingDialog.d.ts +3 -0
- package/lib/business/Dialog/variants/PendingDialog.js +25 -0
- package/lib/business/Dialog/variants/SuccessDialog.d.ts +3 -0
- package/lib/business/Dialog/variants/SuccessDialog.js +25 -0
- package/lib/business/Dialog/variants/index.d.ts +10 -0
- package/lib/business/Dialog/variants/index.js +41 -0
- package/lib/business/Dialog/variants/style/LoadingDialog.css +62 -0
- package/lib/business/Dialog/variants/style/css.js +4 -0
- package/lib/business/Dialog/variants/style/index.d.ts +1 -0
- package/lib/business/Dialog/variants/style/index.js +4 -0
- package/lib/business/FieldList/index.d.ts +30 -0
- package/lib/business/FieldList/index.js +67 -0
- package/lib/business/FieldList/style/FieldList.css +89 -0
- package/lib/business/FieldList/style/css.js +4 -0
- package/lib/business/FieldList/style/index.d.ts +1 -0
- package/lib/business/FieldList/style/index.js +4 -0
- package/lib/business/FormPage/FormPage.d.ts +4 -0
- package/lib/business/FormPage/FormPage.js +98 -0
- package/lib/business/FormPage/index.d.ts +4 -0
- package/lib/business/FormPage/index.js +30 -0
- package/lib/business/FormPage/interface.d.ts +53 -0
- package/lib/business/FormPage/interface.js +6 -0
- package/lib/business/Select/Asset/AssetSelect.js +5 -1
- package/lib/business/Select/Country/CountrySelect.js +5 -1
- package/lib/business/Select/Currency/CurrencySelect.js +5 -1
- package/lib/business/Select/Network/NetworkSelect.js +5 -1
- package/lib/business/Select/PaymentMethod/PaymentMethodSelect.js +5 -1
- package/lib/business/index.d.ts +3 -0
- package/lib/business/index.js +27 -1
- package/lib/business/shared/formCore/BaseProForm.d.ts +40 -0
- package/lib/business/shared/formCore/BaseProForm.js +93 -0
- package/lib/business/shared/formCore/useRelayedFormRef.d.ts +16 -0
- package/lib/business/shared/formCore/useRelayedFormRef.js +49 -0
- package/lib/business/shared/formCore/useSubmitAction.d.ts +11 -0
- package/lib/business/shared/formCore/useSubmitAction.js +99 -0
- package/lib/components/ActionBar/ActionBar.d.ts +3 -0
- package/lib/components/ActionBar/ActionBar.js +124 -0
- package/lib/components/ActionBar/constants.d.ts +29 -0
- package/lib/components/ActionBar/constants.js +36 -0
- package/lib/components/ActionBar/index.d.ts +4 -0
- package/lib/components/ActionBar/index.js +30 -0
- package/lib/components/ActionBar/interface.d.ts +82 -0
- package/lib/components/ActionBar/interface.js +6 -0
- package/lib/components/ActionBar/style/ActionBar.css +44 -0
- package/lib/components/ActionBar/style/css.js +4 -0
- package/lib/components/ActionBar/style/index.d.ts +1 -0
- package/lib/components/ActionBar/style/index.js +4 -0
- package/lib/components/Dialog/Dialog.js +13 -8
- package/lib/components/Dialog/interface.d.ts +11 -0
- package/lib/components/Dialog/style/Dialog.css +7 -4
- package/lib/{business/Dialog/ResultDialog/style/ResultDialog.css → components/Dialog/style/DialogBare.css} +10 -5
- package/lib/components/Dialog/style/css.js +2 -1
- package/lib/components/Dialog/style/index.d.ts +1 -0
- package/lib/components/Dialog/style/index.js +2 -1
- package/lib/components/FormLayout/FormLayout.d.ts +25 -0
- package/lib/components/FormLayout/FormLayout.js +138 -0
- package/lib/components/FormLayout/config.d.ts +96 -0
- package/lib/components/FormLayout/config.js +99 -0
- package/lib/components/FormLayout/context.d.ts +9 -0
- package/lib/components/FormLayout/context.js +19 -0
- package/lib/components/FormLayout/index.d.ts +7 -0
- package/lib/components/FormLayout/index.js +102 -0
- package/lib/components/FormLayout/interface.d.ts +51 -0
- package/lib/components/FormLayout/interface.js +6 -0
- package/lib/components/FormLayout/style/FormLayout.css +110 -0
- package/lib/components/FormLayout/style/css.js +4 -0
- package/lib/components/FormLayout/style/index.d.ts +1 -0
- package/lib/components/FormLayout/style/index.js +4 -0
- package/lib/components/Grid/Col.d.ts +1 -0
- package/lib/components/Grid/Col.js +2 -1
- package/lib/components/Grid/Row.d.ts +1 -0
- package/lib/components/Grid/Row.js +2 -1
- package/lib/components/Input/Input/Input.css +1 -1
- package/lib/components/Input/Input/Input.js +16 -4
- package/lib/components/Input/Mask/Mask.js +3 -2
- package/lib/components/Input/interface.d.ts +5 -0
- package/lib/components/ProForm/ProForm.js +27 -16
- package/lib/components/ProForm/ProFormItem.js +2 -1
- package/lib/components/ProForm/core/constants.d.ts +1 -1
- package/lib/components/ProForm/core/constants.js +5 -2
- package/lib/components/ProForm/style/ProForm.css +1 -1
- package/lib/components/Select/Select.js +8 -3
- package/lib/index.css +1 -1
- package/lib/index.d.ts +5 -1
- package/lib/index.js +33 -1
- package/package.json +39 -9
- package/scripts/mcp-server/examples.generated.json +84 -0
- package/scripts/mcp-server/index.generated.json +743 -152
- package/es/business/Dialog/ResultDialog/ResultDialog.d.ts +0 -3
- package/es/business/Dialog/ResultDialog/ResultDialog.js +0 -126
- package/es/business/Dialog/ResultDialog/constants.d.ts +0 -27
- package/es/business/Dialog/ResultDialog/constants.js +0 -24
- package/es/business/Dialog/ResultDialog/index.d.ts +0 -3
- package/es/business/Dialog/ResultDialog/index.js +0 -4
- package/es/business/Dialog/ResultDialog/interface.d.ts +0 -95
- package/es/business/Dialog/ResultDialog/presets.d.ts +0 -178
- package/es/business/Dialog/ResultDialog/presets.js +0 -139
- package/es/business/Dialog/ResultDialog/style/index.d.ts +0 -1
- package/es/business/Dialog/TransactionDialog/TransactionDialog.d.ts +0 -3
- package/es/business/Dialog/TransactionDialog/TransactionDialog.js +0 -174
- package/es/business/Dialog/TransactionDialog/constants.d.ts +0 -34
- package/es/business/Dialog/TransactionDialog/constants.js +0 -33
- package/es/business/Dialog/TransactionDialog/index.d.ts +0 -3
- package/es/business/Dialog/TransactionDialog/index.js +0 -4
- package/es/business/Dialog/TransactionDialog/interface.d.ts +0 -116
- package/es/business/Dialog/TransactionDialog/interface.js +0 -2
- package/es/business/Dialog/TransactionDialog/presets.d.ts +0 -89
- package/es/business/Dialog/TransactionDialog/presets.js +0 -62
- package/es/business/Dialog/TransactionDialog/style/css.js +0 -2
- package/es/business/Dialog/TransactionDialog/style/index.d.ts +0 -1
- package/es/business/Dialog/TransactionDialog/style/index.js +0 -2
- package/es/business/Dialog/VerificationDialog/ResendRow.d.ts +0 -14
- package/es/business/Dialog/VerificationDialog/ResendRow.js +0 -65
- package/es/business/Dialog/VerificationDialog/hooks/index.d.ts +0 -4
- package/es/business/Dialog/VerificationDialog/hooks/index.js +0 -3
- package/es/business/Dialog/VerificationDialog/hooks/useOtpVerification.d.ts +0 -50
- package/es/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +0 -138
- package/es/business/Dialog/VerificationDialog/hooks/useResendCountdown.d.ts +0 -26
- package/es/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +0 -103
- package/lib/business/Dialog/ResultDialog/ResultDialog.d.ts +0 -3
- package/lib/business/Dialog/ResultDialog/ResultDialog.js +0 -132
- package/lib/business/Dialog/ResultDialog/constants.d.ts +0 -27
- package/lib/business/Dialog/ResultDialog/constants.js +0 -30
- package/lib/business/Dialog/ResultDialog/index.d.ts +0 -3
- package/lib/business/Dialog/ResultDialog/index.js +0 -40
- package/lib/business/Dialog/ResultDialog/interface.d.ts +0 -95
- package/lib/business/Dialog/ResultDialog/presets.d.ts +0 -178
- package/lib/business/Dialog/ResultDialog/presets.js +0 -145
- package/lib/business/Dialog/ResultDialog/style/index.d.ts +0 -1
- package/lib/business/Dialog/TransactionDialog/TransactionDialog.d.ts +0 -3
- package/lib/business/Dialog/TransactionDialog/TransactionDialog.js +0 -180
- package/lib/business/Dialog/TransactionDialog/constants.d.ts +0 -34
- package/lib/business/Dialog/TransactionDialog/constants.js +0 -39
- package/lib/business/Dialog/TransactionDialog/index.d.ts +0 -3
- package/lib/business/Dialog/TransactionDialog/index.js +0 -40
- package/lib/business/Dialog/TransactionDialog/interface.d.ts +0 -116
- package/lib/business/Dialog/TransactionDialog/interface.js +0 -6
- package/lib/business/Dialog/TransactionDialog/presets.d.ts +0 -89
- package/lib/business/Dialog/TransactionDialog/presets.js +0 -68
- package/lib/business/Dialog/TransactionDialog/style/css.js +0 -4
- package/lib/business/Dialog/TransactionDialog/style/index.d.ts +0 -1
- package/lib/business/Dialog/TransactionDialog/style/index.js +0 -4
- package/lib/business/Dialog/VerificationDialog/ResendRow.d.ts +0 -14
- package/lib/business/Dialog/VerificationDialog/ResendRow.js +0 -71
- package/lib/business/Dialog/VerificationDialog/hooks/index.d.ts +0 -4
- package/lib/business/Dialog/VerificationDialog/hooks/index.js +0 -20
- package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.d.ts +0 -50
- package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +0 -145
- package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.d.ts +0 -26
- package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +0 -110
|
@@ -5,6 +5,7 @@ import { FloatingFocusManager, FloatingPortal, useInteractions, useListNavigatio
|
|
|
5
5
|
import { memo, useEffect, useId, useMemo, useRef, useState } from 'react';
|
|
6
6
|
import useControlledState from '@1money/hooks/useControlledState';
|
|
7
7
|
import useEventCallback from '@1money/hooks/useEventCallback';
|
|
8
|
+
import { useFormControlSize } from '../FormLayout/context';
|
|
8
9
|
import { Icons } from '../Icons';
|
|
9
10
|
import { Spinner } from '../Spinner';
|
|
10
11
|
import { TypographyBody, TypographyLabel } from '../Typography';
|
|
@@ -19,6 +20,7 @@ import { extractOptionText, filterOptionGroups, flattenOptionGroups, getMultiple
|
|
|
19
20
|
import './style';
|
|
20
21
|
var DEFAULT_MAX_HEIGHT = 320;
|
|
21
22
|
export var Select = function Select(props) {
|
|
23
|
+
var _a;
|
|
22
24
|
var _props$className = props.className,
|
|
23
25
|
className = _props$className === void 0 ? '' : _props$className,
|
|
24
26
|
_props$prefixCls = props.prefixCls,
|
|
@@ -34,8 +36,7 @@ export var Select = function Select(props) {
|
|
|
34
36
|
options = _props$options === void 0 ? [] : _props$options,
|
|
35
37
|
value = props.value,
|
|
36
38
|
defaultValue = props.defaultValue,
|
|
37
|
-
|
|
38
|
-
size = _props$size === void 0 ? 'large' : _props$size,
|
|
39
|
+
sizeProp = props.size,
|
|
39
40
|
_props$status = props.status,
|
|
40
41
|
status = _props$status === void 0 ? 'default' : _props$status,
|
|
41
42
|
_props$variant = props.variant,
|
|
@@ -93,6 +94,10 @@ export var Select = function Select(props) {
|
|
|
93
94
|
renderOptionContent = props.renderOptionContent,
|
|
94
95
|
renderValue = props.renderValue,
|
|
95
96
|
ref = props.ref;
|
|
97
|
+
// Bare-control size default: an explicit `size` wins; inside a FormLayout
|
|
98
|
+
// the variant's controlSize applies; elsewhere 'large'.
|
|
99
|
+
var contextSize = useFormControlSize();
|
|
100
|
+
var size = (_a = sizeProp !== null && sizeProp !== void 0 ? sizeProp : contextSize) !== null && _a !== void 0 ? _a : 'large';
|
|
96
101
|
var disabled = disabledProp || loading;
|
|
97
102
|
var interactive = !disabled && !readOnly;
|
|
98
103
|
var classes = rootClassnames(prefixCls);
|
|
@@ -577,4 +582,4 @@ export var Select = function Select(props) {
|
|
|
577
582
|
};
|
|
578
583
|
Select.displayName = 'Select';
|
|
579
584
|
export default /*#__PURE__*/memo(Select);
|
|
580
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZsb2F0aW5nRm9jdXNNYW5hZ2VyIiwiRmxvYXRpbmdQb3J0YWwiLCJ1c2VJbnRlcmFjdGlvbnMiLCJ1c2VMaXN0TmF2aWdhdGlvbiIsInVzZVR5cGVhaGVhZCIsIm1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VJZCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZUV2ZW50Q2FsbGJhY2siLCJJY29ucyIsIlNwaW5uZXIiLCJUeXBvZ3JhcGh5Qm9keSIsIlR5cG9ncmFwaHlMYWJlbCIsImpvaW5DbHMiLCJkZWZhdWx0Iiwicm9vdENsYXNzbmFtZXMiLCJTZWxlY3RGaWVsZFNoZWxsIiwiU2VsZWN0T3B0aW9uQ29udGVudCIsIlNlbGVjdFNlYXJjaENvbnRyb2wiLCJTZWxlY3RWYWx1ZUNvbnRlbnQiLCJ1c2VTZWxlY3RTaGVsbCIsIktFWUJPQVJEIiwiU0VMRUNUX1RZUE9HUkFQSFkiLCJleHRyYWN0T3B0aW9uVGV4dCIsImZpbHRlck9wdGlvbkdyb3VwcyIsImZsYXR0ZW5PcHRpb25Hcm91cHMiLCJnZXRNdWx0aXBsZVZhbHVlIiwiZ2V0Rm9udFNpemUiLCJnZXRPcHRpb25zQnlWYWx1ZXMiLCJnZXRTZWxlY3RlZE9wdGlvbnMiLCJpc09wdGlvblNlbGVjdGVkIiwibm9ybWFsaXplU2l6ZSIsIm5vcm1hbGl6ZU9wdGlvbkdyb3VwcyIsInJlbW92ZU11bHRpcGxlVmFsdWUiLCJ0b2dnbGVNdWx0aXBsZVZhbHVlIiwiREVGQVVMVF9NQVhfSEVJR0hUIiwiU2VsZWN0IiwicHJvcHMiLCJfcHJvcHMkY2xhc3NOYW1lIiwiY2xhc3NOYW1lIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsInN0eWxlIiwiaWQiLCJuYW1lIiwiYXJpYUxhYmVsIiwiYXJpYUxhYmVsbGVkQnkiLCJfcHJvcHMkcGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciIsIl9wcm9wcyRvcHRpb25zIiwib3B0aW9ucyIsInZhbHVlIiwiZGVmYXVsdFZhbHVlIiwiX3Byb3BzJHNpemUiLCJzaXplIiwiX3Byb3BzJHN0YXR1cyIsInN0YXR1cyIsIl9wcm9wcyR2YXJpYW50IiwidmFyaWFudCIsIl9wcm9wcyRkaXNhYmxlZCIsImRpc2FibGVkIiwiZGlzYWJsZWRQcm9wIiwiX3Byb3BzJHJlYWRPbmx5IiwicmVhZE9ubHkiLCJfcHJvcHMkbG9hZGluZyIsImxvYWRpbmciLCJfcHJvcHMkbXVsdGlwbGUiLCJtdWx0aXBsZSIsIm1heFZpc2libGVWYWx1ZXMiLCJfcHJvcHMkc2VhcmNoYWJsZSIsInNlYXJjaGFibGUiLCJfcHJvcHMkc2VhcmNoUGxhY2Vob2wiLCJzZWFyY2hQbGFjZWhvbGRlciIsInNlYXJjaFZhbHVlIiwiX3Byb3BzJGRlZmF1bHRTZWFyY2hWIiwiZGVmYXVsdFNlYXJjaFZhbHVlIiwiX3Byb3BzJGZpbHRlcklucHV0QXV0IiwiZmlsdGVySW5wdXRBdXRvRm9jdXMiLCJsYWJlbCIsImxhYmVsQ2xhc3NOYW1lIiwiaW5mbyIsImRlc2NyaXB0aW9uIiwiZmVlZGJhY2siLCJfcHJvcHMkcmVxdWlyZWQiLCJyZXF1aXJlZCIsInByZWZpeCIsIl9wcm9wcyRlbXB0eUNvbnRlbnQiLCJlbXB0eUNvbnRlbnQiLCJwYW5lbEhlYWRlciIsInBhbmVsRm9vdGVyIiwib3BlbiIsIl9wcm9wcyRkZWZhdWx0T3BlbiIsImRlZmF1bHRPcGVuIiwiX3Byb3BzJHBvcnRhbCIsInBvcnRhbCIsIl9wcm9wcyRhbGxvd0Rlc2VsZWN0IiwiYWxsb3dEZXNlbGVjdCIsInBhbmVsQ2xhc3NOYW1lIiwib3B0aW9uQ2xhc3NOYW1lIiwiZ3JvdXBMYWJlbENsYXNzTmFtZSIsIl9wcm9wcyRsaXN0TWF4SGVpZ2h0IiwibGlzdE1heEhlaWdodCIsIm9mZnNldCIsImFuaW1hdGlvbiIsIm9uQ2hhbmdlIiwib25PcGVuQ2hhbmdlIiwib25TZWFyY2hDaGFuZ2UiLCJvbkJsdXIiLCJmaWx0ZXJPcHRpb24iLCJyZW5kZXJPcHRpb24iLCJyZW5kZXJPcHRpb25Db250ZW50IiwicmVuZGVyVmFsdWUiLCJyZWYiLCJpbnRlcmFjdGl2ZSIsImNsYXNzZXMiLCJhdXRvSWQiLCJ0cmlnZ2VySWQiLCJsYWJlbElkIiwiZGVzY3JpcHRpb25JZCIsImZlZWRiYWNrSWQiLCJvcHRpb25JZFByZWZpeCIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJ1bmRlZmluZWQiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaW5uZXJWYWx1ZSIsInNldElubmVyVmFsdWUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMyIsIl91c2VDb250cm9sbGVkU3RhdGU0IiwiaW5uZXJTZWFyY2hWYWx1ZSIsInNldElubmVyU2VhcmNoVmFsdWUiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiYWN0aXZlSW5kZXgiLCJzZXRBY3RpdmVJbmRleCIsIm5vcm1hbGl6ZWRTaXplIiwiYWxsT3B0aW9uR3JvdXBzIiwiYWxsRmxhdE9wdGlvbnMiLCJ2aXNpYmxlT3B0aW9uR3JvdXBzIiwidmlzaWJsZUZsYXRPcHRpb25zIiwic2VsZWN0ZWRPcHRpb25zIiwic2VsZWN0ZWRJbmRleCIsImxlbmd0aCIsIm1hdGNoZWRJbmRleCIsImZpbmRJbmRleCIsIm9wdGlvbiIsImhhc1NlbGVjdGlvbiIsImxpc3RSZWYiLCJsaXN0Q29udGVudFJlZiIsImZsb2F0aW5nUmVmIiwidHJpZ2dlclJlZiIsInNlYXJjaElucHV0UmVmIiwiaGFuZGxlVHJpZ2dlclJlZiIsIm5vZGUiLCJjdXJyZW50IiwiX3VzZVNlbGVjdFNoZWxsIiwiaW5uZXJPcGVuIiwiaXNPcGVuIiwiaGFuZGxlT3BlbkNoYW5nZSIsInNldE9wZW4iLCJyZWZzIiwiY29udGV4dCIsImZsb2F0aW5nU3R5bGVzIiwidHJhbnNpdGlvblN0eWxlcyIsImlzTW91bnRlZCIsImJhc2VJbnRlcmFjdGlvbnMiLCJzZXRSZWZlcmVuY2UiLCJzZXRGbG9hdGluZyIsImxpc3ROYXZpZ2F0aW9uIiwib25OYXZpZ2F0ZSIsImVuYWJsZWQiLCJsb29wIiwidmlydHVhbCIsInR5cGVhaGVhZCIsIm9uTWF0Y2giLCJfdXNlSW50ZXJhY3Rpb25zIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZ2V0UmVmZXJlbmNlUHJvcHMiLCJnZXRGbG9hdGluZ1Byb3BzIiwiZ2V0SXRlbVByb3BzIiwiZmlyc3RFbmFibGVkSW5kZXgiLCJwcmV2IiwiX2EiLCJmb2N1cyIsInByZXZlbnRTY3JvbGwiLCJzbGljZSIsInNldFNlYXJjaElucHV0UmVmIiwibm90aWZ5Qmx1cklmT3V0c2lkZSIsInJlbGF0ZWRUYXJnZXQiLCJldmVudCIsIl9iIiwibmV4dFRhcmdldCIsIndpdGhpblRyaWdnZXIiLCJjb250YWlucyIsIndpdGhpbkZsb2F0aW5nIiwiaGFuZGxlVHJpZ2dlckJsdXIiLCJoYW5kbGVPcHRpb25CbHVyIiwiY29tbWl0Q2hhbmdlIiwibmV4dFZhbHVlIiwibmV4dE9wdGlvbiIsImhhbmRsZVNlbGVjdE9wdGlvbiIsIm5leHRPcHRpb25zIiwiaGFuZGxlUmVtb3ZlU2VsZWN0ZWRWYWx1ZSIsIm9wdGlvblZhbHVlIiwiaW5jbHVkZXMiLCJoYW5kbGVUcmlnZ2VyS2V5RG93biIsImtleSIsIkVOVEVSIiwiU1BBQ0UiLCJwcmV2ZW50RGVmYXVsdCIsIkFSUk9XX0RPV04iLCJBUlJPV19VUCIsImhhbmRsZUl0ZW1Nb3VzZUVudGVyIiwiaW5kZXgiLCJoYW5kbGVUYWdSZW1vdmVNb3VzZURvd24iLCJzdG9wUHJvcGFnYXRpb24iLCJoYW5kbGVUYWdSZW1vdmVDbGljayIsImhhbmRsZVNlYXJjaEJsdXIiLCJoYW5kbGVTZWFyY2hDaGFuZ2UiLCJfZXZlbnQiLCJmaW5kRW5hYmxlZEluZGV4IiwiZGlyZWN0aW9uIiwic3RhcnQiLCJzdGVwIiwiY2FuZGlkYXRlIiwiaGFuZGxlU2VhcmNoS2V5RG93biIsIm5leHQiLCJFU0NBUEUiLCJyZW5kZXJWYWx1ZU1ldGEiLCJmb250U2l6ZSIsInZhbHVlTGFiZWxDbGFzcyIsImlzTXVsdGlwbGVWYWx1ZUZpbGxlZCIsInRyaWdnZXJDbGFzc05hbWUiLCJpY29uU2l6ZSIsImFjdGl2ZU9wdGlvbklkIiwiZmxvYXRpbmdBcmlhTGFiZWxsZWRCeSIsImRlc2NyaWJlZEJ5SWRzIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJjaGlsZHJlbiIsIk9iamVjdCIsImFzc2lnbiIsInR5cGUiLCJvbktleURvd24iLCJvblJlbW92ZSIsIm9uUmVtb3ZlQ2xpY2siLCJvblJlbW92ZU1vdXNlRG93biIsInN0cm9rZVdpZHRoIiwiY29sb3IiLCJwYW5lbE5vZGUiLCJtb2RhbCIsImluaXRpYWxGb2N1cyIsInJldHVybkZvY3VzIiwiYWN0aXZlRGVzY2VuZGFudCIsImVtcHR5IiwiZmxhdEluZGV4IiwibWFwIiwiZ3JvdXAiLCJncm91cExhYmVsIiwic3Ryb25nIiwib3B0aW9uRmxhdEluZGV4Iiwic2VsZWN0ZWQiLCJhY3RpdmUiLCJvcHRpb25NZXRhIiwicm9sZSIsIm9uQ2xpY2siLCJvbk1vdXNlRW50ZXIiLCJjb250ZW50IiwiZGlzcGxheU5hbWUiXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsR0FBRyxJQUFJQyxJQUFJLEVBQUVDLElBQUksSUFBSUMsS0FBSyxRQUFRLG1CQUFtQjtBQ0E5RCxTQUNFQyxvQkFBb0IsRUFDcEJDLGNBQWMsRUFDZEMsZUFBZSxFQUNmQyxpQkFBaUIsRUFDakJDLFlBQVksUUFDUCxvQkFBb0I7QUFDM0IsU0FBU0MsSUFBSSxFQUFFQyxTQUFTLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ3pFLE9BQU9DLGtCQUFrQixNQUFNLGtDQUFrQztBQUNqRSxPQUFPQyxnQkFBZ0IsTUFBTSxnQ0FBZ0M7QUFDN0QsU0FBU0MsS0FBSyxRQUFRLFVBQVU7QUFDaEMsU0FB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VUFBVTtzQkFBQyxDQUFBO29CQUVyRCxDQUFBLENBQUEsS0FBQXpGLE1BQUEsQ0FyQ09tRixLQUFLLENBQUNwRCxHQUFHLE9BQUEvQixNQUFBLENBQUkvQixNQUFNLENBQUM5RixLQUFLLENBQUUsQ0FzQzVCO2tCQUViLENBQUMsQ0FBQztnQkFBQSxDQUFBLEVBbEVNZ04sS0FBSyxDQUFDcEQsR0FBRyxDQW1FYjtjQUFBLENBQ1AsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUNIO1VBQUEsQ0FBQSxDQUNHLEVBQ0x0SCxXQUFXLElBQUksSUFBSSxJQUNsQmhHLElBQUEsQ0FBQSxLQUFBLEVBQUE7WUFBSzhDLFNBQVMsRUFBRTJFLE9BQU8sQ0FBQyxjQUFjLENBQUM7WUFBQStILFFBQUEsRUFBR3hKO1VBQVcsQ0FBQSxDQUN0RDtRQUFBLENBQUEsQ0FBQTtNQUNHLENBQUEsQ0FFVDtNQUVELE9BQU9LLE1BQU0sR0FBR3JHLElBQUEsQ0FBQ0ksY0FBYyxFQUFBO1FBQUFvUCxRQUFBLEVBQUVVO01BQVMsQ0FBQSxDQUFrQixHQUFHQSxTQUFTO0lBQzFFLENBQUMsQ0FBQyxDQUFFO0VBQUEsQ0FBQSxDQUNhO0FBRXZCLENBQUM7QUFFRHZOLE1BQU0sQ0FBQzBPLFdBQVcsR0FBRyxRQUFRO0FBRTdCLDRCQUFlN1EsSUFBSSxDQUFDbUMsTUFBTSxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBGbG9hdGluZ0ZvY3VzTWFuYWdlciwgRmxvYXRpbmdQb3J0YWwsIHVzZUludGVyYWN0aW9ucywgdXNlTGlzdE5hdmlnYXRpb24sIHVzZVR5cGVhaGVhZCwgfSBmcm9tICdAZmxvYXRpbmctdWkvcmVhY3QnO1xuaW1wb3J0IHsgbWVtbywgdXNlRWZmZWN0LCB1c2VJZCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VDb250cm9sbGVkU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VDb250cm9sbGVkU3RhdGUnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQDFtb25leS9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB7IEljb25zIH0gZnJvbSAnLi4vSWNvbnMnO1xuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJy4uL1NwaW5uZXInO1xuaW1wb3J0IHsgVHlwb2dyYXBoeUJvZHksIFR5cG9ncmFwaHlMYWJlbCB9IGZyb20gJy4uL1R5cG9ncmFwaHknO1xuaW1wb3J0IHsgam9pbkNscywgZGVmYXVsdCBhcyByb290Q2xhc3NuYW1lcyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IFNlbGVjdEZpZWxkU2hlbGwgZnJvbSAnLi9TZWxlY3RGaWVsZFNoZWxsJztcbmltcG9ydCBTZWxlY3RPcHRpb25Db250ZW50IGZyb20gJy4vU2VsZWN0T3B0aW9uQ29udGVudCc7XG5pbXBvcnQgU2VsZWN0U2VhcmNoQ29udHJvbCBmcm9tICcuL1NlbGVjdFNlYXJjaENvbnRyb2wnO1xuaW1wb3J0IFNlbGVjdFZhbHVlQ29udGVudCBmcm9tICcuL1NlbGVjdFZhbHVlQ29udGVudCc7XG5pbXBvcnQgeyB1c2VTZWxlY3RTaGVsbCB9IGZyb20gJy4vdXNlU2VsZWN0U2hlbGwnO1xuaW1wb3J0IHsgS0VZQk9BUkQsIFNFTEVDVF9UWVBPR1JBUEhZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZXh0cmFjdE9wdGlvblRleHQsIGZpbHRlck9wdGlvbkdyb3VwcywgZmxhdHRlbk9wdGlvbkdyb3VwcywgZ2V0TXVsdGlwbGVWYWx1ZSwgZ2V0Rm9udFNpemUsIGdldE9wdGlvbnNCeVZhbHVlcywgZ2V0U2VsZWN0ZWRPcHRpb25zLCBpc09wdGlvblNlbGVjdGVkLCBub3JtYWxpemVTaXplLCBub3JtYWxpemVPcHRpb25Hcm91cHMsIHJlbW92ZU11bHRpcGxlVmFsdWUsIHRvZ2dsZU11bHRpcGxlVmFsdWUsIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgJy4vc3R5bGUnO1xuY29uc3QgREVGQVVMVF9NQVhfSEVJR0hUID0gMzIwO1xuZXhwb3J0IGNvbnN0IFNlbGVjdCA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgY2xhc3NOYW1lID0gJycsIHByZWZpeENscyA9ICdzZWxlY3QnLCBzdHlsZSwgaWQsIG5hbWUsICdhcmlhLWxhYmVsJzogYXJpYUxhYmVsLCAnYXJpYS1sYWJlbGxlZGJ5JzogYXJpYUxhYmVsbGVkQnksIHBsYWNlaG9sZGVyID0gJ1ZhbHVlJywgb3B0aW9ucyA9IFtdLCB2YWx1ZSwgZGVmYXVsdFZhbHVlLCBzaXplID0gJ2xhcmdlJywgc3RhdHVzID0gJ2RlZmF1bHQnLCB2YXJpYW50ID0gJ2ZpbGwnLCBkaXNhYmxlZDogZGlzYWJsZWRQcm9wID0gZmFsc2UsIHJlYWRPbmx5ID0gZmFsc2UsIGxvYWRpbmcgPSBmYWxzZSwgbXVsdGlwbGUgPSBmYWxzZSwgbWF4VmlzaWJsZVZhbHVlcywgc2VhcmNoYWJsZSA9IGZhbHNlLCBzZWFyY2hQbGFjZWhvbGRlciA9ICdTZWFyY2gnLCBzZWFyY2hWYWx1ZSwgZGVmYXVsdFNlYXJjaFZhbHVlID0gJycsIGZpbHRlcklucHV0QXV0b0ZvY3VzID0gdHJ1ZSwgbGFiZWwsIGxhYmVsQ2xhc3NOYW1lLCBpbmZvLCBkZXNjcmlwdGlvbiwgZmVlZGJhY2ssIHJlcXVpcmVkID0gdHJ1ZSwgcHJlZml4LCBlbXB0eUNvbnRlbnQgPSAnTm8gb3B0aW9ucycsIHBhbmVsSGVhZGVyLCBwYW5lbEZvb3Rlciwgb3BlbiwgZGVmYXVsdE9wZW4gPSBmYWxzZSwgcG9ydGFsID0gdHJ1ZSwgYWxsb3dEZXNlbGVjdCA9IGZhbHNlLCBwYW5lbENsYXNzTmFtZSwgb3B0aW9uQ2xhc3NOYW1lLCBncm91cExhYmVsQ2xhc3NOYW1lLCBsaXN0TWF4SGVpZ2h0ID0gREVGQVVMVF9NQVhfSEVJR0hULCBvZmZzZXQsIGFuaW1hdGlvbiwgb25DaGFuZ2UsIG9uT3BlbkNoYW5nZSwgb25TZWFyY2hDaGFuZ2UsIG9uQmx1ciwgZmlsdGVyT3B0aW9uLCByZW5kZXJPcHRpb24sIHJlbmRlck9wdGlvbkNvbnRlbnQsIHJlbmRlclZhbHVlLCByZWYsIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaXNhYmxlZCA9IGRpc2FibGVkUHJvcCB8fCBsb2FkaW5nO1xuICAgIGNvbnN0IGludGVyYWN0aXZlID0gIWRpc2FibGVkICYmICFyZWFkT25seTtcbiAgICBjb25zdCBjbGFzc2VzID0gcm9vdENsYXNzbmFtZXMocHJlZml4Q2xzKTtcbiAgICBjb25zdCBhdXRvSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IHRyaWdnZXJJZCA9IGlkICE9PSBudWxsICYmIGlkICE9PSB2b2lkIDAgPyBpZCA6IGF1dG9JZDtcbiAgICBjb25zdCBsYWJlbElkID0gdXNlSWQoKTtcbiAgICBjb25zdCBkZXNjcmlwdGlvbklkID0gdXNlSWQoKTtcbiAgICBjb25zdCBmZWVkYmFja0lkID0gdXNlSWQoKTtcbiAgICBjb25zdCBvcHRpb25JZFByZWZpeCA9IHVzZUlkKCk7XG4gICAgY29uc3QgW2lubmVyVmFsdWUsIHNldElubmVyVmFsdWVdID0gdXNlQ29udHJvbGxlZFN0YXRlKGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJiBkZWZhdWx0VmFsdWUgIT09IHZvaWQgMCA/IGRlZmF1bHRWYWx1ZSA6IChtdWx0aXBsZSA/IFtdIDogdW5kZWZpbmVkKSwgdmFsdWUpO1xuICAgIGNvbnN0IFtpbm5lclNlYXJjaFZhbHVlLCBzZXRJbm5lclNlYXJjaFZhbHVlXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0U2VhcmNoVmFsdWUsIHNlYXJjaFZhbHVlKTtcbiAgICBjb25zdCBbYWN0aXZlSW5kZXgsIHNldEFjdGl2ZUluZGV4XSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRTaXplID0gbm9ybWFsaXplU2l6ZShzaXplKTtcbiAgICBjb25zdCBhbGxPcHRpb25Hcm91cHMgPSB1c2VNZW1vKCgpID0+IG5vcm1hbGl6ZU9wdGlvbkdyb3VwcyhvcHRpb25zKSwgW29wdGlvbnNdKTtcbiAgICBjb25zdCBhbGxGbGF0T3B0aW9ucyA9IHVzZU1lbW8oKCkgPT4gZmxhdHRlbk9wdGlvbkdyb3VwcyhhbGxPcHRpb25Hcm91cHMpLCBbYWxsT3B0aW9uR3JvdXBzXSk7XG4gICAgY29uc3QgdmlzaWJsZU9wdGlvbkdyb3VwcyA9IHVzZU1lbW8oKCkgPT4gKHNlYXJjaGFibGVcbiAgICAgICAgPyBmaWx0ZXJPcHRpb25Hcm91cHMoYWxsT3B0aW9uR3JvdXBzLCBpbm5lclNlYXJjaFZhbHVlLCBmaWx0ZXJPcHRpb24pXG4gICAgICAgIDogYWxsT3B0aW9uR3JvdXBzKSwgW2FsbE9wdGlvbkdyb3VwcywgZmlsdGVyT3B0aW9uLCBpbm5lclNlYXJjaFZhbHVlLCBzZWFyY2hhYmxlXSk7XG4gICAgY29uc3QgdmlzaWJsZUZsYXRPcHRpb25zID0gdXNlTWVtbygoKSA9PiBmbGF0dGVuT3B0aW9uR3JvdXBzKHZpc2libGVPcHRpb25Hcm91cHMpLCBbdmlzaWJsZU9wdGlvbkdyb3Vwc10pO1xuICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9ucyA9IHVzZU1lbW8oKCkgPT4gZ2V0U2VsZWN0ZWRPcHRpb25zKGFsbEZsYXRPcHRpb25zLCBpbm5lclZhbHVlLCBtdWx0aXBsZSksIFthbGxGbGF0T3B0aW9ucywgaW5uZXJWYWx1ZSwgbXVsdGlwbGVdKTtcbiAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZE9wdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXRjaGVkSW5kZXggPSB2aXNpYmxlRmxhdE9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRPcHRpb25zWzBdLnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG1hdGNoZWRJbmRleCA+PSAwID8gbWF0Y2hlZEluZGV4IDogbnVsbDtcbiAgICB9LCBbc2VsZWN0ZWRPcHRpb25zLCB2aXNpYmxlRmxhdE9wdGlvbnNdKTtcbiAgICBjb25zdCBoYXNTZWxlY3Rpb24gPSBzZWxlY3RlZE9wdGlvbnMubGVuZ3RoID4gMDtcbiAgICBjb25zdCBsaXN0UmVmID0gdXNlUmVmKFtdKTtcbiAgICBjb25zdCBsaXN0Q29udGVudFJlZiA9IHVzZVJlZihbXSk7XG4gICAgY29uc3QgZmxvYXRpbmdSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgdHJpZ2dlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBzZWFyY2hJbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBoYW5kbGVUcmlnZ2VyUmVmID0gdXNlRXZlbnRDYWxsYmFjaygobm9kZSkgPT4ge1xuICAgICAgICB0cmlnZ2VyUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICByZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCB7IGlzT3BlbjogaW5uZXJPcGVuLCBzZXRPcGVuOiBoYW5kbGVPcGVuQ2hhbmdlLCByZWZzLCBjb250ZXh0LCBmbG9hdGluZ1N0eWxlcywgdHJhbnNpdGlvblN0eWxlcywgaXNNb3VudGVkLCBiYXNlSW50ZXJhY3Rpb25zLCB9ID0gdXNlU2VsZWN0U2hlbGwoe1xuICAgICAgICBvcGVuLFxuICAgICAgICBkZWZhdWx0T3BlbixcbiAgICAgICAgb25PcGVuQ2hhbmdlLFxuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgcmVhZE9ubHksXG4gICAgICAgIGxpc3RNYXhIZWlnaHQsXG4gICAgICAgIGFuaW1hdGlvbixcbiAgICAgICAgb2Zmc2V0LFxuICAgIH0pO1xuICAgIGNvbnN0IHNldFJlZmVyZW5jZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG5vZGUpID0+IHtcbiAgICAgICAgcmVmcy5zZXRSZWZlcmVuY2Uobm9kZSk7XG4gICAgICAgIGhhbmRsZVRyaWdnZXJSZWYobm9kZSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmxvYXRpbmcgPSB1c2VFdmVudENhbGxiYWNrKChub2RlKSA9PiB7XG4gICAgICAgIHJlZnMuc2V0RmxvYXRpbmcobm9kZSk7XG4gICAgICAgIGZsb2F0aW5nUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgIH0pO1xuICAgIGNvbnN0IGxpc3ROYXZpZ2F0aW9uID0gdXNlTGlzdE5hdmlnYXRpb24oY29udGV4dCwge1xuICAgICAgICBsaXN0UmVmLFxuICAgICAgICBhY3RpdmVJbmRleCxcbiAgICAgICAgc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgb25OYXZpZ2F0ZTogc2V0QWN0aXZlSW5kZXgsXG4gICAgICAgIGVuYWJsZWQ6IGlubmVyT3BlbixcbiAgICAgICAgbG9vcDogdHJ1ZSxcbiAgICAgICAgdmlydHVhbDogc2VhcmNoYWJsZSxcbiAgICB9KTtcbiAgICBjb25zdCB0eXBlYWhlYWQgPSB1c2VUeXBlYWhlYWQoY29udGV4dCwge1xuICAgICAgICBsaXN0UmVmOiBsaXN0Q29udGVudFJlZixcbiAgICAgICAgYWN0aXZlSW5kZXgsXG4gICAgICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgICAgIGVuYWJsZWQ6IGlubmVyT3BlbiAmJiAhc2VhcmNoYWJsZSxcbiAgICAgICAgb25NYXRjaDogc2V0QWN0aXZlSW5kZXgsXG4gICAgfSk7XG4gICAgY29uc3QgeyBnZXRSZWZlcmVuY2VQcm9wcywgZ2V0RmxvYXRpbmdQcm9wcywgZ2V0SXRlbVByb3BzIH0gPSB1c2VJbnRlcmFjdGlvbnMoW1xuICAgICAgICAuLi5iYXNlSW50ZXJhY3Rpb25zLFxuICAgICAgICBsaXN0TmF2aWdhdGlvbixcbiAgICAgICAgdHlwZWFoZWFkLFxuICAgIF0pO1xuICAgIGNvbnN0IGZpcnN0RW5hYmxlZEluZGV4ID0gdXNlTWVtbygoKSA9PiB2aXNpYmxlRmxhdE9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+ICFvcHRpb24uZGlzYWJsZWQpLCBbdmlzaWJsZUZsYXRPcHRpb25zXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFpbm5lck9wZW4pIHtcbiAgICAgICAgICAgIHNldEFjdGl2ZUluZGV4KHNlbGVjdGVkSW5kZXgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldEFjdGl2ZUluZGV4KChwcmV2KSA9PiB7XG4gICAgICAgICAgICBpZiAocHJldiAhPT0gbnVsbCAmJiB2aXNpYmxlRmxhdE9wdGlvbnNbcHJldl0gJiYgIXZpc2libGVGbGF0T3B0aW9uc1twcmV2XS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICB2aXNpYmxlRmxhdE9wdGlvbnNbc2VsZWN0ZWRJbmRleF0gJiZcbiAgICAgICAgICAgICAgICAhdmlzaWJsZUZsYXRPcHRpb25zW3NlbGVjdGVkSW5kZXhdLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkSW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmlyc3RFbmFibGVkSW5kZXggPj0gMCA/IGZpcnN0RW5hYmxlZEluZGV4IDogbnVsbDtcbiAgICAgICAgfSk7XG4gICAgfSwgW2ZpcnN0RW5hYmxlZEluZGV4LCBpbm5lck9wZW4sIHNlbGVjdGVkSW5kZXgsIHZpc2libGVGbGF0T3B0aW9uc10pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCFpbm5lck9wZW4gfHwgYWN0aXZlSW5kZXggPT09IG51bGwgfHwgc2VhcmNoYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIChfYSA9IGxpc3RSZWYuY3VycmVudFthY3RpdmVJbmRleF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgfSwgW2FjdGl2ZUluZGV4LCBpbm5lck9wZW4sIHNlYXJjaGFibGVdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsaXN0UmVmLmN1cnJlbnQgPSBsaXN0UmVmLmN1cnJlbnQuc2xpY2UoMCwgdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aCk7XG4gICAgICAgIGxpc3RDb250ZW50UmVmLmN1cnJlbnQgPSBsaXN0Q29udGVudFJlZi5jdXJyZW50LnNsaWNlKDAsIHZpc2libGVGbGF0T3B0aW9ucy5sZW5ndGgpO1xuICAgIH0sIFt2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoXSk7XG4gICAgY29uc3Qgc2V0U2VhcmNoSW5wdXRSZWYgPSB1c2VFdmVudENhbGxiYWNrKChub2RlKSA9PiB7XG4gICAgICAgIHNlYXJjaElucHV0UmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICBpZiAobm9kZSAmJiBpbm5lck9wZW4gJiYgZmlsdGVySW5wdXRBdXRvRm9jdXMpIHtcbiAgICAgICAgICAgIG5vZGUuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgbm90aWZ5Qmx1cklmT3V0c2lkZSA9IHVzZUV2ZW50Q2FsbGJhY2soKHJlbGF0ZWRUYXJnZXQsIGV2ZW50KSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGNvbnN0IG5leHRUYXJnZXQgPSByZWxhdGVkVGFyZ2V0O1xuICAgICAgICBjb25zdCB3aXRoaW5UcmlnZ2VyID0gISEobmV4dFRhcmdldCAmJiAoKF9hID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY29udGFpbnMobmV4dFRhcmdldCkpKTtcbiAgICAgICAgY29uc3Qgd2l0aGluRmxvYXRpbmcgPSAhIShuZXh0VGFyZ2V0ICYmICgoX2IgPSBmbG9hdGluZ1JlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY29udGFpbnMobmV4dFRhcmdldCkpKTtcbiAgICAgICAgaWYgKCF3aXRoaW5UcmlnZ2VyICYmICF3aXRoaW5GbG9hdGluZykge1xuICAgICAgICAgICAgb25CbHVyID09PSBudWxsIHx8IG9uQmx1ciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25CbHVyKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRyaWdnZXJCbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgbm90aWZ5Qmx1cklmT3V0c2lkZShldmVudC5yZWxhdGVkVGFyZ2V0LCBldmVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlT3B0aW9uQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIG5vdGlmeUJsdXJJZk91dHNpZGUoZXZlbnQucmVsYXRlZFRhcmdldCwgZXZlbnQpO1xuICAgIH0pO1xuICAgIGNvbnN0IGNvbW1pdENoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG5leHRWYWx1ZSwgbmV4dE9wdGlvbikgPT4ge1xuICAgICAgICBzZXRJbm5lclZhbHVlKG5leHRWYWx1ZSk7XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShuZXh0VmFsdWUsIG5leHRPcHRpb24sIG5hbWUpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlbGVjdE9wdGlvbiA9IHVzZUV2ZW50Q2FsbGJhY2soKG9wdGlvbikgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBpZiAob3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG11bHRpcGxlKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0VmFsdWUgPSB0b2dnbGVNdWx0aXBsZVZhbHVlKGlubmVyVmFsdWUsIG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBuZXh0T3B0aW9ucyA9IGdldE9wdGlvbnNCeVZhbHVlcyhhbGxGbGF0T3B0aW9ucywgbmV4dFZhbHVlKTtcbiAgICAgICAgICAgIGNvbW1pdENoYW5nZShuZXh0VmFsdWUsIG5leHRPcHRpb25zKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWxsb3dEZXNlbGVjdCAmJiBpbm5lclZhbHVlID09PSBvcHRpb24udmFsdWUpIHtcbiAgICAgICAgICAgIGNvbW1pdENoYW5nZSh1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICBoYW5kbGVPcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICAgICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cigpO1xuICAgICAgICAgICAgKF9hID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbW1pdENoYW5nZShvcHRpb24udmFsdWUsIG9wdGlvbik7XG4gICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoKTtcbiAgICAgICAgKF9iID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVJlbW92ZVNlbGVjdGVkVmFsdWUgPSB1c2VFdmVudENhbGxiYWNrKChvcHRpb25WYWx1ZSkgPT4ge1xuICAgICAgICBpZiAoIW11bHRpcGxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFnZXRNdWx0aXBsZVZhbHVlKGlubmVyVmFsdWUpLmluY2x1ZGVzKG9wdGlvblZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5leHRWYWx1ZSA9IHJlbW92ZU11bHRpcGxlVmFsdWUoaW5uZXJWYWx1ZSwgb3B0aW9uVmFsdWUpO1xuICAgICAgICBjb25zdCBuZXh0T3B0aW9ucyA9IGdldE9wdGlvbnNCeVZhbHVlcyhhbGxGbGF0T3B0aW9ucywgbmV4dFZhbHVlKTtcbiAgICAgICAgY29tbWl0Q2hhbmdlKG5leHRWYWx1ZSwgbmV4dE9wdGlvbnMpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRyaWdnZXJLZXlEb3duID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFpbnRlcmFjdGl2ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkVOVEVSIHx8IGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuU1BBQ0UpIHtcbiAgICAgICAgICAgIGlmIChpbm5lck9wZW4gJiZcbiAgICAgICAgICAgICAgICBhY3RpdmVJbmRleCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0gJiZcbiAgICAgICAgICAgICAgICAhdmlzaWJsZUZsYXRPcHRpb25zW2FjdGl2ZUluZGV4XS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0T3B0aW9uKHZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBoYW5kbGVPcGVuQ2hhbmdlKCFpbm5lck9wZW4pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkFSUk9XX0RPV04gfHwgZXZlbnQua2V5ID09PSBLRVlCT0FSRC5BUlJPV19VUCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmICghaW5uZXJPcGVuKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlT3BlbkNoYW5nZSh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUl0ZW1Nb3VzZUVudGVyID0gdXNlRXZlbnRDYWxsYmFjaygoaW5kZXgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoISgoX2EgPSB2aXNpYmxlRmxhdE9wdGlvbnNbaW5kZXhdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGlzYWJsZWQpKSB7XG4gICAgICAgICAgICBzZXRBY3RpdmVJbmRleChpbmRleCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVUYWdSZW1vdmVNb3VzZURvd24gPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVUYWdSZW1vdmVDbGljayA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaEJsdXIgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBub3RpZnlCbHVySWZPdXRzaWRlKGV2ZW50LnJlbGF0ZWRUYXJnZXQsIGV2ZW50KTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTZWFyY2hDaGFuZ2UgPSB1c2VFdmVudENhbGxiYWNrKChuZXh0VmFsdWUsIF9ldmVudCkgPT4ge1xuICAgICAgICBzZXRJbm5lclNlYXJjaFZhbHVlKG5leHRWYWx1ZSk7XG4gICAgICAgIG9uU2VhcmNoQ2hhbmdlID09PSBudWxsIHx8IG9uU2VhcmNoQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblNlYXJjaENoYW5nZShuZXh0VmFsdWUpO1xuICAgIH0pO1xuICAgIGNvbnN0IGZpbmRFbmFibGVkSW5kZXggPSB1c2VFdmVudENhbGxiYWNrKChjdXJyZW50LCBkaXJlY3Rpb24pID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBsZW5ndGggPSB2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoO1xuICAgICAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGFydCA9IGN1cnJlbnQgIT09IG51bGwgJiYgY3VycmVudCAhPT0gdm9pZCAwID8gY3VycmVudCA6IChkaXJlY3Rpb24gPT09IDEgPyAtMSA6IGxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IHN0ZXAgPSAxOyBzdGVwIDw9IGxlbmd0aDsgc3RlcCArPSAxKSB7XG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGUgPSAoKHN0YXJ0ICsgZGlyZWN0aW9uICogc3RlcCkgJSBsZW5ndGggKyBsZW5ndGgpICUgbGVuZ3RoO1xuICAgICAgICAgICAgaWYgKCEoKF9hID0gdmlzaWJsZUZsYXRPcHRpb25zW2NhbmRpZGF0ZV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kaXNhYmxlZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaEtleURvd24gPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkFSUk9XX0RPV04pIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb25zdCBuZXh0ID0gZmluZEVuYWJsZWRJbmRleChhY3RpdmVJbmRleCwgMSk7XG4gICAgICAgICAgICBpZiAobmV4dCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHNldEFjdGl2ZUluZGV4KG5leHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkFSUk9XX1VQKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgY29uc3QgcHJldiA9IGZpbmRFbmFibGVkSW5kZXgoYWN0aXZlSW5kZXgsIC0xKTtcbiAgICAgICAgICAgIGlmIChwcmV2ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc2V0QWN0aXZlSW5kZXgocHJldik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuRU5URVIpIHtcbiAgICAgICAgICAgIGlmIChhY3RpdmVJbmRleCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0gJiZcbiAgICAgICAgICAgICAgICAhdmlzaWJsZUZsYXRPcHRpb25zW2FjdGl2ZUluZGV4XS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0T3B0aW9uKHZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkVTQ0FQRSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICAgICAgKF9hID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgcmVuZGVyVmFsdWVNZXRhID0ge1xuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgcmVhZE9ubHksXG4gICAgICAgIG11bHRpcGxlLFxuICAgICAgICBtYXhWaXNpYmxlVmFsdWVzLFxuICAgICAgICBvcGVuOiBpbm5lck9wZW4sXG4gICAgICAgIHBsYWNlaG9sZGVyOiAhaGFzU2VsZWN0aW9uLFxuICAgICAgICBzZWxlY3RlZE9wdGlvbnMsXG4gICAgICAgIHNpemU6IG5vcm1hbGl6ZWRTaXplLFxuICAgICAgICBmb250U2l6ZTogZ2V0Rm9udFNpemUobm9ybWFsaXplZFNpemUpLFxuICAgIH07XG4gICAgY29uc3QgdmFsdWVMYWJlbENsYXNzID0gaGFzU2VsZWN0aW9uID8gJ3ZhbHVlJyA6ICdwbGFjZWhvbGRlcic7XG4gICAgY29uc3QgaXNNdWx0aXBsZVZhbHVlRmlsbGVkID0gKG11bHRpcGxlICYmXG4gICAgICAgIGhhc1NlbGVjdGlvbiAmJlxuICAgICAgICBtYXhWaXNpYmxlVmFsdWVzID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgLy8gQSBjdXN0b20gYHJlbmRlclZhbHVlYCBwcm9kdWNlcyBpdHMgb3duIHNpbmdsZS1saW5lIHN1bW1hcnksIHNvIHRoZVxuICAgICAgICAvLyBtdWx0aS12YWx1ZSBjaGlwIGxheW91dCAoaGVpZ2h0OmF1dG8gKyB2ZXJ0aWNhbCBwYWRkaW5nICsgZmxleC13cmFwKVxuICAgICAgICAvLyBtdXN0IG5vdCBraWNrIGluIGFuZCBpbmZsYXRlIHRoZSB0cmlnZ2VyIGhlaWdodC5cbiAgICAgICAgIXJlbmRlclZhbHVlKTtcbiAgICBjb25zdCB0cmlnZ2VyQ2xhc3NOYW1lID0gY2xhc3NlcygndHJpZ2dlcicsIGpvaW5DbHMoY2xhc3NlcyhgdHJpZ2dlci0ke25vcm1hbGl6ZWRTaXplfWApLCBjbGFzc2VzKGB0cmlnZ2VyLSR7dmFyaWFudH1gKSwgaW5uZXJPcGVuICYmIGNsYXNzZXMoJ3RyaWdnZXItb3BlbicpLCBpc011bHRpcGxlVmFsdWVGaWxsZWQgJiYgY2xhc3NlcygndHJpZ2dlci1tdWx0aXBsZS1maWxsZWQnKSwgaGFzU2VsZWN0aW9uID8gY2xhc3NlcygndHJpZ2dlci1maWxsZWQnKSA6IGNsYXNzZXMoJ3RyaWdnZXItcGxhY2Vob2xkZXInKSwgc3RhdHVzICE9PSAnZGVmYXVsdCcgJiYgY2xhc3NlcyhgdHJpZ2dlci0ke3N0YXR1c31gKSwgZGlzYWJsZWQgJiYgY2xhc3NlcygndHJpZ2dlci1kaXNhYmxlZCcpLCByZWFkT25seSAmJiAhZGlzYWJsZWQgJiYgY2xhc3NlcygndHJpZ2dlci1yZWFkb25seScpKSk7XG4gICAgY29uc3QgaWNvblNpemUgPSBub3JtYWxpemVkU2l6ZSA9PT0gJ2xhcmdlJyA/IDIwIDogMTY7XG4gICAgY29uc3QgYWN0aXZlT3B0aW9uSWQgPSBzZWFyY2hhYmxlICYmIGlubmVyT3BlbiAmJiBhY3RpdmVJbmRleCAhPT0gbnVsbFxuICAgICAgICA/IGAke29wdGlvbklkUHJlZml4fS0ke2FjdGl2ZUluZGV4fWBcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZmxvYXRpbmdBcmlhTGFiZWxsZWRCeSA9IGFyaWFMYWJlbGxlZEJ5ICE9PSBudWxsICYmIGFyaWFMYWJlbGxlZEJ5ICE9PSB2b2lkIDAgPyBhcmlhTGFiZWxsZWRCeSA6IChsYWJlbCA/IGxhYmVsSWQgOiB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGRlc2NyaWJlZEJ5SWRzID0gW1xuICAgICAgICBkZXNjcmlwdGlvbiA/IGRlc2NyaXB0aW9uSWQgOiBudWxsLFxuICAgICAgICBmZWVkYmFjayA/IGZlZWRiYWNrSWQgOiBudWxsLFxuICAgIF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKSB8fCB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChfanN4cyhTZWxlY3RGaWVsZFNoZWxsLCB7IGNsYXNzZXM6IGNsYXNzZXMsIGNsYXNzTmFtZTogY2xhc3NOYW1lLCBzaXplOiBub3JtYWxpemVkU2l6ZSwgdmFyaWFudDogdmFyaWFudCwgc3RhdHVzOiBzdGF0dXMsIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZE9ubHk6IHJlYWRPbmx5LCBsb2FkaW5nOiBsb2FkaW5nLCBsYWJlbDogbGFiZWwsIGxhYmVsQ2xhc3NOYW1lOiBsYWJlbENsYXNzTmFtZSwgaW5mbzogaW5mbywgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLCBmZWVkYmFjazogZmVlZGJhY2ssIHJlcXVpcmVkOiByZXF1aXJlZCwgbGFiZWxJZDogbGFiZWxJZCwgZGVzY3JpcHRpb25JZDogZGVzY3JpcHRpb25JZCwgZmVlZGJhY2tJZDogZmVlZGJhY2tJZCwgY2hpbGRyZW46IFtfanN4cyhcImJ1dHRvblwiLCBPYmplY3QuYXNzaWduKHt9LCBnZXRSZWZlcmVuY2VQcm9wcyh7XG4gICAgICAgICAgICAgICAgcmVmOiBzZXRSZWZlcmVuY2UsXG4gICAgICAgICAgICAgICAgaWQ6IHRyaWdnZXJJZCxcbiAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgICAgICdhcmlhLXJlYWRvbmx5JzogcmVhZE9ubHkgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdHJpZ2dlckNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICBvbktleURvd246IGhhbmRsZVRyaWdnZXJLZXlEb3duLFxuICAgICAgICAgICAgICAgIG9uQmx1cjogaGFuZGxlVHJpZ2dlckJsdXIsXG4gICAgICAgICAgICAgICAgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWwsXG4gICAgICAgICAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IGZsb2F0aW5nQXJpYUxhYmVsbGVkQnksXG4gICAgICAgICAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiBkZXNjcmliZWRCeUlkcyxcbiAgICAgICAgICAgIH0pLCB7IGNoaWxkcmVuOiBbX2pzeHMoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjb250ZW50JyksIGNoaWxkcmVuOiBbcHJlZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwcmVmaXgnKSwgY2hpbGRyZW46IHByZWZpeCB9KSwgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXModmFsdWVMYWJlbENsYXNzLCBqb2luQ2xzKGNsYXNzZXMoYCR7dmFsdWVMYWJlbENsYXNzfS0ke25vcm1hbGl6ZWRTaXplfWApLCBpc011bHRpcGxlVmFsdWVGaWxsZWQgJiYgY2xhc3NlcyhgJHt2YWx1ZUxhYmVsQ2xhc3N9LW11bHRpcGxlYCksIGRpc2FibGVkICYmIGNsYXNzZXMoYCR7dmFsdWVMYWJlbENsYXNzfS1kaXNhYmxlZGApKSksIGNoaWxkcmVuOiBfanN4KFNlbGVjdFZhbHVlQ29udGVudCwgeyBjbGFzc2VzOiBjbGFzc2VzLCBoYXNTZWxlY3Rpb246IGhhc1NlbGVjdGlvbiwgbXVsdGlwbGU6IG11bHRpcGxlLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIHJlbmRlclZhbHVlOiByZW5kZXJWYWx1ZSwgcmVuZGVyVmFsdWVNZXRhOiByZW5kZXJWYWx1ZU1ldGEsIHNlbGVjdGVkT3B0aW9uczogc2VsZWN0ZWRPcHRpb25zLCBtYXhWaXNpYmxlVmFsdWVzOiBtYXhWaXNpYmxlVmFsdWVzLCBvblJlbW92ZTogaGFuZGxlUmVtb3ZlU2VsZWN0ZWRWYWx1ZSwgb25SZW1vdmVDbGljazogaGFuZGxlVGFnUmVtb3ZlQ2xpY2ssIG9uUmVtb3ZlTW91c2VEb3duOiBoYW5kbGVUYWdSZW1vdmVNb3VzZURvd24gfSkgfSldIH0pLCBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnaWNvbicpLCBjaGlsZHJlbjogbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2pzeChTcGlubmVyLCB7IHNpemU6IGljb25TaXplLCBzdHJva2VXaWR0aDogMiB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcmVhZE9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX2pzeChJY29ucywgeyBuYW1lOiBpbm5lck9wZW4gPyAnY2hldnJvblVwJyA6ICdjaGV2cm9uRG93bicsIHNpemU6IGljb25TaXplLCBjb2xvcjogXCJjdXJyZW50Q29sb3JcIiB9KSB9KV0gfSkpLCBpc01vdW50ZWQgJiYgaW50ZXJhY3RpdmUgJiYgKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYW5lbE5vZGUgPSAoX2pzeChGbG9hdGluZ0ZvY3VzTWFuYWdlciwgeyBjb250ZXh0OiBjb250ZXh0LCBtb2RhbDogZmFsc2UsIGluaXRpYWxGb2N1czogLTEsIHJldHVybkZvY3VzOiBmYWxzZSwgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe30sIGdldEZsb2F0aW5nUHJvcHMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBzZXRGbG9hdGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogam9pbkNscyhjbGFzc2VzKCdwYW5lbCcpLCBwYW5lbENsYXNzTmFtZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBmbG9hdGluZ1N0eWxlcyksIHRyYW5zaXRpb25TdHlsZXMpLFxuICAgICAgICAgICAgICAgICAgICB9KSwgeyBjaGlsZHJlbjogW3NlYXJjaGFibGUgJiYgKF9qc3goU2VsZWN0U2VhcmNoQ29udHJvbCwgeyByZWY6IHNldFNlYXJjaElucHV0UmVmLCBjbGFzc2VzOiBjbGFzc2VzLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2l6ZT17bm9ybWFsaXplZFNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IFwic21hbGxcIiwgcGxhY2Vob2xkZXI6IHNlYXJjaFBsYWNlaG9sZGVyLCB2YWx1ZTogaW5uZXJTZWFyY2hWYWx1ZSwgYWN0aXZlRGVzY2VuZGFudDogYWN0aXZlT3B0aW9uSWQsIG9uQmx1cjogaGFuZGxlU2VhcmNoQmx1ciwgb25DaGFuZ2U6IGhhbmRsZVNlYXJjaENoYW5nZSwgb25LZXlEb3duOiBoYW5kbGVTZWFyY2hLZXlEb3duIH0pKSwgX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsLWJvZHknKSwgY2hpbGRyZW46IFtwYW5lbEhlYWRlciAhPSBudWxsICYmIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwYW5lbC1oZWFkZXInKSwgY2hpbGRyZW46IHBhbmVsSGVhZGVyIH0pKSwgdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aCA9PT0gMCA/IChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdlbXB0eScpLCBjaGlsZHJlbjogX2pzeChUeXBvZ3JhcGh5Qm9keSwgeyBzaXplOiBTRUxFQ1RfVFlQT0dSQVBIWS5lbXB0eS5zaXplLCBjb2xvcjogU0VMRUNUX1RZUE9HUkFQSFkuZW1wdHkuY29sb3IsIGNoaWxkcmVuOiBlbXB0eUNvbnRlbnQgfSkgfSkpIDogKCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZsYXRJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2libGVPcHRpb25Hcm91cHMubWFwKChncm91cCkgPT4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdncm91cCcpLCBjaGlsZHJlbjogW2dyb3VwLmxhYmVsICYmIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdncm91cC1sYWJlbCcsIGdyb3VwTGFiZWxDbGFzc05hbWUpLCBjaGlsZHJlbjogX2pzeChUeXBvZ3JhcGh5TGFiZWwsIHsgc2l6ZTogU0VMRUNUX1RZUE9HUkFQSFkuZ3JvdXBMYWJlbC5zaXplLCBzdHJvbmc6IHRydWUsIGNoaWxkcmVuOiBncm91cC5sYWJlbCB9KSB9KSksIGdyb3VwLm9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25GbGF0SW5kZXggPSBmbGF0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhdEluZGV4ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBpc09wdGlvblNlbGVjdGVkKGlubmVyVmFsdWUsIG11bHRpcGxlLCBvcHRpb24udmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IGFjdGl2ZUluZGV4ID09PSBvcHRpb25GbGF0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uTWV0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogISFvcHRpb24uZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBvcHRpb25GbGF0SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuOiBpbm5lck9wZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogZ2V0Rm9udFNpemUobm9ybWFsaXplZFNpemUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdENvbnRlbnRSZWYuY3VycmVudFtvcHRpb25GbGF0SW5kZXhdID0gZXh0cmFjdE9wdGlvblRleHQob3B0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKF9qc3goXCJidXR0b25cIiwgT2JqZWN0LmFzc2lnbih7fSwgZ2V0SXRlbVByb3BzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmKG5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RSZWYuY3VycmVudFtvcHRpb25GbGF0SW5kZXhdID0gbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGAke29wdGlvbklkUHJlZml4fS0ke29wdGlvbkZsYXRJbmRleH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZTogJ29wdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3Nlcygnb3B0aW9uJywgam9pbkNscyhhY3RpdmUgJiYgY2xhc3Nlcygnb3B0aW9uLWFjdGl2ZScpLCBzZWxlY3RlZCAmJiBjbGFzc2VzKCdvcHRpb24tc2VsZWN0ZWQnKSwgb3B0aW9uLmRpc2FibGVkICYmIGNsYXNzZXMoJ29wdGlvbi1kaXNhYmxlZCcpLCBvcHRpb25DbGFzc05hbWUpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IG9wdGlvbi5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyaWEtc2VsZWN0ZWQnOiBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0T3B0aW9uKG9wdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcjogKCkgPT4gaGFuZGxlSXRlbU1vdXNlRW50ZXIob3B0aW9uRmxhdEluZGV4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiBoYW5kbGVPcHRpb25CbHVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7IGNoaWxkcmVuOiByZW5kZXJPcHRpb24gPyAocmVuZGVyT3B0aW9uKG9wdGlvbiwgb3B0aW9uTWV0YSkpIDogKF9qc3goU2VsZWN0T3B0aW9uQ29udGVudCwgeyBjbGFzc2VzOiBjbGFzc2VzLCBvcHRpb246IG9wdGlvbiwgc2VsZWN0ZWQ6IHNlbGVjdGVkLCBzaXplOiBub3JtYWxpemVkU2l6ZSwgY29udGVudDogcmVuZGVyT3B0aW9uQ29udGVudCA9PT0gbnVsbCB8fCByZW5kZXJPcHRpb25Db250ZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZW5kZXJPcHRpb25Db250ZW50KG9wdGlvbiwgb3B0aW9uTWV0YSkgfSkpIH0pLCBgJHtncm91cC5rZXl9LSR7b3B0aW9uLnZhbHVlfWApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXSB9LCBncm91cC5rZXkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpKV0gfSksIHBhbmVsRm9vdGVyICE9IG51bGwgJiYgKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsLWZvb3RlcicpLCBjaGlsZHJlbjogcGFuZWxGb290ZXIgfSkpXSB9KSkgfSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBwb3J0YWwgPyBfanN4KEZsb2F0aW5nUG9ydGFsLCB7IGNoaWxkcmVuOiBwYW5lbE5vZGUgfSkgOiBwYW5lbE5vZGU7XG4gICAgICAgICAgICB9KSgpXSB9KSk7XG59O1xuU2VsZWN0LmRpc3BsYXlOYW1lID0gJ1NlbGVjdCc7XG5leHBvcnQgZGVmYXVsdCBtZW1vKFNlbGVjdCk7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
585
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZsb2F0aW5nRm9jdXNNYW5hZ2VyIiwiRmxvYXRpbmdQb3J0YWwiLCJ1c2VJbnRlcmFjdGlvbnMiLCJ1c2VMaXN0TmF2aWdhdGlvbiIsInVzZVR5cGVhaGVhZCIsIm1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VJZCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZUV2ZW50Q2FsbGJhY2siLCJ1c2VGb3JtQ29udHJvbFNpemUiLCJJY29ucyIsIlNwaW5uZXIiLCJUeXBvZ3JhcGh5Qm9keSIsIlR5cG9ncmFwaHlMYWJlbCIsImpvaW5DbHMiLCJkZWZhdWx0Iiwicm9vdENsYXNzbmFtZXMiLCJTZWxlY3RGaWVsZFNoZWxsIiwiU2VsZWN0T3B0aW9uQ29udGVudCIsIlNlbGVjdFNlYXJjaENvbnRyb2wiLCJTZWxlY3RWYWx1ZUNvbnRlbnQiLCJ1c2VTZWxlY3RTaGVsbCIsIktFWUJPQVJEIiwiU0VMRUNUX1RZUE9HUkFQSFkiLCJleHRyYWN0T3B0aW9uVGV4dCIsImZpbHRlck9wdGlvbkdyb3VwcyIsImZsYXR0ZW5PcHRpb25Hcm91cHMiLCJnZXRNdWx0aXBsZVZhbHVlIiwiZ2V0Rm9udFNpemUiLCJnZXRPcHRpb25zQnlWYWx1ZXMiLCJnZXRTZWxlY3RlZE9wdGlvbnMiLCJpc09wdGlvblNlbGVjdGVkIiwibm9ybWFsaXplU2l6ZSIsIm5vcm1hbGl6ZU9wdGlvbkdyb3VwcyIsInJlbW92ZU11bHRpcGxlVmFsdWUiLCJ0b2dnbGVNdWx0aXBsZVZhbHVlIiwiREVGQVVMVF9NQVhfSEVJR0hUIiwiU2VsZWN0IiwicHJvcHMiLCJfYSIsIl9wcm9wcyRjbGFzc05hbWUiLCJjbGFzc05hbWUiLCJfcHJvcHMkcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwic3R5bGUiLCJpZCIsIm5hbWUiLCJhcmlhTGFiZWwiLCJhcmlhTGFiZWxsZWRCeSIsIl9wcm9wcyRwbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyIiwiX3Byb3BzJG9wdGlvbnMiLCJvcHRpb25zIiwidmFsdWUiLCJkZWZhdWx0VmFsdWUiLCJzaXplUHJvcCIsInNpemUiLCJfcHJvcHMkc3RhdHVzIiwic3RhdHVzIiwiX3Byb3BzJHZhcmlhbnQiLCJ2YXJpYW50IiwiX3Byb3BzJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJkaXNhYmxlZFByb3AiLCJfcHJvcHMkcmVhZE9ubHkiLCJyZWFkT25seSIsIl9wcm9wcyRsb2FkaW5nIiwibG9hZGluZyIsIl9wcm9wcyRtdWx0aXBsZSIsIm11bHRpcGxlIiwibWF4VmlzaWJsZVZhbHVlcyIsIl9wcm9wcyRzZWFyY2hhYmxlIiwic2VhcmNoYWJsZSIsIl9wcm9wcyRzZWFyY2hQbGFjZWhvbCIsInNlYXJjaFBsYWNlaG9sZGVyIiwic2VhcmNoVmFsdWUiLCJfcHJvcHMkZGVmYXVsdFNlYXJjaFYiLCJkZWZhdWx0U2VhcmNoVmFsdWUiLCJfcHJvcHMkZmlsdGVySW5wdXRBdXQiLCJmaWx0ZXJJbnB1dEF1dG9Gb2N1cyIsImxhYmVsIiwibGFiZWxDbGFzc05hbWUiLCJpbmZvIiwiZGVzY3JpcHRpb24iLCJmZWVkYmFjayIsIl9wcm9wcyRyZXF1aXJlZCIsInJlcXVpcmVkIiwicHJlZml4IiwiX3Byb3BzJGVtcHR5Q29udGVudCIsImVtcHR5Q29udGVudCIsInBhbmVsSGVhZGVyIiwicGFuZWxGb290ZXIiLCJvcGVuIiwiX3Byb3BzJGRlZmF1bHRPcGVuIiwiZGVmYXVsdE9wZW4iLCJfcHJvcHMkcG9ydGFsIiwicG9ydGFsIiwiX3Byb3BzJGFsbG93RGVzZWxlY3QiLCJhbGxvd0Rlc2VsZWN0IiwicGFuZWxDbGFzc05hbWUiLCJvcHRpb25DbGFzc05hbWUiLCJncm91cExhYmVsQ2xhc3NOYW1lIiwiX3Byb3BzJGxpc3RNYXhIZWlnaHQiLCJsaXN0TWF4SGVpZ2h0Iiwib2Zmc2V0IiwiYW5pbWF0aW9uIiwib25DaGFuZ2UiLCJvbk9wZW5DaGFuZ2UiLCJvblNlYXJjaENoYW5nZSIsIm9uQmx1ciIsImZpbHRlck9wdGlvbiIsInJlbmRlck9wdGlvbiIsInJlbmRlck9wdGlvbkNvbnRlbnQiLCJyZW5kZXJWYWx1ZSIsInJlZiIsImNvbnRleHRTaXplIiwiaW50ZXJhY3RpdmUiLCJjbGFzc2VzIiwiYXV0b0lkIiwidHJpZ2dlcklkIiwibGFiZWxJZCIsImRlc2NyaXB0aW9uSWQiLCJmZWVkYmFja0lkIiwib3B0aW9uSWRQcmVmaXgiLCJfdXNlQ29udHJvbGxlZFN0YXRlIiwidW5kZWZpbmVkIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlubmVyVmFsdWUiLCJzZXRJbm5lclZhbHVlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTMiLCJfdXNlQ29udHJvbGxlZFN0YXRlNCIsImlubmVyU2VhcmNoVmFsdWUiLCJzZXRJbm5lclNlYXJjaFZhbHVlIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZUluZGV4Iiwic2V0QWN0aXZlSW5kZXgiLCJub3JtYWxpemVkU2l6ZSIsImFsbE9wdGlvbkdyb3VwcyIsImFsbEZsYXRPcHRpb25zIiwidmlzaWJsZU9wdGlvbkdyb3VwcyIsInZpc2libGVGbGF0T3B0aW9ucyIsInNlbGVjdGVkT3B0aW9ucyIsInNlbGVjdGVkSW5kZXgiLCJsZW5ndGgiLCJtYXRjaGVkSW5kZXgiLCJmaW5kSW5kZXgiLCJvcHRpb24iLCJoYXNTZWxlY3Rpb24iLCJsaXN0UmVmIiwibGlzdENvbnRlbnRSZWYiLCJmbG9hdGluZ1JlZiIsInRyaWdnZXJSZWYiLCJzZWFyY2hJbnB1dFJlZiIsImhhbmRsZVRyaWdnZXJSZWYiLCJub2RlIiwiY3VycmVudCIsIl91c2VTZWxlY3RTaGVsbCIsImlubmVyT3BlbiIsImlzT3BlbiIsImhhbmRsZU9wZW5DaGFuZ2UiLCJzZXRPcGVuIiwicmVmcyIsImNvbnRleHQiLCJmbG9hdGluZ1N0eWxlcyIsInRyYW5zaXRpb25TdHlsZXMiLCJpc01vdW50ZWQiLCJiYXNlSW50ZXJhY3Rpb25zIiwic2V0UmVmZXJlbmNlIiwic2V0RmxvYXRpbmciLCJsaXN0TmF2aWdhdGlvbiIsIm9uTmF2aWdhdGUiLCJlbmFibGVkIiwibG9vcCIsInZpcnR1YWwiLCJ0eXBlYWhlYWQiLCJvbk1hdGNoIiwiX3VzZUludGVyYWN0aW9ucyIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsImdldFJlZmVyZW5jZVByb3BzIiwiZ2V0RmxvYXRpbmdQcm9wcyIsImdldEl0ZW1Qcm9wcyIsImZpcnN0RW5hYmxlZEluZGV4IiwicHJldiIsImZvY3VzIiwicHJldmVudFNjcm9sbCIsInNsaWNlIiwic2V0U2VhcmNoSW5wdXRSZWYiLCJub3RpZnlCbHVySWZPdXRzaWRlIiwicmVsYXRlZFRhcmdldCIsImV2ZW50IiwiX2IiLCJuZXh0VGFyZ2V0Iiwid2l0aGluVHJpZ2dlciIsImNvbnRhaW5zIiwid2l0aGluRmxvYXRpbmciLCJoYW5kbGVUcmlnZ2VyQmx1ciIsImhhbmRsZU9wdGlvbkJsdXIiLCJjb21taXRDaGFuZ2UiLCJuZXh0VmFsdWUiLCJuZXh0T3B0aW9uIiwiaGFuZGxlU2VsZWN0T3B0aW9uIiwibmV4dE9wdGlvbnMiLCJoYW5kbGVSZW1vdmVTZWxlY3RlZFZhbHVlIiwib3B0aW9uVmFsdWUiLCJpbmNsdWRlcyIsImhhbmRsZVRyaWdnZXJLZXlEb3duIiwia2V5IiwiRU5URVIiLCJTUEFDRSIsInByZXZlbnREZWZhdWx0IiwiQVJST1dfRE9XTiIsIkFSUk9XX1VQIiwiaGFuZGxlSXRlbU1vdXNlRW50ZXIiLCJpbmRleCIsImhhbmRsZVRhZ1JlbW92ZU1vdXNlRG93biIsInN0b3BQcm9wYWdhdGlvbiIsImhhbmRsZVRhZ1JlbW92ZUNsaWNrIiwiaGFuZGxlU2VhcmNoQmx1ciIsImhhbmRsZVNlYXJjaENoYW5nZSIsIl9ldmVudCIsImZpbmRFbmFibGVkSW5kZXgiLCJkaXJlY3Rpb24iLCJzdGFydCIsInN0ZXAiLCJjYW5kaWRhdGUiLCJoYW5kbGVTZWFyY2hLZXlEb3duIiwibmV4dCIsIkVTQ0FQRSIsInJlbmRlclZhbHVlTWV0YSIsImZvbnRTaXplIiwidmFsdWVMYWJlbENsYXNzIiwiaXNNdWx0aXBsZVZhbHVlRmlsbGVkIiwidHJpZ2dlckNsYXNzTmFtZSIsImljb25TaXplIiwiYWN0aXZlT3B0aW9uSWQiLCJmbG9hdGluZ0FyaWFMYWJlbGxlZEJ5IiwiZGVzY3JpYmVkQnlJZHMiLCJmaWx0ZXIiLCJCb29sZWFuIiwiam9pbiIsImNoaWxkcmVuIiwiT2JqZWN0IiwiYXNzaWduIiwidHlwZSIsIm9uS2V5RG93biIsIm9uUmVtb3ZlIiwib25SZW1vdmVDbGljayIsIm9uUmVtb3ZlTW91c2VEb3duIiwic3Ryb2tlV2lkdGgiLCJjb2xvciIsInBhbmVsTm9kZSIsIm1vZGFsIiwiaW5pdGlhbEZvY3VzIiwicmV0dXJuRm9jdXMiLCJhY3RpdmVEZXNjZW5kYW50IiwiZW1wdHkiLCJmbGF0SW5kZXgiLCJtYXAiLCJncm91cCIsImdyb3VwTGFiZWwiLCJzdHJvbmciLCJvcHRpb25GbGF0SW5kZXgiLCJzZWxlY3RlZCIsImFjdGl2ZSIsIm9wdGlvbk1ldGEiLCJyb2xlIiwib25DbGljayIsIm9uTW91c2VFbnRlciIsImNvbnRlbnQiLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxTQUFTQSxHQUFHLElBQUlDLElBQUksRUFBRUMsSUFBSSxJQUFJQyxLQUFLLFFBQVEsbUJBQW1CO0FDQTlELFNBQ0VDLG9CQUFvQixFQUNwQkMsY0FBYyxFQUNkQyxlQUFlLEVBQ2ZDLGlCQUFpQixFQUNqQkMsWUFBWSxRQUNQLG9CQUFvQjtBQUMzQixTQUFTQyxJQUFJLEVBQUVDLFNBQVMsRUFBRUMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDekUsT0FBT0Msa0JBQWtCLE1BQU0sa0NBQWtDO0FBQ2pFLE9BQU9DLGdCQUFnQixNQUFNLGdDQUFnQztBQUM3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bnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IEZsb2F0aW5nRm9jdXNNYW5hZ2VyLCBGbG9hdGluZ1BvcnRhbCwgdXNlSW50ZXJhY3Rpb25zLCB1c2VMaXN0TmF2aWdhdGlvbiwgdXNlVHlwZWFoZWFkLCB9IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdCc7XG5pbXBvcnQgeyBtZW1vLCB1c2VFZmZlY3QsIHVzZUlkLCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUNvbnRyb2xsZWRTdGF0ZSBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUNvbnRyb2xsZWRTdGF0ZSc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHsgdXNlRm9ybUNvbnRyb2xTaXplIH0gZnJvbSAnLi4vRm9ybUxheW91dC9jb250ZXh0JztcbmltcG9ydCB7IEljb25zIH0gZnJvbSAnLi4vSWNvbnMnO1xuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJy4uL1NwaW5uZXInO1xuaW1wb3J0IHsgVHlwb2dyYXBoeUJvZHksIFR5cG9ncmFwaHlMYWJlbCB9IGZyb20gJy4uL1R5cG9ncmFwaHknO1xuaW1wb3J0IHsgam9pbkNscywgZGVmYXVsdCBhcyByb290Q2xhc3NuYW1lcyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IFNlbGVjdEZpZWxkU2hlbGwgZnJvbSAnLi9TZWxlY3RGaWVsZFNoZWxsJztcbmltcG9ydCBTZWxlY3RPcHRpb25Db250ZW50IGZyb20gJy4vU2VsZWN0T3B0aW9uQ29udGVudCc7XG5pbXBvcnQgU2VsZWN0U2VhcmNoQ29udHJvbCBmcm9tICcuL1NlbGVjdFNlYXJjaENvbnRyb2wnO1xuaW1wb3J0IFNlbGVjdFZhbHVlQ29udGVudCBmcm9tICcuL1NlbGVjdFZhbHVlQ29udGVudCc7XG5pbXBvcnQgeyB1c2VTZWxlY3RTaGVsbCB9IGZyb20gJy4vdXNlU2VsZWN0U2hlbGwnO1xuaW1wb3J0IHsgS0VZQk9BUkQsIFNFTEVDVF9UWVBPR1JBUEhZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZXh0cmFjdE9wdGlvblRleHQsIGZpbHRlck9wdGlvbkdyb3VwcywgZmxhdHRlbk9wdGlvbkdyb3VwcywgZ2V0TXVsdGlwbGVWYWx1ZSwgZ2V0Rm9udFNpemUsIGdldE9wdGlvbnNCeVZhbHVlcywgZ2V0U2VsZWN0ZWRPcHRpb25zLCBpc09wdGlvblNlbGVjdGVkLCBub3JtYWxpemVTaXplLCBub3JtYWxpemVPcHRpb25Hcm91cHMsIHJlbW92ZU11bHRpcGxlVmFsdWUsIHRvZ2dsZU11bHRpcGxlVmFsdWUsIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgJy4vc3R5bGUnO1xuY29uc3QgREVGQVVMVF9NQVhfSEVJR0hUID0gMzIwO1xuZXhwb3J0IGNvbnN0IFNlbGVjdCA9IChwcm9wcykgPT4ge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCB7IGNsYXNzTmFtZSA9ICcnLCBwcmVmaXhDbHMgPSAnc2VsZWN0Jywgc3R5bGUsIGlkLCBuYW1lLCAnYXJpYS1sYWJlbCc6IGFyaWFMYWJlbCwgJ2FyaWEtbGFiZWxsZWRieSc6IGFyaWFMYWJlbGxlZEJ5LCBwbGFjZWhvbGRlciA9ICdWYWx1ZScsIG9wdGlvbnMgPSBbXSwgdmFsdWUsIGRlZmF1bHRWYWx1ZSwgc2l6ZTogc2l6ZVByb3AsIHN0YXR1cyA9ICdkZWZhdWx0JywgdmFyaWFudCA9ICdmaWxsJywgZGlzYWJsZWQ6IGRpc2FibGVkUHJvcCA9IGZhbHNlLCByZWFkT25seSA9IGZhbHNlLCBsb2FkaW5nID0gZmFsc2UsIG11bHRpcGxlID0gZmFsc2UsIG1heFZpc2libGVWYWx1ZXMsIHNlYXJjaGFibGUgPSBmYWxzZSwgc2VhcmNoUGxhY2Vob2xkZXIgPSAnU2VhcmNoJywgc2VhcmNoVmFsdWUsIGRlZmF1bHRTZWFyY2hWYWx1ZSA9ICcnLCBmaWx0ZXJJbnB1dEF1dG9Gb2N1cyA9IHRydWUsIGxhYmVsLCBsYWJlbENsYXNzTmFtZSwgaW5mbywgZGVzY3JpcHRpb24sIGZlZWRiYWNrLCByZXF1aXJlZCA9IHRydWUsIHByZWZpeCwgZW1wdHlDb250ZW50ID0gJ05vIG9wdGlvbnMnLCBwYW5lbEhlYWRlciwgcGFuZWxGb290ZXIsIG9wZW4sIGRlZmF1bHRPcGVuID0gZmFsc2UsIHBvcnRhbCA9IHRydWUsIGFsbG93RGVzZWxlY3QgPSBmYWxzZSwgcGFuZWxDbGFzc05hbWUsIG9wdGlvbkNsYXNzTmFtZSwgZ3JvdXBMYWJlbENsYXNzTmFtZSwgbGlzdE1heEhlaWdodCA9IERFRkFVTFRfTUFYX0hFSUdIVCwgb2Zmc2V0LCBhbmltYXRpb24sIG9uQ2hhbmdlLCBvbk9wZW5DaGFuZ2UsIG9uU2VhcmNoQ2hhbmdlLCBvbkJsdXIsIGZpbHRlck9wdGlvbiwgcmVuZGVyT3B0aW9uLCByZW5kZXJPcHRpb25Db250ZW50LCByZW5kZXJWYWx1ZSwgcmVmLCB9ID0gcHJvcHM7XG4gICAgLy8gQmFyZS1jb250cm9sIHNpemUgZGVmYXVsdDogYW4gZXhwbGljaXQgYHNpemVgIHdpbnM7IGluc2lkZSBhIEZvcm1MYXlvdXRcbiAgICAvLyB0aGUgdmFyaWFudCdzIGNvbnRyb2xTaXplIGFwcGxpZXM7IGVsc2V3aGVyZSAnbGFyZ2UnLlxuICAgIGNvbnN0IGNvbnRleHRTaXplID0gdXNlRm9ybUNvbnRyb2xTaXplKCk7XG4gICAgY29uc3Qgc2l6ZSA9IChfYSA9IHNpemVQcm9wICE9PSBudWxsICYmIHNpemVQcm9wICE9PSB2b2lkIDAgPyBzaXplUHJvcCA6IGNvbnRleHRTaXplKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnbGFyZ2UnO1xuICAgIGNvbnN0IGRpc2FibGVkID0gZGlzYWJsZWRQcm9wIHx8IGxvYWRpbmc7XG4gICAgY29uc3QgaW50ZXJhY3RpdmUgPSAhZGlzYWJsZWQgJiYgIXJlYWRPbmx5O1xuICAgIGNvbnN0IGNsYXNzZXMgPSByb290Q2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIGNvbnN0IGF1dG9JZCA9IHVzZUlkKCk7XG4gICAgY29uc3QgdHJpZ2dlcklkID0gaWQgIT09IG51bGwgJiYgaWQgIT09IHZvaWQgMCA/IGlkIDogYXV0b0lkO1xuICAgIGNvbnN0IGxhYmVsSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IGZlZWRiYWNrSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IG9wdGlvbklkUHJlZml4ID0gdXNlSWQoKTtcbiAgICBjb25zdCBbaW5uZXJWYWx1ZSwgc2V0SW5uZXJWYWx1ZV0gPSB1c2VDb250cm9sbGVkU3RhdGUoZGVmYXVsdFZhbHVlICE9PSBudWxsICYmIGRlZmF1bHRWYWx1ZSAhPT0gdm9pZCAwID8gZGVmYXVsdFZhbHVlIDogKG11bHRpcGxlID8gW10gOiB1bmRlZmluZWQpLCB2YWx1ZSk7XG4gICAgY29uc3QgW2lubmVyU2VhcmNoVmFsdWUsIHNldElubmVyU2VhcmNoVmFsdWVdID0gdXNlQ29udHJvbGxlZFN0YXRlKGRlZmF1bHRTZWFyY2hWYWx1ZSwgc2VhcmNoVmFsdWUpO1xuICAgIGNvbnN0IFthY3RpdmVJbmRleCwgc2V0QWN0aXZlSW5kZXhdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3Qgbm9ybWFsaXplZFNpemUgPSBub3JtYWxpemVTaXplKHNpemUpO1xuICAgIGNvbnN0IGFsbE9wdGlvbkdyb3VwcyA9IHVzZU1lbW8oKCkgPT4gbm9ybWFsaXplT3B0aW9uR3JvdXBzKG9wdGlvbnMpLCBbb3B0aW9uc10pO1xuICAgIGNvbnN0IGFsbEZsYXRPcHRpb25zID0gdXNlTWVtbygoKSA9PiBmbGF0dGVuT3B0aW9uR3JvdXBzKGFsbE9wdGlvbkdyb3VwcyksIFthbGxPcHRpb25Hcm91cHNdKTtcbiAgICBjb25zdCB2aXNpYmxlT3B0aW9uR3JvdXBzID0gdXNlTWVtbygoKSA9PiAoc2VhcmNoYWJsZVxuICAgICAgICA/IGZpbHRlck9wdGlvbkdyb3VwcyhhbGxPcHRpb25Hcm91cHMsIGlubmVyU2VhcmNoVmFsdWUsIGZpbHRlck9wdGlvbilcbiAgICAgICAgOiBhbGxPcHRpb25Hcm91cHMpLCBbYWxsT3B0aW9uR3JvdXBzLCBmaWx0ZXJPcHRpb24sIGlubmVyU2VhcmNoVmFsdWUsIHNlYXJjaGFibGVdKTtcbiAgICBjb25zdCB2aXNpYmxlRmxhdE9wdGlvbnMgPSB1c2VNZW1vKCgpID0+IGZsYXR0ZW5PcHRpb25Hcm91cHModmlzaWJsZU9wdGlvbkdyb3VwcyksIFt2aXNpYmxlT3B0aW9uR3JvdXBzXSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRPcHRpb25zID0gdXNlTWVtbygoKSA9PiBnZXRTZWxlY3RlZE9wdGlvbnMoYWxsRmxhdE9wdGlvbnMsIGlubmVyVmFsdWUsIG11bHRpcGxlKSwgW2FsbEZsYXRPcHRpb25zLCBpbm5lclZhbHVlLCBtdWx0aXBsZV0pO1xuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1hdGNoZWRJbmRleCA9IHZpc2libGVGbGF0T3B0aW9ucy5maW5kSW5kZXgoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSBzZWxlY3RlZE9wdGlvbnNbMF0udmFsdWUpO1xuICAgICAgICByZXR1cm4gbWF0Y2hlZEluZGV4ID49IDAgPyBtYXRjaGVkSW5kZXggOiBudWxsO1xuICAgIH0sIFtzZWxlY3RlZE9wdGlvbnMsIHZpc2libGVGbGF0T3B0aW9uc10pO1xuICAgIGNvbnN0IGhhc1NlbGVjdGlvbiA9IHNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwO1xuICAgIGNvbnN0IGxpc3RSZWYgPSB1c2VSZWYoW10pO1xuICAgIGNvbnN0IGxpc3RDb250ZW50UmVmID0gdXNlUmVmKFtdKTtcbiAgICBjb25zdCBmbG9hdGluZ1JlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCB0cmlnZ2VyUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHNlYXJjaElucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGhhbmRsZVRyaWdnZXJSZWYgPSB1c2VFdmVudENhbGxiYWNrKChub2RlKSA9PiB7XG4gICAgICAgIHRyaWdnZXJSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICAgIHJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHsgaXNPcGVuOiBpbm5lck9wZW4sIHNldE9wZW46IGhhbmRsZU9wZW5DaGFuZ2UsIHJlZnMsIGNvbnRleHQsIGZsb2F0aW5nU3R5bGVzLCB0cmFuc2l0aW9uU3R5bGVzLCBpc01vdW50ZWQsIGJhc2VJbnRlcmFjdGlvbnMsIH0gPSB1c2VTZWxlY3RTaGVsbCh7XG4gICAgICAgIG9wZW4sXG4gICAgICAgIGRlZmF1bHRPcGVuLFxuICAgICAgICBvbk9wZW5DaGFuZ2UsXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICByZWFkT25seSxcbiAgICAgICAgbGlzdE1heEhlaWdodCxcbiAgICAgICAgYW5pbWF0aW9uLFxuICAgICAgICBvZmZzZXQsXG4gICAgfSk7XG4gICAgY29uc3Qgc2V0UmVmZXJlbmNlID0gdXNlRXZlbnRDYWxsYmFjaygobm9kZSkgPT4ge1xuICAgICAgICByZWZzLnNldFJlZmVyZW5jZShub2RlKTtcbiAgICAgICAgaGFuZGxlVHJpZ2dlclJlZihub2RlKTtcbiAgICB9KTtcbiAgICBjb25zdCBzZXRGbG9hdGluZyA9IHVzZUV2ZW50Q2FsbGJhY2soKG5vZGUpID0+IHtcbiAgICAgICAgcmVmcy5zZXRGbG9hdGluZyhub2RlKTtcbiAgICAgICAgZmxvYXRpbmdSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgfSk7XG4gICAgY29uc3QgbGlzdE5hdmlnYXRpb24gPSB1c2VMaXN0TmF2aWdhdGlvbihjb250ZXh0LCB7XG4gICAgICAgIGxpc3RSZWYsXG4gICAgICAgIGFjdGl2ZUluZGV4LFxuICAgICAgICBzZWxlY3RlZEluZGV4LFxuICAgICAgICBvbk5hdmlnYXRlOiBzZXRBY3RpdmVJbmRleCxcbiAgICAgICAgZW5hYmxlZDogaW5uZXJPcGVuLFxuICAgICAgICBsb29wOiB0cnVlLFxuICAgICAgICB2aXJ0dWFsOiBzZWFyY2hhYmxlLFxuICAgIH0pO1xuICAgIGNvbnN0IHR5cGVhaGVhZCA9IHVzZVR5cGVhaGVhZChjb250ZXh0LCB7XG4gICAgICAgIGxpc3RSZWY6IGxpc3RDb250ZW50UmVmLFxuICAgICAgICBhY3RpdmVJbmRleCxcbiAgICAgICAgc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgZW5hYmxlZDogaW5uZXJPcGVuICYmICFzZWFyY2hhYmxlLFxuICAgICAgICBvbk1hdGNoOiBzZXRBY3RpdmVJbmRleCxcbiAgICB9KTtcbiAgICBjb25zdCB7IGdldFJlZmVyZW5jZVByb3BzLCBnZXRGbG9hdGluZ1Byb3BzLCBnZXRJdGVtUHJvcHMgfSA9IHVzZUludGVyYWN0aW9ucyhbXG4gICAgICAgIC4uLmJhc2VJbnRlcmFjdGlvbnMsXG4gICAgICAgIGxpc3ROYXZpZ2F0aW9uLFxuICAgICAgICB0eXBlYWhlYWQsXG4gICAgXSk7XG4gICAgY29uc3QgZmlyc3RFbmFibGVkSW5kZXggPSB1c2VNZW1vKCgpID0+IHZpc2libGVGbGF0T3B0aW9ucy5maW5kSW5kZXgoKG9wdGlvbikgPT4gIW9wdGlvbi5kaXNhYmxlZCksIFt2aXNpYmxlRmxhdE9wdGlvbnNdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIWlubmVyT3Blbikge1xuICAgICAgICAgICAgc2V0QWN0aXZlSW5kZXgoc2VsZWN0ZWRJbmRleCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0QWN0aXZlSW5kZXgoKHByZXYpID0+IHtcbiAgICAgICAgICAgIGlmIChwcmV2ICE9PSBudWxsICYmIHZpc2libGVGbGF0T3B0aW9uc1twcmV2XSAmJiAhdmlzaWJsZUZsYXRPcHRpb25zW3ByZXZdLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHZpc2libGVGbGF0T3B0aW9uc1tzZWxlY3RlZEluZGV4XSAmJlxuICAgICAgICAgICAgICAgICF2aXNpYmxlRmxhdE9wdGlvbnNbc2VsZWN0ZWRJbmRleF0uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRJbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmaXJzdEVuYWJsZWRJbmRleCA+PSAwID8gZmlyc3RFbmFibGVkSW5kZXggOiBudWxsO1xuICAgICAgICB9KTtcbiAgICB9LCBbZmlyc3RFbmFibGVkSW5kZXgsIGlubmVyT3Blbiwgc2VsZWN0ZWRJbmRleCwgdmlzaWJsZUZsYXRPcHRpb25zXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoIWlubmVyT3BlbiB8fCBhY3RpdmVJbmRleCA9PT0gbnVsbCB8fCBzZWFyY2hhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgKF9hID0gbGlzdFJlZi5jdXJyZW50W2FjdGl2ZUluZGV4XSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICB9LCBbYWN0aXZlSW5kZXgsIGlubmVyT3Blbiwgc2VhcmNoYWJsZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGxpc3RSZWYuY3VycmVudCA9IGxpc3RSZWYuY3VycmVudC5zbGljZSgwLCB2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoKTtcbiAgICAgICAgbGlzdENvbnRlbnRSZWYuY3VycmVudCA9IGxpc3RDb250ZW50UmVmLmN1cnJlbnQuc2xpY2UoMCwgdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aCk7XG4gICAgfSwgW3Zpc2libGVGbGF0T3B0aW9ucy5sZW5ndGhdKTtcbiAgICBjb25zdCBzZXRTZWFyY2hJbnB1dFJlZiA9IHVzZUV2ZW50Q2FsbGJhY2soKG5vZGUpID0+IHtcbiAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgIGlmIChub2RlICYmIGlubmVyT3BlbiAmJiBmaWx0ZXJJbnB1dEF1dG9Gb2N1cykge1xuICAgICAgICAgICAgbm9kZS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBub3RpZnlCbHVySWZPdXRzaWRlID0gdXNlRXZlbnRDYWxsYmFjaygocmVsYXRlZFRhcmdldCwgZXZlbnQpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgY29uc3QgbmV4dFRhcmdldCA9IHJlbGF0ZWRUYXJnZXQ7XG4gICAgICAgIGNvbnN0IHdpdGhpblRyaWdnZXIgPSAhIShuZXh0VGFyZ2V0ICYmICgoX2EgPSB0cmlnZ2VyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jb250YWlucyhuZXh0VGFyZ2V0KSkpO1xuICAgICAgICBjb25zdCB3aXRoaW5GbG9hdGluZyA9ICEhKG5leHRUYXJnZXQgJiYgKChfYiA9IGZsb2F0aW5nUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jb250YWlucyhuZXh0VGFyZ2V0KSkpO1xuICAgICAgICBpZiAoIXdpdGhpblRyaWdnZXIgJiYgIXdpdGhpbkZsb2F0aW5nKSB7XG4gICAgICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlVHJpZ2dlckJsdXIgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBub3RpZnlCbHVySWZPdXRzaWRlKGV2ZW50LnJlbGF0ZWRUYXJnZXQsIGV2ZW50KTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVPcHRpb25CbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgbm90aWZ5Qmx1cklmT3V0c2lkZShldmVudC5yZWxhdGVkVGFyZ2V0LCBldmVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgY29tbWl0Q2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygobmV4dFZhbHVlLCBuZXh0T3B0aW9uKSA9PiB7XG4gICAgICAgIHNldElubmVyVmFsdWUobmV4dFZhbHVlKTtcbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKG5leHRWYWx1ZSwgbmV4dE9wdGlvbiwgbmFtZSk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU2VsZWN0T3B0aW9uID0gdXNlRXZlbnRDYWxsYmFjaygob3B0aW9uKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGlmIChvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRWYWx1ZSA9IHRvZ2dsZU11bHRpcGxlVmFsdWUoaW5uZXJWYWx1ZSwgb3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRPcHRpb25zID0gZ2V0T3B0aW9uc0J5VmFsdWVzKGFsbEZsYXRPcHRpb25zLCBuZXh0VmFsdWUpO1xuICAgICAgICAgICAgY29tbWl0Q2hhbmdlKG5leHRWYWx1ZSwgbmV4dE9wdGlvbnMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhbGxvd0Rlc2VsZWN0ICYmIGlubmVyVmFsdWUgPT09IG9wdGlvbi52YWx1ZSkge1xuICAgICAgICAgICAgY29tbWl0Q2hhbmdlKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICAgICAgb25CbHVyID09PSBudWxsIHx8IG9uQmx1ciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25CbHVyKCk7XG4gICAgICAgICAgICAoX2EgPSB0cmlnZ2VyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29tbWl0Q2hhbmdlKG9wdGlvbi52YWx1ZSwgb3B0aW9uKTtcbiAgICAgICAgaGFuZGxlT3BlbkNoYW5nZShmYWxzZSk7XG4gICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cigpO1xuICAgICAgICAoX2IgPSB0cmlnZ2VyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlUmVtb3ZlU2VsZWN0ZWRWYWx1ZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG9wdGlvblZhbHVlKSA9PiB7XG4gICAgICAgIGlmICghbXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWdldE11bHRpcGxlVmFsdWUoaW5uZXJWYWx1ZSkuaW5jbHVkZXMob3B0aW9uVmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV4dFZhbHVlID0gcmVtb3ZlTXVsdGlwbGVWYWx1ZShpbm5lclZhbHVlLCBvcHRpb25WYWx1ZSk7XG4gICAgICAgIGNvbnN0IG5leHRPcHRpb25zID0gZ2V0T3B0aW9uc0J5VmFsdWVzKGFsbEZsYXRPcHRpb25zLCBuZXh0VmFsdWUpO1xuICAgICAgICBjb21taXRDaGFuZ2UobmV4dFZhbHVlLCBuZXh0T3B0aW9ucyk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlVHJpZ2dlcktleURvd24gPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoIWludGVyYWN0aXZlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuRU5URVIgfHwgZXZlbnQua2V5ID09PSBLRVlCT0FSRC5TUEFDRSkge1xuICAgICAgICAgICAgaWYgKGlubmVyT3BlbiAmJlxuICAgICAgICAgICAgICAgIGFjdGl2ZUluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgdmlzaWJsZUZsYXRPcHRpb25zW2FjdGl2ZUluZGV4XSAmJlxuICAgICAgICAgICAgICAgICF2aXNpYmxlRmxhdE9wdGlvbnNbYWN0aXZlSW5kZXhdLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb24odmlzaWJsZUZsYXRPcHRpb25zW2FjdGl2ZUluZGV4XSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UoIWlubmVyT3Blbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuQVJST1dfRE9XTiB8fCBldmVudC5rZXkgPT09IEtFWUJPQVJELkFSUk9XX1VQKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKCFpbm5lck9wZW4pIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVPcGVuQ2hhbmdlKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlSXRlbU1vdXNlRW50ZXIgPSB1c2VFdmVudENhbGxiYWNrKChpbmRleCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICghKChfYSA9IHZpc2libGVGbGF0T3B0aW9uc1tpbmRleF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kaXNhYmxlZCkpIHtcbiAgICAgICAgICAgIHNldEFjdGl2ZUluZGV4KGluZGV4KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRhZ1JlbW92ZU1vdXNlRG93biA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRhZ1JlbW92ZUNsaWNrID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU2VhcmNoQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIG5vdGlmeUJsdXJJZk91dHNpZGUoZXZlbnQucmVsYXRlZFRhcmdldCwgZXZlbnQpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaENoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG5leHRWYWx1ZSwgX2V2ZW50KSA9PiB7XG4gICAgICAgIHNldElubmVyU2VhcmNoVmFsdWUobmV4dFZhbHVlKTtcbiAgICAgICAgb25TZWFyY2hDaGFuZ2UgPT09IG51bGwgfHwgb25TZWFyY2hDaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uU2VhcmNoQ2hhbmdlKG5leHRWYWx1ZSk7XG4gICAgfSk7XG4gICAgY29uc3QgZmluZEVuYWJsZWRJbmRleCA9IHVzZUV2ZW50Q2FsbGJhY2soKGN1cnJlbnQsIGRpcmVjdGlvbikgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IHZpc2libGVGbGF0T3B0aW9ucy5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gY3VycmVudCAhPT0gbnVsbCAmJiBjdXJyZW50ICE9PSB2b2lkIDAgPyBjdXJyZW50IDogKGRpcmVjdGlvbiA9PT0gMSA/IC0xIDogbGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgc3RlcCA9IDE7IHN0ZXAgPD0gbGVuZ3RoOyBzdGVwICs9IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZSA9ICgoc3RhcnQgKyBkaXJlY3Rpb24gKiBzdGVwKSAlIGxlbmd0aCArIGxlbmd0aCkgJSBsZW5ndGg7XG4gICAgICAgICAgICBpZiAoISgoX2EgPSB2aXNpYmxlRmxhdE9wdGlvbnNbY2FuZGlkYXRlXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRpc2FibGVkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU2VhcmNoS2V5RG93biA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuQVJST1dfRE9XTikge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGNvbnN0IG5leHQgPSBmaW5kRW5hYmxlZEluZGV4KGFjdGl2ZUluZGV4LCAxKTtcbiAgICAgICAgICAgIGlmIChuZXh0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc2V0QWN0aXZlSW5kZXgobmV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuQVJST1dfVVApIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb25zdCBwcmV2ID0gZmluZEVuYWJsZWRJbmRleChhY3RpdmVJbmRleCwgLTEpO1xuICAgICAgICAgICAgaWYgKHByZXYgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBzZXRBY3RpdmVJbmRleChwcmV2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5FTlRFUikge1xuICAgICAgICAgICAgaWYgKGFjdGl2ZUluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgdmlzaWJsZUZsYXRPcHRpb25zW2FjdGl2ZUluZGV4XSAmJlxuICAgICAgICAgICAgICAgICF2aXNpYmxlRmxhdE9wdGlvbnNbYWN0aXZlSW5kZXhdLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb24odmlzaWJsZUZsYXRPcHRpb25zW2FjdGl2ZUluZGV4XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuRVNDQVBFKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaGFuZGxlT3BlbkNoYW5nZShmYWxzZSk7XG4gICAgICAgICAgICAoX2EgPSB0cmlnZ2VyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCByZW5kZXJWYWx1ZU1ldGEgPSB7XG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICByZWFkT25seSxcbiAgICAgICAgbXVsdGlwbGUsXG4gICAgICAgIG1heFZpc2libGVWYWx1ZXMsXG4gICAgICAgIG9wZW46IGlubmVyT3BlbixcbiAgICAgICAgcGxhY2Vob2xkZXI6ICFoYXNTZWxlY3Rpb24sXG4gICAgICAgIHNlbGVjdGVkT3B0aW9ucyxcbiAgICAgICAgc2l6ZTogbm9ybWFsaXplZFNpemUsXG4gICAgICAgIGZvbnRTaXplOiBnZXRGb250U2l6ZShub3JtYWxpemVkU2l6ZSksXG4gICAgfTtcbiAgICBjb25zdCB2YWx1ZUxhYmVsQ2xhc3MgPSBoYXNTZWxlY3Rpb24gPyAndmFsdWUnIDogJ3BsYWNlaG9sZGVyJztcbiAgICBjb25zdCBpc011bHRpcGxlVmFsdWVGaWxsZWQgPSAobXVsdGlwbGUgJiZcbiAgICAgICAgaGFzU2VsZWN0aW9uICYmXG4gICAgICAgIG1heFZpc2libGVWYWx1ZXMgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAvLyBBIGN1c3RvbSBgcmVuZGVyVmFsdWVgIHByb2R1Y2VzIGl0cyBvd24gc2luZ2xlLWxpbmUgc3VtbWFyeSwgc28gdGhlXG4gICAgICAgIC8vIG11bHRpLXZhbHVlIGNoaXAgbGF5b3V0IChoZWlnaHQ6YXV0byArIHZlcnRpY2FsIHBhZGRpbmcgKyBmbGV4LXdyYXApXG4gICAgICAgIC8vIG11c3Qgbm90IGtpY2sgaW4gYW5kIGluZmxhdGUgdGhlIHRyaWdnZXIgaGVpZ2h0LlxuICAgICAgICAhcmVuZGVyVmFsdWUpO1xuICAgIGNvbnN0IHRyaWdnZXJDbGFzc05hbWUgPSBjbGFzc2VzKCd0cmlnZ2VyJywgam9pbkNscyhjbGFzc2VzKGB0cmlnZ2VyLSR7bm9ybWFsaXplZFNpemV9YCksIGNsYXNzZXMoYHRyaWdnZXItJHt2YXJpYW50fWApLCBpbm5lck9wZW4gJiYgY2xhc3NlcygndHJpZ2dlci1vcGVuJyksIGlzTXVsdGlwbGVWYWx1ZUZpbGxlZCAmJiBjbGFzc2VzKCd0cmlnZ2VyLW11bHRpcGxlLWZpbGxlZCcpLCBoYXNTZWxlY3Rpb24gPyBjbGFzc2VzKCd0cmlnZ2VyLWZpbGxlZCcpIDogY2xhc3NlcygndHJpZ2dlci1wbGFjZWhvbGRlcicpLCBzdGF0dXMgIT09ICdkZWZhdWx0JyAmJiBjbGFzc2VzKGB0cmlnZ2VyLSR7c3RhdHVzfWApLCBkaXNhYmxlZCAmJiBjbGFzc2VzKCd0cmlnZ2VyLWRpc2FibGVkJyksIHJlYWRPbmx5ICYmICFkaXNhYmxlZCAmJiBjbGFzc2VzKCd0cmlnZ2VyLXJlYWRvbmx5JykpKTtcbiAgICBjb25zdCBpY29uU2l6ZSA9IG5vcm1hbGl6ZWRTaXplID09PSAnbGFyZ2UnID8gMjAgOiAxNjtcbiAgICBjb25zdCBhY3RpdmVPcHRpb25JZCA9IHNlYXJjaGFibGUgJiYgaW5uZXJPcGVuICYmIGFjdGl2ZUluZGV4ICE9PSBudWxsXG4gICAgICAgID8gYCR7b3B0aW9uSWRQcmVmaXh9LSR7YWN0aXZlSW5kZXh9YFxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBmbG9hdGluZ0FyaWFMYWJlbGxlZEJ5ID0gYXJpYUxhYmVsbGVkQnkgIT09IG51bGwgJiYgYXJpYUxhYmVsbGVkQnkgIT09IHZvaWQgMCA/IGFyaWFMYWJlbGxlZEJ5IDogKGxhYmVsID8gbGFiZWxJZCA6IHVuZGVmaW5lZCk7XG4gICAgY29uc3QgZGVzY3JpYmVkQnlJZHMgPSBbXG4gICAgICAgIGRlc2NyaXB0aW9uID8gZGVzY3JpcHRpb25JZCA6IG51bGwsXG4gICAgICAgIGZlZWRiYWNrID8gZmVlZGJhY2tJZCA6IG51bGwsXG4gICAgXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpIHx8IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gKF9qc3hzKFNlbGVjdEZpZWxkU2hlbGwsIHsgY2xhc3NlczogY2xhc3NlcywgY2xhc3NOYW1lOiBjbGFzc05hbWUsIHNpemU6IG5vcm1hbGl6ZWRTaXplLCB2YXJpYW50OiB2YXJpYW50LCBzdGF0dXM6IHN0YXR1cywgZGlzYWJsZWQ6IGRpc2FibGVkLCByZWFkT25seTogcmVhZE9ubHksIGxvYWRpbmc6IGxvYWRpbmcsIGxhYmVsOiBsYWJlbCwgbGFiZWxDbGFzc05hbWU6IGxhYmVsQ2xhc3NOYW1lLCBpbmZvOiBpbmZvLCBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sIGZlZWRiYWNrOiBmZWVkYmFjaywgcmVxdWlyZWQ6IHJlcXVpcmVkLCBsYWJlbElkOiBsYWJlbElkLCBkZXNjcmlwdGlvbklkOiBkZXNjcmlwdGlvbklkLCBmZWVkYmFja0lkOiBmZWVkYmFja0lkLCBjaGlsZHJlbjogW19qc3hzKFwiYnV0dG9uXCIsIE9iamVjdC5hc3NpZ24oe30sIGdldFJlZmVyZW5jZVByb3BzKHtcbiAgICAgICAgICAgICAgICByZWY6IHNldFJlZmVyZW5jZSxcbiAgICAgICAgICAgICAgICBpZDogdHJpZ2dlcklkLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgJ2FyaWEtcmVhZG9ubHknOiByZWFkT25seSB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0cmlnZ2VyQ2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgIG9uS2V5RG93bjogaGFuZGxlVHJpZ2dlcktleURvd24sXG4gICAgICAgICAgICAgICAgb25CbHVyOiBoYW5kbGVUcmlnZ2VyQmx1cixcbiAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbCc6IGFyaWFMYWJlbCxcbiAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogZmxvYXRpbmdBcmlhTGFiZWxsZWRCeSxcbiAgICAgICAgICAgICAgICAnYXJpYS1kZXNjcmliZWRieSc6IGRlc2NyaWJlZEJ5SWRzLFxuICAgICAgICAgICAgfSksIHsgY2hpbGRyZW46IFtfanN4cyhcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2NvbnRlbnQnKSwgY2hpbGRyZW46IFtwcmVmaXggJiYgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3ByZWZpeCcpLCBjaGlsZHJlbjogcHJlZml4IH0pLCBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcyh2YWx1ZUxhYmVsQ2xhc3MsIGpvaW5DbHMoY2xhc3NlcyhgJHt2YWx1ZUxhYmVsQ2xhc3N9LSR7bm9ybWFsaXplZFNpemV9YCksIGlzTXVsdGlwbGVWYWx1ZUZpbGxlZCAmJiBjbGFzc2VzKGAke3ZhbHVlTGFiZWxDbGFzc30tbXVsdGlwbGVgKSwgZGlzYWJsZWQgJiYgY2xhc3NlcyhgJHt2YWx1ZUxhYmVsQ2xhc3N9LWRpc2FibGVkYCkpKSwgY2hpbGRyZW46IF9qc3goU2VsZWN0VmFsdWVDb250ZW50LCB7IGNsYXNzZXM6IGNsYXNzZXMsIGhhc1NlbGVjdGlvbjogaGFzU2VsZWN0aW9uLCBtdWx0aXBsZTogbXVsdGlwbGUsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgcmVuZGVyVmFsdWU6IHJlbmRlclZhbHVlLCByZW5kZXJWYWx1ZU1ldGE6IHJlbmRlclZhbHVlTWV0YSwgc2VsZWN0ZWRPcHRpb25zOiBzZWxlY3RlZE9wdGlvbnMsIG1heFZpc2libGVWYWx1ZXM6IG1heFZpc2libGVWYWx1ZXMsIG9uUmVtb3ZlOiBoYW5kbGVSZW1vdmVTZWxlY3RlZFZhbHVlLCBvblJlbW92ZUNsaWNrOiBoYW5kbGVUYWdSZW1vdmVDbGljaywgb25SZW1vdmVNb3VzZURvd246IGhhbmRsZVRhZ1JlbW92ZU1vdXNlRG93biB9KSB9KV0gfSksIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdpY29uJyksIGNoaWxkcmVuOiBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfanN4KFNwaW5uZXIsIHsgc2l6ZTogaWNvblNpemUsIHN0cm9rZVdpZHRoOiAyIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiByZWFkT25seVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfanN4KEljb25zLCB7IG5hbWU6IGlubmVyT3BlbiA/ICdjaGV2cm9uVXAnIDogJ2NoZXZyb25Eb3duJywgc2l6ZTogaWNvblNpemUsIGNvbG9yOiBcImN1cnJlbnRDb2xvclwiIH0pIH0pXSB9KSksIGlzTW91bnRlZCAmJiBpbnRlcmFjdGl2ZSAmJiAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhbmVsTm9kZSA9IChfanN4KEZsb2F0aW5nRm9jdXNNYW5hZ2VyLCB7IGNvbnRleHQ6IGNvbnRleHQsIG1vZGFsOiBmYWxzZSwgaW5pdGlhbEZvY3VzOiAtMSwgcmV0dXJuRm9jdXM6IGZhbHNlLCBjaGlsZHJlbjogX2pzeHMoXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7fSwgZ2V0RmxvYXRpbmdQcm9wcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWY6IHNldEZsb2F0aW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBqb2luQ2xzKGNsYXNzZXMoJ3BhbmVsJyksIHBhbmVsQ2xhc3NOYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGZsb2F0aW5nU3R5bGVzKSwgdHJhbnNpdGlvblN0eWxlcyksXG4gICAgICAgICAgICAgICAgICAgIH0pLCB7IGNoaWxkcmVuOiBbc2VhcmNoYWJsZSAmJiAoX2pzeChTZWxlY3RTZWFyY2hDb250cm9sLCB7IHJlZjogc2V0U2VhcmNoSW5wdXRSZWYsIGNsYXNzZXM6IGNsYXNzZXMsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaXplPXtub3JtYWxpemVkU2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogXCJzbWFsbFwiLCBwbGFjZWhvbGRlcjogc2VhcmNoUGxhY2Vob2xkZXIsIHZhbHVlOiBpbm5lclNlYXJjaFZhbHVlLCBhY3RpdmVEZXNjZW5kYW50OiBhY3RpdmVPcHRpb25JZCwgb25CbHVyOiBoYW5kbGVTZWFyY2hCbHVyLCBvbkNoYW5nZTogaGFuZGxlU2VhcmNoQ2hhbmdlLCBvbktleURvd246IGhhbmRsZVNlYXJjaEtleURvd24gfSkpLCBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFuZWwtYm9keScpLCBjaGlsZHJlbjogW3BhbmVsSGVhZGVyICE9IG51bGwgJiYgKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsLWhlYWRlcicpLCBjaGlsZHJlbjogcGFuZWxIZWFkZXIgfSkpLCB2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoID09PSAwID8gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2VtcHR5JyksIGNoaWxkcmVuOiBfanN4KFR5cG9ncmFwaHlCb2R5LCB7IHNpemU6IFNFTEVDVF9UWVBPR1JBUEhZLmVtcHR5LnNpemUsIGNvbG9yOiBTRUxFQ1RfVFlQT0dSQVBIWS5lbXB0eS5jb2xvciwgY2hpbGRyZW46IGVtcHR5Q29udGVudCB9KSB9KSkgOiAoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmxhdEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmlzaWJsZU9wdGlvbkdyb3Vwcy5tYXAoKGdyb3VwKSA9PiAoX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2dyb3VwJyksIGNoaWxkcmVuOiBbZ3JvdXAubGFiZWwgJiYgKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2dyb3VwLWxhYmVsJywgZ3JvdXBMYWJlbENsYXNzTmFtZSksIGNoaWxkcmVuOiBfanN4KFR5cG9ncmFwaHlMYWJlbCwgeyBzaXplOiBTRUxFQ1RfVFlQT0dSQVBIWS5ncm91cExhYmVsLnNpemUsIHN0cm9uZzogdHJ1ZSwgY2hpbGRyZW46IGdyb3VwLmxhYmVsIH0pIH0pKSwgZ3JvdXAub3B0aW9ucy5tYXAoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbkZsYXRJbmRleCA9IGZsYXRJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGF0SW5kZXggKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9IGlzT3B0aW9uU2VsZWN0ZWQoaW5uZXJWYWx1ZSwgbXVsdGlwbGUsIG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlID0gYWN0aXZlSW5kZXggPT09IG9wdGlvbkZsYXRJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25NZXRhID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhIW9wdGlvbi5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IG9wdGlvbkZsYXRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW46IGlubmVyT3BlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBnZXRGb250U2l6ZShub3JtYWxpemVkU2l6ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0Q29udGVudFJlZi5jdXJyZW50W29wdGlvbkZsYXRJbmRleF0gPSBleHRyYWN0T3B0aW9uVGV4dChvcHRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoX2pzeChcImJ1dHRvblwiLCBPYmplY3QuYXNzaWduKHt9LCBnZXRJdGVtUHJvcHMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWYobm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFJlZi5jdXJyZW50W29wdGlvbkZsYXRJbmRleF0gPSBub2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYCR7b3B0aW9uSWRQcmVmaXh9LSR7b3B0aW9uRmxhdEluZGV4fWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlOiAnb3B0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzKCdvcHRpb24nLCBqb2luQ2xzKGFjdGl2ZSAmJiBjbGFzc2VzKCdvcHRpb24tYWN0aXZlJyksIHNlbGVjdGVkICYmIGNsYXNzZXMoJ29wdGlvbi1zZWxlY3RlZCcpLCBvcHRpb24uZGlzYWJsZWQgJiYgY2xhc3Nlcygnb3B0aW9uLWRpc2FibGVkJyksIG9wdGlvbkNsYXNzTmFtZSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogb3B0aW9uLmRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJpYS1zZWxlY3RlZCc6IHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb24ob3B0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyOiAoKSA9PiBoYW5kbGVJdGVtTW91c2VFbnRlcihvcHRpb25GbGF0SW5kZXgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6IGhhbmRsZU9wdGlvbkJsdXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHsgY2hpbGRyZW46IHJlbmRlck9wdGlvbiA/IChyZW5kZXJPcHRpb24ob3B0aW9uLCBvcHRpb25NZXRhKSkgOiAoX2pzeChTZWxlY3RPcHRpb25Db250ZW50LCB7IGNsYXNzZXM6IGNsYXNzZXMsIG9wdGlvbjogb3B0aW9uLCBzZWxlY3RlZDogc2VsZWN0ZWQsIHNpemU6IG5vcm1hbGl6ZWRTaXplLCBjb250ZW50OiByZW5kZXJPcHRpb25Db250ZW50ID09PSBudWxsIHx8IHJlbmRlck9wdGlvbkNvbnRlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlbmRlck9wdGlvbkNvbnRlbnQob3B0aW9uLCBvcHRpb25NZXRhKSB9KSkgfSksIGAke2dyb3VwLmtleX0tJHtvcHRpb24udmFsdWV9YCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSldIH0sIGdyb3VwLmtleSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCkpXSB9KSwgcGFuZWxGb290ZXIgIT0gbnVsbCAmJiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFuZWwtZm9vdGVyJyksIGNoaWxkcmVuOiBwYW5lbEZvb3RlciB9KSldIH0pKSB9KSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBvcnRhbCA/IF9qc3goRmxvYXRpbmdQb3J0YWwsIHsgY2hpbGRyZW46IHBhbmVsTm9kZSB9KSA6IHBhbmVsTm9kZTtcbiAgICAgICAgICAgIH0pKCldIH0pKTtcbn07XG5TZWxlY3QuZGlzcGxheU5hbWUgPSAnU2VsZWN0JztcbmV4cG9ydCBkZWZhdWx0IG1lbW8oU2VsZWN0KTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|