{"version":3,"file":"OrgSettingsAuthenticationSettingsSection.mjs","sources":["../../../../../../../../web/src/adminPortal/settings/OrgSettingsAuthenticationSettingsSection.tsx"],"sourcesContent":["import {\n  B2BAllowedAuthMethods,\n  B2BAllowedMFAMethods,\n  B2BOrganizationsUpdateOptions,\n  Organization,\n} from '@stytch/core/public';\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Alert } from '../components/Alert';\nimport { Checkbox } from '../components/Checkbox';\nimport { FlexBox } from '../components/FlexBox';\nimport { PaddingLeft } from '../components/PaddingLeft';\nimport { SettingsContainer, useSettingsContainer } from '../components/SettingsContainer';\nimport { SettingsSection } from '../components/SettingsSection';\nimport { Switch } from '../components/Switch';\nimport { Typography } from '../components/Typography';\nimport { arraysHaveSameContents } from '../utils/arraysHaveSameContents';\nimport { FormSectionBody } from '../utils/FormSectionBody';\nimport { useAdminPortalConfig } from '../utils/useAdminPortalConfig';\nimport { useAllowedAuthMethods } from '../utils/useAllowedAuthMethods';\nimport { useAllowedMfaMethods } from '../utils/useAllowedMfaMethods';\nimport { useFormState } from '../utils/useFormState';\nimport { useMutateOrganization } from '../utils/useMutateOrganization';\nimport { useRbac } from '../utils/useRbac';\nimport { useOrgSettingsRouterController } from './AdminPortalOrgRouter';\n\ninterface AuthSettingsFormState {\n  // Primary\n  authMethods: Organization['auth_methods'];\n  allowedAuthMethods: Organization['allowed_auth_methods'];\n  // Secondary\n  mfaPolicy: Organization['mfa_policy'];\n  mfaMethods: Organization['mfa_methods'];\n  allowedMfaMethods: Organization['allowed_mfa_methods'];\n\n  isPrimaryAuthAllAllowed: boolean;\n  isMfaPolicyRequiredForAll: boolean;\n  isSecondaryAuthAllAllowed: boolean;\n}\n\ninterface OrgSettingsAuthenticationSettingsBodyProps extends FormSectionBody<AuthSettingsFormState> {\n  canSetAllowedAuthMethods: boolean | undefined;\n  canSetMfaPolicy: boolean | undefined;\n  canSetAllowedMfaMethods: boolean | undefined;\n  orgConfigAuthMethods: B2BAllowedAuthMethods[];\n  orgConfigMfaMethods: B2BAllowedMFAMethods[];\n  mfaPolicyConfig: boolean | undefined;\n}\n\nconst allowedAuthMethodsLabelMap: Record<B2BAllowedAuthMethods, string> = {\n  magic_link: 'Email Magic Links',\n  sso: 'Single Sign-On',\n  google_oauth: 'Google OAuth',\n  microsoft_oauth: 'Microsoft OAuth',\n  hubspot_oauth: 'HubSpot OAuth',\n  slack_oauth: 'Slack OAuth',\n  github_oauth: 'GitHub OAuth',\n  password: 'Password',\n  email_otp: 'Email OTP',\n};\n\nconst allowedMfaMethodsLabelMap: Record<B2BAllowedMFAMethods, string> = {\n  sms_otp: 'SMS OTP',\n  totp: 'TOTP',\n};\n\nconst useMutateAuthSettings = () => {\n  const { mutate } = useMutateOrganization();\n\n  const setOrgAuthSettings = (mutatedProperties: Partial<B2BOrganizationsUpdateOptions>) => {\n    return mutate(mutatedProperties, {\n      errorMessage: 'Failed to update authorization details.',\n    });\n  };\n\n  return { setOrgAuthSettings };\n};\n\nconst OrgSettingsAuthenticationSettingsBody = ({\n  orgConfigAuthMethods,\n  orgConfigMfaMethods,\n  canSetAllowedAuthMethods,\n  canSetMfaPolicy,\n  canSetAllowedMfaMethods,\n  mfaPolicyConfig,\n  localState,\n  setLocalState,\n}: OrgSettingsAuthenticationSettingsBodyProps) => {\n  const { editing } = useSettingsContainer();\n\n  const handlePrimaryAuthChange = (value: boolean) => {\n    setLocalState((prevState) => ({\n      ...prevState,\n      isPrimaryAuthAllAllowed: value,\n    }));\n  };\n  const handleMfaPolicyChange = (value: boolean) => {\n    setLocalState((prevState) => ({\n      ...prevState,\n      isMfaPolicyRequiredForAll: value,\n    }));\n  };\n  const handleSecondaryAuthChange = (value: boolean) => {\n    setLocalState((prevState) => ({\n      ...prevState,\n      isSecondaryAuthAllAllowed: value,\n    }));\n  };\n\n  const isAuthMethodChecked = (authMethod: B2BAllowedAuthMethods) => {\n    return localState.allowedAuthMethods?.includes(authMethod);\n  };\n  const isMfaMethodChecked = (mfaMethod: B2BAllowedMFAMethods) => {\n    return localState.allowedMfaMethods?.includes(mfaMethod);\n  };\n\n  const handleAllowedAuthMethodClick = (authMethod: B2BAllowedAuthMethods) => {\n    if (localState.allowedAuthMethods!.includes(authMethod)) {\n      setLocalState((prevState) => ({\n        ...prevState,\n        allowedAuthMethods: prevState.allowedAuthMethods!.filter((method) => method !== authMethod),\n      }));\n    } else {\n      setLocalState((prevState) => ({\n        ...prevState,\n        allowedAuthMethods: [...prevState.allowedAuthMethods!, authMethod],\n      }));\n    }\n  };\n\n  const handleAllowedMfaMethodClick = (mfaMethod: B2BAllowedMFAMethods) => {\n    if (localState.allowedMfaMethods!.includes(mfaMethod)) {\n      setLocalState((prevState) => ({\n        ...prevState,\n        allowedMfaMethods: prevState.allowedMfaMethods?.filter((method) => method !== mfaMethod),\n      }));\n    } else {\n      setLocalState((prevState) => ({\n        ...prevState,\n        allowedMfaMethods: [...(prevState?.allowedMfaMethods ?? []), mfaMethod],\n      }));\n    }\n  };\n  return (\n    <FlexBox flexDirection=\"column\" gap={2}>\n      <SettingsSection title=\"Primary authentication\">\n        {editing &&\n          !localState.isPrimaryAuthAllAllowed &&\n          !!localState.allowedAuthMethods &&\n          localState.allowedAuthMethods!.length === 0 && (\n            <Alert>{'Please select at least one primary authentication method.'}</Alert>\n          )}\n        <Switch\n          readOnly={!editing || !canSetAllowedAuthMethods}\n          label={'Allow all primary auth methods'}\n          checked={localState.isPrimaryAuthAllAllowed}\n          onChange={handlePrimaryAuthChange}\n        />\n        {!localState.isPrimaryAuthAllAllowed && (\n          <PaddingLeft>\n            <FlexBox flexDirection=\"row\" flexWrap=\"wrap\">\n              {orgConfigAuthMethods.map((authMethod) => {\n                const label = allowedAuthMethodsLabelMap[authMethod];\n                return (\n                  <Checkbox\n                    key={authMethod}\n                    label={label}\n                    disabled={!editing}\n                    checked={isAuthMethodChecked(authMethod)}\n                    onClick={() => handleAllowedAuthMethodClick(authMethod)}\n                  />\n                );\n              })}\n            </FlexBox>\n          </PaddingLeft>\n        )}\n      </SettingsSection>\n      {mfaPolicyConfig && (\n        <SettingsSection title=\"Secondary authentication\">\n          {editing &&\n            !localState.isSecondaryAuthAllAllowed &&\n            !!localState.allowedMfaMethods &&\n            localState.allowedMfaMethods!.length === 0 && (\n              <Alert>{'Please select at least one secondary authentication method.'}</Alert>\n            )}\n          <Typography variant={'body2'}>\n            {'All members logging in will be required to set up one of the allowed secondary auth methods.'}\n          </Typography>\n          <Switch\n            readOnly={!editing || !canSetMfaPolicy}\n            label={'Require MFA for all users'}\n            checked={localState.isMfaPolicyRequiredForAll}\n            onChange={handleMfaPolicyChange}\n          />\n          <Switch\n            readOnly={!editing || !canSetAllowedMfaMethods}\n            label={'Allow all secondary auth methods'}\n            checked={localState.isSecondaryAuthAllAllowed}\n            onChange={handleSecondaryAuthChange}\n          />\n          {!localState.isSecondaryAuthAllAllowed && (\n            <PaddingLeft>\n              <FlexBox flexDirection=\"row\" flexWrap=\"wrap\">\n                {orgConfigMfaMethods.map((authMethod) => {\n                  const label = allowedMfaMethodsLabelMap[authMethod];\n                  return (\n                    <Checkbox\n                      key={authMethod}\n                      label={label}\n                      disabled={!editing || !canSetAllowedMfaMethods}\n                      checked={isMfaMethodChecked(authMethod)}\n                      onClick={() => handleAllowedMfaMethodClick(authMethod)}\n                    />\n                  );\n                })}\n              </FlexBox>\n            </PaddingLeft>\n          )}\n        </SettingsSection>\n      )}\n    </FlexBox>\n  );\n};\n\nexport const OrgSettingsAuthenticationSettingsSection = ({ orgInfo }: { orgInfo: Organization }) => {\n  const { data: canSetAllowedAuthMethods } = useRbac('stytch.organization', 'update.settings.allowed-auth-methods');\n  const { data: canSetMfaPolicy } = useRbac('stytch.organization', 'update.settings.mfa-policy');\n  const { data: canSetAllowedMfaMethods } = useRbac('stytch.organization', 'update.settings.allowed-mfa-methods');\n  const { setOrgAuthSettings } = useMutateAuthSettings();\n  const { data: adminPortalConfig } = useAdminPortalConfig({ shouldFetch: true });\n  const mfaPolicyConfig = adminPortalConfig?.organization_config.mfa_controls_enabled;\n\n  const orgConfigAuthMethods = useAllowedAuthMethods();\n  const orgConfigMfaMethods = useAllowedMfaMethods();\n\n  const remoteState = useMemo<AuthSettingsFormState>(\n    () => ({\n      authMethods: orgInfo.auth_methods,\n      allowedAuthMethods: orgInfo.allowed_auth_methods,\n      mfaPolicy: orgInfo.mfa_policy,\n      mfaMethods: orgInfo.mfa_methods,\n      allowedMfaMethods: orgInfo.allowed_mfa_methods,\n      isPrimaryAuthAllAllowed: orgInfo.auth_methods === 'ALL_ALLOWED',\n      isSecondaryAuthAllAllowed: orgInfo.mfa_methods === 'ALL_ALLOWED',\n      isMfaPolicyRequiredForAll: orgInfo.mfa_policy === 'REQUIRED_FOR_ALL',\n    }),\n    [\n      orgInfo.allowed_auth_methods,\n      orgInfo.allowed_mfa_methods,\n      orgInfo.auth_methods,\n      orgInfo.mfa_methods,\n      orgInfo.mfa_policy,\n    ],\n  );\n  const { localState, setLocalState, editing, handleSetEditing } = useFormState({ remoteState });\n\n  const { useBlockNavigation } = useOrgSettingsRouterController();\n\n  const handleSave = useCallback(async () => {\n    const mutatedProperties: Partial<B2BOrganizationsUpdateOptions> = {};\n    if (localState.isPrimaryAuthAllAllowed !== remoteState.isPrimaryAuthAllAllowed) {\n      mutatedProperties.auth_methods = localState.isPrimaryAuthAllAllowed ? 'ALL_ALLOWED' : 'RESTRICTED';\n    }\n    if (!arraysHaveSameContents(localState.allowedAuthMethods, remoteState.allowedAuthMethods)) {\n      mutatedProperties.allowed_auth_methods = localState.allowedAuthMethods;\n    }\n    if (localState.isSecondaryAuthAllAllowed !== remoteState.isSecondaryAuthAllAllowed) {\n      mutatedProperties.mfa_methods = localState.isSecondaryAuthAllAllowed ? 'ALL_ALLOWED' : 'RESTRICTED';\n    }\n    if (!arraysHaveSameContents(localState.allowedMfaMethods, remoteState.allowedMfaMethods)) {\n      mutatedProperties.allowed_mfa_methods = localState.allowedMfaMethods;\n    }\n    if (localState.isMfaPolicyRequiredForAll !== remoteState.isMfaPolicyRequiredForAll) {\n      mutatedProperties.mfa_policy = localState.isMfaPolicyRequiredForAll ? 'REQUIRED_FOR_ALL' : 'OPTIONAL';\n    }\n    if (Object.keys(mutatedProperties).length > 0) {\n      await setOrgAuthSettings(mutatedProperties);\n    }\n  }, [localState, remoteState, setOrgAuthSettings]);\n\n  const handleCancel = useCallback(() => {\n    setLocalState(remoteState);\n  }, [remoteState, setLocalState]);\n\n  const disableSave = useMemo(() => {\n    const isDeepEqual =\n      arraysHaveSameContents(localState.allowedAuthMethods, remoteState.allowedAuthMethods) &&\n      arraysHaveSameContents(localState.allowedMfaMethods, remoteState.allowedMfaMethods) &&\n      localState.isPrimaryAuthAllAllowed === remoteState.isPrimaryAuthAllAllowed &&\n      localState.isMfaPolicyRequiredForAll === remoteState.isMfaPolicyRequiredForAll &&\n      localState.isSecondaryAuthAllAllowed === remoteState.isSecondaryAuthAllAllowed;\n    const allowPrimaryAuth =\n      !localState.isPrimaryAuthAllAllowed &&\n      !!localState.allowedAuthMethods &&\n      localState.allowedAuthMethods!.length === 0;\n\n    const allowSecondaryAuth =\n      !localState.isSecondaryAuthAllAllowed &&\n      localState.allowedMfaMethods &&\n      localState.allowedMfaMethods!.length === 0;\n\n    return isDeepEqual || allowPrimaryAuth || allowSecondaryAuth;\n  }, [remoteState, localState]);\n  return (\n    <SettingsContainer\n      title=\"Authentication settings\"\n      hasCTA={canSetAllowedAuthMethods || canSetMfaPolicy || canSetAllowedMfaMethods}\n      onSave={handleSave}\n      useBlockNavigation={useBlockNavigation}\n      editing={editing}\n      setEditing={handleSetEditing}\n      disableSave={disableSave}\n      onCancel={handleCancel}\n    >\n      <OrgSettingsAuthenticationSettingsBody\n        canSetAllowedAuthMethods={canSetAllowedAuthMethods}\n        canSetMfaPolicy={canSetMfaPolicy}\n        canSetAllowedMfaMethods={canSetAllowedMfaMethods}\n        localState={localState}\n        setLocalState={setLocalState}\n        remoteState={remoteState}\n        orgConfigAuthMethods={orgConfigAuthMethods}\n        orgConfigMfaMethods={orgConfigMfaMethods}\n        mfaPolicyConfig={mfaPolicyConfig}\n      />\n    </SettingsContainer>\n  );\n};\n"],"names":["allowedAuthMethodsLabelMap","magic_link","sso","google_oauth","microsoft_oauth","hubspot_oauth","slack_oauth","github_oauth","password","email_otp","allowedMfaMethodsLabelMap","sms_otp","totp","useMutateAuthSettings","mutate","useMutateOrganization","setOrgAuthSettings","mutatedProperties","errorMessage","OrgSettingsAuthenticationSettingsBody","orgConfigAuthMethods","orgConfigMfaMethods","canSetAllowedAuthMethods","canSetMfaPolicy","canSetAllowedMfaMethods","mfaPolicyConfig","localState","setLocalState","editing","useSettingsContainer","handlePrimaryAuthChange","value","prevState","isPrimaryAuthAllAllowed","handleMfaPolicyChange","isMfaPolicyRequiredForAll","handleSecondaryAuthChange","isSecondaryAuthAllAllowed","isAuthMethodChecked","authMethod","allowedAuthMethods","includes","isMfaMethodChecked","mfaMethod","allowedMfaMethods","handleAllowedAuthMethodClick","filter","method","handleAllowedMfaMethodClick","React","FlexBox","flexDirection","gap","SettingsSection","title","length","Alert","Switch","readOnly","label","checked","onChange","PaddingLeft","flexWrap","map","Checkbox","key","disabled","onClick","Typography","variant","OrgSettingsAuthenticationSettingsSection","orgInfo","data","useRbac","adminPortalConfig","useAdminPortalConfig","shouldFetch","organization_config","mfa_controls_enabled","useAllowedAuthMethods","useAllowedMfaMethods","remoteState","useMemo","authMethods","auth_methods","allowed_auth_methods","mfaPolicy","mfa_policy","mfaMethods","mfa_methods","allowed_mfa_methods","handleSetEditing","useFormState","useBlockNavigation","useOrgSettingsRouterController","handleSave","useCallback","arraysHaveSameContents","Object","keys","handleCancel","disableSave","isDeepEqual","allowPrimaryAuth","allowSecondaryAuth","SettingsContainer","hasCTA","onSave","setEditing","onCancel"],"mappings":";;;;;;;;;;;;;;;;;;;AAiDA,MAAMA,0BAAAA,GAAoE;IACxEC,UAAAA,EAAY,mBAAA;IACZC,GAAAA,EAAK,gBAAA;IACLC,YAAAA,EAAc,cAAA;IACdC,eAAAA,EAAiB,iBAAA;IACjBC,aAAAA,EAAe,eAAA;IACfC,WAAAA,EAAa,aAAA;IACbC,YAAAA,EAAc,cAAA;IACdC,QAAAA,EAAU,UAAA;IACVC,SAAAA,EAAW;AACb,CAAA;AAEA,MAAMC,yBAAAA,GAAkE;IACtEC,OAAAA,EAAS,SAAA;IACTC,IAAAA,EAAM;AACR,CAAA;AAEA,MAAMC,uBAAAA,GAAwB,IAAA;IAC5B,MAAM,EAAEC,MAAM,EAAE,GAAGC,qBAAAA,EAAAA;AAEnB,IAAA,MAAMC,qBAAqB,CAACC,iBAAAA,GAAAA;AAC1B,QAAA,OAAOH,OAAOG,iBAAAA,EAAmB;YAC/BC,YAAAA,EAAc;AAChB,SAAA,CAAA;AACF,IAAA,CAAA;IAEA,OAAO;AAAEF,QAAAA;AAAmB,KAAA;AAC9B,CAAA;AAEA,MAAMG,wCAAwC,CAAC,EAC7CC,oBAAoB,EACpBC,mBAAmB,EACnBC,wBAAwB,EACxBC,eAAe,EACfC,uBAAuB,EACvBC,eAAe,EACfC,UAAU,EACVC,aAAa,EAC8B,GAAA;IAC3C,MAAM,EAAEC,OAAO,EAAE,GAAGC,oBAAAA,EAAAA;AAEpB,IAAA,MAAMC,0BAA0B,CAACC,KAAAA,GAAAA;QAC/BJ,aAAAA,CAAc,CAACK,aAAe;AAC5B,gBAAA,GAAGA,SAAS;gBACZC,uBAAAA,EAAyBF;aAC3B,CAAA,CAAA;AACF,IAAA,CAAA;AACA,IAAA,MAAMG,wBAAwB,CAACH,KAAAA,GAAAA;QAC7BJ,aAAAA,CAAc,CAACK,aAAe;AAC5B,gBAAA,GAAGA,SAAS;gBACZG,yBAAAA,EAA2BJ;aAC7B,CAAA,CAAA;AACF,IAAA,CAAA;AACA,IAAA,MAAMK,4BAA4B,CAACL,KAAAA,GAAAA;QACjCJ,aAAAA,CAAc,CAACK,aAAe;AAC5B,gBAAA,GAAGA,SAAS;gBACZK,yBAAAA,EAA2BN;aAC7B,CAAA,CAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMO,sBAAsB,CAACC,UAAAA,GAAAA;QAC3B,OAAOb,UAAAA,CAAWc,kBAAkB,EAAEC,QAAAA,CAASF,UAAAA,CAAAA;AACjD,IAAA,CAAA;AACA,IAAA,MAAMG,qBAAqB,CAACC,SAAAA,GAAAA;QAC1B,OAAOjB,UAAAA,CAAWkB,iBAAiB,EAAEH,QAAAA,CAASE,SAAAA,CAAAA;AAChD,IAAA,CAAA;AAEA,IAAA,MAAME,+BAA+B,CAACN,UAAAA,GAAAA;AACpC,QAAA,IAAIb,UAAAA,CAAWc,kBAAkB,CAAEC,QAAQ,CAACF,UAAAA,CAAAA,EAAa;YACvDZ,aAAAA,CAAc,CAACK,aAAe;AAC5B,oBAAA,GAAGA,SAAS;AACZQ,oBAAAA,kBAAAA,EAAoBR,UAAUQ,kBAAkB,CAAEM,MAAM,CAAC,CAACC,SAAWA,MAAAA,KAAWR,UAAAA;iBAClF,CAAA,CAAA;QACF,CAAA,MAAO;YACLZ,aAAAA,CAAc,CAACK,aAAe;AAC5B,oBAAA,GAAGA,SAAS;oBACZQ,kBAAAA,EAAoB;AAAIR,wBAAAA,GAAAA,SAAAA,CAAUQ,kBAAkB;AAAGD,wBAAAA;AAAW;iBACpE,CAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMS,8BAA8B,CAACL,SAAAA,GAAAA;AACnC,QAAA,IAAIjB,UAAAA,CAAWkB,iBAAiB,CAAEH,QAAQ,CAACE,SAAAA,CAAAA,EAAY;YACrDhB,aAAAA,CAAc,CAACK,aAAe;AAC5B,oBAAA,GAAGA,SAAS;AACZY,oBAAAA,iBAAAA,EAAmBZ,UAAUY,iBAAiB,EAAEE,MAAAA,CAAO,CAACC,SAAWA,MAAAA,KAAWJ,SAAAA;iBAChF,CAAA,CAAA;QACF,CAAA,MAAO;YACLhB,aAAAA,CAAc,CAACK,aAAe;AAC5B,oBAAA,GAAGA,SAAS;oBACZY,iBAAAA,EAAmB;AAAKZ,wBAAAA,GAAAA,SAAAA,EAAWY,qBAAqB,EAAE;AAAGD,wBAAAA;AAAU;iBACzE,CAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;AACA,IAAA,qBACEM,EAAA,CAAA,aAAA,CAACC,OAAAA,EAAAA;QAAQC,aAAAA,EAAc,QAAA;QAASC,GAAAA,EAAK;qBACnCH,EAAA,CAAA,aAAA,CAACI,eAAAA,EAAAA;QAAgBC,KAAAA,EAAM;AACpB1B,KAAAA,EAAAA,OAAAA,IACC,CAACF,UAAAA,CAAWO,uBAAuB,IACnC,CAAC,CAACP,WAAWc,kBAAkB,IAC/Bd,UAAAA,CAAWc,kBAAkB,CAAEe,MAAM,KAAK,mBACxCN,EAAA,CAAA,aAAA,CAACO,KAAAA,EAAAA,IAAAA,EAAO,4EAEZP,EAAA,CAAA,aAAA,CAACQ,MAAAA,EAAAA;QACCC,QAAAA,EAAU,CAAC9B,WAAW,CAACN,wBAAAA;QACvBqC,KAAAA,EAAO,gCAAA;AACPC,QAAAA,OAAAA,EAASlC,WAAWO,uBAAuB;QAC3C4B,QAAAA,EAAU/B;AAEX,KAAA,CAAA,EAAA,CAACJ,UAAAA,CAAWO,uBAAuB,kBAClCgB,EAAA,CAAA,aAAA,CAACa,iCACCb,EAAA,CAAA,aAAA,CAACC,OAAAA,EAAAA;QAAQC,aAAAA,EAAc,KAAA;QAAMY,QAAAA,EAAS;OACnC3C,oBAAAA,CAAqB4C,GAAG,CAAC,CAACzB,UAAAA,GAAAA;QACzB,MAAMoB,KAAAA,GAAQ3D,0BAA0B,CAACuC,UAAAA,CAAW;AACpD,QAAA,qBACEU,EAAA,CAAA,aAAA,CAACgB,QAAAA,EAAAA;YACCC,GAAAA,EAAK3B,UAAAA;YACLoB,KAAAA,EAAOA,KAAAA;AACPQ,YAAAA,QAAAA,EAAU,CAACvC,OAAAA;AACXgC,YAAAA,OAAAA,EAAStB,mBAAAA,CAAoBC,UAAAA,CAAAA;AAC7B6B,YAAAA,OAAAA,EAAS,IAAMvB,4BAAAA,CAA6BN,UAAAA;;AAGlD,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAKPd,iCACCwB,EAAA,CAAA,aAAA,CAACI,eAAAA,EAAAA;QAAgBC,KAAAA,EAAM;AACpB1B,KAAAA,EAAAA,OAAAA,IACC,CAACF,UAAAA,CAAWW,yBAAyB,IACrC,CAAC,CAACX,WAAWkB,iBAAiB,IAC9BlB,UAAAA,CAAWkB,iBAAiB,CAAEW,MAAM,KAAK,mBACvCN,EAAA,CAAA,aAAA,CAACO,KAAAA,EAAAA,IAAAA,EAAO,8EAEZP,EAAA,CAAA,aAAA,CAACoB,UAAAA,EAAAA;QAAWC,OAAAA,EAAS;AAClB,KAAA,EAAA,8FAAA,CAAA,gBAEHrB,EAAA,CAAA,aAAA,CAACQ,MAAAA,EAAAA;QACCC,QAAAA,EAAU,CAAC9B,WAAW,CAACL,eAAAA;QACvBoC,KAAAA,EAAO,2BAAA;AACPC,QAAAA,OAAAA,EAASlC,WAAWS,yBAAyB;QAC7C0B,QAAAA,EAAU3B;sBAEZe,EAAA,CAAA,aAAA,CAACQ,MAAAA,EAAAA;QACCC,QAAAA,EAAU,CAAC9B,WAAW,CAACJ,uBAAAA;QACvBmC,KAAAA,EAAO,kCAAA;AACPC,QAAAA,OAAAA,EAASlC,WAAWW,yBAAyB;QAC7CwB,QAAAA,EAAUzB;AAEX,KAAA,CAAA,EAAA,CAACV,UAAAA,CAAWW,yBAAyB,kBACpCY,EAAA,CAAA,aAAA,CAACa,iCACCb,EAAA,CAAA,aAAA,CAACC,OAAAA,EAAAA;QAAQC,aAAAA,EAAc,KAAA;QAAMY,QAAAA,EAAS;OACnC1C,mBAAAA,CAAoB2C,GAAG,CAAC,CAACzB,UAAAA,GAAAA;QACxB,MAAMoB,KAAAA,GAAQjD,yBAAyB,CAAC6B,UAAAA,CAAW;AACnD,QAAA,qBACEU,EAAA,CAAA,aAAA,CAACgB,QAAAA,EAAAA;YACCC,GAAAA,EAAK3B,UAAAA;YACLoB,KAAAA,EAAOA,KAAAA;YACPQ,QAAAA,EAAU,CAACvC,WAAW,CAACJ,uBAAAA;AACvBoC,YAAAA,OAAAA,EAASlB,kBAAAA,CAAmBH,UAAAA,CAAAA;AAC5B6B,YAAAA,OAAAA,EAAS,IAAMpB,2BAAAA,CAA4BT,UAAAA;;AAGjD,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAQhB,CAAA;AAEO,MAAMgC,wCAAAA,GAA2C,CAAC,EAAEC,OAAO,EAA6B,GAAA;AAC7F,IAAA,MAAM,EAAEC,IAAAA,EAAMnD,wBAAwB,EAAE,GAAGoD,QAAQ,qBAAA,EAAuB,sCAAA,CAAA;AAC1E,IAAA,MAAM,EAAED,IAAAA,EAAMlD,eAAe,EAAE,GAAGmD,QAAQ,qBAAA,EAAuB,4BAAA,CAAA;AACjE,IAAA,MAAM,EAAED,IAAAA,EAAMjD,uBAAuB,EAAE,GAAGkD,QAAQ,qBAAA,EAAuB,qCAAA,CAAA;IACzE,MAAM,EAAE1D,kBAAkB,EAAE,GAAGH,uBAAAA,EAAAA;AAC/B,IAAA,MAAM,EAAE4D,IAAAA,EAAME,iBAAiB,EAAE,GAAGC,oBAAAA,CAAqB;QAAEC,WAAAA,EAAa;AAAK,KAAA,CAAA;IAC7E,MAAMpD,eAAAA,GAAkBkD,mBAAmBG,mBAAAA,CAAoBC,oBAAAA;AAE/D,IAAA,MAAM3D,oBAAAA,GAAuB4D,qBAAAA,EAAAA;AAC7B,IAAA,MAAM3D,mBAAAA,GAAsB4D,oBAAAA,EAAAA;IAE5B,MAAMC,WAAAA,GAAcC,CAAAA,CAClB,KAAO;AACLC,YAAAA,WAAAA,EAAaZ,QAAQa,YAAY;AACjC7C,YAAAA,kBAAAA,EAAoBgC,QAAQc,oBAAoB;AAChDC,YAAAA,SAAAA,EAAWf,QAAQgB,UAAU;AAC7BC,YAAAA,UAAAA,EAAYjB,QAAQkB,WAAW;AAC/B9C,YAAAA,iBAAAA,EAAmB4B,QAAQmB,mBAAmB;YAC9C1D,uBAAAA,EAAyBuC,OAAAA,CAAQa,YAAY,KAAK,aAAA;YAClDhD,yBAAAA,EAA2BmC,OAAAA,CAAQkB,WAAW,KAAK,aAAA;YACnDvD,yBAAAA,EAA2BqC,OAAAA,CAAQgB,UAAU,KAAK;AACpD,SAAA,CAAA,EACA;AACEhB,QAAAA,OAAAA,CAAQc,oBAAoB;AAC5Bd,QAAAA,OAAAA,CAAQmB,mBAAmB;AAC3BnB,QAAAA,OAAAA,CAAQa,YAAY;AACpBb,QAAAA,OAAAA,CAAQkB,WAAW;AACnBlB,QAAAA,OAAAA,CAAQgB;AACT,KAAA,CAAA;IAEH,MAAM,EAAE9D,UAAU,EAAEC,aAAa,EAAEC,OAAO,EAAEgE,gBAAgB,EAAE,GAAGC,YAAAA,CAAa;AAAEX,QAAAA;AAAY,KAAA,CAAA;IAE5F,MAAM,EAAEY,kBAAkB,EAAE,GAAGC,8BAAAA,EAAAA;AAE/B,IAAA,MAAMC,aAAaC,CAAAA,CAAY,UAAA;AAC7B,QAAA,MAAMhF,oBAA4D,EAAC;AACnE,QAAA,IAAIS,UAAAA,CAAWO,uBAAuB,KAAKiD,WAAAA,CAAYjD,uBAAuB,EAAE;AAC9EhB,YAAAA,iBAAAA,CAAkBoE,YAAY,GAAG3D,UAAAA,CAAWO,uBAAuB,GAAG,aAAA,GAAgB,YAAA;AACxF,QAAA;AACA,QAAA,IAAI,CAACiE,sBAAAA,CAAuBxE,UAAAA,CAAWc,kBAAkB,EAAE0C,WAAAA,CAAY1C,kBAAkB,CAAA,EAAG;YAC1FvB,iBAAAA,CAAkBqE,oBAAoB,GAAG5D,UAAAA,CAAWc,kBAAkB;AACxE,QAAA;AACA,QAAA,IAAId,UAAAA,CAAWW,yBAAyB,KAAK6C,WAAAA,CAAY7C,yBAAyB,EAAE;AAClFpB,YAAAA,iBAAAA,CAAkByE,WAAW,GAAGhE,UAAAA,CAAWW,yBAAyB,GAAG,aAAA,GAAgB,YAAA;AACzF,QAAA;AACA,QAAA,IAAI,CAAC6D,sBAAAA,CAAuBxE,UAAAA,CAAWkB,iBAAiB,EAAEsC,WAAAA,CAAYtC,iBAAiB,CAAA,EAAG;YACxF3B,iBAAAA,CAAkB0E,mBAAmB,GAAGjE,UAAAA,CAAWkB,iBAAiB;AACtE,QAAA;AACA,QAAA,IAAIlB,UAAAA,CAAWS,yBAAyB,KAAK+C,WAAAA,CAAY/C,yBAAyB,EAAE;AAClFlB,YAAAA,iBAAAA,CAAkBuE,UAAU,GAAG9D,UAAAA,CAAWS,yBAAyB,GAAG,kBAAA,GAAqB,UAAA;AAC7F,QAAA;AACA,QAAA,IAAIgE,OAAOC,IAAI,CAACnF,iBAAAA,CAAAA,CAAmBsC,MAAM,GAAG,CAAA,EAAG;AAC7C,YAAA,MAAMvC,kBAAAA,CAAmBC,iBAAAA,CAAAA;AAC3B,QAAA;IACF,CAAA,EAAG;AAACS,QAAAA,UAAAA;AAAYwD,QAAAA,WAAAA;AAAalE,QAAAA;AAAmB,KAAA,CAAA;AAEhD,IAAA,MAAMqF,eAAeJ,CAAAA,CAAY,IAAA;QAC/BtE,aAAAA,CAAcuD,WAAAA,CAAAA;IAChB,CAAA,EAAG;AAACA,QAAAA,WAAAA;AAAavD,QAAAA;AAAc,KAAA,CAAA;AAE/B,IAAA,MAAM2E,cAAcnB,CAAAA,CAAQ,IAAA;AAC1B,QAAA,MAAMoB,WAAAA,GACJL,sBAAAA,CAAuBxE,UAAAA,CAAWc,kBAAkB,EAAE0C,WAAAA,CAAY1C,kBAAkB,CAAA,IACpF0D,sBAAAA,CAAuBxE,UAAAA,CAAWkB,iBAAiB,EAAEsC,YAAYtC,iBAAiB,CAAA,IAClFlB,UAAAA,CAAWO,uBAAuB,KAAKiD,WAAAA,CAAYjD,uBAAuB,IAC1EP,WAAWS,yBAAyB,KAAK+C,WAAAA,CAAY/C,yBAAyB,IAC9ET,UAAAA,CAAWW,yBAAyB,KAAK6C,YAAY7C,yBAAyB;AAChF,QAAA,MAAMmE,gBAAAA,GACJ,CAAC9E,UAAAA,CAAWO,uBAAuB,IACnC,CAAC,CAACP,UAAAA,CAAWc,kBAAkB,IAC/Bd,UAAAA,CAAWc,kBAAkB,CAAEe,MAAM,KAAK,CAAA;AAE5C,QAAA,MAAMkD,kBAAAA,GACJ,CAAC/E,UAAAA,CAAWW,yBAAyB,IACrCX,UAAAA,CAAWkB,iBAAiB,IAC5BlB,UAAAA,CAAWkB,iBAAiB,CAAEW,MAAM,KAAK,CAAA;AAE3C,QAAA,OAAOgD,eAAeC,gBAAAA,IAAoBC,kBAAAA;IAC5C,CAAA,EAAG;AAACvB,QAAAA,WAAAA;AAAaxD,QAAAA;AAAW,KAAA,CAAA;AAC5B,IAAA,qBACEuB,EAAA,CAAA,aAAA,CAACyD,iBAAAA,EAAAA;QACCpD,KAAAA,EAAM,yBAAA;AACNqD,QAAAA,MAAAA,EAAQrF,4BAA4BC,eAAAA,IAAmBC,uBAAAA;QACvDoF,MAAAA,EAAQZ,UAAAA;QACRF,kBAAAA,EAAoBA,kBAAAA;QACpBlE,OAAAA,EAASA,OAAAA;QACTiF,UAAAA,EAAYjB,gBAAAA;QACZU,WAAAA,EAAaA,WAAAA;QACbQ,QAAAA,EAAUT;qBAEVpD,EAAA,CAAA,aAAA,CAAC9B,qCAAAA,EAAAA;QACCG,wBAAAA,EAA0BA,wBAAAA;QAC1BC,eAAAA,EAAiBA,eAAAA;QACjBC,uBAAAA,EAAyBA,uBAAAA;QACzBE,UAAAA,EAAYA,UAAAA;QACZC,aAAAA,EAAeA,aAAAA;QACfuD,WAAAA,EAAaA,WAAAA;QACb9D,oBAAAA,EAAsBA,oBAAAA;QACtBC,mBAAAA,EAAqBA,mBAAAA;QACrBI,eAAAA,EAAiBA;;AAIzB;;;;"}