{"version":3,"file":"onboarding-bundle-838478fe.js","sources":["../../../app/packs/src/components/wizard/wizard-context.tsx","../../../app/packs/src/components/wizard/root.tsx","../../../app/packs/src/components/wizard/step.tsx","../../../app/packs/images/progression-logo-green.svg","../../../app/packs/src/components/onboarding-build-wizard/wizard-tracking-helper.ts","../../../app/packs/src/components/wizard/left-pane.tsx","../../../app/packs/src/components/wizard/right-pane.tsx","../../../app/packs/src/components/wizard/step-title.tsx","../../../app/packs/src/components/wizard/full-page.tsx","../../../app/packs/images/org-preview-card.svg","../../../app/packs/src/components/onboarding-build-wizard/app-frame-preview/nav-coach-mark.tsx","../../../app/packs/src/components/onboarding-build-wizard/app-frame-preview/invite-coach-mark.tsx","../../../app/packs/src/components/onboarding-build-wizard/app-frame-preview/wrapper.tsx","../../../app/packs/src/components/onboarding-build-wizard/app-frame-preview/tab.tsx","../../../app/packs/src/components/onboarding-build-wizard/org-preview.tsx","../../../app/packs/src/components/onboarding-build-wizard/role-options.tsx","../../../app/packs/src/components/onboarding-build-wizard/org-size-options.tsx","../../../app/packs/src/components/onboarding-build-wizard/build-wizard-banner.tsx","../../../app/packs/src/components/onboarding-build-wizard/steps/org-name-step.tsx","../../../app/packs/src/components/onboarding-build-wizard/steps/your-team-step-vm.ts","../../../app/packs/src/components/onboarding-build-wizard/steps/your-team-step.tsx","../../../app/packs/src/components/onboarding-build-wizard/ai-skill-generator-vm.ts","../../../app/packs/src/components/onboarding-build-wizard/ai-skill-generator.tsx","../../../app/packs/src/components/onboarding-build-wizard/steps/wizard-framework-vm.ts","../../../app/packs/src/components/onboarding-build-wizard/steps/choose-some-skills-step.tsx","../../../app/packs/src/components/onboarding-build-wizard/steps/add-position-step-vm.ts","../../../app/packs/src/components/onboarding-build-wizard/steps/your-position-coach-mark.tsx","../../../app/packs/src/components/onboarding-build-wizard/steps/wizard-positions-vm.ts","../../../app/packs/src/components/onboarding-build-wizard/steps/add-position-step.tsx","../../../app/packs/src/components/onboarding-build-wizard/steps/summary-position-coach-mark.tsx","../../../app/packs/src/components/onboarding-build-wizard/steps/summary-step.tsx","../../../app/packs/src/components/onboarding-build-wizard/build-wizard-page.tsx","../../../app/packs/src/components/onboarding-framework-setup-helper/onboarding-framework-confirmation.tsx","../../../app/packs/src/components/onboarding-framework-setup-helper/onboarding-framework-setup-helper-vm.tsx","../../../app/packs/src/components/onboarding-framework-setup-helper/onboarding-framework-setup-helper.tsx","../../../app/packs/entrypoints/onboarding-bundle.ts"],"sourcesContent":["import { observer } from 'mobx-react-lite'\nimport * as React from 'react'\nimport { store } from 'store/index'\nimport { useLocalStorage } from '../../utils/use-local-storage'\n\nexport type SkillRequirement = {\n  id: number\n  positionId: string\n  skillId: string\n  level: number\n}\n\nexport type SelectedSkill = {\n  skillId: string\n  categoryId: string\n}\n\nexport type TabOption = {\n  value: string\n  label: string\n}\n\ntype WizardContextType = {\n  // step 1\n  orgName: string\n  setOrgName: (orgName: string) => void\n\n  // step 2\n  role: string\n  setRole: (role: string) => void\n  orgSize: string\n  setOrgSize: (orgSize: string) => void\n\n  // step 3\n  teamName: string\n  setTeamName: (teamName: string) => void\n  teamDiscipline: string\n  setTeamDiscipline: (teamDiscipline: string) => void\n  frameworkId: string\n\n  // step 4\n  initialPositionId: string\n  setInitialPositionId: (initialPosition: string) => void\n\n  // step 5\n  selectedPositions: string[]\n  setSelectedPositions: (\n    selectedPositions: string[] | ((prev: string[]) => string[])\n  ) => void\n\n  // step 6\n  selectedSkills: SelectedSkill[]\n  setSelectedSkills: (selectedSkills: SelectedSkill[]) => void\n  selectedRequirementLevels: SkillRequirement[]\n  setSelectedRequirementLevels: (\n    selectedRequirementLevels: SkillRequirement[]\n  ) => void\n  // step 6 - ai skill generation\n  aiSkillName: string\n  setAiSkillName: (aiSkillName: string) => void\n  aiSkillGenerationTaskId: string\n  setAiSkillGenerationTaskId: (aiSkillGenerationTaskId: string) => void\n\n  // summary step\n  tabOptions: TabOption[]\n  setTabOptions: (tabOptions: TabOption[]) => void\n  activeTab: TabOption | undefined\n  setActiveTab: (activeTab: TabOption) => void\n}\n\nconst WizardContext = React.createContext<WizardContextType | null>(null)\n\nexport const WizardContextProvider = observer(\n  ({ children }: { children: React.ReactNode }) => {\n    const localStorageKey = `build-wizard-data-${store.currentUser?.id}`\n    const withPrefix = (key: string) => `${localStorageKey}-${key}`\n\n    const [orgName, setOrgName] = useLocalStorage(\n      withPrefix('org-name'),\n      store.currentUser?.org?.name || ''\n    )\n    const [teamName, setTeamName] = useLocalStorage(withPrefix('team-name'), '')\n    const [teamDiscipline, setTeamDiscipline] = useLocalStorage(\n      withPrefix('team-discipline'),\n      ''\n    )\n    const [frameworkId, setFrameworkId] = useLocalStorage(\n      withPrefix('framework-id'),\n      ''\n    )\n    const [role, setRole] = useLocalStorage(withPrefix('role'), '')\n    const [orgSize, setOrgSize] = useLocalStorage(withPrefix('org-size'), '')\n\n    const [initialPositionId, setInitialPositionId] = useLocalStorage(\n      withPrefix('initial-position-id'),\n      ''\n    )\n    const [selectedPositions, setSelectedPositions] = useLocalStorage<string[]>(\n      withPrefix('selected-positions'),\n      []\n    )\n    const [selectedSkills, setSelectedSkills] = useLocalStorage<\n      SelectedSkill[]\n    >(withPrefix('selected-skills'), [])\n    const [selectedRequirementLevels, setSelectedRequirementLevels] =\n      useLocalStorage<SkillRequirement[]>(\n        withPrefix('selected-requirement-levels'),\n        []\n      )\n    const [aiSkillGenerationTaskId, setAiSkillGenerationTaskId] =\n      useLocalStorage(withPrefix('ai-skill-generation-task-id'), '')\n\n    const [aiSkillName, setAiSkillName] = useLocalStorage(\n      withPrefix('ai-skill-name'),\n      ''\n    )\n\n    const [tabOptions, setTabOptions] = React.useState<TabOption[]>([])\n    const [activeTab, setActiveTab] = React.useState<TabOption>()\n\n    React.useEffect(() => {\n      async function fetchDisciplines() {\n        await store.frameworks.fetchAll({\n          filter: { name: teamDiscipline, library: true },\n          include: [\n            'positions',\n            'frameworks_skills',\n            'frameworks_skills.skill_variant',\n            'frameworks_skills.skill_variant.skill',\n            'frameworks_skills.skill_variant.skill_levels',\n            'frameworks_skills.category',\n          ],\n        })\n        const framework = store.frameworks.all.find(\n          (f) => f.name === teamDiscipline\n        )\n        setFrameworkId(framework?.id || '')\n      }\n      if (teamDiscipline) {\n        fetchDisciplines()\n      }\n    }, [teamDiscipline, setFrameworkId])\n\n    return (\n      <WizardContext.Provider\n        value={{\n          // step 1\n          orgName,\n          setOrgName,\n          // step 2\n          role,\n          setRole,\n          orgSize,\n          setOrgSize,\n          // step 3\n          teamName,\n          setTeamName,\n          teamDiscipline,\n          setTeamDiscipline,\n          frameworkId,\n          // step 4\n          initialPositionId,\n          setInitialPositionId,\n          // step 5\n          selectedPositions,\n          setSelectedPositions,\n          // step 6\n          selectedSkills,\n          setSelectedSkills,\n          selectedRequirementLevels,\n          setSelectedRequirementLevels,\n          // step 6 - ai skill generation\n          aiSkillName,\n          setAiSkillName,\n          aiSkillGenerationTaskId,\n          setAiSkillGenerationTaskId,\n          // summary step\n          tabOptions,\n          setTabOptions,\n          activeTab,\n          setActiveTab,\n        }}\n      >\n        {children}\n      </WizardContext.Provider>\n    )\n  }\n)\n\nexport const useWizardContext = () => {\n  const context = React.useContext(WizardContext)\n\n  if (!context) {\n    throw new Error(\n      'useWizardContext must be used within a WizardContextProvider'\n    )\n  }\n\n  return context\n}\n","import * as React from 'react'\nimport { Toaster } from 'react-hot-toast'\nimport { Wizard as BaseWizard } from 'react-use-wizard'\nimport { WizardContextProvider } from './wizard-context'\n\nexport type RootProps = {\n  children: React.ReactNode\n}\n\nexport const Root: React.VFC<RootProps> = (props) => {\n  const { children } = props\n\n  return (\n    <WizardContextProvider>\n      <Toaster\n        toastOptions={{\n          style: {\n            maxWidth: '500px',\n            borderRadius: '0.25rem',\n          },\n        }}\n      />\n      <BaseWizard>{children}</BaseWizard>\n    </WizardContextProvider>\n  )\n}\n","import * as React from 'react'\nimport cn from 'classnames'\n\nexport type StepProps = {\n  children: React.ReactNode\n  className?: string\n}\n\nexport const Step: React.VFC<StepProps> = (props) => {\n  const { children, className } = props\n\n  return (\n    <div className={cn('flex flex-row h-full w-full', className)}>\n      {children}\n    </div>\n  )\n}\n","export default \"__VITE_ASSET__8c8ef0a4__\"","import { trackEvent } from '../../services/event-tracker'\n\nexport function trackWizardStepCompleted(\n  extraData: Record<string, string | boolean | string[]>\n) {\n  trackEvent('$track_wizard_next_step_clicked', {\n    ...extraData,\n  })\n}\n\nexport function trackWizardRequirementChange(\n  extraData: Record<string, string | number | undefined>\n) {\n  trackEvent('$track_wizard_requirement_level_changed', {\n    ...extraData,\n  })\n}\n\nexport function trackWizardEvent(\n  eventName: string,\n  extraData: Record<string, string | undefined | number>\n) {\n  trackEvent(eventName, { ...extraData })\n}\n","import { Button, Progress } from 'src/design-system'\nimport * as React from 'react'\nimport { useWizard } from 'react-use-wizard'\n\nimport ProgressionLogo from '../../../images/progression-logo-green.svg'\nimport { trackWizardEvent } from 'components/onboarding-build-wizard/wizard-tracking-helper'\n\nexport type LeftPaneProps = {\n  showSkip?: boolean\n  disableContinue?: boolean\n  children: React.ReactNode\n  onClickContinue: () => void\n}\n\nexport const LeftPane: React.VFC<LeftPaneProps> = (props) => {\n  const { showSkip, disableContinue, children, onClickContinue } = props\n\n  const { previousStep, isFirstStep, stepCount, activeStep, isLoading } =\n    useWizard()\n\n  const onPreviousClick = () => {\n    trackWizardEvent('$track_wizard_go_back', {\n      to: activeStep,\n    })\n    previousStep()\n  }\n\n  const onSkipClick = () => {\n    trackWizardEvent('$track_wizard_skip', {\n      to: activeStep,\n    })\n    onClickContinue()\n  }\n\n  return (\n    <main className=\"flex flex-col p-8 lg:p-16 w-full md:w-2/5 h-screen md:fixed-top\">\n      <img\n        src={ProgressionLogo}\n        width={140}\n        height={46}\n        alt=\"Progression Logo\"\n        className=\"mb-12 md:mb-14\"\n      />\n\n      <div className=\"flex flex-col flex-1\">\n        <div className=\"flex justify-between mb-7\">\n          {!isFirstStep && (\n            <button\n              type=\"button\"\n              className=\"text-green-600\"\n              onClick={onPreviousClick}\n              disabled={isLoading}\n            >\n              <span aria-hidden>← </span>Back\n            </button>\n          )}\n\n          {showSkip && (\n            <button\n              type=\"button\"\n              className=\"text-green-600 ml-auto\"\n              onClick={onSkipClick}\n              disabled={isLoading}\n            >\n              Skip\n            </button>\n          )}\n        </div>\n\n        {children}\n      </div>\n\n      <footer className=\"flex justify-between items-center gap-x-3 py-6\">\n        <div className=\"flex w-full items-center justify-start\">\n          <Progress\n            value={((activeStep + 1) / stepCount) * 100}\n            wrapperClassName=\"w-4/5 pr-4\"\n            rootClassName=\"bg-gray-50\"\n          />\n          <span className=\"text-gray-500 whitespace-nowrap\">\n            {activeStep + 1} / {stepCount}\n          </span>\n        </div>\n\n        <Button\n          size=\"lg\"\n          onClick={onClickContinue}\n          disabled={disableContinue || isLoading}\n        >\n          {isLoading ? 'Loading...' : 'Continue'}\n        </Button>\n      </footer>\n    </main>\n  )\n}\n","import * as React from 'react'\nimport cn from 'classnames'\n\nexport type RightPaneProps = {\n  className?: string\n  children: React.ReactNode\n}\n\nexport const RightPane: React.VFC<RightPaneProps> = (props) => {\n  const { children, className } = props\n\n  return (\n    <aside\n      className={cn(\n        'hidden md:flex md:w-3/5 bg-gray-50 md:absolute md:top-0 md:right-0 scrollable h-screen',\n        className\n      )}\n    >\n      {children}\n    </aside>\n  )\n}\n","import { Banner } from 'src/design-system'\nimport * as React from 'react'\n\nexport type StepTitleProps = {\n  title: string\n  subtitle?: string\n  helpText?: string\n}\n\nexport const StepTitle: React.VFC<StepTitleProps> = (props) => {\n  const { title, subtitle, helpText } = props\n\n  return (\n    <div className=\"mb-10\">\n      {helpText && (\n        <Banner variant=\"muted\" className=\"bg-background text-gray-600 mb-8\">\n          {helpText}\n        </Banner>\n      )}\n      <h2 className=\"text-xl leading-7 text-gray-900\">{title}</h2>\n      {subtitle && <p className=\"text-gray-600 mb-0 mt-2\">{subtitle}</p>}\n    </div>\n  )\n}\n","import { Button } from 'src/design-system'\nimport { WithAnalytics } from 'components/with-analytics'\nimport { observer } from 'mobx-react-lite'\nimport * as React from 'react'\nimport { store } from 'store/index'\n\nimport ProgressionLogo from '../../../images/progression-logo-green.svg'\nimport { useWizardContext } from './wizard-context'\n\nexport type FullPageProps = {\n  children: React.ReactNode\n}\n\nexport const FullPage: React.VFC<FullPageProps> = observer((props) => {\n  const { children } = props\n\n  const { teamName } = useWizardContext()\n\n  const getStartedFeatureFlagEnabled =\n    store.featureFlags.featureEnabled('get_started_modal')\n  let keepBuildingLink = '/review-your-framework'\n  if (getStartedFeatureFlagEnabled) keepBuildingLink += '?open_get_started=true'\n\n  return (\n    <main className=\"w-full bg-background\">\n      <div className=\"flex flex-col px-8 pt-8 md:px-16 md:pt-16 w-full overflow-auto max-w-7xl mx-auto\">\n        <img\n          src={ProgressionLogo}\n          width={140}\n          height={46}\n          alt=\"Progression Logo\"\n          className=\"mb-7 sm:mb-4\"\n        />\n\n        <div className=\"flex justify-center flex-col m-auto text-center max-w-[600px]\">\n          <h1 className=\"mb-2 text-gray-800 leading-10\">\n            Amazing job — your {teamName} framework is well underway!\n          </h1>\n          <p className=\"text-base mb-6 leading-6\">\n            Don’t stop now. Continue building out your framework, explore our\n            Library of content, and invite your team in to collaborate.\n          </p>\n          <div className=\"flex justify-center gap-3\">\n            <WithAnalytics event=\"$track_wizard_keep_building\">\n              <Button size=\"lg\" as=\"a\" href={keepBuildingLink}>\n                Go to my framework\n              </Button>\n            </WithAnalytics>\n          </div>\n        </div>\n      </div>\n\n      <div className=\"flex flex-col pt-8 md:pt-16 overflow-scroll h-full bg-background\">\n        <div className=\"flex justify-center overflow-x-auto pt-36 mx-auto px-24 h-full\">\n          {children}\n        </div>\n      </div>\n    </main>\n  )\n})\n","export default \"__VITE_ASSET__3d17f12a__\"","import React from 'react'\n\nexport const NavCoachMark = () => {\n  return (\n    <div className=\"relative\">\n      {/* this is the circle svg */}\n      <svg\n        width=\"194\"\n        height=\"94\"\n        viewBox=\"0 0 194 94\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        className=\"absolute right-[-206px] top-[-48px] pointer-events-none z-50\"\n      >\n        <path\n          d=\"M151.935 7.46543C138.585 6.5683 125.586 3.46205 112.075 2.79673C97.0168 2.05519 79.6348 1.20815 64.7557 3.42521C41.7997 6.84577 11.0316 14.5027 5.18861 35.6572C1.29526 49.753 -1.32185 66.7247 11.535 78.5733C17.527 84.0954 28.3033 86.9313 36.6979 88.8085C53.9567 92.6679 72.355 92.5008 90.0299 91.0531C118.132 88.7513 144.31 82.1762 167.968 69.6848C175.528 65.693 182.955 61.112 188.009 54.9605C195.405 45.9582 191.951 36.8904 182.331 30.0907C165.897 18.4745 140.662 19.4935 120.871 22.8183\"\n          stroke=\"#2E9E5D\"\n          strokeWidth=\"3\"\n          strokeLinecap=\"round\"\n        />\n      </svg>\n\n      {/* this is the -> arrow svg */}\n      <svg\n        width=\"90\"\n        height=\"67\"\n        viewBox=\"0 0 90 67\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        className=\"absolute right-[-60px] top-[-121px] pointer-events-none z-50\"\n      >\n        <path\n          d=\"M1.78418 2C20.1227 6.45265 37.1808 22.4661 51.3992 34.0561C59.2642 40.4671 67.5622 46.6386 74.4956 54.0707C76.5338 56.2555 85.7284 64.2322 85.2039 63.4167C79.7988 55.0134 63.3128 30.115 69.8435 37.6768C72.5314 40.7893 75.7905 44.8567 78.0137 48.2932C79.3018 50.2843 89.592 63.9348 88.1516 64.9328C87.4219 65.4385 84.7678 64.3399 83.9962 64.1526C77.0499 62.466 70.1035 60.7794 63.1572 59.0928C56.5916 57.4986 46.9214 57.1181 42.1423 51.9322\"\n          stroke=\"#2E9E5D\"\n          strokeWidth=\"3\"\n          strokeLinecap=\"round\"\n        />\n      </svg>\n\n      <div className=\"absolute right-[-80px] top-[-155px] text-green-700 italic text-sm w-[200px]\">\n        Switch views from here\n      </div>\n    </div>\n  )\n}\n","import React from 'react'\n\nexport const InviteCoachMark = () => {\n  return (\n    <div className=\"relative\">\n      {/* this is the circle svg */}\n      <svg\n        width=\"146\"\n        height=\"89\"\n        viewBox=\"0 0 146 89\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        className=\"absolute right-[-30px] top-[-40px] pointer-events-none z-50\"\n      >\n        <path\n          d=\"M107.779 9.43288C97.2348 9.03827 86.9968 6.51775 76.4141 6.45973C67.7536 6.41224 59.045 6.25415 50.3869 6.50102C15.0444 7.50873 -22.2643 66.0641 22.5804 82.3164C53.4473 93.5029 89.7417 83.3011 116.303 65.964C126.625 59.2272 137.988 48.051 142.455 36.1912C151.091 13.2611 121.457 5.32465 104.8 2\"\n          stroke=\"#2E9E5D\"\n          strokeWidth=\"3\"\n          strokeLinecap=\"round\"\n        />\n      </svg>\n      {/* this is the -> arrow svg */}\n      <svg\n        width=\"37\"\n        height=\"65\"\n        viewBox=\"0 0 37 65\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        className=\"absolute right-[-0px] top-[-110px] pointer-events-none z-50\"\n      >\n        <path\n          d=\"M26.1393 2C24.8717 21.0143 16.4764 39.1125 10.3615 56.7778C9.27812 59.9076 7.8543 64.4349 7.13931 58C6.7091 54.1281 3.94401 49.5606 2.36153 46C1.76661 44.6614 2.13931 40.1463 2.13931 41.6111C2.13931 43.1971 1.70873 45.5312 2.36153 47C3.07008 48.5942 6.99047 66.3117 10.9171 62.7778C13.3823 60.5591 14.3826 56.7215 17.1393 54.5556C20.2136 52.1401 22.5548 48.5845 25.3615 45.7778C27.6612 43.4781 30.3446 41.7947 32.6393 39.5C33.1513 38.988 36.3284 37 35.1393 37\"\n          stroke=\"#2E9E5D\"\n          strokeWidth=\"3\"\n          strokeLinecap=\"round\"\n        />\n      </svg>\n\n      <div className=\"absolute right-[-90px] top-[-140px] text-green-700 italic text-sm w-[200px]\">\n        Invite your teammates\n      </div>\n    </div>\n  )\n}\n","import * as React from 'react'\nimport { Avatar, ModalButton } from 'src/design-system'\nimport cn from 'classnames'\nimport { store } from 'store/index'\nimport { TabOption, useWizardContext } from 'components/wizard/wizard-context'\nimport { ArrowSquareOut } from '@phosphor-icons/react'\nimport { WithAnalytics } from 'components/with-analytics'\nimport { INVITE_MODAL_ID } from 'components/invite-modal/utils'\nimport { NavCoachMark } from './nav-coach-mark'\nimport { InviteCoachMark } from './invite-coach-mark'\nimport { trackWizardEvent } from '../wizard-tracking-helper'\n\nexport type WrapperProps = {\n  teamName: string\n  enableTabs?: boolean\n  enableInvite?: boolean\n  enableTopNav?: boolean\n  children?: React.ReactNode\n  contentClassName?: string\n  wrapperClass?: string\n  /**\n   * Whether or not to use a scaled down version of the app preview\n   */\n  small?: boolean\n}\n\nconst SideNavBarSquare = () => {\n  return <div className=\"relative w-3 h-3 bg-gray-100\"></div>\n}\n\ntype NavBarPillProps = {\n  size?: 'sm' | 'md' | 'lg'\n  className?: string\n}\n\nconst NavBarPill = (props: NavBarPillProps) => {\n  const { size = 'sm', className } = props\n  return (\n    <div\n      className={cn(\n        'relative h-3 bg-gray-100 rounded-full',\n        size == 'sm' && 'w-9',\n        size == 'md' && 'w-16',\n        size == 'lg' && 'w-24',\n        className\n      )}\n    />\n  )\n}\n\nexport const Wrapper: React.VFC<WrapperProps> = (props: WrapperProps) => {\n  const {\n    teamName,\n    enableTabs,\n    enableInvite,\n    enableTopNav = true,\n    children,\n    contentClassName,\n    wrapperClass,\n    small,\n  } = props\n\n  const { tabOptions, activeTab, setActiveTab } = useWizardContext()\n\n  const setTab = (tab: TabOption) => {\n    trackWizardEvent('$track_wizard_summary_nav_change', {\n      tab: tab?.value,\n    })\n    setActiveTab(tab)\n  }\n\n  return (\n    <div\n      className={cn(\n        'bg-gray-50 rounded-tl-sm relative shadow',\n        small && 'scale-90 origin-top-left',\n        wrapperClass\n      )}\n    >\n      <div className=\"absolute w-[66px] bg-white h-full rounded-tl-sm border-solid border-t-0 border-b-0 border-l-0 border-r-px border-gray-100 p-6 flex flex-col items-center justify-start gap-y-6\">\n        <Avatar\n          size=\"xs\"\n          fallbackText={store.currentUser?.initials || ''}\n          className=\"\"\n        />\n        <SideNavBarSquare />\n        <SideNavBarSquare />\n        <SideNavBarSquare />\n      </div>\n      {enableTopNav && (\n        <div\n          className={cn(\n            'absolute h-[56px] w-[calc(100%-66px)] ml-[66px] bg-white border-solid border-t-0 border-b-px border-l-0 border-r-0 border-gray-100 flex items-center justify-between px-5'\n          )}\n        >\n          <div\n            className={cn(\n              'flex items-center',\n              enableTabs ? 'gap-x-2' : 'gap-x-6'\n            )}\n          >\n            {teamName ? (\n              <span className=\"bold\">{teamName}</span>\n            ) : (\n              <NavBarPill size=\"lg\" />\n            )}\n            {enableTabs ? (\n              <>\n                <NavCoachMark />\n                {tabOptions.map((tab, index) => {\n                  return (\n                    <button\n                      type=\"button\"\n                      key={index}\n                      onClick={() => setTab(tab)}\n                      className={cn(\n                        'px-2 py-1 rounded hover:bg-gray-50 cursor-pointer',\n                        index === 0 && 'ml-3',\n                        activeTab?.value == tab.value\n                          ? 'text-theme-40 bg-gray-50'\n                          : 'text-gray-600'\n                      )}\n                    >\n                      {tab.label}\n                    </button>\n                  )\n                })}\n              </>\n            ) : (\n              <>\n                <NavBarPill size=\"md\" />\n                <NavBarPill size=\"md\" />\n                <NavBarPill size=\"sm\" />\n              </>\n            )}\n          </div>\n          {enableInvite && (\n            <div className=\"flex items-center gap-x-2\">\n              <WithAnalytics\n                event=\"$track_invite_modal_opened\"\n                params={{\n                  action: 'open_modal',\n                  source: 'build_wizard',\n                  sourceDetail: 'nav_bar_preview',\n                }}\n              >\n                <ModalButton\n                  modalId={INVITE_MODAL_ID}\n                  modalProps={{ intent: 'build_wizard' }}\n                >\n                  <ArrowSquareOut /> Invite\n                </ModalButton>\n              </WithAnalytics>\n              <InviteCoachMark />\n            </div>\n          )}\n        </div>\n      )}\n      <div\n        className={cn(enableTopNav && 'ml-[67px] mt-[57px]', contentClassName)}\n      >\n        {children}\n      </div>\n    </div>\n  )\n}\n","import * as React from 'react'\nimport cn from 'classnames'\nimport { useWizardContext } from 'components/wizard/wizard-context'\n\nexport type TabProps = {\n  name: string\n  children?: React.ReactNode\n}\n\nexport const Tab: React.VFC<TabProps> = (props: TabProps) => {\n  const { name, children } = props\n\n  const { activeTab } = useWizardContext()\n\n  if (activeTab?.value !== name) {\n    return null\n  }\n\n  return <div className={cn('p-8')}>{children}</div>\n}\n","import { Avatar } from 'src/design-system'\nimport React from 'react'\nimport OrgPreviewCard from '../../../images/org-preview-card.svg'\nimport * as AppFramePreview from 'components/onboarding-build-wizard/app-frame-preview'\n\ntype OrgPreviewProps = {\n  orgName: string\n}\n\nexport const OrgPreview = (props: OrgPreviewProps) => {\n  const { orgName } = props\n\n  const name = orgName || 'My organisation'\n\n  return (\n    <AppFramePreview.Wrapper\n      enableTopNav={false}\n      teamName={name}\n      contentClassName=\"w-full\"\n      wrapperClass=\"w-full mt-[190px] ml-16 relative bg-white min-w-[900px] overflow-hidden\"\n    >\n      <div>\n        <img\n          src={OrgPreviewCard}\n          aria-hidden=\"true\"\n          alt=\"\"\n          className=\"object-cover h-44 w-full\"\n        />\n        <div className=\"flex flex-row w-full\">\n          <div>\n            <div className=\"ml-24\">\n              <Avatar\n                className=\"border border-white -top-10\"\n                size=\"lg\"\n                fallbackText={name[0]}\n              />\n              <div className=\"mb-8 pb-8 border-0 border-b border-solid border-gray-100 max-w-[300px]\">\n                <h4 className=\"text-3xl mb-2 truncate\">{name}</h4>\n                <svg\n                  width={152}\n                  height={13}\n                  viewBox=\"0 0 152 13\"\n                  fill=\"none\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                >\n                  <rect width={60} height=\"12.25\" rx=\"6.125\" fill=\"#E7E4E4\" />\n                  <rect\n                    x={68}\n                    width={84}\n                    height=\"12.25\"\n                    rx=\"6.125\"\n                    fill=\"#E7E4E4\"\n                  />\n                </svg>\n              </div>\n              <svg\n                width={298}\n                height={107}\n                viewBox=\"0 0 298 107\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n              >\n                <rect y=\"0.25\" width={47} height={14} rx={7} fill=\"#E7E4E4\" />\n                <circle cx={16} cy=\"50.25\" r={16} fill=\"#E7E4E4\" />\n                <circle cx={55} cy=\"50.25\" r={16} fill=\"#E7E4E4\" />\n                <circle cx={94} cy=\"50.25\" r={16} fill=\"#E7E4E4\" />\n                <circle cx={133} cy=\"50.25\" r={16} fill=\"#E7E4E4\" />\n                <circle cx={172} cy=\"50.25\" r={16} fill=\"#E7E4E4\" />\n              </svg>\n            </div>\n          </div>\n          <div className=\"flex-shrink-0 mt-12 absolute right-6\">\n            <svg\n              width={320}\n              height={492}\n              viewBox=\"0 0 320 492\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <rect\n                x=\"0.5\"\n                y=\"0.499996\"\n                width={305}\n                height=\"234.97\"\n                rx=\"7.5\"\n                fill=\"white\"\n              />\n              <rect\n                x={16}\n                y={16}\n                width=\"89.4217\"\n                height=\"13.1642\"\n                rx=\"6.58209\"\n                fill=\"#E7E4E4\"\n              />\n              <g clipPath=\"url(#clip0_1156_33438)\">\n                <rect\n                  x={16}\n                  y=\"45.1642\"\n                  width={274}\n                  height={112}\n                  rx={4}\n                  fill=\"#F7A1E2\"\n                />\n                <path\n                  d=\"M80.128 172.603L197.143 195.118L199.46 196.838L282.275 212.383C282.275 212.383 288.631 214.905 293.891 213.707C299.151 212.509 298.692 208.465 300.55 203.989C302.408 199.513 324.13 132.237 324.13 132.237L325.562 126.978L334.829 89.656L337.75 82.6582L349.153 42.4636L351 35.817L349.198 31.8814L344.878 29.4767L287.714 19.0115L282.521 18.0299L277.63 19.4708L276.657 22.8031L264.078 69.6352L260.217 74.2554L253.793 77.1734L232.06 72.9675L200.165 68.2753L191.29 64.3036L185.269 64.7449L180.547 67.807L178.543 73.9222L172.097 97.4643L172.646 99.3286L166.3 111.739L163.749 121.961L160.324 123.699L156.586 123.979L151.64 122.303L94.0723 108.092L88.902 110.1L84.3359 114.504L71.1191 158.634L70 167.127L72.5292 171.558L80.128 172.603Z\"\n                  fill=\"#FFCCF2\"\n                />\n              </g>\n              <rect\n                x=\"16.5\"\n                y=\"175.664\"\n                width={19}\n                height={19}\n                rx=\"9.5\"\n                fill=\"#E7E4E4\"\n                stroke=\"white\"\n              />\n              <rect\n                x=\"32.5\"\n                y=\"175.664\"\n                width={19}\n                height={19}\n                rx=\"9.5\"\n                fill=\"#E7E4E4\"\n                stroke=\"white\"\n              />\n              <rect\n                x=\"48.5\"\n                y=\"175.664\"\n                width={19}\n                height={19}\n                rx=\"9.5\"\n                fill=\"#E7E4E4\"\n              />\n              <rect\n                x=\"48.5\"\n                y=\"175.664\"\n                width={19}\n                height={19}\n                rx=\"9.5\"\n                stroke=\"white\"\n              />\n              <rect\n                x={16}\n                y=\"200.125\"\n                width=\"49.5259\"\n                height=\"20.8834\"\n                rx=\"10.4417\"\n                fill=\"#E7E4E4\"\n              />\n              <rect\n                x=\"69.5259\"\n                y=\"200.125\"\n                width=\"60.5316\"\n                height=\"20.8834\"\n                rx=\"10.4417\"\n                fill=\"#E7E4E4\"\n              />\n              <rect\n                x=\"0.5\"\n                y=\"0.499996\"\n                width={305}\n                height=\"234.97\"\n                rx=\"7.5\"\n                stroke=\"#E7E4E4\"\n              />\n              <rect\n                x=\"0.5\"\n                y=\"256.47\"\n                width={305}\n                height=\"234.97\"\n                rx=\"7.5\"\n                fill=\"white\"\n              />\n              <rect\n                x={16}\n                y=\"271.97\"\n                width=\"89.4217\"\n                height=\"13.1642\"\n                rx=\"6.58209\"\n                fill=\"#E7E4E4\"\n              />\n              <g clipPath=\"url(#clip1_1156_33438)\">\n                <rect\n                  x={16}\n                  y=\"301.134\"\n                  width={274}\n                  height={112}\n                  rx={4}\n                  fill=\"#A1C5F7\"\n                />\n                <path\n                  d=\"M261.443 319.596L262.667 317.548L264.153 316.622L266.852 316.72L284.466 323.616L287.875 324.553L315.191 334.488L319.562 336.907C319.562 336.907 329.527 340.175 330.019 340.339C330.51 340.502 338.083 343.803 338.083 343.803L340.596 345.306L341 347.278L340.159 351.059L332.827 366.027L318.174 387.184L303.795 403.33L293.065 410.367L276.129 422.351L271.07 423.996L242.66 435.686L219.19 439.237L194.059 440L186.913 438.366L184.389 439.009L170.774 435.74L146.309 427.657L138.868 423.179L131.69 420.39L104.744 400.356L74.7072 359.938L67.2881 340.448L60.5791 306.893L60.9069 304.18L60 290.758L62.5787 269.874L66.5997 248.173L69.0254 244.752L71.5822 244L74.8602 244.991L98.429 252.748C98.429 252.748 115.081 260.657 115.485 260.799C115.89 260.941 130.061 265.429 130.061 265.429L143.108 270.517L146.539 272.935L147.129 276.204L145.599 284.843L144.179 297.175L146.878 313.419L151.98 322.025L151.685 323.736L154.963 328.714L171.255 345.241L178.139 347.572L194.714 354.774L212.448 355.569L225.713 354.251L244.66 340.97L256.177 330.076L261.443 319.596Z\"\n                  fill=\"#CCE1FF\"\n                />\n              </g>\n              <rect\n                x=\"16.5\"\n                y=\"431.634\"\n                width={19}\n                height={19}\n                rx=\"9.5\"\n                fill=\"#E7E4E4\"\n                stroke=\"white\"\n              />\n              <rect\n                x=\"32.5\"\n                y=\"431.634\"\n                width={19}\n                height={19}\n                rx=\"9.5\"\n                fill=\"#E7E4E4\"\n                stroke=\"white\"\n              />\n              <rect\n                x=\"48.5\"\n                y=\"431.634\"\n                width={19}\n                height={19}\n                rx=\"9.5\"\n                fill=\"#E7E4E4\"\n              />\n              <rect\n                x=\"48.5\"\n                y=\"431.634\"\n                width={19}\n                height={19}\n                rx=\"9.5\"\n                stroke=\"white\"\n              />\n              <rect\n                x={16}\n                y=\"456.096\"\n                width=\"49.5259\"\n                height=\"20.8834\"\n                rx=\"10.4417\"\n                fill=\"#E7E4E4\"\n              />\n              <rect\n                x=\"69.5259\"\n                y=\"456.096\"\n                width=\"60.5316\"\n                height=\"20.8834\"\n                rx=\"10.4417\"\n                fill=\"#E7E4E4\"\n              />\n              <rect\n                x=\"0.5\"\n                y=\"256.47\"\n                width={305}\n                height=\"234.97\"\n                rx=\"7.5\"\n                stroke=\"#E7E4E4\"\n              />\n              <defs>\n                <clipPath id=\"clip0_1156_33438\">\n                  <rect\n                    x={16}\n                    y=\"45.1642\"\n                    width={274}\n                    height={112}\n                    rx={4}\n                    fill=\"white\"\n                  />\n                </clipPath>\n                <clipPath id=\"clip1_1156_33438\">\n                  <rect\n                    x={16}\n                    y=\"301.134\"\n                    width={274}\n                    height={112}\n                    rx={4}\n                    fill=\"white\"\n                  />\n                </clipPath>\n              </defs>\n            </svg>\n          </div>\n        </div>\n      </div>\n    </AppFramePreview.Wrapper>\n  )\n}\n","import { Handshake, Icon, UserCircle, Users } from '@phosphor-icons/react'\nimport React from 'react'\nimport cn from 'classnames'\nimport { useWizardContext } from 'components/wizard/wizard-context'\n\nconst roles = {\n  manager: 'Manager',\n  hr: 'HR, People Ops or Talent team',\n  other: 'Other',\n}\n\nexport const RoleOptions = () => {\n  const { role, setRole } = useWizardContext()\n\n  const onClick = (value: string) => {\n    setRole(value)\n  }\n\n  return (\n    <div className=\"gap-2 grid grid-cols-1 2xl:grid-cols-3\">\n      <OnboardingOption\n        value={roles['manager']}\n        selected={role}\n        onClick={onClick}\n        icon={Users}\n      >\n        <p className=\"mb-0 text-gray-600\">with direct reports</p>\n      </OnboardingOption>\n\n      <OnboardingOption\n        value={roles['hr']}\n        selected={role}\n        onClick={onClick}\n        icon={Handshake}\n      />\n\n      <OnboardingOption\n        value={roles['other']}\n        selected={role}\n        onClick={onClick}\n        icon={UserCircle}\n      />\n    </div>\n  )\n}\n\ntype OnboardingOptionProps = {\n  value: string\n  selected: string | null\n  onClick?: (value: string) => void\n  icon: Icon\n  children?: React.ReactNode\n}\n\nconst OnboardingOption = (props: OnboardingOptionProps) => {\n  const { value, selected, onClick, icon, children } = props\n\n  const Icon = icon\n\n  const isSelected = selected === value\n\n  return (\n    <button\n      type=\"button\"\n      className={cn(\n        'flex flex-col hover:bg-gray-50 px-3 py-4 rounded text-left border-2 border-solid',\n        isSelected ? 'bg-gray-50 border-green-600' : 'border-gray-100'\n      )}\n      onClick={() => onClick?.(value)}\n    >\n      <Icon\n        className={cn(\n          'h-6 mb-3 w-6',\n          isSelected ? 'text-green-600' : 'text-gray-600'\n        )}\n        weight=\"bold\"\n      />\n      <div className=\"font-semibold text-base\">{value}</div>\n      {children}\n    </button>\n  )\n}\n","import React from 'react'\nimport { useWizardContext } from 'components/wizard/wizard-context'\nimport { Option, SelectInput } from 'components/atoms/select-input'\n\nconst sizes = ['1-50', '51-250', '251-1,000', '1,001-10,000', '10,000+']\n\nexport const OrgSizeOptions = () => {\n  const { orgSize, setOrgSize } = useWizardContext()\n\n  const options = sizes.map((size) => ({\n    label: size,\n    value: size,\n  }))\n\n  const defaultValue = options.find((option) => option.value === orgSize)\n\n  return (\n    <div className=\"w-full\">\n      <SelectInput\n        className=\"w-full\"\n        options={options}\n        name={'org_size'}\n        onChange={(option) =>\n          setOrgSize(String((option as Option)?.value) || '')\n        }\n        defaultValue={defaultValue}\n      />\n    </div>\n  )\n}\n","import { Banner } from 'src/design-system'\nimport { LightbulbFilament } from '@phosphor-icons/react'\nimport * as React from 'react'\n\nexport const BuildWizardBanner = ({\n  children,\n}: {\n  children: React.ReactNode\n}) => (\n  <Banner variant=\"success\" className=\"rounded justify-start mt-2 gap-x-3\">\n    <LightbulbFilament weight=\"bold\" className=\"w-4 h-4 flex-shrink-0\" />\n    {children}\n  </Banner>\n)\n","import { useWizardContext } from 'components/wizard/wizard-context'\nimport React from 'react'\nimport * as Wizard from 'components/wizard'\nimport { Input, InputGroup } from 'src/design-system'\nimport { OrgPreview } from '../org-preview'\nimport { useWizard } from 'react-use-wizard'\nimport { errorToast } from 'app/packs/src/utils/error-toast'\nimport { store } from 'store/index'\nimport { trackWizardStepCompleted } from '../wizard-tracking-helper'\nimport { RoleOptions } from '../role-options'\nimport { OrgSizeOptions } from '../org-size-options'\nimport { BuildWizardBanner } from '../build-wizard-banner'\n\nexport const OrgNameStep = () => {\n  const { orgName, setOrgName, orgSize, role } = useWizardContext()\n\n  const { nextStep } = useWizard()\n\n  const onClickContinue = () => {\n    if (orgName) {\n      trackWizardStepCompleted({\n        step: 'org_name',\n        orgNameChanged: store.currentUser?.org?.name !== orgName,\n        size: orgSize,\n        role,\n      })\n\n      nextStep()\n    } else {\n      errorToast('Please enter a name for your org')\n    }\n  }\n\n  return (\n    <Wizard.Step>\n      <Wizard.LeftPane\n        onClickContinue={onClickContinue}\n        disableContinue={!orgName}\n      >\n        <Wizard.StepTitle\n          title=\"Your profile\"\n          helpText=\"Welcome to Progression! This quick interactive wizard will help you build your first framework and tour our tools. You can change everything afterwards, so don’t worry about making it perfect. Let’s get started.\"\n        />\n\n        <div className=\"flex flex-col gap-y-6\">\n          <InputGroup.Root>\n            <InputGroup.Label>\n              <span>\n                Organisation name? <span className=\"text-gray-600\">*</span>\n              </span>\n            </InputGroup.Label>\n            <Input\n              name=\"org-name\"\n              value={orgName}\n              required\n              onChange={(e) => setOrgName(e.target.value)}\n            />\n          </InputGroup.Root>\n\n          <InputGroup.Root>\n            <InputGroup.Label>Organisation size</InputGroup.Label>\n            <OrgSizeOptions />\n          </InputGroup.Root>\n\n          <InputGroup.Root>\n            <InputGroup.Label>Your role</InputGroup.Label>\n            <RoleOptions />\n          </InputGroup.Root>\n\n          <BuildWizardBanner>\n            We’ll use this information to personalise your experience.\n          </BuildWizardBanner>\n        </div>\n      </Wizard.LeftPane>\n      <Wizard.RightPane className=\"overflow-hidden\">\n        <OrgPreview orgName={orgName} />\n      </Wizard.RightPane>\n    </Wizard.Step>\n  )\n}\n","export class YourTeamStepVm {\n  constructor(private teamDiscipline: string) {}\n\n  readonly disciplines = [\n    { name: 'Engineering (software)', value: 'Large Engineering Team' },\n    {\n      name: 'Engineering (frontend)',\n      value: 'Large Frontend Engineering Team',\n    },\n    {\n      name: 'Engineering (backend)',\n      value: 'Backend Engineering Team - Large',\n    },\n    { name: 'Engineering (mobile)', value: 'Large Mobile Engineering Team' },\n    { name: 'Engineering (department)', value: 'Large Engineering Department' },\n    { name: 'Product Management', value: 'Large Product Management Team' },\n    { name: 'Design (product)', value: 'Large Product Design Team' },\n    { name: 'Design (brand)', value: 'Medium Brand Design Team' },\n    { name: 'Design (UX/UI)', value: 'Large UX and UI Team' },\n    { name: 'Data (science & analysis)', value: 'Large Data Team' },\n    { name: 'User Research', value: 'Large Research Team' },\n    { name: 'Marketing (B2C)', value: 'B2C Marketing Team - Large' },\n    { name: 'Marketing (B2B)', value: 'B2B Marketing Team - Large' },\n    { name: 'Customer Success', value: 'Large Customer Success Team' },\n    { name: 'Sales', value: 'Large Sales Team' },\n    { name: 'People', value: 'Medium People Team' },\n  ]\n\n  get disciplineOptions() {\n    return this.disciplines.map((discipline) => ({\n      value: discipline.value,\n      label: discipline.name,\n    }))\n  }\n\n  get selectedDiscipline() {\n    return this.disciplineOptions.find(\n      (discipline) => discipline.value === this.teamDiscipline\n    )\n  }\n}\n","import { useWizardContext } from 'components/wizard/wizard-context'\nimport React from 'react'\nimport * as Wizard from 'components/wizard'\nimport { Banner, Input, InputGroup } from 'src/design-system'\nimport { useWizard } from 'react-use-wizard'\nimport * as AppFramePreview from 'components/onboarding-build-wizard/app-frame-preview'\nimport {\n  Option,\n  SelectInput,\n  SelectInputProps,\n} from 'components/atoms/select-input'\nimport { SingleValue } from 'react-select'\nimport { YourTeamStepVm } from './your-team-step-vm'\nimport { errorToast } from 'app/packs/src/utils/error-toast'\nimport { trackWizardStepCompleted } from '../wizard-tracking-helper'\nimport { BuildWizardBanner } from '../build-wizard-banner'\n\nexport const YourTeamStep = () => {\n  const {\n    teamName,\n    setTeamName,\n    teamDiscipline,\n    setTeamDiscipline,\n    setSelectedPositions,\n    setInitialPositionId,\n  } = useWizardContext()\n\n  const { nextStep } = useWizard()\n\n  const onClickContinue = () => {\n    if (teamName && teamDiscipline) {\n      trackWizardStepCompleted({\n        step: 'your_team',\n        teamName,\n        teamDiscipline,\n      })\n      nextStep()\n    } else {\n      errorToast('Please enter a team name, and choose a discipline.')\n    }\n  }\n\n  const onDisciplineChange: SelectInputProps['onChange'] = React.useCallback(\n    (e) => {\n      const event = e as SingleValue<Option>\n      if (event?.value) {\n        setTeamName(event?.label || '')\n        setTeamDiscipline(event?.value.toString())\n        setSelectedPositions([])\n        setInitialPositionId('')\n      }\n    },\n    [setTeamDiscipline, setSelectedPositions, setInitialPositionId, setTeamName]\n  )\n\n  const vm = React.useMemo(() => {\n    return new YourTeamStepVm(teamDiscipline)\n  }, [teamDiscipline])\n\n  return (\n    <Wizard.Step>\n      <Wizard.LeftPane\n        onClickContinue={onClickContinue}\n        disableContinue={!teamName || !teamDiscipline}\n      >\n        <Wizard.StepTitle title=\"Create your first team\" />\n\n        <InputGroup.Root>\n          <InputGroup.Label>\n            <span>\n              Select a team <span className=\"text-gray-600\">*</span>\n            </span>\n            <div className=\"my-2 p-0 font-normal\">\n              <SelectInput\n                defaultValue={vm.selectedDiscipline}\n                onChange={onDisciplineChange}\n                placeholder=\"Select a track\"\n                options={vm.disciplineOptions}\n                name={'team[discipline]'}\n                className=\"mb-2\"\n              />\n            </div>\n          </InputGroup.Label>\n        </InputGroup.Root>\n        <BuildWizardBanner>\n          Teams hold your org’s frameworks: one per discipline. We’ve given some\n          starter options from our library here.\n        </BuildWizardBanner>\n      </Wizard.LeftPane>\n      <Wizard.RightPane className=\"flex overflow-hidden\">\n        <AppFramePreview.Wrapper\n          teamName={teamName}\n          wrapperClass=\"mt-[150px] ml-16 w-full\"\n        />\n      </Wizard.RightPane>\n    </Wizard.Step>\n  )\n}\n","import { store } from 'store/index'\n\nexport class AiSkillGeneratorVm {\n  constructor(\n    private aiSkillName: string,\n    private aiSkillGenerationTaskId: string\n  ) {}\n\n  get generationInProgress(): boolean {\n    return this.aiSkillGenerationTaskId !== ''\n  }\n\n  async beginAIGeneration() {\n    const { asyncTasks } = store\n\n    const task = await asyncTasks.create({\n      type: 'open_ai',\n      step: 'skill-and-levels-generation',\n      attributes: {\n        skillName: this.aiSkillName || '',\n      },\n    })\n\n    if (task.success && task?.data?.asyncTasks) {\n      const taskId = Object.keys(task.data.asyncTasks)[0]\n\n      return taskId\n    }\n  }\n\n  async pollForTaskComplete(taskId: string) {\n    const { asyncTasks } = store\n\n    await asyncTasks.byId(taskId)?.pollOne()\n\n    const asyncTask = await asyncTasks.byId(taskId)\n\n    return asyncTask\n  }\n}\n","import { ArrowElbowDownLeft, Sparkle, X } from '@phosphor-icons/react'\nimport cn from 'classnames'\nimport React, { KeyboardEventHandler } from 'react'\nimport { AiSkillGeneratorVm } from './ai-skill-generator-vm'\nimport { errorToast } from '../../utils/error-toast'\nimport { Input } from 'components/atoms/input'\nimport { LoadingContent } from 'components/loading-content'\nimport { observer } from 'mobx-react-lite'\nimport { successToast } from '../../utils/success-toast'\nimport { useStore } from 'store/context'\n\nexport type AiSkillGeneratorProps = {\n  aiSkillName: string\n  setAiSkillName: (aiSkillName: string) => void\n  aiSkillGenerationTaskId: string\n  setAiSkillGenerationTaskId: (taskId: string) => void\n  onGenerationComplete: (id: string) => void\n}\n\nexport const AiSkillGenerator = observer((props: AiSkillGeneratorProps) => {\n  const {\n    aiSkillGenerationTaskId,\n    setAiSkillGenerationTaskId,\n    aiSkillName,\n    setAiSkillName,\n    onGenerationComplete,\n  } = props\n  const { asyncTasks } = useStore()\n\n  const [aiClicked, setAiClicked] = React.useState(false)\n\n  const task = asyncTasks.byId(aiSkillGenerationTaskId)\n\n  const vm = new AiSkillGeneratorVm(aiSkillName, aiSkillGenerationTaskId)\n\n  const handleStart = async () => {\n    if (aiSkillGenerationTaskId || aiSkillName === '') return\n\n    setAiClicked(false)\n\n    const taskId = await vm.beginAIGeneration()\n\n    if (!taskId) {\n      errorToast('Sorry there was a problem, please try again')\n      return\n    } else {\n      setAiSkillGenerationTaskId(taskId)\n\n      const poll = await vm.pollForTaskComplete(taskId)\n      if (poll?.isSuccess) {\n        onGenerationComplete(taskId)\n\n        successToast('Skill generated!')\n      } else {\n        errorToast('Sorry there was a problem, please try again')\n      }\n    }\n  }\n\n  const handleKeyDown: KeyboardEventHandler = (event) => {\n    switch (event.key) {\n      case 'Enter':\n        handleStart()\n        event.preventDefault()\n    }\n  }\n\n  return (\n    <div\n      key=\"ai-button\"\n      className={cn(\n        'flex items-center relative px-4 py-2 border-px bg-pink-100 text-pink-700 border-gray-100 border-solid rounded cursor-pointer min-h-[64px] w-full'\n      )}\n      onClick={() => setAiClicked(!aiClicked)}\n    >\n      {!task?.isFinished && (\n        <LoadingContent\n          className=\"!text-pink-600 scale-75\"\n          loading={!!task?.isPending}\n          variant=\"highlight\"\n        >\n          <Sparkle className=\"text-pink-600\" weight=\"fill\" />\n        </LoadingContent>\n      )}\n\n      {task?.isFinished && (\n        <div className={cn('w-max pr-8 cursor-pointer flex-grow')}>\n          <p className=\"font-bold m-0 text-pink-700\">{aiSkillName}</p>\n        </div>\n      )}\n      {(!task?.isFinished || !vm.generationInProgress) && (\n        <>\n          <Input\n            className=\"text-pink-700 placeholder-pink-700 border-0 min-w-min\"\n            inputClassName=\"!border-0 !shadow-none !outline-none text-pink-700\"\n            nonFocusedPlaceholder=\"Add your own skill with our AI generator\"\n            placeholder=\"Skill name\"\n            naked={true}\n            value={aiSkillName}\n            forceShowPlaceholder={!aiSkillName}\n            disabled={vm.generationInProgress}\n            onKeyDown={(e) => handleKeyDown(e)}\n            onChange={(e) => {\n              setAiSkillName(e || '')\n            }}\n            onBlur={handleStart}\n          />\n          <ArrowElbowDownLeft className=\"h-4 w-4\" weight=\"bold\" />\n        </>\n      )}\n\n      {task?.isFinished && (\n        <X\n          weight=\"bold\"\n          className=\"\"\n          onClick={() => {\n            setAiSkillName('')\n            setAiSkillGenerationTaskId('')\n            setAiClicked(false)\n          }}\n        />\n      )}\n    </div>\n  )\n})\n","import {\n  SelectedSkill,\n  SkillRequirement,\n} from 'components/wizard/wizard-context'\nimport { store } from 'store/index'\nimport { FrameworksSkill } from 'store/modules/frameworks-skills'\nimport { trackWizardRequirementChange } from '../wizard-tracking-helper'\nimport { AsyncTask } from 'store/modules/async-tasks'\n// eslint-disable-next-line import/extensions\nimport { OnChangeRequirementLevelProps } from 'app/packs/src/design-system/hooks/use-framework/use-framework.types'\n\ntype DummyOnboardingCategory = {\n  id: string\n  name: string\n  listPosition: number\n  skills: DummyOnboardingSkill[]\n}\n\ntype DummyOnboardingSkill = {\n  id: string\n  categoryId: string\n  description?: string | null\n  name: string\n  slug: string\n  sortIndex: number\n  skillLevels?: DummyOnboardingSkillLevel[]\n}\n\ntype DummyOnboardingSkillLevel = {\n  id: string\n  level: number\n  name: string\n  skillId: string\n}\n\nexport class WizardFrameworkVm {\n  constructor(\n    private orgName: string,\n    private teamName: string,\n    private role: string,\n    private orgSize: string,\n    private frameworkId: string,\n    private initialPositionId: string,\n    private teamDiscipline: string,\n    private selectedPositions: string[],\n    private selectedSkills: SelectedSkill[],\n    private setSelectedSkills: (skills: SelectedSkill[]) => void,\n    private selectedRequirementLevels: SkillRequirement[],\n    private setSelectedRequirementLevels: (\n      requirementLevels: SkillRequirement[]\n    ) => void,\n    private aiSkillName: string,\n    private aiSkillGenerationTaskId: string\n  ) {}\n\n  async onContinue() {\n    try {\n      const response = await fetch('/orgs/build_wizard_setup', {\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json',\n        },\n        body: JSON.stringify(this.body),\n      })\n      const json = await response.json()\n      return { success: true, ...json }\n    } catch (e) {\n      console.error(e)\n      return { success: false, message: (e as Error).message }\n    }\n  }\n\n  get body() {\n    return {\n      org_name: this.orgName,\n      team_name: this.teamName,\n      role: this.role,\n      org_size: this.orgSize,\n      discipline: this.teamDiscipline,\n      framework_id: this.frameworkId,\n      initial_position_id: this.initialPositionId,\n      selected_positions: this.selectedPositions,\n      ai_skill_generation_task_id: this.aiSkillGenerationTaskId,\n      selected_skills: this.selectedSkills.map((skill) => {\n        return { skill_id: skill.skillId, category_id: skill.categoryId }\n      }),\n      selected_requirement_levels: this.selectedRequirementLevels.map((r) => {\n        return {\n          skill_id: r.skillId,\n          position_id: r.positionId,\n          level: r.level,\n        }\n      }),\n    }\n  }\n\n  onSkillClicked(\n    alreadySelected: string | undefined,\n    { skill, category }: FrameworksSkill\n  ) {\n    if (!skill || !category) return\n    if (alreadySelected) {\n      // update the skill\n      this.setSelectedSkills(\n        this.selectedSkills.filter(\n          (selectedSkill) => selectedSkill.skillId !== skill.id\n        )\n      )\n      // remove requirements\n      this.setSelectedRequirementLevels(\n        this.selectedRequirementLevels.filter(\n          (requirement) => requirement.skillId !== skill.id\n        )\n      )\n    } else {\n      // add the selected skill to the list of selected skills\n      this.setSelectedSkills([\n        ...this.selectedSkills,\n        {\n          skillId: skill.id,\n          categoryId: category.id,\n        },\n      ])\n\n      // find & update the requirement in our state\n      const requirements = this.positions.map((position, index) => {\n        return {\n          id: Math.random(),\n          level: index + 1,\n          skillId: skill.id,\n          positionId: `${position.id}`,\n        }\n      })\n      this.setSelectedRequirementLevels([\n        ...this.selectedRequirementLevels,\n        ...requirements,\n      ])\n    }\n  }\n\n  onAiSkillReady(id: string) {\n    // once the skill is ready, generate some placeholder requirements\n    const requirements = this.positions.map((position, index) => {\n      return {\n        id: Math.random(),\n        level: index + 1,\n        skillId: id,\n        positionId: `${position.id}`,\n      }\n    })\n    this.setSelectedRequirementLevels([\n      ...this.selectedRequirementLevels,\n      ...requirements,\n    ])\n  }\n\n  handleOnChangeRequirementLevel(clickProps: OnChangeRequirementLevelProps) {\n    trackWizardRequirementChange({\n      skill: this.frameworkSkills.find(\n        (skill) => `${clickProps.skillId}` === skill.id\n      )?.name,\n      position: this.positions.find(\n        (position) => `${clickProps.positionId}` === position.id\n      )?.name,\n      new_level: clickProps.newLevel,\n    })\n\n    const newRequirementLevels = this.selectedRequirementLevels.map(\n      (requirement) => {\n        if (\n          requirement.skillId === `${clickProps.skillId}` &&\n          requirement.positionId === `${clickProps.positionId}`\n        ) {\n          return {\n            ...requirement,\n            level: clickProps.newLevel,\n          }\n        }\n        return requirement\n      }\n    )\n\n    this.setSelectedRequirementLevels(newRequirementLevels)\n  }\n\n  get frameworkSkills(): DummyOnboardingSkill[] {\n    const selectedSkills = this.selectedSkills.map((skill) => {\n      const currentSkill = store.skills.byId(skill.skillId)\n      const skillLevels = currentSkill?.defaultVariant?.skillLevels || []\n\n      const currentSkillLevels: DummyOnboardingSkillLevel[] = skillLevels.map(\n        (skillLevel) => {\n          return {\n            id: skillLevel.id,\n            level: skillLevel.level,\n            name: skillLevel.name || '',\n            skillId: skill.skillId,\n          }\n        }\n      )\n\n      return {\n        id: skill.skillId,\n        categoryId: skill.categoryId,\n        description: currentSkill?.description,\n        name: currentSkill?.name || '',\n        slug: currentSkill?.slug || '',\n        sortIndex: 1,\n        skillLevels: currentSkillLevels,\n      }\n    })\n\n    if (this.aiTask?.isFinished && this.aiTask?.isSuccess) {\n      const aiSkill = this.buildSkillFromAiGeneration\n\n      return [...selectedSkills, aiSkill]\n    }\n\n    return selectedSkills\n  }\n\n  get aiTask(): AsyncTask | undefined {\n    return store.asyncTasks.byId(this.aiSkillGenerationTaskId)\n  }\n\n  get buildSkillFromAiGeneration(): DummyOnboardingSkill {\n    return {\n      id: this.aiSkillGenerationTaskId,\n      categoryId: '1',\n      description: this.aiTask?.output.skillDescription?.output.extracted,\n      name: this.aiSkillName,\n      slug: '',\n      sortIndex: 1,\n      skillLevels: this.buildSkillLevelsFromAiGeneration,\n    }\n  }\n\n  get buildSkillLevelsFromAiGeneration(): DummyOnboardingSkillLevel[] {\n    const skillLevelArray =\n      this.aiTask?.output.skillLevelDescriptions?.output.extracted\n\n    if (!skillLevelArray) {\n      return []\n    }\n\n    const levels = skillLevelArray.map((level) => {\n      return {\n        id: `${Math.random()}`,\n        level: parseInt(level.level),\n        name: level.name,\n        skillId: this.aiSkillGenerationTaskId,\n      }\n    })\n\n    return levels\n  }\n\n  get categorisedFrameworkSkills() {\n    return this.frameworkSkills.reduce<DummyOnboardingCategory[]>(\n      (acc, skill) => {\n        const category = acc.find((cat) => cat.id === skill.categoryId)\n        if (category) {\n          category.skills.push(skill)\n        } else {\n          const categoryName =\n            store.categories.byId(`${skill.categoryId}`)?.name || ''\n          acc.push({\n            id: skill.categoryId,\n            name: categoryName,\n            listPosition: 1,\n            skills: [skill],\n          })\n        }\n        return acc\n      },\n      []\n    )\n  }\n\n  get positions() {\n    return this.selectedPositions.map((positionId) => {\n      const position = store.positions.byId(positionId)\n      return {\n        id: position?.id || 1,\n        name: position?.name || '',\n        seniorityLevel: position?.seniorityLevel || '',\n        customLabel: `${this.teamDiscipline[0]}${\n          position?.seniorityLevel || 'E'\n        }`,\n      }\n    })\n  }\n\n  get frameworkDiscipline() {\n    return {\n      name: 'Individual Contributors',\n      id: 2,\n      positions: this.positions,\n    }\n  }\n\n  get canContinue() {\n    const limit = this.aiSkillGenerationTaskId ? 2 : 3\n\n    return this.selectedSkills.length >= limit\n  }\n\n  /**\n   * Builds list of skills that user can select in this part of the wizard.\n   */\n  get selectableSkills() {\n    return [\n      ...this.humanSkills,\n      ...this.leadershipSkills,\n      ...this.craftSkillsForPosition,\n    ]\n  }\n\n  get skillsInFramework(): FrameworksSkill[] {\n    return store.frameworks.byId(this.frameworkId)?.frameworksSkills || []\n  }\n\n  get humanSkills() {\n    return this.skillsInFramework\n      .filter((frameworkSkill) => {\n        return frameworkSkill.category?.name === 'Human'\n      })\n      .slice(0, 3)\n  }\n  get leadershipSkills() {\n    return this.skillsInFramework\n      .filter(\n        (frameworkSkill) => frameworkSkill.category?.name === 'Leadership'\n      )\n      .slice(0, 3)\n  }\n\n  get craftSkillsForPosition() {\n    const craftSkills = this.skillsInFramework.filter(\n      (frameworkSkill) => frameworkSkill.category?.name === 'Craft'\n    )\n    return craftSkills\n      .filter((craftSkill) => {\n        const position = store.positions.byId(this.initialPositionId)\n        const positionSkills = position?.skills || []\n        return positionSkills.some((positionSkill) => {\n          return positionSkill && positionSkill.id === craftSkill.skill?.id\n        })\n      })\n      .slice(0, 3)\n  }\n}\n","import {\n  FrameworkPage,\n  TCategory,\n  TDiscipline,\n  TRequirement,\n} from 'src/design-system'\nimport { observer } from 'mobx-react-lite'\nimport cn from 'classnames'\nimport React from 'react'\nimport { AiSkillGenerator } from '../ai-skill-generator'\nimport { errorToast } from 'app/packs/src/utils/error-toast'\nimport { store } from 'store/index'\nimport { trackWizardStepCompleted } from '../wizard-tracking-helper'\nimport { useWizard } from 'react-use-wizard'\nimport { useWizardContext } from 'components/wizard/wizard-context'\nimport { WizardFrameworkVm } from './wizard-framework-vm'\nimport * as AppFramePreview from 'components/onboarding-build-wizard/app-frame-preview'\nimport * as Wizard from 'components/wizard'\nimport { BuildWizardBanner } from '../build-wizard-banner'\n\nexport const ChooseSomeSkillsStep = observer(() => {\n  const { nextStep } = useWizard()\n\n  const [saving, setSaving] = React.useState(false)\n\n  const MIN_SKILLS_TO_SELECT = 3\n\n  const {\n    orgName,\n    teamName,\n    role,\n    orgSize,\n    teamDiscipline,\n    frameworkId,\n    initialPositionId,\n    selectedPositions,\n    selectedSkills,\n    setSelectedSkills,\n    selectedRequirementLevels,\n    setSelectedRequirementLevels,\n    aiSkillName,\n    setAiSkillName,\n    aiSkillGenerationTaskId,\n    setAiSkillGenerationTaskId,\n  } = useWizardContext()\n\n  const vm = new WizardFrameworkVm(\n    orgName,\n    teamName,\n    role,\n    orgSize,\n    frameworkId,\n    initialPositionId,\n    teamDiscipline,\n    selectedPositions,\n    selectedSkills,\n    setSelectedSkills,\n    selectedRequirementLevels,\n    setSelectedRequirementLevels,\n    aiSkillName,\n    aiSkillGenerationTaskId\n  )\n\n  React.useEffect(() => {\n    const fetchTask = async () => {\n      await store.asyncTasks.fetchOne(aiSkillGenerationTaskId)\n    }\n    if (aiSkillGenerationTaskId) {\n      fetchTask()\n    }\n  })\n\n  const onClickContinue = async () => {\n    setSaving(true)\n\n    if (selectedSkills.length === 0) {\n      errorToast(`Please choose at least ${MIN_SKILLS_TO_SELECT} skills.`)\n      setSaving(false)\n      return\n    }\n\n    const res = await vm.onContinue()\n    if (res.success) {\n      trackWizardStepCompleted({\n        step: 'choose-some-skills',\n        skills: vm.frameworkSkills.map((skill) => skill.name),\n      })\n      store.currentUser?.reload(['org', 'org.onboarding_survey'])\n      nextStep()\n    } else {\n      errorToast(\n        'Sorry there was an error saving your skills. Please try again.'\n      )\n    }\n    setSaving(false)\n  }\n\n  return (\n    <Wizard.Step>\n      <Wizard.LeftPane\n        onClickContinue={onClickContinue}\n        disableContinue={!vm.canContinue || saving}\n      >\n        <Wizard.StepTitle title=\"Add skills\" />\n\n        <div className=\"flex flex-row flex-wrap gap-3 mb-10\">\n          <AiSkillGenerator\n            aiSkillGenerationTaskId={aiSkillGenerationTaskId}\n            aiSkillName={aiSkillName}\n            onGenerationComplete={(id) => {\n              vm.onAiSkillReady(id)\n            }}\n            setAiSkillGenerationTaskId={setAiSkillGenerationTaskId}\n            setAiSkillName={setAiSkillName}\n          />\n          {vm.selectableSkills.map((frameworkSkill) => {\n            if (!frameworkSkill.skill) return null\n            const selected = selectedSkills.find((selectedSkill) => {\n              return selectedSkill.skillId === frameworkSkill.skill?.id\n            })?.skillId\n\n            return (\n              <div\n                key={frameworkSkill.skill.id}\n                className={cn(\n                  'w-max px-4 py-3 border-px border-gray-100 border-solid rounded cursor-pointer',\n                  selected && 'bg-gray-50'\n                )}\n                onClick={() => vm.onSkillClicked(selected, frameworkSkill)}\n              >\n                {frameworkSkill.category && (\n                  <p className=\"text-xs m-0\">{frameworkSkill.category.name}</p>\n                )}\n                <p className=\"font-bold m-0\">{frameworkSkill.skill.name}</p>\n              </div>\n            )\n          })}\n        </div>\n\n        <BuildWizardBanner>\n          Skills sit at the core of Progression, defining position expectations\n          and powering growth. Use our library of hundreds, or generate your own\n          in seconds.\n        </BuildWizardBanner>\n      </Wizard.LeftPane>\n      <Wizard.RightPane className=\"flex overflow-auto\">\n        <AppFramePreview.Wrapper\n          teamName={teamName}\n          contentClassName=\"pr-16 pb-16 w-min\"\n          wrapperClass=\"mt-[144px] ml-16 w-min h-min min-w-min min-h-full\"\n          small\n        >\n          <>\n            <FrameworkPage\n              disciplines={[vm.frameworkDiscipline as TDiscipline]}\n              categories={\n                vm.categorisedFrameworkSkills as unknown as TCategory[]\n              }\n              requirements={\n                selectedRequirementLevels as unknown as TRequirement[]\n              }\n              uncategorisedSkills={[]}\n              permissions={{\n                allowChangeRequirement: true,\n              }}\n              eventHandlers={{\n                onChangeRequirementLevel: (clickProps) =>\n                  vm.handleOnChangeRequirementLevel(clickProps),\n              }}\n            />\n            {selectedSkills.length >= 3 && (\n              <div className=\"relative\">\n                <div className=\"absolute left-[300px] -top-16 max-w-[250px]\">\n                  <svg\n                    xmlns=\"http://www.w3.org/2000/svg\"\n                    width=\"27\"\n                    height=\"42\"\n                    fill=\"none\"\n                    className=\"absolute left-1/3 -top-2\"\n                  >\n                    <path\n                      stroke=\"#2E9E5D\"\n                      strokeLinecap=\"round\"\n                      strokeWidth=\"3\"\n                      d=\"M1.788 39.84C5.965 27.577 14.66 17.172 21.784 6.65c1.262-1.864 2.993-4.586 2.33-.235-.399 2.618.613 6.103 1.026 8.719.155.983-.884 3.882-.626 2.92.279-1.04.972-2.497.802-3.577-.185-1.171.358-13.493-2.842-11.864-2.009 1.023-3.34 3.367-5.531 4.304-2.444 1.045-4.606 2.968-6.943 4.317-1.914 1.105-3.972 1.738-5.883 2.84-.426.247-2.861.993-2.08 1.203\"\n                    />\n                  </svg>\n                  <p className=\"text-green-700 italic text-sm mt-10 -ml-4\">\n                    This is the required skill level for this position. Hover on\n                    the dots to adjust it – you can change this any time\n                  </p>\n                </div>\n              </div>\n            )}\n          </>\n        </AppFramePreview.Wrapper>\n      </Wizard.RightPane>\n    </Wizard.Step>\n  )\n})\n","import { Option } from 'components/atoms/select-input'\nimport { store } from 'store/index'\nimport { WizardPositionOption } from './add-position-step'\n\nexport class AddPositionStepVm {\n  POSITION_SELECT_LIMT = 3\n\n  constructor(private frameworkId: string, private initialPositionId: string) {}\n\n  get positionOptions(): WizardPositionOption[] {\n    const framework = store.frameworks.byId(this.frameworkId)\n\n    if (!framework) return []\n\n    return framework.positions\n      .sort((a, b) => a.seniorityLevel - b.seniorityLevel)\n      .map((position) => ({\n        value: position.id,\n        label: position.name,\n        seniorityLevel: position.seniorityLevel,\n      }))\n  }\n\n  get selectedPosition() {\n    return store.positions.byId(this.initialPositionId)\n  }\n}\n","import React from 'react'\n\nexport const YourPositionCoachMark = () => {\n  return (\n    <div className=\"relative\">\n      {/* circle svg */}\n      <svg\n        width=\"77\"\n        height=\"75\"\n        viewBox=\"0 0 77 75\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        className=\"absolute -bottom-20 -left-16\"\n      >\n        <path\n          d=\"M32.8762 2C46.8736 2 58.9675 15.7958 66.2946 26.3231C70.4857 32.3448 74.0918 39.565 74.8106 46.9413C75.7933 57.0262 73.1598 68.6519 61.9962 71.7275C53.7567 73.9975 46.6175 73.0317 38.5468 70.3986C28.9356 67.2629 19.0042 63.2849 11.1623 56.7269C4.67908 51.3052 2.05528 44.1452 2.00052 35.7865C1.9571 29.1572 4.63512 22.8509 9.14431 17.9469C11.5112 15.3728 14.5147 12.7232 17.963 11.8057C20.464 11.1403 23.1161 11.0099 25.6921 11.101C28.3791 11.196 31.829 11.5514 34.4502 12.1883C43.9013 14.4847 32.7342 12.1008 40.5043 14.685\"\n          stroke=\"#2E9E5D\"\n          fill=\"none\"\n          strokeWidth=\"3\"\n          strokeLinecap=\"round\"\n          className=\"position-line\"\n          style={{\n            strokeDasharray: '229',\n            strokeDashoffset: '229',\n            animation: '0.6s ease-in-out animate-draw-coach-mark forwards',\n          }}\n        />\n      </svg>\n\n      <svg\n        width=\"66\"\n        height=\"92\"\n        viewBox=\"0 0 66 92\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        className=\"-scale-x-100 absolute -bottom-44 -left-32\"\n      >\n        <path\n          d=\"M63.5615 90.4332C59.4081 71.8365 43.6691 54.2926 32.3084 39.7057C26.0241 31.6368 19.9867 23.136 12.6658 15.986C10.5137 13.8842 2.68518 4.44127 3.49229 4.9874C11.8098 10.6154 36.4461 27.7658 28.9888 21.0195C25.9195 18.2428 21.9041 14.8701 18.5029 12.5557C16.5323 11.2147 3.04602 0.548885 2.02403 1.98161C1.50623 2.70751 2.56168 5.40835 2.73643 6.19081C4.30968 13.2349 5.88294 20.279 7.45619 27.3231C8.94321 33.9812 9.16535 43.7468 14.2746 48.6765\"\n          stroke=\"#2E9E5D\"\n          strokeWidth=\"3\"\n          strokeLinecap=\"round\"\n          style={{\n            strokeDasharray: '229',\n            strokeDashoffset: '229',\n            animation: '0.6s ease-in-out animate-draw-coach-mark forwards',\n          }}\n        />\n      </svg>\n\n      <div className=\"absolute -bottom-56 -left-56 text-green-700 italic text-sm max-w-[460px]\">\n        We assigned you to this position - you can change this later!\n      </div>\n    </div>\n  )\n}\n","import { Option } from 'components/atoms/select-input'\nimport { SelectedSkill } from 'components/wizard/wizard-context'\nimport { store } from 'store/index'\nimport { User } from 'store/modules/users'\n\nexport class WizardPositionsVm {\n  constructor(\n    private frameworkId: string,\n    private initialPositionId: string,\n    private selectedSkills: SelectedSkill[]\n  ) {}\n\n  // initial positions for this step are based on the seniority level\n  // of the initialPosition that was selected on the previous step.\n  // * try and get 3 positions, one above and one below the initialPosition\n  // * if this is the lowest seniority level, just get 2 positions above\n  // * if this is the highest seniority level, just get 2 positions below\n  get initialPositions(): string[] {\n    const currentSeniorityLevel =\n      store.positions.byId(this.initialPositionId)?.seniorityLevel || 1\n\n    const positionsInFramework = store.frameworks\n      .byId(this.frameworkId)\n      ?.positions.filter(\n        (p) =>\n          p.seniorityLevel &&\n          (p.id == this.initialPositionId ||\n            p.seniorityLevel != currentSeniorityLevel)\n      )\n      .sort((a, b) => {\n        if (!a.seniorityLevel || !b.seniorityLevel) return 0\n        return a.seniorityLevel - b.seniorityLevel\n      })\n\n    if (!positionsInFramework) return []\n\n    let lowerBound = Math.max(0, currentSeniorityLevel - 1)\n    let upperBound = Math.min(\n      positionsInFramework.length - 1,\n      currentSeniorityLevel + 1\n    )\n\n    // ensure 3 items are shown if the current position is the lowest or highest\n    if (lowerBound == 0)\n      upperBound = Math.min(2, positionsInFramework.length - 1)\n    if (upperBound == positionsInFramework.length - 1)\n      lowerBound = Math.max(0, positionsInFramework.length - 3)\n\n    return positionsInFramework\n      .slice(lowerBound, upperBound + 1)\n      .map((p) => p.id)\n  }\n\n  get positionOptions(): Option[] {\n    const framework = store.frameworks.byId(this.frameworkId)\n\n    if (!framework) return []\n\n    return framework.positions.map((position) => ({\n      value: position.id,\n      label: position.name,\n    }))\n  }\n\n  activeUsersForPosition(positionId: string): User[] {\n    return this.initialPositionId == positionId && store.currentUser\n      ? [store.currentUser]\n      : []\n  }\n\n  seniorityLevelForPosition(positionId: string) {\n    return store.positions.byId(positionId)?.seniorityLevel || 1\n  }\n\n  nameForPosition(positionId: string) {\n    return store.positions.byId(positionId)?.name || ''\n  }\n\n  get requirementsForPosition() {\n    // note: this is a way to spoof the requirements count for the\n    // PositionCard component - we just need an array the same length\n    // as the selected position's requirements count ✨\n    return Array(this.selectedSkills.length).fill({\n      dummy: true,\n    })\n  }\n}\n","import { useWizardContext } from 'components/wizard/wizard-context'\nimport React from 'react'\nimport * as Wizard from 'components/wizard'\nimport * as AppFramePreview from 'components/onboarding-build-wizard/app-frame-preview'\nimport { Option, SelectInput } from 'components/atoms/select-input'\nimport { InputGroup, PositionCard } from 'src/design-system'\nimport { observer } from 'mobx-react-lite'\nimport { AddPositionStepVm } from './add-position-step-vm'\nimport { useWizard } from 'react-use-wizard'\nimport { errorToast } from 'app/packs/src/utils/error-toast'\nimport { YourPositionCoachMark } from './your-position-coach-mark'\nimport { trackWizardStepCompleted } from '../wizard-tracking-helper'\nimport { BuildWizardBanner } from '../build-wizard-banner'\nimport { WizardPositionsVm } from './wizard-positions-vm'\nimport { MultiValue } from 'react-select'\n\nexport type WizardPositionOption = Option & {\n  seniorityLevel: number\n}\n\nexport const AddPositionStep = observer(() => {\n  const { nextStep } = useWizard()\n\n  const {\n    teamName,\n    initialPositionId,\n    setInitialPositionId,\n    setSelectedPositions,\n    selectedPositions,\n    teamDiscipline,\n    frameworkId,\n    selectedSkills,\n  } = useWizardContext()\n\n  const vm = new AddPositionStepVm(frameworkId, initialPositionId)\n\n  const wizardPositionsVm = React.useMemo(() => {\n    return new WizardPositionsVm(frameworkId, initialPositionId, selectedSkills)\n  }, [frameworkId, initialPositionId, selectedSkills])\n\n  const defaultValues =\n    selectedPositions.length == 0\n      ? undefined\n      : selectedPositions\n          .map((positionId) => {\n            return vm.positionOptions.find((o) => o.value === positionId)\n          })\n          .filter(Boolean)\n\n  const [selectedOptions, setSelectedOptions] = React.useState<\n    WizardPositionOption[]\n  >((defaultValues as WizardPositionOption[]) || [])\n\n  const onClickContinue = () => {\n    if (initialPositionId) {\n      trackWizardStepCompleted({\n        step: 'add_position',\n        initialPositionId,\n        positionName: vm.selectedPosition?.name || '',\n      })\n      nextStep()\n    } else {\n      errorToast('Please choose your position.')\n    }\n  }\n\n  return (\n    <Wizard.Step>\n      <Wizard.LeftPane\n        onClickContinue={onClickContinue}\n        disableContinue={selectedPositions.length < vm.POSITION_SELECT_LIMT}\n      >\n        <Wizard.StepTitle title=\"Add positions\" />\n\n        <InputGroup.Root>\n          <InputGroup.Label className=\"mb-4\">\n            <span>\n              Select 3 positions <span className=\"text-gray-600\">*</span>\n            </span>\n            <div className=\"my-2\">\n              <SelectInput\n                name=\"position\"\n                multi\n                closeMenuOnSelect={false}\n                className=\"font-normal\"\n                defaultValue={defaultValues as MultiValue<Option>}\n                placeholder=\"Select position\"\n                value={selectedOptions}\n                isClearable={true}\n                onChange={(option) => {\n                  const values = option as WizardPositionOption[]\n                  if (values && values.length <= vm.POSITION_SELECT_LIMT) {\n                    setSelectedOptions(values)\n                    const sorted = values.sort(\n                      (a, b) => a.seniorityLevel - b.seniorityLevel\n                    )\n\n                    const mostSenior = sorted[sorted.length - 1]\n                    setInitialPositionId(\n                      mostSenior && mostSenior.value.toString()\n                    )\n\n                    setSelectedPositions(sorted.map((o) => o.value.toString()))\n                  }\n\n                  if (!values || values.length === 0) {\n                    setInitialPositionId('')\n                    setSelectedPositions([])\n                  }\n                }}\n                options={vm.positionOptions}\n              />\n            </div>\n          </InputGroup.Label>\n        </InputGroup.Root>\n\n        <BuildWizardBanner>\n          Positions sit in a Track to help your team visualise their progression\n          path. A team can have multiple Tracks - for example IC and Management.\n        </BuildWizardBanner>\n      </Wizard.LeftPane>\n      <Wizard.RightPane className=\"flex overflow-hidden\">\n        <AppFramePreview.Wrapper\n          teamName={teamName}\n          contentClassName=\"pl-20 pt-24 w-full\"\n          wrapperClass=\"mt-[150px] ml-16 w-full\"\n        >\n          {initialPositionId && (\n            <div className=\"h-3 mb-4 ml-1 font-bold text-base text-gray-600\">\n              Individual Contributors\n            </div>\n          )}\n          <div className=\"flex flex-row items-center gap-x-2\">\n            {selectedPositions &&\n              selectedPositions.map((positionId, index) => (\n                <>\n                  <PositionCard\n                    key={index}\n                    className=\"pointer-events-none\"\n                    parentDiscipline={{ id: 1, name: teamDiscipline }}\n                    position={{\n                      seniorityLevel:\n                        wizardPositionsVm.seniorityLevelForPosition(positionId),\n                      name: wizardPositionsVm.nameForPosition(positionId),\n                      customLabel: `P${index + 1}`,\n                      activeUsers: wizardPositionsVm.activeUsersForPosition(\n                        positionId\n                      ) as any,\n                      requirements: wizardPositionsVm.requirementsForPosition,\n                    }}\n                    permissions={{ showLabels: true }}\n                  />\n                  {selectedPositions.length === vm.POSITION_SELECT_LIMT &&\n                    index === selectedPositions.length - 1 && (\n                      <YourPositionCoachMark />\n                    )}\n                </>\n              ))}\n          </div>\n        </AppFramePreview.Wrapper>\n      </Wizard.RightPane>\n    </Wizard.Step>\n  )\n})\n","import React from 'react'\n\nexport const SummaryPositionCoachMark = () => {\n  // TODO: this needs a design system change before enabling, to allow\n  // clicking on a position card to open the position modal\n  return null\n\n  return (\n    <div className=\"relative\">\n      {/* circle svg */}\n      <svg\n        width=\"253\"\n        height=\"249\"\n        viewBox=\"0 0 253 249\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        className=\"absolute right-[-650px] top-[-120px] pointer-events-none z-50\"\n      >\n        <path\n          d=\"M106.134 2C70.0659 2 42.2465 24.205 24.3881 54.4839C12.1803 75.1822 3.3594 96.1501 2.23591 120.555C1.45826 137.447 2.34417 154.789 8.85748 170.574C22.3083 203.171 45.286 227.457 77.6616 242.115C91.402 248.336 107.122 247.905 121.605 244.761C139.81 240.808 158.51 235.251 175.962 228.769C194.674 221.819 214.389 214.987 230.078 202.257C245.706 189.575 248.99 167.874 250.605 148.931C252.957 121.358 244.634 87.2675 230.259 63.4417C219.41 45.4603 200.357 31.8576 181.861 22.6809C140.177 2 117.512 19.2432 90.9648 17.15\"\n          stroke=\"#2E9E5D\"\n          strokeWidth=\"3\"\n          strokeLinecap=\"round\"\n        />\n      </svg>\n\n      <div className=\"absolute right-[-860px] top-[-10px] text-green-700 italic text-sm w-[200px]\">\n        Try clicking into a position to see what you’ve just built.\n      </div>\n    </div>\n  )\n}\n","import { useWizardContext } from 'components/wizard/wizard-context'\nimport React from 'react'\nimport * as Wizard from 'components/wizard'\nimport * as AppFramePreview from 'components/onboarding-build-wizard/app-frame-preview'\n\nimport { FrameworkPage, PositionCard, RootProvider } from 'src/design-system'\nimport { WizardFrameworkVm } from './wizard-framework-vm'\nimport { WizardPositionsVm } from './wizard-positions-vm'\nimport { SummaryPositionCoachMark } from './summary-position-coach-mark'\n\nexport const SummaryStep = () => {\n  const {\n    orgName,\n    teamName,\n    role,\n    orgSize,\n    teamDiscipline,\n    frameworkId,\n    initialPositionId,\n    selectedPositions,\n    selectedSkills,\n    setSelectedSkills,\n    selectedRequirementLevels,\n    setSelectedRequirementLevels,\n    activeTab,\n    setTabOptions,\n    setActiveTab,\n    aiSkillName,\n    aiSkillGenerationTaskId,\n  } = useWizardContext()\n\n  const frameworkVm = new WizardFrameworkVm(\n    orgName,\n    teamName,\n    role,\n    orgSize,\n    frameworkId,\n    initialPositionId,\n    teamDiscipline,\n    selectedPositions,\n    selectedSkills,\n    setSelectedSkills,\n    selectedRequirementLevels,\n    setSelectedRequirementLevels,\n    aiSkillName,\n    aiSkillGenerationTaskId\n  )\n\n  React.useEffect(() => {\n    window.scrollTo(0, 0)\n  }, [])\n\n  const positionsVm = React.useMemo(() => {\n    return new WizardPositionsVm(frameworkId, initialPositionId, selectedSkills)\n  }, [frameworkId, initialPositionId, selectedSkills])\n\n  React.useEffect(() => {\n    if (!activeTab) {\n      setTabOptions([\n        { value: 'positions', label: 'Positions' },\n        { value: 'framework', label: 'Framework' },\n      ])\n      setActiveTab({ value: 'positions', label: 'Positions' })\n    }\n  }, [activeTab, setActiveTab, setTabOptions])\n\n  return (\n    <Wizard.Step>\n      <Wizard.FullPage>\n        <AppFramePreview.Wrapper\n          wrapperClass=\"w-min md:min-w-[750px] lg:min-w-[1230px]\"\n          contentClassName=\"w-min\"\n          teamName={teamName}\n          enableTabs\n          enableInvite\n        >\n          <AppFramePreview.Tab name=\"positions\">\n            <div className=\"h-3 mb-4 ml-1 mt-8 font-bold text-base text-gray-600\">\n              Individual Contributors\n            </div>\n            <div className=\"flex flex-row items-start gap-x-2\">\n              <SummaryPositionCoachMark />\n              {selectedPositions &&\n                selectedPositions.map((positionId, index) => (\n                  <PositionCard\n                    key={index}\n                    className=\"pointer-events-none\"\n                    parentDiscipline={{ id: 1, name: teamDiscipline }}\n                    position={{\n                      seniorityLevel:\n                        positionsVm.seniorityLevelForPosition(positionId),\n                      name: positionsVm.nameForPosition(positionId),\n                      customLabel: `${\n                        teamDiscipline[0]\n                      }${positionsVm.seniorityLevelForPosition(positionId)}`,\n                      activeUsers: positionsVm.activeUsersForPosition(\n                        positionId\n                      ) as any,\n                      requirements: positionsVm.requirementsForPosition,\n                    }}\n                    permissions={{ showLabels: true }}\n                  />\n                ))}\n            </div>\n          </AppFramePreview.Tab>\n          <AppFramePreview.Tab name=\"framework\">\n            <FrameworkPage\n              disciplines={[frameworkVm.frameworkDiscipline as any]}\n              categories={frameworkVm.categorisedFrameworkSkills as any}\n              requirements={selectedRequirementLevels as any}\n              uncategorisedSkills={[]}\n              permissions={{\n                allowChangeRequirement: false,\n              }}\n            />\n          </AppFramePreview.Tab>\n        </AppFramePreview.Wrapper>\n      </Wizard.FullPage>\n    </Wizard.Step>\n  )\n}\n","import React from 'react'\nimport * as Wizard from 'components/wizard'\n\nimport { OrgNameStep } from './steps/org-name-step'\nimport { YourTeamStep } from './steps/your-team-step'\nimport { ChooseSomeSkillsStep } from './steps/choose-some-skills-step'\nimport { AddPositionStep } from './steps/add-position-step'\nimport { SummaryStep } from './steps/summary-step'\n\nexport const BuildWizardPage = () => {\n  return (\n    <div className=\"min-h-screen h-full\">\n      <Wizard.Root>\n        <OrgNameStep />\n        <YourTeamStep />\n        <AddPositionStep />\n        <ChooseSomeSkillsStep />\n        <SummaryStep />\n      </Wizard.Root>\n    </div>\n  )\n}\n","import * as React from 'react'\n\ntype OnboardingFrameworkConfirmationProps = {\n  onUndoClick: (e: React.MouseEvent<HTMLElement>) => void\n}\n\nexport const OnboardingFrameworkConfirmation: React.VFC<\n  OnboardingFrameworkConfirmationProps\n> = (props) => {\n  const { onUndoClick } = props\n\n  return (\n    <>\n      {'Template removed.'}\n      <button type=\"button\" onClick={onUndoClick}>\n        Undo\n      </button>\n    </>\n  )\n}\n","import React from 'react'\nimport { store } from 'store/index'\nimport { trackEvent } from '../../services/event-tracker'\nimport { successToast } from '../../utils/success-toast'\nimport { OnboardingFrameworkConfirmation } from './onboarding-framework-confirmation'\n\nexport class OnboardingFrameworkSetupHelperVm {\n  constructor(\n    private teamId?: string | null,\n    private setShowTemplateConfirmation?: (\n      showTemplateConfirmation: boolean\n    ) => void\n  ) {}\n\n  readonly disciplines = [\n    'Engineering (software)',\n    'Engineering (frontend)',\n    'Engineering (backend)',\n    'Engineering (mobile)',\n    'Engineering (department)',\n    'Product Management',\n    'Design (product)',\n    'Design (brand)',\n    'Design (UX/UI)',\n    'Data (science & analysis)',\n    'User Research',\n    'Marketing (B2C)',\n    'Marketing (B2B)',\n    'Customer Success',\n    'Sales',\n    'People',\n    'Other',\n  ]\n\n  async onResetTemplate() {\n    trackEvent('$track_onboarding_questionnaire_reset_template_clicked', {\n      team_id: this.teamId,\n    })\n\n    if (!this.teamId) return\n\n    await store.teams.byId(this.teamId)?.destroy()\n\n    window.location.href = '/orgs/new?use_build_wizard=true'\n  }\n\n  get toastContent() {\n    return (\n      <OnboardingFrameworkConfirmation\n        onUndoClick={(e) => this.onRestoreClick(e)}\n      />\n    )\n  }\n\n  onRestoreClick(e: React.MouseEvent<HTMLElement>) {\n    e.stopPropagation()\n    e.preventDefault()\n\n    this.onUndoReset()\n  }\n\n  async onUndoReset() {\n    if (!this.teamId) return\n\n    await store.teams.restore(this.teamId)\n\n    this.setShowTemplateConfirmation?.(true)\n  }\n\n  get disciplineOptions() {\n    return this.disciplines.map((p) => {\n      return { label: p, value: p }\n    })\n  }\n}\n","import * as React from 'react'\nimport { Button, Card, Input } from 'src/design-system'\nimport { Toaster } from 'react-hot-toast'\nimport { SelectInput } from '../atoms/select-input'\nimport { WithAnalytics } from '../with-analytics'\nimport { OnboardingFrameworkSetupHelperVm } from './onboarding-framework-setup-helper-vm'\n\ntype OnboardingFrameworkSetupHelperProps = {\n  teamId: string | null\n  teamName: string\n  frameworkName: string\n  image: string\n  avatar: string\n}\n\nexport const OnboardingFrameworkSetupHelper: React.VFC<\n  OnboardingFrameworkSetupHelperProps\n> = (props) => {\n  const { teamId, teamName, frameworkName, avatar, image } = props\n\n  const [showTemplateConfirmation, setShowTemplateConfirmation] =\n    React.useState<boolean>(teamId !== null)\n\n  const vm = new OnboardingFrameworkSetupHelperVm(\n    teamId,\n    setShowTemplateConfirmation\n  )\n\n  return (\n    <>\n      <Toaster\n        toastOptions={{\n          style: {\n            maxWidth: '500px',\n            borderRadius: '0.25rem',\n          },\n        }}\n      />\n      {showTemplateConfirmation ? (\n        <>\n          <div className=\"mb-2\">You&apos;ve chosen</div>\n          <Card className=\"m-0 mb-8\">\n            <img\n              src={image}\n              className=\"object-cover h-52 w-full mb-6 rounded-md\"\n            />\n\n            <h4 className=\"mb-2 text-xl\">{frameworkName}</h4>\n            <p className=\"flex items-center text-sm\">\n              By{' '}\n              <span\n                className=\"inline mx-1\"\n                dangerouslySetInnerHTML={{\n                  __html: avatar,\n                }}\n              ></span>\n              {teamName}\n            </p>\n          </Card>\n          <div className=\"flex gap-x-2\">\n            <WithAnalytics\n              event=\"$track_onboarding_questionnaire_continue_clicked\"\n              params={{ step: 'three' }}\n            >\n              <Button variant=\"default\" type=\"submit\">\n                Continue with this template\n              </Button>\n            </WithAnalytics>\n            <Button\n              variant=\"outline\"\n              type=\"button\"\n              onClick={() => vm.onResetTemplate()}\n            >\n              Start from scratch\n            </Button>\n          </div>\n        </>\n      ) : (\n        <>\n          <h3 className=\"mb-2 text-base text-gray-800\">\n            What&apos;s your track?\n          </h3>\n          <div className=\"form-group m-0 onboarding-questionnaire-tools relative\">\n            <div className=\"col-md-6 p-0\">\n              <SelectInput\n                name=\"org[onboarding_survey_attributes][whats_your_discipline]\"\n                placeholder=\"Select a track\"\n                options={vm.disciplineOptions}\n              />\n            </div>\n            <h3 className=\"mt-10 mb-2 text-base text-gray-800\">\n              How many people are there in the team?\n            </h3>\n            <div className=\"form-group m-0 relative\">\n              <Input\n                name=\"org[onboarding_survey_attributes][how_many_people_are_there_in_the_team]\"\n                type=\"number\"\n                min={1}\n                step={1}\n                className=\"col-md-2\"\n              />\n            </div>\n            <div className=\"bottom mt-10\">\n              <WithAnalytics\n                event=\"$track_onboarding_questionnaire_continue_clicked\"\n                params={{ step: 'three' }}\n              >\n                <Button variant=\"default\">Finish & start exploring</Button>\n              </WithAnalytics>\n            </div>\n          </div>\n        </>\n      )}\n    </>\n  )\n}\n","import { forRails } from 'components/for-rails'\nimport { BuildWizardPage } from 'components/onboarding-build-wizard'\nimport { OnboardingFrameworkSetupHelper } from 'components/onboarding-framework-setup-helper/onboarding-framework-setup-helper'\nimport { registerComponents } from '../src/utils/react/registry'\n\nregisterComponents({\n  OnboardingFrameworkSetupHelper: forRails(OnboardingFrameworkSetupHelper),\n  BuildWizardPage: forRails(BuildWizardPage),\n})\n"],"names":["WizardContext","React.createContext","WizardContextProvider","observer","children","localStorageKey","_a","store","withPrefix","key","orgName","setOrgName","useLocalStorage","_c","_b","teamName","setTeamName","teamDiscipline","setTeamDiscipline","frameworkId","setFrameworkId","role","setRole","orgSize","setOrgSize","initialPositionId","setInitialPositionId","selectedPositions","setSelectedPositions","selectedSkills","setSelectedSkills","selectedRequirementLevels","setSelectedRequirementLevels","aiSkillGenerationTaskId","setAiSkillGenerationTaskId","aiSkillName","setAiSkillName","tabOptions","setTabOptions","React.useState","activeTab","setActiveTab","React.useEffect","fetchDisciplines","framework","f","jsx","useWizardContext","context","React.useContext","Root","props","Toaster","BaseWizard","Step","className","cn","ProgressionLogo","trackWizardStepCompleted","extraData","trackEvent","trackWizardRequirementChange","trackWizardEvent","eventName","LeftPane","showSkip","disableContinue","onClickContinue","previousStep","isFirstStep","stepCount","activeStep","isLoading","useWizard","jsxs","Progress","Button","RightPane","StepTitle","title","subtitle","helpText","Banner","FullPage","getStartedFeatureFlagEnabled","keepBuildingLink","WithAnalytics","OrgPreviewCard","NavCoachMark","InviteCoachMark","SideNavBarSquare","NavBarPill","size","Wrapper","enableTabs","enableInvite","enableTopNav","contentClassName","wrapperClass","small","setTab","tab","Avatar","Fragment","index","ModalButton","INVITE_MODAL_ID","ArrowSquareOut","Tab","name","OrgPreview","AppFramePreview.Wrapper","roles","RoleOptions","onClick","value","OnboardingOption","Users","Handshake","UserCircle","selected","icon","Icon","isSelected","sizes","OrgSizeOptions","options","defaultValue","option","SelectInput","BuildWizardBanner","LightbulbFilament","OrgNameStep","nextStep","Wizard.Step","Wizard.LeftPane","errorToast","Wizard.StepTitle","InputGroup.Root","InputGroup.Label","Input","e","Wizard.RightPane","YourTeamStepVm","discipline","YourTeamStep","onDisciplineChange","React","event","vm","AiSkillGeneratorVm","asyncTasks","task","taskId","AiSkillGenerator","onGenerationComplete","useStore","aiClicked","setAiClicked","handleStart","poll","successToast","handleKeyDown","LoadingContent","Sparkle","ArrowElbowDownLeft","X","WizardFrameworkVm","skill","r","alreadySelected","category","selectedSkill","requirement","requirements","position","id","clickProps","newRequirementLevels","currentSkill","currentSkillLevels","skillLevel","aiSkill","skillLevelArray","level","acc","cat","categoryName","positionId","limit","frameworkSkill","craftSkill","positionSkill","ChooseSomeSkillsStep","saving","setSaving","MIN_SKILLS_TO_SELECT","FrameworkPage","AddPositionStepVm","a","b","YourPositionCoachMark","WizardPositionsVm","currentSeniorityLevel","positionsInFramework","p","lowerBound","upperBound","AddPositionStep","wizardPositionsVm","defaultValues","o","selectedOptions","setSelectedOptions","values","sorted","mostSenior","PositionCard","SummaryPositionCoachMark","SummaryStep","frameworkVm","positionsVm","Wizard.FullPage","AppFramePreview.Tab","BuildWizardPage","Wizard.Root","OnboardingFrameworkConfirmation","onUndoClick","OnboardingFrameworkSetupHelperVm","teamId","setShowTemplateConfirmation","OnboardingFrameworkSetupHelper","frameworkName","avatar","image","showTemplateConfirmation","Card","registerComponents","forRails"],"mappings":"gtIAsEMA,GAAgBC,EAAAA,cAA8C,IAAI,EAE3DC,GAAwBC,EACnC,CAAC,CAAE,SAAAC,CAAA,IAA8C,cAC/C,MAAMC,EAAkB,sBAAqBC,GAAAC,EAAM,cAAN,YAAAD,GAAmB,EAAE,GAC5DE,EAAcC,IAAgB,GAAGJ,CAAe,IAAII,EAAG,GAEvD,CAACC,EAASC,CAAU,EAAIC,EAC5BJ,EAAW,UAAU,IACrBK,IAAAC,GAAAP,EAAM,cAAN,YAAAO,GAAmB,MAAnB,YAAAD,GAAwB,OAAQ,EAAA,EAE5B,CAACE,EAAUC,CAAW,EAAIJ,EAAgBJ,EAAW,WAAW,EAAG,EAAE,EACrE,CAACS,EAAgBC,CAAiB,EAAIN,EAC1CJ,EAAW,iBAAiB,EAC5B,EAAA,EAEI,CAACW,EAAaC,CAAc,EAAIR,EACpCJ,EAAW,cAAc,EACzB,EAAA,EAEI,CAACa,EAAMC,CAAO,EAAIV,EAAgBJ,EAAW,MAAM,EAAG,EAAE,EACxD,CAACe,EAASC,CAAU,EAAIZ,EAAgBJ,EAAW,UAAU,EAAG,EAAE,EAElE,CAACiB,EAAmBC,CAAoB,EAAId,EAChDJ,EAAW,qBAAqB,EAChC,EAAA,EAEI,CAACmB,EAAmBC,CAAoB,EAAIhB,EAChDJ,EAAW,oBAAoB,EAC/B,CAAC,CAAA,EAEG,CAACqB,EAAgBC,CAAiB,EAAIlB,EAE1CJ,EAAW,iBAAiB,EAAG,CAAA,CAAE,EAC7B,CAACuB,EAA2BC,CAA4B,EAC5DpB,EACEJ,EAAW,6BAA6B,EACxC,CAAC,CAAA,EAEC,CAACyB,EAAyBC,CAA0B,EACxDtB,EAAgBJ,EAAW,6BAA6B,EAAG,EAAE,EAEzD,CAAC2B,EAAaC,CAAc,EAAIxB,EACpCJ,EAAW,eAAe,EAC1B,EAAA,EAGI,CAAC6B,GAAYC,EAAa,EAAIC,EAAM,SAAsB,CAAE,CAAA,EAC5D,CAACC,GAAWC,EAAY,EAAIF,EAA0B,SAAA,EAE5DG,OAAAA,EAAAA,UAAgB,IAAM,CACpB,eAAeC,IAAmB,CAC1B,MAAApC,EAAM,WAAW,SAAS,CAC9B,OAAQ,CAAE,KAAMU,EAAgB,QAAS,EAAK,EAC9C,QAAS,CACP,YACA,oBACA,kCACA,wCACA,+CACA,4BACF,CAAA,CACD,EACK,MAAA2B,GAAYrC,EAAM,WAAW,IAAI,KACpCsC,IAAMA,GAAE,OAAS5B,CAAA,EAELG,GAAAwB,IAAA,YAAAA,GAAW,KAAM,EAAE,CACpC,CACI3B,GACe0B,IACnB,EACC,CAAC1B,EAAgBG,CAAc,CAAC,EAGjC0B,EAAC9C,GAAc,SAAd,CACC,MAAO,CAEL,QAAAU,EACA,WAAAC,EAEA,KAAAU,EACA,QAAAC,EACA,QAAAC,EACA,WAAAC,EAEA,SAAAT,EACA,YAAAC,EACA,eAAAC,EACA,kBAAAC,EACA,YAAAC,EAEA,kBAAAM,EACA,qBAAAC,EAEA,kBAAAC,EACA,qBAAAC,EAEA,eAAAC,EACA,kBAAAC,EACA,0BAAAC,EACA,6BAAAC,EAEA,YAAAG,EACA,eAAAC,EACA,wBAAAH,EACA,2BAAAC,EAEA,WAAAG,GACA,cAAAC,GACA,UAAAE,GACA,aAAAC,EACF,EAEC,SAAArC,CAAA,CAAA,CAGP,CACF,EAEa2C,EAAmB,IAAM,CAC9B,MAAAC,EAAUC,aAAiBjD,EAAa,EAE9C,GAAI,CAACgD,EACH,MAAM,IAAI,MACR,8DAAA,EAIG,OAAAA,CACT,EC9LaE,GAA8BC,GAAU,CAC7C,KAAA,CAAE,SAAA/C,CAAa,EAAA+C,EAErB,SACGjD,GACC,CAAA,SAAA,CAAA4C,EAACM,GAAA,CACC,aAAc,CACZ,MAAO,CACL,SAAU,QACV,aAAc,SAChB,CACF,CAAA,CACF,EACAN,EAACO,IAAY,SAAAjD,EAAS,CACxB,CAAA,CAAA,CAEJ,ECjBakD,EAA8BH,GAAU,CAC7C,KAAA,CAAE,SAAA/C,EAAU,UAAAmD,CAAc,EAAAJ,EAEhC,SACG,MAAI,CAAA,UAAWK,EAAG,8BAA+BD,CAAS,EACxD,SAAAnD,CACH,CAAA,CAEJ,EChBeqD,GAAA,kFCER,SAASC,EACdC,EACA,CACAC,EAAW,kCAAmC,CAC5C,GAAGD,CAAA,CACJ,CACH,CAEO,SAASE,GACdF,EACA,CACAC,EAAW,0CAA2C,CACpD,GAAGD,CAAA,CACJ,CACH,CAEgB,SAAAG,GACdC,EACAJ,EACA,CACAC,EAAWG,EAAW,CAAE,GAAGJ,CAAW,CAAA,CACxC,CCTa,MAAAK,EAAsCb,GAAU,CAC3D,KAAM,CAAE,SAAAc,EAAU,gBAAAC,EAAiB,SAAA9D,EAAU,gBAAA+D,GAAoBhB,EAE3D,CAAE,aAAAiB,EAAc,YAAAC,EAAa,UAAAC,EAAW,WAAAC,EAAY,UAAAC,CAAA,EACxDC,IAiBA,OAAAC,EAAC,OAAK,CAAA,UAAU,kEACd,SAAA,CAAA5B,EAAC,MAAA,CACC,IAAKW,GACL,MAAO,IACP,OAAQ,GACR,IAAI,mBACJ,UAAU,gBAAA,CACZ,EAEAiB,EAAC,MAAI,CAAA,UAAU,uBACb,SAAA,CAACA,EAAA,MAAA,CAAI,UAAU,4BACZ,SAAA,CAAA,CAACL,GACAK,EAAC,SAAA,CACC,KAAK,SACL,UAAU,iBACV,QA9BY,IAAM,CAC5BZ,GAAiB,wBAAyB,CACxC,GAAIS,CAAA,CACL,EACYH,GAAA,EA2BH,SAAUI,EAEV,SAAA,CAAC1B,EAAA,OAAA,CAAK,cAAW,GAAC,SAAE,KAAA,EAAO,MAAA,CAAA,CAC7B,EAGDmB,GACCnB,EAAC,SAAA,CACC,KAAK,SACL,UAAU,yBACV,QAlCQ,IAAM,CACxBgB,GAAiB,qBAAsB,CACrC,GAAIS,CAAA,CACL,EACeJ,GAAA,EA+BN,SAAUK,EACX,SAAA,MAAA,CAED,CAAA,EAEJ,EAECpE,CAAA,EACH,EAEAsE,EAAC,SAAO,CAAA,UAAU,iDAChB,SAAA,CAACA,EAAA,MAAA,CAAI,UAAU,yCACb,SAAA,CAAA5B,EAAC6B,GAAA,CACC,OAASJ,EAAa,GAAKD,EAAa,IACxC,iBAAiB,aACjB,cAAc,YAAA,CAChB,EACAI,EAAC,OAAK,CAAA,UAAU,kCACb,SAAA,CAAaH,EAAA,EAAE,MAAID,CAAA,EACtB,CAAA,EACF,EAEAxB,EAAC8B,EAAA,CACC,KAAK,KACL,QAAST,EACT,SAAUD,GAAmBM,EAE5B,WAAY,aAAe,UAAA,CAC9B,CAAA,EACF,CACF,CAAA,CAAA,CAEJ,ECtFaK,EAAwC1B,GAAU,CACvD,KAAA,CAAE,SAAA/C,EAAU,UAAAmD,CAAc,EAAAJ,EAG9B,OAAAL,EAAC,QAAA,CACC,UAAWU,EACT,yFACAD,CACF,EAEC,SAAAnD,CAAA,CAAA,CAGP,ECZa0E,EAAwC3B,GAAU,CAC7D,KAAM,CAAE,MAAA4B,EAAO,SAAAC,EAAU,SAAAC,CAAA,EAAa9B,EAGpC,OAAAuB,EAAC,MAAI,CAAA,UAAU,QACZ,SAAA,CAAAO,KACEC,GAAO,CAAA,QAAQ,QAAQ,UAAU,mCAC/B,SACHD,EAAA,EAEDnC,EAAA,KAAA,CAAG,UAAU,kCAAmC,SAAMiC,EAAA,EACtDC,GAAYlC,EAAC,IAAE,CAAA,UAAU,0BAA2B,SAASkC,EAAA,CAChE,CAAA,CAAA,CAEJ,ECVaG,GAAqChF,EAAUgD,GAAU,CAC9D,KAAA,CAAE,SAAA/C,CAAa,EAAA+C,EAEf,CAAE,SAAApC,GAAagC,IAEfqC,EACJ7E,EAAM,aAAa,eAAe,mBAAmB,EACvD,IAAI8E,EAAmB,yBACnB,OAAAD,IAAkDC,GAAA,0BAGpDX,EAAC,OAAK,CAAA,UAAU,uBACd,SAAA,CAACA,EAAA,MAAA,CAAI,UAAU,mFACb,SAAA,CAAA5B,EAAC,MAAA,CACC,IAAKW,GACL,MAAO,IACP,OAAQ,GACR,IAAI,mBACJ,UAAU,cAAA,CACZ,EAEAiB,EAAC,MAAI,CAAA,UAAU,gEACb,SAAA,CAACA,EAAA,KAAA,CAAG,UAAU,gCAAgC,SAAA,CAAA,sBACxB3D,EAAS,8BAAA,EAC/B,EACC+B,EAAA,IAAA,CAAE,UAAU,2BAA2B,SAGxC,gIAAA,IACC,MAAI,CAAA,UAAU,4BACb,SAACA,EAAAwC,EAAA,CAAc,MAAM,8BACnB,SAAAxC,EAAC8B,EAAO,CAAA,KAAK,KAAK,GAAG,IAAI,KAAMS,EAAkB,SAAA,qBAEjD,EACF,CACF,CAAA,CAAA,EACF,CAAA,EACF,EAEAvC,EAAC,OAAI,UAAU,mEACb,WAAC,MAAI,CAAA,UAAU,iEACZ,SAAA1C,CAAA,CACH,CACF,CAAA,CACF,CAAA,CAAA,CAEJ,CAAC,EC3DcmF,GAAA,4ECEFC,GAAe,IAExBd,EAAC,MAAI,CAAA,UAAU,WAEb,SAAA,CAAA5B,EAAC,MAAA,CACC,MAAM,MACN,OAAO,KACP,QAAQ,aACR,KAAK,OACL,MAAM,6BACN,UAAU,+DAEV,SAAAA,EAAC,OAAA,CACC,EAAE,4eACF,OAAO,UACP,YAAY,IACZ,cAAc,OAAA,CAChB,CAAA,CACF,EAGAA,EAAC,MAAA,CACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAM,6BACN,UAAU,+DAEV,SAAAA,EAAC,OAAA,CACC,EAAE,0bACF,OAAO,UACP,YAAY,IACZ,cAAc,OAAA,CAChB,CAAA,CACF,EAECA,EAAA,MAAA,CAAI,UAAU,8EAA8E,SAE7F,yBAAA,CACF,CAAA,CAAA,ECxCS2C,GAAkB,IAE3Bf,EAAC,MAAI,CAAA,UAAU,WAEb,SAAA,CAAA5B,EAAC,MAAA,CACC,MAAM,MACN,OAAO,KACP,QAAQ,aACR,KAAK,OACL,MAAM,6BACN,UAAU,8DAEV,SAAAA,EAAC,OAAA,CACC,EAAE,ySACF,OAAO,UACP,YAAY,IACZ,cAAc,OAAA,CAChB,CAAA,CACF,EAEAA,EAAC,MAAA,CACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAM,6BACN,UAAU,8DAEV,SAAAA,EAAC,OAAA,CACC,EAAE,8cACF,OAAO,UACP,YAAY,IACZ,cAAc,OAAA,CAChB,CAAA,CACF,EAECA,EAAA,MAAA,CAAI,UAAU,8EAA8E,SAE7F,wBAAA,CACF,CAAA,CAAA,ECfE4C,GAAmB,IAChB5C,EAAC,MAAI,CAAA,UAAU,8BAA+B,CAAA,EAQjD6C,EAAcxC,GAA2B,CAC7C,KAAM,CAAE,KAAAyC,EAAO,KAAM,UAAArC,CAAA,EAAcJ,EAEjC,OAAAL,EAAC,MAAA,CACC,UAAWU,EACT,wCACAoC,GAAQ,MAAQ,MAChBA,GAAQ,MAAQ,OAChBA,GAAQ,MAAQ,OAChBrC,CACF,CAAA,CAAA,CAGN,EAEasC,EAAoC1C,GAAwB,OACjE,KAAA,CACJ,SAAApC,EACA,WAAA+E,EACA,aAAAC,EACA,aAAAC,EAAe,GACf,SAAA5F,EACA,iBAAA6F,EACA,aAAAC,EACA,MAAAC,CACE,EAAAhD,EAEE,CAAE,WAAAd,EAAY,UAAAG,EAAW,aAAAC,GAAiBM,EAAiB,EAE3DqD,EAAUC,GAAmB,CACjCvC,GAAiB,mCAAoC,CACnD,IAAKuC,GAAA,YAAAA,EAAK,KAAA,CACX,EACD5D,EAAa4D,CAAG,CAAA,EAIhB,OAAA3B,EAAC,MAAA,CACC,UAAWlB,EACT,2CACA2C,GAAS,2BACTD,CACF,EAEA,SAAA,CAACxB,EAAA,MAAA,CAAI,UAAU,iLACb,SAAA,CAAA5B,EAACwD,GAAA,CACC,KAAK,KACL,eAAchG,EAAAC,EAAM,cAAN,YAAAD,EAAmB,WAAY,GAC7C,UAAU,EAAA,CACZ,IACCoF,GAAiB,EAAA,IACjBA,GAAiB,EAAA,IACjBA,GAAiB,EAAA,CAAA,EACpB,EACCM,GACCtB,EAAC,MAAA,CACC,UAAWlB,EACT,2KACF,EAEA,SAAA,CAAAkB,EAAC,MAAA,CACC,UAAWlB,EACT,oBACAsC,EAAa,UAAY,SAC3B,EAEC,SAAA,CACC/E,EAAA+B,EAAC,QAAK,UAAU,OAAQ,UAAS,CAAA,EAEjCA,EAAC6C,EAAW,CAAA,KAAK,IAAK,CAAA,EAEvBG,EAEGpB,EAAA6B,EAAA,CAAA,SAAA,CAAAzD,EAAC0C,GAAa,EAAA,EACbnD,EAAW,IAAI,CAACgE,EAAKG,IAElB1D,EAAC,SAAA,CACC,KAAK,SAEL,QAAS,IAAMsD,EAAOC,CAAG,EACzB,UAAW7C,EACT,oDACAgD,IAAU,GAAK,QACfhE,GAAA,YAAAA,EAAW,QAAS6D,EAAI,MACpB,2BACA,eACN,EAEC,SAAIA,EAAA,KAAA,EAVAG,CAAA,CAaV,CAAA,CAAA,CACH,EAGE9B,EAAA6B,EAAA,CAAA,SAAA,CAACzD,EAAA6C,EAAA,CAAW,KAAK,IAAK,CAAA,EACtB7C,EAAC6C,EAAW,CAAA,KAAK,IAAK,CAAA,EACtB7C,EAAC6C,EAAW,CAAA,KAAK,IAAK,CAAA,CAAA,EACxB,CAAA,CAAA,CAEJ,EACCI,GACCrB,EAAC,MAAI,CAAA,UAAU,4BACb,SAAA,CAAA5B,EAACwC,EAAA,CACC,MAAM,6BACN,OAAQ,CACN,OAAQ,aACR,OAAQ,eACR,aAAc,iBAChB,EAEA,SAAAZ,EAAC+B,GAAA,CACC,QAASC,GACT,WAAY,CAAE,OAAQ,cAAe,EAErC,SAAA,CAAA5D,EAAC6D,GAAe,EAAA,EAAE,SAAA,CAAA,CACpB,CAAA,CACF,IACClB,GAAgB,EAAA,CAAA,EACnB,CAAA,CAAA,CAEJ,EAEF3C,EAAC,MAAA,CACC,UAAWU,EAAGwC,GAAgB,sBAAuBC,CAAgB,EAEpE,SAAA7F,CAAA,CACH,CAAA,CAAA,CAAA,CAGN,EC5JawG,GAA4BzD,GAAoB,CACrD,KAAA,CAAE,KAAA0D,EAAM,SAAAzG,CAAa,EAAA+C,EAErB,CAAE,UAAAX,GAAcO,IAElB,OAAAP,GAAA,YAAAA,EAAW,SAAUqE,EAChB,OAGD,MAAI,CAAA,UAAWrD,EAAG,KAAK,EAAI,SAAApD,CAAS,CAAA,CAC9C,ECVa0G,GAAc3D,GAA2B,CAC9C,KAAA,CAAE,QAAAzC,CAAY,EAAAyC,EAEd0D,EAAOnG,GAAW,kBAGtB,OAAAoC,EAACiE,EAAA,CACC,aAAc,GACd,SAAUF,EACV,iBAAiB,SACjB,aAAa,0EAEb,WAAC,MACC,CAAA,SAAA,CAAA/D,EAAC,MAAA,CACC,IAAKyC,GACL,cAAY,OACZ,IAAI,GACJ,UAAU,0BAAA,CACZ,EACAb,EAAC,MAAI,CAAA,UAAU,uBACb,SAAA,CAAA5B,EAAC,MACC,CAAA,SAAA4B,EAAC,MAAI,CAAA,UAAU,QACb,SAAA,CAAA5B,EAACwD,GAAA,CACC,UAAU,8BACV,KAAK,KACL,aAAcO,EAAK,CAAC,CAAA,CACtB,EACAnC,EAAC,MAAI,CAAA,UAAU,yEACb,SAAA,CAAC5B,EAAA,KAAA,CAAG,UAAU,yBAA0B,SAAK+D,EAAA,EAC7CnC,EAAC,MAAA,CACC,MAAO,IACP,OAAQ,GACR,QAAQ,aACR,KAAK,OACL,MAAM,6BAEN,SAAA,CAAC5B,EAAA,OAAA,CAAK,MAAO,GAAI,OAAO,QAAQ,GAAG,QAAQ,KAAK,SAAU,CAAA,EAC1DA,EAAC,OAAA,CACC,EAAG,GACH,MAAO,GACP,OAAO,QACP,GAAG,QACH,KAAK,SAAA,CACP,CAAA,CAAA,CACF,CAAA,EACF,EACA4B,EAAC,MAAA,CACC,MAAO,IACP,OAAQ,IACR,QAAQ,cACR,KAAK,OACL,MAAM,6BAEN,SAAA,CAAC5B,EAAA,OAAA,CAAK,EAAE,OAAO,MAAO,GAAI,OAAQ,GAAI,GAAI,EAAG,KAAK,SAAU,CAAA,EAC5DA,EAAC,UAAO,GAAI,GAAI,GAAG,QAAQ,EAAG,GAAI,KAAK,SAAU,CAAA,EACjDA,EAAC,UAAO,GAAI,GAAI,GAAG,QAAQ,EAAG,GAAI,KAAK,SAAU,CAAA,EACjDA,EAAC,UAAO,GAAI,GAAI,GAAG,QAAQ,EAAG,GAAI,KAAK,SAAU,CAAA,EACjDA,EAAC,UAAO,GAAI,IAAK,GAAG,QAAQ,EAAG,GAAI,KAAK,SAAU,CAAA,EAClDA,EAAC,UAAO,GAAI,IAAK,GAAG,QAAQ,EAAG,GAAI,KAAK,SAAU,CAAA,CAAA,CAAA,CACpD,CAAA,CAAA,CACF,CACF,CAAA,EACAA,EAAC,MAAI,CAAA,UAAU,uCACb,SAAA4B,EAAC,MAAA,CACC,MAAO,IACP,OAAQ,IACR,QAAQ,cACR,KAAK,OACL,MAAM,6BAEN,SAAA,CAAA5B,EAAC,OAAA,CACC,EAAE,MACF,EAAE,WACF,MAAO,IACP,OAAO,SACP,GAAG,MACH,KAAK,OAAA,CACP,EACAA,EAAC,OAAA,CACC,EAAG,GACH,EAAG,GACH,MAAM,UACN,OAAO,UACP,GAAG,UACH,KAAK,SAAA,CACP,EACA4B,EAAC,IAAE,CAAA,SAAS,yBACV,SAAA,CAAA5B,EAAC,OAAA,CACC,EAAG,GACH,EAAE,UACF,MAAO,IACP,OAAQ,IACR,GAAI,EACJ,KAAK,SAAA,CACP,EACAA,EAAC,OAAA,CACC,EAAE,wtBACF,KAAK,SAAA,CACP,CAAA,EACF,EACAA,EAAC,OAAA,CACC,EAAE,OACF,EAAE,UACF,MAAO,GACP,OAAQ,GACR,GAAG,MACH,KAAK,UACL,OAAO,OAAA,CACT,EACAA,EAAC,OAAA,CACC,EAAE,OACF,EAAE,UACF,MAAO,GACP,OAAQ,GACR,GAAG,MACH,KAAK,UACL,OAAO,OAAA,CACT,EACAA,EAAC,OAAA,CACC,EAAE,OACF,EAAE,UACF,MAAO,GACP,OAAQ,GACR,GAAG,MACH,KAAK,SAAA,CACP,EACAA,EAAC,OAAA,CACC,EAAE,OACF,EAAE,UACF,MAAO,GACP,OAAQ,GACR,GAAG,MACH,OAAO,OAAA,CACT,EACAA,EAAC,OAAA,CACC,EAAG,GACH,EAAE,UACF,MAAM,UACN,OAAO,UACP,GAAG,UACH,KAAK,SAAA,CACP,EACAA,EAAC,OAAA,CACC,EAAE,UACF,EAAE,UACF,MAAM,UACN,OAAO,UACP,GAAG,UACH,KAAK,SAAA,CACP,EACAA,EAAC,OAAA,CACC,EAAE,MACF,EAAE,WACF,MAAO,IACP,OAAO,SACP,GAAG,MACH,OAAO,SAAA,CACT,EACAA,EAAC,OAAA,CACC,EAAE,MACF,EAAE,SACF,MAAO,IACP,OAAO,SACP,GAAG,MACH,KAAK,OAAA,CACP,EACAA,EAAC,OAAA,CACC,EAAG,GACH,EAAE,SACF,MAAM,UACN,OAAO,UACP,GAAG,UACH,KAAK,SAAA,CACP,EACA4B,EAAC,IAAE,CAAA,SAAS,yBACV,SAAA,CAAA5B,EAAC,OAAA,CACC,EAAG,GACH,EAAE,UACF,MAAO,IACP,OAAQ,IACR,GAAI,EACJ,KAAK,SAAA,CACP,EACAA,EAAC,OAAA,CACC,EAAE,mhCACF,KAAK,SAAA,CACP,CAAA,EACF,EACAA,EAAC,OAAA,CACC,EAAE,OACF,EAAE,UACF,MAAO,GACP,OAAQ,GACR,GAAG,MACH,KAAK,UACL,OAAO,OAAA,CACT,EACAA,EAAC,OAAA,CACC,EAAE,OACF,EAAE,UACF,MAAO,GACP,OAAQ,GACR,GAAG,MACH,KAAK,UACL,OAAO,OAAA,CACT,EACAA,EAAC,OAAA,CACC,EAAE,OACF,EAAE,UACF,MAAO,GACP,OAAQ,GACR,GAAG,MACH,KAAK,SAAA,CACP,EACAA,EAAC,OAAA,CACC,EAAE,OACF,EAAE,UACF,MAAO,GACP,OAAQ,GACR,GAAG,MACH,OAAO,OAAA,CACT,EACAA,EAAC,OAAA,CACC,EAAG,GACH,EAAE,UACF,MAAM,UACN,OAAO,UACP,GAAG,UACH,KAAK,SAAA,CACP,EACAA,EAAC,OAAA,CACC,EAAE,UACF,EAAE,UACF,MAAM,UACN,OAAO,UACP,GAAG,UACH,KAAK,SAAA,CACP,EACAA,EAAC,OAAA,CACC,EAAE,MACF,EAAE,SACF,MAAO,IACP,OAAO,SACP,GAAG,MACH,OAAO,SAAA,CACT,IACC,OACC,CAAA,SAAA,CAACA,EAAA,WAAA,CAAS,GAAG,mBACX,SAAAA,EAAC,OAAA,CACC,EAAG,GACH,EAAE,UACF,MAAO,IACP,OAAQ,IACR,GAAI,EACJ,KAAK,OAAA,CAAA,EAET,EACAA,EAAC,WAAS,CAAA,GAAG,mBACX,SAAAA,EAAC,OAAA,CACC,EAAG,GACH,EAAE,UACF,MAAO,IACP,OAAQ,IACR,GAAI,EACJ,KAAK,OAAA,CAAA,EAET,CAAA,EACF,CAAA,CAAA,CAAA,EAEJ,CAAA,EACF,CAAA,EACF,CAAA,CAAA,CAGN,ECtRMkE,GAAQ,CACZ,QAAS,UACT,GAAI,gCACJ,MAAO,OACT,EAEaC,GAAc,IAAM,CAC/B,KAAM,CAAE,KAAA5F,EAAM,QAAAC,CAAQ,EAAIyB,EAAiB,EAErCmE,EAAWC,GAAkB,CACjC7F,EAAQ6F,CAAK,CAAA,EAIb,OAAAzC,EAAC,MAAI,CAAA,UAAU,yCACb,SAAA,CAAA5B,EAACsE,GAAA,CACC,MAAOJ,GAAM,QACb,SAAU3F,EACV,QAAA6F,EACA,KAAMG,GAEN,SAACvE,EAAA,IAAA,CAAE,UAAU,qBAAqB,SAAmB,sBAAA,CAAA,CACvD,EAEAA,EAACsE,GAAA,CACC,MAAOJ,GAAM,GACb,SAAU3F,EACV,QAAA6F,EACA,KAAMI,EAAA,CACR,EAEAxE,EAACsE,GAAA,CACC,MAAOJ,GAAM,MACb,SAAU3F,EACV,QAAA6F,EACA,KAAMK,EAAA,CACR,CACF,CAAA,CAAA,CAEJ,EAUMH,GAAoBjE,GAAiC,CACzD,KAAM,CAAE,MAAAgE,EAAO,SAAAK,EAAU,QAAAN,EAAS,KAAAO,EAAM,SAAArH,CAAa,EAAA+C,EAE/CuE,EAAOD,EAEPE,EAAaH,IAAaL,EAG9B,OAAAzC,EAAC,SAAA,CACC,KAAK,SACL,UAAWlB,EACT,mFACAmE,EAAa,8BAAgC,iBAC/C,EACA,QAAS,IAAMT,GAAA,YAAAA,EAAUC,GAEzB,SAAA,CAAArE,EAAC4E,EAAA,CACC,UAAWlE,EACT,eACAmE,EAAa,iBAAmB,eAClC,EACA,OAAO,MAAA,CACT,EACC7E,EAAA,MAAA,CAAI,UAAU,0BAA2B,SAAMqE,EAAA,EAC/C/G,CAAA,CAAA,CAAA,CAGP,EC7EMwH,GAAQ,CAAC,OAAQ,SAAU,YAAa,eAAgB,SAAS,EAE1DC,GAAiB,IAAM,CAClC,KAAM,CAAE,QAAAtG,EAAS,WAAAC,CAAW,EAAIuB,EAAiB,EAE3C+E,EAAUF,GAAM,IAAKhC,IAAU,CACnC,MAAOA,EACP,MAAOA,CACP,EAAA,EAEImC,EAAeD,EAAQ,KAAME,GAAWA,EAAO,QAAUzG,CAAO,EAGpE,OAAAuB,EAAC,MAAI,CAAA,UAAU,SACb,SAAAA,EAACmF,EAAA,CACC,UAAU,SACV,QAAAH,EACA,KAAM,WACN,SAAWE,GACTxG,EAAW,OAAQwG,GAAA,YAAAA,EAAmB,KAAK,GAAK,EAAE,EAEpD,aAAAD,CAAA,CAEJ,CAAA,CAAA,CAEJ,ECzBaG,EAAoB,CAAC,CAChC,SAAA9H,CACF,IAGGsE,EAAAQ,GAAA,CAAO,QAAQ,UAAU,UAAU,qCAClC,SAAA,CAAApC,EAACqF,GAAkB,CAAA,OAAO,OAAO,UAAU,wBAAwB,EAClE/H,CAAA,EACH,ECCWgI,GAAc,IAAM,CAC/B,KAAM,CAAE,QAAA1H,EAAS,WAAAC,EAAY,QAAAY,EAAS,KAAAF,CAAA,EAAS0B,IAEzC,CAAE,SAAAsF,GAAa5D,IAkBnB,OAAAC,EAAC4D,EAAA,CACC,SAAA,CAAA5D,EAAC6D,EAAA,CACC,gBAlBkB,IAAM,SACxB7H,GACuBgD,EAAA,CACvB,KAAM,WACN,iBAAgB5C,GAAAR,EAAAC,EAAM,cAAN,YAAAD,EAAmB,MAAnB,YAAAQ,EAAwB,QAASJ,EACjD,KAAMa,EACN,KAAAF,CAAA,CACD,EAEQgH,KAETG,EAAW,kCAAkC,CAC/C,EAOI,gBAAiB,CAAC9H,EAElB,SAAA,CAAAoC,EAAC2F,EAAA,CACC,MAAM,eACN,SAAS,qNAAA,CACX,EAEA/D,EAAC,MAAI,CAAA,UAAU,wBACb,SAAA,CAACA,EAAAgE,EAAA,CACC,SAAA,CAAA5F,EAAC6F,EAAA,CACC,SAAAjE,EAAC,OAAK,CAAA,SAAA,CAAA,sBACgB5B,EAAA,OAAA,CAAK,UAAU,gBAAgB,SAAC,IAAA,CAAA,CAAA,CACtD,CACF,CAAA,EACAA,EAAC8F,GAAA,CACC,KAAK,WACL,MAAOlI,EACP,SAAQ,GACR,SAAWmI,GAAMlI,EAAWkI,EAAE,OAAO,KAAK,CAAA,CAC5C,CAAA,EACF,EAEAnE,EAACgE,EAAA,CACC,SAAA,CAAC5F,EAAA6F,EAAA,CAAiB,SAAiB,mBAAA,CAAA,IAClCd,GAAe,EAAA,CAAA,EAClB,EAEAnD,EAACgE,EAAA,CACC,SAAA,CAAC5F,EAAA6F,EAAA,CAAiB,SAAS,WAAA,CAAA,IAC1B1B,GAAY,EAAA,CAAA,EACf,EAEAnE,EAACoF,GAAkB,SAEnB,4DAAA,CAAA,CAAA,EACF,CAAA,CAAA,CACF,EACApF,EAACgG,EAAA,CAAiB,UAAU,kBAC1B,SAAAhG,EAACgE,GAAW,CAAA,QAAApG,CAAkB,CAAA,EAChC,CACF,CAAA,CAAA,CAEJ,EC/EO,MAAMqI,EAAe,CAC1B,YAAoB9H,EAAwB,CAAxB,KAAA,eAAAA,EAEpB,KAAS,YAAc,CACrB,CAAE,KAAM,yBAA0B,MAAO,wBAAyB,EAClE,CACE,KAAM,yBACN,MAAO,iCACT,EACA,CACE,KAAM,wBACN,MAAO,kCACT,EACA,CAAE,KAAM,uBAAwB,MAAO,+BAAgC,EACvE,CAAE,KAAM,2BAA4B,MAAO,8BAA+B,EAC1E,CAAE,KAAM,qBAAsB,MAAO,+BAAgC,EACrE,CAAE,KAAM,mBAAoB,MAAO,2BAA4B,EAC/D,CAAE,KAAM,iBAAkB,MAAO,0BAA2B,EAC5D,CAAE,KAAM,iBAAkB,MAAO,sBAAuB,EACxD,CAAE,KAAM,4BAA6B,MAAO,iBAAkB,EAC9D,CAAE,KAAM,gBAAiB,MAAO,qBAAsB,EACtD,CAAE,KAAM,kBAAmB,MAAO,4BAA6B,EAC/D,CAAE,KAAM,kBAAmB,MAAO,4BAA6B,EAC/D,CAAE,KAAM,mBAAoB,MAAO,6BAA8B,EACjE,CAAE,KAAM,QAAS,MAAO,kBAAmB,EAC3C,CAAE,KAAM,SAAU,MAAO,oBAAqB,CAAA,CAxBH,CA2B7C,IAAI,mBAAoB,CACtB,OAAO,KAAK,YAAY,IAAK+H,IAAgB,CAC3C,MAAOA,EAAW,MAClB,MAAOA,EAAW,IAClB,EAAA,CACJ,CAEA,IAAI,oBAAqB,CACvB,OAAO,KAAK,kBAAkB,KAC3BA,GAAeA,EAAW,QAAU,KAAK,cAAA,CAE9C,CACF,CCvBO,MAAMC,GAAe,IAAM,CAC1B,KAAA,CACJ,SAAAlI,EACA,YAAAC,EACA,eAAAC,EACA,kBAAAC,EACA,qBAAAU,EACA,qBAAAF,GACEqB,EAAiB,EAEf,CAAE,SAAAsF,GAAa5D,IAEfN,EAAkB,IAAM,CACxBpD,GAAYE,GACWyC,EAAA,CACvB,KAAM,YACN,SAAA3C,EACA,eAAAE,CAAA,CACD,EACQoH,KAETG,EAAW,oDAAoD,CACjE,EAGIU,EAAmDC,EAAM,YAC5DN,GAAM,CACL,MAAMO,EAAQP,EACVO,GAAA,MAAAA,EAAO,QACGpI,GAAAoI,GAAA,YAAAA,EAAO,QAAS,EAAE,EACZlI,EAAAkI,GAAA,YAAAA,EAAO,MAAM,UAAU,EACzCxH,EAAqB,CAAE,CAAA,EACvBF,EAAqB,EAAE,EAE3B,EACA,CAACR,EAAmBU,EAAsBF,EAAsBV,CAAW,CAAA,EAGvEqI,EAAKF,EAAM,QAAQ,IAChB,IAAIJ,GAAe9H,CAAc,EACvC,CAACA,CAAc,CAAC,EAGjB,OAAAyD,EAAC4D,EAAA,CACC,SAAA,CAAA5D,EAAC6D,EAAA,CACC,gBAAApE,EACA,gBAAiB,CAACpD,GAAY,CAACE,EAE/B,SAAA,CAAA6B,EAAC2F,EAAA,CAAiB,MAAM,wBAAyB,CAAA,IAEhDC,EAAA,CACC,SAAChE,EAAAiE,EAAA,CACC,SAAA,CAAAjE,EAAC,OAAK,CAAA,SAAA,CAAA,iBACW5B,EAAA,OAAA,CAAK,UAAU,gBAAgB,SAAC,IAAA,CAAA,EACjD,EACAA,EAAC,MAAI,CAAA,UAAU,uBACb,SAAAA,EAACmF,EAAA,CACC,aAAcoB,EAAG,mBACjB,SAAUH,EACV,YAAY,iBACZ,QAASG,EAAG,kBACZ,KAAM,mBACN,UAAU,MAAA,CAAA,EAEd,CAAA,CAAA,CACF,CACF,CAAA,EACAvG,EAACoF,GAAkB,SAGnB,+GAAA,CAAA,CAAA,CAAA,CACF,EACCpF,EAAAgG,EAAA,CAAiB,UAAU,uBAC1B,SAAAhG,EAACiE,EAAA,CACC,SAAAhG,EACA,aAAa,yBAAA,CAAA,EAEjB,CACF,CAAA,CAAA,CAEJ,EC/FO,MAAMuI,EAAmB,CAC9B,YACUnH,EACAF,EACR,CAFQ,KAAA,YAAAE,EACA,KAAA,wBAAAF,CACP,CAEH,IAAI,sBAAgC,CAClC,OAAO,KAAK,0BAA4B,EAC1C,CAEA,MAAM,mBAAoB,OAClB,KAAA,CAAE,WAAAsH,CAAe,EAAAhJ,EAEjBiJ,EAAO,MAAMD,EAAW,OAAO,CACnC,KAAM,UACN,KAAM,8BACN,WAAY,CACV,UAAW,KAAK,aAAe,EACjC,CAAA,CACD,EAED,GAAIC,EAAK,WAAWlJ,EAAAkJ,GAAA,YAAAA,EAAM,OAAN,MAAAlJ,EAAY,YAGvB,OAFQ,OAAO,KAAKkJ,EAAK,KAAK,UAAU,EAAE,CAAC,CAItD,CAEA,MAAM,oBAAoBC,EAAgB,OAClC,KAAA,CAAE,WAAAF,CAAe,EAAAhJ,EAEvB,cAAMD,EAAAiJ,EAAW,KAAKE,CAAM,IAAtB,YAAAnJ,EAAyB,WAEb,MAAMiJ,EAAW,KAAKE,CAAM,CAGhD,CACF,CCpBa,MAAAC,GAAmBvJ,EAAUgD,GAAiC,CACnE,KAAA,CACJ,wBAAAlB,EACA,2BAAAC,EACA,YAAAC,EACA,eAAAC,EACA,qBAAAuH,CACE,EAAAxG,EACE,CAAE,WAAAoG,GAAeK,KAEjB,CAACC,EAAWC,CAAY,EAAIX,EAAM,SAAS,EAAK,EAEhDK,EAAOD,EAAW,KAAKtH,CAAuB,EAE9CoH,EAAK,IAAIC,GAAmBnH,EAAaF,CAAuB,EAEhE8H,EAAc,SAAY,CAC9B,GAAI9H,GAA2BE,IAAgB,GAAI,OAEnD2H,EAAa,EAAK,EAEZ,MAAAL,EAAS,MAAMJ,EAAG,oBAExB,GAAKI,EAGE,CACLvH,EAA2BuH,CAAM,EAEjC,MAAMO,EAAO,MAAMX,EAAG,oBAAoBI,CAAM,EAC5CO,GAAA,MAAAA,EAAM,WACRL,EAAqBF,CAAM,EAE3BQ,GAAa,kBAAkB,GAE/BzB,EAAW,6CAA6C,CAE5D,KAda,CACXA,EAAW,6CAA6C,EACxD,MAAA,CAYF,EAGI0B,EAAuCd,GAAU,CACrD,OAAQA,EAAM,IAAK,CACjB,IAAK,QACSW,IACZX,EAAM,eAAe,CACzB,CAAA,EAIA,OAAA1E,EAAC,MAAA,CAEC,UAAWlB,EACT,kJACF,EACA,QAAS,IAAMsG,EAAa,CAACD,CAAS,EAErC,SAAA,CAAA,EAACL,GAAA,MAAAA,EAAM,aACN1G,EAACqH,GAAA,CACC,UAAU,0BACV,QAAS,CAAC,EAACX,GAAA,MAAAA,EAAM,WACjB,QAAQ,YAER,SAAC1G,EAAAsH,GAAA,CAAQ,UAAU,gBAAgB,OAAO,OAAO,CAAA,CACnD,GAGDZ,GAAA,YAAAA,EAAM,aACJ1G,EAAA,MAAA,CAAI,UAAWU,EAAG,qCAAqC,EACtD,SAACV,EAAA,IAAA,CAAE,UAAU,8BAA+B,UAAY,CAAA,EAC1D,GAEA,EAAC0G,GAAA,MAAAA,EAAM,aAAc,CAACH,EAAG,uBAEvB3E,EAAA6B,EAAA,CAAA,SAAA,CAAAzD,EAAC8F,GAAA,CACC,UAAU,wDACV,eAAe,qDACf,sBAAsB,2CACtB,YAAY,aACZ,MAAO,GACP,MAAOzG,EACP,qBAAsB,CAACA,EACvB,SAAUkH,EAAG,qBACb,UAAYR,GAAMqB,EAAcrB,CAAC,EACjC,SAAWA,GAAM,CACfzG,EAAeyG,GAAK,EAAE,CACxB,EACA,OAAQkB,CAAA,CACV,EACCjH,EAAAuH,GAAA,CAAmB,UAAU,UAAU,OAAO,OAAO,CAAA,EACxD,GAGDb,GAAA,YAAAA,EAAM,aACL1G,EAACwH,GAAA,CACC,OAAO,OACP,UAAU,GACV,QAAS,IAAM,CACblI,EAAe,EAAE,EACjBF,EAA2B,EAAE,EAC7B4H,EAAa,EAAK,CACpB,CAAA,CACF,CAAA,CAAA,EAnDE,WAAA,CAuDV,CAAC,ECzFM,MAAMS,EAAkB,CAC7B,YACU7J,EACAK,EACAM,EACAE,EACAJ,EACAM,EACAR,EACAU,EACAE,EACAC,EACAC,EACAC,EAGAG,EACAF,EACR,CAhBQ,KAAA,QAAAvB,EACA,KAAA,SAAAK,EACA,KAAA,KAAAM,EACA,KAAA,QAAAE,EACA,KAAA,YAAAJ,EACA,KAAA,kBAAAM,EACA,KAAA,eAAAR,EACA,KAAA,kBAAAU,EACA,KAAA,eAAAE,EACA,KAAA,kBAAAC,EACA,KAAA,0BAAAC,EACA,KAAA,6BAAAC,EAGA,KAAA,YAAAG,EACA,KAAA,wBAAAF,CACP,CAEH,MAAM,YAAa,CACb,GAAA,CASF,MAAO,CAAE,QAAS,GAAM,GADX,MAPI,MAAM,MAAM,2BAA4B,CACvD,OAAQ,OACR,QAAS,CACP,eAAgB,kBAClB,EACA,KAAM,KAAK,UAAU,KAAK,IAAI,CAAA,CAC/B,GAC2B,MACI,QACzB4G,EAAG,CACV,eAAQ,MAAMA,CAAC,EACR,CAAE,QAAS,GAAO,QAAUA,EAAY,OAAQ,CACzD,CACF,CAEA,IAAI,MAAO,CACF,MAAA,CACL,SAAU,KAAK,QACf,UAAW,KAAK,SAChB,KAAM,KAAK,KACX,SAAU,KAAK,QACf,WAAY,KAAK,eACjB,aAAc,KAAK,YACnB,oBAAqB,KAAK,kBAC1B,mBAAoB,KAAK,kBACzB,4BAA6B,KAAK,wBAClC,gBAAiB,KAAK,eAAe,IAAK2B,IACjC,CAAE,SAAUA,EAAM,QAAS,YAAaA,EAAM,YACtD,EACD,4BAA6B,KAAK,0BAA0B,IAAKC,IACxD,CACL,SAAUA,EAAE,QACZ,YAAaA,EAAE,WACf,MAAOA,EAAE,KAAA,EAEZ,CAAA,CAEL,CAEA,eACEC,EACA,CAAE,MAAAF,EAAO,SAAAG,GACT,CACI,GAAA,GAACH,GAAS,CAACG,GACf,GAAID,EAEG,KAAA,kBACH,KAAK,eAAe,OACjBE,GAAkBA,EAAc,UAAYJ,EAAM,EACrD,CAAA,EAGG,KAAA,6BACH,KAAK,0BAA0B,OAC5BK,GAAgBA,EAAY,UAAYL,EAAM,EACjD,CAAA,MAEG,CAEL,KAAK,kBAAkB,CACrB,GAAG,KAAK,eACR,CACE,QAASA,EAAM,GACf,WAAYG,EAAS,EACvB,CAAA,CACD,EAGD,MAAMG,EAAe,KAAK,UAAU,IAAI,CAACC,EAAUvE,KAC1C,CACL,GAAI,KAAK,OAAO,EAChB,MAAOA,EAAQ,EACf,QAASgE,EAAM,GACf,WAAY,GAAGO,EAAS,EAAE,EAAA,EAE7B,EACD,KAAK,6BAA6B,CAChC,GAAG,KAAK,0BACR,GAAGD,CAAA,CACJ,CACH,CACF,CAEA,eAAeE,EAAY,CAEzB,MAAMF,EAAe,KAAK,UAAU,IAAI,CAACC,EAAUvE,KAC1C,CACL,GAAI,KAAK,OAAO,EAChB,MAAOA,EAAQ,EACf,QAASwE,EACT,WAAY,GAAGD,EAAS,EAAE,EAAA,EAE7B,EACD,KAAK,6BAA6B,CAChC,GAAG,KAAK,0BACR,GAAGD,CAAA,CACJ,CACH,CAEA,+BAA+BG,EAA2C,SAC3CpH,GAAA,CAC3B,OAAOvD,EAAA,KAAK,gBAAgB,KACzBkK,GAAU,GAAGS,EAAW,OAAO,KAAOT,EAAM,EAAA,IADxC,YAAAlK,EAEJ,KACH,UAAUQ,EAAA,KAAK,UAAU,KACtBiK,GAAa,GAAGE,EAAW,UAAU,KAAOF,EAAS,EAAA,IAD9C,YAAAjK,EAEP,KACH,UAAWmK,EAAW,QAAA,CACvB,EAEK,MAAAC,EAAuB,KAAK,0BAA0B,IACzDL,GAEGA,EAAY,UAAY,GAAGI,EAAW,OAAO,IAC7CJ,EAAY,aAAe,GAAGI,EAAW,UAAU,GAE5C,CACL,GAAGJ,EACH,MAAOI,EAAW,QAAA,EAGfJ,CACT,EAGF,KAAK,6BAA6BK,CAAoB,CACxD,CAEA,IAAI,iBAA0C,SAC5C,MAAMrJ,EAAiB,KAAK,eAAe,IAAK2I,GAAU,OACxD,MAAMW,EAAe5K,EAAM,OAAO,KAAKiK,EAAM,OAAO,EAG9CY,KAFc9K,EAAA6K,GAAA,YAAAA,EAAc,iBAAd,YAAA7K,EAA8B,cAAe,CAAA,GAEG,IACjE+K,IACQ,CACL,GAAIA,EAAW,GACf,MAAOA,EAAW,MAClB,KAAMA,EAAW,MAAQ,GACzB,QAASb,EAAM,OAAA,EAEnB,EAGK,MAAA,CACL,GAAIA,EAAM,QACV,WAAYA,EAAM,WAClB,YAAaW,GAAA,YAAAA,EAAc,YAC3B,MAAMA,GAAA,YAAAA,EAAc,OAAQ,GAC5B,MAAMA,GAAA,YAAAA,EAAc,OAAQ,GAC5B,UAAW,EACX,YAAaC,CAAA,CACf,CACD,EAED,IAAI9K,EAAA,KAAK,SAAL,MAAAA,EAAa,cAAcQ,EAAA,KAAK,SAAL,MAAAA,EAAa,WAAW,CACrD,MAAMwK,EAAU,KAAK,2BAEd,MAAA,CAAC,GAAGzJ,EAAgByJ,CAAO,CACpC,CAEO,OAAAzJ,CACT,CAEA,IAAI,QAAgC,CAClC,OAAOtB,EAAM,WAAW,KAAK,KAAK,uBAAuB,CAC3D,CAEA,IAAI,4BAAmD,SAC9C,MAAA,CACL,GAAI,KAAK,wBACT,WAAY,IACZ,aAAaO,GAAAR,EAAA,KAAK,SAAL,YAAAA,EAAa,OAAO,mBAApB,YAAAQ,EAAsC,OAAO,UAC1D,KAAM,KAAK,YACX,KAAM,GACN,UAAW,EACX,YAAa,KAAK,gCAAA,CAEtB,CAEA,IAAI,kCAAgE,SAClE,MAAMyK,GACJzK,GAAAR,EAAA,KAAK,SAAL,YAAAA,EAAa,OAAO,yBAApB,YAAAQ,EAA4C,OAAO,UAErD,OAAKyK,EAIUA,EAAgB,IAAKC,IAC3B,CACL,GAAI,GAAG,KAAK,OAAQ,CAAA,GACpB,MAAO,SAASA,EAAM,KAAK,EAC3B,KAAMA,EAAM,KACZ,QAAS,KAAK,uBAAA,EAEjB,EAVQ,EAaX,CAEA,IAAI,4BAA6B,CAC/B,OAAO,KAAK,gBAAgB,OAC1B,CAACC,EAAKjB,IAAU,OACR,MAAAG,EAAWc,EAAI,KAAMC,GAAQA,EAAI,KAAOlB,EAAM,UAAU,EAC9D,GAAIG,EACOA,EAAA,OAAO,KAAKH,CAAK,MACrB,CACC,MAAAmB,IACJrL,EAAAC,EAAM,WAAW,KAAK,GAAGiK,EAAM,UAAU,EAAE,IAA3C,YAAAlK,EAA8C,OAAQ,GACxDmL,EAAI,KAAK,CACP,GAAIjB,EAAM,WACV,KAAMmB,EACN,aAAc,EACd,OAAQ,CAACnB,CAAK,CAAA,CACf,CACH,CACO,OAAAiB,CACT,EACA,CAAC,CAAA,CAEL,CAEA,IAAI,WAAY,CACd,OAAO,KAAK,kBAAkB,IAAKG,GAAe,CAChD,MAAMb,EAAWxK,EAAM,UAAU,KAAKqL,CAAU,EACzC,MAAA,CACL,IAAIb,GAAA,YAAAA,EAAU,KAAM,EACpB,MAAMA,GAAA,YAAAA,EAAU,OAAQ,GACxB,gBAAgBA,GAAA,YAAAA,EAAU,iBAAkB,GAC5C,YAAa,GAAG,KAAK,eAAe,CAAC,CAAC,IACpCA,GAAA,YAAAA,EAAU,iBAAkB,GAC9B,EAAA,CACF,CACD,CACH,CAEA,IAAI,qBAAsB,CACjB,MAAA,CACL,KAAM,0BACN,GAAI,EACJ,UAAW,KAAK,SAAA,CAEpB,CAEA,IAAI,aAAc,CACV,MAAAc,EAAQ,KAAK,wBAA0B,EAAI,EAE1C,OAAA,KAAK,eAAe,QAAUA,CACvC,CAKA,IAAI,kBAAmB,CACd,MAAA,CACL,GAAG,KAAK,YACR,GAAG,KAAK,iBACR,GAAG,KAAK,sBAAA,CAEZ,CAEA,IAAI,mBAAuC,OACzC,QAAOvL,EAAAC,EAAM,WAAW,KAAK,KAAK,WAAW,IAAtC,YAAAD,EAAyC,mBAAoB,EACtE,CAEA,IAAI,aAAc,CAChB,OAAO,KAAK,kBACT,OAAQwL,GAAmB,OACnB,QAAAxL,EAAAwL,EAAe,WAAf,YAAAxL,EAAyB,QAAS,OAC1C,CAAA,EACA,MAAM,EAAG,CAAC,CACf,CACA,IAAI,kBAAmB,CACrB,OAAO,KAAK,kBACT,OACEwL,GAAmB,OAAA,QAAAxL,EAAAwL,EAAe,WAAf,YAAAxL,EAAyB,QAAS,aAAA,EAEvD,MAAM,EAAG,CAAC,CACf,CAEA,IAAI,wBAAyB,CAIpB,OAHa,KAAK,kBAAkB,OACxCwL,GAAmB,OAAA,QAAAxL,EAAAwL,EAAe,WAAf,YAAAxL,EAAyB,QAAS,QAAA,EAGrD,OAAQyL,GAAe,CACtB,MAAMhB,EAAWxK,EAAM,UAAU,KAAK,KAAK,iBAAiB,EAErD,QADgBwK,GAAA,YAAAA,EAAU,SAAU,IACrB,KAAMiB,GAAkB,OAC5C,OAAOA,GAAiBA,EAAc,OAAO1L,EAAAyL,EAAW,QAAX,YAAAzL,EAAkB,GAAA,CAChE,CACF,CAAA,EACA,MAAM,EAAG,CAAC,CACf,CACF,CC3Ua,MAAA2L,GAAuB9L,EAAS,IAAM,CAC3C,KAAA,CAAE,SAAAkI,GAAa5D,IAEf,CAACyH,EAAQC,CAAS,EAAIhD,EAAM,SAAS,EAAK,EAE1CiD,EAAuB,EAEvB,CACJ,QAAA1L,EACA,SAAAK,EACA,KAAAM,EACA,QAAAE,EACA,eAAAN,EACA,YAAAE,EACA,kBAAAM,EACA,kBAAAE,EACA,eAAAE,EACA,kBAAAC,EACA,0BAAAC,EACA,6BAAAC,EACA,YAAAG,EACA,eAAAC,EACA,wBAAAH,EACA,2BAAAC,GACEa,EAAiB,EAEfsG,EAAK,IAAIkB,GACb7J,EACAK,EACAM,EACAE,EACAJ,EACAM,EACAR,EACAU,EACAE,EACAC,EACAC,EACAC,EACAG,EACAF,CAAA,EAGF,OAAAkH,EAAM,UAAU,IAAM,CAIhBlH,IAHc,SAAY,CACtB,MAAA1B,EAAM,WAAW,SAAS0B,CAAuB,CAAA,IAIzD,CACD,EA4BCyC,EAAC4D,EAAA,CACC,SAAA,CAAA5D,EAAC6D,EAAA,CACC,gBA5BkB,SAAY,OAG9B,GAFJ4D,EAAU,EAAI,EAEVtK,EAAe,SAAW,EAAG,CACpB2G,EAAA,0BAA0B4D,CAAoB,UAAU,EACnED,EAAU,EAAK,EACf,MACF,EAEY,MAAM9C,EAAG,cACb,SACmB3F,EAAA,CACvB,KAAM,qBACN,OAAQ2F,EAAG,gBAAgB,IAAKmB,GAAUA,EAAM,IAAI,CAAA,CACrD,GACDlK,EAAAC,EAAM,cAAN,MAAAD,EAAmB,OAAO,CAAC,MAAO,uBAAuB,GAChD+H,KAETG,EACE,gEAAA,EAGJ2D,EAAU,EAAK,CAAA,EAOX,gBAAiB,CAAC9C,EAAG,aAAe6C,EAEpC,SAAA,CAAApJ,EAAC2F,EAAA,CAAiB,MAAM,YAAa,CAAA,EAErC/D,EAAC,MAAI,CAAA,UAAU,sCACb,SAAA,CAAA5B,EAAC4G,GAAA,CACC,wBAAAzH,EACA,YAAAE,EACA,qBAAuB6I,GAAO,CAC5B3B,EAAG,eAAe2B,CAAE,CACtB,EACA,2BAAA9I,EACA,eAAAE,CAAA,CACF,EACCiH,EAAG,iBAAiB,IAAKyC,GAAmB,OAC3C,GAAI,CAACA,EAAe,MAAc,OAAA,KAClC,MAAMtE,GAAWlH,EAAAuB,EAAe,KAAM+I,GAAkB,OAC/C,OAAAA,EAAc,YAAYtK,EAAAwL,EAAe,QAAf,YAAAxL,EAAsB,GACxD,CAAA,IAFgB,YAAAA,EAEb,QAGF,OAAAoE,EAAC,MAAA,CAEC,UAAWlB,EACT,gFACAgE,GAAY,YACd,EACA,QAAS,IAAM6B,EAAG,eAAe7B,EAAUsE,CAAc,EAExD,SAAA,CAAAA,EAAe,UACbhJ,EAAA,IAAA,CAAE,UAAU,cAAe,SAAAgJ,EAAe,SAAS,IAAK,CAAA,IAE1D,IAAE,CAAA,UAAU,gBAAiB,SAAAA,EAAe,MAAM,KAAK,CAAA,CAAA,EAVnDA,EAAe,MAAM,EAAA,CAW5B,CAEH,CAAA,EACH,EAEAhJ,EAACoF,GAAkB,SAInB,0JAAA,CAAA,CAAA,CAAA,CACF,EACCpF,EAAAgG,EAAA,CAAiB,UAAU,qBAC1B,SAAAhG,EAACiE,EAAA,CACC,SAAAhG,EACA,iBAAiB,oBACjB,aAAa,oDACb,MAAK,GAEL,SACE2D,EAAA6B,EAAA,CAAA,SAAA,CAAAzD,EAACuJ,GAAA,CACC,YAAa,CAAChD,EAAG,mBAAkC,EACnD,WACEA,EAAG,2BAEL,aACEtH,EAEF,oBAAqB,CAAC,EACtB,YAAa,CACX,uBAAwB,EAC1B,EACA,cAAe,CACb,yBAA2BkJ,GACzB5B,EAAG,+BAA+B4B,CAAU,CAChD,CAAA,CACF,EACCpJ,EAAe,QAAU,GACvBiB,EAAA,MAAA,CAAI,UAAU,WACb,SAAA4B,EAAC,MAAI,CAAA,UAAU,8CACb,SAAA,CAAA5B,EAAC,MAAA,CACC,MAAM,6BACN,MAAM,KACN,OAAO,KACP,KAAK,OACL,UAAU,2BAEV,SAAAA,EAAC,OAAA,CACC,OAAO,UACP,cAAc,QACd,YAAY,IACZ,EAAE,4VAAA,CACJ,CAAA,CACF,EACCA,EAAA,IAAA,CAAE,UAAU,4CAA4C,SAGzD,oHAAA,CAAA,CAAA,CACF,CACF,CAAA,CAAA,EAEJ,CAAA,CAAA,EAEJ,CACF,CAAA,CAAA,CAEJ,CAAC,ECnMM,MAAMwJ,EAAkB,CAG7B,YAAoBnL,EAA6BM,EAA2B,CAAxD,KAAA,YAAAN,EAA6B,KAAA,kBAAAM,EAF1B,KAAA,qBAAA,CAEsD,CAE7E,IAAI,iBAA0C,CAC5C,MAAMmB,EAAYrC,EAAM,WAAW,KAAK,KAAK,WAAW,EAExD,OAAKqC,EAEEA,EAAU,UACd,KAAK,CAAC2J,EAAGC,IAAMD,EAAE,eAAiBC,EAAE,cAAc,EAClD,IAAKzB,IAAc,CAClB,MAAOA,EAAS,GAChB,MAAOA,EAAS,KAChB,eAAgBA,EAAS,cACzB,EAAA,EARmB,EASzB,CAEA,IAAI,kBAAmB,CACrB,OAAOxK,EAAM,UAAU,KAAK,KAAK,iBAAiB,CACpD,CACF,CCxBO,MAAMkM,GAAwB,IAEjC/H,EAAC,MAAI,CAAA,UAAU,WAEb,SAAA,CAAA5B,EAAC,MAAA,CACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAM,6BACN,UAAU,+BAEV,SAAAA,EAAC,OAAA,CACC,EAAE,+gBACF,OAAO,UACP,KAAK,OACL,YAAY,IACZ,cAAc,QACd,UAAU,gBACV,MAAO,CACL,gBAAiB,MACjB,iBAAkB,MAClB,UAAW,mDACb,CAAA,CACF,CAAA,CACF,EAEAA,EAAC,MAAA,CACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAM,6BACN,UAAU,4CAEV,SAAAA,EAAC,OAAA,CACC,EAAE,gcACF,OAAO,UACP,YAAY,IACZ,cAAc,QACd,MAAO,CACL,gBAAiB,MACjB,iBAAkB,MAClB,UAAW,mDACb,CAAA,CACF,CAAA,CACF,EAECA,EAAA,MAAA,CAAI,UAAU,2EAA2E,SAE1F,gEAAA,CACF,CAAA,CAAA,EChDG,MAAM4J,EAAkB,CAC7B,YACUvL,EACAM,EACAI,EACR,CAHQ,KAAA,YAAAV,EACA,KAAA,kBAAAM,EACA,KAAA,eAAAI,CACP,CAOH,IAAI,kBAA6B,SAC/B,MAAM8K,IACJrM,EAAAC,EAAM,UAAU,KAAK,KAAK,iBAAiB,IAA3C,YAAAD,EAA8C,iBAAkB,EAE5DsM,GAAuB9L,EAAAP,EAAM,WAChC,KAAK,KAAK,WAAW,IADK,YAAAO,EAEzB,UAAU,OACT+L,GACCA,EAAE,iBACDA,EAAE,IAAM,KAAK,mBACZA,EAAE,gBAAkBF,IAEzB,KAAK,CAACJ,EAAGC,IACJ,CAACD,EAAE,gBAAkB,CAACC,EAAE,eAAuB,EAC5CD,EAAE,eAAiBC,EAAE,gBAGhC,GAAI,CAACI,EAAsB,MAAO,GAElC,IAAIE,EAAa,KAAK,IAAI,EAAGH,EAAwB,CAAC,EAClDI,EAAa,KAAK,IACpBH,EAAqB,OAAS,EAC9BD,EAAwB,CAAA,EAI1B,OAAIG,GAAc,IAChBC,EAAa,KAAK,IAAI,EAAGH,EAAqB,OAAS,CAAC,GACtDG,GAAcH,EAAqB,OAAS,IAC9CE,EAAa,KAAK,IAAI,EAAGF,EAAqB,OAAS,CAAC,GAEnDA,EACJ,MAAME,EAAYC,EAAa,CAAC,EAChC,IAAKF,GAAMA,EAAE,EAAE,CACpB,CAEA,IAAI,iBAA4B,CAC9B,MAAMjK,EAAYrC,EAAM,WAAW,KAAK,KAAK,WAAW,EAExD,OAAKqC,EAEEA,EAAU,UAAU,IAAKmI,IAAc,CAC5C,MAAOA,EAAS,GAChB,MAAOA,EAAS,IAChB,EAAA,EALqB,EAMzB,CAEA,uBAAuBa,EAA4B,CAC1C,OAAA,KAAK,mBAAqBA,GAAcrL,EAAM,YACjD,CAACA,EAAM,WAAW,EAClB,EACN,CAEA,0BAA0BqL,EAAoB,OAC5C,QAAOtL,EAAAC,EAAM,UAAU,KAAKqL,CAAU,IAA/B,YAAAtL,EAAkC,iBAAkB,CAC7D,CAEA,gBAAgBsL,EAAoB,OAClC,QAAOtL,EAAAC,EAAM,UAAU,KAAKqL,CAAU,IAA/B,YAAAtL,EAAkC,OAAQ,EACnD,CAEA,IAAI,yBAA0B,CAI5B,OAAO,MAAM,KAAK,eAAe,MAAM,EAAE,KAAK,CAC5C,MAAO,EAAA,CACR,CACH,CACF,CClEa,MAAA0M,GAAkB7M,EAAS,IAAM,CACtC,KAAA,CAAE,SAAAkI,GAAa5D,IAEf,CACJ,SAAA1D,EACA,kBAAAU,EACA,qBAAAC,EACA,qBAAAE,EACA,kBAAAD,EACA,eAAAV,EACA,YAAAE,EACA,eAAAU,GACEkB,EAAiB,EAEfsG,EAAK,IAAIiD,GAAkBnL,EAAaM,CAAiB,EAEzDwL,EAAoB9D,EAAM,QAAQ,IAC/B,IAAIuD,GAAkBvL,EAAaM,EAAmBI,CAAc,EAC1E,CAACV,EAAaM,EAAmBI,CAAc,CAAC,EAE7CqL,EACJvL,EAAkB,QAAU,EACxB,OACAA,EACG,IAAKiK,GACGvC,EAAG,gBAAgB,KAAM8D,GAAMA,EAAE,QAAUvB,CAAU,CAC7D,EACA,OAAO,OAAO,EAEjB,CAACwB,EAAiBC,CAAkB,EAAIlE,EAAM,SAEjD+D,GAA4C,CAAA,CAAE,EAgB/C,OAAAxI,EAAC4D,EAAA,CACC,SAAA,CAAA5D,EAAC6D,EAAA,CACC,gBAhBkB,IAAM,OACxB9G,GACuBiC,EAAA,CACvB,KAAM,eACN,kBAAAjC,EACA,eAAcnB,EAAA+I,EAAG,mBAAH,YAAA/I,EAAqB,OAAQ,EAAA,CAC5C,EACQ+H,KAETG,EAAW,8BAA8B,CAC3C,EAOI,gBAAiB7G,EAAkB,OAAS0H,EAAG,qBAE/C,SAAA,CAAAvG,EAAC2F,EAAA,CAAiB,MAAM,eAAgB,CAAA,EAExC3F,EAAC4F,EAAA,CACC,WAACC,EAAA,CAAiB,UAAU,OAC1B,SAAA,CAAAjE,EAAC,OAAK,CAAA,SAAA,CAAA,sBACgB5B,EAAA,OAAA,CAAK,UAAU,gBAAgB,SAAC,IAAA,CAAA,EACtD,EACAA,EAAC,MAAI,CAAA,UAAU,OACb,SAAAA,EAACmF,EAAA,CACC,KAAK,WACL,MAAK,GACL,kBAAmB,GACnB,UAAU,cACV,aAAciF,EACd,YAAY,kBACZ,MAAOE,EACP,YAAa,GACb,SAAWpF,GAAW,CACpB,MAAMsF,EAAStF,EACf,GAAIsF,GAAUA,EAAO,QAAUjE,EAAG,qBAAsB,CACtDgE,EAAmBC,CAAM,EACzB,MAAMC,EAASD,EAAO,KACpB,CAACf,EAAGC,IAAMD,EAAE,eAAiBC,EAAE,cAAA,EAG3BgB,EAAaD,EAAOA,EAAO,OAAS,CAAC,EAC3C7L,EACE8L,GAAcA,EAAW,MAAM,SAAS,CAAA,EAGrB5L,EAAA2L,EAAO,IAAKJ,GAAMA,EAAE,MAAM,SAAU,CAAA,CAAC,CAC5D,EAEI,CAACG,GAAUA,EAAO,SAAW,KAC/B5L,EAAqB,EAAE,EACvBE,EAAqB,CAAE,CAAA,EAE3B,EACA,QAASyH,EAAG,eAAA,CAAA,EAEhB,CAAA,CAAA,CACF,CACF,CAAA,EAEAvG,EAACoF,GAAkB,SAGnB,+IAAA,CAAA,CAAA,CAAA,CACF,EACCpF,EAAAgG,EAAA,CAAiB,UAAU,uBAC1B,SAAApE,EAACqC,EAAA,CACC,SAAAhG,EACA,iBAAiB,qBACjB,aAAa,0BAEZ,SAAA,CAAAU,GACEqB,EAAA,MAAA,CAAI,UAAU,kDAAkD,SAEjE,0BAAA,EAEFA,EAAC,MAAI,CAAA,UAAU,qCACZ,SAAAnB,GACCA,EAAkB,IAAI,CAACiK,EAAYpF,IAE/B9B,EAAA6B,EAAA,CAAA,SAAA,CAAAzD,EAAC2K,GAAA,CAEC,UAAU,sBACV,iBAAkB,CAAE,GAAI,EAAG,KAAMxM,CAAe,EAChD,SAAU,CACR,eACEgM,EAAkB,0BAA0BrB,CAAU,EACxD,KAAMqB,EAAkB,gBAAgBrB,CAAU,EAClD,YAAa,IAAIpF,EAAQ,CAAC,GAC1B,YAAayG,EAAkB,uBAC7BrB,CACF,EACA,aAAcqB,EAAkB,uBAClC,EACA,YAAa,CAAE,WAAY,EAAK,CAAA,EAb3BzG,CAcP,EACC7E,EAAkB,SAAW0H,EAAG,sBAC/B7C,IAAU7E,EAAkB,OAAS,GACnCmB,EAAC2J,GAAsB,CAAA,CAAA,CAAA,CAE7B,CAAA,CACD,CACL,CAAA,CAAA,CAAA,CAAA,EAEJ,CACF,CAAA,CAAA,CAEJ,CAAC,ECjKYiB,GAA2B,IAG/B,KCKIC,GAAc,IAAM,CACzB,KAAA,CACJ,QAAAjN,EACA,SAAAK,EACA,KAAAM,EACA,QAAAE,EACA,eAAAN,EACA,YAAAE,EACA,kBAAAM,EACA,kBAAAE,EACA,eAAAE,EACA,kBAAAC,EACA,0BAAAC,EACA,6BAAAC,EACA,UAAAQ,EACA,cAAAF,EACA,aAAAG,EACA,YAAAN,EACA,wBAAAF,GACEc,EAAiB,EAEf6K,EAAc,IAAIrD,GACtB7J,EACAK,EACAM,EACAE,EACAJ,EACAM,EACAR,EACAU,EACAE,EACAC,EACAC,EACAC,EACAG,EACAF,CAAA,EAGFkH,EAAM,UAAU,IAAM,CACb,OAAA,SAAS,EAAG,CAAC,CACtB,EAAG,CAAE,CAAA,EAEC,MAAA0E,EAAc1E,EAAM,QAAQ,IACzB,IAAIuD,GAAkBvL,EAAaM,EAAmBI,CAAc,EAC1E,CAACV,EAAaM,EAAmBI,CAAc,CAAC,EAEnD,OAAAsH,EAAM,UAAU,IAAM,CACf3G,IACWF,EAAA,CACZ,CAAE,MAAO,YAAa,MAAO,WAAY,EACzC,CAAE,MAAO,YAAa,MAAO,WAAY,CAAA,CAC1C,EACDG,EAAa,CAAE,MAAO,YAAa,MAAO,WAAa,CAAA,EAExD,EAAA,CAACD,EAAWC,EAAcH,CAAa,CAAC,IAGxCgG,EAAA,CACC,SAACxF,EAAAgL,GAAA,CACC,SAAApJ,EAACqC,EAAA,CACC,aAAa,2CACb,iBAAiB,QACjB,SAAAhG,EACA,WAAU,GACV,aAAY,GAEZ,SAAA,CAAA2D,EAACqJ,GAAA,CAAoB,KAAK,YACxB,SAAA,CAACjL,EAAA,MAAA,CAAI,UAAU,uDAAuD,SAEtE,0BAAA,EACA4B,EAAC,MAAI,CAAA,UAAU,oCACb,SAAA,CAAA5B,EAAC4K,GAAyB,EAAA,EACzB/L,GACCA,EAAkB,IAAI,CAACiK,EAAYpF,IACjC1D,EAAC2K,GAAA,CAEC,UAAU,sBACV,iBAAkB,CAAE,GAAI,EAAG,KAAMxM,CAAe,EAChD,SAAU,CACR,eACE4M,EAAY,0BAA0BjC,CAAU,EAClD,KAAMiC,EAAY,gBAAgBjC,CAAU,EAC5C,YAAa,GACX3K,EAAe,CAAC,CAClB,GAAG4M,EAAY,0BAA0BjC,CAAU,CAAC,GACpD,YAAaiC,EAAY,uBACvBjC,CACF,EACA,aAAciC,EAAY,uBAC5B,EACA,YAAa,CAAE,WAAY,EAAK,CAAA,EAf3BrH,CAAA,CAiBR,CAAA,EACL,CAAA,EACF,EACC1D,EAAAiL,GAAA,CAAoB,KAAK,YACxB,SAAAjL,EAACuJ,GAAA,CACC,YAAa,CAACuB,EAAY,mBAA0B,EACpD,WAAYA,EAAY,2BACxB,aAAc7L,EACd,oBAAqB,CAAC,EACtB,YAAa,CACX,uBAAwB,EAC1B,CAAA,CAAA,EAEJ,CAAA,CAAA,CAAA,CAEJ,CAAA,CACF,CAAA,CAEJ,EC/GaiM,GAAkB,MAE1B,MAAI,CAAA,UAAU,sBACb,SAACtJ,EAAAuJ,GAAA,CACC,SAAA,CAAAnL,EAACsF,GAAY,EAAA,IACZa,GAAa,EAAA,IACb+D,GAAgB,EAAA,IAChBf,GAAqB,EAAA,IACrB0B,GAAY,EAAA,CAAA,CACf,CAAA,CACF,CAAA,ECbSO,GAER/K,GAAU,CACP,KAAA,CAAE,YAAAgL,CAAgB,EAAAhL,EAExB,OAEKuB,EAAA6B,EAAA,CAAA,SAAA,CAAA,sBACA,SAAO,CAAA,KAAK,SAAS,QAAS4H,EAAa,SAE5C,OAAA,CACF,CAAA,CAAA,CAEJ,ECbO,MAAMC,EAAiC,CAC5C,YACUC,EACAC,EAGR,CAJQ,KAAA,OAAAD,EACA,KAAA,4BAAAC,EAKV,KAAS,YAAc,CACrB,yBACA,yBACA,wBACA,uBACA,2BACA,qBACA,mBACA,iBACA,iBACA,4BACA,gBACA,kBACA,kBACA,mBACA,QACA,SACA,OAAA,CAnBC,CAsBH,MAAM,iBAAkB,OACtB1K,EAAW,yDAA0D,CACnE,QAAS,KAAK,MAAA,CACf,EAEI,KAAK,SAEV,OAAMtD,EAAAC,EAAM,MAAM,KAAK,KAAK,MAAM,IAA5B,YAAAD,EAA+B,WAErC,OAAO,SAAS,KAAO,kCACzB,CAEA,IAAI,cAAe,CAEf,OAAAwC,EAACoL,GAAA,CACC,YAAcrF,GAAM,KAAK,eAAeA,CAAC,CAAA,CAAA,CAG/C,CAEA,eAAeA,EAAkC,CAC/CA,EAAE,gBAAgB,EAClBA,EAAE,eAAe,EAEjB,KAAK,YAAY,CACnB,CAEA,MAAM,aAAc,OACb,KAAK,SAEV,MAAMtI,EAAM,MAAM,QAAQ,KAAK,MAAM,GAErCD,EAAA,KAAK,8BAAL,MAAAA,EAAA,UAAmC,IACrC,CAEA,IAAI,mBAAoB,CACtB,OAAO,KAAK,YAAY,IAAKuM,IACpB,CAAE,MAAOA,EAAG,MAAOA,CAAE,EAC7B,CACH,CACF,CC3Da,MAAA0B,GAERpL,GAAU,CACb,KAAM,CAAE,OAAAkL,EAAQ,SAAAtN,EAAU,cAAAyN,EAAe,OAAAC,EAAQ,MAAAC,CAAU,EAAAvL,EAErD,CAACwL,EAA0BL,CAA2B,EAC1D/L,EAAAA,SAAwB8L,IAAW,IAAI,EAEnChF,EAAK,IAAI+E,GACbC,EACAC,CAAA,EAGF,OAEI5J,EAAA6B,EAAA,CAAA,SAAA,CAAAzD,EAACM,GAAA,CACC,aAAc,CACZ,MAAO,CACL,SAAU,QACV,aAAc,SAChB,CACF,CAAA,CACF,EACCuL,EAEGjK,EAAA6B,EAAA,CAAA,SAAA,CAACzD,EAAA,MAAA,CAAI,UAAU,OAAO,SAAkB,gBAAA,EACxC4B,EAACkK,GAAK,CAAA,UAAU,WACd,SAAA,CAAA9L,EAAC,MAAA,CACC,IAAK4L,EACL,UAAU,0CAAA,CACZ,EAEC5L,EAAA,KAAA,CAAG,UAAU,eAAgB,SAAc0L,EAAA,EAC5C9J,EAAC,IAAE,CAAA,UAAU,4BAA4B,SAAA,CAAA,KACpC,IACH5B,EAAC,OAAA,CACC,UAAU,cACV,wBAAyB,CACvB,OAAQ2L,CACV,CAAA,CACD,EACA1N,CAAA,EACH,CAAA,EACF,EACA2D,EAAC,MAAI,CAAA,UAAU,eACb,SAAA,CAAA5B,EAACwC,EAAA,CACC,MAAM,mDACN,OAAQ,CAAE,KAAM,OAAQ,EAExB,WAACV,EAAO,CAAA,QAAQ,UAAU,KAAK,SAAS,SAExC,8BAAA,CAAA,CACF,EACA9B,EAAC8B,EAAA,CACC,QAAQ,UACR,KAAK,SACL,QAAS,IAAMyE,EAAG,gBAAgB,EACnC,SAAA,oBAAA,CAED,CAAA,EACF,CAAA,CAAA,CACF,EAGE3E,EAAA6B,EAAA,CAAA,SAAA,CAACzD,EAAA,KAAA,CAAG,UAAU,+BAA+B,SAE7C,qBAAA,EACA4B,EAAC,MAAI,CAAA,UAAU,yDACb,SAAA,CAAC5B,EAAA,MAAA,CAAI,UAAU,eACb,SAAAA,EAACmF,EAAA,CACC,KAAK,2DACL,YAAY,iBACZ,QAASoB,EAAG,iBAAA,CAAA,EAEhB,EACCvG,EAAA,KAAA,CAAG,UAAU,qCAAqC,SAEnD,yCAAA,EACAA,EAAC,MAAI,CAAA,UAAU,0BACb,SAAAA,EAAC8F,GAAA,CACC,KAAK,2EACL,KAAK,SACL,IAAK,EACL,KAAM,EACN,UAAU,UAAA,CAAA,EAEd,EACA9F,EAAC,MAAI,CAAA,UAAU,eACb,SAAAA,EAACwC,EAAA,CACC,MAAM,mDACN,OAAQ,CAAE,KAAM,OAAQ,EAExB,SAACxC,EAAA8B,EAAA,CAAO,QAAQ,UAAU,SAAwB,2BAAA,CAAA,CAAA,EAEtD,CAAA,EACF,CAAA,EACF,CAEJ,CAAA,CAAA,CAEJ,EC9GAiK,GAAmB,CACjB,+BAAgCC,GAASP,EAA8B,EACvE,gBAAiBO,GAASd,EAAe,CAC3C,CAAC"}