{"version":3,"sources":["webpack:///./src/client/actions/complete_ein/flows/default.js","webpack:///./src/client/actions/complete_ein/flows/index.js","webpack:///./src/client/actions/complete_ein/index.js","webpack:///./src/client/actions/register_ein/flows/default.js","webpack:///./src/client/actions/register_ein/flows/index.js","webpack:///./src/client/actions/register_ein/index.js","webpack:///./src/client/actions/registration/flows/default.js","webpack:///./src/client/actions/registration/flows/index.js","webpack:///./src/client/actions/registration/index.js","webpack:///./src/client/actions/complete_dbaentity/flows/default.js","webpack:///./src/client/actions/complete_dbaentity/flows/index.js","webpack:///./src/client/actions/complete_dbaentity/index.js","webpack:///./src/client/actions/complete_corp/flows/default.js","webpack:///./src/client/actions/complete_corp/flows/index.js","webpack:///./src/client/actions/complete_corp/index.js","webpack:///./src/client/actions/register_nypub/flows/default.js","webpack:///./src/client/actions/register_nypub/flows/index.js","webpack:///./src/client/actions/register_nypub/index.js","webpack:///./src/client/actions/register_wfg/flows/default.js","webpack:///./src/client/actions/register_wfg/flows/index.js","webpack:///./src/client/actions/register_wfg/index.js","webpack:///./src/client/actions/complete_llc/flows/default.js","webpack:///./src/client/actions/complete_llc/flows/index.js","webpack:///./src/client/actions/complete_llc/index.js","webpack:///./src/client/actions/register_dbaentity_pf/flows/default.js","webpack:///./src/client/actions/register_dbaentity_pf/flows/index.js","webpack:///./src/client/actions/register_dbaentity_pf/stepsFlowFactory.js","webpack:///./src/client/actions/register_dbaentity_pf/index.js","webpack:///./src/client/actions/complete_cora/flows/default.js","webpack:///./src/client/actions/complete_cora/flows/index.js","webpack:///./src/client/actions/complete_cora/index.js","webpack:///./src/client/actions/complete_blr/flows/default.js","webpack:///./src/client/actions/complete_blr/flows/index.js","webpack:///./src/client/actions/complete_blr/index.js","webpack:///./src/client/actions/register_blr/flows/default.js","webpack:///./src/client/actions/register_blr/flows/index.js","webpack:///./src/client/actions/register_blr/index.js","webpack:///./src/client/actions/register_account/flows/default.js","webpack:///./src/client/actions/register_account/flows/index.js","webpack:///./src/client/actions/register_account/index.js","webpack:///./src/client/actions/register_cora_pf/flows/default.js","webpack:///./src/client/actions/register_cora_pf/flows/index.js","webpack:///./src/client/actions/register_cora_pf/stepsFlowFactory.js","webpack:///./src/client/actions/register_cora_pf/index.js","webpack:///./src/client/actions/Lead/index.js","webpack:///./src/client/actions/complete_wfg/flows/default.js","webpack:///./src/client/actions/complete_wfg/flows/index.js","webpack:///./src/client/actions/complete_wfg/index.js","webpack:///./src/client/actions/register_banking/flows/default.js","webpack:///./src/client/actions/register_banking/flows/index.js","webpack:///./src/client/actions/register_banking/index.js","webpack:///./src/client/actions/complete_nypub/flows/default.js","webpack:///./src/client/actions/complete_nypub/flows/index.js","webpack:///./src/client/actions/complete_nypub/index.js","webpack:///./src/client/actions/register_nameres/flows/default.js","webpack:///./src/client/actions/register_nameres/flows/index.js","webpack:///./src/client/actions/register_nameres/index.js","webpack:///./src/client/actions/register_gs/flows/default.js","webpack:///./src/client/actions/register_gs/flows/index.js","webpack:///./src/client/actions/register_gs/index.js","webpack:///./src/client/actions/register_accounting/flows/default.js","webpack:///./src/client/actions/register_accounting/flows/index.js","webpack:///./src/client/actions/register_accounting/index.js","webpack:///./src/client/actions/initialization/index.js","webpack:///./src/client/actions/complete_business/flows/default.js","webpack:///./src/client/actions/complete_business/flows/index.js","webpack:///./src/client/actions/complete_business/index.js","webpack:///./src/client/actions/register_annual_report/flows/index.js","webpack:///./src/client/actions/register_annual_report/index.js","webpack:///./src/client/actions/register_domainname/flows/default.js","webpack:///./src/client/actions/register_domainname/flows/index.js","webpack:///./src/client/actions/register_domainname/index.js","webpack:///./src/client/actions/account/index.js","webpack:///./src/client/actions/register_amendment/index.js","webpack:///./src/client/actions/register_smb_growth/flows/default.js","webpack:///./src/client/actions/register_smb_growth/flows/index.js","webpack:///./src/client/actions/register_smb_growth/index.js","webpack:///./src/client/actions/orders/index.js","webpack:///./src/client/actions/register_basicemail/flows/default.js","webpack:///./src/client/actions/register_basicemail/flows/index.js","webpack:///./src/client/actions/register_basicemail/index.js","webpack:///./src/client/actions/register_domainprivacy/flows/default.js","webpack:///./src/client/actions/register_domainprivacy/flows/index.js","webpack:///./src/client/actions/register_domainprivacy/index.js","webpack:///./src/client/actions/register_corpdocs/flows/default.js","webpack:///./src/client/actions/register_corpdocs/flows/index.js","webpack:///./src/client/actions/register_corpdocs/index.js","webpack:///./src/client/actions/register_opagreement/flows/default.js","webpack:///./src/client/actions/register_opagreement/flows/index.js","webpack:///./src/client/actions/register_opagreement/index.js","webpack:///./src/client/actions/register_website/flows/default.js","webpack:///./src/client/actions/register_website/flows/index.js","webpack:///./src/client/actions/register_website/index.js","webpack:///./src/client/actions/register_business_kit/flows/default.js","webpack:///./src/client/actions/register_business_kit/flows/index.js","webpack:///./src/client/actions/register_business_kit/index.js","webpack:///./src/client/actions/companies/index.js","webpack:///./src/client/actions/register_nextpage/index.js","webpack:///./src/client/actions/business_name_generator/flows/default.js","webpack:///./src/client/actions/business_name_generator/flows/index.js","webpack:///./src/client/actions/business_name_generator/index.js","webpack:///./src/client/actions/expense_tracker_n_taxes_filing/flows/default.js","webpack:///./src/client/actions/expense_tracker_n_taxes_filing/flows/index.js","webpack:///./src/client/actions/expense_tracker_n_taxes_filing/index.js","webpack:///./src/client/actions/register_bpwq/flows/default.js","webpack:///./src/client/actions/register_bpwq/flows/index.js","webpack:///./src/client/actions/register_bpwq/index.js","webpack:///./src/client/actions/register_wfgir/flows/default.js","webpack:///./src/client/actions/register_wfgir/flows/index.js","webpack:///./src/client/actions/register_wfgir/index.js","webpack:///./src/client/actions/register_vanity/flows/default.js","webpack:///./src/client/actions/register_vanity/flows/index.js","webpack:///./src/client/actions/register_vanity/index.js","webpack:///./src/client/actions/register_zbmpro/flows/default.js","webpack:///./src/client/actions/register_zbmpro/flows/index.js","webpack:///./src/client/actions/register_zbmpro/index.js","webpack:///./src/client/actions/register_business/flows/default.js","webpack:///./src/client/actions/register_business/flows/index.js","webpack:///./src/client/actions/register_business/index.js","webpack:///./src/client/actions/register_stock_setup/flows/default.js","webpack:///./src/client/actions/register_stock_setup/flows/index.js","webpack:///./src/client/actions/register_stock_setup/index.js","webpack:///./src/client/actions/register_zbm_plaid/flows/default.js","webpack:///./src/client/actions/register_zbm_plaid/flows/index.js","webpack:///./src/client/actions/register_zbm_plaid/index.js","webpack:///./src/client/actions/ettf_renewal/flows/default.js","webpack:///./src/client/actions/ettf_renewal/flows/index.js","webpack:///./src/client/actions/ettf_renewal/index.js","webpack:///./src/client/actions/register_zb_banking_preferred/flows/default.js","webpack:///./src/client/actions/register_zb_banking_preferred/flows/index.js","webpack:///./src/client/actions/register_zb_banking_preferred/index.js","webpack:///./src/client/actions/register_initialcpascreening/index.js","webpack:///./src/client/actions/purchase_post_addons/flows/default.js","webpack:///./src/client/actions/purchase_post_addons/flows/index.js","webpack:///./src/client/actions/purchase_post_addons/index.js"],"names":["getAddressFlow","url","registration","usePhysicalAsMailing","businessAddresses","mailingAddressRequired","physicalAddressRequired","ein","flowItems","URLS","PHYS_ADDR","push","MAIL_ADDR","getEINFromRegistrationFlow","business","member","type","hasTwo","llcMarried","motorVehicle","responsibleParty","hasSSN","hasDBAs","employeesW2","collectDataFromUser","flow","START_EIN","CORP_TAXED","LLC_ARE_MARRIED","LLC_MARRIED_TAXED","CHOOSE_RESP","HAS_SSN","NO_SSN","RESP_INFO","HAS_DBAS","DBA_NAMES","CORP_INFO","BUS_QUEST_START","GAMBLING","ATF","HAS_EMPL_W2","EMPL_W2","VEHICLE","VEHICLE_WEIGHT","BUS_720","BUS_ACT","DATA_CONFIRM","getEINFromRegisterEINFlow","EIN_REASON","LLC_MBR_COUNT","RESP_PARTY","LLC_INFO","SHARE","COMPLETE","getFlowOrder","page","registrationFlow","flowTestMap","default","DefaultFlows","getCompleteEINFlowId","defaultBusinessData","id","businessData","getReducerSnapshot","businessKey","defaultBusinessAddressesData","usePhysicalAsPrincipal","useMailingAsPrincipal","businessAddressesData","businessAddressesKey","defaultPageData","pageData","pageKey","defaultEINData","principalAddressRequired","hasDBA","memberCount","skipEIN","einData","einKey","defaultPurchaseData","purchaseData","purchaseKey","defaultMemberData","members","memberData","memberKey","length","getFlow","purchase","go","jump","document","location","pathname","substring","BASE","flowOrder","index","_indexOf","jumpIndex","browserHistory","getDBAEntityEntryPoint","getCorpEntryPoint","getLLCEntryPoint","COMPANY_URLS","DASHBOARD_URLS","getDBACompleteEntryPoint","getPostPurchaseEntryPoint","set","dispatch","data","actionKey","logger","logAction","payload","updateSnapshots","_assign","getEntryPoint","fromBack","goBack","ACTIONS","GO_BACK","getNextUncompletedPage","isDashboard","goToNextUncompletedPage","setATF","setBusinessActivity","setBusinessForm720","setBusinessQuestionsStart","setChooseResponsible","setCorpInfo","setCorpTaxed","setComplete","setDataConfirmation","dataConfirm","DATA_DBA_CONFIRM","setEINReason","setEmployeesW2","setHasEmployeesW2","setGambling","setHasSSN","setLLCAreMarried","setLLCInfo","setLLCMarriedTaxed","setLLCMemberCount","setMailingAddress","setMailingAddressModal","MAIL_ADDR_MODAL","setMotorVehicle","setMotorVehicleWeight","setNoSSN","setPhysicalAddress","setPhysicalAddressModal","PHYS_ADDR_MODAL","setPrincipalAddress","PRIN_ADDR","setResponsibleInfo","setResponsibleParty","setShare","setStartEIN","forward","setDBAs","setHasDBAs","setBusinessData","BUS_DATA","setCorpData","CORP_DATA","setEINData","EIN_DATA","setMemberData","MBR_DATA","setResponsibleData","RESP_DATA","setEstimatedFormationDate","EST_DATE","updateOrderTaskStatus","einOrderTaskUuid","status","subStatus","skip","orderService","then","SKIP_EIN","catch","err","error","errorCode","setSkipEIN","updateOrder","reducerData","filingFees","expediteFees","advance","serviceEndpoint","getServiceEndpoint","UPDATE_ORDER","registrationService","response","UPDATE_ORDER_COMPLETE","getNewCustomerFlowOrder","LOGIN_POST","ACCOWN_NAME","ACCOWN_CONTACT","BUS_TYPE","BUS_NAME","DOM_JUR","BUS_DESC","PAYMENT","getNewCompanyFlowOrder","NO_COMPANY","hasCompanies","isSimulated","BUS_ID","shift","unshift","getExistingCompanyFlowOrder","fromDashboard","startConfirm","isLoggedIn","getRegisterEINFlowId","goInFlow","doReplace","businessOrderType","method","replace","getAppEntryPoint","isOrderCompleteByType","COMP_EIN_URLS","moveUrl","forceBusinessId","setAccountOwnerContact","setAccountOwnerName","setBusinessDescription","setBusinessId","domesticJurisdiction","name","setBusinessName","setBusinessType","setDomesticJurisdiction","setInit","setAppEntryPoint","setIsFreeAccount","REGISTRATION_ACTIONS","RESET","INIT","setLogin","LOGIN","setLoginPostPurchase","setNoCompany","setPayment","createEINOrder","CREATE_ORDER_COMPLETE","trackEvent","createOrder","CREATE_ORDER","customer","cardNumber","expMonth","expYear","cvc","cardToken","brand","last4","isDefault","card_token","accountService","addPaymentMethodV2","mergedData","ACCOUNT_ACTIONS","ADD_PAYMENT_METHOD_COMPLETE","createLead","lead","CREATE_LEAD","CREATE_LEAD_COMPLETE","updateLead","leadUuid","UPDATE_LEAD","UPDATE_LEAD_COMPLETE","console","setContactData","ACCOWN_MODAL","setBackFromCompleteBusiness","orderAlreadyCreated","planLevel","getPlanPurchaseFlow","initialization","bankingResolutionAddOn","bankingResolutionUpsellSkip","basicEmailAddOn","basicEmailUpsellSkip","corporateDocsAddOn","corporateDocsUpsellSkip","domainName","domainNameAddOn","domainNameUpsellSkip","domainNamePrivacyAddOn","domainNamePrivacyUpsellSkip","einAddOn","einUpsellSkip","expediteAddOn","expediteUpsellSkip","nyPublicationAddOn","nyPublicationUpsellSkip","operatingAgreementAddOn","operatingAgreementUpsellSkip","staticWebsiteAddOn","staticWebsiteUpsellSkip","worryFreeAddOn","worryFreeUpsellSkip","isStateClosed","standard","delayed","addStaticWebsiteToflow","isStaticWebsiteEnabled","isUpsellEnabled","isRAOfferEnabled","PURCH_RAS","PURCH_EXP","isEINEnabled","PURCH_EIN","isWFGEnabled","PURCH_WF","isOpAgreementEnabled","PURCH_OP_AGREE","isBankingResolutionEnabled","PURCH_BANK_RES","isCorporateDocsEnabled","PURCH_CORP_DOCS","isNYPubEnabled","isNYPubUpsellEnabled","PURCH_NYPUB","PUB_COUNTY_NY","isDomainNameEnabled","PURCH_DOMAIN","isAutoIncludedInPlan","getPlanLevel","isDomainNamePrivacyEnabled","PURCH_DOMAIN_PRIV","PURCH_WEBSITE","isBasicEmailEnabled","PURCH_EMAIL","getPurchaseFlow","PURCH_START","forceToDataConfirmation","getPaymentFlow","PRODUCT_CONFIRM","getSCorpQuestionFlow","hasSCorp","scorpAllUSOwners","scorpOperateLoss","scorpPaySalary","SCORP_ALL_US_OWNERS","SCORP_LOSS","SCORP_SALARY","SCORP_INVESTORS","skipBusinessName","skipPlansPage","skipToDomesticJurisdiction","fromBNG","BUS_NAME_CONFIRM","PURCH_PLAN","_concat","noIdMatches","getRegistrationFlowId","defaultInitializationData","addressMatch","addressIsGoogle","state","scorpOutsideInvestors","forceToRegisteredAgent","defaultRegisteredAgentData","registeredAgentData","registeredAgentKey","registeredAgentService","initializationKey","registeredAgent","setProgressBar","currentStep","setReducerProgressBar","activeFlow","resetProgressBar","resetReducerProgressBar","makeUrlMovement","movement","useLocation","executeMovement","urlMovement","urlsSet","CORP_URLS","LLC_URLS","START_COMP","clickEvent","trackClick","getPageDetails","parseUrl","nextUrl","doReset","getArrowClickDetails","resetAllData","getExpediteFees","getInitExpediteFees","getStateFees","getInitStateFees","getButtonClickDetails","reset","setBusinessNameConfirm","setBusinessNameModal","BUS_NAME_MODAL","setBusinessTypeModal","BUS_TYPE_MODAL","fromHomePage","setDomesticJurisdictionModal","DOM_JUR_MODAL","setFormationCounty","FORM_COUNTY","setInfoConfirmation","forceToPrivacy","getClickDetails","setPrincipalAddressModal","PRIN_ADDR_MODAL","setProductConfirmation","setPurchaseBankingResolution","boolAsStr","parseBoolToString","bankingResolution","setPurchaseBasicEmail","basicEmail","setPurchaseCorporateDocs","corporateDocs","setPurchaseDomainName","setPurchaseDomainNamePrivacy","domainNamePrivacy","setPurchaseEIN","boolAsString","setPurchaseExp","expedite","setPubCounty","PUB_COUNTY","setPurchaseNYPub","nyPublication","setPurchaseOperatingAgreement","operatingAgreement","setPurchaseRAS","setPurchasePlan","privacyAddOn","privacyUpsellSkip","pricingProductLandingPageUrl","levelMap","PLAN_LEVEL_MAP","setPurchaseStart","setPurchaseStaticWebsite","staticWebsite","setPurchaseWorryFree","worryFree","setRegisteredAgent","REG_AGT","setRegisteredAgentModal","REG_AGT_MODAL","setSCorpAllUSOwners","setSCorpOutsideInvestors","scorpInvestors","setSCorpOperateLoss","setSCorpPaySalary","setStateRequirements","STATE_REQ","isPF","getPartner","getEntryPointGroup","pd","createFormationOrder","async","fees","serviceMethod","formationOrder","setRegisteredAgentData","RA_DATA","setCompanyDetails","EDIT_CHECKOUT","dbaEntity","START","hasEIN","parentType","OWNER_COUNT","OWNERS","STATE_FILING","HAS_EIN","EIN","AUTH_SIG","getCompleteLLCFlowId","defaultDBAEntityData","domesticEntity","dbaEntityData","dbaEntityKey","goInFlowOrder","getEINEntryPoint","getCompleteEntryPoint","setAllAddressesModal","ADDR_MODAL","setBusinessModal","BUS_MODAL","setDBAModal","DBA_MODAL","setDomesticEntity","DOM_ENTITY","setEIN","setHasEIN","setOwnerCount","setOwnersModal","OWNER_MODAL","setOwners","setRegistrationModal","REG_MODAL","setAuthorizedSignatory","setAuthorizedSignatoryModal","AUTH_SIG_MODAL","setStart","setStateFiling","updateDBAEntity","DBA_IGNORE_STATES_WITH_DELAWARE","AZ","CA","CT","DE","FL","NE","NY","PA","WY","DBA_IGNORE_STATES","HAS_MORE_THAN_ONE_SHARE_STATES","isVmaJurisdiction","requestedJurisdiction","PURCHASE_VBA","getDBAEntityFlow","purchaseDBAEntity","postpurchase","PURCHASE_DBA_ENTITY","DBA_ENTITIES","PURCHASE_DBA_COMPLIANCE","isDBAEntityEnabled","isDBAComplianceEnabled","getRegisteredAgentFlow","REGISTERED_AGENT","getHasMoreThanOneShareFlow","HAS_MORE_THAN_ONE_SHARE","officer","domainNameData","hasAsstSecretary","hasVicePresident","featureFlags","features","stockSetup","CORP_STOCK","DIR_COUNT","DIR_LIST","CHOOSE_PRES","PRES","HAS_VP","CHOOSE_VP","VP","CHOOSE_TRSR","TRSR","CHOOSE_SEC","SEC","HAS_ASST_SEC","CHOOSE_ASST_SEC","ASST_SEC","CHOOSE_PRIM_CONTACT","PRIM_CONTACT","DOMAIN_NAME","EMAIL_ADDRESS","getCompleteCorpFlowId","domainNameKey","officerData","officerKey","postpurchaseData","postpurchaseKey","purchaseVBA","disableEIN","goTo","setAsstSecretary","goToAsstSecretary","GO_TO_ASST_SEC","setBasicEmailAddress","setChooseAsstSecretary","setChoosePresident","setChoosePrimaryContact","setChooseSecretary","setChooseTreasurer","setChooseVicePresident","setCorpStock","setHasMoreThanOneShare","setDBAEntities","setDirectorCount","REG_AGENT","setDirectorList","setDomainNamePrimary","setHasAsstSecretary","setHasVicePresident","setPresident","goToPresident","GO_TO_PRES","setPrimaryContact","goToPrimaryContact","GO_TO_PRIM_CONTACT","setPurchaseDBACompliance","setPurchaseDBAEntity","setPurchaseVBA","setSecretary","goToSecretary","GO_TO_SEC","PURCHASE_SUCCESS","setStartComplete","setTreasurer","goToTreasurer","GO_TO_TRSR","setVicePresident","goToVicePresident","GO_TO_VP","updateContacts","contactType","action","manager","director","updateCorp","HAS_FORMATION_NY_PUB","items","getRegisterNYPubFlowId","OrderTypes","LLC","CORP","NY_PUBLICATION","COMP_NYPUB_URLS","setAccountOwnerModal","setHasFormationNYPub","setPubCountyModal","PUB_COUNTY_MODAL","createNYPubOrder","createNyPubLLC","paymentData","getRegisterWFGFlowId","COMP_WFG_URLS","fullData","createWFGOrder","ldFlags","isDAO","daoMemberManaged","showMemberOptions","_compact","MBR_COUNT","MBR_LIST","managerType","MGR_OPT","BUS_RUN","MGR_COUNT","MGR_LIST","isCaDivLaborEnabled","CA_DOL","managerData","managerKey","executeUrlMovement","goNext","GO_NEXT","setBusinessRunners","SET_BUS_RUN","setManagerCount","setManagerList","SET_MGR_LIST","setManagerOption","SET_MGR_OPT","setMemberList","SET_MBR_LIST","setMemberCount","SET_REG_AGENT","goToChoosePrimaryContact","goToMemberCount","GO_TO_MBR_COUNT","goToManagerSelect","setShareNewLLC","updateLLC","QUESTIONNAIRE","CONGRATS","getStepsForDBAName","STEPS","DBA_NAME","POST_DBA_NAME","getStepsWhenCompanyStateIsNotSupported","JURISDICTION_NOT_SUPPORTED","getStepsWhenCompanyIsSelected","stepOrder","DBA_IN_SAME_STATE","registerDBAInSameState","FORM_IN_HOME_STATE","formInHomeState","BEFORE_CART","CART","POST_FORM_IN_HOME_STATE","getFlowToRegisterBusinessAndDBA","isNewAccount","ACCOWN_FIRST_NAME","INIT_REQ_JUR","POST_REQ_JUR","isInitialJurSupported","CHECK_OTHER_JURS","checkOtherDomJurs","REQ_JUR_NO_CHECK","JURS_ZB_SUPPORT","businessType","BUS_TYPES","NOT_FORMED_YET","BUS_TYPE_NOT_FORMED","BUS_TYPE_FORM_WITH_ZB","POST_BUS_TYPE","isTypeSupported","HOME_STATE","homeState","DOMESTIC_JUR","DOMESTIC_JUR_CONFIRMATION","confirmDomesticJurisdiction","POST_DOMESTIC_JUR_CONFIRMATION","CHECKPOINT","saveData","ACCOWN_LAST_NAME","ACCOWN_EMAIL","ACCOWN_PHONE","START_UPSELLS","getFlowForLoggedInUser","simulatedCompanyId","getFlowForFreeDashboardUser","useCompanyConfirmation","BUS_USAGE_CONFIRM","confirmCompanyUsage","loggedInUserNumberOfBusinesses","BUS_SELECTION","loggedInBusSelection","BUS_SELECTION_VALUE_OPTIONS","NEW","EXISTING","isCompanyStateSupported","getFlowWhenCompanyIdIsInUrl","getDefaultFlowForLoggedInUser","getStepsFlow","steps","WELCOME","DBA","getFlowForNewAccount","defaultDbaEntityData","isRegisteringABusiness","dbaKey","getStepOrder","getNoScrollSteps","getStepIndex","step","order","getNextStep","resetStep","requestedStepIndex","currentStepIndex","nextStep","setGlobalProgressBar","urlGoTo","companyId","COMPLETE_DBA_URLS","dispatchNextStep","NEXT_STEP","setStep","includeStepInDispatch","cartUpdate","setSpecificStep","setLead","createOrUpdateLead","customerSnapshotData","customerKey","LeadManager","firstName","lastName","phone","phoneNumber","email","searchstate","selectedState","entityName","businessName","entityType","purchase_flow","setAccountOwnerEmail","setAccountOwnerFirstName","setAccountOwnerLastName","setAccountOwnerPhone","move","theRest","fromCart","setFormWithZB","formWithZB","setHomeState","setFormInHomeState","setDomesticJurisdictionConfirmation","setBusinessIsRegistered","businessIsRegistered","BUS_REGISTERED","setCompanyHasForeignQualification","companyHasForeignQualification","BUS_HAS_FOREIGN_QUALIFICATION","setCompanyUsageConfirmation","setCheckOtherJurisdictions","setBusinessSelection","setRegisterDBAInSameState","setStaticWebsite","setBusinessTypeAndName","BUS_TYPE_NAME_CART","setCart","setCheckpoint","setCreateOrder","FLOW_COMPLETE","setInitJurisdiction","setRequestedJurisdiction","REQ_JUR","checkIfDomJurIsSupported","domJur","initJurDom","skipInititialDomJur","setNextStep","therest","PRE_NEXT_STEP","setDBAName","setPricing","PRICES","takeUserToExternalLinks","WEBSITE_URLS","PRICING","setDBA","setWelcome","createDBAOrder","accountId","creationMethod","resetData","_isEmpty","RESET_DATA","getPostPrincipalsFlowOrder","cora","jurisdictionOrder","hasElectiveCEO","pendingStates","needsContact","needsCoraContacts","jurisdictionOrderCount","OFF_STATE_CONTACT","CHOOSE_OFF_STATE_CONTACT","CHOOSE_SOP_CONTACT","SOP_CONTACT","i","HAS_ELECTIVE_CEO","CHOOSE_ELECTIVE_CEO","ELECTIVE_CEO","getCorpFlowOrder","needsPrincipals","CORP_DIR_COUNT","CORP_DIR_LIST","CORP_CHOOSE_PRES","CORP_PRES","CORP_HAS_VP","CORP_CHOOSE_VP","CORP_VP","CORP_CHOOSE_TRSR","CORP_TRSR","CORP_CHOOSE_SEC","CORP_SEC","CORP_HAS_ASST_SEC","CORP_CHOOSE_ASST_SEC","CORP_ASST_SEC","getLLCFlowOrder","LLC_MBR_LIST","LLC_MGR_OPT","LLC_BUS_RUN","LLC_MGR_COUNT","LLC_MGR_LIST","hasFormation","needsBusinessData","needsBusinessIndustry","needsDomesticJurisdictionData","needsAddresses","needsPrincipalAddress","getCompleteWFGFlowId","defaultCoraData","requestedJurisdictions","needsPrincipalAddresses","coraData","coraKey","defaultManagerData","defaultOfficerData","forceToMembers","forceToManagers","forceToDirectors","forceToOfficers","forceToPayment","forceToContact","getFlows","results","goToCorpAsstSecretary","GO_TO_CORP_ASST_SEC","goToCorpPresident","GO_TO_CORP_PRES","goToCorpSecretary","GO_TO_CORP_SEC","goToCorpTreasurer","GO_TO_CORP_TRSR","goToCorpVicePresident","GO_TO_CORP_VP","goToElectiveCEO","GO_TO_ELECTIVE_CEO","goToOfficialStateContact","GO_TO_OFF_STATE_CONTACT","goToSOPContact","GO_TO_SOP_CONTACT","setAddressesModal","setBusinessDescriptionModal","BUS_DESC_MODAL","setBusinessInfoModal","BUS_INFO_MODAL","setChooseElectiveCEO","setChooseOfficialStateContact","setChooseSOPContact","setCorpAsstSecretary","setCorpChooseAsstSecretary","setCorpChoosePresident","setCorpChooseSecretary","setCorpChooseTreasurer","setCorpChooseVicePresident","setCorpDirectorCount","setCorpDirectorList","setCorpDirectorListModal","CORP_DIR_LIST_MODAL","setCorpHasAsstSecretary","setCorpHasVicePresident","setCorpOfficerListModal","CORP_OFF_LIST_MODAL","setCorpPresident","setCorpSecretary","setCorpTreasurer","setCorpVicePresident","_filter","reqJur","sort","a","b","setElectiveCEO","setElectiveCEOModal","ELECTIVE_CEO_MODAL","setHasElectiveCEO","setLLCBusinessRunners","setLLCManagerCount","setLLCManagerList","setLLCManagerListModal","LLC_MGR_LIST_MODAL","setLLCManagerOption","setLLCManagerOptionModal","LLC_MGR_OPT_MODAL","setLLCMemberList","setLLCMemberListModal","LLC_MBR_LIST_MODAL","setOfficialStateContact","setOfficialStateContactModal","OFF_STATE_CONTACT_MODAL","setSOPContact","setSOPContactModal","SOP_CONTACT_MODAL","setStateFilingModal","STATE_FILING_MODAL","updateCoRA","getBLRDataFlowOrder","blr","hasEmployees","BUS_AT_HOME","BUS_INDUSTRY","HAS_EMPLOYEES","EMPL_COUNT","getNewCompanyFlow","START_BUS_DATA","START_BLR_DATA","existingCompany","getDashboardFlow","defaultBlrData","skipBlr","blrData","blrKey","forceContact","forcePerson","forLogin","index1","setBusinessIndustry","setBusinessOutOfHome","setEmployeesCount","setHasEmployees","setLicenseDataModal","LIC_DATA_MODAL","setPrimaryContactModal","PRIM_CONTACT_MODAL","setStartBlrData","setStartBusData","updateBusinessLicense","BUS_EXIST","getCompanyUrl","altMethod","setBusinessDataModal","BUS_DATA_MODAL","setBusinessExist","setContactDataModal","createBLROrder","createBusinessLicense","STEP_1","STEP_2","STEP_3","hasExistingBusiness","HAS_EX_BUS","getRegisterGSFlowId","path","idx2","indexOf","setCompleteStep1","setCompleteStep2","setCompleteStep3","setHasExistingBusiness","createAccount","CREATE_ACCOUNT","create","CREATE_ACCOUNT_COMPLETE","accountAlreadyCreated","getStepOrderMobileMVP","busDetailsLocked","requestedJurisdictionCount","foreignQualFiling","foreignRegistration","selfFile","REQ_JURS","FOREIGN_REG","FOREIGN_QUAL_FILING","HOW_TO_FILE","RETURN_TO_LANDING","CHOOSE_HAS_FORMATION","PLAN","getExistingBusinessStepOrder","domJurNotReqJurs","formWithZen","HAS_FORMATION","FORM_WITH_ZEN","GO_TO_FORMATION","UPSELL_DOM_JUR","CHOOSE_DOM_JUR","getNewBusinessStepOrder","getStepOrderMobileMaxLTV","variantMap","VARIANTS","MVP","mobile","desktop","MAX_LTV","noScrollingMap","variant","getTestVariant","device","window","zenIsMobile","_get","flowFunction","needsFormation","businessTypeOnParam","formationOnParam","idOnParam","requestedJurisdictionOnParam","noScrollingSteps","COMPLETE_CORA_URLS","d","snapshotData","setChooseDomesticJurisdiction","setChooseHasFormation","setForeignQualFiling","setForeignRegistration","setFormWithZen","setHasFormation","setHowToFile","requestedJurisdictionsOnParam","requestedJurisdictionsCount","entryPoint","PAYMEHT","setPlan","setRequestedJurisdictions","setRegAgent","setRegisteredStatesFromCart","REG_STATES_FROM_CART","setReturnToLanding","setUnregisteredStatesFromCart","UNREG_STATES_FROM_CART","setUpsellDomJur","upsellDomJur","createRAOrder","this","visit_uuid","getVisitUUID","Object","keys","reduce","current","key","_snakeCase","lead_source","frontEndLead","leadUUID","lead_phone","lead_email","lead_first_name","first_name","lead_last_name","last_name","constructor","actions","WORRY_FREE","BUSINESS_LICENSE_REPORT","NAME_RESERVATION","isDasboard","updateWFG","createdEIN","matchedBusinessActivity","hasITIN","hasW2","vehicle","itinInfo","purchaseEIN","MORE_INFO","RESPONSIBLE_PARTY","HAS_ITIN","ITIN","ITIN_INFO","DRUGS_FIREARMS","HAS_W2","W_2","TAXABLE_VEHICLE","FORM_720","einFlow","START_INFO","BUS_RECAP","DBAS","OWNER_INFO","CHOOSE_ACCOUNT","ACCOUNT_INFO","FUNDING","getRegisterBankingFlowId","defaultFlowData","hasExistingEIN","createdFormation","noEINShown","inPlan","flowData","bankingKey","setNaicsSector","SET_NAICS_SECTOR","setNaicsSubsector","SET_NAICS_SUBSECTOR","setNaicsIndustry","SET_NAICS_INDUSTRY","setBusinessRecap","setBusinessYears","BUS_YEARS","setChooseAccount","redirect","setFunding","setMoreInfo","setDrugsFirearms","setForm720","setHasItin","setHasW2","setItin","setItinInfo","setW2","setTaxableVehicle","setVehicle","setNoEIN","NO_EIN","goToOwners","GO_TO_OWNERS","setOwnerInfo","setAccountInfo","goToPayment","GO_TO_PAYMENT","_pick","setStartInfo","getNaicsCodes","GET_NAICS_CODES","fintechService","getNAICS","GET_NAICS_CODES_COMPLETE","PURCHASE_EIN","getFundingAccounts","publicToken","GET_FUNDING_ACCOUNTS","getPlaidAccounts","accounts","GET_FUNDING_ACCOUNTS_COMPLETE","getPlaidLinkToken","plaidConfigLink","GET_PLAID_LINK_TOKEN","linkToken","GET_PLAID_LINK_TOKEN_COMPLETE","cardData","ADD_PAYMENT_METHOD","doesHaveEIN","companyStatus","einOrderDict","orderList","find","x","setInitEINPurchaseFlow","initObject","createBanking","createEINBanking","Promise","all","getOrders","response1","ORDER_ACTIONS","GET_ORDERS_COMPLETE","banking","getCompleteNYPubFlowId","updateNyPubLLC","ACC_OWN_INFO","getRegisterNameresFlowId","skipDomesticJurisdiction","initialFlowOrder","entity_name_reservation","setAccountOwnerInformation","createNameResOrder","CHOOSE_COMPANY","CHOOSE_STATE","goodStandingKey","goToChooseCompany","GO_TO_CHOOSE_COMPANY","setChooseCompany","goToChooseState","GO_TO_CHOOSE_STATE","setChooseState","createGSOrder","createGoodStanding","goodStanding","getRegisterAccountingFlowId","createAccountingOrder","createAccounting","accounting","addPaymentMethod","setInitialization","SET_INITIALIZATION","useReferrer","SET_APP_ENTRY_POINT","referrer","stateCode","GET_STATE_FEES","initializationService","stateFeeResponse","GET_STATE_FEES_COMPLETE","GET_EXPEDITE_FEES","expediteFeeResponse","GET_EXPEDITE_FEES_COMPLETE","initializeData","INITIALIZE_PRICING_DATA","privacy","setReturnEIN","setReturnWFG","setReturnAccounting","setReturnBanking","setReturnDBAEntity","setReturnGS","setReturnNYPub","membersSnap","directorsSnap","directorKey","description","addressLine1","addressLine2","city","county","country","zipCode","directors","mailingAddressLine1","mailingAddressLine2","mailingCity","mailingCounty","mailingState","mailingCountry","mailingZipCode","owners","_map","owner","percent","percentFloat","accountOwner","setInitEIN","setInitWFG","setInitAccounting","setInitBanking","setInitDBAEntity","setInitGS","setInitNYPub","setPurchaseRegisteredAgent","forceCompany","PURCH_REG_AGT","registered_agent_service","updateBusiness","businessEntityId","UPDATE_BUSINESS","businessEntityService","update","UPDATE_BUSINESS_COMPLETE","match","_find","DOM_JURS","option","value","domesticJurisdictionName","label","businessAlreadyUpdated","questionsShowFlagMap","showMakesLessThanAmount","ADDITIONAL_QUESTIONS","MAKES_LESS_THAN","showHadGoodStanding","GOOD_STANDING_IN_MD","showHadPersonalProperty","PERSONAL_PROPERTY_IN_MD","showUseProperty","PROPERTY_IN_MD","showMaintainLicense","MAINTAIN_LICENSE","showHadGrossSales","GROSS_SALES_IN_MD","showListGrossSales","LIST_GROSS_SALES","showDidDisposeOfProperty","DISPOSE_OF_PROPERTY","showWebFileId","WEB_FILE_ID","showTotalRevenue","TOTAL_REVENUE","showOwnsAnyOtherBusiness","OWNS_ANY_OTHER_BUSINESS","showCompanyDataOwns","COMPANY_DATA_OWNS","showIsOwnedByAnyOtherBusiness","IS_OWNED_BY_ANY_OTHER_BUSINESS","showCompanyDataOwnedBy","COMPANY_DATA_OWNED_BY","showOwnsRealProperty","OWN_PROPERTY","showHasThereBeenATransferOfStock","TRANSFER_OF_STOCK","showHasTransferOfStockBeenOverEqualFiftyPercent","TRANSFER_OF_STOCK_OVER_EQUAL_FIFTY_PERCENT","showHasControllingInterestTransferFiledDepartmentRevenue","HAS_CONTROLLING_INTEREST_TRANSFER_FILED_DEPARTMENT_REVENUE","showHasEnteredIntoContract","HAS_ENTERED_INTO_CONTRACT","showHoldsInterestInAgriculturalLand","INTEREST_AGRICULTURAL_LAND","showIsFamilyFarmLLC","FAMILY_FARM_LLC","showNaicsCode","NAICS_CODE","showNumberOfStateEmployees","NUMBER_OF_STATE_EMPLOYEES","showNumberOfEmployees","NUMBER_OF_EMPLOYEES","showScrapMetalDealer","SCRAP_METAL_DEALER","showCurrentlyExporting","CURRENTLY_EXPORTING","showTopExportMarkets","TOP_EXPORT_MARKETS","showBeInterestedInExporting","BE_INTERESTED_IN_EXPORTING","showIsMinorityOwnedBusiness","IS_MINORITY_OWNED_BUSINESS","showIsWomanOwnedBusiness","IS_WOMAN_OWNED_BUSINESS","showsOwnMoreThanOneBusiness","OWN_MORE_THAN_ONE_BUSINESS","showHowManyBusinesses","HOW_MANY_BUSINESSES","showHowManyCounties","HOW_MANY_COUNTIES","showDoesEmployIndividualsWhoServeInForces","DOES_EMPLOY_INDIVIDUALS_WHO_SERVE_IN_FORCES","showHowManyIndividuals","HOW_MANY_INDIVIDUALS","showDoesOwnerServeInForces","DOES_OWNER_SERVE_IN_FORCES","showGetSupportFromWVSBDC","GET_SUPPORT_FROM_WVSBDC","showIssuedSharesAndGrossAssets","ISSUED_SHARES_AND_GROSS_ASSETS","showWorkerCompensationInsurance","WORKER_COMPENSATION_INSURANCE","showIsBusinessSelfInsured","IS_BUSINESS_SELF_INSURED","showSelfInsuranceDetails","SELF_INSURANCE_DETAILS","showChiefExecutiveOfficer","CHIEF_EXECUTIVE_OFFICER","showBusinessEntityPrincipalAddress","BUSINESS_ENTITY_PRINCIPAL_ADDRESS","showNumberOfDirectorsAndDirectorsAsWomen","NUMBER_OF_DIRECTORS_AND_DIRECTORS_AS_WOMEN","showOwnedUSMilitaryVeteran","OWNED_US_MILITARY_VETERAN","showOwnedUSDisabledMilitaryVeteran","OWNED_US_DISABLED_MILITARY_VETERAN","showNetReceiptsLessThanOneMillion","NET_RECEIPTS_LESS_THAN_ONE_MILLION","showUpToDateStockInformation","UP_TO_DATE_STOCK_INFORMATION","showStockClass","STOCK_CLASS","showStockAdded","STOCK_ADDED","showCorpTransacts","CORP_TRANSACTS","showCorpOwnership","CORP_OWNERSHIP","showIssuedShares","ISSUED_SHARES","showControllingMembers","CONTROLLING_MEMBERS","showControllingMembers1","CONTROLLING_MEMBERS1","showControllingMembers2","CONTROLLING_MEMBERS2","showControllingMembers3","CONTROLLING_MEMBERS3","showControllingMembers3a","CONTROLLING_MEMBERS3a","showControllingMembers3b","CONTROLLING_MEMBERS3b","showControllingMembers3c","CONTROLLING_MEMBERS3c","showBankruptcy","BANKRUPTCY","showIsCombinedGroup","IS_COMBINED_GROUP","showIsCombinedGroupTempLossPreserved","IS_COMBINED_GROUP_TEMP_LOSS_PRESERVED","showIsTieredPartnerRevAdjusted","IS_TIERED_PARTNER_REV_ADJUSTED","showIsPassiveEntityTX","IS_PASSIVE_ENTITY_TX","showIsREITTX","IS_REIT_TX","showIsNewVetOwnedTX","IS_NEW_VET_OWNED_TX","updatedCompanyInfoRestrictions","updatedCompanyInfo","KEYS","HAD_GROSS_SALES","HAS_THERE_BEEN_A_TRANSFER_OF_STOCK","HAS_TRANSFER_OF_STOCK_BEEN_OVER_EQUAL_FIFTY_PERCENT","getAdditionalQuestionsFlow","originalFieldInfo","fieldInfo","fieldInfoClone","_cloneDeep","forEach","isMdArEnhancementEnabled","modifyQuestionsFlowForMdLlc","showFlag","hasToCheckUpdatedCompanyInfo","annualReport","ORDER_SUBMITTED","originalCompanyInfo","filingJurisdictionType","hasPurchasedWFC","SELECT_COMPANY","SELECT_JURISDICTION","MODIFY_COMPANY","SELECT_FOREIGN_JURISDICTION","VALIDATE_COMPANY","flag","fieldKey","shouldNavigateToAmendment","ADD_AMENDMENT","ADD_WFC","CONFIRM_CHANGES","annualReportData","storageKey","createAnnualReportOrder","createAnnualReport","fieldRules","fetchJurisdictionInfo","jurisdictionCode","companyInfo","jurisdictionType","FETCH_JURISDICTION_REQ","annualReportService","getJurisdictionInfo","rules","companyType","isEditable","Boolean","amendment","requiresAmendment","business_purpose","structure","managers","officers","addresses","stock_info","authorized_signatory","showExportMarkets","annual_report","makes_less_than_amount","had_good_standing","had_personal_property","had_gross_sales","list_gross_sales","own_or_lease_property","requires_license","sold_property","total_revenue","owns_any_other_business","company_data_owns","is_owned_by_any_other_business","company_data_owned_by","owns_real_property","has_there_been_a_transfer_of_stock","has_transfer_of_stock_been_over_equal_fifty_percent","has_controlling_interest_transfer_filed_department_revenue","has_entered_into_any_contract","holds_interest_in_agricultural_land","is_a_family_llc","naics_code","number_of_state_employees","number_of_employees","scrap_metal_dealer","currently_exporting","top_export_markets","be_interested_in_exporting","is_minority_owned_business","is_woman_owned_business","own_more_than_one_business","how_many_businesses","how_many_counties","does_employ_individuals_who_serve_in_forces","how_many_individuals","does_owner_serve_in_forces","get_support_from_WVSBDC","issued_shares_and_gross_assets","worker_compensation_insurance","is_business_self_insured","self_insurance_details","chief_executive_officer","business_entity_principal_address","number_of_directors_and_directors_as_women","owned_us_military_veteran","owned_us_disabled_military_veteran","net_receipts_less_than_one_million","up_to_date_stock_information","what_stock_was_added","up_to_date_corp_information","issued_shares","controlling_members","bankruptcy","is_combined_group","is_combined_group_temp_loss_preserved","is_tiered_partner_rev_adjusted","is_passive_entity_tx","is_reit_tx","is_new_vet_owned_tx","web_file_id","canFileAmendment","formFieldInfo","FETCH_JURISDICTION_COMPLETE","jurisdictionRules","log","handleDeepLink","allCompanies","allCompaniesItems","filingType","selectedCompany","SET_COMPANY","company","SET_DEFAULT_TAX_PREPARER","taxPreparer","contact","toLowerCase","filingJurisdiction","SET_JURISDICTION_TYPE","goToModifyCompany","GO_BACK_TO_MODIFY_COMPANY","setAddAmendment","didAddAmendment","SET_ADD_AMENDMENT","setAddWFC","didAddWFC","SET_ADD_WFC","setCompanyToFile","sendToModifyPage","ADVANCE_IN_FLOW","newRouteName","setForeignJurisdictionType","SET_FOREIGN_JURISDICTION","setForeignJurisdictionStateId","stateId","SET_FOREIGN_JURISDICTION_STATE_ID","setJurisdictionType","setPurchaseWFG","isPurchasing","SET_PURCHASE_WFG","setHasWFG","hasWFG","SET_HAS_WFG","setUseCredit","useCredit","creditUUID","SET_USE_CREDIT","setUseARS","hasARS","SET_USE_ARS","dispatchUpdateField","fieldName","newValue","SET_FIELD","updatedFieldValue","dispatchResetField","RESET_FIELD","updateField","originalValue","hasChanges","updatedContacts","middleName","companyName","suffix","outstandingJudgments","authorizedShares","valuePerShare","addressType","title","ADDITIONAL_QUESTIONS_KEYS","values","includes","checkEligibility","CHECK_ELIGIBILITY","companyCount","DOMAIN_NAMES","EMAIL_ADDRESSES","defaultDomainNameData","setBasicEmailAddresses","setBasicEmailAddressModal","setDomainNames","createDomainNameOrder","createDomainName","getAccountHasZBMoneyProSubscription","hasZBMoneyProSubscription","GET_ACCOUNT_HAS_ZB_MONEY_PRO","getAccount","GET_ACCOUNT","get","processLogIn","initPayload","setVisit","partner","entry_point_group","initialize","responseInit","GET_ACCOUNT_COMPLETE","getPaymentMethods","GET_PAYMENT_METHODS","GET_PAYMENT_METHODS_COMPLETE","setPaymentMethodDefault","SET_PAYMENT_METHOD_DEFAULT","SET_PAYMENT_METHOD_DEFAULT_COMPLETE","setLogout","SET_LOGOUT","REG_ACTIONS","resetAllAccountData","logout","createAmendmentOrder","createAmendment","canFileAnnualReport","fetchComplianceEvents","FETCH_COMPLIANCE_EVENTS_REQ","getComplianceEvents","FETCH_COMPLIANCE_EVENTS_COMPLETE","upcomingEventDate","event_date","amendmentService","setSelectOnlyAnnualReport","didSelectOnlyAnnualReport","SET_SELECT_ONLY_ANNUAL_REPORT","smbGrowth","alreadyPurchased","ALREADY_PURCHASED","CHOOSE_PACKAGE","CHOOSE_INTERVAL","getRegisterSMBGrowthFlowId","defaultSMBGrowthData","smbGrowthData","smbGrowthKey","trackClickEvent","pageTitle","clickText","inputValue","pageDetails","pageType","clickDetails","clickType","setComingSoon","COMING_SOON","setAlreadyPurchased","goToUreeka","kickstarter","setTimeout","open","getUreekaUrl","setChooseInterval","yearlyInterval","setChoosePackage","createSMBGrowthOrder","createSMBGrowth","GET_ORDERS","message","emailInPlan","createBasicEmailOrder","createBasicEmail","primary","showSelectDomain","SELECT_DOMAIN","setDomainName","createDomainNamePrivacyOrder","createDomainNamePrivacy","corpDocs","defaultCorpDocsData","corpDocsData","corpDocsKey","returnTo","createCorpDocsOrder","createCorpDocs","defaultOperatingAgreementData","operatingAgreementData","operatingAgreementKey","createOperatingAgreementOrder","createOperatingAgreement","website","defaultWebsiteData","websiteData","websiteKey","createWebsiteOrder","createStaticWebsite","getRegisterBusinessKitFlowId","defaultBusinessKitData","businessKitData","businessKitKey","businessKit","createBusinessKitOrder","createBusinessKit","getCompanies","GET_COMPANIES","companyService","GET_COMPANIES_COMPLETE","goToNextCompletion","completedUrl","completedActionIndex","postpurchaseGoToNextUncompletedPage","blrGoToNextUncompletedPage","dbaGoToNextUncompletedPage","nypubGoToNextUncompletedPage","setStartCompleteCoRA","coraGoToNextUncompletedPage","wfgGoToNextUncompletedPage","einGoToNextUncompletedPage","corpGoToNextUncompletedPage","llcGoToNextUncompletedPage","goToNextRegOrComplete","skipLoginCheck","loggedIn","forceBus","regGoToNextUncompletedPage","regEinGoToNextUncompletedPage","regBLRGoToNextUncompletedPage","regNameResGoToNextUncompletedPage","regNYPubGoToNextUncompletedPage","regWFGGoToNextUncompletedPage","regCoRAPFGoToNextUncompletedPage","RESULTS","GREAT_NEWS","BUS_NAME_REDIRECT","getBusinessNameGeneratorFlowId","dotComReg","wordsRegex","SPECIAL_CHARACTERS","applyPeculiarities","peculiarities","transformedName","pec","searchableWord","charAfterWord","trimSearchableWord","_capitalize","_trim","mapDomainsToNames","domainInfo","keywords","domain","nameRegEx","RegExp","join","domainIncludesHyphen","split","filter","word","map","processDomains","domains","words","test","LANDING_PAGE","getDomainSuggestions","SEARCH_BUSINESS_NAMES","searchKey","searchBy","keySearch","filteredChars","char","specialWord","getPeculiarities","domainNameService","suggest","lookup","suggestion","matches","mappedSuggestions","suggestions","rawSuggestions","totalPages","Math","ceil","slice","getSuggestions","SEARCH_BUSINESS_NAMES_COMPLETE","matched","setBusinessInformation","SEL_BUS_NAME_SUGGES","isExpenseTrackingWithTaxFilingEnabled","defaultETNTFData","ETNTFData","ETNTFKey","createETNTF","createExpenseTrackerNTaxFiling","expenseTrackerNTaxFiling","SEND_REQUEST","bpwqKey","setSendRequest","createBoldPenguinWidgetQuote","createBPWQOrder","createWFGIROrder","createWFGInitialReport","wfgir","NOTICE","getRegisterVanityProductFlowId","defaultVanityProductData","vanityUrlId","vanityKey","vanityProductData","vanityProductKey","vanityProduct","getvanityUrlId","setNotice","createVanityProductOrder","createVanityProduct","defaultZBMProData","zbmProData","zbmProKey","zbmPro","COMPLETE_LINK_WITH_PLAID","ZBM_PLAID_URLS","redirectToDashboard","COMPLETE_RETURN_TO_DASH","createZBMProOrder","createZBMPro","flowOrderItem","createBusiness","CREATE_BUSINESS","CREATE_BUSINESS_COMPLETE","businessAlreadyCreated","getRegisterStockSetupFlowId","stockSetupData","stockSetupKey","corpStockService","getStockFeeTotal","newData","createStockSetupOrder","stockInfo","corpFormationId","updateStockSetup","LINK_PLAID","defaultZBMPlaidData","ZBMPlaidData","ZBMPlaidKey","storePublicTokens","SET_PLAID_PUBLIC_TOKENS","createHurdrlrOrder","CREATE_HURDLR_ORDER","successLinking","createZBMPlaid","createZBMPlaidOrder","getHurdlrSubscriptionTier","GET_HURDLR_SUBSCRIPTION_TIER","GET_HURDLR_SUBSCRIPTION_TIER_COMPLETE","setPlaidHurdlrLink","plaidPublicToken","SET_PLAID_HURDLR_LINK","SET_PLAID_HURDLR_LINK_COMPLETE","resetPlaidLink","redirectUrl","plaidAccessToken","RESET_PLAID_LINK","RESET_PLAID_LINK_COMPLETE","plaidLinkRelink","PLAID_RELINK_LINK","PLAID_RELINK_LINK_COMPLETE","CHOOSE_PLAN","CONFIRMATION","defaultEttfRenewalData","ettfRenewalData","ettfRenewalKey","paymentResponse","orderTaskMigrationServicesResponse","getOrderTaskMigrationServices","lastFour","default_source","defaultSource","sources","source","termEndDate","planData","Date","toDateString","MIGRATE_MONEY_PLAN_COMPLETE","migrateMoneyPlan","couponUuid","orderTaskUuid","plan","term","MIGRATE_MONEY_PLAN","defaultData","zbBankingPreferredData","zbBankingPreferredKey","zbBankingPreferred","createZbBankingPreferredOrder","createZbBankingPreferred","jurisdiction","createInitialCPAScreening","feedbackSource","purchaseBLR","purchaseBusinessKit","purchaseFFD","purchaseCD","purchaseWFGIR","flowType","purchaseVanityProduct","showCD","purchaseBankOfAmericaOffer","purchaseZBMPro","showZBMPro","purchaseZbBankingPreferredOffer","hasPurchasedZBMPro","hasPurchasedBankingPreferred","wfgirData","wfg_initial_report","showWFGIR","stackedFlowItems","showBanking","noBankingOfferFlows","getPostPurchaseVanityProduct","potentialAfterPaymentUrls","VANITY_PRODUCT_NOTICE","el","vanityForward","PURCHASE_BANKING_OFFER","PURCHASE_ZBMPRO","isBusinessKitEnabled","PURCHASE_BUSINESSKIT","isBusinessLicenseEnabled","blrItems","PURCHASE_BLR","BLR_START","BLR_BUS_AT_HOME","BLR_BUS_INDUSTRY","BLR_HAS_EMPLOYEES","BLR_EMPL_COUNT","BLR_HAS_DBAS","BLR_DATA_CONFIRM","getBLRFlow","isFutureFileDateEnabled","PURCHASE_FFD","FUTURE_FILING_DATE","PURCHASE_CD","isWFGInitialReportEnabled","PURCHASE_WFGIR","splice","flowPosition","VANITY_PRODUCT_OFFER","PURCHASE_FEEDBACK","_some","MARK_COMPLETE","_flattenDeep","initializationData","skipBLR","leadData","leadKey","defaultPostpurchaseData","purchaseExpenseTrackerAndTaxFiling","feedbackData","feedbackKey","feedbackOther","getBackUrl","lastToBack","undefined","setBLRBusinessIndustry","setBLRBusinessOutOfHome","setBLRDataConfirmation","setBLREmployeesCount","setBLRHasDBAs","setBLRHasEmployees","setBLRLicenseDataModal","BLR_LIC_DATA_MODAL","setBLRStart","setPurchaseBLR","blrOrderTaskUuid","BLR_SKIP","setSkipBLR","ffdURL","setPurchaseBusinessKit","setPurchaseFFD","setZbBankingPreferred","PURCHASE_BANKING_PREFERRED_OFFER","setBankOfAmericaOffer","PURCHASE_BOA_OFFER","setPurchaseCD","setPurchaseWFGIR","setPurchaseZBMPro","setFeedback","leadSourceData","how_did_you_hear_about_us","how_did_you_hear_about_us_other","lead_uuid","setFutureFilingDate","setFFDDataModal","FFD_DATA_MODAL","setPurchaseVanityProduct","setMarkComplete","setPaymentComplete","PAYMENT_COMPLETE","createPostPurchaseOrder","createPostPurchase"],"mappings":"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","file":"js/actions.05c62b7b44e912eef96b.js","sourcesContent":["\nimport { URLS } from '../../../constants/complete_ein';\n\nconst\n  /* eslint-disable max-statements */\n  getAddressFlow = (url, registration) => {\n    const { usePhysicalAsMailing } = registration.businessAddresses,\n      { mailingAddressRequired, physicalAddressRequired } = registration.ein,\n      flowItems = [];\n\n    if (physicalAddressRequired || url === URLS.PHYS_ADDR) {\n      flowItems.push(URLS.PHYS_ADDR);\n      if (!usePhysicalAsMailing || url === URLS.MAIL_ADDR) {\n        flowItems.push(URLS.MAIL_ADDR);\n      }\n    } else if (mailingAddressRequired || url === URLS.MAIL_ADDR) {\n      flowItems.push(URLS.MAIL_ADDR);\n    }\n    return flowItems;\n  },\n  getEINFromRegistrationFlow = (url, registration) => {\n    const\n      { business, member, ein } = registration,\n      { type } = business,\n      { hasTwo } = member,\n      { llcMarried, motorVehicle, responsibleParty, hasSSN, hasDBAs, employeesW2 } = ein,\n      { collectDataFromUser = false } = responsibleParty || {},\n      flow = [ URLS.START_EIN ];\n\n    if (type === 'CORP') {\n      flow.push(URLS.CORP_TAXED);\n    } else if (hasTwo) {\n      flow.push(URLS.LLC_ARE_MARRIED);\n      if (llcMarried) {\n        flow.push(URLS.LLC_MARRIED_TAXED);\n      }\n    }\n\n    flow.push(URLS.CHOOSE_RESP, URLS.HAS_SSN);\n    if (hasSSN === false) {\n      flow.push(URLS.NO_SSN);\n    }\n    if (!collectDataFromUser) {\n      flow.push(URLS.RESP_INFO);\n    }\n    flow.push(URLS.HAS_DBAS);\n    if (hasDBAs) {\n      flow.push(URLS.DBA_NAMES);\n    }\n    flow.push(...getAddressFlow(url, registration));\n\n    if (type === 'CORP') {\n      flow.push(URLS.CORP_INFO);\n    }\n    flow.push(URLS.BUS_QUEST_START, URLS.GAMBLING, URLS.ATF, URLS.HAS_EMPL_W2);\n\n    if (employeesW2) {\n      flow.push(URLS.EMPL_W2);\n    }\n\n    flow.push(URLS.VEHICLE);\n    if (motorVehicle) {\n      flow.push(URLS.VEHICLE_WEIGHT);\n    }\n    flow.push(URLS.BUS_720, URLS.BUS_ACT, URLS.DATA_CONFIRM);\n    return flow;\n  },\n  /* eslint-enable max-statements */\n\n  // eslint-disable-next-line max-statements\n  getEINFromRegisterEINFlow = (url, registration) => {\n    const\n      { business, member, ein } = registration,\n      { type } = business,\n      { hasTwo } = member,\n      { llcMarried, motorVehicle, hasSSN, hasDBAs, employeesW2 } = ein,\n      flow = [ URLS.START_EIN, URLS.EIN_REASON ];\n\n    if (type !== 'CORP' && type !== 'SOLE') {\n      flow.push(URLS.LLC_MBR_COUNT);\n      if (hasTwo) {\n        flow.push(URLS.LLC_ARE_MARRIED);\n        if (llcMarried) {\n          flow.push(URLS.LLC_MARRIED_TAXED);\n        }\n      }\n    }\n    flow.push(URLS.RESP_PARTY, URLS.HAS_SSN);\n    if (!hasSSN) {\n      flow.push(URLS.NO_SSN);\n    }\n    flow.push(URLS.RESP_INFO, URLS.HAS_DBAS);\n    if (hasDBAs) {\n      flow.push(URLS.DBA_NAMES);\n    }\n    flow.push(...getAddressFlow(url, registration));\n    if (type === 'CORP') {\n      flow.push(URLS.CORP_INFO);\n    } else if (type === 'LLCX') {\n      flow.push(URLS.LLC_INFO);\n    }\n    flow.push(URLS.BUS_QUEST_START, URLS.GAMBLING, URLS.ATF, URLS.HAS_EMPL_W2);\n\n    if (employeesW2) {\n      flow.push(URLS.EMPL_W2);\n    }\n\n    flow.push(URLS.VEHICLE);\n    if (motorVehicle) {\n      flow.push(URLS.VEHICLE_WEIGHT);\n    }\n    flow.push(URLS.BUS_720, URLS.BUS_ACT, URLS.DATA_CONFIRM, URLS.SHARE, URLS.COMPLETE);\n    return flow;\n  },\n\n  getFlowOrder = (url, registration) => {\n    const\n      { page } = registration,\n      { registrationFlow } = page;\n\n    if (url === URLS.COMPLETE || url === URLS.SHARE) {\n      return [ URLS.SHARE, URLS.COMPLETE ];\n    }\n    if (registrationFlow === 'ein') {\n      return getEINFromRegisterEINFlow(url, registration);\n    }\n    return getEINFromRegistrationFlow(url, registration);\n  };\n\nexport default {\n  getEINFromRegisterEINFlow,\n  getEINFromRegistrationFlow,\n  getFlowOrder\n};\n","import { getCompleteEINFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getCompleteEINFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { getEntryPoint as getCorpEntryPoint } from '../complete_corp';\nimport { getEntryPoint as getDBAEntityEntryPoint, getCompleteEntryPoint as getDBACompleteEntryPoint } from '../complete_dbaentity';\nimport { getEntryPoint as getLLCEntryPoint } from '../complete_llc';\nimport { getEntryPoint as getPostPurchaseEntryPoint } from '../purchase_post_addons';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS, URLS } from '../../constants/complete_ein';\nimport logger from '../../utils/ClientLogger';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport { storageKey as businessAddressesKey } from '../../reducers/registration/businessAddresses';\nimport { storageKey as einKey } from '../../reducers/registration/ein';\nimport { storageKey as memberKey } from '../../reducers/registration/members';\nimport { storageKey as pageKey } from '../../reducers/registration/page';\nimport { storageKey as purchaseKey } from '../../reducers/registration/purchase';\nimport { orderService, registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\n\nconst\n  defaultBusinessData = { type: 'LLCX', id: '' },\n  businessData = getReducerSnapshot(businessKey, defaultBusinessData),\n  defaultBusinessAddressesData = { usePhysicalAsPrincipal: false, usePhysicalAsMailing: false, useMailingAsPrincipal: false },\n  businessAddressesData = getReducerSnapshot(businessAddressesKey, defaultBusinessAddressesData),\n  defaultPageData = { registrationFlow: '' },\n  pageData = getReducerSnapshot(pageKey, defaultPageData),\n  defaultEINData = {\n    mailingAddressRequired: true,\n    principalAddressRequired: true,\n    physicalAddressRequired: true,\n    hasDBA: null,\n    llcMarried: null,\n    motorVehicle: null,\n    memberCount: null,\n    responsibleParty: { collectDataFromUser: false },\n    skipEIN: false\n  },\n  einData = getReducerSnapshot(einKey, defaultEINData),\n  defaultPurchaseData = { ein: null },\n  purchaseData = getReducerSnapshot(purchaseKey, defaultPurchaseData),\n  defaultMemberData = { members: [] },\n  memberData = getReducerSnapshot(memberKey, defaultMemberData);\n\nmemberData.hasTwo = pageData.registrationFlow === 'ein' ? einData.memberCount === 2 : memberData.members.length === 2;\n\nconst\n  getFlowOrder = (url) => {\n    const\n      registration = {\n        business: businessData,\n        businessAddresses: businessAddressesData,\n        page: pageData,\n        ein: einData,\n        purchase: purchaseData,\n        member: memberData\n      },\n      flow = getFlow(url, registration);\n\n    return flow;\n  },\n\n  go = (jump) => {\n    const url = document.location.pathname.substring(URLS.BASE.length + 2),\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      { registrationFlow } = pageData,\n      { type } = businessData;\n    if (jumpIndex < 0) {\n      if (registrationFlow === 'ein' || registrationFlow === 'bl') {\n        browserHistory.push(`/${URLS.BASE}/${flowOrder[0]}`);\n      } else if (registrationFlow === 'dba') {\n        browserHistory.push(getDBAEntityEntryPoint(true));\n      } else if (type === 'CORP') {\n        browserHistory.push(getCorpEntryPoint(true));\n      } else {\n        browserHistory.push(getLLCEntryPoint(true));\n      }\n    } else if (jumpIndex >= flowOrder.length) {\n      if (registrationFlow === 'ein' || registrationFlow === 'bl') {\n        if (businessData.id) {\n          document.location = `/${COMPANY_URLS.BASE}/${businessData.id}`;\n        } else {\n          document.location = `/${DASHBOARD_URLS.BASE}`;\n        }\n      } else if (registrationFlow === 'dba') {\n        browserHistory.push(getDBACompleteEntryPoint());\n      } else {\n        browserHistory.push(getPostPurchaseEntryPoint());\n      }\n    } else {\n      browserHistory.push(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n\n  set = (dispatch, data, actionKey, jump) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (jump) {\n      go(1);\n    }\n  },\n  getServiceEndpoint = (reducerData) => {\n    const { business: { type }, page: { registrationFlow } } = reducerData;\n\n    if (registrationFlow === 'ein') {\n      return 'updateEIN';\n    }\n    if (registrationFlow === 'dba') {\n      return 'updateDBAEntity';\n    }\n    if (type === 'CORP') {\n      return 'updateCorp';\n    }\n    return 'updateLLC';\n  },\n  updateSnapshots = () => {\n    _assign(businessData, getReducerSnapshot(businessKey, defaultBusinessData));\n    _assign(businessAddressesData, getReducerSnapshot(businessAddressesKey, defaultBusinessAddressesData));\n    _assign(einData, getReducerSnapshot(einKey, defaultEINData));\n    _assign(memberData, getReducerSnapshot(memberKey, defaultMemberData));\n    _assign(purchaseData, getReducerSnapshot(purchaseKey, defaultPurchaseData));\n    _assign(pageData, getReducerSnapshot(pageKey, defaultPageData));\n  };\n\nexport const getEntryPoint = (fromBack) => {\n  updateSnapshots();\n\n  const flow = getFlowOrder(),\n    index = (fromBack && !einData.skipEIN) ? flow.length - 1 : 0;\n\n  return `/${URLS.BASE}/${flow[index]}`;\n};\n\nexport const goBack = (dispatch) => {\n  logger.logAction(ACTIONS.GO_BACK, { location: document.location.pathname.substring(URLS.BASE.length + 2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1);\n};\n\nexport const getNextUncompletedPage = (dispatch, location) => {\n  updateSnapshots();\n  const\n    { registrationFlow } = pageData,\n    flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index + 1;\n\n  if (index >= 0) {\n    if (jumpIndex >= flowOrder.length) {\n      if (registrationFlow === 'ein' || registrationFlow === 'bl') {\n        if (businessData.id) {\n          return { isDashboard: true, url: `/${COMPANY_URLS.BASE}/${businessData.id}` };\n        }\n        return { isDashboard: true, url: `/${DASHBOARD_URLS.BASE}` };\n      }\n      if (registrationFlow === 'dba') {\n        return { isDashboard: false, url: getDBACompleteEntryPoint() };\n      }\n      return { isDashboard: false, url: getPostPurchaseEntryPoint() };\n    }\n    return { isDashboard: false, url: `/${URLS.BASE}/${flowOrder[jumpIndex]}` };\n  }\n\n  return { isDashboard: false, url: '' };\n};\n\nexport const goToNextUncompletedPage = (dispatch, location) => {\n  updateSnapshots();\n  const\n    { registrationFlow } = pageData,\n    flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index + 1;\n\n  if (index >= 0) {\n    if (jumpIndex >= flowOrder.length) {\n      if (registrationFlow === 'ein' || registrationFlow === 'bl') {\n        if (businessData.id) {\n          document.location = `/${COMPANY_URLS.BASE}/${businessData.id}`;\n        } else {\n          document.location = `/${DASHBOARD_URLS.BASE}`;\n        }\n      } else if (registrationFlow === 'dba') {\n        browserHistory.push(getDBACompleteEntryPoint());\n      } else {\n        browserHistory.push(getPostPurchaseEntryPoint());\n      }\n    } else {\n      browserHistory.push(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n    return true;\n  }\n\n  return false;\n};\n\nexport const setATF = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ATF, false);\n};\n\nexport const setBusinessActivity = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_ACT, false);\n};\n\nexport const setBusinessForm720 = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_720, false);\n};\n\nexport const setBusinessQuestionsStart = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_QUEST_START, false);\n};\n\nexport const setChooseResponsible = (dispatch, data) => {\n  if (!einData.responsibleParty) {\n    einData.responsibleParty = {};\n  }\n  einData.responsibleParty.collectDataFromUser = data.collectDataFromUser || false;\n  set(dispatch, data, ACTIONS.CHOOSE_RESP, false);\n};\n\nexport const setCorpInfo = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_INFO, false);\n};\n\nexport const setCorpTaxed = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_TAXED, false);\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, data, URLS.COMPLETE, false);\n  if (businessData.id) {\n    document.location = `/${COMPANY_URLS.BASE}/${businessData.id}`;\n  } else {\n    document.location = `/${DASHBOARD_URLS.BASE}`;\n  }\n};\n\nexport const setDataConfirmation = (dispatch, data) => {\n  const { registrationFlow, ...dataConfirm } = data;\n  set(dispatch, dataConfirm, ACTIONS.DATA_CONFIRM, false);\n  if (registrationFlow === 'dba') {\n    set(dispatch, dataConfirm, ACTIONS.DATA_DBA_CONFIRM, false);\n  }\n};\n\nexport const setEINReason = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.EIN_REASON, false);\n};\n\nexport const setEmployeesW2 = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.EMPL_W2, false);\n};\n\nexport const setHasEmployeesW2 = (dispatch, data) => {\n  einData.employeesW2 =  data.employeesW2;\n  set(dispatch, data, ACTIONS.HAS_EMPL_W2, false);\n};\n\nexport const setGambling = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.GAMBLING, false);\n};\n\nexport const setHasSSN = (dispatch, data) => {\n  einData.hasSSN = data.hasSSN;\n  set(dispatch, data, ACTIONS.HAS_SSN, false);\n};\n\nexport const setLLCAreMarried = (dispatch, data) => {\n  einData.llcMarried = data.llcMarried;\n  set(dispatch, data, ACTIONS.LLC_ARE_MARRIED, false);\n};\n\nexport const setLLCInfo = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_INFO, false);\n};\n\nexport const setLLCMarriedTaxed = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MARRIED_TAXED, false);\n};\n\nexport const setLLCMemberCount = (dispatch, data) => {\n  memberData.hasTwo = data.memberCount === 2;\n  set(dispatch, data, ACTIONS.LLC_MBR_COUNT, false);\n};\n\nexport const setMailingAddress = (dispatch, data) => {\n  businessAddressesData.useMailingAsPrincipal = data.useMailingAsPrincipal;\n  set(dispatch, data, ACTIONS.MAIL_ADDR, false);\n};\n\nexport const setMailingAddressModal = (dispatch, data) => {\n  businessAddressesData.useMailingAsPrincipal = data.useMailingAsPrincipal;\n  set(dispatch, data, ACTIONS.MAIL_ADDR_MODAL, false);\n};\n\nexport const setMotorVehicle = (dispatch, data) => {\n  einData.motorVehicle = data.motorVehicle;\n  set(dispatch, data, ACTIONS.VEHICLE, false);\n};\n\nexport const setMotorVehicleWeight = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.VEHICLE_WEIGHT, false);\n};\n\nexport const setNoSSN = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.NO_SSN, false);\n};\n\nexport const setPhysicalAddress = (dispatch, data) => {\n  businessAddressesData.usePhysicalAsMailing = data.usePhysicalAsMailing;\n  businessAddressesData.usePhysicalAsPrincipal = data.usePhysicalAsPrincipal;\n  set(dispatch, data, ACTIONS.PHYS_ADDR, false);\n};\n\nexport const setPhysicalAddressModal = (dispatch, data) => {\n  businessAddressesData.usePhysicalAsMailing = data.usePhysicalAsMailing;\n  businessAddressesData.usePhysicalAsPrincipal = data.usePhysicalAsPrincipal;\n  set(dispatch, data, ACTIONS.PHYS_ADDR_MODAL, false);\n};\n\nexport const setPrincipalAddress = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIN_ADDR, false);\n};\n\nexport const setPrincipalAddressModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIN_ADDR_MODAL, false);\n};\n\nexport const setResponsibleInfo = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.RESP_INFO, false);\n};\n\nexport const setResponsibleParty = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.RESP_PARTY, false);\n};\n\nexport const setShare = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.SHARE, true);\n};\n\nexport const setStartEIN = (dispatch, data) => {\n  updateSnapshots();\n  einData.principalAddressRequired = data.principalAddressRequired;\n  einData.mailingAddressRequired = data.mailingAddressRequired;\n  einData.physicalAddressRequired = data.physicalAddressRequired;\n  memberData.hasTwo = pageData.registrationFlow === 'ein' ? einData.memberCount === 2 : memberData.members.length === 2;\n  set(dispatch, data, ACTIONS.START_EIN, data.forward);\n};\n\nexport const setDBAs = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.DBA_NAMES, false);\n};\n\nexport const setHasDBAs = (dispatch, data) => {\n  einData.hasDBAs = data.hasDBAs;\n  set(dispatch, data, ACTIONS.HAS_DBAS, false);\n};\n\nexport const setBusinessData = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_DATA, false);\n};\n\nexport const setCorpData = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_DATA, false);\n};\n\nexport const setEINData = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.EIN_DATA, false);\n};\n\nexport const setMemberData = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.MBR_DATA, false);\n};\n\nexport const setResponsibleData = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.RESP_DATA, false);\n};\n\nexport const setEstimatedFormationDate = (dispatch, data) => {\n  logger.logAction(ACTIONS.EST_DATE, data);\n  dispatch({\n    type: ACTIONS.EST_DATE,\n    payload: {\n      data\n    }\n  });\n};\n\nconst updateOrderTaskStatus = (dispatch, einOrderTaskUuid, status, subStatus, skip) => {\n  orderService.updateOrderTaskStatus(\n    einOrderTaskUuid,\n    status,\n    subStatus\n  ).then(() => {\n    set(dispatch, ACTIONS.SKIP_EIN, skip);\n  }).catch((err) => {\n    set(dispatch, {\n      error: err && err.error ? err.error : 'Server Error',\n      errorCode: err && err.errorCode ? err.errorCode : 500\n    }, ACTIONS.SKIP_EIN, !skip);\n  });\n};\n\nexport const setSkipEIN = (dispatch, data) => {\n  const { einOrderTaskUuid, skipEIN } = data;\n  let status = '';\n  let subStatus = '';\n  logger.logAction(ACTIONS.SKIP_EIN, data);\n  dispatch({\n    type: ACTIONS.SKIP_EIN\n  });\n  if (skipEIN) {\n    status = 'pending';\n    subStatus = 'fulfillment hold';\n    updateOrderTaskStatus(dispatch, einOrderTaskUuid, status, subStatus, true);\n    browserHistory.push(getPostPurchaseEntryPoint());\n  } else {\n    if (einData.skipEIN) {\n      status = 'incomplete';\n      subStatus = '';\n      updateOrderTaskStatus(dispatch, einOrderTaskUuid, status, subStatus, false);\n    }\n    set(dispatch, ACTIONS.SKIP_EIN, false);\n  }\n};\n\n\nexport const updateOrder = (dispatch, reducerData, filingFees, expediteFees, advance) => {\n  const\n    serviceEndpoint = getServiceEndpoint(reducerData);\n\n  logger.logAction(ACTIONS.UPDATE_ORDER);\n  dispatch({\n    type: ACTIONS.UPDATE_ORDER\n  });\n  registrationService[serviceEndpoint](reducerData, filingFees, expediteFees).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.UPDATE_ORDER_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.UPDATE_ORDER_COMPLETE,\n      payload: {\n        data,\n        reducerData\n      }\n    });\n    if (advance) {\n      go(1);\n    }\n  }).catch((err) => {\n    logger.error(ACTIONS.UPDATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.UPDATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\n\nexport default {\n  getEntryPoint,\n  goBack,\n  getNextUncompletedPage,\n  goToNextUncompletedPage,\n  setATF,\n  setBusinessActivity,\n  setBusinessForm720,\n  setBusinessQuestionsStart,\n  setChooseResponsible,\n  setComplete,\n  setCorpInfo,\n  setCorpTaxed,\n  setDataConfirmation,\n  setEINReason,\n  setEmployeesW2,\n  setGambling,\n  setHasSSN,\n  setLLCAreMarried,\n  setLLCInfo,\n  setLLCMarriedTaxed,\n  setLLCMemberCount,\n  setMailingAddress,\n  setMailingAddressModal,\n  setMotorVehicle,\n  setMotorVehicleWeight,\n  setNoSSN,\n  setPhysicalAddress,\n  setPhysicalAddressModal,\n  setPrincipalAddress,\n  setPrincipalAddressModal,\n  setResponsibleInfo,\n  setResponsibleParty,\n  setShare,\n  setStartEIN,\n  setDBAs,\n  setBusinessData,\n  setCorpData,\n  setEINData,\n  setMemberData,\n  setResponsibleData,\n  setEstimatedFormationDate,\n  updateOrder,\n  setSkipEIN\n};\n","import { URLS } from '../../../constants/register_ein';\nimport { isLoggedIn } from '../../../utils/AuthService';\n\n/* eslint-disable max-statements */\nconst\n  getNewCustomerFlowOrder = (url, registration) => {\n    if (url === URLS.LOGIN_POST) {\n      return [ URLS.LOGIN_POST ];\n    }\n\n    const\n      { business, page } = registration,\n      flowItems = [ URLS.ACCOWN_NAME, URLS.ACCOWN_CONTACT, URLS.BUS_TYPE, URLS.BUS_NAME, URLS.DOM_JUR ],\n      { type } = business,\n      { registrationFlow } = page;\n\n    if (registrationFlow === 'bl') {\n      flowItems.push(URLS.BUS_DESC);\n    }\n    if (registrationFlow === 'ein' && type === 'CORP') {\n      flowItems.push(URLS.CORP_TAXED);\n    }\n    flowItems.push(URLS.PAYMENT, URLS.LOGIN_POST);\n    return flowItems;\n  },\n  getNewCompanyFlowOrder = (url, registration) => {\n    if (url === URLS.NO_COMPANY) {\n      return [ URLS.BUS_NAME, URLS.NO_COMPANY, URLS.BUS_NAME ];\n    }\n\n    const\n      { business, page } = registration,\n      { type, hasCompanies, isSimulated } = business,\n      { registrationFlow, id } = page,\n      flowItems = [ ...isSimulated && id ? [] : [URLS.BUS_ID], /* for simulated entities dont display the pick entity */\n        URLS.BUS_TYPE,\n        URLS.BUS_NAME, URLS.DOM_JUR\n      ];\n    if (!hasCompanies) {\n      flowItems.shift();\n    }\n    if (registrationFlow === 'bl') {\n      flowItems.push(URLS.BUS_DESC);\n    }\n    if (registrationFlow === 'ein' && type === 'CORP') {\n      flowItems.push(URLS.CORP_TAXED);\n    }\n    flowItems.push(URLS.PAYMENT);\n    if (url === URLS.ACCOWN_NAME) { // For the logged-in transition\n      flowItems.unshift(URLS.ACCOWN_NAME);\n    }\n    if (url === URLS.ACCOWN_CONTACT) {\n      flowItems.unshift(URLS.ACCOWN_CONTACT);\n    }\n    return flowItems;\n  },\n  getExistingCompanyFlowOrder = (url, registration) => {\n    const\n      { business, page } = registration,\n      { registrationFlow } = page,\n      { type, isSimulated } = business,\n      flowItems = [ ...(!isSimulated ? [URLS.BUS_ID] : [])];\n\n    if (registrationFlow === 'ein' && type === 'CORP') {\n      flowItems.push(URLS.CORP_TAXED);\n    }\n    flowItems.push(URLS.PAYMENT);\n    return flowItems;\n  },\n  getFlowOrder = (url, registration) => {\n    const\n      { business, page } = registration,\n      { id } = business,\n      { fromDashboard } = page,\n      startConfirm = URLS.START_EIN,\n      loggedIn = isLoggedIn();\n    if (!loggedIn) {\n      return getNewCustomerFlowOrder(url, registration);\n    }\n    if (fromDashboard) {\n      if (id) {\n        return [ startConfirm, ...getExistingCompanyFlowOrder(url, registration) ];\n      }\n      return [ startConfirm, ...getNewCompanyFlowOrder(url, registration) ];\n    }\n    if (id) {\n      return getExistingCompanyFlowOrder(url, registration);\n    }\n    return getNewCompanyFlowOrder(url, registration);\n  };\n\nexport default {\n  getExistingCompanyFlowOrder,\n  getNewCompanyFlowOrder,\n  getNewCustomerFlowOrder,\n  getFlowOrder\n};\n","import { getRegisterEINFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterEINFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMP_EIN_URLS } from '../../constants/complete_ein';\nimport { ACTIONS, URLS } from '../../constants/register_ein';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, registrationService } from '../../services';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport { storageKey as pageKey } from '../../reducers/registration/page';\nimport { getAppEntryPoint } from '../../utils/AppEntryPoint';\nimport { isLoggedIn } from '../../utils/AuthService';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { isOrderCompleteByType } from '../../utils/OrderUtils';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\nimport { setIsFreeAccount } from '../../utils/FreeAccountUtils';\n\nconst\n  defaultBusinessData = { id: '', type: 'LLCX' },\n  businessData = _assign(getReducerSnapshot(businessKey, defaultBusinessData, { hasCompanies: true })),\n  defaultPageData = { registrationFlow: '', fromDashboard: false },\n  pageData = getReducerSnapshot(pageKey, defaultPageData),\n  getFlowOrder = (url) => {\n    const registration = { business: businessData, page: pageData };\n    return getFlow(url, registration);\n  },\n  goInFlow = (flowOrder, jumpIndex, dispatch, doReplace) => {\n    const\n      { id, businessOrderType } = businessData,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      document.location = getAppEntryPoint();\n    } else if (jumpIndex >= flowOrder.length) {\n      if (id) {\n        if (isOrderCompleteByType(businessOrderType)) {\n          browserHistory.push(`/${COMP_EIN_URLS.BASE}/${COMP_EIN_URLS.START_EIN}`);\n          return;\n        }\n      }\n      browserHistory.push(`/${COMP_EIN_URLS.BASE}/${COMP_EIN_URLS.START_EIN}`);\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  go = (jump, dispatch, doReplace) => {\n    const url = document.location.pathname.substring(URLS.BASE.length + 2),\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index;\n\n    goInFlow(flowOrder, jumpIndex, dispatch, doReplace);\n  },\n  set = (dispatch, data, actionKey, moveUrl, doReplace) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch, doReplace);\n    }\n  },\n  doReset = () => {\n    _assign(businessData, defaultBusinessData, { hasCompanies: true });\n    _assign(pageData, defaultPageData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  logger.logAction(ACTIONS.GO_BACK, { location: document.location.pathname.substring(URLS.BASE.length + 2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n  _assign(businessData, getReducerSnapshot(businessKey, { id: '', type: 'LLCX', businessOrderType: '' }));\n};\n\nexport const goToNextUncompletedPage = (dispatch, location, forceBusinessId) => {\n  if (forceBusinessId === 'ein') {\n    browserHistory.push(`/${URLS.BASE}/${URLS.BUS_ID}`);\n    return true;\n  }\n\n  const\n    flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index >= 0 ? index + 1 : index;\n\n  if (index >= 0) {\n    goInFlow(flowOrder, jumpIndex, dispatch, false);\n    return true;\n  }\n  return false;\n};\n\nexport const setAccountOwnerContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOWN_CONTACT, true);\n};\n\nexport const setAccountOwnerName = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOWN_NAME, true);\n};\n\nexport const setBusinessDescription = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_DESC, true);\n};\n\nexport const setBusinessId = (dispatch, data) => {\n  const { business } = data,\n    { domesticJurisdiction, name, type, hasCompanies } = business || data;\n\n  businessData.businessOrderType = data.businessOrderType;\n  businessData.id = data.id;\n  businessData.domesticJurisdiction = domesticJurisdiction;\n  businessData.name = name;\n  businessData.type = type;\n\n  set(dispatch, data, ACTIONS.BUS_ID, true, !hasCompanies);\n  businessData.hasCompanies = hasCompanies;\n};\n\nexport const setBusinessName = (dispatch, data) => {\n  businessData.name = data.name;\n  set(dispatch, data, ACTIONS.BUS_NAME, true);\n};\n\nexport const setBusinessType = (dispatch, data) => {\n  businessData.type = data.type;\n  set(dispatch, data, ACTIONS.BUS_TYPE, true);\n};\n\nexport const setCorpTaxed = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_TAXED, true);\n};\n\nexport const setDomesticJurisdiction = (dispatch, data) => {\n  businessData.domesticJurisdiction = data.domesticJurisdiction;\n  set(dispatch, data, ACTIONS.DOM_JUR, true);\n};\n\nexport const setInit = (dispatch, data) => {\n  const\n    { fromDashboard = false, registrationFlow = 'ein', id, isSimulated } = data;\n\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  pageData.fromDashboard = fromDashboard;\n  pageData.registrationFlow = registrationFlow;\n  pageData.id = id;\n  businessData.isSimulated = isSimulated;\n  setIsFreeAccount(data.isSimulated);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(getEntryPoint());\n};\n\nexport const setLogin = (dispatch) => {\n  set(dispatch, { flow: 'ein' }, ACTIONS.LOGIN, false);\n};\n\nexport const setLoginPostPurchase = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LOGIN_POST, false);\n};\n\nexport const setNoCompany = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.NO_COMPANY, false);\n  browserHistory.push(`/${URLS.BASE}/${URLS.NO_COMPANY}`);\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nconst createEINOrder = (dispatch, reducerData) => {\n  const serviceEndpoint = 'createEIN';\n\n  registrationService[serviceEndpoint](reducerData).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      payload: {\n        data,\n        reducerData\n      }\n    });\n\n    trackEvent('Purchase', 'complete', 'EIN');\n    go(1);\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { customer } = reducerData,\n    { cardNumber, expMonth, expYear, cvc, cardToken, brand, last4 } = customer;\n\n  if (!isLoggedIn() || !cardToken) {\n    createEINOrder(dispatch, reducerData);\n  } else {\n    const data = { cardNumber, expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createEINOrder(dispatch, reducerData);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const createLead = (dispatch, lead) => {\n  logger.logAction(ACTIONS.CREATE_LEAD);\n  dispatch({\n    type: ACTIONS.CREATE_LEAD\n  });\n  registrationService.createLead(lead).then((response) => {\n    logger.logAction(ACTIONS.CREATE_LEAD_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.CREATE_LEAD_COMPLETE,\n      payload: {\n        data: response\n      }\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_LEAD_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_LEAD_COMPLETE,\n      error: true,\n      payload: {\n        data: err\n      }\n    });\n  });\n};\n\nexport const updateLead = (dispatch, lead, leadUuid) => {\n  logger.logAction(ACTIONS.UPDATE_LEAD);\n  dispatch({\n    type: ACTIONS.UPDATE_LEAD\n  });\n  registrationService.updateLead(leadUuid, lead).then((response) => {\n    logger.logAction(ACTIONS.UPDATE_LEAD_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.UPDATE_LEAD_COMPLETE,\n      payload: {\n        data: response\n      }\n    });\n  }).catch((err) => {\n    console.error('ERROR! The following content was not sufficient to update a lead: ', lead);\n    logger.error(ACTIONS.UPDATE_LEAD_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.UPDATE_LEAD_COMPLETE,\n      error: true,\n      payload: {\n        data: err\n      }\n    });\n  });\n};\n\nexport const setBusinessData = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_DATA, false);\n};\n\nexport const setContactData = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOWN_MODAL, false);\n};\n\nexport const setCorpData = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_DATA, false);\n};\n\nexport const setStartEIN = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.START_EIN, true);\n};\n\nexport const setBackFromCompleteBusiness = () => {\n  browserHistory.push(getEntryPoint());\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  goToNextUncompletedPage,\n  orderAlreadyCreated,\n  setAccountOwnerContact,\n  setAccountOwnerName,\n  setBusinessDescription,\n  setBusinessId,\n  setBusinessName,\n  setBusinessType,\n  setCorpTaxed,\n  setDomesticJurisdiction,\n  setInit,\n  setLogin,\n  setLoginPostPurchase,\n  setNoCompany,\n  setPayment,\n  createOrder,\n  createLead,\n  setBusinessData,\n  setContactData,\n  setCorpData,\n  setStartEIN,\n  setBackFromCompleteBusiness,\n  resetAllData\n};\n","import _concat from 'lodash/concat';\n\nimport { URLS } from '../../../constants/registration';\nimport { isLoggedIn } from '../../../utils/AuthService';\nimport { getPlanLevel, isAutoIncludedInPlan } from '../../../utils/PlanService';\nimport {\n  isBasicEmailEnabled,\n  isBankingResolutionEnabled,\n  isCorporateDocsEnabled,\n  isDomainNameEnabled,\n  isDomainNamePrivacyEnabled,\n  isEINEnabled,\n  isNYPubEnabled,\n  isNYPubUpsellEnabled,\n  isOpAgreementEnabled,\n  isStaticWebsiteEnabled,\n  isWFGEnabled,\n  isUpsellEnabled,\n  isRAOfferEnabled\n} from '../../../utils/ProductService';\n\nconst\n  getAddressFlow = (url, registration) => {\n    const { usePhysicalAsMailing } = registration.businessAddresses,\n      { planLevel } = registration.purchase,\n      flowItems = [];\n\n    if (planLevel) {\n      return flowItems;\n    }\n\n    flowItems.push(URLS.PHYS_ADDR);\n    if (!usePhysicalAsMailing) {\n      flowItems.push(URLS.MAIL_ADDR);\n    }\n    return flowItems;\n  },\n\n  /* eslint-disable max-statements */\n  getPlanPurchaseFlow = (url, registration) => {\n    const flowItems = [],\n      { business, initialization, purchase } = registration,\n      { domesticJurisdiction, type } = business,\n      { expediteFees } = initialization,\n      {\n        bankingResolutionAddOn,\n        bankingResolutionUpsellSkip,\n        basicEmailAddOn,\n        basicEmailUpsellSkip,\n        corporateDocsAddOn,\n        corporateDocsUpsellSkip,\n        domainName,\n        domainNameAddOn,\n        domainNameUpsellSkip,\n        domainNamePrivacyAddOn,\n        domainNamePrivacyUpsellSkip,\n        einAddOn,\n        einUpsellSkip,\n        expediteAddOn,\n        expediteUpsellSkip,\n        nyPublicationAddOn,\n        nyPublicationUpsellSkip,\n        operatingAgreementAddOn,\n        operatingAgreementUpsellSkip,\n        staticWebsiteAddOn,\n        staticWebsiteUpsellSkip,\n        worryFreeAddOn,\n        worryFreeUpsellSkip,\n        planLevel\n      } = purchase,\n      isStateClosed = domesticJurisdiction ? (expediteFees[domesticJurisdiction] || { standard: { delayed: false } }).standard.delayed : false,\n      addStaticWebsiteToflow = isStaticWebsiteEnabled() && staticWebsiteAddOn && !staticWebsiteUpsellSkip;\n    if (!planLevel || !isUpsellEnabled()) {\n      return [];\n    }\n\n    if (isRAOfferEnabled()) {\n      flowItems.push(URLS.PURCH_RAS);\n    }\n\n    if (!isStateClosed && expediteAddOn && !expediteUpsellSkip) {\n      flowItems.push(URLS.PURCH_EXP);\n    }\n    if (isEINEnabled() && einAddOn && !einUpsellSkip) {\n      flowItems.push(URLS.PURCH_EIN);\n    }\n    if (isWFGEnabled() && worryFreeAddOn && !worryFreeUpsellSkip) {\n      flowItems.push(URLS.PURCH_WF);\n    }\n    if (isOpAgreementEnabled() && operatingAgreementAddOn && !operatingAgreementUpsellSkip) {\n      flowItems.push(URLS.PURCH_OP_AGREE);\n    }\n    if (isBankingResolutionEnabled() && bankingResolutionAddOn && !bankingResolutionUpsellSkip) {\n      flowItems.push(URLS.PURCH_BANK_RES);\n    }\n    if (isCorporateDocsEnabled() && corporateDocsAddOn && !corporateDocsUpsellSkip) {\n      flowItems.push(URLS.PURCH_CORP_DOCS);\n    }\n    if (isNYPubEnabled() && isNYPubUpsellEnabled() && domesticJurisdiction === 'NY' && type === 'LLCX' && nyPublicationAddOn && !nyPublicationUpsellSkip) {\n      flowItems.push(URLS.PURCH_NYPUB);\n    }\n    if (isNYPubEnabled() && isNYPubUpsellEnabled() && domesticJurisdiction === 'NY' && type === 'LLCX') {\n      flowItems.push(URLS.PUB_COUNTY_NY);\n    }\n    if (isDomainNameEnabled() && domainNameAddOn && !domainNameUpsellSkip) {\n      flowItems.push(URLS.PURCH_DOMAIN);\n    }\n    if (domainName === false && !isAutoIncludedInPlan(getPlanLevel(planLevel, domesticJurisdiction), 'domain_name_reg')) {\n      if (addStaticWebsiteToflow) {\n        flowItems.push(URLS.PURCH_WEBSITE);\n      }\n      return flowItems;\n    }\n    if (isDomainNamePrivacyEnabled() && domainNamePrivacyAddOn && !domainNamePrivacyUpsellSkip) {\n      flowItems.push(URLS.PURCH_DOMAIN_PRIV);\n    }\n    if (addStaticWebsiteToflow) {\n      flowItems.push(URLS.PURCH_WEBSITE);\n    }\n    if (isBasicEmailEnabled() && basicEmailAddOn && !basicEmailUpsellSkip) {\n      flowItems.push(URLS.PURCH_EMAIL);\n    }\n    return flowItems;\n  },\n\n  /* eslint-disable max-statements */\n  getPurchaseFlow = (url, registration) => {\n    const flowItems = [URLS.PURCH_START],\n      { page, purchase, business, initialization } = registration,\n      { domesticJurisdiction, type } = business,\n      { expediteFees } = initialization,\n      { forceToDataConfirmation } = page,\n      {\n        bankingResolutionAddOn,\n        bankingResolutionUpsellSkip,\n        basicEmailAddOn,\n        basicEmailUpsellSkip,\n        corporateDocsAddOn,\n        corporateDocsUpsellSkip,\n        domainName,\n        domainNameAddOn,\n        domainNameUpsellSkip,\n        domainNamePrivacyAddOn,\n        domainNamePrivacyUpsellSkip,\n        einAddOn,\n        einUpsellSkip,\n        expediteUpsellSkip,\n        nyPublicationAddOn,\n        nyPublicationUpsellSkip,\n        operatingAgreementAddOn,\n        operatingAgreementUpsellSkip,\n        staticWebsiteAddOn,\n        staticWebsiteUpsellSkip,\n        worryFreeAddOn,\n        worryFreeUpsellSkip,\n        planLevel\n      } = purchase,\n      isStateClosed = domesticJurisdiction ? (expediteFees[domesticJurisdiction] || { standard: { delayed: false } }).standard.delayed : false,\n      addStaticWebsiteToflow = isStaticWebsiteEnabled() && staticWebsiteAddOn && !staticWebsiteUpsellSkip;\n\n    if (planLevel) {\n      return [];\n    }\n\n    if (!isStateClosed && !expediteUpsellSkip) {\n      flowItems.push(URLS.PURCH_EXP);\n    }\n    if (isEINEnabled() && einAddOn && !einUpsellSkip) {\n      flowItems.push(URLS.PURCH_EIN);\n    }\n    if (forceToDataConfirmation) {\n      return flowItems;\n    }\n    if (isWFGEnabled() && worryFreeAddOn && !worryFreeUpsellSkip) {\n      flowItems.push(URLS.PURCH_WF);\n    }\n    if (isOpAgreementEnabled() && operatingAgreementAddOn && !operatingAgreementUpsellSkip) {\n      flowItems.push(URLS.PURCH_OP_AGREE);\n    }\n    if (isBankingResolutionEnabled() && bankingResolutionAddOn && !bankingResolutionUpsellSkip) {\n      flowItems.push(URLS.PURCH_BANK_RES);\n    }\n    if (isCorporateDocsEnabled() && corporateDocsAddOn && !corporateDocsUpsellSkip) {\n      flowItems.push(URLS.PURCH_CORP_DOCS);\n    }\n    if (isNYPubEnabled() && isNYPubUpsellEnabled() && domesticJurisdiction === 'NY' && type === 'LLCX' && nyPublicationAddOn && !nyPublicationUpsellSkip) {\n      flowItems.push(URLS.PURCH_NYPUB);\n    }\n    if (isDomainNameEnabled() && domainNameAddOn && !domainNameUpsellSkip) {\n      flowItems.push(URLS.PURCH_DOMAIN);\n    }\n    if (domainName === false) {\n      if (addStaticWebsiteToflow) {\n        flowItems.push(URLS.PURCH_WEBSITE);\n      }\n      return flowItems;\n    }\n    if (isDomainNamePrivacyEnabled() && domainNamePrivacyAddOn && !domainNamePrivacyUpsellSkip) {\n      flowItems.push(URLS.PURCH_DOMAIN_PRIV);\n    }\n    if (addStaticWebsiteToflow) {\n      flowItems.push(URLS.PURCH_WEBSITE);\n    }\n    if (isBasicEmailEnabled() && basicEmailAddOn && !basicEmailUpsellSkip) {\n      flowItems.push(URLS.PURCH_EMAIL);\n    }\n    return flowItems;\n  },\n  /* eslint-enable max-statements */\n\n  getPaymentFlow = (url, registration) => { // eslint-disable-line no-unused-vars\n    const flowItems = [URLS.DATA_CONFIRM, URLS.PRODUCT_CONFIRM];\n\n    flowItems.push(URLS.PAYMENT);\n\n    return flowItems;\n  },\n\n  getSCorpQuestionFlow = (url, registration) => {\n    const\n      flowItems = [],\n      { hasSCorp, scorpAllUSOwners, scorpOperateLoss, scorpPaySalary } = registration.business;\n\n    if (!hasSCorp) {\n      return flowItems;\n    }\n\n    flowItems.push(URLS.SCORP_ALL_US_OWNERS, URLS.SCORP_LOSS);\n    if (scorpAllUSOwners) {\n      if (!scorpOperateLoss) {\n        flowItems.push(URLS.SCORP_SALARY);\n        if (!scorpPaySalary) {\n          flowItems.push(URLS.SCORP_INVESTORS);\n        }\n      }\n    } else if (!scorpOperateLoss) {\n      flowItems.push(URLS.SCORP_INVESTORS);\n    } else {\n      flowItems.push(URLS.SCORP_SALARY);\n      if (!scorpPaySalary) {\n        flowItems.push(URLS.SCORP_INVESTORS);\n      }\n    }\n    return flowItems;\n  },\n\n  /* eslint-disable max-statements */\n  getNewCustomerFlowOrder = (url, registration) => {\n    if (url === URLS.LOGIN_POST) {\n      return [URLS.LOGIN_POST];\n    }\n\n    const\n      { business, page, purchase } = registration,\n      { skipBusinessName, skipPlansPage, skipToDomesticJurisdiction, fromBNG } = page,\n      { planLevel } = purchase,\n      { domesticJurisdiction, type } = business,\n      flowItems = getSCorpQuestionFlow(url, registration);\n\n    if (!skipToDomesticJurisdiction) {\n      if ((skipBusinessName || url === URLS.BUS_NAME_CONFIRM) && !fromBNG) {\n        flowItems.push(URLS.BUS_NAME_CONFIRM);\n      }\n    }\n    if (!skipPlansPage && !skipToDomesticJurisdiction) {\n      flowItems.push(URLS.PURCH_PLAN);\n    }\n    if (planLevel) {\n      flowItems.push(URLS.ACCOWN_NAME);\n      flowItems.push(URLS.ACCOWN_CONTACT);\n    }\n    if (!domesticJurisdiction || url === URLS.DOM_JUR) {\n      flowItems.push(URLS.DOM_JUR);\n    }\n    if (!type || url === URLS.BUS_TYPE) {\n      flowItems.push(URLS.BUS_TYPE);\n    }\n    if (planLevel) {\n      if (!skipBusinessName || url === URLS.BUS_NAME) {\n        flowItems.push(URLS.BUS_NAME);\n      }\n      flowItems.push(...getPlanPurchaseFlow(url, registration));\n    } else {\n      flowItems.push(URLS.ACCOWN_NAME);\n      flowItems.push(...getAddressFlow(url, registration));\n      if (!skipBusinessName || url === URLS.BUS_NAME) {\n        flowItems.push(URLS.BUS_NAME);\n      }\n      flowItems.push(URLS.ACCOWN_CONTACT);\n    }\n    return _concat(flowItems, getPurchaseFlow(url, registration), getPaymentFlow(url, registration), URLS.LOGIN_POST);\n  },\n\n  getNewCompanyFlowOrder = (url, registration) => {\n    if (url === URLS.LOGIN_POST) {\n      return [URLS.LOGIN_POST];\n    }\n\n    const\n      { business, page } = registration,\n      { skipBusinessName, skipPlansPage, skipToDomesticJurisdiction, fromBNG } = page,\n      { noIdMatches, hasCompanies, domesticJurisdiction, type, isSimulated } = business,\n      flowItems = [];\n\n    if (!skipToDomesticJurisdiction) {\n      if (((skipBusinessName || url === URLS.BUS_NAME_CONFIRM) && !fromBNG) && !isSimulated) {\n        flowItems.push(URLS.BUS_NAME_CONFIRM);\n      } else if (!noIdMatches && hasCompanies && !isSimulated) {\n        flowItems.push(URLS.BUS_ID);\n      }\n    }\n    flowItems.push(...getSCorpQuestionFlow(url, registration));\n    if (!skipPlansPage && !skipToDomesticJurisdiction) {\n      flowItems.push(URLS.PURCH_PLAN);\n    }\n    if (!domesticJurisdiction || url === URLS.DOM_JUR || skipToDomesticJurisdiction) {\n      flowItems.push(URLS.DOM_JUR);\n    }\n    if (!type || url === URLS.BUS_TYPE) {\n      flowItems.push(URLS.BUS_TYPE);\n    }\n    flowItems.push(...getAddressFlow(url, registration));\n    if (!skipBusinessName || url === URLS.BUS_NAME || isSimulated) {\n      flowItems.push(URLS.BUS_NAME);\n    }\n    flowItems.push(...getPlanPurchaseFlow(url, registration));\n\n    return _concat(flowItems, getPurchaseFlow(url, registration), getPaymentFlow(url, registration), URLS.LOGIN_POST);\n  },\n\n  getExistingCompanyFlowOrder = (url, registration) => {\n    return _concat([URLS.BUS_ID], registration.page.skipPlansPage ? [] : [URLS.PURCH_PLAN], getPlanPurchaseFlow(url, registration), getPurchaseFlow(url, registration), getPaymentFlow(url, registration));\n  },\n\n  getFlowOrder = (url, registration) => {\n    const { business } = registration,\n      { id, isSimulated } = business;\n    if (isLoggedIn()) {\n      if (id && !isSimulated) {\n        return getExistingCompanyFlowOrder(url, registration);\n      }\n      return getNewCompanyFlowOrder(url, registration);\n    }\n    return getNewCustomerFlowOrder(url, registration);\n  };\n\nexport default {\n  getAddressFlow,\n  getPlanPurchaseFlow,\n  getPurchaseFlow,\n  getPaymentFlow,\n  getNewCustomerFlowOrder,\n  getNewCompanyFlowOrder,\n  getExistingCompanyFlowOrder,\n  getFlowOrder\n};\n","import { getRegistrationFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => { // eslint-disable-line no-unused-vars\n    return (flowTestMap[getRegistrationFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\nimport { getStateFees as getInitStateFees, getExpediteFees as getInitExpediteFees, setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as CORP_URLS } from '../../constants/complete_corp';\nimport { URLS as LLC_URLS } from '../../constants/complete_llc';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS, URLS, PLAN_LEVEL_MAP, getPageDetails } from '../../constants/registration';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, registrationService } from '../../services';\nimport { storageKey as initializationKey } from '../../reducers/initialization/fees';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport { storageKey as businessAddressesKey } from '../../reducers/registration/businessAddresses';\nimport { storageKey as pageKey } from '../../reducers/registration/page';\nimport { storageKey as purchaseKey } from '../../reducers/registration/purchase';\nimport { storageKey as registeredAgentKey } from '../../reducers/registration/registeredAgent';\nimport { getAppEntryPoint } from '../../utils/AppEntryPoint';\nimport { isLoggedIn } from '../../utils/AuthService';\nimport { isPF, getPartner, getEntryPointGroup } from '../../utils/PartnerUtils';\nimport { parseBoolToString } from '../../utils/DataCleaningUtils';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { trackClick, trackEvent, getButtonClickDetails, getArrowClickDetails, getClickDetails } from '../../utils/ThirdPartyTracking';\nimport { setReducerProgressBar, resetReducerProgressBar } from '../../utils/ProgressBar';\nimport { parseUrl } from '../../utils/UrlUtils';\nimport { setIsFreeAccount } from '../../utils/FreeAccountUtils';\n\nconst\n  defaultInitializationData = { expediteFees: {} },\n  defaultBusinessData = {\n    id: '',\n    type: '',\n    addressMatch: false,\n    addressIsGoogle: false,\n    domesticJurisdiction: '',\n    state: '',\n    hasSCorp: false,\n    scorpAllUSOwners: null,\n    scorpOutsideInvestors: null,\n    scorpOperateLoss: null,\n    scorpPaySalary: null\n  },\n  businessData = _assign(getReducerSnapshot(businessKey, defaultBusinessData), { noIdMatches: false, hasCompanies: true }),\n  defaultBusinessAddressesData = { usePhysicalAsPrincipal: false, usePhysicalAsMailing: false, useMailingAsPrincipal: false },\n  businessAddressesData = getReducerSnapshot(businessAddressesKey, defaultBusinessAddressesData),\n  defaultPageData = { forceToRegisteredAgent: false, forceToDataConfirmation: false, skipBusinessName: false, skipPlansPage: false, skipToDomesticJurisdiction: false },\n  pageData = getReducerSnapshot(pageKey, defaultPageData),\n  defaultRegisteredAgentData = { type: 'AccountOwner' },\n  registeredAgentData = getReducerSnapshot(registeredAgentKey, defaultRegisteredAgentData),\n  defaultPurchaseData = {\n    bankingResolutionAddOn: false,\n    bankingResolutionUpsellSkip: false,\n    basicEmailAddOn: false,\n    basicEmailUpsellSkip: false,\n    corporateDocsAddOn: false,\n    corporateDocsUpsellSkip: false,\n    domainName: null,\n    domainNameAddOn: false,\n    domainNameUpsellSkip: false,\n    domainNamePrivacyAddOn: false,\n    domainNamePrivacyUpsellSkip: false,\n    ein: false,\n    einAddOn: false,\n    einUpsellSkip: false,\n    expediteAddOn: false,\n    expediteUpsellSkip: false,\n    nyPublicationAddOn: false,\n    nyPublicationUpsellSkip: false,\n    operatingAgreementAddOn: false,\n    operatingAgreementUpsellSkip: false,\n    staticWebsiteAddOn: false,\n    staticWebsiteUpsellSkip: false,\n    worryFreeAddOn: false,\n    worryFreeUpsellSkip: false,\n    planLevel: '',\n    registeredAgentService: true\n  },\n  purchaseData = getReducerSnapshot(purchaseKey, defaultPurchaseData),\n  getFlowOrder = (url) => {\n    const\n      registration = {\n        business: businessData,\n        businessAddresses: businessAddressesData,\n        initialization: getReducerSnapshot(initializationKey, defaultInitializationData),\n        page: pageData,\n        registeredAgent: registeredAgentData,\n        purchase: purchaseData\n      },\n      flow = getFlow(url, registration);\n\n    return flow;\n  },\n  setProgressBar = (dispatch, flowOrder, currentStep) => {\n    setReducerProgressBar(\n      dispatch,\n      {\n        flowOrder,\n        currentStep,\n        activeFlow: URLS.BASE\n      }\n    );\n  },\n  resetProgressBar = (dispatch) => {\n    resetReducerProgressBar(dispatch);\n  },\n  makeUrlMovement = (movement) => {\n    const { useLocation, url, method } = movement;\n    if (useLocation) {\n      document.location = url;\n    } else {\n      method(url);\n    }\n  },\n  go = (dispatch, jump, doReplace, executeMovement) => {\n    const url = document.location.pathname.substring(URLS.BASE.length + 2),\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      { type } = businessData,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n    const urlMovement = {\n      method\n    };\n    if (jumpIndex < 0) {\n      resetProgressBar(dispatch);\n      if (!isLoggedIn()) {\n        urlMovement.url = getAppEntryPoint();\n        urlMovement.useLocation = true;\n      } else {\n        urlMovement.url = `/${DASHBOARD_URLS.BASE}`;\n        urlMovement.useLocation = true;\n      }\n    } else if (jumpIndex >= flowOrder.length) {\n      const urlsSet = type === 'CORP' ? CORP_URLS : LLC_URLS;\n      resetProgressBar(dispatch);\n      urlMovement.url = `/${urlsSet.BASE}/${urlsSet.START_COMP}`;\n      urlMovement.method = browserHistory.push;\n    } else {\n      setProgressBar(dispatch, flowOrder, flowOrder[jumpIndex]);\n      urlMovement.url = `/${URLS.BASE}/${flowOrder[jumpIndex]}`;\n    }\n    if (executeMovement) {\n      makeUrlMovement(urlMovement);\n    }\n    return urlMovement;\n  },\n  goTo = (dispatch, actionKey, url) => {\n    logger.logAction(actionKey);\n    dispatch({\n      type: actionKey\n    });\n    browserHistory.push(`/${URLS.BASE}/${url}`);\n  },\n  set = (dispatch, data, actionKey, moveUrl, doReplace, clickEvent) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    const urlMovement = moveUrl ? go(dispatch, 1, doReplace) : {};\n    if (clickEvent) {\n      trackClick(\n        getPageDetails(parseUrl(location.pathname, URLS.BASE)),\n        { nextUrl: urlMovement.url || '', ...clickEvent }\n      );\n    }\n    if (moveUrl) {\n      makeUrlMovement(urlMovement);\n    }\n  },\n  doReset = () => {\n    _assign(businessData, defaultBusinessData, { noIdMatches: false, hasCompanies: true });\n    _assign(businessAddressesData, defaultBusinessAddressesData);\n    _assign(pageData, defaultPageData);\n    _assign(registeredAgentData, defaultRegisteredAgentData);\n    _assign(purchaseData, defaultPurchaseData);\n  };\n\nexport const getEntryPoint = (dispatch) => {\n  const flowOrder = getFlowOrder('');\n  setProgressBar(dispatch, flowOrder, flowOrder[0]);\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  logger.logAction(ACTIONS.GO_BACK, { location: parseUrl(document.location.pathname, URLS.BASE) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  const urlMovement = go(dispatch, -1, false);\n  trackClick(\n    getPageDetails(parseUrl(location.pathname, URLS.BASE)),\n    { nextUrl: urlMovement.url || '', ...getArrowClickDetails('', 'back') }\n  );\n  makeUrlMovement(urlMovement);\n};\n\nexport const resetAllData = (dispatch, data) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET,\n    payload: {\n      data: data || {}\n    }\n  });\n  doReset();\n};\n\nexport const goToNextUncompletedPage = (dispatch, location, forceBusinessId) => {\n  if (forceBusinessId === 'reg') {\n    browserHistory.push(`/${URLS.BASE}/${URLS.BUS_ID}`);\n    return true;\n  }\n\n  const\n    flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index + 1,\n    { type } = businessData;\n\n  if (index >= 0) {\n    if (jumpIndex >= flowOrder.length) {\n      const urlsSet = type === 'CORP' ? CORP_URLS : LLC_URLS;\n      resetProgressBar(dispatch);\n      browserHistory.push(`/${urlsSet.BASE}/${urlsSet.START_COMP}`);\n    } else {\n      setProgressBar(dispatch, flowOrder, flowOrder[jumpIndex]);\n      browserHistory.push(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n    return true;\n  }\n\n  return false;\n};\n\n/* The next two are used to get fees - they need to be at the top as they are referenced elsewhere in the code */\nexport const getExpediteFees = (dispatch, data, expediteFees) => {\n  if (!expediteFees || !expediteFees[data.domesticJurisdiction]) {\n    getInitExpediteFees(dispatch, data.domesticJurisdiction);\n  }\n};\n\nexport const getStateFees = (dispatch, data, filingFees) => {\n  if (!filingFees[data.domesticJurisdiction]) {\n    getInitStateFees(dispatch, data.domesticJurisdiction);\n  }\n};\n\n/* Regular Actions */\n\nexport const setAccountOwnerContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOWN_CONTACT, true, false, getButtonClickDetails('next'));\n\n};\n\nexport const setAccountOwnerName = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOWN_NAME, true, false, getButtonClickDetails('next'));\n};\n\nexport const setBusinessId = (dispatch, data) => {\n  businessData.id = data.id;\n  pageData.skipBusinessName = !data.reset ? pageData.skipBusinessName : false;\n  set(dispatch, data, ACTIONS.BUS_ID, true, !data.hasCompanies);\n  businessData.hasCompanies = data.hasCompanies;\n  businessData.noIdMatches = data.noIdMatches; // Do this after to make sure things more correctly.\n};\n\nexport const setBusinessName = (dispatch, data) => {\n\n  pageData.skipBusinessName = data.skipBusinessName || false;\n  set(dispatch, data, ACTIONS.BUS_NAME, !pageData.skipBusinessName, false,\n    getButtonClickDetails('next', data.name));\n\n  if (pageData.skipBusinessName) {\n    browserHistory.push(`/${URLS.BASE}/business-name-confirm`);\n  }\n};\n\nexport const setBusinessNameConfirm = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_NAME_CONFIRM, true, false, getButtonClickDetails('next'));\n};\n\nexport const setBusinessNameModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_NAME_MODAL, false);\n};\n\nexport const setBusinessType = (dispatch, data) => {\n  businessData.type = data.type;\n  set(dispatch, data, ACTIONS.BUS_TYPE, true, false, getButtonClickDetails('next', data.type));\n};\n\nexport const setBusinessTypeModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_TYPE_MODAL, false);\n};\n\nexport const setDomesticJurisdiction = (dispatch, data, filingFees, expediteFees) => {\n  businessData.domesticJurisdiction = data.domesticJurisdiction;\n  set(dispatch, data, ACTIONS.DOM_JUR, !data.fromHomePage, false, getButtonClickDetails('next', data.domesticJurisdiction));\n  getStateFees(dispatch, data, filingFees);\n  getExpediteFees(dispatch, data, expediteFees);\n};\n\nexport const setDomesticJurisdictionModal = (dispatch, data, filingFees, expediteFees) => {\n  businessData.domesticJurisdiction = data.domesticJurisdiction;\n  set(dispatch, data, ACTIONS.DOM_JUR_MODAL, false);\n  getStateFees(dispatch, data, filingFees);\n  getExpediteFees(dispatch, data, expediteFees);\n};\n\nexport const setFormationCounty = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.FORM_COUNTY, true);\n};\n\nexport const setFormationCountyPF = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.FORM_COUNTY_PF, false);\n};\n\nexport const setInfoConfirmation = (dispatch, data) => {\n  pageData.forceToDataConfirmation = data.forceToDataConfirmation;\n  pageData.forceToPrivacy = data.forceToPrivacy;\n  set(dispatch, data, ACTIONS.DATA_CONFIRM, true, false, getClickDetails('next'));\n};\n\nexport const goToInfoConfirmation = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_DATA_CONFIRM, URLS.DATA_CONFIRM);\n};\n\nexport const setLogin = (dispatch) => {\n  set(dispatch, { flow: 'reg' }, ACTIONS.LOGIN, false);\n};\n\nexport const setLoginPostPurchase = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LOGIN_POST, false);\n};\n\nexport const setMailingAddress = (dispatch, data) => {\n  businessAddressesData.useMailingAsPrincipal = data.useMailingAsPrincipal;\n  set(dispatch, data, ACTIONS.MAIL_ADDR, true, false, getButtonClickDetails('next'));\n};\n\nexport const setMailingAddressModal = (dispatch, data) => {\n  businessAddressesData.useMailingAsPrincipal = data.useMailingAsPrincipal;\n  set(dispatch, data, ACTIONS.MAIL_ADDR_MODAL, false);\n};\n\nexport const setPayment = (dispatch, data) => {\n  pageData.forceToPrivacy = data.forceToPrivacy;\n  pageData.forceToDataConfirmation = data.forceToDataConfirmation;\n  set(dispatch, data, ACTIONS.PAYMENT, data.forceToPrivacy);\n};\n\nexport const setPhysicalAddress = (dispatch, data) => {\n  businessAddressesData.usePhysicalAsMailing = data.usePhysicalAsMailing;\n  businessAddressesData.usePhysicalAsPrincipal = data.usePhysicalAsPrincipal;\n  set(dispatch, data, ACTIONS.PHYS_ADDR, true, false, getButtonClickDetails('next'));\n};\n\nexport const setPhysicalAddressModal = (dispatch, data) => {\n  businessAddressesData.usePhysicalAsMailing = data.usePhysicalAsMailing;\n  businessAddressesData.usePhysicalAsPrincipal = data.usePhysicalAsPrincipal;\n  set(dispatch, data, ACTIONS.PHYS_ADDR_MODAL, false);\n};\n\nexport const setPrincipalAddress = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIN_ADDR, true, false, getButtonClickDetails('next'));\n};\n\nexport const setPrincipalAddressModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIN_ADDR_MODAL, false);\n};\n\nexport const setProductConfirmation = (dispatch, data) => {\n  pageData.forceToDataConfirmation = data.forceToDataConfirmation;\n  pageData.forceToPrivacy = data.forceToPrivacy;\n  set(dispatch, data, ACTIONS.PRODUCT_CONFIRM, true, false, getButtonClickDetails('next'));\n};\n\nexport const setPurchaseBanking = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PURCH_BANK, true);\n};\n\nexport const setPurchaseBankingResolution = (dispatch, data) => {\n  const boolAsStr = parseBoolToString(data.bankingResolution);\n  set(dispatch, data, ACTIONS.PURCH_BANK_RES, true, false, getButtonClickDetails(boolAsStr, boolAsStr));\n};\n\nexport const setPurchaseBasicEmail = (dispatch, data) => {\n  const boolAsStr = parseBoolToString(data.basicEmail);\n  set(dispatch, data, ACTIONS.PURCH_EMAIL, true, false, getButtonClickDetails(boolAsStr, boolAsStr));\n};\n\nexport const setPurchaseCorporateDocs = (dispatch, data) => {\n  const boolAsStr = parseBoolToString(data.corporateDocs);\n  set(dispatch, data, ACTIONS.PURCH_CORP_DOCS, true, false, getButtonClickDetails(boolAsStr, boolAsStr));\n};\n\nexport const setPurchaseDomainName = (dispatch, data) => {\n  purchaseData.domainName = data.domainName;\n  const boolAsStr = parseBoolToString(data.domainName);\n  set(dispatch, data, ACTIONS.PURCH_DOMAIN, true, false, getButtonClickDetails(boolAsStr, boolAsStr));\n};\n\nexport const setPurchaseDomainNamePrivacy = (dispatch, data) => {\n  const boolAsStr = parseBoolToString(data.domainNamePrivacy);\n  set(dispatch, data, ACTIONS.PURCH_DOMAIN_PRIV, true, false, getButtonClickDetails(boolAsStr, boolAsStr));\n};\n\nexport const setPurchaseEIN = (dispatch, data) => {\n  purchaseData.ein = data.ein;\n  const boolAsString = parseBoolToString(data.ein);\n  set(dispatch, data, ACTIONS.PURCH_EIN, true, false,\n    getButtonClickDetails(boolAsString, boolAsString));\n};\n\nexport const setPurchaseExp = (dispatch, data) => {\n  purchaseData.expedite = data.expedite;\n  set(dispatch, data, ACTIONS.PURCH_EXP, true, false,\n    getButtonClickDetails(data.expedite));\n};\n\nexport const setPubCounty = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PUB_COUNTY, true);\n};\n\nexport const setPurchaseNYPub = (dispatch, data) => {\n  const boolAsStr = parseBoolToString(data.nyPublication);\n  set(dispatch, data, ACTIONS.PURCH_NYPUB, true, false, getButtonClickDetails(boolAsStr, boolAsStr));\n};\n\nexport const setPurchaseNYPubPF = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PURCH_NYPUB_PF, false, false, false);\n};\n\nexport const setPurchaseOperatingAgreement = (dispatch, data) => {\n  const boolAsStr = parseBoolToString(data.operatingAgreement);\n  set(dispatch, data, ACTIONS.PURCH_OP_AGREE, true, false, getButtonClickDetails(boolAsStr, boolAsStr));\n};\n\nexport const setPurchaseRAS = (dispatch, data) => {\n  purchaseData.registeredAgentService = data.registeredAgentService;\n  set(dispatch, data, ACTIONS.PURCH_RAS, true);\n};\n\n/* eslint-disable max-statements */\nexport const setPurchasePlan = (dispatch, data) => {\n  const\n    { planLevel, bankingResolutionAddOn, basicEmailAddOn, corporateDocsAddOn, domainNameAddOn, domainNamePrivacyAddOn, einAddOn, expediteAddOn,\n      nyPublicationAddOn, operatingAgreementAddOn, privacyAddOn, staticWebsiteAddOn, worryFreeAddOn } = data,\n    { bankingResolutionUpsellSkip, basicEmailUpsellSkip, corporateDocsUpsellSkip, domainNameUpsellSkip, domainNamePrivacyUpsellSkip, einUpsellSkip, expediteUpsellSkip } = data,\n    { nyPublicationUpsellSkip, operatingAgreementUpsellSkip, privacyUpsellSkip, staticWebsiteUpsellSkip, worryFreeUpsellSkip } = data,\n    { pricingProductLandingPageUrl = '', business = {} } = data;\n\n  purchaseData.planLevel = planLevel;\n  purchaseData.bankingResolutionAddOn = bankingResolutionAddOn;\n  purchaseData.basicEmailAddOn = basicEmailAddOn;\n  purchaseData.corporateDocsAddOn = corporateDocsAddOn;\n  purchaseData.domainNameAddOn = domainNameAddOn;\n  purchaseData.domainNamePrivacyAddOn = domainNamePrivacyAddOn;\n  purchaseData.einAddOn = einAddOn;\n  purchaseData.expediteAddOn = expediteAddOn;\n  purchaseData.nyPublicationAddOn = nyPublicationAddOn;\n  purchaseData.operatingAgreementAddOn = operatingAgreementAddOn;\n  purchaseData.privacyAddOn = privacyAddOn;\n  purchaseData.staticWebsiteAddOn = staticWebsiteAddOn;\n  purchaseData.worryFreeAddOn = worryFreeAddOn;\n  purchaseData.bankingResolutionUpsellSkip = bankingResolutionUpsellSkip;\n  purchaseData.basicEmailUpsellSkip = basicEmailUpsellSkip;\n  purchaseData.domainNameUpsellSkip = domainNameUpsellSkip;\n  purchaseData.domainNamePrivacyUpsellSkip = domainNamePrivacyUpsellSkip;\n  purchaseData.corporateDocsUpsellSkip = corporateDocsUpsellSkip;\n  purchaseData.einUpsellSkip = einUpsellSkip;\n  purchaseData.expediteUpsellSkip = expediteUpsellSkip;\n  purchaseData.nyPublicationUpsellSkip = nyPublicationUpsellSkip;\n  purchaseData.operatingAgreementUpsellSkip = operatingAgreementUpsellSkip;\n  purchaseData.privacyUpsellSkip = privacyUpsellSkip;\n  purchaseData.staticWebsiteUpsellSkip = staticWebsiteUpsellSkip;\n  purchaseData.worryFreeUpsellSkip = worryFreeUpsellSkip;\n\n  if (business.domesticJurisdiction) {\n    businessData.domesticJurisdiction = business.domesticJurisdiction;\n  }\n\n  if (business.type) {\n    businessData.type = business.type;\n  }\n  const levelMap = PLAN_LEVEL_MAP[planLevel];\n  set(dispatch, data, ACTIONS.PURCH_PLAN, !pricingProductLandingPageUrl, false,\n    getButtonClickDetails(levelMap, levelMap));\n\n  if (pricingProductLandingPageUrl) {\n    browserHistory.push(`/${URLS.BASE}/domestic-jurisdiction`);\n  }\n};\n\nexport const setPurchasePlanFromNewPricingPage = (dispatch, data) => {\n  const\n    { planLevel, bankingResolutionAddOn, basicEmailAddOn, corporateDocsAddOn, domainNameAddOn, domainNamePrivacyAddOn, einAddOn,\n      expediteAddOn, nyPublicationAddOn, operatingAgreementAddOn, privacyAddOn, staticWebsiteAddOn, worryFreeAddOn, bankOfAmericaOffer } = data;\n\n\n  purchaseData.planLevel = planLevel;\n  purchaseData.bankingResolutionAddOn = bankingResolutionAddOn;\n  purchaseData.basicEmailAddOn = basicEmailAddOn;\n  purchaseData.corporateDocsAddOn = corporateDocsAddOn;\n  purchaseData.domainNameAddOn = domainNameAddOn;\n  purchaseData.domainNamePrivacyAddOn = domainNamePrivacyAddOn;\n  purchaseData.einAddOn = einAddOn;\n  purchaseData.expediteAddOn = expediteAddOn;\n  purchaseData.nyPublicationAddOn = nyPublicationAddOn;\n  purchaseData.operatingAgreementAddOn = operatingAgreementAddOn;\n  purchaseData.privacyAddOn = privacyAddOn;\n  purchaseData.staticWebsiteAddOn = staticWebsiteAddOn;\n  purchaseData.worryFreeAddOn = worryFreeAddOn;\n  purchaseData.bankingResolutionUpsellSkip = false;\n  purchaseData.basicEmailUpsellSkip = false;\n  purchaseData.corporateDocsUpsellSkip = false;\n  purchaseData.domainNameUpsellSkip = false;\n  purchaseData.domainNamePrivacyUpsellSkip = false;\n  purchaseData.einUpsellSkip = false;\n  purchaseData.expediteUpsellSkip = false;\n  purchaseData.nyPublicationUpsellSkip = false;\n  purchaseData.operatingAgreementUpsellSkip = false;\n  purchaseData.privacyUpsellSkip = false;\n  purchaseData.staticWebsiteUpsellSkip = false;\n  purchaseData.worryFreeUpsellSkip = false;\n  purchaseData.bankOfAmericaOffer = bankOfAmericaOffer;\n\n  pageData.skipToDomesticJurisdiction = true;\n  set(dispatch, data, ACTIONS.PURCH_PLAN, false);\n  browserHistory.push(`/${URLS.BASE}/domestic-jurisdiction`);\n};\n/* eslint-enable max-statements */\n\nexport const setPurchasePrivacy = (dispatch, data, filingFees, expediteFees) => {\n  pageData.forceToRegisteredAgent = data.forceToRegisteredAgent;\n  pageData.forceToPrivacy = false;\n  registeredAgentData.type = data.registeredAgentType;\n  businessData.domesticJurisdiction = data.domesticJurisdiction;\n  set(dispatch, data, ACTIONS.PURCH_PRIV, true, false, getButtonClickDetails('next'));\n  getStateFees(dispatch, data, filingFees);\n  getExpediteFees(dispatch, data, expediteFees);\n};\n\nexport const setPurchaseStart = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PURCH_START, true, false, getButtonClickDetails('next'));\n};\n\nexport const setPurchaseStaticWebsite = (dispatch, data) => {\n  const boolAsStr = parseBoolToString(data.staticWebsite);\n  set(dispatch, data, ACTIONS.PURCH_WEBSITE, true, false, getButtonClickDetails(boolAsStr, boolAsStr));\n};\n\nexport const setPurchaseWorryFree = (dispatch, data) => {\n  const boolAsString = parseBoolToString(data.worryFree);\n  set(dispatch, data, ACTIONS.PURCH_WF, true, false, getButtonClickDetails(boolAsString, boolAsString));\n};\n\nexport const setRegisteredAgent = (dispatch, data) => {\n  pageData.forceToRegisteredAgent = false;\n  registeredAgentData.type = 'RA';\n  set(dispatch, data, ACTIONS.REG_AGT, true, false, getButtonClickDetails('next'));\n};\n\nexport const setRegisteredAgentModal = (dispatch, data) => {\n  pageData.forceToRegisteredAgent = false;\n  registeredAgentData.type = 'RA';\n  set(dispatch, data, ACTIONS.REG_AGT_MODAL, true);\n};\n\nexport const setSCorpAllUSOwners = (dispatch, data) => {\n  businessData.scorpAllUSOwners = data.scorpAllUSOwners;\n  const boolAsStr = parseBoolToString(data.scorpAllUSOwners);\n  set(dispatch, data, ACTIONS.SCORP_ALL_US_OWNERS, true, false, getButtonClickDetails(boolAsStr, boolAsStr));\n};\n\nexport const setSCorpOutsideInvestors = (dispatch, data) => {\n  businessData.scorpInvestors = data.scorpInvestors;\n  const boolAsStr = parseBoolToString(data.scorpInvestors);\n  set(dispatch, data, ACTIONS.SCORP_INVESTORS, true, false, getButtonClickDetails(boolAsStr, boolAsStr));\n};\n\nexport const setSCorpOperateLoss = (dispatch, data) => {\n  businessData.scorpOperateLoss = data.scorpOperateLoss;\n  const boolAsStr = parseBoolToString(data.scorpOperateLoss);\n  set(dispatch, data, ACTIONS.SCORP_LOSS, true, false, getButtonClickDetails(boolAsStr, boolAsStr));\n};\n\nexport const setSCorpPaySalary = (dispatch, data) => {\n  businessData.scorpPaySalary = data.scorpPaySalary;\n  const boolAsStr = parseBoolToString(data.scorpPaySalary);\n  set(dispatch, data, ACTIONS.SCORP_SALARY, true, false, getButtonClickDetails(boolAsStr, boolAsStr));\n};\n\nexport const setStateRequirements = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.STATE_REQ, true);\n};\n\n/* eslint-disable max-statements */\nexport const setInit = (dispatch, data) => {\n  const {\n    type = '',\n    hasSCorp = false\n  } = data;\n\n  setIsFreeAccount(data.isSimulated);\n  if (isPF() || (!getPartner() && !getEntryPointGroup())) {\n    document.location = '/r2/registration-new/init';\n    return;\n  }\n\n  doReset();\n  setAppEntryPoint(dispatch, true);\n\n  const {\n    id = '',\n    domesticJurisdiction = '',\n    name = '',\n    fromDashboard = false,\n    fromBNG = false,\n    skipToDomesticJurisdiction = false,\n    skipPlansPage = false,\n    skipBusinessName = false,\n    isSimulated,\n    purchaseData: pd = {\n      planLevel: '',\n      bankingResolutionAddOn: false,\n      basicEmailAddOn: false,\n      corporateDocsAddOn: false,\n      domainNameAddOn: false,\n      domainNamePrivacyAddOn: false,\n      einAddOn: false,\n      expediteAddOn: false,\n      nyPublicationAddOn: false,\n      operatingAgreementAddOn: false,\n      privacyAddOn: false,\n      staticWebsiteAddOn: false,\n      worryFreeAddOn: false\n    }\n  } = data;\n\n  _assign(pageData, { fromDashboard, fromBNG, skipToDomesticJurisdiction, skipPlansPage, skipBusinessName });\n  _assign(businessData, { id, type: type === 'none' ? '' : type, domesticJurisdiction: domesticJurisdiction === 'none' ? '' : domesticJurisdiction, name, hasSCorp, isSimulated });\n  _assign(purchaseData, pd);\n  if (purchaseData.planLevel === 'alaCarte') {\n    purchaseData.planLevel = '';\n  }\n\n  set(dispatch, {}, ACTIONS.RESET, false);\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(getEntryPoint(dispatch));\n};\n/* eslint-enable max-statements */\n\nconst createFormationOrder = async (dispatch, reducerData, fees, expediteFees) => {\n  const serviceMethod = reducerData.business.type === 'LLCX' ? 'createLLC' : 'createCorp';\n  try {\n    const formationOrder = await registrationService[serviceMethod](reducerData, fees, expediteFees);\n    const { data } = formationOrder;\n    logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, formationOrder);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      payload: {\n        data,\n        reducerData,\n        fees,\n        expediteFees\n      }\n    });\n    trackEvent('Purchase', 'complete', 'Domestic');\n    go(dispatch, 1, false, true);\n    // registrationService[serviceMethod](reducerData, fees, expediteFees).then((response) => {\n  } catch (err) {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n\n  }\n\n};\n\nexport const createOrder = (dispatch, reducerData, fees, expediteFees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { customer } = reducerData,\n    { expMonth, expYear, cvc, cardToken, brand, last4 } = customer;\n\n  if (!isLoggedIn() || !cardToken) {\n    createFormationOrder(dispatch, reducerData, fees, expediteFees);\n  } else {\n    const data = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createFormationOrder(dispatch, reducerData, fees, expediteFees);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const createLead = (dispatch, lead) => {\n  logger.logAction(ACTIONS.CREATE_LEAD);\n  dispatch({\n    type: ACTIONS.CREATE_LEAD\n  });\n  registrationService.createLead(lead).then((response) => {\n    logger.logAction(ACTIONS.CREATE_LEAD_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.CREATE_LEAD_COMPLETE,\n      payload: {\n        data: response\n      }\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_LEAD_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_LEAD_COMPLETE,\n      error: true,\n      payload: {\n        data: err\n      }\n    });\n  });\n};\n\nexport const setBusinessData = (dispatch, data, filingFees, expediteFees) => {\n  businessData.domesticJurisdiction = data.domesticJurisdiction;\n  set(dispatch, data, ACTIONS.BUS_DATA, false);\n  getStateFees(dispatch, data, filingFees);\n  getExpediteFees(dispatch, data, expediteFees);\n};\n\nexport const setContactData = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOWN_MODAL, false);\n};\n\nexport const setRegisteredAgentData = (dispatch, data) => {\n  registeredAgentData.type = data.type;\n  set(dispatch, data, ACTIONS.RA_DATA, false);\n};\n\nexport const orderAlreadyCreated = (dispatch) => {\n  go(dispatch, 1, false, true);\n};\n\nexport const setCompanyDetails = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.EDIT_CHECKOUT, false);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  goToNextUncompletedPage,\n  goToInfoConfirmation,\n  orderAlreadyCreated,\n  getStateFees,\n  getExpediteFees,\n  setAccountOwnerContact,\n  setAccountOwnerName,\n  setBusinessId,\n  setBusinessName,\n  setBusinessNameConfirm,\n  setBusinessType,\n  setDomesticJurisdiction,\n  setInfoConfirmation,\n  setLogin,\n  setLoginPostPurchase,\n  setMailingAddress,\n  setPayment,\n  setPhysicalAddress,\n  setPrincipalAddress,\n  setProductConfirmation,\n  setPurchaseStart,\n  setPurchaseBanking,\n  setPurchaseBankingResolution,\n  setPurchaseBasicEmail,\n  setPurchaseCorporateDocs,\n  setPurchaseDomainName,\n  setPurchaseDomainNamePrivacy,\n  setPurchaseEIN,\n  setPurchaseExp,\n  setPurchaseNYPub,\n  setPurchaseNYPubPF,\n  setPurchaseOperatingAgreement,\n  setPurchaseRAS,\n  setPurchasePlan,\n  setPurchasePrivacy,\n  setPurchaseStaticWebsite,\n  setPurchaseWorryFree,\n  setRegisteredAgent,\n  setSCorpAllUSOwners,\n  setSCorpOutsideInvestors,\n  setSCorpOperateLoss,\n  setSCorpPaySalary,\n  setInit,\n  setStateRequirements,\n  createOrder,\n  createLead,\n  setBusinessTypeModal,\n  setDomesticJurisdictionModal,\n  setMailingAddressModal,\n  setPhysicalAddressModal,\n  setPrincipalAddressModal,\n  setRegisteredAgentModal,\n  setBusinessData,\n  setContactData,\n  setRegisteredAgentData,\n  setCompanyDetails,\n  resetAllData\n};\n","import { URLS } from '../../../constants/complete_dbaentity';\n\nconst\n  getAddressFlow = (url, registration) => {\n    const { usePhysicalAsMailing } = registration.businessAddresses,\n      flowItems = [];\n\n    flowItems.push(URLS.PHYS_ADDR);\n    if (!usePhysicalAsMailing || url === URLS.MAIL_ADDR) {\n      flowItems.push(URLS.MAIL_ADDR);\n    }\n    return flowItems;\n  },\n\n  getFlowOrder = (url, registration) => {\n    const\n      { dbaEntity, purchase } = registration,\n      flowItems = [\n        URLS.START,\n        URLS.BUS_DESC,\n        ...getAddressFlow(url, registration)],\n      { hasEIN, parentType } = dbaEntity,\n      { ein } = purchase;\n\n    if (url === URLS.COMPLETE || url === URLS.SHARE) {\n      return [ URLS.SHARE, URLS.COMPLETE ];\n    }\n    if (parentType !== 'sole') {\n      flowItems.push(URLS.REG_AGT, URLS.OWNER_COUNT);\n    }\n    flowItems.push(URLS.OWNERS);\n    if (parentType !== 'sole') {\n      flowItems.push(URLS.STATE_FILING);\n    }\n    if (!ein) {\n      flowItems.push(URLS.HAS_EIN);\n      if (hasEIN) {\n        flowItems.push(URLS.EIN);\n      }\n    }\n    flowItems.push(URLS.AUTH_SIG, URLS.DATA_CONFIRM);\n    if (!ein) {\n      flowItems.push(URLS.SHARE, URLS.COMPLETE);\n    }\n    return flowItems;\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getCompleteLLCFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getCompleteLLCFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { getEntryPoint as getEINEntryPoint } from '../complete_ein';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS, URLS } from '../../constants/complete_dbaentity';\nimport logger from '../../utils/ClientLogger';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport { storageKey as businessAddressesKey } from '../../reducers/registration/businessAddresses';\nimport { storageKey as dbaEntityKey } from '../../reducers/registration/dbaEntity';\nimport { storageKey as purchaseKey } from '../../reducers/registration/purchase';\nimport { registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\n\nconst\n  defaultBusinessData = { id: '' },\n  defaultDBAEntityData = { domesticEntity: null, hasEIN: null, parentType: '' },\n  dbaEntityData = getReducerSnapshot(dbaEntityKey, defaultDBAEntityData),\n  defaultBusinessAddressesData = { usePhysicalAsPrincipal: false, usePhysicalAsMailing: false, useMailingAsPrincipal: false },\n  businessAddressesData = getReducerSnapshot(businessAddressesKey, defaultBusinessAddressesData),\n  businessData = getReducerSnapshot(businessKey, defaultBusinessData),\n  defaultPurchaseData = { ein: null },\n  purchaseData = getReducerSnapshot(purchaseKey, defaultPurchaseData),\n\n  getFlowOrder = (url) => {\n    const\n      registration = {\n        business: businessData,\n        businessAddresses: businessAddressesData,\n        dbaEntity: dbaEntityData,\n        purchase: purchaseData\n      },\n      flow = getFlow(url, registration);\n\n    return flow;\n  },\n  goInFlowOrder = (flowOrder, jumpIndex) => {\n    const\n      { ein } = purchaseData,\n      { id } = businessData;\n\n    if (jumpIndex < 0) {\n      browserHistory.push(`/${URLS.BASE}/${flowOrder[0]}`);\n    } else if (jumpIndex >= flowOrder.length) {\n      if (ein) {\n        browserHistory.push(getEINEntryPoint());\n      } else if (id) {\n        document.location = `/${COMPANY_URLS.BASE}/${id}`;\n      } else {\n        document.location = `/${DASHBOARD_URLS.BASE}`;\n      }\n    } else {\n      browserHistory.push(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  updateSnapshots = () => {\n    _assign(businessData, getReducerSnapshot(businessKey, defaultBusinessData));\n    _assign(businessAddressesData, getReducerSnapshot(businessAddressesKey, defaultBusinessAddressesData));\n    _assign(dbaEntityData, getReducerSnapshot(dbaEntityKey, defaultDBAEntityData));\n    _assign(purchaseData, getReducerSnapshot(purchaseKey, defaultPurchaseData));\n  },\n  go = (jump) => {\n    const url = document.location.pathname.substring(URLS.BASE.length + 2);\n    if (url === URLS.COMPLETE) {\n      updateSnapshots();\n    }\n    const  flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index;\n\n    goInFlowOrder(flowOrder, jumpIndex);\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1);\n    }\n  };\n\nexport const getEntryPoint = (fromBack) => {\n  updateSnapshots();\n\n  const flow = getFlowOrder(),\n    index = fromBack ? flow.length - 1 : 0;\n\n  return `/${URLS.BASE}/${flow[index]}`;\n};\n\nexport const getCompleteEntryPoint = () => {\n  return `/${URLS.BASE}/${URLS.SHARE}`;\n};\n\nexport const goBack = (dispatch) => {\n  logger.logAction(ACTIONS.GO_BACK, { location: document.location.pathname.substring(URLS.BASE.length + 2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1);\n};\n\nexport const getNextUncompletedPage = (dispatch, location) => {\n  updateSnapshots();\n  const\n    flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index + 1,\n    { ein } = purchaseData,\n    { id } = businessData;\n\n  if (index >= 0) {\n    if (jumpIndex >= flowOrder.length) {\n      if (ein) {\n        return { isDashboard: false, url: getEINEntryPoint() };\n      }\n      if (id) {\n        return { isDashboard: true, url: `/${COMPANY_URLS.BASE}/${id}` };\n      }\n      return { isDashboard: true, url: `/${DASHBOARD_URLS.BASE}` };\n    }\n    return { isDashboard: false, url: `/${URLS.BASE}/${flowOrder[jumpIndex]}` };\n  }\n\n  return { isDashboard: false, url: '' };\n};\n\nexport const goToNextUncompletedPage = (dispatch, location) => {\n  updateSnapshots();\n  const\n    flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index + 1;\n\n  if (index >= 0) {\n    goInFlowOrder(flowOrder, jumpIndex);\n    return true;\n  }\n  return false;\n};\n\nexport const setAllAddressesModal = (dispatch, data) => {\n  businessAddressesData.useMailingAsPrincipal = data.useMailingAsPrincipal;\n  businessAddressesData.usePhysicalAsPrincipal = data.usePhysicalAsPrincipal;\n  businessAddressesData.usePhysicalAsMailing = data.usePhysicalAsMailing;\n  set(dispatch, data, ACTIONS.ADDR_MODAL, false);\n};\n\nexport const setBusinessDescription = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_DESC, false);\n};\n\nexport const setBusinessModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_MODAL, false);\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.COMPLETE, true);\n};\n\nexport const setDataConfirmation = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.DATA_CONFIRM, false);\n};\n\nexport const setDBAModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.DBA_MODAL, false);\n};\n\nexport const setDomesticEntity = (dispatch, data) => {\n  dbaEntityData.domesticEntity = data.domesticEntity;\n  set(dispatch, data, ACTIONS.DOM_ENTITY, false);\n};\n\nexport const setDomesticJurisdiction = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.DOM_JUR, false);\n};\n\nexport const setEIN = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.EIN, false);\n};\n\nexport const setHasEIN = (dispatch, data) => {\n  dbaEntityData.hasEIN = data.hasEIN;\n  set(dispatch, data, ACTIONS.HAS_EIN, false);\n};\n\nexport const setMailingAddress = (dispatch, data) => {\n  businessAddressesData.useMailingAsPrincipal = data.useMailingAsPrincipal;\n  set(dispatch, data, ACTIONS.MAIL_ADDR, false);\n};\n\nexport const setOwnerCount = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.OWNER_COUNT, false);\n};\n\nexport const setOwnersModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.OWNER_MODAL, false);\n};\n\nexport const setOwners = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.OWNERS, false);\n};\n\nexport const setPhysicalAddress = (dispatch, data) => {\n  businessAddressesData.usePhysicalAsMailing = data.usePhysicalAsMailing;\n  businessAddressesData.usePhysicalAsPrincipal = data.usePhysicalAsPrincipal;\n  set(dispatch, data, ACTIONS.PHYS_ADDR, false);\n};\n\nexport const setPrincipalAddress = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIN_ADDR, false);\n};\n\nexport const setRegisteredAgent = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.REG_AGT, false);\n};\n\nexport const setRegisteredAgentModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.REG_AGT_MODAL, false);\n};\n\nexport const setRegistrationModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.REG_MODAL, false);\n};\n\nexport const setShare = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.SHARE, true);\n};\n\nexport const setAuthorizedSignatory = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.AUTH_SIG, false);\n};\n\nexport const setAuthorizedSignatoryModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.AUTH_SIG_MODAL, false);\n};\n\n\nexport const setStart = (dispatch, data) => {\n  updateSnapshots();\n  set(dispatch, data, ACTIONS.START, data.forward);\n};\n\nexport const setStateFiling = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.STATE_FILING, false);\n};\n\nexport const updateOrder = (dispatch, reducerData, filingFees, advance) => {\n  logger.logAction(ACTIONS.UPDATE_ORDER);\n  dispatch({\n    type: ACTIONS.UPDATE_ORDER\n  });\n  registrationService.updateDBAEntity(reducerData, filingFees).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.UPDATE_ORDER_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.UPDATE_ORDER_COMPLETE,\n      payload: {\n        data,\n        reducerData\n      }\n    });\n    if (advance) {\n      go(1);\n    }\n  }).catch((err) => {\n    logger.error(ACTIONS.UPDATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.UPDATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport default {\n  getEntryPoint,\n  getCompleteEntryPoint,\n  goBack,\n  getNextUncompletedPage,\n  goToNextUncompletedPage,\n  setAllAddressesModal,\n  setBusinessDescription,\n  setBusinessModal,\n  setComplete,\n  setDataConfirmation,\n  setDBAModal,\n  setDomesticEntity,\n  setDomesticJurisdiction,\n  setEIN,\n  setHasEIN,\n  setMailingAddress,\n  setOwnerCount,\n  setOwnersModal,\n  setOwners,\n  setPhysicalAddress,\n  setPrincipalAddress,\n  setRegisteredAgent,\n  setRegisteredAgentModal,\n  setRegistrationModal,\n  setShare,\n  setStart,\n  setStateFiling,\n  updateOrder\n};\n","import _assign from 'lodash/assign';\nimport { URLS } from '../../../constants/complete_corp';\nimport { DBA_IGNORE_STATES } from '../../../constants/ui';\nimport { isDBAEntityEnabled, isDBAComplianceEnabled } from '../../../utils/ProductService';\nimport { isVmaJurisdiction } from '../../../utils/VmaUtils';\nimport featureFlags from '../../../featureFlags';\n\nconst DBA_IGNORE_STATES_WITH_DELAWARE = _assign({ AZ: true, CA: true, CT: true, DE: true, FL: true, NE: true, NY: true, PA: true, WY: true }, DBA_IGNORE_STATES);\nconst HAS_MORE_THAN_ONE_SHARE_STATES = { CA: true };\n\n/* eslint-disable max-statements */\nconst\n  getAddressFlow = (url, registration) => {\n    const { business, businessAddresses, purchase } = registration;\n    const flowItems = [];\n\n    if (!purchase.planLevel) {\n      return flowItems;\n    }\n\n    flowItems.push(URLS.PHYS_ADDR);\n\n    if (!businessAddresses.usePhysicalAsMailing || url === URLS.MAIL_ADDR) {\n      flowItems.push(URLS.MAIL_ADDR);\n    }\n\n    if (isVmaJurisdiction(business.requestedJurisdiction)) {\n      flowItems.push(URLS.PURCHASE_VBA);\n    }\n\n    return flowItems;\n  },\n\n  getDBAEntityFlow = (url, registration) => {\n    const { purchaseDBAEntity } = registration.postpurchase,\n      { requestedJurisdiction } = registration.business;\n\n    if (DBA_IGNORE_STATES_WITH_DELAWARE[requestedJurisdiction]) {\n      if (url === URLS.PURCHASE_DBA_ENTITY) {\n        return [ URLS.PURCHASE_DBA_ENTITY ];\n      }\n      if (url === URLS.DBA_ENTITIES) {\n        return [ URLS.DBA_ENTITIES ];\n      }\n      if (url === URLS.PURCHASE_DBA_COMPLIANCE) {\n        return [ URLS.PURCHASE_DBA_COMPLIANCE ];\n      }\n      return [];\n    }\n\n    if (isDBAEntityEnabled()) {\n      if (purchaseDBAEntity) {\n        if (isDBAComplianceEnabled()) {\n          return [ URLS.PURCHASE_DBA_ENTITY, URLS.DBA_ENTITIES, URLS.PURCHASE_DBA_COMPLIANCE ];\n        }\n        return [ URLS.PURCHASE_DBA_ENTITY, URLS.DBA_ENTITIES ];\n      }\n      return [ URLS.PURCHASE_DBA_ENTITY ];\n    }\n    return [];\n  },\n\n  getRegisteredAgentFlow = (registration) => {\n    const { registeredAgentService } = registration.purchase;\n\n    if (!registeredAgentService) {\n      return [URLS.REGISTERED_AGENT];\n    }\n\n    return [];\n  },\n\n  getHasMoreThanOneShareFlow = (registration) => {\n    const { requestedJurisdiction } = registration.business;\n\n    if (HAS_MORE_THAN_ONE_SHARE_STATES[requestedJurisdiction]) {\n      return [URLS.HAS_MORE_THAN_ONE_SHARE];\n    }\n\n    return [];\n  },\n\n  getFlowOrder = (url, registration) => {\n    const\n      { officer, domainName: domainNameData, purchase, business } = registration,\n      { requestedJurisdiction } = business,\n      flowItems = [\n        URLS.START_COMP,\n        URLS.BUS_NAME,\n        ...getDBAEntityFlow(url, registration),\n        URLS.BUS_DESC,\n        ...getAddressFlow(url, registration),\n        ...getRegisteredAgentFlow(registration),\n        ...getHasMoreThanOneShareFlow(registration)\n      ],\n      { skip } = domainNameData,\n      { hasAsstSecretary, hasVicePresident } = officer,\n      { domainName, basicEmail } = purchase;\n\n    if (featureFlags.features.stockSetup && requestedJurisdiction !== 'DE') {\n      flowItems.push(URLS.CORP_STOCK);\n    }\n\n    if (!featureFlags.features.stockSetup) {\n      flowItems.push(URLS.CORP_STOCK);\n    }\n\n    flowItems.push(URLS.DIR_COUNT);\n    flowItems.push(URLS.DIR_LIST);\n    flowItems.push(URLS.CHOOSE_PRES);\n\n    if (url === URLS.PRES) { // PRES is a direct-to-page link and is only in the flow if you go there directly\n      flowItems.push(URLS.PRES);\n    }\n    flowItems.push(URLS.HAS_VP);\n    if (hasVicePresident) {\n      flowItems.push(URLS.CHOOSE_VP);\n      if (url === URLS.VP) { // VP is a direct-to-page link and is only in the flow if you go there directly\n        flowItems.push(URLS.VP);\n      }\n    }\n    flowItems.push(URLS.CHOOSE_TRSR);\n    if (url === URLS.TRSR) { // TRSR is a direct-to-page link and is only in the flow if you go there directly\n      flowItems.push(URLS.TRSR);\n    }\n    flowItems.push(URLS.CHOOSE_SEC);\n    if (url === URLS.SEC) { // SEC is a direct-to-page link and is only in the flow if you go there directly\n      flowItems.push(URLS.SEC);\n    }\n    flowItems.push(URLS.HAS_ASST_SEC);\n    if (hasAsstSecretary) {\n      flowItems.push(URLS.CHOOSE_ASST_SEC);\n      if (url === URLS.ASST_SEC) { // ASST_SEC is a direct-to-page link and is only in the flow if you go there directly\n        flowItems.push(URLS.ASST_SEC);\n      }\n    }\n    flowItems.push(URLS.CHOOSE_PRIM_CONTACT);\n    if (url === URLS.PRIM_CONTACT) { // PRIM_CONTACT is a direct-to-page link and is only in the flow if you go there directly\n      flowItems.push(URLS.PRIM_CONTACT);\n    }\n\n    flowItems.push(URLS.AUTH_SIG);\n\n    if (domainName) {\n      flowItems.push(URLS.DOMAIN_NAME);\n      if (basicEmail && !skip) {\n        flowItems.push(URLS.EMAIL_ADDRESS);\n      }\n    }\n    return flowItems;\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getCompleteCorpFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getCompleteCorpFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { getEntryPoint as getEINEntryPoint } from '../complete_ein';\nimport { getEntryPoint as getPostPurchaseEntryPoint } from '../purchase_post_addons';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { ACTIONS, URLS, getPageDetails } from '../../constants/complete_corp';\nimport { ACTIONS as VP_ACTIONS } from '../../constants/vanity_products';\nimport logger from '../../utils/ClientLogger';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport { storageKey as businessAddressesKey } from '../../reducers/registration/businessAddresses';\nimport { storageKey as domainNameKey } from '../../reducers/registration/domainName';\nimport { storageKey as officerKey } from '../../reducers/registration/officers';\nimport { storageKey as postpurchaseKey } from '../../reducers/registration/postpurchase';\nimport { storageKey as purchaseKey } from '../../reducers/registration/purchase';\nimport { registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport { parseBoolToString } from '../../utils/DataCleaningUtils';\nimport getFlow from './flows';\nimport { getButtonClickDetails, trackClick } from '../../utils/ThirdPartyTracking';\nimport { parseUrl } from '../../utils/UrlUtils';\nimport featureFlags from '../../featureFlags';\n\nconst\n  defaultBusinessData = { requestedJurisdiction: '' },\n  businessData = getReducerSnapshot(businessKey, defaultBusinessData),\n  defaultBusinessAddressesData = { usePhysicalAsPrincipal: false, usePhysicalAsMailing: false, useMailingAsPrincipal: false },\n  businessAddressesData = getReducerSnapshot(businessAddressesKey, defaultBusinessAddressesData),\n  domainNameData = getReducerSnapshot(domainNameKey, { skip: false }),\n  officerData = getReducerSnapshot(officerKey, { hasAsstSecretary: false, hasVicePresident: false }),\n  postpurchaseData = getReducerSnapshot(postpurchaseKey, { purchaseDBAEntity: false, purchaseVBA: false }),\n  purchaseData = getReducerSnapshot(purchaseKey, { ein: null, domainName: null, planLevel: '' }),\n\n  getFlowOrder = (url) => {\n    const\n      registration = {\n        business: businessData,\n        businessAddresses: businessAddressesData,\n        domainName: domainNameData,\n        officer: officerData,\n        postpurchase: postpurchaseData,\n        purchase: purchaseData\n      },\n      flow = getFlow(url, registration);\n\n    return flow;\n  },\n\n  goInFlowOrder = (flowOrder, jumpIndex) => {\n    const\n      { ein } = purchaseData;\n\n    const urlMovement = {\n      method: browserHistory.push\n    };\n\n    const { disableEIN } = featureFlags.features;\n\n    if (jumpIndex < 0) {\n      urlMovement.url = `/${URLS.BASE}/${flowOrder[0]}`;\n    } else if (jumpIndex >= flowOrder.length) {\n      if (ein && !disableEIN) {\n        urlMovement.url = getEINEntryPoint();\n      } else {\n        urlMovement.url = getPostPurchaseEntryPoint();\n      }\n    } else {\n      urlMovement.url = `/${URLS.BASE}/${flowOrder[jumpIndex]}`;\n    }\n    return urlMovement;\n  },\n  makeUrlMovement = (movement) => {\n    const { useLocation, url, method } = movement;\n    if (useLocation) {\n      document.location = url;\n    } else {\n      method(url);\n    }\n  },\n  go = (jump, moveUrl) => {\n    const url = document.location.pathname.substring(URLS.BASE.length + 2),\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index;\n\n    const urlMovement = goInFlowOrder(flowOrder, jumpIndex);\n    if (moveUrl) {\n      makeUrlMovement(urlMovement);\n    }\n    return urlMovement;\n  },\n  set = (dispatch, data, actionKey, moveUrl, clickEvent) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    const urlMovement = go(1, false);\n    if (clickEvent) {\n      trackClick(\n        getPageDetails(parseUrl(location.pathname, URLS.BASE)),\n        { nextUrl: urlMovement.url || '', ...clickEvent }\n      );\n    }\n    if (moveUrl) {\n      makeUrlMovement(urlMovement);\n    }\n  },\n  goTo = (dispatch, actionKey, url) => {\n    logger.logAction(actionKey);\n    dispatch({\n      type: actionKey\n    });\n    browserHistory.push(`/${URLS.BASE}/${url}`);\n  },\n  updateSnapshots = () => {\n    _assign(businessData, getReducerSnapshot(businessKey, defaultBusinessData));\n    _assign(businessAddressesData, getReducerSnapshot(businessAddressesKey, defaultBusinessAddressesData));\n    _assign(domainNameData, getReducerSnapshot(domainNameKey, { skip: false }));\n    _assign(officerData, getReducerSnapshot(officerKey, { hasAsstSecretary: false, hasVicePresident: false }));\n    _assign(postpurchaseData, getReducerSnapshot(postpurchaseKey, { purchaseDBAEntity: false, purchaseVBA: false }));\n    _assign(purchaseData, getReducerSnapshot(purchaseKey, { ein: null, domainName: null, planLevel: '' }));\n  };\n\nexport const getEntryPoint = (fromBack) => {\n  updateSnapshots();\n\n  const flow = getFlowOrder(),\n    index = fromBack ? flow.length - 1 : 0;\n\n  return `/${URLS.BASE}/${flow[index]}`;\n};\n\nexport const goBack = (dispatch) => {\n  logger.logAction(ACTIONS.GO_BACK, { location: document.location.pathname.substring(URLS.BASE.length + 2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, true);\n};\n\nexport const goNext = (dispatch) => {\n  logger.logAction(ACTIONS.GO_NEXT, { location: document.location.pathname.substring(URLS.BASE.length + 2) });\n  dispatch({\n    type: ACTIONS.GO_NEXT\n  });\n  go(1, true);\n};\n\nexport const getNextUncompletedPage = (dispatch, location) => {\n  updateSnapshots();\n  const\n    flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index + 1,\n    { ein } = purchaseData;\n\n  if (index >= 0) {\n    if (jumpIndex >= flowOrder.length) {\n      if (ein) {\n        return { isDashboard: false, url: getEINEntryPoint() };\n      }\n      return { isDashboard: false, url: getPostPurchaseEntryPoint() };\n    }\n    return { isDashboard: false, url: `/${URLS.BASE}/${flowOrder[jumpIndex]}` };\n  }\n\n  return { isDashboard: false, url: '' };\n};\n\nexport const goToNextUncompletedPage = (dispatch, location) => {\n  updateSnapshots();\n  const\n    flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index + 1;\n\n  if (index >= 0) {\n    const urlMovement = goInFlowOrder(flowOrder, jumpIndex);\n    makeUrlMovement(urlMovement);\n    return true;\n  }\n  return false;\n};\n\nexport const setAsstSecretary = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ASST_SEC, false);\n};\n\nexport const goToAsstSecretary = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_ASST_SEC, URLS.ASST_SEC);\n};\n\nexport const setBasicEmailAddress = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.EMAIL_ADDRESS, false);\n};\n\nexport const setBusinessAlternates = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_ALT, false);\n};\n\nexport const setBusinessDescription = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_DESC, false);\n};\n\nexport const setBusinessName = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_NAME, false);\n};\n\nexport const setChooseAsstSecretary = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CHOOSE_ASST_SEC, false);\n};\n\nexport const setChoosePresident = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CHOOSE_PRES, false);\n};\n\nexport const setChoosePrimaryContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CHOOSE_PRIM_CONTACT, false);\n};\n\nexport const setChooseSecretary = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CHOOSE_SEC, false);\n};\n\nexport const setChooseTreasurer = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CHOOSE_TRSR, false);\n};\n\nexport const setChooseVicePresident = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CHOOSE_VP, false);\n};\n\nexport const setCorpStock = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_STOCK, false);\n};\n\nexport const setHasMoreThanOneShare = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.HAS_MORE_THAN_ONE_SHARE, false);\n};\n\nexport const setDBAEntities = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.DBA_ENTITIES, false);\n};\n\nexport const setDirectorCount = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.DIR_COUNT, false);\n};\n\nexport const setRegisteredAgent = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.REG_AGENT, false);\n};\n\nexport const setDirectorList = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.DIR_LIST, false);\n};\n\nexport const setDomainNamePrimary = (dispatch, data) => {\n  domainNameData.skip = data.skip || false;\n  set(dispatch, data, ACTIONS.DOMAIN_NAME, false);\n};\n\nexport const setEstimatedFormationDate = (dispatch, data) => {\n  logger.logAction(ACTIONS.EST_DATE, data);\n  dispatch({\n    type: ACTIONS.EST_DATE,\n    payload: {\n      data\n    }\n  });\n};\n\nexport const setHasAsstSecretary = (dispatch, data) => {\n  officerData.hasAsstSecretary = data.hasAsstSecretary;\n  set(dispatch, data, ACTIONS.HAS_ASST_SEC, false);\n};\n\nexport const setHasVicePresident = (dispatch, data) => {\n  officerData.hasVicePresident = data.hasVicePresident;\n  set(dispatch, data, ACTIONS.HAS_VP, false);\n};\n\nexport const setMailingAddress = (dispatch, data) => {\n  businessAddressesData.useMailingAsPrincipal = data.useMailingAsPrincipal;\n  set(dispatch, data, ACTIONS.MAIL_ADDR, false);\n};\n\nexport const setPhysicalAddress = (dispatch, data) => {\n  businessAddressesData.usePhysicalAsMailing = data.usePhysicalAsMailing;\n  businessAddressesData.usePhysicalAsPrincipal = data.usePhysicalAsPrincipal;\n  set(dispatch, data, ACTIONS.PHYS_ADDR, false);\n};\n\nexport const setPresident = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRES, false);\n};\n\nexport const goToPresident = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_PRES, URLS.PRES);\n};\n\nexport const setPrimaryContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIM_CONTACT, false);\n};\n\nexport const goToPrimaryContact = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_PRIM_CONTACT, URLS.PRIM_CONTACT);\n};\n\nexport const setPrincipalAddress = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIN_ADDR, false);\n};\n\nexport const setPurchaseDBACompliance = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PURCHASE_DBA_COMPLIANCE, false);\n};\n\nexport const setPurchaseDBAEntity = (dispatch, data) => {\n  postpurchaseData.purchaseDBAEntity = data.purchaseDBAEntity;\n  set(dispatch, data, ACTIONS.PURCHASE_DBA_ENTITY, false);\n};\n\nexport const setPurchaseVBA = (dispatch, data) => {\n  postpurchaseData.purchaseVBA = data.purchaseVBA;\n  const boolAsStr = parseBoolToString(data.purchaseVBA);\n  set(dispatch, data, ACTIONS.PURCHASE_VBA, false, getButtonClickDetails(boolAsStr, boolAsStr));\n};\n\nexport const setPurchaseVanityProduct = (dispatch, data) => {\n  postpurchaseData.purchaseVanityProduct = data.purchaseVanityProduct;\n  set(dispatch, data, VP_ACTIONS.VANITY_PRODUCT_OFFER, false);\n};\n\nexport const setSecretary = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.SEC, false);\n};\n\nexport const goToSecretary = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_SEC, URLS.SEC);\n};\n\nexport const setShare = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.SHARE, true);\n  logger.logAction(REGISTRATION_ACTIONS.PURCHASE_SUCCESS, data);\n  dispatch({\n    type: REGISTRATION_ACTIONS.PURCHASE_SUCCESS,\n    payload: {\n      data\n    }\n  });\n};\n\nexport const setStartComplete = (dispatch, data) => {\n  updateSnapshots();\n  set(dispatch, data, ACTIONS.START_COMP, data.forward);\n};\n\nexport const setTreasurer = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.TRSR, false);\n};\n\nexport const goToTreasurer = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_TRSR, URLS.TRSR);\n};\n\nexport const setVicePresident = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.VP, false);\n};\n\nexport const goToVicePresident = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_VP, URLS.VP);\n};\n\nexport const setAuthorizedSignatory = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.AUTH_SIG, false);\n};\n\nexport const updateContacts = (dispatch, data) => {\n  const { contactType } = data;\n  const type = {\n    member: 'UPDATE_MBR',\n    manager: 'UPDATE_MGR',\n    director: 'UPDATE_DIR',\n    officer: 'UPDATE_OFC'\n  };\n  const action = type[contactType || ''];\n  if (action) set(dispatch, data, ACTIONS[action], false);\n};\n\nexport const updateOrder = (dispatch, reducerData, filingFees, expediteFees, advance) => {\n  logger.logAction(ACTIONS.UPDATE_ORDER, { advance });\n  dispatch({\n    type: ACTIONS.UPDATE_ORDER\n  });\n  registrationService.updateCorp(reducerData, filingFees, expediteFees).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.UPDATE_ORDER_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.UPDATE_ORDER_COMPLETE,\n      payload: {\n        data,\n        reducerData\n      }\n    });\n    if (advance) {\n      go(1, true);\n    }\n  }).catch((err) => {\n    logger.error(ACTIONS.UPDATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.UPDATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  getNextUncompletedPage,\n  goToNextUncompletedPage,\n  goToAsstSecretary,\n  goToPresident,\n  goToPrimaryContact,\n  goToSecretary,\n  goToTreasurer,\n  goToVicePresident,\n  setAsstSecretary,\n  setBasicEmailAddress,\n  setBusinessAlternates,\n  setBusinessDescription,\n  setBusinessName,\n  setChooseAsstSecretary,\n  setChoosePresident,\n  setChoosePrimaryContact,\n  setChooseSecretary,\n  setChooseTreasurer,\n  setChooseVicePresident,\n  setCorpStock,\n  setHasMoreThanOneShare,\n  setDBAEntities,\n  setDirectorCount,\n  setDirectorList,\n  setDomainNamePrimary,\n  setHasAsstSecretary,\n  setHasVicePresident,\n  setMailingAddress,\n  setPhysicalAddress,\n  setPresident,\n  setPrimaryContact,\n  setPrincipalAddress,\n  setPurchaseDBACompliance,\n  setPurchaseDBAEntity,\n  setPurchaseVBA,\n  setSecretary,\n  setShare,\n  setStartComplete,\n  setTreasurer,\n  setVicePresident,\n  setEstimatedFormationDate,\n  setAuthorizedSignatory,\n  updateContacts,\n  updateOrder\n};\n","import { URLS } from '../../../constants/register_nypub';\nimport { isLoggedIn } from '../../../utils/AuthService';\n\nconst\n  getNewCustomerFlowOrder = (url) => {\n    if (url === URLS.LOGIN_POST) {\n      return [URLS.LOGIN_POST];\n    }\n    const items = [ URLS.ACCOWN_NAME, URLS.ACCOWN_CONTACT, URLS.DOM_JUR, URLS.HAS_FORMATION_NY_PUB, URLS.PUB_COUNTY, URLS.BUS_NAME, URLS.DATA_CONFIRM, URLS.PAYMENT, URLS.LOGIN_POST ];\n    return items;\n  },\n  getNewCompanyFlowOrder = (url, registration) => {\n    const { business } = registration,\n      { hasCompanies } = business;\n\n    const items = [];\n    if (hasCompanies || url === URLS.BUS_ID) {\n      items.push(URLS.BUS_ID);\n    }\n    items.push(URLS.DOM_JUR, URLS.PUB_COUNTY, URLS.BUS_NAME, URLS.DATA_CONFIRM, URLS.PAYMENT);\n\n    return items;\n  },\n  getExistingCompanyFlowOrder = () => {\n    return [URLS.BUS_ID, URLS.PAYMENT];\n  },\n  getFlowOrder = (url, registration) => {\n    const { business, page } = registration;\n    const { id } = business;\n    const { fromDashboard } = page;\n    const loggedIn = isLoggedIn();\n\n    if (!loggedIn) {\n      return getNewCustomerFlowOrder(url, registration);\n    }\n    if (fromDashboard) {\n      if (id) {\n        return [URLS.START, ...getExistingCompanyFlowOrder(url, registration)];\n      }\n      return [URLS.START, ...getNewCompanyFlowOrder(url, registration)];\n    }\n    if (id) {\n      return getExistingCompanyFlowOrder(url, registration);\n    }\n    return getNewCompanyFlowOrder(url, registration);\n  };\n\nexport default {\n  getNewCustomerFlowOrder,\n  getExistingCompanyFlowOrder,\n  getNewCompanyFlowOrder,\n  getFlowOrder\n};\n","import { getRegisterNYPubFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterNYPubFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { getStateFees as getInitStateFees, setAppEntryPoint } from '../initialization';\nimport { ACTIONS, URLS } from '../../constants/register_nypub';\nimport { URLS as COMP_NYPUB_URLS } from '../../constants/complete_nypub';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport logger from '../../utils/ClientLogger';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport { storageKey as pageKey } from '../../reducers/registration/page';\nimport { accountService, registrationService } from '../../services';\nimport { getAppEntryPoint } from '../../utils/AppEntryPoint';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { OrderTypes } from '../../utils/OrderUtils';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\nimport { isLoggedIn } from '../../utils/AuthService';\n\nconst\n  defaultBusinessData = { id: '', businessOrderType: '', domesticJurisdiction: '' },\n  businessData = _assign(getReducerSnapshot(businessKey, defaultBusinessData, { hasCompanies: true })),\n  defaultPageData = { fromDashboard: false },\n  pageData = getReducerSnapshot(pageKey, defaultPageData);\n\n// This is a reduced flow for analyzing the data confirmation.\n\nconst getFlowOrder = (url) => {\n  const registration = {\n    business: businessData,\n    page: pageData\n  };\n\n  return getFlow(url, registration);\n};\n\nconst go = (jump, dispatch, doReplace) => {\n  const url = document.location.pathname.substring(URLS.BASE.length + 2),\n    { id, businessOrderType } = businessData,\n    flowOrder = getFlowOrder(url),\n    index = _indexOf(flowOrder, url),\n    jumpIndex = index >= 0 ? index + jump : index,\n    method = doReplace ? browserHistory.replace : browserHistory.push;\n\n  if (jumpIndex < 0) {\n    document.location = getAppEntryPoint();\n  } else if (jumpIndex >= flowOrder.length) {\n    if (id) {\n      if (businessOrderType === OrderTypes.LLC || businessOrderType === OrderTypes.CORP || businessOrderType === OrderTypes.NY_PUBLICATION) {\n        browserHistory.push(`/${COMP_NYPUB_URLS.BASE}/${COMP_NYPUB_URLS.SHARE}`);\n        return;\n      }\n    }\n    browserHistory.push(`/${COMP_NYPUB_URLS.BASE}/${COMP_NYPUB_URLS.START}`);\n  } else {\n    method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n  }\n};\n\nconst set = (dispatch, data, actionKey, moveUrl, doReplace) => {\n  logger.logAction(actionKey, data);\n  dispatch({\n    type: actionKey,\n    payload: {\n      data\n    }\n  });\n  if (moveUrl) {\n    go(1, dispatch, doReplace);\n  }\n};\n\nconst doReset = () => {\n  _assign(businessData, defaultBusinessData);\n  _assign(pageData, defaultPageData);\n};\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  logger.logAction(ACTIONS.GO_BACK, { location: document.location.pathname.substring(URLS.BASE.length + 2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n  _assign(businessData, getReducerSnapshot(businessKey, { id: '', type: 'LLCX', businessOrderType: '' }));\n};\n\nexport const goToNextUncompletedPage = (dispatch, location) => {\n  const\n    flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index + 1;\n\n  if (index >= 0) {\n    if (jumpIndex >= flowOrder.length) {\n      browserHistory.push(`/${COMP_NYPUB_URLS.BASE}/${COMP_NYPUB_URLS.START}`);\n    } else {\n      browserHistory.push(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n    return true;\n  }\n\n  return false;\n};\n\nexport const setAccountOwnerContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOWN_CONTACT, true);\n};\n\nexport const setAccountOwnerModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOWN_MODAL, false);\n};\n\nexport const setAccountOwnerName = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOWN_NAME, true);\n};\n\nexport const setBusinessId = (dispatch, data) => {\n  const { business } = data,\n    { domesticJurisdiction, hasCompanies } = business || data;\n\n  businessData.businessOrderType = data.businessOrderType;\n  businessData.id = data.id;\n  businessData.domesticJurisdiction = domesticJurisdiction;\n\n  set(dispatch, data, ACTIONS.BUS_ID, true, !hasCompanies);\n  businessData.hasCompanies = hasCompanies;\n};\n\nexport const setBusinessModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_MODAL, false);\n};\n\nexport const setBusinessName = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_NAME, true);\n};\n\nexport const setDataConfirmation = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.DATA_CONFIRM, true);\n};\n\nexport const setDomesticJurisdiction = (dispatch, data) => {\n  businessData.domesticJurisdiction = data.domesticJurisdiction;\n  set(dispatch, data, ACTIONS.DOM_JUR, true);\n};\n\nexport const setHasFormationNYPub = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.HAS_FORMATION_NY_PUB, true);\n};\n\nexport const setInit = (dispatch, data) => {\n  const\n    { fromDashboard = false } = data;\n\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  businessData.id = data.id;\n  pageData.fromDashboard = fromDashboard;\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(getEntryPoint());\n};\n\nexport const setLogin = (dispatch) => {\n  set(dispatch, { flow: 'ny' }, ACTIONS.LOGIN, false);\n};\n\nexport const setLoginPostPurchase = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LOGIN_POST, false);\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setPubCounty = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PUB_COUNTY, true);\n};\n\nexport const setPubState = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PUB_STATE, false);\n};\n\nexport const setPubCountyModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PUB_COUNTY_MODAL, false);\n};\n\nexport const setPubCountyPF = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PUB_COUNTY, false);\n};\n\nexport const setStart = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nexport const setBackFromCompleteBusiness = () => {\n  browserHistory.push(getEntryPoint());\n};\n\nexport const orderAlreadyCreated = (dispatch) => {\n  go(1, dispatch);\n};\n\nconst createNYPubOrder = (dispatch, reducerData, filingFees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n  registrationService.createNyPubLLC(reducerData, filingFees).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      payload: {\n        data,\n        reducerData\n      }\n    });\n\n    trackEvent('Purchase', 'complete', 'NY Publication');\n    go(1, dispatch);\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, filingFees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  // eslint-disable-next-line camelcase\n  const { customer: { cardToken, expMonth, expYear, cvc, brand, last4 } } = reducerData;\n  if (!isLoggedIn() || !cardToken) {\n    createNYPubOrder(dispatch, reducerData, filingFees);\n  } else {\n    const paymentData = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(paymentData).then((response) => {\n      const mergedData = _assign({}, response.data, paymentData);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createNYPubOrder(dispatch, reducerData, filingFees);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const createLead = (dispatch, lead) => {\n  logger.logAction(ACTIONS.CREATE_LEAD);\n  dispatch({\n    type: ACTIONS.CREATE_LEAD\n  });\n  registrationService.createLead(lead).then((response) => {\n    logger.logAction(ACTIONS.CREATE_LEAD_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.CREATE_LEAD_COMPLETE,\n      payload: {\n        data: response\n      }\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_LEAD_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_LEAD_COMPLETE,\n      error: true,\n      payload: {\n        data: err\n      }\n    });\n  });\n};\n\nexport const getStateFees = (dispatch, data, filingFees) => {\n  if (!filingFees[data.domesticJurisdiction] || !filingFees[data.domesticJurisdiction].ny_publication) {\n    getInitStateFees(dispatch, data.domesticJurisdiction);\n  }\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  goToNextUncompletedPage,\n  orderAlreadyCreated,\n  setAccountOwnerContact,\n  setAccountOwnerModal,\n  setAccountOwnerName,\n  setBusinessId,\n  setBusinessModal,\n  setBusinessName,\n  setDataConfirmation,\n  setDomesticJurisdiction,\n  setHasFormationNYPub,\n  setInit,\n  setLogin,\n  setLoginPostPurchase,\n  setPayment,\n  setPubCounty,\n  setPubState,\n  setPubCountyModal,\n  setStart,\n  setBackFromCompleteBusiness,\n  createOrder,\n  createLead,\n  getStateFees,\n  resetAllData\n};\n","import { URLS } from '../../../constants/register_wfg';\nimport { isLoggedIn } from '../../../utils/AuthService';\n\nconst\n  getNewCustomerFlowOrder = (url) => {\n    if (url === URLS.LOGIN_POST) {\n      return [ URLS.LOGIN_POST ];\n    }\n    return [ URLS.ACCOWN_NAME, URLS.ACCOWN_CONTACT, URLS.DOM_JUR, URLS.BUS_TYPE, URLS.BUS_NAME, URLS.DATA_CONFIRM, URLS.PAYMENT, URLS.LOGIN_POST ];\n  },\n  getNewCompanyFlowOrder = (url, registration) => {\n    const { business } = registration,\n      { hasCompanies } = business;\n\n    if (!hasCompanies) {\n      return [ URLS.DOM_JUR, URLS.BUS_TYPE, URLS.BUS_NAME, URLS.PAYMENT ];\n    }\n    return [ URLS.BUS_ID, URLS.DOM_JUR, URLS.BUS_TYPE, URLS.BUS_NAME, URLS.DATA_CONFIRM, URLS.PAYMENT ];\n  },\n  getExistingCompanyFlowOrder = () => {\n    return [ URLS.BUS_ID, URLS.PAYMENT ];\n  },\n  getFlowOrder = (url, registration) => {\n    const\n      { business, page } = registration,\n      { id } = business,\n      { fromDashboard } = page,\n      loggedIn = isLoggedIn();\n\n    if (!loggedIn) {\n      return getNewCustomerFlowOrder(url, registration);\n    }\n    if (fromDashboard) {\n      if (id) {\n        return [ URLS.START, ...getExistingCompanyFlowOrder(url, registration) ];\n      }\n      return [ URLS.START, ...getNewCompanyFlowOrder(url, registration) ];\n    }\n    if (id) {\n      return getExistingCompanyFlowOrder(url, registration);\n    }\n    return getNewCompanyFlowOrder(url, registration);\n  };\n\nexport default {\n  getNewCustomerFlowOrder,\n  getExistingCompanyFlowOrder,\n  getNewCompanyFlowOrder,\n  getFlowOrder\n};\n","import { getRegisterWFGFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterWFGFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { getStateFees as getInitStateFees, setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMP_WFG_URLS } from '../../constants/complete_wfg';\nimport { ACTIONS, URLS } from '../../constants/register_wfg';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, registrationService } from '../../services';\nimport { getAppEntryPoint } from '../../utils/AppEntryPoint';\nimport { isLoggedIn } from '../../utils/AuthService';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport { storageKey as pageKey } from '../../reducers/registration/page';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { OrderTypes } from '../../utils/OrderUtils';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\n\nconst\n  defaultBusinessData = { id: '', domesticJurisdiction: '', name: '', type: 'LLCX', businessOrderType: '', hasCompanies: true },\n  businessData = getReducerSnapshot(businessKey, defaultBusinessData),\n  defaultPageData = { fromDashboard: false },\n  pageData = getReducerSnapshot(pageKey, defaultPageData),\n  getFlowOrder = (url) => {\n    const registration = { business: businessData, page: pageData };\n\n    return getFlow(url, registration);\n  },\n  go = (jump, dispatch, doReplace) => {\n    const url = document.location.pathname.substring(URLS.BASE.length + 2),\n      { id, businessOrderType } = businessData,\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      document.location = getAppEntryPoint();\n    } else if (jumpIndex >= flowOrder.length) {\n      if (id) {\n        if (businessOrderType === OrderTypes.LLC || businessOrderType === OrderTypes.CORP || businessOrderType === OrderTypes.NY_PUBLICATION) {\n          browserHistory.push(`/${COMP_WFG_URLS.BASE}/${COMP_WFG_URLS.SHARE}`);\n          return;\n        }\n      }\n      browserHistory.push(`/${COMP_WFG_URLS.BASE}/${COMP_WFG_URLS.START}`);\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl, doReplace) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch, doReplace);\n    }\n  },\n  doReset = () => {\n    _assign(businessData, defaultBusinessData);\n    _assign(pageData, defaultPageData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  logger.logAction(ACTIONS.GO_BACK, { location: document.location.pathname.substring(URLS.BASE.length + 2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n  _assign(businessData, getReducerSnapshot(businessKey, { id: '', type: 'LLCX', businessOrderType: '' }));\n};\n\nexport const goToNextUncompletedPage = (dispatch, location, forceBusinessId) => {\n  if (forceBusinessId === 'wfg') {\n    browserHistory.push(`/${URLS.BASE}/${URLS.BUS_ID}`);\n    return true;\n  }\n\n  const\n    flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index + 1;\n\n  if (index >= 0) {\n    if (jumpIndex >= flowOrder.length) {\n      browserHistory.push(`/${COMP_WFG_URLS.BASE}/${COMP_WFG_URLS.START}`);\n    } else {\n      browserHistory.push(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n    return true;\n  }\n\n  return false;\n};\n\nexport const setAccountOwnerContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOWN_CONTACT, true);\n};\n\nexport const setAccountOwnerModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOWN_MODAL, false);\n};\n\nexport const setAccountOwnerName = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOWN_NAME, true);\n};\n\nexport const setBusinessId = (dispatch, data) => {\n  const { business } = data,\n    { domesticJurisdiction, name, type, hasCompanies } = business || data;\n\n  businessData.businessOrderType = data.businessOrderType;\n  businessData.id = data.id;\n  businessData.domesticJurisdiction = domesticJurisdiction;\n  businessData.name = name;\n  businessData.type = type;\n\n  set(dispatch, data, ACTIONS.BUS_ID, true, !hasCompanies);\n  businessData.hasCompanies = hasCompanies;\n\n};\n\nexport const setBusinessModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_MODAL, false);\n};\n\nexport const setBusinessName = (dispatch, data) => {\n  businessData.name = data.name;\n  set(dispatch, data, ACTIONS.BUS_NAME, true);\n};\n\nexport const setBusinessType = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_TYPE, true);\n};\n\nexport const setDataConfirmation = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.DATA_CONFIRM, true);\n};\n\nexport const setDomesticJurisdiction = (dispatch, data) => {\n  businessData.domesticJurisdiction = data.domesticJurisdiction;\n  set(dispatch, data, ACTIONS.DOM_JUR, true);\n};\n\nexport const setInit = (dispatch, data) => {\n  const\n    fullData = _assign({}, data || {}, { worryFree: true }),\n    { fromDashboard = false } = data;\n\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  pageData.fromDashboard = fromDashboard;\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  set(dispatch, fullData, ACTIONS.INIT, false);\n  browserHistory.replace(getEntryPoint());\n};\n\nexport const setLogin = (dispatch) => {\n  set(dispatch, { flow: 'wfg' }, ACTIONS.LOGIN, false);\n};\n\nexport const setLoginPostPurchase = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LOGIN_POST, false);\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setStart = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nconst createWFGOrder = (dispatch, reducerData, fees) => {\n  const serviceMethod = 'createWFG';\n\n  registrationService[serviceMethod](reducerData, fees).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      payload: {\n        data,\n        reducerData\n      }\n    });\n\n    trackEvent('Purchase', 'complete', 'Worry-Free Compliance');\n    go(1, dispatch);\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, filingFees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { customer } = reducerData,\n    { cardToken, expMonth, expYear, cvc, brand, last4 } = customer;\n\n  if (!isLoggedIn() || !cardToken) {\n    createWFGOrder(dispatch, reducerData, filingFees);\n  } else {\n    const data = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createWFGOrder(dispatch, reducerData, filingFees);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const createLead = (dispatch, lead) => {\n  logger.logAction(ACTIONS.CREATE_LEAD);\n  dispatch({\n    type: ACTIONS.CREATE_LEAD\n  });\n  registrationService.createLead(lead).then((response) => {\n    logger.logAction(ACTIONS.CREATE_LEAD_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.CREATE_LEAD_COMPLETE,\n      payload: {\n        data: response\n      }\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_LEAD_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_LEAD_COMPLETE,\n      error: true,\n      payload: {\n        data: err\n      }\n    });\n  });\n};\n\nexport const getStateFees = (dispatch, data, filingFees) => {\n  if (!filingFees[data.domesticJurisdiction] || !filingFees[data.domesticJurisdiction].worry_free_service) {\n    getInitStateFees(dispatch, data.domesticJurisdiction);\n  }\n};\n\nexport const setBackFromCompleteBusiness = () => {\n  browserHistory.push(getEntryPoint());\n};\n\nexport const orderAlreadyCreated = (dispatch) => {\n  go(1, dispatch);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  goToNextUncompletedPage,\n  orderAlreadyCreated,\n  setAccountOwnerContact,\n  setAccountOwnerModal,\n  setAccountOwnerName,\n  setBusinessId,\n  setBusinessModal,\n  setBusinessName,\n  setBusinessType,\n  setDataConfirmation,\n  setDomesticJurisdiction,\n  setInit,\n  setLogin,\n  setLoginPostPurchase,\n  setPayment,\n  setStart,\n  setBackFromCompleteBusiness,\n  createOrder,\n  createLead,\n  getStateFees,\n  resetAllData\n};\n","import _assign from 'lodash/assign';\nimport _compact from 'lodash/compact';\nimport { URLS } from '../../../constants/complete_llc';\nimport { DBA_IGNORE_STATES } from '../../../constants/ui';\nimport {\n  isDBAEntityEnabled,\n  isDBAComplianceEnabled,\n  isCaDivLaborEnabled\n} from '../../../utils/ProductService';\nimport { isVmaJurisdiction } from '../../../utils/VmaUtils';\n\nconst DBA_IGNORE_STATES_WITH_DELAWARE = _assign({ AZ: true, CA: true, CT: true, DE: true, FL: true, NE: true, NY: true, PA: true, WY: true }, DBA_IGNORE_STATES);\n\nconst\n  getAddressFlow = (url, registration) => {\n    const { business, businessAddresses, purchase } = registration;\n    const flowItems = [];\n\n    if (!purchase.planLevel) {\n      return flowItems;\n    }\n\n    flowItems.push(URLS.PHYS_ADDR);\n\n    if (!businessAddresses.usePhysicalAsMailing || url === URLS.MAIL_ADDR) {\n      flowItems.push(URLS.MAIL_ADDR);\n    }\n\n    if (isVmaJurisdiction(business.requestedJurisdiction)) {\n      flowItems.push(URLS.PURCHASE_VBA);\n    }\n\n    return flowItems;\n  },\n\n  getDBAEntityFlow = (url, registration) => {\n    const { purchaseDBAEntity } = registration.postpurchase,\n      { requestedJurisdiction } = registration.business;\n\n    if (DBA_IGNORE_STATES_WITH_DELAWARE[requestedJurisdiction]) {\n      if (url === URLS.PURCHASE_DBA_ENTITY) {\n        return [ URLS.PURCHASE_DBA_ENTITY ];\n      }\n      if (url === URLS.DBA_ENTITIES) {\n        return [ URLS.DBA_ENTITIES ];\n      }\n      if (url === URLS.PURCHASE_DBA_COMPLIANCE) {\n        return [ URLS.PURCHASE_DBA_COMPLIANCE ];\n      }\n      return [];\n    }\n\n    if (isDBAEntityEnabled()) {\n      if (purchaseDBAEntity) {\n        if (isDBAComplianceEnabled()) {\n          return [ URLS.PURCHASE_DBA_ENTITY, URLS.DBA_ENTITIES, URLS.PURCHASE_DBA_COMPLIANCE ];\n        }\n        return [ URLS.PURCHASE_DBA_ENTITY, URLS.DBA_ENTITIES ];\n      }\n      return [ URLS.PURCHASE_DBA_ENTITY ];\n    }\n    return [];\n  },\n\n  getRegisteredAgentFlow = (registration) => {\n    const { registeredAgentService } = registration.purchase;\n\n    if (!registeredAgentService) {\n      return [URLS.REGISTERED_AGENT];\n    }\n\n    return [];\n  },\n\n  getFlowOrder = (url, registration, ldFlags) => {\n    const\n      { manager, domainName: domainNameData, purchase, business } = registration,\n      { isDAO, daoMemberManaged, domesticJurisdiction } = business,\n      // if we are looking at a DAO that is not member managed (smart contract managed)\n      // then don't show member manged options\n      showMemberOptions = !(isDAO && !daoMemberManaged),\n      flowItems = _compact([\n        URLS.START_COMP,\n        !isDAO && URLS.BUS_NAME,   // skipping indicator and alternative business names for DAOs\n        ...getDBAEntityFlow(url, registration),\n        URLS.BUS_DESC,\n        ...getAddressFlow(url, registration),\n        ...getRegisteredAgentFlow(registration),\n        showMemberOptions && URLS.MBR_COUNT,\n        showMemberOptions && URLS.MBR_LIST\n      ]),\n      { managerType } = manager,\n      { skip } = domainNameData,\n      { domainName, basicEmail } = purchase;\n\n    if (showMemberOptions) {\n      flowItems.push(URLS.MGR_OPT);\n      if (managerType === 'SomeOwners' || managerType === 'SomeManagers') {\n        flowItems.push(URLS.BUS_RUN);\n      }\n      if (managerType === 'SomeManagers' || managerType === 'AllManagers') {\n        flowItems.push(URLS.MGR_COUNT);\n        flowItems.push(URLS.MGR_LIST);\n      }\n    }\n\n    // CA LLC Formation Flow DoL question\n    if (domesticJurisdiction === 'CA' && isCaDivLaborEnabled(ldFlags)) {\n      flowItems.push(URLS.CA_DOL);\n    }\n\n    flowItems.push(URLS.CHOOSE_PRIM_CONTACT);\n    if (url === URLS.PRIM_CONTACT) { // PRIM_CONTACT is a direct-to-page link and is only in the flow if you go there directly\n      flowItems.push(URLS.PRIM_CONTACT);\n    }\n\n    flowItems.push(URLS.AUTH_SIG);\n\n    if (domainName) {\n      flowItems.push(URLS.DOMAIN_NAME);\n      if (basicEmail && !skip) {\n        flowItems.push(URLS.EMAIL_ADDRESS);\n      }\n    }\n    return flowItems;\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getCompleteLLCFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration, ldFlags) => {\n    return (flowTestMap[getCompleteLLCFlowId()] || DefaultFlows).getFlowOrder(url, registration, ldFlags);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { getEntryPoint as getEINEntryPoint } from '../complete_ein';\nimport { getEntryPoint as getPostPurchaseEntryPoint } from '../purchase_post_addons';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { ACTIONS, URLS, getPageDetails } from '../../constants/complete_llc';\nimport { ACTIONS as VP_ACTIONS } from '../../constants/vanity_products';\nimport logger from '../../utils/ClientLogger';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport { storageKey as businessAddressesKey } from '../../reducers/registration/businessAddresses';\nimport { storageKey as domainNameKey } from '../../reducers/registration/domainName';\nimport { storageKey as managerKey } from '../../reducers/registration/managers';\nimport { storageKey as postpurchaseKey } from '../../reducers/registration/postpurchase';\nimport { storageKey as purchaseKey } from '../../reducers/registration/purchase';\nimport { registrationService } from '../../services';\nimport { parseBoolToString } from '../../utils/DataCleaningUtils';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { getButtonClickDetails, trackClick } from '../../utils/ThirdPartyTracking';\nimport { parseUrl } from '../../utils/UrlUtils';\nimport featureFlags from '../../featureFlags';\n\nconst\n  defaultBusinessData = { requestedJurisdiction: '' },\n  businessData = getReducerSnapshot(businessKey, defaultBusinessData),\n  defaultBusinessAddressesData = { usePhysicalAsPrincipal: false, usePhysicalAsMailing: false, useMailingAsPrincipal: false },\n  businessAddressesData = getReducerSnapshot(businessAddressesKey, defaultBusinessAddressesData),\n  domainNameData = getReducerSnapshot(domainNameKey, { skip: false }),\n  managerData = getReducerSnapshot(managerKey, { managerType: '' }),\n  postpurchaseData = getReducerSnapshot(postpurchaseKey, { purchaseDBAEntity: false, purchaseVBA: false }),\n  purchaseData = getReducerSnapshot(purchaseKey, { ein: null, domainName: null, basicEmail: null, planLevel: '' }),\n\n  getFlowOrder = (url, ldFlags) => {\n    const\n      registration = {\n        business: businessData,\n        businessAddresses: businessAddressesData,\n        domainName: domainNameData,\n        manager: managerData,\n        postpurchase: postpurchaseData,\n        purchase: purchaseData\n      },\n      flow = getFlow(url, registration, ldFlags);\n\n    return flow;\n  },\n  goInFlowOrder = (flowOrder, jumpIndex) => {\n    const\n      { ein } = purchaseData;\n    const urlMovement = {\n      method: browserHistory.push\n    };\n\n    const { disableEIN } = featureFlags.features;\n\n    if (jumpIndex < 0) {\n      urlMovement.url = `/${URLS.BASE}/${flowOrder[0]}`;\n    } else if (jumpIndex >= flowOrder.length) {\n      if (ein && !disableEIN) {\n        urlMovement.url = getEINEntryPoint();\n      } else {\n        urlMovement.url = getPostPurchaseEntryPoint();\n      }\n    } else {\n      urlMovement.url = `/${URLS.BASE}/${flowOrder[jumpIndex]}`;\n    }\n    return urlMovement;\n  },\n  makeUrlMovement = (movement) => {\n    const {  url, method } = movement;\n    method(url);\n  },\n  go = (jump, executeUrlMovement, ldFlags) => {\n    const url = document.location.pathname.substring(URLS.BASE.length + 2),\n      flowOrder = getFlowOrder(url, ldFlags),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index;\n\n    const urlMovement = goInFlowOrder(flowOrder, jumpIndex);\n    if (executeUrlMovement) {\n      makeUrlMovement(urlMovement);\n    }\n    return urlMovement;\n  },\n  set = (dispatch, data, actionKey, moveUrl, clickEvent) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    const urlMovement = go(1, false);\n    if (clickEvent) {\n      trackClick(\n        getPageDetails(parseUrl(location.pathname, URLS.BASE)),\n        { nextUrl: urlMovement.url || '', ...clickEvent }\n      );\n    }\n    if (moveUrl) {\n      makeUrlMovement(urlMovement);\n    }\n  },\n  goTo = (dispatch, actionKey, url) => {\n    logger.logAction(actionKey);\n    dispatch({\n      type: actionKey\n    });\n    browserHistory.push(`/${URLS.BASE}/${url}`);\n  },\n  updateSnapshots = () => {\n    _assign(businessData, getReducerSnapshot(businessKey, defaultBusinessData));\n    _assign(businessAddressesData, getReducerSnapshot(businessAddressesKey, defaultBusinessAddressesData));\n    _assign(domainNameData, getReducerSnapshot(domainNameKey, { skip: false }));\n    _assign(managerData, getReducerSnapshot(managerKey, { managerType: '' }));\n    _assign(postpurchaseData, getReducerSnapshot(postpurchaseKey, { purchaseDBAEntity: false, purchaseVBA: false }));\n    _assign(purchaseData, getReducerSnapshot(purchaseKey, { ein: null, domainName: null, basicEmail: null, planLevel: '' }));\n  };\n\nexport const getEntryPoint = (fromBack) => {\n  updateSnapshots();\n\n  const flow = getFlowOrder(),\n    index = fromBack ? flow.length - 1 : 0;\n\n  return `/${URLS.BASE}/${flow[index]}`;\n};\n\nexport const goBack = (dispatch, ldFlags) => {\n  logger.logAction(ACTIONS.GO_BACK, { location: document.location.pathname.substring(URLS.BASE.length + 2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, true, ldFlags);\n};\n\nexport const goNext = (dispatch, ldFlags) => {\n  logger.logAction(ACTIONS.GO_NEXT, { location: document.location.pathname.substring(URLS.BASE.length + 2) });\n  dispatch({\n    type: ACTIONS.GO_NEXT\n  });\n  go(1, true, ldFlags);\n};\n\nexport const getNextUncompletedPage = (dispatch, location) => {\n  updateSnapshots();\n  const\n    flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index + 1,\n    { ein } = purchaseData;\n\n  if (index >= 0) {\n    if (jumpIndex >= flowOrder.length) {\n      if (ein) {\n        return { isDashboard: false, url: getEINEntryPoint() };\n      }\n      return { isDashboard: false, url: getPostPurchaseEntryPoint() };\n    }\n    return { isDashboard: false, url: `/${URLS.BASE}/${flowOrder[jumpIndex]}` };\n  }\n\n  return { isDashboard: false, url: '' };\n};\n\nexport const goToNextUncompletedPage = (dispatch, location) => {\n  updateSnapshots();\n  const\n    flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index + 1;\n\n  if (index >= 0) {\n    const urlMovement = goInFlowOrder(flowOrder, jumpIndex);\n    makeUrlMovement(urlMovement);\n    return true;\n  }\n  return false;\n};\n\nexport const setBasicEmailAddress = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.EMAIL_ADDRESS, false);\n};\n\nexport const setBusinessAlternates = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_ALT, false);\n};\n\nexport const setBusinessDescription = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_DESC, false);\n};\n\nexport const setBusinessName = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_NAME, false);\n};\n\nexport const setBusinessRunners = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.SET_BUS_RUN, false);\n};\n\nexport const setChoosePrimaryContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CHOOSE_PRIM_CONTACT, false);\n};\n\nexport const setDBAEntities = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.DBA_ENTITIES, false);\n};\n\nexport const setDomainNamePrimary = (dispatch, data) => {\n  domainNameData.skip = data.skip || false;\n  set(dispatch, data, ACTIONS.DOMAIN_NAME, false);\n};\n\nexport const setManagerCount = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.MGR_COUNT, false);\n};\n\nexport const setManagerList = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.SET_MGR_LIST, false);\n};\n\nexport const setMailingAddress = (dispatch, data) => {\n  businessAddressesData.useMailingAsPrincipal = data.useMailingAsPrincipal;\n  set(dispatch, data, ACTIONS.MAIL_ADDR, false);\n};\n\nexport const setManagerOption = (dispatch, data) => {\n  managerData.managerType = data.managerType;\n  set(dispatch, data, ACTIONS.SET_MGR_OPT, false);\n};\n\nexport const setMemberList = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.SET_MBR_LIST, false);\n};\n\nexport const setMemberCount = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.MBR_COUNT, false);\n};\n\nexport const setRegisteredAgent = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.SET_REG_AGENT, false);\n};\n\nexport const setPhysicalAddress = (dispatch, data) => {\n  businessAddressesData.usePhysicalAsMailing = data.usePhysicalAsMailing;\n  businessAddressesData.usePhysicalAsPrincipal = data.usePhysicalAsPrincipal;\n  set(dispatch, data, ACTIONS.PHYS_ADDR, false);\n};\n\nexport const setPrimaryContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIM_CONTACT, false);\n};\n\nexport const goToPrimaryContact = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_PRIM_CONTACT, URLS.PRIM_CONTACT);\n};\n\nexport const goToChoosePrimaryContact = (dispatch) => {\n  goTo(dispatch, ACTIONS.CHOOSE_PRIM_CONTACT, URLS.CHOOSE_PRIM_CONTACT);\n};\n\nexport const goToMemberCount = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_MBR_COUNT, URLS.MBR_COUNT);\n};\n\nexport const goToManagerSelect = (dispatch, action, page) => {\n  goTo(dispatch, ACTIONS[action], URLS[page]);\n};\n\nexport const setPrincipalAddress = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIN_ADDR, false);\n};\n\nexport const setPurchaseDBACompliance = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PURCHASE_DBA_COMPLIANCE, false);\n};\n\nexport const setPurchaseDBAEntity = (dispatch, data) => {\n  postpurchaseData.purchaseDBAEntity = data.purchaseDBAEntity;\n  set(dispatch, data, ACTIONS.PURCHASE_DBA_ENTITY, false);\n};\n\nexport const setPurchaseVBA = (dispatch, data) => {\n  postpurchaseData.purchaseVBA = data.purchaseVBA;\n  const boolAsStr = parseBoolToString(data.purchaseVBA);\n  set(dispatch, data, ACTIONS.PURCHASE_VBA, false, getButtonClickDetails(boolAsStr, boolAsStr));\n};\n\nexport const setPurchaseVanityProduct = (dispatch, data) => {\n  postpurchaseData.purchaseVanityProduct = data.purchaseVanityProduct;\n  set(dispatch, data, VP_ACTIONS.VANITY_PRODUCT_OFFER, false);\n};\n\nexport const setShareNewLLC = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.SHARE, true);\n  logger.logAction(REGISTRATION_ACTIONS.PURCHASE_SUCCESS, data);\n  dispatch({\n    type: REGISTRATION_ACTIONS.PURCHASE_SUCCESS,\n    payload: {\n      data\n    }\n  });\n};\n\nexport const setStartComplete = (dispatch, data) => {\n  updateSnapshots();\n  set(dispatch, data, ACTIONS.START_COMP, data.forward);\n};\n\nexport const setAuthorizedSignatory = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.AUTH_SIG, false);\n};\n\nexport const setEstimatedFormationDate = (dispatch, data) => {\n  logger.logAction(ACTIONS.EST_DATE, data);\n  dispatch({\n    type: ACTIONS.EST_DATE,\n    payload: {\n      data\n    }\n  });\n};\n\nexport const updateContacts = (dispatch, data) => {\n  const { contactType } = data;\n  const type = {\n    member: 'UPDATE_MBR',\n    manager: 'UPDATE_MGR',\n    director: 'UPDATE_DIR',\n    officer: 'UPDATE_OFC'\n  };\n  const action = type[contactType || ''];\n  if (action) set(dispatch, data, ACTIONS[action], false);\n};\n\nexport const updateOrder = (dispatch, reducerData, filingFees, expediteFees, advance, ldFlags) => {\n  logger.logAction(ACTIONS.UPDATE_ORDER, { advance });\n  dispatch({\n    type: ACTIONS.UPDATE_ORDER\n  });\n  registrationService.updateLLC(reducerData, filingFees, expediteFees).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.UPDATE_ORDER_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.UPDATE_ORDER_COMPLETE,\n      payload: {\n        data,\n        reducerData\n      }\n    });\n    if (advance) {\n      go(1, true, ldFlags);\n    }\n  }).catch((err) => {\n    logger.error(ACTIONS.UPDATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.UPDATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  getNextUncompletedPage,\n  goToNextUncompletedPage,\n  setBasicEmailAddress,\n  setBusinessAlternates,\n  setBusinessDescription,\n  setBusinessName,\n  setBusinessRunners,\n  setChoosePrimaryContact,\n  setDBAEntities,\n  setDomainNamePrimary,\n  setMailingAddress,\n  setManagerCount,\n  setManagerList,\n  setManagerOption,\n  setMemberCount,\n  setMemberList,\n  setPhysicalAddress,\n  setPrimaryContact,\n  goToPrimaryContact,\n  setPrincipalAddress,\n  setPurchaseDBACompliance,\n  setPurchaseDBAEntity,\n  setPurchaseVBA,\n  setShareNewLLC,\n  setStartComplete,\n  setEstimatedFormationDate,\n  setAuthorizedSignatory,\n  updateContacts,\n  updateOrder\n};\n","import { URLS } from '../../../constants/register_dbaentity_pf';\nimport { isLoggedIn } from '../../../utils/AuthService';\n\nconst\n  getFlowOrder = () => {\n    if (isLoggedIn()) {\n      return [ URLS.QUESTIONNAIRE, URLS.CONGRATS];\n    }\n    return [ URLS.QUESTIONNAIRE, URLS.CONGRATS, URLS.LOGIN_POST ];\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegistrationFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegistrationFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","/* eslint-disable max-statements */\n/* eslint-disable no-undef */\nimport { STEPS, BUS_SELECTION_VALUE_OPTIONS, BUS_TYPES } from '../../constants/register_dbaentity_pf';\nimport { isLoggedIn } from '../../utils/AuthService';\n\nconst getStepsForDBAName = () => {\n  return [STEPS.DBA_NAME, STEPS.POST_DBA_NAME];\n};\n\nconst getStepsWhenCompanyStateIsNotSupported = () => {\n  const stepOrder = [STEPS.JURISDICTION_NOT_SUPPORTED];\n  // if (!dbaEntityData.companyHasForeignQualification) {\n  //   stepOrder.push(STEPS.REQ_JUR_NO_CHECK);\n  //   return stepOrder;\n  // }\n  // stepOrder.push(STEPS.CHECK_OTHER_JURS);\n  // if (!dbaEntityData.checkOtherDomJurs) {\n  //   stepOrder.push(STEPS.REQ_JUR_NO_CHECK);\n  //   return stepOrder;\n  // }\n  // stepOrder.push(STEPS.JURS_ZB_SUPPORT);\n  // stepOrder.push(STEPS.BUS_REGISTERED, STEPS.POST_BUS_REGISTERED);\n  // if (!dbaEntityData.businessIsRegistered) return stepOrder;\n  // stepOrder.push(...getStepsForDBAName(), STEPS.BEFORE_CART, STEPS.CART, STEPS.PAYMENT);\n  return stepOrder;\n};\n\nconst getStepsWhenCompanyIsSelected = (dbaEntityData) => {\n  const stepOrder = [...getStepsForDBAName(), STEPS.DBA_IN_SAME_STATE];\n    // when user doesn't want to register in the same state\n  if (!dbaEntityData.registerDBAInSameState) {\n    stepOrder.push(STEPS.FORM_IN_HOME_STATE);\n    if (!dbaEntityData.formInHomeState) {\n      stepOrder.push(STEPS.POST_FORM_IN_HOME_STATE);\n      return stepOrder;\n    }\n  }\n  stepOrder.push(STEPS.BEFORE_CART, STEPS.CART, STEPS.PAYMENT);\n  return stepOrder;\n};\n\nconst getFlowToRegisterBusinessAndDBA = (isNewAccount, dbaEntityData) => {\n  const stepOrder = [...getStepsForDBAName()];\n  if (isNewAccount) {\n    stepOrder.push(STEPS.ACCOWN_FIRST_NAME);\n  }\n  stepOrder.push(STEPS.INIT_REQ_JUR, STEPS.POST_REQ_JUR);\n  // State is not supported by the system\n  if (!dbaEntityData.isInitialJurSupported) {\n    stepOrder.push(STEPS.CHECK_OTHER_JURS);\n    if (!dbaEntityData.checkOtherDomJurs) {\n      stepOrder.push(STEPS.REQ_JUR_NO_CHECK);\n      return stepOrder;\n    }\n    stepOrder.push(STEPS.JURS_ZB_SUPPORT);\n  }\n\n  stepOrder.push(STEPS.BUS_TYPE);\n  // Biz hasn't been formed yet\n  if (dbaEntityData.businessType === BUS_TYPES.NOT_FORMED_YET) {\n    stepOrder.push(STEPS.BUS_TYPE_NOT_FORMED, STEPS.BUS_TYPE_FORM_WITH_ZB);\n    return stepOrder;\n  }\n  stepOrder.push(STEPS.POST_BUS_TYPE);\n  // Biz type is not supported by the system\n  if (!dbaEntityData.isTypeSupported) { return stepOrder; }\n  stepOrder.push(STEPS.HOME_STATE);\n  // State is not the business's home state.\n  if (!dbaEntityData.homeState) {\n    stepOrder.push(STEPS.FORM_IN_HOME_STATE);\n    if (!dbaEntityData.formInHomeState) {\n      stepOrder.push( STEPS.POST_FORM_IN_HOME_STATE);\n      return stepOrder;\n    }\n    stepOrder.push(STEPS.DOMESTIC_JUR, STEPS.DOMESTIC_JUR_CONFIRMATION);\n\n    if (dbaEntityData.confirmDomesticJurisdiction) {\n      stepOrder.push(STEPS.POST_DOMESTIC_JUR_CONFIRMATION);\n    } else {\n      stepOrder.push(STEPS.JURISDICTION_NOT_SUPPORTED);\n      return stepOrder;\n    }\n  }\n\n  stepOrder.push(STEPS.BUS_NAME);\n  if (isNewAccount) {\n    stepOrder.push(STEPS.CHECKPOINT);\n    if (dbaEntityData.saveData) {\n      stepOrder.push(STEPS.ACCOWN_LAST_NAME, STEPS.ACCOWN_EMAIL, STEPS.ACCOWN_PHONE);\n    }\n  }\n  stepOrder.push(STEPS.START_UPSELLS, STEPS.PURCH_WEBSITE, STEPS.PURCH_EIN, STEPS.CART, STEPS.PAYMENT);\n  return stepOrder;\n};\n\nconst getDefaultFlowForLoggedInUser = (dbaEntityData) => {\n  const stepOrder = [STEPS.BUS_SELECTION];\n  if (dbaEntityData.loggedInBusSelection === BUS_SELECTION_VALUE_OPTIONS.NEW) {\n    stepOrder.push(...getFlowToRegisterBusinessAndDBA(false, dbaEntityData));\n    return stepOrder;\n  }\n  if (dbaEntityData.loggedInBusSelection === BUS_SELECTION_VALUE_OPTIONS.EXISTING) {\n    stepOrder.push(STEPS.BUS_ID);\n  }\n\n  if (!dbaEntityData.isCompanyStateSupported) {\n    stepOrder.push(...getStepsWhenCompanyStateIsNotSupported(dbaEntityData));\n    return stepOrder;\n  }\n  stepOrder.push(...getStepsWhenCompanyIsSelected(dbaEntityData));\n  return stepOrder;\n};\n\nconst getFlowWhenCompanyIdIsInUrl = (dbaEntityData) => {\n  const stepOrder = [STEPS.BUS_USAGE_CONFIRM];\n\n  // if user says no to use the initial company and it only has 1 company goes to register business and DBA flow.\n  if (!dbaEntityData.confirmCompanyUsage && dbaEntityData.loggedInUserNumberOfBusinesses === 1) {\n    stepOrder.push(...getFlowToRegisterBusinessAndDBA(false, dbaEntityData));\n    return stepOrder;\n  }\n\n  if (!dbaEntityData.confirmCompanyUsage) {\n    stepOrder.push(STEPS.BUS_SELECTION);\n    if (dbaEntityData.loggedInBusSelection === BUS_SELECTION_VALUE_OPTIONS.NEW) {\n      stepOrder.push(...getFlowToRegisterBusinessAndDBA(false, dbaEntityData));\n      return stepOrder;\n    }\n    if (dbaEntityData.loggedInBusSelection === BUS_SELECTION_VALUE_OPTIONS.EXISTING) {\n      stepOrder.push(STEPS.BUS_ID);\n    }\n  }\n\n  if (!dbaEntityData.isCompanyStateSupported) {\n    stepOrder.push(...getStepsWhenCompanyStateIsNotSupported(dbaEntityData));\n    return stepOrder;\n  }\n  stepOrder.push(...getStepsWhenCompanyIsSelected(dbaEntityData));\n  return stepOrder;\n};\n\nconst getFlowForFreeDashboardUser = (dbaEntityData) => {\n  return getFlowToRegisterBusinessAndDBA(false, dbaEntityData);\n};\n\nconst getFlowForNewAccount = (dbaEntityData) => {\n  return getFlowToRegisterBusinessAndDBA(true, dbaEntityData);\n};\n\nconst getFlowForLoggedInUser = (dbaEntityData) => {\n  if (dbaEntityData.simulatedCompanyId) {\n    return getFlowForFreeDashboardUser(dbaEntityData);\n  }\n  if (dbaEntityData.useCompanyConfirmation) {\n    return getFlowWhenCompanyIdIsInUrl(dbaEntityData);\n  }\n  return getDefaultFlowForLoggedInUser(dbaEntityData);\n};\n\nconst getStepsFlow = (dbaEntityData) => {\n  const steps = [STEPS.WELCOME, STEPS.DBA];\n  if (isLoggedIn()) {\n    steps.push(...getFlowForLoggedInUser(dbaEntityData));\n  } else {\n    steps.push(...getFlowForNewAccount(dbaEntityData));\n  }\n  return steps;\n};\n\nconst noScrollingSteps = () => {\n  return [STEPS.CART, STEPS.PAYMENT];\n};\n\nexport { getStepsFlow, noScrollingSteps };\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport _isEmpty from 'lodash/isEmpty';\nimport { browserHistory } from 'react-router';\n\nimport getFlow from './flows';\nimport { setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMPLETE_DBA_URLS } from '../../constants/complete_dbaentity';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { ACTIONS, STEPS, URLS } from '../../constants/register_dbaentity_pf';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { DBA_IGNORE_STATES } from '../../constants/ui';\nimport { URLS as WEBSITE_URLS } from '../../constants/website';\nimport { storageKey as dbaKey } from '../../reducers/registration/dbaEntity';\nimport { storageKey as customerKey } from '../../reducers/registration/customer';\nimport { accountService, registrationService } from '../../services';\nimport { getAppEntryPoint } from '../../utils/AppEntryPoint';\nimport { isLoggedIn } from '../../utils/AuthService';\nimport logger from '../../utils/ClientLogger';\nimport { setGlobalProgressBar } from '../../utils/ProgressBar';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\nimport { getStepsFlow, noScrollingSteps } from './stepsFlowFactory';\nimport LeadManager from '../Lead';\n\nconst defaultDbaEntityData = { isInitialJurSupported: null, requestedJurisdiction: '', isRegisteringABusiness: true };\n\nlet dbaEntityData = getReducerSnapshot(dbaKey, defaultDbaEntityData);\n\nconst getFlowOrder = (url) => {\n  const\n    flow = getFlow(url);\n\n  return flow;\n};\n\nexport const getStepOrder = () => {\n  return getStepsFlow(dbaEntityData);\n};\n\nexport const getEntityType = () => {\n  return dbaEntityData.businessType;\n};\n\nexport const getNoScrollSteps = () => {\n  return noScrollingSteps() || [];\n};\n\nexport const getStepIndex = (step) => {\n  const order = getStepOrder(),\n    index = _indexOf(order, step);\n\n  return index === -1 ? order.length : index;\n};\n\nexport const getNextStep = (step, resetStep) => {\n  const\n    stepOrder = getStepOrder(),\n    requestedStepIndex = step ? _indexOf(stepOrder, step) : -1,\n    currentStepIndex = dbaEntityData.step ? _indexOf(stepOrder, dbaEntityData.step) : -2,\n    nextStep = resetStep || requestedStepIndex >= currentStepIndex ? stepOrder[requestedStepIndex + 1] : dbaEntityData.step;\n  dbaEntityData.step = nextStep;\n  return nextStep;\n};\n\nconst getCompanyUrl = () => {\n  if (dbaEntityData.companyId) {\n    return `/${COMPANY_URLS.BASE}/${dbaEntityData.companyId}`;\n  }\n  return `/${DASHBOARD_URLS.BASE}`;\n};\n\n\nconst\n  go = (jump, doReplace) => {\n    const url = document.location.pathname.substring(URLS.BASE.length + 2),\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      setGlobalProgressBar(flowOrder, '');\n      if (!isLoggedIn()) {\n        document.location = getAppEntryPoint();\n      } else {\n        document.location = `/${DASHBOARD_URLS.BASE}`;\n      }\n    } else if (jumpIndex >= flowOrder.length) {\n      let urlGoTo = getCompanyUrl();\n      if (dbaEntityData.isRegisteringABusiness) {\n        setGlobalProgressBar(flowOrder, COMPLETE_DBA_URLS.START);\n        urlGoTo = `/${COMPLETE_DBA_URLS.BASE}/${COMPLETE_DBA_URLS.START}`;\n        browserHistory.push(urlGoTo);\n      } else {\n        document.location = urlGoTo;\n      }\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n      return flowOrder[jumpIndex];\n    }\n    return '';\n  },\n  dispatchNextStep = (dispatch, step, resetStep) => {\n    const nextStep = getNextStep(step, resetStep);\n    if (nextStep) {\n      dispatch({\n        type: ACTIONS.NEXT_STEP,\n        payload: {\n          data: { nextStep }\n        }\n      });\n    }\n  },\n  set = (dispatch, data, actionKey, step, moveUrl, doReplace) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (step) {\n      dispatchNextStep(dispatch, step);\n    }\n    if (moveUrl) {\n      go(1, doReplace);\n    }\n  },\n\n  setStep = (dispatch, data, actionKey, step, resetStep, includeStepInDispatch = false) => {\n    logger.logAction(actionKey, data);\n    const nextStep = includeStepInDispatch ? getNextStep(step, resetStep) : null;\n    dispatch({\n      type: actionKey,\n      payload: {\n        data: { ...data, nextStep }\n      }\n    });\n    if (step && !includeStepInDispatch) {\n      dispatchNextStep(dispatch, step, resetStep);\n    }\n  },\n\n  cartUpdate = (dispatch, data, actionKey) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n  },\n\n  doReset = () => {\n    _assign(dbaEntityData, defaultDbaEntityData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n  setGlobalProgressBar(flowOrder, flowOrder[0]);\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const setBackFromCompleteBusiness = () => {\n  browserHistory.push(getEntryPoint());\n};\n\nexport const resetAllData = (dispatch, data) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET,\n    payload: {\n      data: data || {}\n    }\n  });\n};\n\nexport const setSpecificStep = (dispatch, nextStep) => {\n  cartUpdate(dispatch, { nextStep }, ACTIONS.NEXT_STEP);\n};\n\nexport const goToNextUncompletedPage = (dispatch, location) => {\n  const\n    flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index + 1;\n\n  if (index >= 0) {\n    if (jumpIndex >= flowOrder.length) {\n      setGlobalProgressBar(flowOrder, COMPLETE_DBA_URLS.START);\n      browserHistory.push(`/${COMPLETE_DBA_URLS.BASE}/${COMPLETE_DBA_URLS.START}`);\n    } else {\n      setGlobalProgressBar(flowOrder, flowOrder[jumpIndex]);\n      browserHistory.push(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n    return true;\n  }\n\n  return false;\n};\n\nexport const setLead = (dispatch, createOrUpdateLead) => {\n  const customerSnapshotData = getReducerSnapshot(customerKey, {});\n\n  const leadManager = new LeadManager(ACTIONS);\n  leadManager.setLead(dispatch, createOrUpdateLead, {\n    firstName: customerSnapshotData.firstName,\n    lastName: customerSnapshotData.lastName,\n    phone: customerSnapshotData.phoneNumber || '',\n    email: customerSnapshotData.email,\n    searchstate: dbaEntityData.requestedJurisdiction,\n    selectedState: dbaEntityData.requestedJurisdiction,\n    entityName: dbaEntityData.businessName,\n    entityType: getEntityType(),\n    purchase_flow: 'dba_pf'\n  });\n};\n\nexport const setAccountOwnerEmail = (dispatch, data, createOrUpdateLead) => {\n  setStep(dispatch, data, ACTIONS.ACCOWN_EMAIL, STEPS.ACCOWN_EMAIL, false);\n  setLead(dispatch, createOrUpdateLead);\n};\n\nexport const setAccountOwnerFirstName = (dispatch, data) => {\n  setStep(dispatch, data, ACTIONS.ACCOWN_FIRST_NAME, STEPS.ACCOWN_FIRST_NAME, false);\n};\n\nexport const setAccountOwnerLastName = (dispatch, data) => {\n  setStep(dispatch, data, ACTIONS.ACCOWN_LAST_NAME, STEPS.ACCOWN_LAST_NAME, false);\n};\n\nexport const setAccountOwnerPhone = (dispatch, data, createOrUpdateLead) => {\n  setStep(dispatch, data, ACTIONS.ACCOWN_PHONE, STEPS.ACCOWN_PHONE, false);\n  setLead(dispatch, createOrUpdateLead);\n};\n\nexport const setBusinessId = (dispatch, data) => {\n  dbaEntityData.isRegisteringABusiness = !data.companyId;\n  // I have to handle this flag since I need to verify if we support the Bus' jurisdiction\n  dbaEntityData.isCompanyStateSupported = data.isCompanyStateSupported;\n  const { move = false, ...theRest } = data;\n  _assign(dbaEntityData, theRest);\n  if (!move) {\n    cartUpdate(dispatch, theRest, ACTIONS.BUS_ID);\n    return;\n  }\n  setStep(dispatch, theRest, ACTIONS.BUS_ID, STEPS.BUS_ID, true);\n};\n\nexport const setBusinessName = (dispatch, data) => {\n  if (data.fromCart) {\n    cartUpdate(dispatch, data, ACTIONS.BUS_NAME);\n    return;\n  }\n  setStep(dispatch, data, ACTIONS.BUS_NAME, STEPS.BUS_NAME, false);\n};\n\nexport const setBusinessType = (dispatch, data) => {\n  if (data.fromCart) {\n    cartUpdate(dispatch, data, ACTIONS.BUS_TYPE);\n    return;\n  }\n  dbaEntityData.businessType = data.businessType;\n  dbaEntityData.isTypeSupported = data.isTypeSupported;\n  setStep(dispatch, data, ACTIONS.BUS_TYPE, STEPS.BUS_TYPE, true, true);\n};\n\nexport const setFormWithZB = (dispatch, data) => {\n  dbaEntityData.formWithZB = data.formWithZB;\n  setStep(dispatch, data, ACTIONS.BUS_TYPE_NOT_FORMED, STEPS.BUS_TYPE_NOT_FORMED, true);\n};\n\nexport const setHomeState = (dispatch, data) => {\n  dbaEntityData.homeState = data.homeState;\n  setStep(dispatch, data, ACTIONS.HOME_STATE, STEPS.HOME_STATE, true);\n};\n\nexport const setFormInHomeState = (dispatch, data) => {\n  dbaEntityData.formInHomeState = data.formInHomeState;\n  setStep(dispatch, data, ACTIONS.FORM_IN_HOME_STATE, STEPS.FORM_IN_HOME_STATE, true, true);\n};\n\nexport const setDomesticJurisdiction = (dispatch, data) => {\n  dbaEntityData.domesticJurisdiction = data.domesticJurisdiction;\n  if (data.fromCart) {\n    cartUpdate(dispatch, data, ACTIONS.DOMESTIC_JUR);\n    return;\n  }\n  setStep(dispatch, data, ACTIONS.DOMESTIC_JUR, STEPS.DOMESTIC_JUR, true);\n};\n\nexport const setDomesticJurisdictionConfirmation = (dispatch, data) => {\n  dbaEntityData.confirmDomesticJurisdiction = data.confirmDomesticJurisdiction;\n  setStep(dispatch, data, ACTIONS.DOMESTIC_JUR_CONFIRMATION, STEPS.DOMESTIC_JUR_CONFIRMATION, true);\n};\n\nexport const setBusinessIsRegistered = (dispatch, data) => {\n  dbaEntityData.businessIsRegistered = data.businessIsRegistered;\n  setStep(dispatch, data, ACTIONS.BUS_REGISTERED, STEPS.BUS_REGISTERED, true, true);\n};\n\nexport const setCompanyHasForeignQualification = (dispatch, data) => {\n  dbaEntityData.companyHasForeignQualification = data.companyHasForeignQualification;\n  setStep(dispatch, data, ACTIONS.BUS_HAS_FOREIGN_QUALIFICATION, STEPS.BUS_HAS_FOREIGN_QUALIFICATION, true);\n};\n\nexport const setCompanyUsageConfirmation = (dispatch, data) => {\n  dbaEntityData.confirmCompanyUsage = data.confirmCompanyUsage;\n  setStep(dispatch, data, ACTIONS.BUS_USAGE_CONFIRM, STEPS.BUS_USAGE_CONFIRM, true);\n};\n\nexport const setCheckOtherJurisdictions = (dispatch, data) => {\n  dbaEntityData.checkOtherDomJurs = data.checkOtherDomJurs;\n  setStep(dispatch, data, ACTIONS.CHECK_OTHER_JURS, STEPS.CHECK_OTHER_JURS, true);\n};\n\nexport const setBusinessSelection = (dispatch, data) => {\n  dbaEntityData.loggedInBusSelection = data.loggedInBusSelection;\n  setStep(dispatch, data, ACTIONS.BUS_SELECTION, STEPS.BUS_SELECTION, true);\n};\n\nexport const setRegisterDBAInSameState = (dispatch, data) => {\n  dbaEntityData.registerDBAInSameState = data.registerDBAInSameState;\n  setStep(dispatch, data, ACTIONS.DBA_IN_SAME_STATE, STEPS.DBA_IN_SAME_STATE, true);\n};\n\nexport const setStaticWebsite = (dispatch, data) => {\n  if (data.fromCart) {\n    cartUpdate(dispatch, data, ACTIONS.PURCH_WEBSITE);\n    return;\n  }\n  setStep(dispatch, data, ACTIONS.PURCH_WEBSITE, STEPS.PURCH_WEBSITE, false);\n};\nexport const setPurchaseEIN = (dispatch, data) => {\n  if (data.fromCart) {\n    cartUpdate(dispatch, data, ACTIONS.PURCH_EIN);\n    return;\n  }\n  setStep(dispatch, data, ACTIONS.PURCH_EIN, STEPS.PURCH_EIN, false);\n};\nexport const setBusinessTypeAndName = (dispatch, data) => {\n  dbaEntityData.entityType = data.type;\n  cartUpdate(dispatch, data, ACTIONS.BUS_TYPE_NAME_CART);\n};\n\nexport const setCart = (dispatch, data) => {\n  setStep(dispatch, data, ACTIONS.CART, STEPS.CART, true);\n};\n\nexport const setCheckpoint = (dispatch, data) => {\n  dbaEntityData.saveData = data.saveData;\n  setStep(dispatch, data, ACTIONS.CHECKPOINT, STEPS.CHECKPOINT, true);\n};\n\nexport const setCreateOrder = (dispatch) => {\n  dispatch({ type: ACTIONS.FLOW_COMPLETE });\n  go(1);\n};\n\nexport const setInitJurisdiction = (dispatch, data) => {\n  const { isInitialJurSupported, requestedJurisdiction } = data;\n  dbaEntityData.isInitialJurSupported = isInitialJurSupported;\n  dbaEntityData.requestedJurisdiction = isInitialJurSupported ? requestedJurisdiction : '';\n\n  setStep(dispatch, data, ACTIONS.INIT_REQ_JUR, STEPS.INIT_REQ_JUR, true, true);\n};\n\nexport const setRequestedJurisdiction = (dispatch, data) => {\n  const { requestedJurisdiction } = data;\n  dbaEntityData.requestedJurisdiction = requestedJurisdiction;\n\n  if (data.fromCart) {\n    cartUpdate(dispatch, data, ACTIONS.REQ_JUR);\n    return;\n  }\n  setStep(dispatch, data, ACTIONS.REQ_JUR, STEPS.JURS_ZB_SUPPORT, true);\n};\n\nexport const checkIfDomJurIsSupported = (domJur) => {\n  return DBA_IGNORE_STATES[domJur] !== true;\n};\n\nexport const setInit = (dispatch, data) => {\n  const {\n    initJurDom = '',\n    skipInititialDomJur = false,\n    useCompanyConfirmation = false,\n    simulatedCompanyId = '',\n    isRegisteringABusiness = true,\n    loggedInUserNumberOfBusinesses = 0\n  } = data;\n\n  doReset();\n\n  dbaEntityData.initJurDom = initJurDom;\n  dbaEntityData.useCompanyConfirmation = useCompanyConfirmation;\n  dbaEntityData.skipInititialDomJur = skipInititialDomJur;\n  dbaEntityData.simulatedCompanyId = simulatedCompanyId;\n  dbaEntityData.isRegisteringABusiness = isRegisteringABusiness;\n  dbaEntityData.loggedInUserNumberOfBusinesses = loggedInUserNumberOfBusinesses;\n\n  setAppEntryPoint(dispatch, true);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  set(dispatch, data, ACTIONS.INIT, false);\n\n  browserHistory.replace(getEntryPoint());\n};\n\nexport const setLogin = (dispatch) => {\n  setStep(dispatch, { flow: 'truic' }, ACTIONS.LOGIN, '', false);\n};\n\nexport const setLoginPostPurchase = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LOGIN_POST, '', false);\n};\n\nexport const setNextStep = (dispatch, { step, ...therest }) => {\n  setStep(dispatch, therest, ACTIONS.PRE_NEXT_STEP, step, true);\n};\n\nexport const setDBAName = (dispatch, data) => {\n  if (data.fromCart) {\n    cartUpdate(dispatch, data, ACTIONS.DBA_NAME);\n    return;\n  }\n  setStep(dispatch, data, ACTIONS.DBA_NAME, STEPS.DBA_NAME, false);\n};\n\nexport const setPayment = (dispatch, data) => {\n  cartUpdate(dispatch, data, ACTIONS.PAYMENT);\n};\n\nexport const setPricing = (dispatch, data) => {\n  logger.logAction(ACTIONS.PRICES, data);\n\n  dispatch({\n    type: ACTIONS.PRICES,\n    payload: {\n      data\n    }\n  });\n};\n\nexport const takeUserToExternalLinks = (data) => {\n  const { status } = data;\n  if (status === 'formation') {\n    document.location = '/r2/registration-new/init';\n    return true;\n  }\n  if (status === 'dashboard') {\n    document.location = `/${DASHBOARD_URLS.BASE}`;\n    return true;\n  }\n  if (status === 'home') {\n    document.location = '/';\n    return true;\n  }\n  if (status === 'showMore') {\n    document.location = `/${WEBSITE_URLS.PRICING}`;\n    return true;\n  }\n  return false;\n};\n\nexport const setDBA = (dispatch, data) => {\n  if (!takeUserToExternalLinks(data)) {\n    setStep(dispatch, data, ACTIONS.DBA, STEPS.DBA, true);\n  } else {\n    setSpecificStep(dispatch, STEPS.DBA);\n  }\n};\n\nexport const setWelcome = (dispatch, data) => {\n  setStep(dispatch, data, ACTIONS.WELCOME, STEPS.WELCOME, true);\n};\n\nconst createDBAOrder = (dispatch, reducerData, fees, accountId) => {\n  const { dbaEntity: { companyId } } = reducerData;\n  const creationMethod = companyId ? 'createDBAEntityForExistingBus' : 'createDBAEntity';\n  registrationService[creationMethod](reducerData, fees, accountId).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      payload: {\n        data,\n        reducerData,\n        fees\n      }\n    });\n\n    trackEvent('Purchase', 'complete', 'DBA');\n    go(1, true);\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, fees, accountId) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { customer } = reducerData,\n    { cardToken, expMonth, expYear, cvc } = customer;\n\n  if (!isLoggedIn() || !cardToken) {\n    createDBAOrder(dispatch, reducerData, fees, accountId);\n  } else {\n    const data = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createDBAOrder(dispatch, reducerData, fees, accountId);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const resetData = (dispatch, data) => {\n  if (_isEmpty(data)) return;\n  cartUpdate(dispatch, data, ACTIONS.RESET_DATA);\n  dbaEntityData = getReducerSnapshot(dbaKey, dbaEntityData);\n};\n\nexport default {\n  createOrder,\n  getEntryPoint,\n  getFlowOrder,\n  getNextStep,\n  getStepIndex,\n  getStepOrder,\n  goToNextUncompletedPage,\n  resetAllData,\n  setAccountOwnerEmail,\n  setAccountOwnerFirstName,\n  setAccountOwnerLastName,\n  setAccountOwnerPhone,\n  setBusinessId,\n  setBusinessName,\n  setBusinessType,\n  setFormWithZB,\n  setBusinessTypeAndName,\n  setCart,\n  setCheckpoint,\n  setRequestedJurisdiction,\n  setInitJurisdiction,\n  setNextStep,\n  setInit,\n  setLogin,\n  setLoginPostPurchase,\n  setPayment,\n  setDBA,\n  takeUserToExternalLinks,\n  setHomeState,\n  setFormInHomeState,\n  setStaticWebsite,\n  setPurchaseEIN,\n  setBusinessIsRegistered,\n  setCompanyHasForeignQualification,\n  setCompanyUsageConfirmation,\n  setCheckOtherJurisdictions,\n  setBusinessSelection,\n  setSpecificStep,\n  setRegisterDBAInSameState,\n  resetData\n};\n","import { URLS } from '../../../constants/complete_cora';\n\nconst\n  getAddressFlow = (url, registration) => {\n    const { usePhysicalAsMailing, usePhysicalAsPrincipal, useMailingAsPrincipal } = registration.businessAddresses,\n      { needsAddresses, needsPrincipalAddress } = registration.cora,\n      flowItems = [];\n\n    if (!needsAddresses && needsPrincipalAddress) {\n      flowItems.push(URLS.PRIN_ADDR);\n    } else if (needsAddresses) {\n      flowItems.push(URLS.PHYS_ADDR);\n      if (!usePhysicalAsMailing || url === URLS.MAIL_ADDR) {\n        flowItems.push(URLS.MAIL_ADDR);\n        if ((!useMailingAsPrincipal && !usePhysicalAsPrincipal) || url === URLS.PRIN_ADDR) {\n          flowItems.push(URLS.PRIN_ADDR);\n        }\n      } else if (!usePhysicalAsPrincipal || url === URLS.PRIN_ADDR) {\n        flowItems.push(URLS.PRIN_ADDR);\n      }\n    }\n    return flowItems;\n  },\n\n  /* eslint-disable max-statements */\n  getPostPrincipalsFlowOrder = (url, registration) => {\n    const\n      { cora, business } = registration,\n      { type } = business,\n      { jurisdictionOrder, hasElectiveCEO, pendingStates, needsContact, needsCoraContacts } = cora,\n      jurisdictionOrderCount = jurisdictionOrder.length,\n      flowItems = [];\n\n    if (needsContact) {\n      if (url === URLS.OFF_STATE_CONTACT) {\n        flowItems.push(URLS.CHOOSE_OFF_STATE_CONTACT, URLS.OFF_STATE_CONTACT);\n      } else {\n        flowItems.push(URLS.CHOOSE_OFF_STATE_CONTACT);\n      }\n    } else if (url === URLS.OFF_STATE_CONTACT) {\n      flowItems.push(URLS.OFF_STATE_CONTACT);\n    }\n\n    if (needsCoraContacts) {\n      flowItems.push(URLS.CHOOSE_SOP_CONTACT);\n      if (url === URLS.SOP_CONTACT) {\n        flowItems.push(URLS.SOP_CONTACT);\n      }\n      flowItems.push(URLS.AUTH_SIG);\n    } else if (url === URLS.SOP_CONTACT) {\n      flowItems.push(URLS.SOP_CONTACT);\n    }\n\n    for (let i = 1; i < jurisdictionOrderCount; i += 1) {\n      if (!pendingStates[jurisdictionOrder[i]]) {\n        flowItems.push(`${URLS.STATE_FILING}/${jurisdictionOrder[i]}`);\n      }\n      if (jurisdictionOrder[i] === 'CA' && type === 'LLCX') {\n        flowItems.push(URLS.HAS_ELECTIVE_CEO);\n        if (hasElectiveCEO) {\n          flowItems.push(URLS.CHOOSE_ELECTIVE_CEO);\n          if (url === URLS.ELECTIVE_CEO) {\n            flowItems.push(URLS.ELECTIVE_CEO);\n          }\n        }\n      }\n    }\n    flowItems.push(URLS.DATA_CONFIRM, URLS.SHARE, URLS.COMPLETE);\n    return flowItems;\n  },\n  /* esline-enable max-statements */\n\n  /* eslint-disable max-statements */\n  getCorpFlowOrder = (url, registration) => {\n    const\n      { cora, officer } = registration,\n      { needsPrincipals } = cora,\n      flowItems = [ URLS.CORP_DIR_COUNT, URLS.CORP_DIR_LIST ],\n      { hasAsstSecretary, hasVicePresident } = officer;\n\n    if (!needsPrincipals) {\n      return getPostPrincipalsFlowOrder(url, registration);\n    }\n\n    flowItems.push(URLS.CORP_CHOOSE_PRES);\n    if (url === URLS.CORP_PRES) { // This is only called directly, so if it is the URL, add it.\n      flowItems.push(URLS.CORP_PRES);\n    }\n    flowItems.push(URLS.CORP_HAS_VP);\n    if (hasVicePresident) {\n      flowItems.push(URLS.CORP_CHOOSE_VP);\n      if (url === URLS.CORP_VP) { // This is only called directly, so if it is the URL, add it.\n        flowItems.push(URLS.CORP_VP);\n      }\n    }\n    flowItems.push(URLS.CORP_CHOOSE_TRSR);\n    if (url === URLS.CORP_TRSR) { // This is only called directly, so if it is the URL, add it.\n      flowItems.push(URLS.CORP_TRSR);\n    }\n    flowItems.push(URLS.CORP_CHOOSE_SEC);\n    if (url === URLS.CORP_SEC) { // This is only called directly, so if it is the URL, add it.\n      flowItems.push(URLS.CORP_SEC);\n    }\n    flowItems.push(URLS.CORP_HAS_ASST_SEC);\n    if (hasAsstSecretary) {\n      flowItems.push(URLS.CORP_CHOOSE_ASST_SEC);\n      if (url === URLS.CORP_ASST_SEC) { // This is only called directly, so if it is the URL, add it.\n        flowItems.push(URLS.CORP_ASST_SEC);\n      }\n    }\n    flowItems.push(...getPostPrincipalsFlowOrder(url, registration));\n    return flowItems;\n  },\n\n  /* eslint-enable max-statements */\n  getLLCFlowOrder = (url, registration) => {\n    const\n      { cora, manager } = registration,\n      { needsPrincipals } = cora,\n      flowItems = [ URLS.LLC_MBR_COUNT, URLS.LLC_MBR_LIST ],\n      { managerType } = manager;\n\n    if (!needsPrincipals) {\n      return getPostPrincipalsFlowOrder(url, registration);\n    }\n\n    flowItems.push(URLS.LLC_MGR_OPT);\n    if (managerType === 'SomeOwners' || managerType === 'SomeManagers' || managerType === '') {\n      flowItems.push(URLS.LLC_BUS_RUN);\n    }\n    if (managerType === 'SomeManagers' || managerType === 'AllManagers' || managerType === '') {\n      flowItems.push(URLS.LLC_MGR_COUNT, URLS.LLC_MGR_LIST);\n    }\n    flowItems.push(...getPostPrincipalsFlowOrder(url, registration));\n    return flowItems;\n  },\n\n  /* eslint-disable max-statements */\n  getFlowOrder = (url, registration) => {\n    const\n      { business, cora } = registration,\n      { type } = business,\n      { jurisdictionOrder, hasFormation, pendingStates, hasElectiveCEO, needsBusinessData, needsBusinessIndustry, needsDomesticJurisdictionData } = cora,\n      flowItems = [ URLS.START ];\n\n    if (url === URLS.COMPLETE || url === URLS.SHARE) {\n      return [ URLS.SHARE, URLS.COMPLETE ];\n    }\n    if (needsDomesticJurisdictionData || pendingStates[jurisdictionOrder[0]] === false) {\n      flowItems.push(`${URLS.STATE_FILING}/${jurisdictionOrder[0]}`);\n    }\n\n    if (needsBusinessData || needsBusinessIndustry) {\n      flowItems.push(URLS.BUS_DESC);\n    }\n\n    if (jurisdictionOrder.length > 1 || hasFormation) {\n      if (jurisdictionOrder[0] === 'CA' && type === 'LLCX') {\n        flowItems.push(URLS.HAS_ELECTIVE_CEO);\n        if (hasElectiveCEO) {\n          flowItems.push(URLS.CHOOSE_ELECTIVE_CEO);\n          if (url === URLS.ELECTIVE_CEO) {\n            flowItems.push(URLS.ELECTIVE_CEO);\n          }\n        }\n      }\n    }\n\n    flowItems.push(...getAddressFlow(url, registration));\n    if (type === 'CORP') {\n      flowItems.push(...getCorpFlowOrder(url, registration));\n    } else {\n      flowItems.push(...getLLCFlowOrder(url, registration));\n    }\n    return flowItems;\n  };\n  /* eslint-enable max-statements */\n\nexport default {\n  getPostPrincipalsFlowOrder,\n  getCorpFlowOrder,\n  getLLCFlowOrder,\n  getFlowOrder\n};\n","import { getCompleteWFGFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getCompleteWFGFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _filter from 'lodash/filter';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS, URLS } from '../../constants/complete_cora';\nimport logger from '../../utils/ClientLogger';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport { storageKey as businessAddressesKey } from '../../reducers/registration/businessAddresses';\nimport { storageKey as coraKey } from '../../reducers/registration/cora';\nimport { storageKey as managerKey } from '../../reducers/registration/managers';\nimport { storageKey as officerKey } from '../../reducers/registration/officers';\nimport { storageKey as pageKey } from '../../reducers/registration/page';\nimport { registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlows from './flows';\n\nconst\n  defaultBusinessData = { type: 'LLCX', id: '', businessOrderType: '', addressMatch: false, addressIsGoogle: false, domesticJurisdiction: '' },\n  businessData = getReducerSnapshot(businessKey, defaultBusinessData),\n  defaultBusinessAddressesData = { usePhysicalAsPrincipal: false, usePhysicalAsMailing: false, useMailingAsPrincipal: false },\n  businessAddressesData = getReducerSnapshot(businessAddressesKey, defaultBusinessAddressesData),\n  defaultCoraData = {\n    jurisdictionOrder: [],\n    requestedJurisdictions: [],\n    pendingStates: {},\n    domesticJurisdiction: '',\n    hasFormation: false,\n    domesticEntity: false,\n    hasElectiveCEO: null,\n    needsAddresses: true,\n    needsBusinessData: true,\n    needsBusinessIndustry: true,\n    needsContact: true,\n    needsCoraContacts: true,\n    needsDomesticJurisdictionData: true,\n    needsPrincipalAddress: true,\n    needsPrincipalAddresses: true\n  },\n  coraData = getReducerSnapshot(coraKey, defaultCoraData),\n  defaultManagerData = { managerType: '' },\n  managerData = getReducerSnapshot(managerKey, defaultManagerData),\n  defaultOfficerData = { hasAsstSecretary: false, hasVicePresident: false },\n  officerData = getReducerSnapshot(officerKey, defaultOfficerData),\n  defaultPageData = { forceToMembers: false, forceToManagers: false, forceToDirectors: false, forceToOfficers: false, forceToPayment: false, forceToContact: false, registrationFlow: '' },\n  pageData = getReducerSnapshot(pageKey, defaultPageData),\n\n// This is a reduced flow for analyzing the data confirmation.\n  /* eslint-disable max-statements */\n  getFlowOrder = (url) => {\n    const registration = {\n      business: businessData,\n      businessAddresses: businessAddressesData,\n      cora: coraData,\n      manager: managerData,\n      officer: officerData,\n      page: pageData\n    };\n    return getFlows(url, registration);\n  },\n  go = (jump) => {\n    const url = document.location.pathname.substring(URLS.BASE.length + 2),\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index;\n\n    if (jumpIndex < 0) {\n      browserHistory.push(`/${URLS.BASE}/${flowOrder[0]}`);\n    } else if (jumpIndex >= flowOrder.length) {\n      if (businessData.id) {\n        document.location = `/${COMPANY_URLS.BASE}/${businessData.id}`;\n      } else {\n        document.location = `/${DASHBOARD_URLS.BASE}`;\n      }\n    } else {\n      browserHistory.push(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1);\n    }\n  },\n  goTo = (dispatch, actionKey, url) => {\n    logger.logAction(actionKey);\n    dispatch({\n      type: actionKey\n    });\n    browserHistory.push(`/${URLS.BASE}/${url}`);\n  },\n  updateSnapshots = () => {\n    _assign(businessData, getReducerSnapshot(businessKey, defaultBusinessData));\n    _assign(businessAddressesData, getReducerSnapshot(businessAddressesKey, defaultBusinessAddressesData));\n    _assign(coraData, getReducerSnapshot(coraKey, defaultCoraData));\n    _assign(managerData, getReducerSnapshot(managerKey, defaultManagerData));\n    _assign(officerData, getReducerSnapshot(officerKey, defaultOfficerData));\n    _assign(pageData, getReducerSnapshot(pageKey, defaultPageData));\n  };\n\nexport const goBack = (dispatch) => {\n  logger.logAction(ACTIONS.GO_BACK, { location: document.location.pathname.substring(URLS.BASE.length + 2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const getNextUncompletedPage = (dispatch, location) => {\n  updateSnapshots();\n\n  const\n    flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index + 1;\n\n  if (index >= 0) {\n    if (jumpIndex >= flowOrder.length) {\n      if (businessData.id) {\n        return { isDashboard: true, url: `/${COMPANY_URLS.BASE}/${businessData.id}` };\n      }\n      return { isDashboard: true, url: `/${DASHBOARD_URLS.BASE}` };\n    }\n    return { isDashboard: false, url: `/${URLS.BASE}/${flowOrder[jumpIndex]}` };\n  }\n\n  return { isDashboard: false, url: '' };\n};\n\nexport const goToNextUncompletedPage = (dispatch, location) => {\n  const results = getNextUncompletedPage(dispatch, location);\n  if (results.isDashboard) {\n    document.location = results.url;\n    return true;\n  }\n  if (results.url) {\n    browserHistory.push(results.url);\n    return true;\n  }\n  return false;\n};\n\nexport const getEntryPoint = (fromBack) => {\n  updateSnapshots();\n\n  const flow = getFlowOrder(),\n    index = fromBack ? flow.length - 1 : 0;\n\n  return `/${URLS.BASE}/${flow[index]}`;\n};\n\nexport const goToCorpAsstSecretary = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CORP_ASST_SEC, URLS.CORP_ASST_SEC);\n};\n\nexport const goToCorpPresident = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CORP_PRES, URLS.CORP_PRES);\n};\n\nexport const goToCorpSecretary = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CORP_SEC, URLS.CORP_SEC);\n};\n\nexport const goToCorpTreasurer = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CORP_TRSR, URLS.CORP_TRSR);\n};\n\nexport const goToCorpVicePresident = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CORP_VP, URLS.CORP_VP);\n};\n\nexport const goToElectiveCEO = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_ELECTIVE_CEO, URLS.ELECTIVE_CEO);\n};\n\nexport const goToOfficialStateContact = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_OFF_STATE_CONTACT, URLS.OFF_STATE_CONTACT);\n};\n\nexport const goToSOPContact = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_SOP_CONTACT, URLS.SOP_CONTACT);\n};\n\nexport const setAddressesModal = (dispatch, data) => {\n  businessAddressesData.useMailingAsPrincipal = data.useMailingAsPrincipal;\n  businessAddressesData.usePhysicalAsMailing = data.usePhysicalAsMailing;\n  businessAddressesData.usePhysicalAsPrincipal = data.usePhysicalAsPrincipal;\n  set(dispatch, data, ACTIONS.ADDR_MODAL, false);\n};\n\nexport const setAuthorizedSignatory = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.AUTH_SIG, false);\n};\n\nexport const setAuthorizedSignatoryModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.AUTH_SIG_MODAL, false);\n};\n\nexport const setBusinessDescription = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_DESC, false);\n};\n\nexport const setBusinessDescriptionModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_DESC_MODAL, false);\n};\n\nexport const setBusinessInfoModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_INFO_MODAL, false);\n};\n\nexport const setBusinessNameModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_NAME_MODAL, false);\n};\n\nexport const setChooseElectiveCEO = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CHOOSE_ELECTIVE_CEO, false);\n};\n\nexport const setChooseOfficialStateContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CHOOSE_OFF_STATE_CONTACT, false);\n};\n\nexport const setChooseSOPContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CHOOSE_SOP_CONTACT, false);\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.COMPLETE, true);\n};\n\nexport const setCorpAsstSecretary = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_ASST_SEC, false);\n};\n\nexport const setCorpChooseAsstSecretary = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_CHOOSE_ASST_SEC, false);\n};\n\nexport const setCorpChoosePresident = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_CHOOSE_PRES, false);\n};\n\nexport const setCorpChooseSecretary = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_CHOOSE_SEC, false);\n};\n\nexport const setCorpChooseTreasurer = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_CHOOSE_TRSR, false);\n};\n\nexport const setCorpChooseVicePresident = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_CHOOSE_VP, false);\n};\n\nexport const setCorpDirectorCount = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_DIR_COUNT, false);\n};\n\nexport const setCorpDirectorList = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_DIR_LIST, false);\n};\n\nexport const setCorpDirectorListModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_DIR_LIST_MODAL, false);\n};\n\nexport const setCorpHasAsstSecretary = (dispatch, data) => {\n  officerData.hasAsstSecretary = data.hasAsstSecretary;\n  set(dispatch, data, ACTIONS.CORP_HAS_ASST_SEC, false);\n};\n\nexport const setCorpHasVicePresident = (dispatch, data) => {\n  officerData.hasVicePresident = data.hasVicePresident;\n  set(dispatch, data, ACTIONS.CORP_HAS_VP, false);\n};\n\nexport const setCorpOfficerListModal = (dispatch, data) => {\n  officerData.hasAsstSecretary = data.hasAsstSecretary;\n  officerData.hasVicePresident = data.hasVicePresident;\n  set(dispatch, data, ACTIONS.CORP_OFF_LIST_MODAL, false);\n};\n\nexport const setCorpPresident = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_PRES, false);\n};\n\nexport const setCorpSecretary = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_SEC, false);\n};\n\nexport const setCorpTreasurer = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_TRSR, false);\n};\n\nexport const setCorpVicePresident = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_VP, false);\n};\n\nexport const setDataConfirmation = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.DATA_CONFIRM, false);\n};\n\nexport const setDomesticJurisdiction = (dispatch, data) => {\n  const { domesticJurisdiction } = data,\n    jurisdictionOrder = _filter(coraData.requestedJurisdictions, (reqJur) => {\n      return reqJur !== domesticJurisdiction;\n    }).sort((a, b) => {\n      return a < b;\n    });\n\n  coraData.domesticJurisdiction = domesticJurisdiction;\n  if (domesticJurisdiction && !coraData.needsDomesticJurisdictionData) {\n    jurisdictionOrder.unshift(domesticJurisdiction);\n  }\n  coraData.jurisdictionOrder = jurisdictionOrder;\n\n  set(dispatch, data, ACTIONS.DOM_JUR, false);\n};\n\nexport const setElectiveCEO = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ELECTIVE_CEO, false);\n};\n\nexport const setElectiveCEOModal = (dispatch, data) => {\n  coraData.hasElectiveCEO = data.hasElectiveCEO;\n  set(dispatch, data, ACTIONS.ELECTIVE_CEO_MODAL, false);\n};\n\nexport const setHasElectiveCEO = (dispatch, data) => {\n  coraData.hasElectiveCEO = data.hasElectiveCEO;\n  set(dispatch, data, ACTIONS.HAS_ELECTIVE_CEO, false);\n};\n\nexport const setLLCBusinessRunners = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_BUS_RUN, false);\n};\n\nexport const setLLCManagerCount = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MGR_COUNT, false);\n};\n\nexport const setLLCManagerList = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MGR_LIST, false);\n};\n\nexport const setLLCManagerListModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MGR_LIST_MODAL, false);\n};\n\nexport const setLLCManagerOption = (dispatch, data) => {\n  managerData.managerType = data.managerType;\n  set(dispatch, data, ACTIONS.LLC_MGR_OPT, false);\n};\n\nexport const setLLCManagerOptionModal = (dispatch, data) => {\n  managerData.managerType = data.managerType;\n  set(dispatch, data, ACTIONS.LLC_MGR_OPT_MODAL, false);\n};\n\nexport const setLLCMemberCount = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MBR_COUNT, false);\n};\n\nexport const setLLCMemberList = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MBR_LIST, false);\n};\n\nexport const setLLCMemberListModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MBR_LIST_MODAL, false);\n};\n\nexport const setMailingAddress = (dispatch, data) => {\n  businessAddressesData.useMailingAsPrincipal = data.useMailingAsPrincipal;\n  set(dispatch, data, ACTIONS.MAIL_ADDR, false);\n};\n\nexport const setOfficialStateContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.OFF_STATE_CONTACT, false);\n};\n\nexport const setOfficialStateContactModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.OFF_STATE_CONTACT_MODAL, false);\n};\n\nexport const setPhysicalAddress = (dispatch, data) => {\n  businessAddressesData.usePhysicalAsMailing = data.usePhysicalAsMailing;\n  businessAddressesData.usePhysicalAsPrincipal = data.usePhysicalAsPrincipal;\n  set(dispatch, data, ACTIONS.PHYS_ADDR, false);\n};\n\nexport const setPrincipalAddress = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIN_ADDR, false);\n};\n\nexport const setShare = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.SHARE, true);\n};\n\nexport const setSOPContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.SOP_CONTACT, false);\n};\n\nexport const setSOPContactModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.SOP_CONTACT_MODAL, false);\n};\n\nexport const setStart = (dispatch, data) => {\n  updateSnapshots();\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nexport const setStateFiling = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.STATE_FILING, false);\n};\n\nexport const setStateFilingModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.STATE_FILING_MODAL, false);\n};\n\nexport const updateOrder = (dispatch, reducerData, filingFees, advance) => {\n  logger.logAction(ACTIONS.UPDATE_ORDER);\n  dispatch({\n    type: ACTIONS.UPDATE_ORDER\n  });\n  registrationService.updateCoRA(reducerData, filingFees).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.UPDATE_ORDER_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.UPDATE_ORDER_COMPLETE,\n      payload: {\n        data,\n        reducerData\n      }\n    });\n    if (advance) {\n      go(1);\n    }\n  }).catch((err) => {\n    logger.error(ACTIONS.UPDATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.UPDATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  getNextUncompletedPage,\n  goToNextUncompletedPage,\n  goToCorpAsstSecretary,\n  goToCorpPresident,\n  goToCorpSecretary,\n  goToCorpTreasurer,\n  goToCorpVicePresident,\n  goToElectiveCEO,\n  goToOfficialStateContact,\n  goToSOPContact,\n  setAddressesModal,\n  setAuthorizedSignatory,\n  setAuthorizedSignatoryModal,\n  setBusinessDescription,\n  setBusinessDescriptionModal,\n  setBusinessInfoModal,\n  setBusinessNameModal,\n  setChooseElectiveCEO,\n  setChooseOfficialStateContact,\n  setChooseSOPContact,\n  setComplete,\n  setCorpAsstSecretary,\n  setCorpChooseAsstSecretary,\n  setCorpChoosePresident,\n  setCorpChooseSecretary,\n  setCorpChooseTreasurer,\n  setCorpChooseVicePresident,\n  setCorpDirectorCount,\n  setCorpDirectorList,\n  setCorpDirectorListModal,\n  setCorpHasAsstSecretary,\n  setCorpHasVicePresident,\n  setCorpOfficerListModal,\n  setCorpPresident,\n  setCorpSecretary,\n  setCorpTreasurer,\n  setCorpVicePresident,\n  setDataConfirmation,\n  setDomesticJurisdiction,\n  setElectiveCEO,\n  setElectiveCEOModal,\n  setHasElectiveCEO,\n  setLLCBusinessRunners,\n  setLLCManagerCount,\n  setLLCManagerList,\n  setLLCManagerListModal,\n  setLLCManagerOption,\n  setLLCManagerOptionModal,\n  setLLCMemberCount,\n  setLLCMemberList,\n  setLLCMemberListModal,\n  setMailingAddress,\n  setOfficialStateContact,\n  setOfficialStateContactModal,\n  setPhysicalAddress,\n  setPrincipalAddress,\n  setShare,\n  setSOPContact,\n  setSOPContactModal,\n  setStart,\n  setStateFiling,\n  setStateFilingModal,\n  updateOrder,\n  resetAllData\n};\n","import { URLS } from '../../../constants/complete_blr';\n\nconst\n  getBLRDataFlowOrder = (url, registration) => {\n    const\n      { blr } = registration,\n      { hasEmployees } = blr,\n      flowItems = [\n        URLS.BUS_AT_HOME,\n        URLS.BUS_INDUSTRY,\n        URLS.HAS_EMPLOYEES\n      ];\n\n    if (url === URLS.EMPL_COUNT || hasEmployees) {\n      flowItems.push(URLS.EMPL_COUNT);\n    }\n    flowItems.push(URLS.HAS_DBAS);\n    return flowItems;\n  },\n\n  getAddressFlow = (url, registration) => {\n    const { usePhysicalAsMailing } = registration.businessAddresses,\n      flowItems = [];\n\n    flowItems.push(URLS.PHYS_ADDR);\n    if (!usePhysicalAsMailing || url === URLS.MAIL_ADDR) {\n      flowItems.push(URLS.MAIL_ADDR);\n    }\n    return flowItems;\n  },\n\n  /* eslint-disable max-statements */\n  getCorpFlowOrder = (url, registration) => {\n    const\n      { officer } = registration,\n      flowItems = [ URLS.CORP_DIR_COUNT, URLS.CORP_DIR_LIST ],\n      { hasAsstSecretary, hasVicePresident } = officer;\n\n    flowItems.push(URLS.CORP_CHOOSE_PRES);\n    if (url === URLS.CORP_PRES) { // This is only called directly, so if it is the URL, add it.\n      flowItems.push(URLS.CORP_PRES);\n    }\n    flowItems.push(URLS.CORP_HAS_VP);\n    if (hasVicePresident) {\n      flowItems.push(URLS.CORP_CHOOSE_VP);\n      if (url === URLS.CORP_VP) { // This is only called directly, so if it is the URL, add it.\n        flowItems.push(URLS.CORP_VP);\n      }\n    }\n    flowItems.push(URLS.CORP_CHOOSE_TRSR);\n    if (url === URLS.CORP_TRSR) { // This is only called directly, so if it is the URL, add it.\n      flowItems.push(URLS.CORP_TRSR);\n    }\n    flowItems.push(URLS.CORP_CHOOSE_SEC);\n    if (url === URLS.CORP_SEC) { // This is only called directly, so if it is the URL, add it.\n      flowItems.push(URLS.CORP_SEC);\n    }\n    flowItems.push(URLS.CORP_HAS_ASST_SEC);\n    if (hasAsstSecretary) {\n      flowItems.push(URLS.CORP_CHOOSE_ASST_SEC);\n      if (url === URLS.CORP_ASST_SEC) { // This is only called directly, so if it is the URL, add it.\n        flowItems.push(URLS.CORP_ASST_SEC);\n      }\n    }\n\n    flowItems.push(URLS.REG_AGT);\n    if (url === URLS.PRIM_CONTACT) {\n      flowItems.push(URLS.CHOOSE_PRIM_CONTACT, URLS.PRIM_CONTACT);\n    } else {\n      flowItems.push(URLS.CHOOSE_PRIM_CONTACT);\n    }\n    flowItems.push(URLS.AUTH_SIG);\n\n    return flowItems;\n  },\n\n  /* eslint-enable max-statements */\n  getLLCFlowOrder = (url, registration) => {\n    const\n      { manager } = registration,\n      flowItems = [ URLS.LLC_MBR_COUNT, URLS.LLC_MBR_LIST ],\n      { managerType } = manager;\n\n    flowItems.push(URLS.LLC_MGR_OPT);\n    if (managerType === 'SomeOwners' || managerType === 'SomeManagers' || managerType === '') {\n      flowItems.push(URLS.LLC_BUS_RUN);\n    }\n    if (managerType === 'SomeManagers' || managerType === 'AllManagers' || managerType === '') {\n      flowItems.push(URLS.LLC_MGR_COUNT, URLS.LLC_MGR_LIST);\n    }\n\n    flowItems.push(URLS.REG_AGT);\n    if (url === URLS.PRIM_CONTACT) {\n      flowItems.push(URLS.CHOOSE_PRIM_CONTACT, URLS.PRIM_CONTACT);\n    } else {\n      flowItems.push(URLS.CHOOSE_PRIM_CONTACT);\n    }\n    flowItems.push(URLS.AUTH_SIG);\n\n    return flowItems;\n  },\n\n  getNewCompanyFlow = (url, registration) => {\n    const\n      { business } = registration,\n      { type } = business,\n      flowItems = [];\n\n    if (type === 'CORP') {\n      flowItems.push(URLS.START_BUS_DATA, ...getAddressFlow(url, registration), ...getCorpFlowOrder(url, registration));\n    } else {\n      flowItems.push(URLS.START_BUS_DATA, ...getAddressFlow(url, registration), ...getLLCFlowOrder(url, registration));\n    }\n    flowItems.push(URLS.START_BLR_DATA, ...getBLRDataFlowOrder(url, registration), URLS.DATA_CONFIRM, URLS.SHARE, URLS.COMPLETE);\n    return flowItems;\n  },\n\n  getDashboardFlow = (url, registration) => {\n    return [ URLS.START_BLR_DATA, ...getBLRDataFlowOrder(url, registration), URLS.DATA_CONFIRM, URLS.SHARE, URLS.COMPLETE ];\n  },\n\n  /* eslint-disable max-statements */\n  getFlowOrder = (url, registration) => {\n    const\n      { blr } = registration,\n      { existingCompany } = blr;\n\n    if (url === URLS.COMPLETE || url === URLS.SHARE) {\n      return [ URLS.SHARE, URLS.COMPLETE ];\n    }\n    if (existingCompany) {\n      return getDashboardFlow(url, registration);\n    }\n    return getNewCompanyFlow(url, registration);\n  };\n  /* eslint-enable max-statements */\n\nexport default {\n  getFlowOrder\n};\n","import { getCompleteWFGFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getCompleteWFGFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { getEntryPoint as getPostPurchaseEntryPoint } from '../purchase_post_addons';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS, URLS } from '../../constants/complete_blr';\nimport logger from '../../utils/ClientLogger';\nimport { storageKey as blrKey } from '../../reducers/registration/blr';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport { storageKey as businessAddressesKey } from '../../reducers/registration/businessAddresses';\nimport { storageKey as managerKey } from '../../reducers/registration/managers';\nimport { storageKey as officerKey } from '../../reducers/registration/officers';\nimport { storageKey as pageKey } from '../../reducers/registration/page';\nimport { storageKey as registeredAgentKey } from '../../reducers/registration/registeredAgent';\nimport { registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlows from './flows';\n\nconst\n  defaultBlrData = { existingCompany: false, skipBlr: false },\n  blrData = getReducerSnapshot(blrKey, defaultBlrData),\n  defaultBusinessData = { type: 'LLCX', id: '', businessOrderType: '', addressMatch: false, addressIsGoogle: false, domesticJurisdiction: '' },\n  businessData = getReducerSnapshot(businessKey, defaultBusinessData),\n  defaultBusinessAddressesData = { usePhysicalAsPrincipal: false, usePhysicalAsMailing: false, useMailingAsPrincipal: false },\n  businessAddressesData = getReducerSnapshot(businessAddressesKey, defaultBusinessAddressesData),\n  defaultManagerData = { managerType: '' },\n  managerData = getReducerSnapshot(managerKey, defaultManagerData),\n  defaultOfficerData = { hasAsstSecretary: false, hasVicePresident: false },\n  officerData = getReducerSnapshot(officerKey, defaultOfficerData),\n  defaultPageData = { forceToMembers: false, forceToManagers: false, forceToDirectors: false, forceToOfficers: false, forceToPayment: false, forceToContact: false, registrationFlow: '' },\n  pageData = getReducerSnapshot(pageKey, defaultPageData),\n  defaultRegisteredAgentData = { forceContact: false, forcePerson: false },\n  registeredAgentData = getReducerSnapshot(registeredAgentKey, defaultRegisteredAgentData),\n\n  getFlowOrder = (url) => {\n    const registration = {\n      blr: blrData,\n      business: businessData,\n      businessAddresses: businessAddressesData,\n      manager: managerData,\n      officer: officerData,\n      page: pageData,\n      registeredAgent: registeredAgentData\n    };\n    return getFlows(url, registration);\n  },\n  go = (jump) => {\n    const url = document.location.pathname.substring(URLS.BASE.length + 2),\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index;\n\n    if (jumpIndex < 0) {\n      browserHistory.push(`/${URLS.BASE}/${flowOrder[0]}`);\n    } else if (jumpIndex >= flowOrder.length) {\n      if (businessData.id) {\n        document.location = `/${COMPANY_URLS.BASE}/${businessData.id}`;\n      } else {\n        document.location = `/${DASHBOARD_URLS.BASE}`;\n      }\n    } else {\n      browserHistory.push(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1);\n    }\n  },\n  goTo = (dispatch, actionKey, url) => {\n    logger.logAction(actionKey);\n    dispatch({\n      type: actionKey\n    });\n    browserHistory.push(`/${URLS.BASE}/${url}`);\n  },\n  updateSnapshots = () => {\n    _assign(businessData, getReducerSnapshot(businessKey, defaultBusinessData));\n    _assign(businessAddressesData, getReducerSnapshot(businessAddressesKey, defaultBusinessAddressesData));\n    _assign(blrData, getReducerSnapshot(blrKey, defaultBlrData));\n    _assign(managerData, getReducerSnapshot(managerKey, defaultManagerData));\n    _assign(officerData, getReducerSnapshot(officerKey, defaultOfficerData));\n    _assign(pageData, getReducerSnapshot(pageKey, defaultPageData));\n    _assign(registeredAgentData, getReducerSnapshot(registeredAgentKey, defaultRegisteredAgentData));\n  };\n\nexport const getEntryPoint = (fromBack, forLogin) => {\n  updateSnapshots();\n\n  const flow = getFlowOrder(),\n    index1 = (fromBack && !blrData.skipBlr) ? flow.length - 1 : 0,\n    index = forLogin ? 1 : index1;\n\n  return `/${URLS.BASE}/${flow[index]}`;\n};\n\nexport const goBack = (dispatch) => {\n  logger.logAction(ACTIONS.GO_BACK, { location: document.location.pathname.substring(URLS.BASE.length + 2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const getNextUncompletedPage = (dispatch, location) => {\n  updateSnapshots();\n\n  const\n    { registrationFlow } = pageData,\n    flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index + 1;\n\n  if (index >= 0) {\n    if (jumpIndex >= flowOrder.length) {\n      if (registrationFlow === 'bl') {\n        if (businessData.id) {\n          return { isDashboard: true, url: `/${COMPANY_URLS.BASE}/${businessData.id}` };\n        }\n        return { isDashboard: true, url: `/${DASHBOARD_URLS.BASE}` };\n      }\n      return { isDashboard: false, url: getPostPurchaseEntryPoint() };\n    }\n    return { isDasboard: false, url: `/${URLS.BASE}/${flowOrder[jumpIndex]}` };\n  }\n  return { isDashboard: false, url: '' };\n};\n\nexport const goToNextUncompletedPage = (dispatch, location) => {\n  updateSnapshots();\n\n  const\n    { registrationFlow } = pageData,\n    flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index + 1;\n\n  if (index >= 0) {\n    if (jumpIndex >= flowOrder.length) {\n      if (registrationFlow === 'bl') {\n        if (businessData.id) {\n          document.location = `/${COMPANY_URLS.BASE}/${businessData.id}`;\n        } else {\n          document.location = `/${DASHBOARD_URLS.BASE}`;\n        }\n      } else {\n        browserHistory.push(getPostPurchaseEntryPoint());\n      }\n    } else {\n      browserHistory.push(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n    return true;\n  }\n\n  return false;\n};\n\nexport const goToCorpAsstSecretary = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CORP_ASST_SEC, URLS.CORP_ASST_SEC);\n};\n\nexport const goToCorpPresident = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CORP_PRES, URLS.CORP_PRES);\n};\n\nexport const goToCorpSecretary = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CORP_SEC, URLS.CORP_SEC);\n};\n\nexport const goToCorpTreasurer = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CORP_TRSR, URLS.CORP_TRSR);\n};\n\nexport const goToCorpVicePresident = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CORP_VP, URLS.CORP_VP);\n};\n\nexport const goToPrimaryContact = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_PRIM_CONTACT, URLS.PRIM_CONTACT);\n};\n\nexport const setAddressesModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ADDR_MODAL, false);\n};\n\nexport const setAuthorizedSignatory = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.AUTH_SIG, false);\n};\n\nexport const setAuthorizedSignatoryModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.AUTH_SIG_MODAL, false);\n};\n\nexport const setBusinessIndustry = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_INDUSTRY, false);\n};\n\nexport const setBusinessOutOfHome = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_AT_HOME, false);\n};\n\nexport const setChoosePrimaryContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CHOOSE_PRIM_CONTACT, false);\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.COMPLETE, true);\n};\n\nexport const setCorpAsstSecretary = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_ASST_SEC, false);\n};\n\nexport const setCorpChooseAsstSecretary = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_CHOOSE_ASST_SEC, false);\n};\n\nexport const setCorpChoosePresident = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_CHOOSE_PRES, false);\n};\n\nexport const setCorpChooseSecretary = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_CHOOSE_SEC, false);\n};\n\nexport const setCorpChooseTreasurer = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_CHOOSE_TRSR, false);\n};\n\nexport const setCorpChooseVicePresident = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_CHOOSE_VP, false);\n};\n\nexport const setCorpDirectorCount = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_DIR_COUNT, false);\n};\n\nexport const setCorpDirectorList = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_DIR_LIST, false);\n};\n\nexport const setCorpDirectorListModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_DIR_LIST_MODAL, false);\n};\n\nexport const setCorpHasAsstSecretary = (dispatch, data) => {\n  officerData.hasAsstSecretary = data.hasAsstSecretary;\n  set(dispatch, data, ACTIONS.CORP_HAS_ASST_SEC, false);\n};\n\nexport const setCorpHasVicePresident = (dispatch, data) => {\n  officerData.hasVicePresident = data.hasVicePresident;\n  set(dispatch, data, ACTIONS.CORP_HAS_VP, false);\n};\n\nexport const setCorpOfficerListModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_OFF_LIST_MODAL, false);\n};\n\nexport const setCorpPresident = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_PRES, false);\n};\n\nexport const setCorpSecretary = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_SEC, false);\n};\n\nexport const setCorpTreasurer = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_TRSR, false);\n};\n\nexport const setCorpVicePresident = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_VP, false);\n};\n\nexport const setDataConfirmation = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.DATA_CONFIRM, false);\n};\n\nexport const setEmployeesCount = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.EMPL_COUNT, false);\n};\n\nexport const setHasDBAs = (dispatch, data) => {\n  blrData.hasDBAs = data.hasDBAs;\n  set(dispatch, data, ACTIONS.HAS_DBAS, false);\n};\n\nexport const setHasEmployees = (dispatch, data) => {\n  blrData.hasEmployees = data.hasEmployees;\n  set(dispatch, data, ACTIONS.HAS_EMPLOYEES, false);\n};\n\nexport const setLLCBusinessRunners = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_BUS_RUN, false);\n};\n\nexport const setLLCManagerCount = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MGR_COUNT, false);\n};\n\nexport const setLLCManagerList = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MGR_LIST, false);\n};\n\nexport const setLLCManagerListModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MGR_LIST_MODAL, false);\n};\n\nexport const setLLCManagerOption = (dispatch, data) => {\n  managerData.managerType = data.managerType;\n  set(dispatch, data, ACTIONS.LLC_MGR_OPT, false);\n};\n\nexport const setLLCManagerOptionModal = (dispatch, data) => {\n  managerData.managerType = data.managerType;\n  set(dispatch, data, ACTIONS.LLC_MGR_OPT_MODAL, false);\n};\n\nexport const setLLCMemberCount = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MBR_COUNT, false);\n};\n\nexport const setLLCMemberList = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MBR_LIST, false);\n};\n\nexport const setLLCMemberListModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MBR_LIST_MODAL, false);\n};\n\nexport const setLicenseDataModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LIC_DATA_MODAL, false);\n};\n\nexport const setMailingAddress = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.MAIL_ADDR, false);\n};\n\nexport const setPhysicalAddress = (dispatch, data) => {\n  businessAddressesData.usePhysicalAsMailing = data.usePhysicalAsMailing;\n  set(dispatch, data, ACTIONS.PHYS_ADDR, false);\n};\n\nexport const setPrimaryContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIM_CONTACT, false);\n};\n\nexport const setPrimaryContactModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIM_CONTACT_MODAL, false);\n};\n\nexport const setRegisteredAgent = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.REG_AGT, false);\n};\n\nexport const setRegisteredAgentModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.REG_AGT_MODAL, false);\n};\n\nexport const setShare = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.SHARE, true);\n};\n\nexport const setStartBlrData = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.START_BLR_DATA, true);\n};\n\nexport const setStartBusData = (dispatch, data) => {\n  updateSnapshots();\n  set(dispatch, data, ACTIONS.START_BUS_DATA, true);\n};\n\nexport const updateContacts = (dispatch, data) => {\n  const { contactType } = data;\n  const type = {\n    member: 'UPDATE_MBR',\n    manager: 'UPDATE_MGR',\n    director: 'UPDATE_DIR',\n    officer: 'UPDATE_OFC'\n  };\n  const action = type[contactType || ''];\n  if (action) set(dispatch, data, ACTIONS[action], false);\n};\n\nexport const updateOrder = (dispatch, reducerData, filingFees, advance) => {\n  logger.logAction(ACTIONS.UPDATE_ORDER);\n  dispatch({\n    type: ACTIONS.UPDATE_ORDER\n  });\n  registrationService.updateBusinessLicense(reducerData, filingFees).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.UPDATE_ORDER_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.UPDATE_ORDER_COMPLETE,\n      payload: {\n        data,\n        reducerData\n      }\n    });\n    if (advance) {\n      go(1);\n    }\n  }).catch((err) => {\n    logger.error(ACTIONS.UPDATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.UPDATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  getNextUncompletedPage,\n  goToNextUncompletedPage,\n  goToCorpAsstSecretary,\n  goToCorpPresident,\n  goToCorpSecretary,\n  goToCorpTreasurer,\n  goToCorpVicePresident,\n  goToPrimaryContact,\n  setAddressesModal,\n  setAuthorizedSignatory,\n  setAuthorizedSignatoryModal,\n  setBusinessIndustry,\n  setBusinessOutOfHome,\n  setChoosePrimaryContact,\n  setComplete,\n  setCorpAsstSecretary,\n  setCorpChooseAsstSecretary,\n  setCorpChoosePresident,\n  setCorpChooseSecretary,\n  setCorpChooseTreasurer,\n  setCorpChooseVicePresident,\n  setCorpDirectorCount,\n  setCorpDirectorList,\n  setCorpDirectorListModal,\n  setCorpHasAsstSecretary,\n  setCorpHasVicePresident,\n  setCorpPresident,\n  setCorpSecretary,\n  setCorpTreasurer,\n  setCorpVicePresident,\n  setDataConfirmation,\n  setEmployeesCount,\n  setHasDBAs,\n  setHasEmployees,\n  setLLCBusinessRunners,\n  setLLCManagerCount,\n  setLLCManagerList,\n  setLLCManagerListModal,\n  setLLCManagerOption,\n  setLLCManagerOptionModal,\n  setLLCMemberCount,\n  setLLCMemberList,\n  setLLCMemberListModal,\n  setLicenseDataModal,\n  setMailingAddress,\n  setPhysicalAddress,\n  setPrimaryContact,\n  setPrimaryContactModal,\n  setRegisteredAgent,\n  setRegisteredAgentModal,\n  setShare,\n  setStartBlrData,\n  setStartBusData,\n  updateContacts,\n  updateOrder,\n  resetAllData\n};\n","import { URLS } from '../../../constants/register_blr';\nimport { isLoggedIn } from '../../../utils/AuthService';\n\n/* eslint-disable max-statements */\nconst\n  getNewCustomerFlowOrder = (url) => {\n    if (url === URLS.LOGIN_POST) {\n      return [ URLS.LOGIN_POST ];\n    }\n\n    return [ URLS.ACCOWN_NAME, URLS.ACCOWN_CONTACT, URLS.BUS_EXIST, URLS.BUS_TYPE, URLS.BUS_NAME, URLS.DOM_JUR, URLS.BUS_DESC, URLS.DATA_CONFIRM, URLS.PAYMENT, URLS.LOGIN_POST ];\n  },\n  getNewCompanyFlowOrder = (url, registration) => {\n    const\n      { business, page } = registration,\n      { isSimulated, id } = page,\n      // eslint-disable-next-line no-sparse-arrays\n      flowItems = [\n        ...(isSimulated && id ? [] : [URLS.BUS_ID]), /* for simulated entities dont display the pick entity */\n        URLS.BUS_EXIST, URLS.BUS_TYPE, URLS.BUS_NAME, URLS.DOM_JUR, URLS.BUS_DESC, URLS.DATA_CONFIRM, URLS.PAYMENT\n      ],\n      { hasCompanies } = business;\n\n    if (!hasCompanies) {\n      flowItems.shift();\n    }\n    if (url === URLS.ACCOWN_NAME) { // For the logged-in transition\n      flowItems.unshift(URLS.ACCOWN_NAME);\n    }\n    if (url === URLS.ACCOWN_CONTACT) {\n      flowItems.unshift(URLS.ACCOWN_CONTACT);\n    }\n    return flowItems;\n  },\n  getExistingCompanyFlowOrder = () => {\n    return [ URLS.BUS_ID, URLS.PAYMENT ];\n  },\n  getFlowOrder = (url, registration) => {\n    const\n      { business, page } = registration,\n      { id } = business,\n      { fromDashboard, isSimulated } = page,\n      startConfirm = URLS.START,\n      loggedIn = isLoggedIn();\n\n    if (!loggedIn) {\n      return getNewCustomerFlowOrder(url, registration);\n    }\n    if (fromDashboard) {\n      if (id && !isSimulated) {\n        return [ startConfirm, ...getExistingCompanyFlowOrder(url, registration) ];\n      }\n      return [ startConfirm, ...getNewCompanyFlowOrder(url, registration) ];\n    }\n    if (id && !isSimulated) {\n      return getExistingCompanyFlowOrder(url, registration);\n    }\n    return getNewCompanyFlowOrder(url, registration);\n  };\n\nexport default {\n  getExistingCompanyFlowOrder,\n  getNewCompanyFlowOrder,\n  getNewCustomerFlowOrder,\n  getFlowOrder\n};\n","import { getRegisterEINFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterEINFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { getEntryPoint as getCompleteEntryPoint } from '../complete_blr';\nimport { getStateFees as getInitStateFees, setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS, URLS } from '../../constants/register_blr';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, registrationService } from '../../services';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport { storageKey as pageKey } from '../../reducers/registration/page';\nimport { getAppEntryPoint } from '../../utils/AppEntryPoint';\nimport { isLoggedIn } from '../../utils/AuthService';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\nimport { setIsFreeAccount } from '../../utils/FreeAccountUtils';\n\nconst\n  defaultBusinessData = { id: '' },\n  businessData = _assign(getReducerSnapshot(businessKey, defaultBusinessData, { hasCompanies: true })),\n  defaultPageData = { fromDashboard: false },\n  pageData = getReducerSnapshot(pageKey, defaultPageData),\n  getFlowOrder = (url) => {\n    const registration = { business: businessData, page: pageData };\n    return getFlow(url, registration);\n  },\n  getCompanyUrl = () => {\n    if (pageData.companyId) {\n      return `/${COMPANY_URLS.BASE}/${pageData.companyId}`;\n    }\n    return `/${DASHBOARD_URLS.BASE}`;\n  },\n  goInFlow = (flowOrder, jumpIndex, dispatch, doReplace) => {\n    const\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      document.location = getAppEntryPoint();\n    } else if (jumpIndex >= flowOrder.length) {\n      browserHistory.push(getCompleteEntryPoint(false));\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  go = (jump, dispatch, doReplace) => {\n    const url = document.location.pathname.substring(URLS.BASE.length + 2),\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      altMethod = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      document.location = getCompanyUrl();\n    } else if (jumpIndex >= flowOrder.length) {\n      document.location = getCompanyUrl();\n    } else {\n      altMethod(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl, doReplace) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch, doReplace);\n    }\n  },\n  doReset = () => {\n    _assign(businessData, defaultBusinessData, { hasCompanies: true });\n    _assign(pageData, defaultPageData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  logger.logAction(ACTIONS.GO_BACK, { location: document.location.pathname.substring(URLS.BASE.length + 2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const goToNextUncompletedPage = (dispatch, location, forceBusinessId) => {\n  if (forceBusinessId === 'bl') {\n    browserHistory.push(`/${URLS.BASE}/${URLS.BUS_ID}`);\n    return true;\n  }\n\n  const\n    flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index >= 0 ? index + 1 : index;\n\n  if (index >= 0) {\n    goInFlow(flowOrder, jumpIndex, dispatch, false);\n    return true;\n  }\n  return false;\n};\n\nexport const getStateFees = (dispatch, data, filingFees) => {\n  if (!filingFees[data.domesticJurisdiction] || !filingFees[data.domesticJurisdiction].business_license_report) {\n    getInitStateFees(dispatch, data.domesticJurisdiction);\n  }\n};\n\nexport const setAccountOwnerContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOWN_CONTACT, true);\n};\n\nexport const setAccountOwnerName = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOWN_NAME, true);\n};\n\nexport const setBusinessDataModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_DATA_MODAL, false);\n};\n\nexport const setBusinessDescription = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_DESC, true);\n};\n\nexport const setBusinessExist = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_EXIST, true);\n};\n\nexport const setBusinessId = (dispatch, data) => {\n  const { business, id } = data,\n    { hasCompanies } = business || data;\n\n  businessData.id = id;\n\n  set(dispatch, data, ACTIONS.BUS_ID, true, !hasCompanies);\n  businessData.hasCompanies = hasCompanies;\n};\n\nexport const setBusinessName = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_NAME, true);\n};\n\nexport const setBusinessType = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_TYPE, true);\n};\n\nexport const setContactDataModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOWN_MODAL, false);\n};\n\nexport const setDataConfirmation = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.DATA_CONFIRM, true);\n};\n\nexport const setDomesticJurisdiction = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.DOM_JUR, true);\n};\n\nexport const setInit = (dispatch, data) => {\n  const\n    { fromDashboard = false, id, isSimulated  } = data;\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  pageData.fromDashboard = fromDashboard;\n  pageData.id = id;\n  pageData.isSimulated = isSimulated;\n  setIsFreeAccount(isSimulated);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(getEntryPoint());\n};\n\nexport const setLogin = (dispatch) => {\n  set(dispatch, { flow: 'bl' }, ACTIONS.LOGIN, false);\n};\n\nexport const setLoginPostPurchase = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LOGIN_POST, false);\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setStart = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nconst createBLROrder = (dispatch, reducerData) => {\n  registrationService.createBusinessLicense(reducerData).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      payload: {\n        data,\n        reducerData\n      }\n    });\n\n    trackEvent('Purchase', 'complete', 'BusLic');\n    go(1);\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { customer } = reducerData,\n    { cardToken, expMonth, expYear, cvc, brand, last4 } = customer;\n\n  if (!isLoggedIn() || !cardToken) {\n    createBLROrder(dispatch, reducerData);\n  } else {\n    const data = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createBLROrder(dispatch, reducerData);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const createLead = (dispatch, lead) => {\n  logger.logAction(ACTIONS.CREATE_LEAD);\n  dispatch({\n    type: ACTIONS.CREATE_LEAD\n  });\n  registrationService.createLead(lead).then((response) => {\n    logger.logAction(ACTIONS.CREATE_LEAD_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.CREATE_LEAD_COMPLETE,\n      payload: {\n        data: response\n      }\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_LEAD_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_LEAD_COMPLETE,\n      error: true,\n      payload: {\n        data: err\n      }\n    });\n  });\n};\n\nexport const updateLead = (dispatch, lead, leadUuid) => {\n  logger.logAction(ACTIONS.UPDATE_LEAD);\n  dispatch({\n    type: ACTIONS.UPDATE_LEAD\n  });\n  registrationService.updateLead(leadUuid, lead).then((response) => {\n    logger.logAction(ACTIONS.UPDATE_LEAD_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.UPDATE_LEAD_COMPLETE,\n      payload: {\n        data: response\n      }\n    });\n  }).catch((err) => {\n    console.error('ERROR! The following content was not sufficient to update a lead: ', lead);\n    logger.error(ACTIONS.UPDATE_LEAD_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.UPDATE_LEAD_COMPLETE,\n      error: true,\n      payload: {\n        data: err\n      }\n    });\n  });\n};\n\nexport const setBackFromCompleteBusiness = () => {\n  browserHistory.push(getEntryPoint());\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  goToNextUncompletedPage,\n  getStateFees,\n  orderAlreadyCreated,\n  setAccountOwnerContact,\n  setAccountOwnerName,\n  setBusinessDataModal,\n  setBusinessDescription,\n  setBusinessExist,\n  setBusinessId,\n  setBusinessName,\n  setBusinessType,\n  setContactDataModal,\n  setDomesticJurisdiction,\n  setInit,\n  setLogin,\n  setLoginPostPurchase,\n  setPayment,\n  createOrder,\n  createLead,\n  setStart,\n  setBackFromCompleteBusiness\n};\n","import { URLS } from '../../../constants/register_account';\n\n/* eslint-disable max-statements */\nconst\n  getFlowOrder = (url, registration) => {\n    if (url === URLS.STEP_1 || url === URLS.STEP_2 || url === URLS.STEP_3) {\n      return [ URLS.STEP_1, URLS.STEP_2, URLS.STEP_3 ];\n    }\n\n    const { business } = registration,\n      { hasExistingBusiness } = business,\n      flow = [ URLS.ACCOWN_NAME, URLS.HAS_EX_BUS ];\n\n    if (hasExistingBusiness) {\n      flow.push(URLS.BUS_TYPE, URLS.BUS_NAME, URLS.DOM_JUR);\n    }\n\n    flow.push(URLS.ACCOWN_CONTACT, URLS.STEP_1, URLS.STEP_2, URLS.STEP_3);\n    return flow;\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegisterGSFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterGSFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS, URLS } from '../../constants/register_account';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport logger from '../../utils/ClientLogger';\nimport { accountService } from '../../services';\nimport { getAppEntryPoint } from '../../utils/AppEntryPoint';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\n\nconst\n  defaultBusinessData = { id: '', type: 'LLCX', addressMatch: false, addressIsGoogle: false, domesticJurisdiction: '', state: '', noIdMatches: false },\n  businessData = getReducerSnapshot(businessKey, defaultBusinessData),\n  getFlowOrder = (url) => {\n    const\n      registration = {\n        business: businessData\n      },\n      flow = getFlow(url, registration);\n\n    return flow;\n  },\n  go = (jump) => {\n    const\n      url = document.location.pathname.substring(URLS.BASE.length + 2),\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index;\n\n    if (jumpIndex < 0) {\n      document.location = getAppEntryPoint();\n    } else if (jumpIndex >= flowOrder.length) {\n      document.location = `/${DASHBOARD_URLS.BASE}`;\n    } else {\n      browserHistory.push(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1);\n    }\n  },\n  doReset = () => {\n    _assign(businessData, defaultBusinessData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const path = document.location.pathname,\n    idx = path.indexOf(URLS.BASE),\n    idx2 = idx + URLS.BASE.length + 2;\n\n  logger.logAction(ACTIONS.GO_BACK, { location: path.substring(idx2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const setAccountOwnerContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOWN_CONTACT, false);\n};\n\nexport const setAccountOwnerName = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOWN_NAME, true);\n};\n\nexport const setBusinessName = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_NAME, true);\n};\n\nexport const setBusinessType = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_TYPE, true);\n};\n\nexport const setCompleteStep1 = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.STEP_1, true);\n};\n\nexport const setCompleteStep2 = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.STEP_2, true);\n};\n\nexport const setCompleteStep3 = (dispatch, data) => {\n  doReset();\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  set(dispatch, data, ACTIONS.STEP_3, false);\n};\n\nexport const setDomesticJurisdiction = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.DOM_JUR, true);\n};\n\nexport const setHasExistingBusiness = (dispatch, data) => {\n  businessData.hasExistingBusiness = data.hasExistingBusiness;\n  set(dispatch, data, ACTIONS.HAS_EX_BUS, true);\n};\n\nexport const setInit = (dispatch, data) => {\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(getEntryPoint());\n};\n\nexport const createAccount = (dispatch, reducerData) => {\n  logger.logAction(ACTIONS.CREATE_ACCOUNT);\n  dispatch({\n    type: ACTIONS.CREATE_ACCOUNT\n  });\n  accountService.create(reducerData).then((response) => {\n    const { data } = response;\n\n    logger.logAction(ACTIONS.CREATE_ACCOUNT_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.CREATE_ACCOUNT_COMPLETE,\n      payload: {\n        data,\n        reducerData\n      }\n    });\n    go(1);\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ACCOUNT_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ACCOUNT_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const accountAlreadyCreated = () => {\n  go(1);\n};\n\nexport default {\n  goBack,\n  setAccountOwnerName,\n  accountAlreadyCreated,\n  setAccountOwnerContact,\n  setBusinessName,\n  setBusinessType,\n  setHasExistingBusiness,\n  setDomesticJurisdiction,\n  setInit,\n  setCompleteStep1,\n  setCompleteStep2,\n  setCompleteStep3,\n  resetAllData\n};\n","import { URLS } from '../../../constants/register_cora_pf';\nimport { isLoggedIn } from '../../../utils/AuthService';\n\nconst\n  getFlowOrder = () => {\n    if (isLoggedIn()) {\n      return [ URLS.QUESTIONNAIRE, URLS.CONGRATS];\n    }\n    return [ URLS.QUESTIONNAIRE, URLS.CONGRATS, URLS.LOGIN_POST ];\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegistrationFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegistrationFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","/* eslint-disable max-statements */\n/* eslint-disable no-undef */\nimport _get from 'lodash/get';\nimport { STEPS, VARIANTS } from '../../constants/register_cora_pf';\nimport { getTestVariant } from '../../utils/pfUtils';\nimport { isLoggedIn } from '../../utils/AuthService';\n\nconst getNewBusinessStepOrder = (coraData) => {\n  const\n    { requestedJurisdictionCount, domesticEntity, domJurNotReqJurs, foreignQualFiling, foreignRegistration, formWithZen, hasFormation, saveData, selfFile } = coraData,\n    stepOrder = [ STEPS.WELCOME, STEPS.REG_AGENT ];\n\n  if (isLoggedIn()) {\n    stepOrder.push(STEPS.BUS_ID);\n  } else {\n    stepOrder.push(STEPS.ACCOWN_FIRST_NAME);\n  }\n  stepOrder.push(STEPS.HAS_FORMATION);\n  if (!hasFormation) {\n    stepOrder.push(STEPS.FORM_WITH_ZEN);\n    if (formWithZen) {\n      stepOrder.push(STEPS.GO_TO_FORMATION);\n      return stepOrder;\n    }\n  }\n\n  stepOrder.push(STEPS.REQ_JURS);\n  if (requestedJurisdictionCount === 1) {\n    stepOrder.push(STEPS.DOM_ENTITY);\n    if (!domesticEntity) {\n      stepOrder.push(STEPS.DOM_JUR);\n      stepOrder.push(STEPS.UPSELL_DOM_JUR);\n      if (hasFormation) {\n        stepOrder.push(STEPS.FOREIGN_REG);\n        if (!foreignRegistration) {\n          stepOrder.push(STEPS.FOREIGN_QUAL_FILING);\n          if (!foreignQualFiling) {\n            stepOrder.push(STEPS.HOW_TO_FILE);\n            if (selfFile === 'do-not-know') {\n              stepOrder.push(STEPS.RETURN_TO_LANDING);\n              return stepOrder;\n            }\n          }\n        }\n      }\n    }\n  } else {\n    stepOrder.push(STEPS.CHOOSE_DOM_JUR);\n    if (domJurNotReqJurs) {\n      stepOrder.push(STEPS.DOM_JUR);\n      stepOrder.push(STEPS.UPSELL_DOM_JUR);\n    }\n    if (hasFormation) {\n      if (!domJurNotReqJurs && requestedJurisdictionCount === 2) {\n        stepOrder.push(STEPS.FOREIGN_REG);\n      } else {\n        stepOrder.push(STEPS.CHOOSE_HAS_FORMATION);\n      }\n      if (!foreignRegistration) {\n        stepOrder.push(STEPS.FOREIGN_QUAL_FILING);\n        if (!foreignQualFiling) {\n          stepOrder.push(STEPS.HOW_TO_FILE);\n          if (selfFile === 'do-not-know') {\n            stepOrder.push(STEPS.RETURN_TO_LANDING);\n            return stepOrder;\n          }\n        }\n      }\n    }\n  }\n  stepOrder.push(STEPS.BUS_TYPE, STEPS.BUS_NAME);\n  if (!isLoggedIn()) {\n    stepOrder.push(STEPS.CHECKPOINT);\n    if (saveData) {\n      stepOrder.push(STEPS.ACCOWN_LAST_NAME, STEPS.ACCOWN_EMAIL, STEPS.ACCOWN_PHONE);\n    }\n  }\n  stepOrder.push(STEPS.PLAN, STEPS.CART, STEPS.PAYMENT);\n\n  return stepOrder;\n\n};\n\nconst getExistingBusinessStepOrder = (coraData) => {\n  const\n    { requestedJurisdictionCount, foreignQualFiling, foreignRegistration, selfFile } = coraData,\n    stepOrder = [ STEPS.WELCOME, STEPS.REG_AGENT, STEPS.BUS_ID, STEPS.REQ_JURS ];\n\n  if (requestedJurisdictionCount === 1) {\n    stepOrder.push(STEPS.FOREIGN_REG);\n    if (!foreignRegistration) {\n      stepOrder.push(STEPS.FOREIGN_QUAL_FILING);\n      if (!foreignQualFiling) {\n        stepOrder.push(STEPS.HOW_TO_FILE);\n        if (selfFile === 'do-not-know') {\n          stepOrder.push(STEPS.RETURN_TO_LANDING);\n          return stepOrder;\n        }\n      }\n    }\n  } else {\n    stepOrder.push(STEPS.CHOOSE_HAS_FORMATION);\n    if (!foreignRegistration) {\n      stepOrder.push(STEPS.FOREIGN_QUAL_FILING);\n      if (!foreignQualFiling) {\n        stepOrder.push(STEPS.HOW_TO_FILE);\n        if (selfFile === 'do-not-know') {\n          stepOrder.push(STEPS.RETURN_TO_LANDING);\n          return stepOrder;\n        }\n      }\n    }\n  }\n  stepOrder.push(STEPS.PLAN, STEPS.CART, STEPS.PAYMENT);\n\n  return stepOrder;\n};\n\nconst getStepOrderMobileMVP = (coraData) => {\n  const\n    { busDetailsLocked } = coraData;\n\n  if (busDetailsLocked) {\n    return getExistingBusinessStepOrder(coraData);\n  }\n  return getNewBusinessStepOrder(coraData);\n};\n\n//// Variant t3 flow\nconst getStepOrderMobileMaxLTV = () => { return []; };\n//const getStepOrderDesktopMaxLTV = () => { return []; };\n\nconst variantMap = {\n  [VARIANTS.MVP]: {\n    mobile: getStepOrderMobileMVP,\n    desktop: getStepOrderMobileMVP\n  },\n  [VARIANTS.MAX_LTV]: {\n    mobile: getStepOrderMobileMaxLTV,\n    desktop: getStepOrderMobileMaxLTV\n  }\n};\n\nconst noScrollingMap = {\n  [VARIANTS.MVP]: [STEPS.CART, STEPS.PAYMENT],\n  [VARIANTS.MAX_LTV]: [STEPS.CART, STEPS.PAYMENT]\n};\n\nconst provideFallbackFlowFunction = () => {\n  return getStepOrderMobileMVP;\n  //return window.zenIsMobile ? getStepOrderMobileMVP : getStepOrderDesktopMVP;\n};\n\nconst getStepsFlow = (coraData) => {\n  const variant = getTestVariant() || VARIANTS.MVP || 'mvp';\n  const device = window.zenIsMobile ? 'mobile' : 'desktop';\n  const flowFunction = _get(variantMap, `${variant}.${device}`, provideFallbackFlowFunction());\n  return flowFunction(coraData);\n};\n\nconst noScrollingSteps = () => {\n  const variant = getTestVariant() || VARIANTS.MVP || 'mvp';\n  return _get(noScrollingMap, variant, []);\n};\n\nexport { getStepsFlow, noScrollingSteps };\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport _isEmpty from 'lodash/isEmpty';\nimport { browserHistory } from 'react-router';\n\nimport getFlow from './flows';\nimport { setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMPLETE_CORA_URLS } from '../../constants/complete_cora';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS, STEPS, URLS } from '../../constants/register_cora_pf';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { URLS as WEBSITE_URLS } from '../../constants/website';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport { storageKey as coraKey } from '../../reducers/registration/cora';\nimport { accountService, registrationService } from '../../services';\nimport { getAppEntryPoint } from '../../utils/AppEntryPoint';\nimport { isLoggedIn } from '../../utils/AuthService';\nimport logger from '../../utils/ClientLogger';\nimport { setGlobalProgressBar } from '../../utils/ProgressBar';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\nimport { getStepsFlow, noScrollingSteps } from './stepsFlowFactory';\nimport { setIsFreeAccount } from '../../utils/FreeAccountUtils';\nimport LeadManager from '../Lead';\n\nlet currentStep = STEPS.WELCOME;\n\nconst\n  defaultBusinessData = { id: '' },\n  businessData = _assign(getReducerSnapshot(businessKey, defaultBusinessData), { noIdMatches: false, hasCompanies: true, needsFormation: null }),\n  defaultCoraData = {\n    busDetailsLocked: false,\n    businessTypeOnParam: false,\n    domJurNotReqJurs: false,\n    foreignRegistration: false,\n    foreignQualFiling: false,\n    formationOnParam: false,\n    formWithZen: false,\n    hasFormation: false,\n    idOnParam: false,\n    requestedJurisdictionOnParam: false,\n    requestedJurisdictionCount: 0,\n    selfFile: false,\n    step: ''\n  },\n  coraData = getReducerSnapshot(coraKey, defaultCoraData),\n\n  getFlowOrder = (url) => {\n    const\n      flow = getFlow(url);\n\n    return flow;\n  };\n\nexport const getStepOrder = () => {\n  return getStepsFlow(coraData);\n};\n\nexport const getEntityType = () => {\n  return businessData.type;\n};\n\nexport const getNoScrollSteps = () => {\n  return noScrollingSteps() || [];\n};\n\nexport const getStepIndex = (step) => {\n  const order = getStepOrder(),\n    index = _indexOf(order, step);\n\n  return index === -1 ? order.length : index;\n};\n\nexport const getNextStep = (step, resetStep) => {\n  const\n    stepOrder = getStepOrder(),\n    requestedStepIndex = step ? _indexOf(stepOrder, step) : -1,\n    currentStepIndex = coraData.step ? _indexOf(stepOrder, coraData.step) : -2,\n    nextStep = resetStep || requestedStepIndex >= currentStepIndex ? stepOrder[requestedStepIndex + 1] : coraData.step;\n\n  coraData.step = nextStep;\n  return nextStep;\n};\n\nconst\n  go = (jump, doReplace) => {\n    const url = document.location.pathname.substring(URLS.BASE.length + 2),\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      setGlobalProgressBar(flowOrder, '');\n      if (!isLoggedIn()) {\n        document.location = getAppEntryPoint();\n      } else {\n        document.location = `/${DASHBOARD_URLS.BASE}`;\n      }\n    } else if (jumpIndex >= flowOrder.length) {\n      setGlobalProgressBar(flowOrder, COMPLETE_CORA_URLS.START);\n      browserHistory.push(`/${COMPLETE_CORA_URLS.BASE}/${COMPLETE_CORA_URLS.START}`);\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n      return flowOrder[jumpIndex];\n    }\n    return '';\n  },\n  set = (dispatch, data, actionKey, step, moveUrl, doReplace) => {\n    currentStep = getNextStep(step);\n\n    const d = step ? _assign({ nextStep: currentStep }, data) : data;\n    logger.logAction(actionKey, d);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data: d\n      }\n    });\n    if (moveUrl) {\n      go(1, doReplace);\n    }\n  },\n\n  setStep = (dispatch, data, actionKey, step, resetStep) => {\n    currentStep = getNextStep(step, resetStep);\n    const d = step ? _assign({ nextStep: currentStep }, data) : data;\n    logger.logAction(actionKey, d);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data: d\n      }\n    });\n  },\n\n  cartUpdate = (dispatch, data, actionKey) => {\n    const d = _assign({ nextStep: STEPS.CART }, data);\n    logger.logAction(actionKey, d);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data: d\n      }\n    });\n  },\n\n  doReset = () => {\n    _assign(businessData, defaultBusinessData);\n    _assign(coraData, defaultCoraData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n  setGlobalProgressBar(flowOrder, flowOrder[0]);\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const resetAllData = (dispatch, data) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET,\n    payload: {\n      data: data || {}\n    }\n  });\n};\n\nexport const goToNextUncompletedPage = (dispatch, location) => {\n  const\n    flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index + 1;\n\n  if (index >= 0) {\n    if (jumpIndex >= flowOrder.length) {\n      setGlobalProgressBar(flowOrder, COMPLETE_CORA_URLS.START);\n      browserHistory.push(`/${COMPLETE_CORA_URLS.BASE}/${COMPLETE_CORA_URLS.START}`);\n    } else {\n      setGlobalProgressBar(flowOrder, flowOrder[jumpIndex]);\n      browserHistory.push(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n    return true;\n  }\n\n  return false;\n};\n\nexport const setLead = (dispatch, createOrUpdateLead) => {\n  const snapshotData = getReducerSnapshot(coraKey, defaultCoraData);\n\n  const leadManager = new LeadManager(ACTIONS);\n  leadManager.setLead(dispatch, createOrUpdateLead, {\n    firstName: snapshotData.firstName,\n    lastName: snapshotData.lastName,\n    phone: snapshotData.phoneNumber || '',\n    email: snapshotData.email,\n    searchstate: snapshotData.domesticJurisdiction,\n    selectedState: snapshotData.domesticJurisdiction,\n    entityName: snapshotData.name,\n    entityType: getEntityType(),\n    purchase_flow: 'cora_pf'\n  });\n};\n\nexport const setAccountOwnerEmail = (dispatch, data, createOrUpdateLead) => {\n  setStep(dispatch, data, ACTIONS.ACCOWN_EMAIL, STEPS.ACCOWN_EMAIL, false);\n  setLead(dispatch, createOrUpdateLead);\n};\n\nexport const setAccountOwnerFirstName = (dispatch, data) => {\n  setStep(dispatch, data, ACTIONS.ACCOWN_FIRST_NAME, STEPS.ACCOWN_FIRST_NAME, false);\n};\n\nexport const setAccountOwnerLastName = (dispatch, data) => {\n  setStep(dispatch, data, ACTIONS.ACCOWN_LAST_NAME, STEPS.ACCOWN_LAST_NAME, false);\n};\n\nexport const setAccountOwnerMiddleName = (dispatch, data) => {\n  setStep(dispatch, data, ACTIONS.ACCOWN_MIDDLE_NAME, STEPS.ACCOWN_MIDDLE_NAME, false);\n};\n\nexport const setAccountOwnerPhone = (dispatch, data, createOrUpdateLead) => {\n  setStep(dispatch, data, ACTIONS.ACCOWN_PHONE, STEPS.ACCOWN_PHONE, false);\n  setLead(dispatch, createOrUpdateLead);\n};\n\nexport const setAccountOwnerSuffix = (dispatch, data) => {\n  setStep(dispatch, data, ACTIONS.ACCOWN_SUFFIX, STEPS.ACCOWN_SUFFIX, false);\n};\n\nexport const setBusinessId = (dispatch, data) => {\n  businessData.id = data.id;\n  coraData.busDetailsLocked = !!data.id;\n  setStep(dispatch, data, ACTIONS.BUS_ID, STEPS.BUS_ID, true);\n  businessData.hasCompanies = data.hasCompanies;\n  businessData.noIdMatches = data.noIdMatches; // Do this after to make sure things move correctly.\n};\n\nexport const setBusinessName = (dispatch, data) => {\n  if (data.fromCart) {\n    cartUpdate(dispatch, data, ACTIONS.BUS_NAME);\n    return;\n  }\n  setStep(dispatch, data, ACTIONS.BUS_NAME, STEPS.BUS_NAME, false);\n};\n\nexport const setBusinessType = (dispatch, data) => {\n  if (data.fromCart) {\n    cartUpdate(dispatch, data, ACTIONS.BUS_TYPE);\n    return;\n  }\n\n  businessData.type = data.type;\n  setStep(dispatch, data, ACTIONS.BUS_TYPE, STEPS.BUS_TYPE, true);\n};\n\nexport const setBusinessTypeAndName = (dispatch, data) => {\n  businessData.type = data.type;\n  cartUpdate(dispatch, data, ACTIONS.BUS_TYPE_NAME_CART);\n};\n\nexport const setCart = (dispatch, data) => {\n  setStep(dispatch, data, ACTIONS.CART, STEPS.CART, false);\n};\n\nexport const setCheckpoint = (dispatch, data) => {\n  coraData.saveData = data.saveData;\n  setStep(dispatch, data, ACTIONS.CHECKPOINT, STEPS.CHECKPOINT, true);\n};\n\nexport const setChooseDomesticJurisdiction = (dispatch, data) => {\n  coraData.domJurNotReqJurs = data.domJurNotReqJurs;\n  setStep(dispatch, data, ACTIONS.CHOOSE_DOM_JUR, STEPS.CHOOSE_DOM_JUR, true);\n};\n\nexport const setChooseHasFormation = (dispatch, data) => {\n  coraData.foreignRegistration = data.foreignRegistration;\n  setStep(dispatch, data, ACTIONS.CHOOSE_HAS_FORMATION, STEPS.CHOOSE_HAS_FORMATION, true);\n};\n\nexport const setCreateOrder = (dispatch) => {\n  dispatch({ type: ACTIONS.FLOW_COMPLETE });\n  go(1);\n};\n\nexport const setDomesticEntity = (dispatch, data) => {\n  coraData.domesticEntity = data.domesticEntity;\n  setStep(dispatch, data, ACTIONS.DOM_ENTITY, STEPS.DOM_ENTITY, true);\n};\n\nexport const setDomesticJurisdiction = (dispatch, data) => {\n  if (data.fromCart) {\n    cartUpdate(dispatch, data, ACTIONS.DOM_JUR);\n    return;\n  }\n  setStep(dispatch, data, ACTIONS.DOM_JUR, STEPS.DOM_JUR, true);\n};\n\nexport const setFlowComplete = (dispatch) => {\n  logger.logAction(ACTIONS.FLOW_COMPLETE, null);\n  dispatch({ type: ACTIONS.FLOW_COMPLETE });\n};\n\nexport const setForeignQualFiling = (dispatch, data) => {\n  coraData.foreignQualFiling = data.foreignQualFiling;\n  setStep(dispatch, data, ACTIONS.FOREIGN_QUAL_FILING, STEPS.FOREIGN_QUAL_FILING, true);\n};\n\nexport const setForeignRegistration = (dispatch, data) => {\n  coraData.foreignRegistration = data.foreignRegistration;\n  setStep(dispatch, data, ACTIONS.FOREIGN_REG, STEPS.FOREIGN_REG, true);\n};\n\nexport const setFormWithZen = (dispatch, data) => {\n  coraData.formWithZen = data.formWithZen;\n  setStep(dispatch, data, ACTIONS.FORM_WITH_ZEN, STEPS.FORM_WITH_ZEN, true);\n};\n\nexport const setHasFormation = (dispatch, data) => {\n  coraData.hasFormation = data.hasFormation;\n  setStep(dispatch, data, ACTIONS.HAS_FORMATION, STEPS.HAS_FORMATION, true);\n};\n\nexport const setHowToFile = (dispatch, data) => {\n  coraData.selfFile = data.selfFile;\n  setStep(dispatch, data, ACTIONS.HOW_TO_FILE, STEPS.HOW_TO_FILE, true);\n};\n\nexport const setInit = (dispatch, data) => {\n  const {\n    requestedJurisdictionsOnParam,\n    businessTypeOnParam,\n    idOnParam,\n    formationOnParam,\n    hasFormation\n  } = data;\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  coraData.step = null;\n  coraData.requestedJurisdictionsOnParam = requestedJurisdictionsOnParam;\n  coraData.businessTypeOnParam = businessTypeOnParam;\n  coraData.idOnParam = idOnParam;\n  coraData.formationOnParam = formationOnParam;\n  coraData.hasFormation = hasFormation;\n  coraData.requestedJurisdictionsCount = requestedJurisdictionsOnParam ? 1 : 0;\n  coraData.id = data.id;\n\n  businessData.isSimulated = data.isSimulated;\n  setIsFreeAccount(data.isSimulated);\n\n  const entryPoint = getEntryPoint();\n  const page = entryPoint.substring(URLS.BASE.length + 2);\n\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, '', false);\n  set(dispatch, _assign({}, data, { page }), ACTIONS.INIT, '', false);\n  browserHistory.replace(entryPoint);\n};\n\nexport const setLogin = (dispatch) => {\n  setStep(dispatch, { flow: 'truic' }, ACTIONS.LOGIN, '', false);\n};\n\nexport const setLoginPostPurchase = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LOGIN_POST, '', false);\n};\n\nexport const setNextStep = (dispatch, { step, ...therest }) => {\n  setStep(dispatch, therest, ACTIONS.NEXT_STEP, step, false);\n};\n\nexport const setPayment = (dispatch, data) => {\n  setStep(dispatch, data, ACTIONS.PAYMENT, STEPS.PAYMEHT, false);\n};\n\nexport const setPlan = (dispatch, data) => {\n  if (data.fromCart) {\n    cartUpdate(dispatch, data, ACTIONS.PLAN);\n    return;\n  }\n  setStep(dispatch, data, ACTIONS.PLAN, STEPS.PLAN, false);\n};\n\nexport const setPricing = (dispatch, data) => {\n  logger.logAction(ACTIONS.PRICES, data);\n\n  dispatch({\n    type: ACTIONS.PRICES,\n    payload: {\n      data\n    }\n  });\n};\n\nexport const setPurchaseSuccess = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PURCHASE_SUCCESS, '', true);\n};\n\nexport const setRequestedJurisdictions = (dispatch, data) => {\n  coraData.requestedJurisdictionCount = data.requestedJurisdictions.length;\n  setStep(dispatch, data, ACTIONS.REQ_JURS, STEPS.REQ_JURS, true);\n};\n\nexport const setRegAgent = (dispatch, data) => {\n  const { status } = data;\n\n  if (status === 'home') {\n    document.location = '/';\n    return;\n  }\n  if (status === 'showMore') {\n    document.location = `/${WEBSITE_URLS.PRICING}`;\n    return;\n  }\n  setStep(dispatch, data, ACTIONS.REG_AGENT, STEPS.REG_AGENT, true);\n};\n\nexport const setRegisteredStatesFromCart = (dispatch, data) => {\n  cartUpdate(dispatch, data, ACTIONS.REG_STATES_FROM_CART);\n};\n\nexport const setReturnToLanding = (dispatch, data) => {\n  const { status } = data;\n\n  if (status === 'showMore') {\n    document.location = `/${WEBSITE_URLS.PRICING}`;\n    return;\n  }\n  document.location = '/';\n};\n\nexport const setUnregisteredStatesFromCart = (dispatch, data) => {\n  cartUpdate(dispatch, data, ACTIONS.UNREG_STATES_FROM_CART);\n};\n\nexport const setUpsellDomJur = (dispatch, data) => {\n  if (data.fromCart) {\n    cartUpdate(dispatch, data, ACTIONS.UPSELL_DOM_JUR);\n    return;\n  }\n\n  coraData.upsellDomJur = data.upsellDomJur;\n  setStep(dispatch, data, ACTIONS.UPSELL_DOM_JUR, STEPS.UPSELL_DOM_JUR, true);\n};\n\nexport const setWelcome = (dispatch, data) => {\n  setStep(dispatch, data, ACTIONS.WELCOME, STEPS.WELCOME, false);\n};\n\nconst createRAOrder = (dispatch, reducerData, fees, expediteFees) => {\n  const serviceMethod = 'createCoRA';\n\n  registrationService[serviceMethod](reducerData, fees, expediteFees).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      payload: {\n        data,\n        reducerData,\n        fees,\n        expediteFees\n      }\n    });\n\n    trackEvent('Purchase', 'complete', 'CoRA - PF');\n\n    go(1, true);\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, fees, expediteFees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { customer } = reducerData,\n    { cardToken, expMonth, expYear, cvc, brand, last4 } = customer;\n\n  if (!isLoggedIn() || !cardToken) {\n    createRAOrder(dispatch, reducerData, fees, expediteFees);\n  } else {\n    const data = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createRAOrder(dispatch, reducerData, fees, expediteFees);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const resetActionError = (dispatch) => {\n  logger.logAction(ACTIONS.RESET_ACTION_ERROR);\n  dispatch({\n    type: ACTIONS.RESET_ACTION_ERROR\n  });\n};\n\nexport const verifyEmail = (dispatch, email) => {\n  logger.logAction(ACTIONS.VERIFY_EMAIL, email);\n  dispatch({\n    type: ACTIONS.VERIFY_EMAIL\n  });\n\n  accountService.exists(email).then((result) => {\n    const { status = false } = result;\n    if (!status) {\n      accountService.validateEmail(email, true).then((result2) => {\n        const { valid = true } = result2;\n        if (valid) {\n          dispatch({\n            type: ACTIONS.VERIFY_EMAIL_COMPLETE,\n            payload: {\n              data: { nextStep: getNextStep(STEPS.VERIFY_EMAIL) }\n            }\n          });\n        } else {\n          logger.error(ACTIONS.VERIFY_EMAIL_COMPLETE, { error: 'emailUnderliverable', errorCode: 1002 });\n          dispatch({\n            type: ACTIONS.VERIFY_EMAIL_COMPLETE,\n            error: true,\n            payload: {\n              error: 'emailUnderliverable',\n              errorCode: 1002\n            }\n          });\n        }\n      }).catch((err) => {\n        logger.error(ACTIONS.VERIFY_EMAIL_COMPLETE, err);\n        dispatch({\n          type: ACTIONS.VERIFY_EMAIL_COMPLETE,\n          error: true,\n          payload: {\n            error: err && err.error ? err.error : 'serverError',\n            errorCode: err && err.errorCode ? err.errorCode : 500\n          }\n        });\n      });\n    } else {\n      logger.error(ACTIONS.VERIFY_EMAIL_COMPLETE, { error: 'emailExists', errorCode: 1001 });\n      dispatch({\n        type: ACTIONS.VERIFY_EMAIL_COMPLETE,\n        error: true,\n        payload: {\n          error: 'emailExists',\n          errorCode: 1001\n        }\n      });\n    }\n  }).catch((err) => {\n    logger.error(ACTIONS.VERIFY_EMAIL_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.VERIFY_EMAIL_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport const setCompanyDetailsFromCart = (dispatch, data) => {\n  const { type, isSCorp = false } = data;\n\n  setBusinessType(dispatch, { value: type, isSCorp });\n\n};\n\nexport const resetData = (dispatch, data) => {\n  if (_isEmpty(data)) return;\n  set(dispatch, data, ACTIONS.RESET_DATA, '', false, false);\n};\n\nexport default {\n  createOrder,\n  getEntryPoint,\n  getFlowOrder,\n  getNextStep,\n  getStepIndex,\n  getStepOrder,\n  goToNextUncompletedPage,\n  resetActionError,\n  resetAllData,\n  setAccountOwnerEmail,\n  setAccountOwnerFirstName,\n  setAccountOwnerLastName,\n  setAccountOwnerMiddleName,\n  setAccountOwnerPhone,\n  setAccountOwnerSuffix,\n  setBusinessId,\n  setBusinessName,\n  setBusinessType,\n  setBusinessTypeAndName,\n  setCart,\n  setCheckpoint,\n  setDomesticEntity,\n  setDomesticJurisdiction,\n  setForeignQualFiling,\n  setForeignRegistration,\n  setFormWithZen,\n  setHasFormation,\n  setHowToFile,\n  setInit,\n  setLogin,\n  setLoginPostPurchase,\n  setPayment,\n  setPlan,\n  setPurchaseSuccess,\n  setRegAgent,\n  setRegisteredStatesFromCart,\n  setRequestedJurisdictions,\n  setReturnToLanding,\n  setUnregisteredStatesFromCart,\n  setUpsellDomJur,\n  verifyEmail,\n  setCompanyDetailsFromCart,\n  setLead\n};\n","/* eslint-disable no-dupe-class-members */\nimport _snakeCase from 'lodash/snakeCase';\nimport { getVisitUUID } from '../../utils/VisitorCookie';\nimport { registrationService } from '../../services';\nimport logger from '../../utils/ClientLogger';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\n\n\nclass LeadManager {\n  constructor(actions) {\n    this.#ACTIONS = actions;\n    this.#data = {};\n  }\n\n#ACTIONS = {};\n\n\n#data = {};\n\n\n#getLeadInfo() {\n  return {\n    ...this.#data,\n    visit_uuid: getVisitUUID()\n  };\n}\n\n#setData(data) {\n  this.#data = Object.keys(data)\n    .reduce((current, key) => {\n      return { ...current, [_snakeCase(key)]: data[key] };\n    }, { lead_source: window.zenIsMobile ? 'mobile' : 'web' });\n}\n\n#createLead(dispatch) {\n  const lead = this.#getLeadInfo();\n  registrationService.createLead(lead).then((response) => {\n    logger.logAction(this.#ACTIONS.CREATE_LEAD_COMPLETE, response);\n    dispatch({\n      type: this.#ACTIONS.CREATE_LEAD_COMPLETE,\n      payload: {\n        data: response\n      }\n    });\n  }).catch((err) => {\n    logger.error(this.#ACTIONS.CREATE_LEAD_COMPLETE, err);\n    dispatch({\n      type: this.#ACTIONS.CREATE_LEAD_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'serverError',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n}\n\n#updateLead(dispatch) {\n  const frontEndLead = this.#getLeadInfo(),\n    { leadUUID } = getReducerSnapshot('registration/lead', {});\n  logger.logAction(this.#ACTIONS.UPDATE_LEAD);\n  dispatch({\n    type: this.#ACTIONS.UPDATE_LEAD\n  });\n    // Send update with just the minimum changed info (phone/email) & required fields\n  const lead = {\n    lead_phone: frontEndLead.phone || '',\n    lead_source: frontEndLead.lead_source,\n    lead_email: frontEndLead.email,\n    lead_first_name: frontEndLead.first_name,\n    lead_last_name: frontEndLead.last_name\n  };\n  registrationService.updateLead(leadUUID, lead).then((response) => {\n    logger.logAction(this.#ACTIONS.UPDATE_LEAD_COMPLETE, response);\n    dispatch({\n      type: this.#ACTIONS.UPDATE_LEAD_COMPLETE,\n      payload: {\n        data: response\n      }\n    });\n  }).catch((err) => {\n    console.error('ERROR! The following content was not sufficient to update a lead: ', lead);\n    logger.error(this.#ACTIONS.UPDATE_LEAD_COMPLETE, err);\n    dispatch({\n      type: this.#ACTIONS.UPDATE_LEAD_COMPLETE,\n      error: true,\n      payload: {\n        data: err\n      }\n    });\n  });\n}\n\nsetLead(dispatch, createOrUpdateLead, data) {\n  this.#setData(data);\n  if (createOrUpdateLead && createOrUpdateLead === 'create') {\n    this.#createLead(dispatch);\n  } else if (createOrUpdateLead === 'update') {\n    this.#updateLead(dispatch);\n  }\n}\n}\n\nexport default LeadManager;\n","import { URLS } from '../../../constants/complete_wfg';\nimport { OrderTypes, isOrderCompleteByType } from '../../../utils/OrderUtils';\n\nconst\n  getAddressFlow = (url, registration) => {\n    const { usePhysicalAsMailing, usePhysicalAsPrincipal, useMailingAsPrincipal } = registration.businessAddresses,\n      flowItems = [];\n\n    flowItems.push(URLS.PHYS_ADDR);\n    if (!usePhysicalAsMailing || url === URLS.MAIL_ADDR) {\n      flowItems.push(URLS.MAIL_ADDR);\n      if ((!useMailingAsPrincipal && !usePhysicalAsPrincipal) || url === URLS.PRIN_ADDR) {\n        flowItems.push(URLS.PRIN_ADDR);\n      }\n    } else if (!usePhysicalAsPrincipal || url === URLS.PRIN_ADDR) {\n      flowItems.push(URLS.PRIN_ADDR);\n    }\n    return flowItems;\n  },\n\n  /* eslint-disable max-statements */\n  getPostPrincipalsFlowOrder = (url, registration) => {\n    const\n      { page } = registration,\n      { forceToContact, forceToMembers, forceToManagers, forceToDirectors, forceToOfficers, forceToRegisteredAgent } = page,\n      flowItems = [];\n\n    if (forceToMembers || forceToManagers || forceToDirectors || forceToOfficers) {\n      flowItems.push(URLS.DATA_CONFIRM);\n    } else {\n      flowItems.push(URLS.REG_AGT);\n      if (forceToRegisteredAgent) {\n        flowItems.push(URLS.DATA_CONFIRM);\n      } else if (url === URLS.PRIM_CONTACT) {\n        flowItems.push(URLS.CHOOSE_PRIM_CONTACT, URLS.PRIM_CONTACT, URLS.DATA_CONFIRM);\n      } else {\n        flowItems.push(URLS.CHOOSE_PRIM_CONTACT, URLS.DATA_CONFIRM);\n      }\n    }\n\n    if (forceToContact) {\n      flowItems.push(URLS.CHOOSE_PRIM_CONTACT);\n    } else if (forceToMembers) {\n      flowItems.push(URLS.LLC_MBR_COUNT);\n    } else if (forceToManagers) {\n      flowItems.push(URLS.LLC_MGR_OPT);\n    } else if (forceToDirectors) {\n      flowItems.push(URLS.CORP_DIR_COUNT);\n    } else if (forceToOfficers) {\n      flowItems.push(URLS.CORP_CHOOSE_PRES);\n    } else if (forceToRegisteredAgent) {\n      flowItems.push(URLS.REG_AGT);\n    }\n    flowItems.push(URLS.SHARE, URLS.COMPLETE);\n    return flowItems;\n  },\n  /* esline-enable max-statements */\n\n  /* eslint-disable max-statements */\n  getCorpFlowOrder = (url, registration) => {\n    const\n      { officer, page } = registration,\n      flowItems = [ URLS.CORP_DIR_COUNT, URLS.CORP_DIR_LIST ],\n      { hasAsstSecretary, hasVicePresident } = officer,\n      { forceToDirectors } = page;\n\n    if (forceToDirectors) {\n      flowItems.push(...getPostPrincipalsFlowOrder(url, registration));\n      return flowItems;\n    }\n    flowItems.push(URLS.CORP_CHOOSE_PRES);\n    if (url === URLS.CORP_PRES) { // This is only called directly, so if it is the URL, add it.\n      flowItems.push(URLS.CORP_PRES);\n    }\n    flowItems.push(URLS.CORP_HAS_VP);\n    if (hasVicePresident) {\n      flowItems.push(URLS.CORP_CHOOSE_VP);\n      if (url === URLS.CORP_VP) { // This is only called directly, so if it is the URL, add it.\n        flowItems.push(URLS.CORP_VP);\n      }\n    }\n    flowItems.push(URLS.CORP_CHOOSE_TRSR);\n    if (url === URLS.CORP_TRSR) { // This is only called directly, so if it is the URL, add it.\n      flowItems.push(URLS.CORP_TRSR);\n    }\n    flowItems.push(URLS.CORP_CHOOSE_SEC);\n    if (url === URLS.CORP_SEC) { // This is only called directly, so if it is the URL, add it.\n      flowItems.push(URLS.CORP_SEC);\n    }\n    flowItems.push(URLS.CORP_HAS_ASST_SEC);\n    if (hasAsstSecretary) {\n      flowItems.push(URLS.CORP_CHOOSE_ASST_SEC);\n      if (url === URLS.CORP_ASST_SEC) { // This is only called directly, so if it is the URL, add it.\n        flowItems.push(URLS.CORP_ASST_SEC);\n      }\n    }\n    flowItems.push(...getPostPrincipalsFlowOrder(url, registration));\n    return flowItems;\n  },\n\n  /* eslint-enable max-statements */\n  getLLCFlowOrder = (url, registration) => {\n    const\n      { manager, page } = registration,\n      flowItems = [ URLS.LLC_MBR_COUNT, URLS.LLC_MBR_LIST ],\n      { managerType } = manager,\n      { forceToMembers } = page;\n\n    if (url === URLS.LLC_MBR_LIST && forceToMembers) {\n      flowItems.push(...getPostPrincipalsFlowOrder(url, registration));\n      return flowItems;\n    }\n\n    flowItems.push(URLS.LLC_MGR_OPT);\n    if (managerType === 'SomeOwners' || managerType === 'SomeManagers' || managerType === '') {\n      flowItems.push(URLS.LLC_BUS_RUN);\n    }\n    if (managerType === 'SomeManagers' || managerType === 'AllManagers' || managerType === '') {\n      flowItems.push(URLS.LLC_MGR_COUNT, URLS.LLC_MGR_LIST);\n    }\n    flowItems.push(...getPostPrincipalsFlowOrder(url, registration));\n    return flowItems;\n  },\n\n  /* eslint-disable max-statements */\n  getFlowOrder = (url, registration) => {\n    const\n      { business } = registration,\n      { businessOrderType, type } = business;\n\n    if (url === URLS.COMPLETE || url === URLS.SHARE) {\n      return [ URLS.SHARE, URLS.COMPLETE ];\n    }\n    if (isOrderCompleteByType(businessOrderType, OrderTypes.WORRY_FREE)) {\n      return [ URLS.START ];\n    }\n    if (businessOrderType === OrderTypes.EIN || businessOrderType === OrderTypes.BUSINESS_LICENSE_REPORT) {\n      if (type === 'CORP') {\n        return [ URLS.START, ...getCorpFlowOrder(url, registration)];\n      }\n      return [ URLS.START, ...getLLCFlowOrder(url, registration)];\n    }\n    if (businessOrderType === OrderTypes.NAME_RESERVATION) {\n      if (type === 'CORP') {\n        return [ URLS.START, URLS.BUS_DESC, URLS.PHYS_ADDR, ...getCorpFlowOrder(url, registration)];\n      }\n      return [ URLS.START, URLS.BUS_DESC, URLS.PHYS_ADDR, ...getLLCFlowOrder(url)];\n    }\n\n    const\n      flowItems = [ URLS.START, URLS.BUS_DESC, ...getAddressFlow(url, registration) ];\n\n    if (type === 'CORP') {\n      flowItems.push(...getCorpFlowOrder(url, registration));\n    } else {\n      flowItems.push(...getLLCFlowOrder(url, registration));\n    }\n    return flowItems;\n  };\n  /* eslint-enable max-statements */\n\nexport default {\n  getPostPrincipalsFlowOrder,\n  getCorpFlowOrder,\n  getLLCFlowOrder,\n  getFlowOrder\n};\n","import { getCompleteWFGFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getCompleteWFGFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS, URLS } from '../../constants/complete_wfg';\nimport logger from '../../utils/ClientLogger';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport { storageKey as businessAddressesKey } from '../../reducers/registration/businessAddresses';\nimport { storageKey as managerKey } from '../../reducers/registration/managers';\nimport { storageKey as officerKey } from '../../reducers/registration/officers';\nimport { storageKey as pageKey } from '../../reducers/registration/page';\nimport { storageKey as registeredAgentKey } from '../../reducers/registration/registeredAgent';\nimport { registrationService } from '../../services';\nimport { getAppEntryPoint } from '../../utils/AppEntryPoint';\nimport { isLoggedIn } from '../../utils/AuthService';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlows from './flows';\n\nconst\n  defaultBusinessData = { type: 'LLCX', id: '', businessOrderType: '', addressMatch: false, addressIsGoogle: false, domesticJurisdiction: '' },\n  businessData = getReducerSnapshot(businessKey, defaultBusinessData),\n  defaultBusinessAddressesData = { usePhysicalAsPrincipal: false, usePhysicalAsMailing: false, useMailingAsPrincipal: false },\n  businessAddressesData = getReducerSnapshot(businessAddressesKey, defaultBusinessAddressesData),\n  defaultManagerData = { managerType: '' },\n  managerData = getReducerSnapshot(managerKey, defaultManagerData),\n  defaultOfficerData = { hasAsstSecretary: false, hasVicePresident: false },\n  officerData = getReducerSnapshot(officerKey, defaultOfficerData),\n  defaultPageData = { forceToMembers: false, forceToManagers: false, forceToDirectors: false, forceToOfficers: false, forceToPayment: false, forceToContact: false, registrationFlow: '' },\n  pageData = getReducerSnapshot(pageKey, defaultPageData),\n  defaultRegisteredAgentData = { forceContact: false, forcePerson: false },\n  registeredAgentData = getReducerSnapshot(registeredAgentKey, defaultRegisteredAgentData),\n\n// This is a reduced flow for analyzing the data confirmation.\n  /* eslint-disable max-statements */\n  getFlowOrder = (url) => {\n    const registration = {\n      business: businessData,\n      businessAddresses: businessAddressesData,\n      manager: managerData,\n      officer: officerData,\n      page: pageData,\n      registeredAgent: registeredAgentData\n    };\n    return getFlows(url, registration);\n  },\n  go = (jump) => {\n    const url = document.location.pathname.substring(URLS.BASE.length + 2),\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index;\n\n    if (jumpIndex < 0) {\n      if (!isLoggedIn()) {\n        document.location = getAppEntryPoint();\n      } else {\n        document.location = `/${DASHBOARD_URLS.BASE}`;\n      }\n    } else if (jumpIndex >= flowOrder.length) {\n      if (businessData.id) {\n        document.location = `/${COMPANY_URLS.BASE}/${businessData.id}`;\n      } else {\n        document.location = `/${DASHBOARD_URLS.BASE}`;\n      }\n    } else {\n      browserHistory.push(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1);\n    }\n  },\n  goTo = (dispatch, actionKey, url) => {\n    logger.logAction(actionKey);\n    dispatch({\n      type: actionKey\n    });\n    browserHistory.push(`/${URLS.BASE}/${url}`);\n  },\n  updateSnapshots = () => {\n    _assign(businessData, getReducerSnapshot(businessKey, defaultBusinessData));\n    _assign(businessAddressesData, getReducerSnapshot(businessAddressesKey, defaultBusinessAddressesData));\n    _assign(managerData, getReducerSnapshot(managerKey, defaultManagerData));\n    _assign(officerData, getReducerSnapshot(officerKey, defaultOfficerData));\n    _assign(pageData, getReducerSnapshot(pageKey, defaultPageData));\n    _assign(registeredAgentData, getReducerSnapshot(registeredAgentKey, defaultRegisteredAgentData));\n  };\n\nexport const getEntryPoint = (fromBack) => {\n  updateSnapshots();\n\n  const flow = getFlowOrder(),\n    index = fromBack ? flow.length - 1 : 0;\n\n  return `/${URLS.BASE}/${flow[index]}`;\n};\n\nexport const goBack = (dispatch) => {\n  logger.logAction(ACTIONS.GO_BACK, { location: document.location.pathname.substring(URLS.BASE.length + 2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const getNextUncompletedPage = (dispatch, location) => {\n  updateSnapshots();\n\n  const flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index + 1;\n\n  if (index >= 0) {\n    if (jumpIndex >= flowOrder.length) {\n      if (businessData.id) {\n        return { isDashboard: true, url: `/${COMPANY_URLS.BASE}/${businessData.id}` };\n      }\n      return { isDashboard: true, url: `/${DASHBOARD_URLS.BASE}` };\n    }\n    return { isDasboard: false, url: `/${URLS.BASE}/${flowOrder[jumpIndex]}` };\n  }\n\n  return { isDashboard: false, url: '' };\n};\n\nexport const goToNextUncompletedPage = (dispatch, location) => {\n  updateSnapshots();\n\n  const\n    flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index + 1;\n\n  if (index >= 0) {\n    if (jumpIndex >= flowOrder.length) {\n      if (businessData.id) {\n        document.location = `/${COMPANY_URLS.BASE}/${businessData.id}`;\n      } else {\n        document.location = `/${DASHBOARD_URLS.BASE}`;\n      }\n    } else {\n      browserHistory.push(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n    return true;\n  }\n\n  return false;\n};\n\nexport const goToCorpAsstSecretary = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CORP_ASST_SEC, URLS.CORP_ASST_SEC);\n};\n\nexport const goToCorpPresident = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CORP_PRES, URLS.CORP_PRES);\n};\n\nexport const goToCorpSecretary = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CORP_SEC, URLS.CORP_SEC);\n};\n\nexport const goToCorpTreasurer = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CORP_TRSR, URLS.CORP_TRSR);\n};\n\nexport const goToCorpVicePresident = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CORP_VP, URLS.CORP_VP);\n};\n\nexport const goToPrimaryContact = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_PRIM_CONTACT, URLS.PRIM_CONTACT);\n};\n\nexport const setBusinessDescription = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_DESC, false);\n};\n\nexport const setBusinessModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_MODAL, false);\n};\n\nexport const setChoosePrimaryContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CHOOSE_PRIM_CONTACT, false);\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.COMPLETE, true);\n};\n\nexport const setCorpAsstSecretary = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_ASST_SEC, false);\n};\n\nexport const setCorpChooseAsstSecretary = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_CHOOSE_ASST_SEC, false);\n};\n\nexport const setCorpChoosePresident = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_CHOOSE_PRES, false);\n};\n\nexport const setCorpChooseSecretary = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_CHOOSE_SEC, false);\n};\n\nexport const setCorpChooseTreasurer = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_CHOOSE_TRSR, false);\n};\n\nexport const setCorpChooseVicePresident = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_CHOOSE_VP, false);\n};\n\nexport const setCorpDirectorCount = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_DIR_COUNT, false);\n};\n\nexport const setCorpDirectorList = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_DIR_LIST, false);\n};\n\nexport const setCorpHasAsstSecretary = (dispatch, data) => {\n  officerData.hasAsstSecretary = data.hasAsstSecretary;\n  set(dispatch, data, ACTIONS.CORP_HAS_ASST_SEC, false);\n};\n\nexport const setCorpHasVicePresident = (dispatch, data) => {\n  officerData.hasVicePresident = data.hasVicePresident;\n  set(dispatch, data, ACTIONS.CORP_HAS_VP, false);\n};\n\nexport const setCorpPresident = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_PRES, false);\n};\n\nexport const setCorpSecretary = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_SEC, false);\n};\n\nexport const setCorpTreasurer = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_TRSR, false);\n};\n\nexport const setCorpVicePresident = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_VP, false);\n};\n\nexport const setDataConfirmation = (dispatch, data) => {\n  pageData.forceToDataConfirmation = data.forceToDataConfirmation;\n  pageData.forceToMembers = data.forceToMembers;\n  pageData.forceToManagers = data.forceToManagers;\n  pageData.forceToDirectors = data.forceToDirectors;\n  pageData.forceToOfficers = data.forceToOfficers;\n  pageData.forceToContact = data.forceToContact;\n  pageData.forceToRegisteredAgent = data.forceToRegisteredAgent;\n  set(dispatch, data, ACTIONS.DATA_CONFIRM, false);\n};\n\nexport const setLLCBusinessRunners = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_BUS_RUN, false);\n};\n\nexport const setLLCManagerCount = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MGR_COUNT, false);\n};\n\nexport const setLLCManagerList = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MGR_LIST, false);\n};\n\nexport const setLLCManagerOption = (dispatch, data) => {\n  managerData.managerType = data.managerType;\n  set(dispatch, data, ACTIONS.LLC_MGR_OPT, false);\n};\n\nexport const setLLCMemberCount = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MBR_COUNT, false);\n};\n\nexport const setLLCMemberList = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MBR_LIST, false);\n};\n\nexport const setMailingAddress = (dispatch, data) => {\n  businessAddressesData.useMailingAsPrincipal = data.useMailingAsPrincipal;\n  set(dispatch, data, ACTIONS.MAIL_ADDR, false);\n};\n\nexport const setMailingAddressModal = (dispatch, data) => {\n  businessAddressesData.useMailingAsPrincipal = data.useMailingAsPrincipal;\n  set(dispatch, data, ACTIONS.MAIL_ADDR_MODAL, false);\n};\n\nexport const setPhysicalAddress = (dispatch, data) => {\n  businessAddressesData.usePhysicalAsMailing = data.usePhysicalAsMailing;\n  businessAddressesData.usePhysicalAsPrincipal = data.usePhysicalAsPrincipal;\n  set(dispatch, data, ACTIONS.PHYS_ADDR, false);\n};\n\nexport const setPhysicalAddressModal = (dispatch, data) => {\n  businessAddressesData.usePhysicalAsMailing = data.usePhysicalAsMailing;\n  businessAddressesData.usePhysicalAsPrincipal = data.usePhysicalAsPrincipal;\n  set(dispatch, data, ACTIONS.PHYS_ADDR_MODAL, false);\n};\n\nexport const setPrimaryContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIM_CONTACT, false);\n};\n\nexport const setPrimaryContactModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIM_CONTACT_MODAL, false);\n};\n\nexport const setPrincipalAddress = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIN_ADDR, false);\n};\n\nexport const setPrincipalAddressModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIN_ADDR_MODAL, false);\n};\n\nexport const setRegisteredAgent = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.REG_AGT, false);\n};\n\nexport const setRegisteredAgentModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.REG_AGT_MODAL, false);\n};\n\nexport const setShare = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.SHARE, true);\n};\n\nexport const setStart = (dispatch, data) => {\n  updateSnapshots();\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nexport const updateContacts = (dispatch, data) => {\n  const { contactType } = data;\n  const type = {\n    member: 'UPDATE_MBR',\n    manager: 'UPDATE_MGR',\n    director: 'UPDATE_DIR',\n    officer: 'UPDATE_OFC'\n  };\n  const action = type[contactType || ''];\n  if (action) set(dispatch, data, ACTIONS[action], false);\n};\n\nexport const updateOrder = (dispatch, reducerData, filingFees, advance) => {\n  logger.logAction(ACTIONS.UPDATE_ORDER);\n  dispatch({\n    type: ACTIONS.UPDATE_ORDER\n  });\n  registrationService.updateWFG(reducerData, filingFees).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.UPDATE_ORDER_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.UPDATE_ORDER_COMPLETE,\n      payload: {\n        data,\n        reducerData\n      }\n    });\n    if (advance) {\n      go(1);\n    }\n  }).catch((err) => {\n    logger.error(ACTIONS.UPDATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.UPDATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  getNextUncompletedPage,\n  goToNextUncompletedPage,\n  goToCorpAsstSecretary,\n  goToCorpPresident,\n  goToCorpSecretary,\n  goToCorpTreasurer,\n  goToCorpVicePresident,\n  goToPrimaryContact,\n  setBusinessDescription,\n  setBusinessModal,\n  setChoosePrimaryContact,\n  setComplete,\n  setCorpAsstSecretary,\n  setCorpChooseAsstSecretary,\n  setCorpChoosePresident,\n  setCorpChooseSecretary,\n  setCorpChooseTreasurer,\n  setCorpChooseVicePresident,\n  setCorpDirectorCount,\n  setCorpDirectorList,\n  setCorpHasAsstSecretary,\n  setCorpHasVicePresident,\n  setCorpPresident,\n  setCorpSecretary,\n  setCorpTreasurer,\n  setCorpVicePresident,\n  setDataConfirmation,\n  setLLCBusinessRunners,\n  setLLCManagerCount,\n  setLLCManagerList,\n  setLLCManagerOption,\n  setLLCMemberCount,\n  setLLCMemberList,\n  setMailingAddress,\n  setMailingAddressModal,\n  setPhysicalAddress,\n  setPhysicalAddressModal,\n  setPrimaryContact,\n  setPrimaryContactModal,\n  setPrincipalAddress,\n  setPrincipalAddressModal,\n  setRegisteredAgent,\n  setRegisteredAgentModal,\n  setShare,\n  setStart,\n  updateContacts,\n  updateOrder,\n  resetAllData\n};\n","import { URLS } from '../../../constants/register_banking';\n\nconst\n  einFlow = (flow, flowItems) => {\n    const { createdEIN, hasITIN, hasW2, vehicle, itinInfo, purchaseEIN } = flow;\n\n    if (!createdEIN) {\n      flowItems.push(URLS.EIN);\n    } else {\n      flowItems.push(URLS.START);\n    }\n\n    if (purchaseEIN) {\n      flowItems.push(URLS.PAYMENT, URLS.MORE_INFO, URLS.RESPONSIBLE_PARTY, URLS.HAS_ITIN);\n      if (hasITIN) {\n        flowItems.push(URLS.ITIN);\n      } else {\n        flowItems.push(URLS.ITIN_INFO);\n        if (typeof itinInfo !== 'undefined' && itinInfo) {\n          flowItems.push(URLS.ITIN);\n        }\n      }\n      flowItems.push(URLS.GAMBLING, URLS.DRUGS_FIREARMS, URLS.HAS_W2);\n      if (hasW2) {\n        flowItems.push(URLS.W_2);\n      }\n      flowItems.push(URLS.VEHICLE);\n      if (vehicle) {\n        flowItems.push(URLS.TAXABLE_VEHICLE);\n      }\n      flowItems.push(URLS.FORM_720);\n    } else {\n      flowItems.push(URLS.PAYMENT);\n    }\n  },\n  getFlowOrder = (url, registration) => {\n    if (url === URLS.COMPLETE) {\n      return [ URLS.COMPLETE ];\n    }\n\n    const\n      { flow } = registration,\n      { createdEIN, matchedBusinessActivity, hasDBAs } = flow,\n      flowItems = [];\n\n    einFlow(flow, flowItems);\n\n    flowItems.push(URLS.START_INFO, URLS.BUS_RECAP);\n\n    if (!createdEIN) {\n      flowItems.push(URLS.HAS_DBAS);\n      if (hasDBAs) {\n        flowItems.push(URLS.DBAS);\n      }\n    }\n    if (!matchedBusinessActivity) {\n      flowItems.push(URLS.BUS_ACT);\n    }\n    flowItems.push(URLS.OWNERS, URLS.OWNER_INFO, URLS.DATA_CONFIRM, URLS.CHOOSE_ACCOUNT, URLS.ACCOUNT_INFO, URLS.FUNDING, URLS.COMPLETE);\n    return flowItems;\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegisterBankingFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterBankingFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _compact from 'lodash/compact';\nimport _indexOf from 'lodash/indexOf';\nimport _map from 'lodash/map';\nimport _pick from 'lodash/pick';\nimport _reduce from 'lodash/reduce';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { ACTIONS, URLS, EIN_TO_BANKING_ACTIVITY_MAP, BANKING_ACTIVITY_LABEL_TO_NUMBER } from '../../constants/register_banking';\nimport { ACTIONS as ORDER_ACTIONS } from '../../constants/orders';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { storageKey as bankingKey } from '../../reducers/registration/banking';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, orderService, registrationService, fintechService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\n\n// DJL - NOTE - business years is removed from the flow - not needed at this time.\nconst\n  defaultFlowData = { hasExistingEIN: false, createdEIN: false, createdFormation: true, matchedBusinessActivity: false, hasDBAs: false, hasEIN: false, noEINShown: false, inPlan: false },\n  flowData = getReducerSnapshot(bankingKey, defaultFlowData),\n  defaultBusinessData = { id: '', businessOrderType: '' },\n  businessData = getReducerSnapshot(businessKey, defaultBusinessData),\n  accountingToBankingMap = [\n    'ein', 'businessActivityOther'\n  ],\n  getFlowOrder = (url) => {\n    const registration = {\n      business: businessData,\n      flow: flowData\n    };\n\n    return getFlow(url, registration);\n  },\n  getCompanyUrl = () => {\n    if (businessData.id) {\n      return `/${COMPANY_URLS.BASE}/${businessData.id}`;\n    }\n    return `/${DASHBOARD_URLS.BASE}`;\n  },\n  go = (jump, dispatch, doReplace) => {\n    const\n      url = document.location.pathname.substring(URLS.BASE.length + 2) || URLS.START,\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      document.location = getCompanyUrl();\n    } else if (jumpIndex >= flowOrder.length) {\n      document.location = getCompanyUrl();\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  goTo = (dispatch, actionKey, url) => {\n    logger.logAction(actionKey);\n    dispatch({\n      type: actionKey\n    });\n    browserHistory.push(`/${URLS.BASE}/${url}`);\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch);\n    }\n  },\n  doReset = () => {\n    _assign(flowData, defaultFlowData);\n    _assign(businessData, defaultBusinessData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const path = document.location.pathname,\n    idx = path.indexOf(URLS.BASE),\n    idx2 = idx + URLS.BASE.length + 2;\n\n  logger.logAction(ACTIONS.GO_BACK, { location: path.substring(idx2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const setBackFromCompleteBusiness = () => {\n  browserHistory.push(getEntryPoint());\n};\n\nexport const setBusinessActivity = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_ACT, true);\n};\n\nexport const setNaicsSector = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.SET_NAICS_SECTOR);\n};\n\nexport const setNaicsSubsector = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.SET_NAICS_SUBSECTOR);\n};\n\nexport const setNaicsIndustry = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.SET_NAICS_INDUSTRY);\n};\n\nexport const setBusinessRecap = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_RECAP, true);\n};\n\nexport const setBusinessYears = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_YEARS, true);\n};\n\nexport const goToChooseAccount = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CHOOSE_ACCOUNT, URLS.CHOOSE_ACCOUNT);\n};\n\nexport const setChooseAccount = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CHOOSE_ACCOUNT, true);\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, {}, ACTIONS.COMPLETE, data.redirect);\n};\n\nexport const setDataConfirmation = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.DATA_CONFIRM, true);\n};\n\nexport const setDBAs = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.DBAS, true);\n};\n\nexport const setHasDBAs = (dispatch, data) => {\n  flowData.hasDBAs = data.hasDBAs;\n  set(dispatch, data, ACTIONS.HAS_DBAS, true);\n};\n\nexport const setEIN = (dispatch, data = {}) => {\n  set(dispatch, data, ACTIONS.EIN, true);\n};\n\nexport const setHasEIN = (dispatch, data) => {\n  flowData.hasEIN = data.hasEIN;\n  set(dispatch, data, ACTIONS.HAS_EIN, true);\n};\n\nexport const goToFunding = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_FUNDING, URLS.FUNDING);\n};\n\nexport const setFunding = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.FUNDING, false);\n};\n\nexport const setFundingData = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_DATA, false);\n};\n\nexport const setInit = (dispatch, data) => {\n  const { companyId } = data;\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  _assign(businessData, { id: companyId });\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(`/${URLS.BASE}/${URLS.START}`);\n};\n\nexport const setMoreInfo = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.MORE_INFO, true);\n};\n\nexport const setDrugsFirearms = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.DRUGS_FIREARMS, true);\n};\n\nexport const setGambling = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.GAMBLING, true);\n};\n\nexport const setForm720 = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.FORM_720, true);\n};\n\nexport const setHasItin = (dispatch, data) => {\n  flowData.hasITIN = data.hasITIN;\n  set(dispatch, data, ACTIONS.HAS_ITIN, true);\n};\n\nexport const setHasW2 = (dispatch, data) => {\n  flowData.hasW2 = data.hasW2;\n  set(dispatch, data, ACTIONS.HAS_W2, true);\n};\n\nexport const setItin = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ITIN, true);\n};\n\nexport const setItinInfo = (dispatch, data) => {\n  flowData.itinInfo = data.itinInfo;\n  set(dispatch, data, ACTIONS.ITIN_INFO, true);\n};\n\nexport const setW2 = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.W_2, true);\n};\n\nexport const setResponsibleParty = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.RESPONSIBLE_PARTY, true);\n};\n\nexport const setTaxableVehicle = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.TAXABLE_VEHICLE, true);\n};\n\nexport const setVehicle = (dispatch, data) => {\n  flowData.vehicle = data.vehicle;\n  set(dispatch, data, ACTIONS.VEHICLE, true);\n};\n\nexport const setNoEIN = (dispatch, data) => {\n  flowData.noEINShown = true;\n  set(dispatch, data, ACTIONS.NO_EIN, true);\n};\n\nexport const goToOwners = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_OWNERS, URLS.OWNERS);\n};\n\nexport const setOwners = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.OWNERS, true);\n};\n\nexport const setOwnerInfo = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.OWNER_INFO, true);\n};\n\nexport const setAccountInfo = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOUNT_INFO, true);\n};\n\nexport const goToPayment = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_PAYMENT, URLS.PAYMENT);\n};\n\nexport const setStart = (dispatch, data) => {\n  _assign(flowData, _pick(data, ['hasExistingEIN', 'createdEIN', 'createdFormation', 'matchedBusinessActivity']), { noEINShown: false });\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nexport const setStartInfo = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.START_INFO, true);\n};\n\nexport const getNaicsCodes = (dispatch) => {\n  logger.logAction(ACTIONS.GET_NAICS_CODES);\n  dispatch({\n    type: ACTIONS.GET_NAICS_CODES\n  });\n  fintechService.getNAICS().then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.GET_NAICS_CODES_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.GET_NAICS_CODES_COMPLETE,\n      payload: {\n        data\n      }\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.GET_NAICS_CODES_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.GET_NAICS_CODES_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const setPurchaseEIN = (dispatch, purchaseEIN) => {\n  flowData.purchaseEIN = purchaseEIN;\n  set(dispatch, { purchaseEIN }, ACTIONS.PURCHASE_EIN, true);\n};\n\nexport const getFundingAccounts = (dispatch, publicToken) => {\n  logger.logAction(ACTIONS.GET_FUNDING_ACCOUNTS);\n  dispatch({\n    type: ACTIONS.GET_FUNDING_ACCOUNTS\n  });\n  accountService.getPlaidAccounts(publicToken).then((response) => {\n    const { accounts } = response;\n    logger.logAction(ACTIONS.GET_FUNDING_ACCOUNTS_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.GET_FUNDING_ACCOUNTS_COMPLETE,\n      payload: {\n        data: {\n          accounts\n        }\n      }\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.GET_FUNDING_ACCOUNTS_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.GET_FUNDING_ACCOUNTS_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const getPlaidLinkToken = (dispatch, plaidConfigLink) => {\n  logger.logAction(ACTIONS.GET_PLAID_LINK_TOKEN);\n  dispatch({\n    type: ACTIONS.GET_PLAID_LINK_TOKEN\n  });\n  accountService.getPlaidLinkToken(plaidConfigLink).then((response) => {\n    const { linkToken } = response;\n    logger.logAction(ACTIONS.GET_PLAID_LINK_TOKEN_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.GET_PLAID_LINK_TOKEN_COMPLETE,\n      payload: {\n        data: {\n          linkToken\n        }\n      }\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.GET_PLAID_LINK_TOKEN_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.GET_PLAID_LINK_TOKEN_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const setPayment = (dispatch, data) => {\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { expMonth, expYear, cvc, cardToken, brand, last4 } = data;\n\n  if (!cardToken) {\n    set(dispatch, data, ACTIONS.PAYMENT, true);\n  } else {\n    const cardData = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD, data);\n    dispatch({\n      type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD,\n      payload: {\n        data: cardData\n      }\n    });\n    accountService.addPaymentMethodV2(cardData).then((response) => {\n      const mergedData = _assign({}, response.data, cardData);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      set(dispatch, mergedData, ACTIONS.PAYMENT, true);\n    }).catch((err) => {\n      logger.error(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, err);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const doesHaveEIN = (companyStatus, einOrderDict, orderList) => {\n  const einOrder = orderList.find((x) => { return einOrderDict[x]; });\n  const existingEin = einOrder || companyStatus.ein || null;\n  return !!existingEin;\n};\n\nexport const setInitEINPurchaseFlow = (dispatch, initObject) => {\n  set(dispatch, initObject, ACTIONS.START_EIN, false);\n  browserHistory.push(getEntryPoint());\n};\n\n/* eslint-disable max-statements */\nexport const setStartInPlan = (dispatch, data) => {\n  const { details, orders, orderMap, companyStatus, companyId } = data,\n    orderIds = orderMap[companyId] || [],\n    existingEin = companyStatus.ein || '',\n    { name, domesticJurisdiction, description, type: businessType, address = {}, contact = {}, members = [], directors = [] } = details,\n    { addressLine1, addressLine2, city, county, state, country, zipCode } = address,\n    { phoneNumber } = contact,\n    owners = _map((businessType === 'LLCX' ? members : directors), (owner) => {\n      return _assign({ citizenship: '', dob: '', ssn: '', ein: '', role: '', percent: '', percentFloat: 0, access: false, accountOwner: false, forceAccess: false }, owner);\n    });\n\n  const d = _reduce(orderIds, (collect, id) => {\n    const items = orders.items[id] || {},\n      plans = orders.plan[id] || {},\n      business = orders.business[id] || {};\n\n    if (items.llcFormation || items.corpFormation) {\n      collect.createdFormation = true;\n      collect.businessYears = '1';\n      collect.planLevel = plans.planLevel;\n      collect.phoneNumber = phoneNumber || business.phoneNumber;\n    }\n\n    if (items.ein) {\n      const ein = orders.ein[id] || {},\n        { businessActivity1 = '' } = ein;\n\n      collect.createdEIN = true;\n      if (!collect.createdAccounting) {\n        collect.businessActivity = EIN_TO_BANKING_ACTIVITY_MAP[businessActivity1] || '';\n        collect.matchedBusinessActivity = !!collect.businessActivity;\n        collect.dbas = ein.dbas || '';\n        collect.hasDBAs = true;\n      }\n    }\n\n    if (items.accounting) {\n      const accounting = orders.accounting[id] || {},\n        { owners: accountingOwners, businessActivity, ein } = accounting;\n\n      collect.createdAccounting = true;\n      collect.createdEIN = true;\n      collect.owners = _compact(_map((accountingOwners || []), (owner) => {\n        if (!owner.firstName) {\n          return null;\n        }\n        const percentFloat = owner.percent ? parseFloat(owner.percent, 10) : 0;\n\n        return _assign({ citizenship: '', dob: '', ssn: '', role: '', percentFloat, access: false, forceAccess: percentFloat >= 25 }, owner);\n      }));\n      collect.businessActivity = BANKING_ACTIVITY_LABEL_TO_NUMBER[businessActivity];\n      collect.matchedBusinessActivity = true;\n      collect.hasEIN = !!ein;\n      return _assign(collect, _pick(accounting, accountingToBankingMap));\n    }\n    return collect;\n  }, {\n    inProgress: true,\n    companyId,\n    name,\n    businessType,\n    domesticJurisdiction,\n    description,\n    phoneNumber,\n    addressLine1,\n    addressLine2,\n    city,\n    county,\n    state,\n    country,\n    zipCode,\n    owners,\n    inPlan: true,\n    createdAccounting: false,\n    createdEIN: false,\n    hasExistingEIN: !!existingEin,\n    createdFormation: false,\n    matchedBusinessActivity: false,\n    businessActivity: '',\n    dbas: '',\n    hasDBAs: null,\n    hasEIN: !!existingEin || null,\n    ein: existingEin,\n    businessYears: '',\n    planLevel: ''\n  });\n\n  _assign(flowData, d);\n  set(dispatch, d, ACTIONS.START_PLAN, false);\n\n  const\n    flowOrder = getFlowOrder();\n\n  browserHistory.push(`/${URLS.BASE}/${flowOrder[0]}`);\n};\n\n\nexport const createOrder = (dispatch, reducerData, accountId, filingFees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  const orderList = [\n    registrationService.createBanking(reducerData, accountId, filingFees).then(() => {\n      trackEvent('Purchase', 'complete', 'Banking');\n    })\n  ];\n\n  if (flowData.purchaseEIN) {\n    orderList.push(registrationService.createEINBanking(reducerData).then(() => {\n      trackEvent('Purchase EIN', 'complete', 'Banking');\n    }));\n  }\n\n  const ordersPromise = Promise.all(orderList);\n\n  ordersPromise.then((response) => {\n    orderService.getOrders().then((response1) => {\n      logger.logAction(ORDER_ACTIONS.GET_ORDERS_COMPLETE, response1);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        payload: {\n          data: response1\n        }\n      });\n      const { data } = response;\n      logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        payload: {\n          data,\n          reducerData: reducerData.registration.banking\n        }\n      });\n      go(1);\n    }).catch((err) => {\n      logger.error(ORDER_ACTIONS.GET_ORDERS_COMPLETE, err);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: err && err.errorCode ? err.errorCode : 3000\n        }\n      });\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createEINOrder = (dispatch, reducerData) => {\n\n  registrationService.createEINBanking(reducerData).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      payload: {\n        data,\n        reducerData\n      }\n    });\n\n    trackEvent('Purchase', 'complete', 'EIN banking');\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  orderAlreadyCreated,\n  setStart,\n  setStartInPlan,\n  setStartInfo,\n  setBackFromCompleteBusiness,\n  setEIN,\n  setNoEIN,\n  setDBAs,\n  setBusinessYears,\n  setBusinessActivity,\n  setOwners,\n  goToOwners,\n  setOwnerInfo,\n  setFunding,\n  goToFunding,\n  setChooseAccount,\n  goToChooseAccount,\n  setDataConfirmation,\n  setPayment,\n  goToPayment,\n  setComplete,\n  getFundingAccounts,\n  createOrder,\n  resetAllData\n};\n","import { URLS } from '../../../constants/complete_nypub';\nimport { OrderTypes, isOrderCompleteByType } from '../../../utils/OrderUtils';\n\nconst\n  getAddressFlow = (url, registration) => {\n    const { usePhysicalAsMailing } = registration.businessAddresses,\n      flowItems = [];\n\n    flowItems.push(URLS.PHYS_ADDR);\n    if (!usePhysicalAsMailing || url === URLS.MAIL_ADDR) {\n      flowItems.push(URLS.MAIL_ADDR);\n    }\n    return flowItems;\n  },\n  getPostPrincipalsFlowOrder = (url, registration) => {\n    const\n      { page } = registration,\n      { forceToMembers, forceToManagers } = page,\n      flowItems = [];\n\n    if (forceToMembers || forceToManagers) {\n      flowItems.push(URLS.DATA_CONFIRM);\n    } else {\n      flowItems.push(URLS.REG_AGT);\n      if (url === URLS.PRIM_CONTACT) {\n        flowItems.push(URLS.CHOOSE_PRIM_CONTACT, URLS.PRIM_CONTACT, URLS.DATA_CONFIRM);\n      } else {\n        flowItems.push(URLS.CHOOSE_PRIM_CONTACT, URLS.DATA_CONFIRM);\n      }\n    }\n    if (forceToMembers) {\n      flowItems.push(URLS.LLC_MBR_COUNT);\n    } else if (forceToManagers) {\n      flowItems.push(URLS.LLC_MGR_OPT);\n    }\n    flowItems.push(URLS.SHARE, URLS.COMPLETE);\n    return flowItems;\n  },\n  getLLCFlowOrder = (url, registration) => {\n    const { manager, page } = registration;\n    const { managerType } = manager;\n    const { forceToMembers, forceToManagers } = page;\n\n    const flowItems = [ URLS.LLC_MBR_COUNT, URLS.LLC_MBR_LIST ];\n\n    if (url === URLS.LLC_MBR_LIST && forceToMembers) {\n      flowItems.push(...getPostPrincipalsFlowOrder(url, registration));\n      return flowItems;\n    }\n\n    flowItems.push(URLS.LLC_MGR_OPT);\n    if (managerType === 'SomeOwners' || managerType === 'SomeManagers') {\n      flowItems.push(URLS.LLC_BUS_RUN);\n    }\n    if (managerType === 'SomeManagers' || managerType === 'AllManagers') {\n      flowItems.push(URLS.LLC_MGR_COUNT, URLS.LLC_MGR_LIST);\n    }\n    if (url === URLS.LLC_MGR_LIST && forceToManagers) {\n      flowItems.push(...getPostPrincipalsFlowOrder(url, registration));\n      return flowItems;\n    }\n\n    flowItems.push(...getPostPrincipalsFlowOrder(url, registration));\n\n    return flowItems;\n  },\n  /* eslint-disable max-statements */\n  getFlowOrder = (url, registration) => {\n    const { business } = registration;\n    const { businessOrderType } = business;\n\n    if (url === URLS.COMPLETE || url === URLS.SHARE) {\n      return [ URLS.SHARE, URLS.COMPLETE ];\n    }\n    if (isOrderCompleteByType(businessOrderType, OrderTypes.NY_PUBLICATION)) {\n      return [ URLS.START ];\n    }\n\n    if (businessOrderType === OrderTypes.EIN || businessOrderType === OrderTypes.BUSINESS_LICENSE_REPORT) {\n      return [ URLS.START, ...getLLCFlowOrder(url, registration)];\n    }\n\n    return [ URLS.START, URLS.BUS_DESC, ...getAddressFlow(url, registration), ...getLLCFlowOrder(url, registration) ];\n  };\n  /* eslint-enable max-statements */\n\nexport default {\n  getPostPrincipalsFlowOrder,\n  getLLCFlowOrder,\n  getFlowOrder\n};\n","import { getCompleteNYPubFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getCompleteNYPubFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS, URLS } from '../../constants/complete_nypub';\nimport logger from '../../utils/ClientLogger';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport { storageKey as businessAddressesKey } from '../../reducers/registration/businessAddresses';\nimport { storageKey as managerKey } from '../../reducers/registration/managers';\nimport { storageKey as pageKey } from '../../reducers/registration/page';\nimport { registrationService } from '../../services';\nimport { getAppEntryPoint } from '../../utils/AppEntryPoint';\nimport { isLoggedIn } from '../../utils/AuthService';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlows from './flows';\n\nconst\n  defaultBusinessData = { type: 'LLCX', id: '', businessOrderType: '', domesticJurisdiction: '' },\n  businessData = getReducerSnapshot(businessKey, defaultBusinessData),\n  defaultBusinessAddressesData = { usePhysicalAsPrincipal: false, usePhysicalAsMailing: false, useMailingAsPrincipal: false },\n  businessAddressesData = getReducerSnapshot(businessAddressesKey, defaultBusinessAddressesData),\n  defaultManagerData = { managerType: '' },\n  managerData = getReducerSnapshot(managerKey, defaultManagerData),\n  defaultPageData = { forceToMembers: false, forceToManagers: false, forceToPayment: false, forceToContact: false },\n  pageData = getReducerSnapshot(pageKey, defaultPageData),\n  // This is a reduced flow for analyzing the data confirmation.\n  /* eslint-disable max-statements */\n  getFlowOrder = (url) => {\n    const registration = {\n      business: businessData,\n      businessAddresses: businessAddressesData,\n      manager: managerData,\n      page: pageData\n    };\n    return getFlows(url, registration);\n  },\n  go = (jump) => {\n    const url = document.location.pathname.substring(URLS.BASE.length + 2),\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index;\n\n    if (jumpIndex < 0) {\n      if (!isLoggedIn()) {\n        document.location = getAppEntryPoint();\n      } else {\n        document.location = `/${DASHBOARD_URLS.BASE}`;\n      }\n    } else if (jumpIndex >= flowOrder.length) {\n      if (businessData.id) {\n        document.location = `/${COMPANY_URLS.BASE}/${businessData.id}`;\n      } else {\n        document.location = `/${DASHBOARD_URLS.BASE}`;\n      }\n    } else {\n      browserHistory.push(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1);\n    }\n  },\n  goTo = (dispatch, actionKey, url) => {\n    logger.logAction(actionKey);\n    dispatch({\n      type: actionKey\n    });\n    browserHistory.push(`/${URLS.BASE}/${url}`);\n  },\n  updateSnapshots = () => {\n    _assign(businessData, getReducerSnapshot(businessKey, defaultBusinessData));\n    _assign(businessAddressesData, getReducerSnapshot(businessAddressesKey, defaultBusinessAddressesData));\n    _assign(managerData, getReducerSnapshot(managerKey, defaultManagerData));\n    _assign(pageData, getReducerSnapshot(pageKey, defaultPageData));\n  };\n\nexport const getEntryPoint = (fromBack) => {\n  updateSnapshots();\n\n  const flow = getFlowOrder(),\n    index = fromBack ? flow.length - 1 : 0;\n\n  return `/${URLS.BASE}/${flow[index]}`;\n};\n\nexport const goBack = (dispatch) => {\n  logger.logAction(ACTIONS.GO_BACK, { location: document.location.pathname.substring(URLS.BASE.length + 2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const getNextUncompletedPage = (dispatch, location) => {\n  updateSnapshots();\n\n  const flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index + 1;\n\n  if (index >= 0) {\n    if (jumpIndex >= flowOrder.length) {\n      if (businessData.id) {\n        return { isDashboard: true, url: `/${COMPANY_URLS.BASE}/${businessData.id}` };\n      }\n      return { isDashboard: true, url: `/${DASHBOARD_URLS.BASE}` };\n    }\n    return { isDasboard: false, url: `/${URLS.BASE}/${flowOrder[jumpIndex]}` };\n  }\n\n  return { isDashboard: false, url: '' };\n};\n\nexport const goToNextUncompletedPage = (dispatch, location) => {\n  updateSnapshots();\n\n  const flowOrder = getFlowOrder(location);\n  const index = _indexOf(flowOrder, location);\n  const jumpIndex = index + 1;\n\n  if (index >= 0) {\n    if (jumpIndex >= flowOrder.length) {\n      if (businessData.id) {\n        document.location = `/${COMPANY_URLS.BASE}/${businessData.id}`;\n      } else {\n        document.location = `/${DASHBOARD_URLS.BASE}`;\n      }\n    } else {\n      browserHistory.push(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n    return true;\n  }\n\n  return false;\n};\n\nexport const goToPrimaryContact = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_PRIM_CONTACT, URLS.PRIM_CONTACT);\n};\n\nexport const setAddressesModal = (dispatch, data) => {\n  businessAddressesData.useMailingAsPrincipal = data.useMailingAsPrincipal;\n  businessAddressesData.usePhysicalAsMailing = data.usePhysicalAsMailing;\n  businessAddressesData.usePhysicalAsPrincipal = data.usePhysicalAsPrincipal;\n  set(dispatch, data, ACTIONS.ADDR_MODAL, false);\n};\n\nexport const setBusinessDescription = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_DESC, false);\n};\n\nexport const setBusinessModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_MODAL, false);\n};\n\nexport const setChoosePrimaryContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CHOOSE_PRIM_CONTACT, false);\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.COMPLETE, true);\n};\n\nexport const setDataConfirmation = (dispatch, data) => {\n  pageData.forceToDataConfirmation = data.forceToDataConfirmation;\n  pageData.forceToMembers = data.forceToMembers;\n  pageData.forceToManagers = data.forceToManagers;\n  pageData.forceToContact = data.forceToContact;\n  set(dispatch, data, ACTIONS.DATA_CONFIRM, false);\n};\n\nexport const setLLCBusinessRunners = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_BUS_RUN, false);\n};\n\nexport const setLLCManagerCount = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MGR_COUNT, false);\n};\n\nexport const setLLCManagerList = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MGR_LIST, false);\n};\n\nexport const setLLCManagerListModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MGR_LIST_MODAL, false);\n};\n\nexport const setLLCManagerOption = (dispatch, data) => {\n  managerData.managerType = data.managerType;\n  set(dispatch, data, ACTIONS.LLC_MGR_OPT, false);\n};\n\nexport const setLLCManagerOptionModal = (dispatch, data) => {\n  managerData.managerType = data.managerType;\n  set(dispatch, data, ACTIONS.LLC_MGR_OPT_MODAL, false);\n};\n\nexport const setLLCMemberCount = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MBR_COUNT, false);\n};\n\nexport const setLLCMemberList = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MBR_LIST, false);\n};\n\nexport const setLLCMemberListModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MBR_LIST_MODAL, false);\n};\n\nexport const setMailingAddress = (dispatch, data) => {\n  businessAddressesData.useMailingAsPrincipal = data.useMailingAsPrincipal;\n  set(dispatch, data, ACTIONS.MAIL_ADDR, false);\n};\n\nexport const setMailingAddressModal = (dispatch, data) => {\n  businessAddressesData.useMailingAsPrincipal = data.useMailingAsPrincipal;\n  set(dispatch, data, ACTIONS.MAIL_ADDR_MODAL, false);\n};\n\nexport const setPhysicalAddress = (dispatch, data) => {\n  businessAddressesData.usePhysicalAsMailing = data.usePhysicalAsMailing;\n  businessAddressesData.usePhysicalAsPrincipal = data.usePhysicalAsPrincipal;\n  set(dispatch, data, ACTIONS.PHYS_ADDR, false);\n};\n\nexport const setPhysicalAddressModal = (dispatch, data) => {\n  businessAddressesData.usePhysicalAsMailing = data.usePhysicalAsMailing;\n  businessAddressesData.usePhysicalAsPrincipal = data.usePhysicalAsPrincipal;\n  set(dispatch, data, ACTIONS.PHYS_ADDR_MODAL, false);\n};\n\nexport const setPrimaryContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIM_CONTACT, false);\n};\n\nexport const setPrimaryContactModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIM_CONTACT_MODAL, false);\n};\n\nexport const setPrincipalAddress = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIN_ADDR, false);\n};\n\nexport const setPrincipalAddressModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIN_ADDR_MODAL, false);\n};\n\nexport const setRegisteredAgent = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.REG_AGT, false);\n};\n\nexport const setRegisteredAgentModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.REG_AGT_MODAL, false);\n};\n\nexport const setShare = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.SHARE, true);\n};\n\nexport const updateContacts = (dispatch, data) => {\n  const { contactType } = data;\n  const type = {\n    member: 'UPDATE_MBR',\n    manager: 'UPDATE_MGR',\n    director: 'UPDATE_DIR',\n    officer: 'UPDATE_OFC'\n  };\n  const action = type[contactType || ''];\n  if (action) set(dispatch, data, ACTIONS[action], false);\n};\n\nexport const updateOrder = (dispatch, reducerData, filingFees, advance) => {\n  logger.logAction(ACTIONS.UPDATE_ORDER);\n  dispatch({\n    type: ACTIONS.UPDATE_ORDER\n  });\n  registrationService.updateNyPubLLC(reducerData, filingFees).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.UPDATE_ORDER_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.UPDATE_ORDER_COMPLETE,\n      payload: {\n        data,\n        reducerData\n      }\n    });\n    if (advance) {\n      go(1);\n    }\n  }).catch((err) => {\n    logger.error(ACTIONS.UPDATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.UPDATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const setAccountOwnerData = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOWN_DATA, false);\n};\n\nexport const setContactData = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOWN_DATA, false);\n};\n\nexport const setStart = (dispatch, data) => {\n  updateSnapshots();\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  getNextUncompletedPage,\n  goToNextUncompletedPage,\n  goToPrimaryContact,\n  setAddressesModal,\n  setBusinessDescription,\n  setBusinessModal,\n  setChoosePrimaryContact,\n  setComplete,\n  setDataConfirmation,\n  setLLCBusinessRunners,\n  setLLCManagerCount,\n  setLLCManagerList,\n  setLLCManagerListModal,\n  setLLCManagerOption,\n  setLLCManagerOptionModal,\n  setLLCMemberCount,\n  setLLCMemberList,\n  setLLCMemberListModal,\n  setMailingAddress,\n  setPhysicalAddress,\n  setPrimaryContact,\n  setPrimaryContactModal,\n  setPrincipalAddress,\n  setRegisteredAgent,\n  setRegisteredAgentModal,\n  setShare,\n  setStart,\n  updateContacts,\n  updateOrder,\n  resetAllData\n};\n","import { URLS } from '../../../constants/register_nameres';\nimport { isLoggedIn } from '../../../utils/AuthService';\n\nconst\n  getAddressFlow = (url, registration) => {\n    const { usePhysicalAsMailing } = registration.businessAddresses,\n      flowItems = [];\n\n    flowItems.push(URLS.PHYS_ADDR);\n    if (!usePhysicalAsMailing) {\n      flowItems.push(URLS.MAIL_ADDR);\n    }\n    return flowItems;\n  },\n\n  getNewCustomerFlowOrder = (url, registration) => {\n    if (url === URLS.SHARE || url === URLS.COMPLETE) {\n      return [ URLS.SHARE, URLS.COMPLETE ];\n    }\n\n    const flowItems = [\n      URLS.DOM_JUR,\n      URLS.BUS_NAME,\n      URLS.BUS_TYPE,\n      ...getAddressFlow(url, registration),\n      URLS.ACC_OWN_INFO,\n      URLS.PRIM_CONTACT,\n      URLS.PAYMENT,\n      URLS.SHARE,\n      URLS.COMPLETE\n    ];\n\n    return flowItems;\n  },\n  getNewCompanyFlowOrder = (url, registration) => {\n    if (url === URLS.SHARE) {\n      return [ URLS.SHARE, URLS.COMPLETE ];\n    }\n    const\n      flowItems = [\n        URLS.DOM_JUR,\n        URLS.BUS_NAME,\n        URLS.BUS_TYPE,\n        ...getAddressFlow(url, registration)\n      ];\n\n    if (url === URLS.ACC_OWN_INFO) { // For logged-in transition\n      flowItems.push(URLS.ACC_OWN_INFO);\n    }\n    flowItems.push(URLS.PRIM_CONTACT, URLS.PAYMENT, URLS.SHARE, URLS.COMPLETE);\n    return flowItems;\n  },\n  getFlowOrder = (url, registration) => {\n    if (isLoggedIn()) {\n      return getNewCompanyFlowOrder(url, registration);\n    }\n    return getNewCustomerFlowOrder(url, registration);\n  };\n\nexport default {\n  getNewCompanyFlowOrder,\n  getNewCustomerFlowOrder,\n  getFlowOrder\n};\n","import { getRegisterNameresFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterNameresFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { getStateFees as getInitStateFees, setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { ACTIONS, URLS } from '../../constants/register_nameres';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, registrationService } from '../../services';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport { storageKey as businessAddressesKey } from '../../reducers/registration/businessAddresses';\nimport { storageKey as pageKey } from '../../reducers/registration/page';\nimport { getAppEntryPoint } from '../../utils/AppEntryPoint';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\nimport { isLoggedIn } from '../../utils/AuthService';\nimport { setIsFreeAccount } from '../../utils/FreeAccountUtils';\n\nconst\n  defaultBusinessData = { type: 'LLCX' },\n  businessData = getReducerSnapshot(businessKey, defaultBusinessData),\n  defaultBusinessAddressesData = { usePhysicalAsPrincipal: false, usePhysicalAsMailing: false, useMailingAsPrincipal: false },\n  businessAddressesData = getReducerSnapshot(businessAddressesKey, defaultBusinessAddressesData),\n  defaultPageData = { skipBusinessName: false, skipDomesticJurisdiction: false  },\n  pageData = getReducerSnapshot(pageKey, defaultPageData),\n  getFlowOrder = (url) => {\n    const registration = { business: businessData, businessAddresses: businessAddressesData };\n\n    return getFlow(url, registration);\n  },\n  goInFlow = (flowOrder, jumpIndex) => {\n    if (jumpIndex < 0) {\n      document.location = getAppEntryPoint();\n    } else if (jumpIndex >= flowOrder.length) {\n      document.location = `/${DASHBOARD_URLS.BASE}`;\n    } else {\n      browserHistory.push(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  go = (jump) => {\n    const url = document.location.pathname.substring(URLS.BASE.length + 2),\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index;\n\n    goInFlow(flowOrder, jumpIndex);\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1);\n    }\n  },\n  doReset = () => {\n    _assign(businessData, defaultBusinessData);\n    _assign(businessAddressesData, defaultBusinessAddressesData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n  let initialFlowOrder = 0;\n\n  if (pageData.skipDomesticJurisdiction) {\n    initialFlowOrder += 1;\n\n    if (pageData.skipBusinessName) {\n      initialFlowOrder += 1;\n    }\n  }\n\n  return `/${URLS.BASE}/${flowOrder[initialFlowOrder]}`;\n};\n\nexport const getStateFees = (dispatch, data, filingFees) => {\n  if (filingFees && (!filingFees[data.domesticJurisdiction] || !filingFees[data.domesticJurisdiction].entity_name_reservation)) {\n    getInitStateFees(dispatch, data.domesticJurisdiction);\n  }\n};\n\nexport const goBack = (dispatch) => {\n  logger.logAction(ACTIONS.GO_BACK, { location: document.location.pathname.substring(URLS.BASE.length + 2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const goToNextUncompletedPage = (dispatch, location) => {\n  const\n    flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index + 1;\n\n  if (index >= 0) {\n    goInFlow(flowOrder, jumpIndex);\n    return true;\n  }\n\n  return false;\n};\n\nexport const setAccountOwnerContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOWN_CONTACT, true);\n};\n\nexport const setAccountOwnerName = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOWN_NAME, true);\n};\n\nexport const setAccountOwnerInformation = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACC_OWN_INFO, true);\n};\n\nexport const setBusinessName = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_NAME, true);\n};\n\nexport const setBusinessType = (dispatch, data) => {\n  businessData.type = data.type;\n  set(dispatch, data, ACTIONS.BUS_TYPE, true);\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.COMPLETE, false);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n};\n\nexport const setDomesticJurisdiction = (dispatch, data, filingFees) => {\n  set(dispatch, data, ACTIONS.DOM_JUR, true);\n  getStateFees(dispatch, data, filingFees);\n};\n\nexport const setInit = (dispatch, data) => {\n  setIsFreeAccount(data.isSimulated);\n  doReset();\n  setAppEntryPoint(dispatch, true);\n\n  const {\n    id = '',\n    fromDashboard = false,\n    domesticJurisdiction = '',\n    name = ''\n  } = data;\n  _assign(\n    pageData,\n    {\n      fromDashboard,\n      skipDomesticJurisdiction: !!domesticJurisdiction,\n      skipBusinessName: !!name,\n      id\n    });\n  _assign(businessData, { domesticJurisdiction, name });\n\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  set(dispatch, data, ACTIONS.INIT, false);\n\n  if (pageData.skipBusinessName) {\n    set(dispatch, data, ACTIONS.BUS_NAME, false);\n  }\n\n  if (pageData.skipDomesticJurisdiction) {\n    set(dispatch, data, ACTIONS.DOM_JUR, false);\n  }\n\n  if (id) {\n    set(dispatch, data, ACTIONS.BUS_ID, false);\n  }\n\n  browserHistory.replace(getEntryPoint());\n};\n\nexport const setMailingAddress = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.MAIL_ADDR, true);\n};\n\nexport const setMailingAddressModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.MAIL_ADDR_MODAL, false);\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setPhysicalAddress = (dispatch, data) => {\n  businessAddressesData.usePhysicalAsMailing = data.usePhysicalAsMailing;\n  set(dispatch, data, ACTIONS.PHYS_ADDR, true);\n};\n\nexport const setPhysicalAddressModal = (dispatch, data) => {\n  businessAddressesData.usePhysicalAsMailing = data.usePhysicalAsMailing;\n  set(dispatch, data, ACTIONS.PHYS_ADDR_MODAL, false);\n};\n\nexport const setPrimaryContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIM_CONTACT, true);\n};\n\nexport const setPrimaryContactModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIM_CONTACT_MODAL, false);\n};\n\nexport const setShare = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.SHARE, true);\n};\n\nconst createNameResOrder = (dispatch, reducerData, filingFees) => {\n  const serviceEndpoint = 'createNameReservation';\n  registrationService[serviceEndpoint](reducerData, filingFees).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      payload: {\n        data,\n        reducerData\n      }\n    });\n\n    trackEvent('Purchase', 'complete', 'Name Reservation');\n    browserHistory.push(`/${URLS.BASE}/${URLS.SHARE}`);\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, filingFees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n  const { registration } = reducerData,\n    { customer: { cardToken, expMonth, expYear, cvc, brand, last4 } } = registration,\n    paymentData = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n\n  if (!isLoggedIn() || !cardToken) {\n    createNameResOrder(dispatch, registration, filingFees);\n  } else {\n    accountService.addPaymentMethodV2(paymentData).then((response) => {\n      const mergedData = _assign({}, response.data, paymentData);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createNameResOrder(dispatch, registration, filingFees);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const createLead = (dispatch, lead) => {\n  logger.logAction(ACTIONS.CREATE_LEAD);\n  dispatch({\n    type: ACTIONS.CREATE_LEAD\n  });\n  registrationService.createLead(lead).then((response) => {\n    logger.logAction(ACTIONS.CREATE_LEAD_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.CREATE_LEAD_COMPLETE,\n      payload: {\n        data: response\n      }\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_LEAD_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_LEAD_COMPLETE,\n      error: true,\n      payload: {\n        data: err\n      }\n    });\n  });\n};\n\nexport const setBusinessData = (dispatch, data, filingFees) => {\n  set(dispatch, data, ACTIONS.BUS_DATA, false);\n  getStateFees(dispatch, data, filingFees);\n};\n\nexport const setContactData = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.ACCOWN_MODAL, false);\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport default {\n  getEntryPoint,\n  getStateFees,\n  goBack,\n  goToNextUncompletedPage,\n  orderAlreadyCreated,\n  setAccountOwnerContact,\n  setAccountOwnerName,\n  setBusinessName,\n  setBusinessType,\n  setComplete,\n  setDomesticJurisdiction,\n  setInit,\n  setMailingAddress,\n  setMailingAddressModal,\n  setPayment,\n  setPhysicalAddress,\n  setPhysicalAddressModal,\n  setPrimaryContact,\n  setShare,\n  createOrder,\n  createLead,\n  setBusinessData,\n  setContactData,\n  resetAllData\n};\n","import { URLS } from '../../../constants/register_gs';\n\n/* eslint-disable max-statements */\nconst\n  getFlowOrder = (url) => {\n    if (url === URLS.COMPLETE) {\n      return [ URLS.COMPLETE ];\n    }\n    return [ URLS.START, URLS.CHOOSE_COMPANY, URLS.CHOOSE_STATE, URLS.DATA_CONFIRM, URLS.PAYMENT, URLS.COMPLETE ];\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegisterGSFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterGSFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS as ORDER_ACTIONS } from '../../constants/orders';\nimport { ACTIONS, URLS } from '../../constants/register_gs';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { storageKey as goodStandingKey } from '../../reducers/registration/goodStanding';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, orderService, registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\n\nconst\n  defaultFlowData = { companyId: '' },\n  flowData = getReducerSnapshot(goodStandingKey, defaultFlowData),\n  getFlowOrder = (url) => {\n    return getFlow(url);\n  },\n  getCompanyUrl = () => {\n    if (flowData.companyId) {\n      return `/${COMPANY_URLS.BASE}/${flowData.companyId}`;\n    }\n    return `/${DASHBOARD_URLS.BASE}`;\n  },\n  go = (jump, dispatch, doReplace) => {\n    const\n      url = document.location.pathname.substring(URLS.BASE.length + 2) || URLS.START,\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      document.location = getCompanyUrl();\n    } else if (jumpIndex >= flowOrder.length) {\n      document.location = getCompanyUrl();\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  goTo = (dispatch, actionKey, url) => {\n    logger.logAction(actionKey);\n    dispatch({\n      type: actionKey\n    });\n    browserHistory.push(`/${URLS.BASE}/${url}`);\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch);\n    }\n  },\n  doReset = () => {\n    _assign(flowData, defaultFlowData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const path = document.location.pathname,\n    idx = path.indexOf(URLS.BASE),\n    idx2 = idx + URLS.BASE.length + 2;\n\n  logger.logAction(ACTIONS.GO_BACK, { location: path.substring(idx2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const setBackFromCompleteBusiness = () => {\n  document.location = getCompanyUrl();\n};\n\nexport const goToChooseCompany = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CHOOSE_COMPANY, URLS.CHOOSE_COMPANY);\n};\n\nexport const setChooseCompany = (dispatch, data) => {\n  const { companyId } = data;\n  _assign(flowData, { companyId });\n  set(dispatch, data, ACTIONS.CHOOSE_COMPANY, true);\n};\n\nexport const goToChooseState = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CHOOSE_STATE, URLS.CHOOSE_STATE);\n};\n\nexport const setChooseState = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CHOOSE_STATE, true);\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, {}, ACTIONS.COMPLETE, data.redirect);\n};\n\nexport const setDataConfirmation = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.DATA_CONFIRM, true);\n};\n\nexport const setInit = (dispatch, data) => {\n  const { companyId } = data;\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  _assign(flowData, { companyId });\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(`/${URLS.BASE}/${URLS.START}`);\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setStart = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nconst createGSOrder = (dispatch, reducerData, accountId, filingFees) => {\n  registrationService.createGoodStanding(reducerData, accountId, filingFees).then((response) => {\n    trackEvent('Purchase', 'complete', 'Good Standing');\n    orderService.getOrders().then((response1) => {\n      const { data } = response;\n      logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        payload: {\n          data,\n          reducerData\n        }\n      });\n\n      logger.logAction(ORDER_ACTIONS.GET_ORDERS_COMPLETE, response1);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        payload: {\n          data: response1\n        }\n      });\n      go(1);\n    }).catch((err) => {\n      logger.error(ORDER_ACTIONS.GET_ORDERS_COMPLETE, err);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: err && err.errorCode ? err.errorCode : 3000\n        }\n      });\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, accountId, filingFees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { goodStanding } = reducerData,\n    { expMonth, expYear, cvc, cardToken, brand, last4 } = goodStanding;\n\n  if (!cardToken) {\n    createGSOrder(dispatch, reducerData, accountId, filingFees);\n  } else {\n    const data = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createGSOrder(dispatch, reducerData, accountId, filingFees);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  setStart,\n  setBackFromCompleteBusiness,\n  orderAlreadyCreated,\n  setChooseCompany,\n  goToChooseCompany,\n  setChooseState,\n  goToChooseState,\n  setDataConfirmation,\n  setInit,\n  setPayment,\n  setComplete,\n  resetAllData\n};\n","import { URLS } from '../../../constants/register_accounting';\n\n/* eslint-disable max-statements */\nconst\n  getFlowOrder = (url) => {\n    if (url === URLS.COMPLETE) {\n      return [ URLS.COMPLETE ];\n    }\n\n    return [ URLS.START, URLS.PAYMENT, URLS.COMPLETE ];\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegisterAccountingFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterAccountingFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS as ORDER_ACTIONS } from '../../constants/orders';\nimport { ACTIONS, URLS } from '../../constants/register_accounting';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, orderService, registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\n\nconst\n  defaultBusinessData = { id: '', businessOrderType: '' },\n  businessData = getReducerSnapshot(businessKey, defaultBusinessData),\n  getFlowOrder = (url) => {\n    return getFlow(url);\n  },\n  getCompanyUrl = () => {\n    if (businessData.id) {\n      return `/${COMPANY_URLS.BASE}/${businessData.id}`;\n    }\n    return `/${DASHBOARD_URLS.BASE}`;\n  },\n  go = (jump, dispatch, doReplace) => {\n    const\n      url = document.location.pathname.substring(URLS.BASE.length + 2) || URLS.START,\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      document.location = getCompanyUrl();\n    } else if (jumpIndex >= flowOrder.length) {\n      document.location = getCompanyUrl();\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch);\n    }\n  },\n  doReset = () => {\n    _assign(businessData, defaultBusinessData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const path = document.location.pathname,\n    idx = path.indexOf(URLS.BASE),\n    idx2 = idx + URLS.BASE.length + 2;\n\n  logger.logAction(ACTIONS.GO_BACK, { location: path.substring(idx2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const setBackFromCompleteBusiness = () => {\n  browserHistory.push(getEntryPoint());\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, {}, ACTIONS.COMPLETE, data.redirect);\n};\n\nexport const setInit = (dispatch, data) => {\n  const { companyId } = data;\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  _assign(businessData, { id: companyId });\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(`/${URLS.BASE}/${URLS.START}`);\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setStart = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nconst createAccountingOrder = (dispatch, reducerData, accountId) => {\n  registrationService.createAccounting(reducerData, accountId).then((response) => {\n    trackEvent('Purchase', 'complete', 'Accounting');\n    orderService.getOrders().then((response1) => {\n      const { data } = response;\n      logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        payload: {\n          data,\n          reducerData\n        }\n      });\n\n      logger.logAction(ORDER_ACTIONS.GET_ORDERS_COMPLETE, response1);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        payload: {\n          data: response1\n        }\n      });\n      go(1);\n    }).catch((err) => {\n      logger.error(ORDER_ACTIONS.GET_ORDERS_COMPLETE, err);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: err && err.errorCode ? err.errorCode : 3000\n        }\n      });\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, accountId) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { accounting } = reducerData,\n    { cardNumber, expMonth, expYear, cvc } = accounting;\n\n  if (!cardNumber) {\n    createAccountingOrder(dispatch, reducerData, accountId);\n  } else {\n    const data = { cardNumber, expMonth, expYear, cvc, isDefault: true };\n    accountService.addPaymentMethod(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createAccountingOrder(dispatch, reducerData, accountId);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  setComplete,\n  setInit,\n  setPayment,\n  setStart,\n  setBackFromCompleteBusiness,\n  orderAlreadyCreated,\n  resetAllData\n};\n","import { ACTIONS } from '../../constants/initialization';\nimport { initializationService } from '../../services';\nimport logger from '../../utils/ClientLogger';\n\n// Initialization Action Creators\n\nexport const setInitialization = (dispatch, data) => {\n  logger.logAction(ACTIONS.SET_INITIALIZATION, data);\n  dispatch({\n    type: ACTIONS.SET_INITIALIZATION,\n    payload: {\n      data\n    }\n  });\n};\n\nexport const setAppEntryPoint = (dispatch, useReferrer) => {\n  logger.logAction(ACTIONS.SET_APP_ENTRY_POINT, useReferrer ? document.referrer : window.location.pathname);\n  dispatch({\n    type: ACTIONS.SET_APP_ENTRY_POINT,\n    payload: {\n      data: {\n        entryPoint: useReferrer ? document.referrer : window.location.pathname\n      }\n    }\n  });\n};\n\nexport const getStateFees = (dispatch, stateCode) => {\n  logger.logAction(ACTIONS.GET_STATE_FEES, { stateCode });\n  dispatch({\n    type: ACTIONS.GET_STATE_FEES\n  });\n  initializationService.getStateFees(stateCode).then((response) => {\n    const stateFeeResponse = (stateCode) ? { [stateCode]: response } : response;\n\n    logger.logAction(ACTIONS.GET_STATE_FEES_COMPLETE, stateFeeResponse);\n    dispatch({\n      type: ACTIONS.GET_STATE_FEES_COMPLETE,\n      payload: {\n        data: stateFeeResponse\n      }\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.GET_STATE_FEES_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.GET_STATE_FEES_COMPLETE,\n      error: true,\n      payload: {\n        data: err && err.errorCode ? err.errorCode : 2000\n      }\n    });\n  });\n};\n\nexport const getExpediteFees = (dispatch, stateCode) => {\n  logger.logAction(ACTIONS.GET_EXPEDITE_FEES, { stateCode });\n  dispatch({\n    type: ACTIONS.GET_EXPEDITE_FEES\n  });\n  initializationService.getExpediteFees(stateCode).then((response) => {\n    const expediteFeeResponse = (stateCode) ? { [stateCode]: response } : response;\n\n    logger.logAction(ACTIONS.GET_EXPEDITE_FEES_COMPLETE, expediteFeeResponse);\n    dispatch({\n      type: ACTIONS.GET_EXPEDITE_FEES_COMPLETE,\n      payload: {\n        data: expediteFeeResponse\n      }\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.GET_EXPEDITE_FEES_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.GET_EXPEDITE_FEES_COMPLETE,\n      error: true,\n      payload: {\n        data: err\n      }\n    });\n  });\n};\n\nexport const initializeData = (dispatch, data) => {\n  logger.logAction(ACTIONS.INITIALIZE_PRICING_DATA, data);\n  dispatch({\n    type: ACTIONS.INITIALIZE_PRICING_DATA,\n    payload: {\n      data\n    }\n  });\n};\n\nexport default {\n  setAppEntryPoint,\n  getStateFees,\n  getExpediteFees\n};\n","import { URLS } from '../../../constants/complete_business';\n\nconst\n  getAddressFlow = (url, registration) => {\n    const { usePhysicalAsMailing, usePhysicalAsPrincipal, useMailingAsPrincipal } = registration.businessAddresses,\n      flowItems = [];\n\n    flowItems.push(URLS.PHYS_ADDR);\n    if (!usePhysicalAsMailing || url === URLS.MAIL_ADDR) {\n      flowItems.push(URLS.MAIL_ADDR);\n      if ((!useMailingAsPrincipal && !usePhysicalAsPrincipal) || url === URLS.PRIN_ADDR) {\n        flowItems.push(URLS.PRIN_ADDR);\n      }\n    } else if (!usePhysicalAsPrincipal || url === URLS.PRIN_ADDR) {\n      flowItems.push(URLS.PRIN_ADDR);\n    }\n    return flowItems;\n  },\n\n  /* eslint-disable max-statements */\n  getPostPrincipalsFlowOrder = (url, registration) => {\n    const\n      { page, purchase } = registration,\n      { forceToContact, forceToMembers, forceToManagers, forceToDirectors, forceToOfficers, forceToRegisteredAgent, registrationFlow } = page,\n      { privacy } = purchase,\n//      { forceCompany, forcePerson } = registeredAgent,\n      flowItems = [];\n\n    if (forceToMembers || forceToManagers || forceToDirectors || forceToOfficers) {\n      flowItems.push(URLS.DATA_CONFIRM);\n    } else {\n      if (registrationFlow === '') {\n        flowItems.push(URLS.REG_AGT);\n      }\n      if (forceToRegisteredAgent) {\n        flowItems.push(URLS.DATA_CONFIRM, URLS.SHARE, URLS.COMPLETE);\n      } else if (url === URLS.PRIM_CONTACT) {\n        flowItems.push(URLS.CHOOSE_PRIM_CONTACT, URLS.PRIM_CONTACT, URLS.DATA_CONFIRM);\n      } else {\n        flowItems.push(URLS.CHOOSE_PRIM_CONTACT, URLS.DATA_CONFIRM);\n      }\n    }\n\n    if (forceToContact) {\n      flowItems.push(URLS.CHOOSE_PRIM_CONTACT);\n    } else if (forceToMembers) {\n      flowItems.push(URLS.LLC_MBR_COUNT);\n    } else if (forceToManagers) {\n      flowItems.push(URLS.LLC_MGR_OPT);\n    } else if (forceToDirectors) {\n      flowItems.push(URLS.CORP_DIR_COUNT);\n    } else if (forceToOfficers) {\n      flowItems.push(URLS.CORP_CHOOSE_PRES);\n    } else if (forceToRegisteredAgent) {\n      flowItems.push(URLS.REG_AGT);\n    } else if (privacy) {\n      flowItems.push(URLS.PAYMENT);\n    }\n    flowItems.push(URLS.SHARE, URLS.COMPLETE);\n    return flowItems;\n  },\n  /* esline-enable max-statements */\n\n  /* eslint-disable max-statements */\n  getCorpFlowOrder = (url, registration) => {\n    const\n      { officer, page } = registration,\n      flowItems = [ URLS.CORP_DIR_COUNT, URLS.CORP_DIR_LIST ],\n      { hasAsstSecretary, hasVicePresident } = officer,\n      { forceToDirectors } = page;\n\n    if (forceToDirectors) {\n      flowItems.push(...getPostPrincipalsFlowOrder(url, registration));\n      return flowItems;\n    }\n    flowItems.push(URLS.CORP_CHOOSE_PRES);\n    if (url === URLS.CORP_PRES) { // This is only called directly, so if it is the URL, add it.\n      flowItems.push(URLS.CORP_PRES);\n    }\n    flowItems.push(URLS.CORP_HAS_VP);\n    if (hasVicePresident) {\n      flowItems.push(URLS.CORP_CHOOSE_VP);\n      if (url === URLS.CORP_VP) { // This is only called directly, so if it is the URL, add it.\n        flowItems.push(URLS.CORP_VP);\n      }\n    }\n    flowItems.push(URLS.CORP_CHOOSE_TRSR);\n    if (url === URLS.CORP_TRSR) { // This is only called directly, so if it is the URL, add it.\n      flowItems.push(URLS.CORP_TRSR);\n    }\n    flowItems.push(URLS.CORP_CHOOSE_SEC);\n    if (url === URLS.CORP_SEC) { // This is only called directly, so if it is the URL, add it.\n      flowItems.push(URLS.CORP_SEC);\n    }\n    flowItems.push(URLS.CORP_HAS_ASST_SEC);\n    if (hasAsstSecretary) {\n      flowItems.push(URLS.CORP_CHOOSE_ASST_SEC);\n      if (url === URLS.CORP_ASST_SEC) { // This is only called directly, so if it is the URL, add it.\n        flowItems.push(URLS.CORP_ASST_SEC);\n      }\n    }\n    flowItems.push(...getPostPrincipalsFlowOrder(url, registration));\n    return flowItems;\n  },\n  /* eslint-enable max-statements */\n  getLLCFlowOrder = (url, registration) => {\n    const\n      { manager, page } = registration,\n      flowItems = [ URLS.LLC_MBR_COUNT, URLS.LLC_MBR_LIST ],\n      { managerType } = manager,\n      { forceToMembers } = page;\n\n    if (url === URLS.LLC_MBR_LIST && forceToMembers) {\n      flowItems.push(...getPostPrincipalsFlowOrder(url, registration));\n      return flowItems;\n    }\n\n    flowItems.push(URLS.LLC_MGR_OPT);\n    if (managerType === 'SomeOwners' || managerType === 'SomeManagers') {\n      flowItems.push(URLS.LLC_BUS_RUN);\n    }\n    if (managerType === 'SomeManagers' || managerType === 'AllManagers') {\n      flowItems.push(URLS.LLC_MGR_COUNT, URLS.LLC_MGR_LIST);\n    }\n    flowItems.push(...getPostPrincipalsFlowOrder(url, registration));\n    return flowItems;\n  },\n  /* eslint-disable max-statements */\n  getFlowOrder = (url, registration) => {\n    const\n      { business } = registration,\n      { type } = business;\n\n    if (url === URLS.COMPLETE || url === URLS.SHARE) {\n      return [ URLS.SHARE, URLS.COMPLETE ];\n    }\n    const\n      flowItems = [ URLS.BUS_DESC, ...getAddressFlow(url, registration) ];\n\n    if (type === 'CORP') {\n      flowItems.push(...getCorpFlowOrder(url, registration));\n    } else {\n      flowItems.push(...getLLCFlowOrder(url, registration));\n    }\n    return flowItems;\n  };\n  /* eslint-enable max-statements */\n\nexport default {\n  getPostPrincipalsFlowOrder,\n  getCorpFlowOrder,\n  getLLCFlowOrder,\n  getFlowOrder\n};\n","import { getCompleteWFGFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getCompleteWFGFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _find from 'lodash/find';\nimport _indexOf from 'lodash/indexOf';\nimport _map from 'lodash/map';\nimport { browserHistory } from 'react-router';\n\nimport { getStateFees as getInitStateFees } from '../initialization';\nimport { setInit as setInitAccounting, setBackFromCompleteBusiness as setReturnAccounting } from '../register_accounting';\nimport { setInit as setInitBanking, setBackFromCompleteBusiness as setReturnBanking } from '../register_banking';\nimport { setInit as setInitEIN, setBackFromCompleteBusiness as setReturnEIN } from '../register_ein';\nimport { setInit as setInitDBAEntity, setBackFromCompleteBusiness as setReturnDBAEntity } from '../register_dbaentity_pf';\nimport { setInit as setInitGS, setBackFromCompleteBusiness as setReturnGS } from '../register_gs';\nimport { setInit as setInitNYPub, setBackFromCompleteBusiness as setReturnNYPub } from '../register_nypub';\nimport { setInit as setInitWFG, setBackFromCompleteBusiness as setReturnWFG } from '../register_wfg';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { ACTIONS, URLS } from '../../constants/complete_business';\nimport { DOM_JURS } from '../../constants/ui';\nimport logger from '../../utils/ClientLogger';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport { storageKey as businessAddressesKey } from '../../reducers/registration/businessAddresses';\nimport { storageKey as directorKey } from '../../reducers/registration/directors';\nimport { storageKey as managerKey } from '../../reducers/registration/managers';\nimport { storageKey as memberKey } from '../../reducers/registration/members';\nimport { storageKey as officerKey } from '../../reducers/registration/officers';\nimport { storageKey as pageKey } from '../../reducers/registration/page';\nimport { storageKey as purchaseKey } from '../../reducers/registration/purchase';\nimport { storageKey as registeredAgentKey } from '../../reducers/registration/registeredAgent';\nimport { accountService, businessEntityService, registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlows from './flows';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\n\nconst\n  defaultBusinessData = { type: 'LLCX', id: '', businessOrderType: '', addressMatch: false, addressIsGoogle: false, domesticJurisdiction: '' },\n  businessData = getReducerSnapshot(businessKey, defaultBusinessData),\n  defaultBusinessAddressesData = { usePhysicalAsPrincipal: false, usePhysicalAsMailing: false, useMailingAsPrincipal: false },\n  businessAddressesData = getReducerSnapshot(businessAddressesKey, defaultBusinessAddressesData),\n  defaultManagerData = { managerType: '' },\n  managerData = getReducerSnapshot(managerKey, defaultManagerData),\n  defaultOfficerData = { hasAsstSecretary: false, hasVicePresident: false },\n  officerData = getReducerSnapshot(officerKey, defaultOfficerData),\n  defaultPageData = { forceToMembers: false, forceToManagers: false, forceToDirectors: false, forceToOfficers: false, forceToPayment: false, forceToContact: false, registrationFlow: '' },\n  pageData = getReducerSnapshot(pageKey, defaultPageData),\n  defaultPurchaseData = { privacy: false },\n  purchaseData = getReducerSnapshot(purchaseKey, defaultPurchaseData),\n  defaultRegisteredAgentData = { forceContact: false, forcePerson: false },\n  registeredAgentData = getReducerSnapshot(registeredAgentKey, defaultRegisteredAgentData),\n  // This is a reduced flow for analyzing the data confirmation.\n  /* eslint-disable max-statements */\n  getFlowOrder = (url) => {\n    const registration = {\n      business: businessData,\n      businessAddresses: businessAddressesData,\n      manager: managerData,\n      officer: officerData,\n      page: pageData,\n      purchase: purchaseData,\n      registeredAgent: registeredAgentData\n    };\n    return getFlows(url, registration);\n  },\n  getCompanyUrl = () => {\n    return `/${COMPANY_URLS.BASE}/${businessData.id}`;\n  },\n  go = (jump, dispatch) => {\n    const\n      { registrationFlow = '' } = pageData,\n      url = document.location.pathname.substring(URLS.BASE.length + 2) || URLS.START,\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index;\n\n    if (jumpIndex < 0) {\n      if (registrationFlow === 'bl' || registrationFlow === 'ein') {\n        setReturnEIN(dispatch, {});\n      } else if (registrationFlow === 'wfg') {\n        setReturnWFG(dispatch, {});\n      } else if (registrationFlow === 'acct') {\n        setReturnAccounting(dispatch, {});\n      } else if (registrationFlow === 'bank') {\n        setReturnBanking(dispatch, {});\n      } else if (registrationFlow === 'dbaEntity') {\n        setReturnDBAEntity(dispatch, {});\n      } else if (registrationFlow === 'gs') {\n        setReturnGS(dispatch, {});\n      } else if (registrationFlow === 'ny') {\n        setReturnNYPub(dispatch, {});\n      } else {\n        document.location = getCompanyUrl();\n      }\n    } else if (jumpIndex >= flowOrder.length) {\n      const\n        business = getReducerSnapshot(businessKey, {}),\n        membersSnap = getReducerSnapshot(memberKey, {}),\n        directorsSnap = getReducerSnapshot(directorKey, {}),\n        { id, name, type, description, domesticJurisdiction, addressLine1, addressLine2, city, county, state, country, zipCode } = business,\n        { phoneNumber } = business,\n        { members } = membersSnap,\n        { directors } = directorsSnap,\n        owners = _map((type === 'CORP' ? directors : members), (owner) => {\n          return _assign({ percent: '', percentFloat: 0, accountOwner: false }, owner);\n        }),\n        data = {\n          id,\n          companyId: id,\n          type,\n          businessType: type,\n          name,\n          description,\n          domesticJurisdiction,\n          phoneNumber,\n          addressLine1,\n          addressLine2,\n          city,\n          county,\n          state,\n          country,\n          zipCode,\n          mailingAddressLine1: addressLine1,\n          mailingAddressLine2: addressLine2,\n          mailingCity: city,\n          mailingCounty: county,\n          mailingState: state,\n          mailingCountry: country,\n          mailingZipCode: zipCode,\n          owners\n        };\n\n      if (registrationFlow === 'bl') {\n        setInitEIN(dispatch, { companyId: id, registrationFlow: 'bl' });\n      } else if (registrationFlow === 'ein') {\n        setInitEIN(dispatch, { companyId: id });\n      } else if (registrationFlow === 'wfg') {\n        setInitWFG(dispatch, { companyId: id });\n      } else if (registrationFlow === 'acct') {\n        setInitAccounting(dispatch, data);\n      } else if (registrationFlow === 'bank') {\n        setInitBanking(dispatch, data);\n      } else if (registrationFlow === 'dbaEntity') {\n        setInitDBAEntity(dispatch, data);\n      } else if (registrationFlow === 'gs') {\n        setInitGS(dispatch, data);\n      } else if (registrationFlow === 'ny') {\n        setInitNYPub(dispatch, data);\n      } else {\n        document.location = getCompanyUrl();\n      }\n    } else {\n      browserHistory.push(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch);\n    }\n  },\n  goTo = (dispatch, actionKey, url) => {\n    logger.logAction(actionKey);\n    dispatch({\n      type: actionKey\n    });\n    browserHistory.push(`/${URLS.BASE}/${url}`);\n  },\n  updateSnapshots = () => {\n    _assign(businessData, getReducerSnapshot(businessKey, defaultBusinessData));\n    _assign(businessAddressesData, getReducerSnapshot(businessAddressesKey, defaultBusinessAddressesData));\n    _assign(managerData, getReducerSnapshot(managerKey, defaultManagerData));\n    _assign(officerData, getReducerSnapshot(officerKey, defaultOfficerData));\n    _assign(pageData, getReducerSnapshot(pageKey, defaultPageData));\n    _assign(purchaseData, getReducerSnapshot(purchaseKey, defaultPurchaseData));\n    _assign(registeredAgentData, getReducerSnapshot(registeredAgentKey, defaultRegisteredAgentData));\n  };\n\nexport const goBack = (dispatch) => {\n  logger.logAction(ACTIONS.GO_BACK, { location: document.location.pathname.substring(URLS.BASE.length + 2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const goToCorpAsstSecretary = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CORP_ASST_SEC, URLS.CORP_ASST_SEC);\n};\n\nexport const goToCorpPresident = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CORP_PRES, URLS.CORP_PRES);\n};\n\nexport const goToCorpSecretary = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CORP_SEC, URLS.CORP_SEC);\n};\n\nexport const goToCorpTreasurer = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CORP_TRSR, URLS.CORP_TRSR);\n};\n\nexport const goToCorpVicePresident = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_CORP_VP, URLS.CORP_VP);\n};\n\nexport const goToPrimaryContact = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_TO_PRIM_CONTACT, URLS.PRIM_CONTACT);\n};\n\nexport const setBusinessDescription = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_DESC, true);\n};\n\nexport const setChoosePrimaryContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CHOOSE_PRIM_CONTACT, true);\n};\n\nexport const setCorpAsstSecretary = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_ASST_SEC, true);\n};\n\nexport const setCorpChooseAsstSecretary = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_CHOOSE_ASST_SEC, true);\n};\n\nexport const setCorpChoosePresident = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_CHOOSE_PRES, true);\n};\n\nexport const setCorpChooseSecretary = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_CHOOSE_SEC, true);\n};\n\nexport const setCorpChooseTreasurer = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_CHOOSE_TRSR, true);\n};\n\nexport const setCorpChooseVicePresident = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_CHOOSE_VP, true);\n};\n\nexport const setCorpDirectorCount = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_DIR_COUNT, true);\n};\n\nexport const setCorpDirectorList = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_DIR_LIST, true);\n};\n\nexport const setCorpHasAsstSecretary = (dispatch, data) => {\n  officerData.hasAsstSecretary = data.hasAsstSecretary;\n  set(dispatch, data, ACTIONS.CORP_HAS_ASST_SEC, true);\n};\n\nexport const setCorpHasVicePresident = (dispatch, data) => {\n  officerData.hasVicePresident = data.hasVicePresident;\n  set(dispatch, data, ACTIONS.CORP_HAS_VP, true);\n};\n\nexport const setCorpPresident = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_PRES, true);\n};\n\nexport const setCorpSecretary = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_SEC, true);\n};\n\nexport const setCorpTreasurer = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_TRSR, true);\n};\n\nexport const setCorpVicePresident = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CORP_VP, true);\n};\n\nexport const setDataConfirmation = (dispatch, data) => {\n  pageData.forceToDataConfirmation = data.forceToDataConfirmation;\n  pageData.forceToMembers = data.forceToMembers;\n  pageData.forceToManagers = data.forceToManagers;\n  pageData.forceToDirectors = data.forceToDirectors;\n  pageData.forceToOfficers = data.forceToOfficers;\n  pageData.forceToContact = data.forceToContact;\n  pageData.forceToRegisteredAgent = data.forceToRegisteredAgent;\n  set(dispatch, data, ACTIONS.DATA_CONFIRM, false);\n};\n\nexport const setLLCBusinessRunners = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_BUS_RUN, true);\n};\n\nexport const setLLCManagerCount = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MGR_COUNT, true);\n};\n\nexport const setLLCManagerList = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MGR_LIST, true);\n};\n\nexport const setLLCManagerOption = (dispatch, data) => {\n  managerData.managerType = data.managerType;\n  set(dispatch, data, ACTIONS.LLC_MGR_OPT, true);\n};\n\nexport const setLLCMemberCount = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MBR_COUNT, true);\n};\n\nexport const setLLCMemberList = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.LLC_MBR_LIST, true);\n};\n\nexport const setMailingAddress = (dispatch, data) => {\n  businessAddressesData.useMailingAsPrincipal = data.useMailingAsPrincipal;\n  set(dispatch, data, ACTIONS.MAIL_ADDR, true);\n};\n\nexport const setMailingAddressModal = (dispatch, data) => {\n  businessAddressesData.useMailingAsPrincipal = data.useMailingAsPrincipal;\n  set(dispatch, data, ACTIONS.MAIL_ADDR_MODAL, false);\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setPhysicalAddress = (dispatch, data) => {\n  businessAddressesData.usePhysicalAsMailing = data.usePhysicalAsMailing;\n  businessAddressesData.usePhysicalAsPrincipal = data.usePhysicalAsPrincipal;\n  set(dispatch, data, ACTIONS.PHYS_ADDR, true);\n};\n\nexport const setPhysicalAddressModal = (dispatch, data) => {\n  businessAddressesData.usePhysicalAsMailing = data.usePhysicalAsMailing;\n  businessAddressesData.usePhysicalAsPrincipal = data.usePhysicalAsPrincipal;\n  set(dispatch, data, ACTIONS.PHYS_ADDR_MODAL, false);\n};\n\nexport const setPrimaryContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIM_CONTACT, true);\n};\n\nexport const setPrimaryContactModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIM_CONTACT_MODAL, false);\n};\n\nexport const setPrincipalAddress = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIN_ADDR, true);\n};\n\nexport const setPrincipalAddressModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIN_ADDR_MODAL, false);\n};\n\nexport const setPurchaseRegisteredAgent = (dispatch, data) => {\n  const { privacy, forceCompany, forcePerson } = data;\n  purchaseData.privacy = privacy;\n  registeredAgentData.forceCompany = forceCompany;\n  registeredAgentData.forcePerson = forcePerson;\n  set(dispatch, data, ACTIONS.PURCH_REG_AGT, true);\n};\n\nexport const setRegisteredAgent = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.REG_AGT, true);\n};\n\nexport const setRegisteredAgentModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.REG_AGT_MODAL, false);\n};\n\nconst createRAOrder = (dispatch, reducerData, fees) => {\n  const serviceMethod = 'createRA';\n\n  registrationService[serviceMethod](reducerData, fees).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      payload: {\n        data,\n        reducerData\n      }\n    });\n\n    trackEvent('Purchase', 'complete', 'Registered Agent');\n    go(1);\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, fees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { customer } = reducerData,\n    { cardNumber, expMonth, expYear, cvc } = customer;\n\n  if (!cardNumber) {\n    createRAOrder(dispatch, reducerData, fees);\n  } else {\n    const data = { cardNumber, expMonth, expYear, cvc, isDefault: true };\n    accountService.addPaymentMethod(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createRAOrder(dispatch, reducerData, fees);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport const getStateFees = (dispatch, data, filingFees) => {\n  if (!filingFees[data.domesticJurisdiction] || !filingFees[data.domesticJurisdiction].registered_agent_service) {\n    getInitStateFees(dispatch, data.domesticJurisdiction);\n  }\n};\n\nexport const updateBusiness = (dispatch, reducerData, businessEntityId) => {\n  logger.logAction(ACTIONS.UPDATE_BUSINESS);\n  dispatch({\n    type: ACTIONS.UPDATE_BUSINESS\n  });\n  businessEntityService.update(reducerData, businessEntityId).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.UPDATE_BUSINESS_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.UPDATE_BUSINESS_COMPLETE,\n      payload: {\n        data,\n        reducerData\n      }\n    });\n    go(1, dispatch);\n  }).catch((err) => {\n    logger.error(ACTIONS.UPDATE_BUSINESS_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.UPDATE_BUSINESS_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const updateContacts = (dispatch, data) => {\n  const { contactType } = data;\n  const type = {\n    member: 'UPDATE_MBR',\n    manager: 'UPDATE_MGR',\n    director: 'UPDATE_DIR',\n    officer: 'UPDATE_OFC'\n  };\n  const action = type[contactType || ''];\n  if (action) set(dispatch, data, ACTIONS[action], false);\n};\n\nexport const setBusinessModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_MODAL, false);\n};\n\nexport const getEntryPoint = (companyId, fromBack) => {\n  const flowOrder = getFlowOrder(''),\n    index = fromBack ? flowOrder.length - 1 : 0;\n  return `/${URLS.BASE}/${flowOrder[index]}`;\n};\n\nexport const setInit = (dispatch, data) => {\n  updateSnapshots();\n  const { type, domesticJurisdiction, registrationFlow = '' } = data;\n  businessData.type = type;\n  businessData.domesticJurisdiction = domesticJurisdiction;\n  pageData.registrationFlow = registrationFlow;\n\n  const match = _find(DOM_JURS, (option) => {\n    return option.value === data.domesticJurisdiction;\n  });\n  data.domesticJurisdictionName = match ? match.label : '';\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.push(getEntryPoint(data.id || null));\n};\n\nexport const businessAlreadyUpdated = () => {\n  go(1);\n};\n\nexport default {\n  goBack,\n  getEntryPoint,\n  goToCorpAsstSecretary,\n  goToCorpPresident,\n  goToCorpSecretary,\n  goToCorpTreasurer,\n  goToCorpVicePresident,\n  goToPrimaryContact,\n  setBusinessModal,\n  setChoosePrimaryContact,\n  setCorpAsstSecretary,\n  setCorpChooseAsstSecretary,\n  setCorpChoosePresident,\n  setCorpChooseSecretary,\n  setCorpChooseTreasurer,\n  setCorpChooseVicePresident,\n  setCorpDirectorCount,\n  setCorpDirectorList,\n  setCorpHasAsstSecretary,\n  setCorpHasVicePresident,\n  setCorpPresident,\n  setCorpSecretary,\n  setCorpTreasurer,\n  setCorpVicePresident,\n  setDataConfirmation,\n  setLLCBusinessRunners,\n  setLLCManagerCount,\n  setLLCManagerList,\n  setLLCManagerOption,\n  setLLCMemberCount,\n  setLLCMemberList,\n  setMailingAddress,\n  setMailingAddressModal,\n  setPayment,\n  setPhysicalAddress,\n  setPhysicalAddressModal,\n  setPrimaryContact,\n  setPrimaryContactModal,\n  setPrincipalAddress,\n  setPrincipalAddressModal,\n  setPurchaseRegisteredAgent,\n  setRegisteredAgent,\n  setRegisteredAgentModal,\n  setInit,\n  updateBusiness,\n  updateContacts,\n  businessAlreadyUpdated,\n  createOrder,\n  getStateFees,\n  orderAlreadyCreated,\n  resetAllData\n};\n","import _get from 'lodash/get';\nimport _cloneDeep from 'lodash/cloneDeep';\nimport { URLS, ADDITIONAL_QUESTIONS_KEYS as KEYS } from '../../../constants/annual_report';\nimport { isMdArEnhancementEnabled } from '../../../components/register_compliance_reports/annual_report/utils/common';\n\nconst questionsShowFlagMap = {\n  showMakesLessThanAmount: URLS.ADDITIONAL_QUESTIONS.MAKES_LESS_THAN,\n\n  showHadGoodStanding: URLS.ADDITIONAL_QUESTIONS.GOOD_STANDING_IN_MD,\n  showHadPersonalProperty: URLS.ADDITIONAL_QUESTIONS.PERSONAL_PROPERTY_IN_MD,\n  showUseProperty: URLS.ADDITIONAL_QUESTIONS.PROPERTY_IN_MD,\n  showMaintainLicense: URLS.ADDITIONAL_QUESTIONS.MAINTAIN_LICENSE,\n  showHadGrossSales: URLS.ADDITIONAL_QUESTIONS.GROSS_SALES_IN_MD,\n  showListGrossSales: URLS.ADDITIONAL_QUESTIONS.LIST_GROSS_SALES,\n  showDidDisposeOfProperty: URLS.ADDITIONAL_QUESTIONS.DISPOSE_OF_PROPERTY,\n\n  showWebFileId: URLS.ADDITIONAL_QUESTIONS.WEB_FILE_ID,\n  showTotalRevenue: URLS.ADDITIONAL_QUESTIONS.TOTAL_REVENUE,\n  showOwnsAnyOtherBusiness: URLS.ADDITIONAL_QUESTIONS.OWNS_ANY_OTHER_BUSINESS,\n  showCompanyDataOwns: URLS.ADDITIONAL_QUESTIONS.COMPANY_DATA_OWNS,\n  showIsOwnedByAnyOtherBusiness: URLS.ADDITIONAL_QUESTIONS.IS_OWNED_BY_ANY_OTHER_BUSINESS,\n  showCompanyDataOwnedBy: URLS.ADDITIONAL_QUESTIONS.COMPANY_DATA_OWNED_BY,\n\n  showOwnsRealProperty: URLS.ADDITIONAL_QUESTIONS.OWN_PROPERTY,\n  showHasThereBeenATransferOfStock: URLS.ADDITIONAL_QUESTIONS.TRANSFER_OF_STOCK,\n  showHasTransferOfStockBeenOverEqualFiftyPercent: URLS.ADDITIONAL_QUESTIONS.TRANSFER_OF_STOCK_OVER_EQUAL_FIFTY_PERCENT,\n  showHasControllingInterestTransferFiledDepartmentRevenue: URLS.ADDITIONAL_QUESTIONS.HAS_CONTROLLING_INTEREST_TRANSFER_FILED_DEPARTMENT_REVENUE,\n\n  showHasEnteredIntoContract: URLS.ADDITIONAL_QUESTIONS.HAS_ENTERED_INTO_CONTRACT,\n\n  showHoldsInterestInAgriculturalLand: URLS.ADDITIONAL_QUESTIONS.INTEREST_AGRICULTURAL_LAND,\n  showIsFamilyFarmLLC: URLS.ADDITIONAL_QUESTIONS.FAMILY_FARM_LLC,\n\n  showNaicsCode: URLS.ADDITIONAL_QUESTIONS.NAICS_CODE,\n  showNumberOfStateEmployees: URLS.ADDITIONAL_QUESTIONS.NUMBER_OF_STATE_EMPLOYEES,\n  showNumberOfEmployees: URLS.ADDITIONAL_QUESTIONS.NUMBER_OF_EMPLOYEES,\n  showScrapMetalDealer: URLS.ADDITIONAL_QUESTIONS.SCRAP_METAL_DEALER,\n  showCurrentlyExporting: URLS.ADDITIONAL_QUESTIONS.CURRENTLY_EXPORTING,\n  showTopExportMarkets: URLS.ADDITIONAL_QUESTIONS.TOP_EXPORT_MARKETS,\n  showBeInterestedInExporting: URLS.ADDITIONAL_QUESTIONS.BE_INTERESTED_IN_EXPORTING,\n  showIsMinorityOwnedBusiness: URLS.ADDITIONAL_QUESTIONS.IS_MINORITY_OWNED_BUSINESS,\n  showIsWomanOwnedBusiness: URLS.ADDITIONAL_QUESTIONS.IS_WOMAN_OWNED_BUSINESS,\n  showsOwnMoreThanOneBusiness: URLS.ADDITIONAL_QUESTIONS.OWN_MORE_THAN_ONE_BUSINESS,\n  showHowManyBusinesses: URLS.ADDITIONAL_QUESTIONS.HOW_MANY_BUSINESSES,\n  showHowManyCounties: URLS.ADDITIONAL_QUESTIONS.HOW_MANY_COUNTIES,\n  showDoesEmployIndividualsWhoServeInForces: URLS.ADDITIONAL_QUESTIONS.DOES_EMPLOY_INDIVIDUALS_WHO_SERVE_IN_FORCES,\n  showHowManyIndividuals: URLS.ADDITIONAL_QUESTIONS.HOW_MANY_INDIVIDUALS,\n  showDoesOwnerServeInForces: URLS.ADDITIONAL_QUESTIONS.DOES_OWNER_SERVE_IN_FORCES,\n  showGetSupportFromWVSBDC: URLS.ADDITIONAL_QUESTIONS.GET_SUPPORT_FROM_WVSBDC,\n  showIssuedSharesAndGrossAssets: URLS.ADDITIONAL_QUESTIONS.ISSUED_SHARES_AND_GROSS_ASSETS,\n  showWorkerCompensationInsurance: URLS.ADDITIONAL_QUESTIONS.WORKER_COMPENSATION_INSURANCE,\n  showIsBusinessSelfInsured: URLS.ADDITIONAL_QUESTIONS.IS_BUSINESS_SELF_INSURED,\n  showSelfInsuranceDetails: URLS.ADDITIONAL_QUESTIONS.SELF_INSURANCE_DETAILS,\n  showChiefExecutiveOfficer: URLS.ADDITIONAL_QUESTIONS.CHIEF_EXECUTIVE_OFFICER,\n  showBusinessEntityPrincipalAddress: URLS.ADDITIONAL_QUESTIONS.BUSINESS_ENTITY_PRINCIPAL_ADDRESS,\n  showNumberOfDirectorsAndDirectorsAsWomen: URLS.ADDITIONAL_QUESTIONS.NUMBER_OF_DIRECTORS_AND_DIRECTORS_AS_WOMEN,\n  showOwnedUSMilitaryVeteran: URLS.ADDITIONAL_QUESTIONS.OWNED_US_MILITARY_VETERAN,\n  showOwnedUSDisabledMilitaryVeteran: URLS.ADDITIONAL_QUESTIONS.OWNED_US_DISABLED_MILITARY_VETERAN,\n  showNetReceiptsLessThanOneMillion: URLS.ADDITIONAL_QUESTIONS.NET_RECEIPTS_LESS_THAN_ONE_MILLION,\n  showUpToDateStockInformation: URLS.ADDITIONAL_QUESTIONS.UP_TO_DATE_STOCK_INFORMATION,\n  showStockClass: URLS.ADDITIONAL_QUESTIONS.STOCK_CLASS,\n  showStockAdded: URLS.ADDITIONAL_QUESTIONS.STOCK_ADDED,\n  showCorpTransacts: URLS.ADDITIONAL_QUESTIONS.CORP_TRANSACTS,\n  showCorpOwnership: URLS.ADDITIONAL_QUESTIONS.CORP_OWNERSHIP,\n  showIssuedShares:URLS.ADDITIONAL_QUESTIONS.ISSUED_SHARES,\n  showControllingMembers: URLS.ADDITIONAL_QUESTIONS.CONTROLLING_MEMBERS,\n  showControllingMembers1: URLS.ADDITIONAL_QUESTIONS.CONTROLLING_MEMBERS1,\n  showControllingMembers2: URLS.ADDITIONAL_QUESTIONS.CONTROLLING_MEMBERS2,\n  showControllingMembers3: URLS.ADDITIONAL_QUESTIONS.CONTROLLING_MEMBERS3,\n  showControllingMembers3a: URLS.ADDITIONAL_QUESTIONS.CONTROLLING_MEMBERS3a,\n  showControllingMembers3b: URLS.ADDITIONAL_QUESTIONS.CONTROLLING_MEMBERS3b,\n  showControllingMembers3c: URLS.ADDITIONAL_QUESTIONS.CONTROLLING_MEMBERS3c,\n  showBankruptcy: URLS.ADDITIONAL_QUESTIONS.BANKRUPTCY,\n  showIsCombinedGroup: URLS.ADDITIONAL_QUESTIONS.IS_COMBINED_GROUP,\n  showIsCombinedGroupTempLossPreserved: URLS.ADDITIONAL_QUESTIONS.IS_COMBINED_GROUP_TEMP_LOSS_PRESERVED,\n  showIsTieredPartnerRevAdjusted: URLS.ADDITIONAL_QUESTIONS.IS_TIERED_PARTNER_REV_ADJUSTED,\n  showIsPassiveEntityTX: URLS.ADDITIONAL_QUESTIONS.IS_PASSIVE_ENTITY_TX,\n  showIsREITTX: URLS.ADDITIONAL_QUESTIONS.IS_REIT_TX,\n  showIsNewVetOwnedTX: URLS.ADDITIONAL_QUESTIONS.IS_NEW_VET_OWNED_TX\n};\n\nconst updatedCompanyInfoRestrictions = {\n  showListGrossSales: (updatedCompanyInfo) => {\n    return  updatedCompanyInfo[KEYS.HAD_GROSS_SALES] === 'yes';\n  },\n  showHasTransferOfStockBeenOverEqualFiftyPercent: (updatedCompanyInfo) => {\n    return  updatedCompanyInfo[KEYS.HAS_THERE_BEEN_A_TRANSFER_OF_STOCK] === 'yes';\n  },\n  showHasControllingInterestTransferFiledDepartmentRevenue: (updatedCompanyInfo) => {\n    return updatedCompanyInfo[KEYS.HAS_TRANSFER_OF_STOCK_BEEN_OVER_EQUAL_FIFTY_PERCENT] === 'yes';\n  },\n  showTopExportMarkets: (updatedCompanyInfo) => {\n    return updatedCompanyInfo[KEYS.CURRENTLY_EXPORTING] === 'yes';\n  },\n  showBeInterestedInExporting: (updatedCompanyInfo) => {\n    return updatedCompanyInfo[KEYS.CURRENTLY_EXPORTING] === 'no';\n  },\n  showHowManyBusinesses: (updatedCompanyInfo) => {\n    return updatedCompanyInfo[KEYS.OWN_MORE_THAN_ONE_BUSINESS] === 'yes';\n  },\n  showHowManyCounties: (updatedCompanyInfo) => {\n    return updatedCompanyInfo[KEYS.OWN_MORE_THAN_ONE_BUSINESS] === 'yes';\n  },\n  showHowManyIndividuals: (updatedCompanyInfo) => {\n    return updatedCompanyInfo[KEYS.DOES_EMPLOY_INDIVIDUALS_WHO_SERVE_IN_FORCES] === 'yes';\n  },\n  showIsBusinessSelfInsured: (updatedCompanyInfo) => {\n    return updatedCompanyInfo[KEYS.WORKER_COMPENSATION_INSURANCE] === 'yes';\n  },\n  showSelfInsuranceDetails: (updatedCompanyInfo) => {\n    return updatedCompanyInfo[KEYS.IS_BUSINESS_SELF_INSURED] === 'no';\n  },\n  showOwnedUSDisabledMilitaryVeteran: (updatedCompanyInfo) => {\n    return updatedCompanyInfo[KEYS.OWNED_US_MILITARY_VETERAN] === 'yes';\n  },\n  showStockClass: (updatedCompanyInfo) => {\n    return updatedCompanyInfo[KEYS.UP_TO_DATE_STOCK_INFORMATION] === 'yes';\n  },\n  showStockAdded: (updatedCompanyInfo) => {\n    return updatedCompanyInfo[KEYS.UP_TO_DATE_STOCK_INFORMATION] === 'yes';\n  },\n  showCorpTransacts: (updatedCompanyInfo) => {\n    return updatedCompanyInfo[KEYS.UP_TO_DATE_STOCK_INFORMATION] === 'no';\n  },\n  showCorpOwnership: (updatedCompanyInfo) => {\n    return updatedCompanyInfo[KEYS.UP_TO_DATE_STOCK_INFORMATION] === 'no';\n  },\n  showIsCombinedGroupTempLossPreserved: (updatedCompanyInfo) => {\n    return updatedCompanyInfo[KEYS.IS_COMBINED_GROUP] === 'yes';\n  },\n  showCompanyDataOwnedBy: (updatedCompanyInfo) => {\n    return updatedCompanyInfo[KEYS.IS_OWNED_BY_ANY_OTHER_BUSINESS] === 'yes';\n  },\n  showCompanyDataOwns: (updatedCompanyInfo) => {\n    return updatedCompanyInfo[KEYS.OWNS_ANY_OTHER_BUSINESS] === 'yes';\n  }\n};\n\n// Modify questions flow for MD LLC if LuanchDarkly flag is enabled\nconst modifyQuestionsFlowForMdLlc = ({ businessType, domesticJurisdiction, originalFieldInfo, ldFlags }) => {\n  if (domesticJurisdiction !== 'MD' && businessType !== 'LLCX') return originalFieldInfo;\n\n  const fieldInfoClone = _cloneDeep(originalFieldInfo);\n\n  Object.keys(fieldInfoClone).forEach((key) => {\n    if (key.match(/^show/)) fieldInfoClone[key] = false;\n  });\n\n  if (isMdArEnhancementEnabled(ldFlags) && originalFieldInfo.showHadGoodStanding) {\n    return { ...fieldInfoClone, showHadGoodStanding: true, showHadPersonalProperty: true };\n  }\n\n  return { ...originalFieldInfo, showHadGoodStanding: false };\n};\n\nconst getAdditionalQuestionsFlow = (updatedCompanyInfo, originalFieldInfo, ldFlags, domesticJurisdiction, businessType) => {\n  const fieldInfo = modifyQuestionsFlowForMdLlc({ businessType, domesticJurisdiction, originalFieldInfo, ldFlags });\n  const reduced = Object.keys(questionsShowFlagMap).reduce((flow, showFlag) => {\n    if (fieldInfo[showFlag]) {\n      const hasToCheckUpdatedCompanyInfo = updatedCompanyInfoRestrictions[showFlag];\n      if (!hasToCheckUpdatedCompanyInfo) {\n        flow.push(questionsShowFlagMap[showFlag]);\n        return flow;\n      }\n      const canAddUrl = hasToCheckUpdatedCompanyInfo(updatedCompanyInfo);\n      if (canAddUrl) {\n        flow.push(questionsShowFlagMap[showFlag]);\n      }\n    }\n    return flow;\n  }, []);\n  return reduced;\n};\n\nconst shouldNavigateToAmendment = (updatedCompanyInfo, fieldInfo) => {\n  let flag = false;\n  if (typeof updatedCompanyInfo === 'object' && updatedCompanyInfo !== null) {\n    Object.keys(updatedCompanyInfo).forEach((fieldKey) => {\n      if (_get(fieldInfo[fieldKey], 'requiresAmendment')) {\n        flag = true;\n      }\n    });\n  }\n  return flag;\n};\n\nconst getFlowOrder = (url, annualReport, ldFlags) => {\n  if (url === URLS.ORDER_SUBMITTED) {\n    return [URLS.ORDER_SUBMITTED];\n  }\n  const { originalCompanyInfo, filingJurisdictionType, hasPurchasedWFC = false, fieldInfo, updatedCompanyInfo } = annualReport;\n  const { domesticJurisdiction, type: businessType } = originalCompanyInfo;\n  const flow = [URLS.SELECT_COMPANY, URLS.SELECT_JURISDICTION];\n\n  if (url !== URLS.MODIFY_COMPANY) {\n    if (filingJurisdictionType === 'foreign') {\n      flow.push(URLS.SELECT_FOREIGN_JURISDICTION);\n    }\n    flow.push(URLS.VALIDATE_COMPANY);\n  }\n\n  flow.push(URLS.MODIFY_COMPANY);\n  flow.push(...getAdditionalQuestionsFlow(\n    updatedCompanyInfo || {},\n    fieldInfo || {},\n    ldFlags,\n    domesticJurisdiction,\n    businessType\n  ));\n  if (shouldNavigateToAmendment(updatedCompanyInfo || {}, fieldInfo || {})) {\n    flow.push(URLS.ADD_AMENDMENT);\n  }\n  if (!hasPurchasedWFC) {\n    flow.push(URLS.ADD_WFC);\n  }\n  flow.push(URLS.CONFIRM_CHANGES, URLS.PAYMENT, URLS.ORDER_SUBMITTED);\n  return flow;\n};\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport { browserHistory } from 'react-router';\nimport _get from 'lodash/get';\nimport _indexOf from 'lodash/indexOf';\n\nimport { ACTIONS, URLS, ADDITIONAL_QUESTIONS_KEYS } from '../../constants/annual_report';\nimport { accountService, annualReportService, orderService, registrationService } from '../../services';\nimport logger from '../../utils/ClientLogger';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\nimport { ACTIONS as ORDER_ACTIONS } from '../../constants/orders';\nimport { setAppEntryPoint } from '../initialization';\nimport getFlowOrder from './flows';\nimport { storageKey } from '../../reducers/registration/annualReport';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\n\nconst defaultData = {\n  filingJurisdictionType: null,\n  fieldInfo: null,\n  updatedCompanyInfo: {},\n  originalCompanyInfo: {},\n  hasPurchasedWFC: false\n};\nconst annualReportData = getReducerSnapshot(storageKey, defaultData);\n\nconst getCompanyUrl = () => {\n  if (annualReportData.originalCompanyInfo.id) {\n    return `/${COMPANY_URLS.BASE}/${annualReportData.originalCompanyInfo.id}`;\n  }\n  return `/${DASHBOARD_URLS.BASE}`;\n};\n\nconst go = (jump, ldFlags) => {\n  const url = document.location.pathname.substring(URLS.BASE.length + 2),\n    flowOrder = getFlowOrder(url, annualReportData, ldFlags),\n    index = _indexOf(flowOrder, url),\n    jumpIndex = index >= 0 ? index + jump : index;\n\n  if (jumpIndex < 0 || jumpIndex >= flowOrder.length) {\n    browserHistory.push(getCompanyUrl());\n  } else {\n    browserHistory.push(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n  }\n};\n\nconst createAnnualReportOrder = (dispatch, reducerData, accountId, filingFees, fieldInfo) => {\n  registrationService.createAnnualReport(reducerData, accountId, filingFees, fieldInfo).then((response) => {\n    trackEvent('Purchase', 'complete', 'Annual Report');\n    orderService.getOrders().then((response1) => {\n      const { data } = response;\n      logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        payload: {\n          data,\n          reducerData\n        }\n      });\n\n      logger.logAction(ORDER_ACTIONS.GET_ORDERS_COMPLETE, response1);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        payload: {\n          data: response1\n        }\n      });\n      browserHistory.push(`/${URLS.BASE}/${URLS.ORDER_SUBMITTED}`);\n    }).catch((err) => {\n      logger.error(ORDER_ACTIONS.GET_ORDERS_COMPLETE, err);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: err && err.errorCode ? err.errorCode : 3000\n        }\n      });\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nconst formFieldInfo = (rules, companyType) => {\n  const fieldInfo = {\n    name: {\n      isEditable: Boolean(rules.amendment),\n      requiresAmendment: Boolean(rules.amendment)\n    },\n    business_purpose: {},\n    structure: {},\n    managers: {},\n    members: {},\n    directors: {},\n    officers: {},\n    addresses: {},\n    stock_info: {},\n    authorized_signatory: {},\n    showMakesLessThanAmount: false,\n    showHadGrossSales: false,\n    showHadGoodStanding: false,\n    showHadPersonalProperty: false,\n    showListGrossSales: false,\n    showUseProperty: false,\n    showMaintainLicense: false,\n    showDidDisposeOfProperty: false,\n    showTotalRevenue: false,\n    showOwnsAnyOtherBusiness: false,\n    showIsOwnedByAnyOtherBusiness: false,\n    showOwnsRealProperty: false,\n    showHasThereBeenATransferOfStock: false,\n    showHasControllingInterestTransferFiledDepartmentRevenue: false,\n    showHasTransferOfStockBeenOverEqualFiftyPercent: false,\n    showHasEnteredIntoContract: false,\n    showHoldsInterestInAgriculturalLand: false,\n    showIsFamilyFarmLLC: false,\n    showNaicsCode: false,\n    showNumberOfStateEmployees: false,\n    showNumberOfEmployees: false,\n    showScrapMetalDealer: false,\n    showExportMarkets: false,\n    showBeInterestedInExporting: false,\n    showIsMinorityOwnedBusiness: false,\n    showIsWomanOwnedBusiness: false,\n    showsOwnMoreThanOneBusiness: false,\n    showHowManyBusinesses: false,\n    showHowManyCounties: false,\n    showDoesEmployIndividualsWhoServeInForces: false,\n    showHowManyIndividuals: false,\n    showDoesOwnerServeInForces: false,\n    showGetSupportFromWVSBDC: false,\n    showIssuedSharesAndGrossAssets: false,\n    showWorkerCompensationInsurance: false,\n    showIsBusinessSelfInsured: false,\n    showSelfInsuranceDetails: false,\n    showChiefExecutiveOfficer: false,\n    showBusinessEntityPrincipalAddress: false,\n    showNumberOfDirectorsAndDirectorsAsWomen: false,\n    showOwnedUSMilitaryVeteran: false,\n    showOwnedUSDisabledMilitaryVeteran: false,\n    showNetReceiptsLessThanOneMillion: false,\n    showUpToDateStockInformation: false,\n    showIssuedShares: false,\n    showControllingMembers: false,\n    showControllingMembers1: false,\n    showControllingMembers2: false,\n    showControllingMembers3: false,\n    showControllingMembers3a: false,\n    showControllingMembers3b: false,\n    showControllingMembers3c: false,\n    showBankruptcy: false,\n    showIsCombinedGroup: false,\n    showIsCombinedGroupTempLossPreserved: false,\n    showIsTieredPartnerRevAdjusted: false,\n    showIsPassiveEntityTX: false,\n    showIsREITTX: false,\n    showIsNewVetOwnedTX: false,\n    showWebFileId: false\n  };\n\n  if (companyType === 'llc') {\n    fieldInfo.directors = null;\n    fieldInfo.officers = null;\n    fieldInfo.stock_info = null;\n  } else {\n    fieldInfo.structure = null;\n    fieldInfo.managers = null;\n    fieldInfo.members = null;\n  }\n\n  Object.keys(rules.annual_report).forEach((fieldKey) => {\n    switch (fieldKey) {\n      case 'makes_less_than_amount':\n        fieldInfo.showMakesLessThanAmount = rules.annual_report.makes_less_than_amount;\n        return null;\n      case 'had_good_standing':\n        fieldInfo.showHadGoodStanding = rules.annual_report.had_good_standing;\n        return null;\n      case 'had_personal_property':\n        fieldInfo.showHadPersonalProperty = rules.annual_report.had_personal_property;\n        return null;\n      case 'had_gross_sales':\n        fieldInfo.showHadGrossSales = rules.annual_report.had_gross_sales;\n        return null;\n      case 'list_gross_sales':\n        fieldInfo.showListGrossSales = rules.annual_report.list_gross_sales;\n        return null;\n      case 'own_or_lease_property':\n        fieldInfo.showUseProperty = rules.annual_report.own_or_lease_property;\n        return null;\n      case 'requires_license':\n        fieldInfo.showMaintainLicense = rules.annual_report.requires_license;\n        return null;\n      case 'sold_property':\n        fieldInfo.showDidDisposeOfProperty = rules.annual_report.sold_property;\n        return null;\n      case 'total_revenue':\n        fieldInfo.showTotalRevenue = rules.annual_report.total_revenue;\n        return null;\n      case 'owns_any_other_business':\n        fieldInfo.showOwnsAnyOtherBusiness = rules.annual_report.owns_any_other_business;\n        return null;\n      case 'company_data_owns':\n        fieldInfo.showCompanyDataOwns = rules.annual_report.company_data_owns;\n        return null;\n      case 'is_owned_by_any_other_business':\n        fieldInfo.showIsOwnedByAnyOtherBusiness = rules.annual_report.is_owned_by_any_other_business;\n        return null;\n      case 'company_data_owned_by':\n        fieldInfo.showCompanyDataOwnedBy = rules.annual_report.company_data_owned_by;\n        return null;\n      case 'owns_real_property':\n        fieldInfo.showOwnsRealProperty = rules.annual_report.owns_real_property;\n        return null;\n      case 'has_there_been_a_transfer_of_stock':\n        fieldInfo.showHasThereBeenATransferOfStock = rules.annual_report.has_there_been_a_transfer_of_stock;\n        return null;\n      case 'has_transfer_of_stock_been_over_equal_fifty_percent':\n        fieldInfo.showHasTransferOfStockBeenOverEqualFiftyPercent = rules.annual_report.has_transfer_of_stock_been_over_equal_fifty_percent;\n        return null;\n      case 'has_controlling_interest_transfer_filed_department_revenue':\n        fieldInfo.showHasControllingInterestTransferFiledDepartmentRevenue = rules.annual_report.has_controlling_interest_transfer_filed_department_revenue;\n        return null;\n      case 'has_entered_into_any_contract':\n        fieldInfo.showHasEnteredIntoContract = rules.annual_report.has_entered_into_any_contract;\n        return null;\n      case 'holds_interest_in_agricultural_land':\n        fieldInfo.showHoldsInterestInAgriculturalLand = rules.annual_report.holds_interest_in_agricultural_land;\n        return null;\n      case 'is_a_family_llc':\n        fieldInfo.showIsFamilyFarmLLC = rules.annual_report.is_a_family_llc;\n        return null;\n      case 'naics_code':\n        fieldInfo.showNaicsCode = rules.annual_report.naics_code;\n        return null;\n      case 'number_of_state_employees':\n        fieldInfo.showNumberOfStateEmployees = rules.annual_report.number_of_state_employees;\n        return null;\n      case 'number_of_employees':\n        fieldInfo.showNumberOfEmployees = rules.annual_report.number_of_employees;\n        return null;\n      case 'scrap_metal_dealer':\n        fieldInfo.showScrapMetalDealer = rules.annual_report.scrap_metal_dealer;\n        return null;\n      case 'currently_exporting':\n        fieldInfo.showCurrentlyExporting = rules.annual_report.currently_exporting;\n        return null;\n      case 'top_export_markets':\n        fieldInfo.showTopExportMarkets = rules.annual_report.top_export_markets;\n        return null;\n      case 'be_interested_in_exporting':\n        fieldInfo.showBeInterestedInExporting = rules.annual_report.be_interested_in_exporting;\n        return null;\n      case 'is_minority_owned_business':\n        fieldInfo.showIsMinorityOwnedBusiness = rules.annual_report.is_minority_owned_business;\n        return null;\n      case 'is_woman_owned_business':\n        fieldInfo.showIsWomanOwnedBusiness = rules.annual_report.is_woman_owned_business;\n        return null;\n      case 'own_more_than_one_business':\n        fieldInfo.showsOwnMoreThanOneBusiness = rules.annual_report.own_more_than_one_business;\n        return null;\n      case 'how_many_businesses':\n        fieldInfo.showHowManyBusinesses = rules.annual_report.how_many_businesses;\n        return null;\n      case 'how_many_counties':\n        fieldInfo.showHowManyCounties = rules.annual_report.how_many_counties;\n        return null;\n      case 'does_employ_individuals_who_serve_in_forces':\n        fieldInfo.showDoesEmployIndividualsWhoServeInForces = rules.annual_report.does_employ_individuals_who_serve_in_forces;\n        return null;\n      case 'how_many_individuals':\n        fieldInfo.showHowManyIndividuals = rules.annual_report.how_many_individuals;\n        return null;\n      case 'does_owner_serve_in_forces':\n        fieldInfo.showDoesOwnerServeInForces = rules.annual_report.does_owner_serve_in_forces;\n        return null;\n      case 'get_support_from_WVSBDC':\n        fieldInfo.showGetSupportFromWVSBDC = rules.annual_report.get_support_from_WVSBDC;\n        return null;\n      case 'issued_shares_and_gross_assets':\n        fieldInfo.showIssuedSharesAndGrossAssets = rules.annual_report.issued_shares_and_gross_assets;\n        return null;\n      case 'worker_compensation_insurance':\n        fieldInfo.showWorkerCompensationInsurance = rules.annual_report.worker_compensation_insurance;\n        return null;\n      case 'is_business_self_insured':\n        fieldInfo.showIsBusinessSelfInsured = rules.annual_report.is_business_self_insured;\n        return null;\n      case 'self_insurance_details':\n        fieldInfo.showSelfInsuranceDetails = rules.annual_report.self_insurance_details;\n        return null;\n      case 'chief_executive_officer':\n        fieldInfo.showChiefExecutiveOfficer = rules.annual_report.chief_executive_officer;\n        return null;\n      case 'business_entity_principal_address':\n        fieldInfo.showBusinessEntityPrincipalAddress = rules.annual_report.business_entity_principal_address;\n        return null;\n      case 'number_of_directors_and_directors_as_women':\n        fieldInfo.showNumberOfDirectorsAndDirectorsAsWomen = rules.annual_report.number_of_directors_and_directors_as_women;\n        return null;\n      case 'owned_us_military_veteran':\n        fieldInfo.showOwnedUSMilitaryVeteran = rules.annual_report.owned_us_military_veteran;\n        return null;\n      case 'owned_us_disabled_military_veteran':\n        fieldInfo.showOwnedUSDisabledMilitaryVeteran = rules.annual_report.owned_us_disabled_military_veteran;\n        return null;\n      case 'net_receipts_less_than_one_million':\n        fieldInfo.showNetReceiptsLessThanOneMillion = rules.annual_report.net_receipts_less_than_one_million;\n        return null;\n      case 'up_to_date_stock_information':\n        fieldInfo.showUpToDateStockInformation = rules.annual_report.up_to_date_stock_information;\n        return null;\n      case 'what_stock_was_added':\n        fieldInfo.showStockAdded = rules.annual_report.what_stock_was_added;\n        fieldInfo.showStockClass = rules.annual_report.what_stock_was_added;\n        return null;\n      case 'up_to_date_corp_information':\n        fieldInfo.showCorpTransacts = rules.annual_report.up_to_date_corp_information;\n        fieldInfo.showCorpOwnership = rules.annual_report.up_to_date_corp_information;\n        return null;\n      case 'issued_shares':\n        fieldInfo.showIssuedShares = rules.annual_report.issued_shares;\n        return null;\n      case 'controlling_members':\n        fieldInfo.showControllingMembers = rules.annual_report.controlling_members;\n        fieldInfo.showControllingMembers1 = rules.annual_report.controlling_members;\n        fieldInfo.showControllingMembers2 = rules.annual_report.controlling_members;\n        fieldInfo.showControllingMembers3 = rules.annual_report.controlling_members;\n        fieldInfo.showControllingMembers3a = rules.annual_report.controlling_members;\n        fieldInfo.showControllingMembers3b = rules.annual_report.controlling_members;\n        fieldInfo.showControllingMembers3c = rules.annual_report.controlling_members;\n        return null;\n      case 'bankruptcy':\n        fieldInfo.showBankruptcy = rules.annual_report.bankruptcy;\n        return null;\n      case 'is_combined_group':\n        fieldInfo.showIsCombinedGroup = rules.annual_report.is_combined_group;\n        return null;\n      case 'is_combined_group_temp_loss_preserved':\n        fieldInfo.showIsCombinedGroupTempLossPreserved = rules.annual_report.is_combined_group_temp_loss_preserved;\n        return null;\n      case 'is_tiered_partner_rev_adjusted':\n        fieldInfo.showIsTieredPartnerRevAdjusted = rules.annual_report.is_tiered_partner_rev_adjusted;\n        return null;\n      case 'is_passive_entity_tx':\n        fieldInfo.showIsPassiveEntityTX = rules.annual_report.is_passive_entity_tx;\n        return null;\n      case 'is_reit_tx':\n        fieldInfo.showIsREITTX = rules.annual_report.is_reit_tx;\n        return null;\n      case 'is_new_vet_owned_tx':\n        fieldInfo.showIsNewVetOwnedTX = rules.annual_report.is_new_vet_owned_tx;\n        return null;\n      case 'web_file_id':\n        fieldInfo.showWebFileId = rules.annual_report.web_file_id;\n        return null;\n      default:\n    }\n\n    if (!rules.amendment) {\n      fieldInfo[fieldKey] = {\n        canFileAmendment: false,\n        isEditable: rules.annual_report[fieldKey],\n        requiresAmendment: false\n      };\n      return null;\n    }\n    fieldInfo[fieldKey] = {\n      canFileAmendment: true,\n      isEditable: rules.annual_report[fieldKey] || rules.amendment[fieldKey],\n      requiresAmendment: !rules.annual_report[fieldKey] && rules.amendment[fieldKey]\n    };\n\n    return null;\n  });\n\n  return fieldInfo;\n};\n\nconst set = (dispatch, data, actionKey) => {\n  logger.logAction(actionKey, data);\n  dispatch({\n    type: actionKey,\n    payload: {\n      data\n    }\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, accountId, filingFees, fieldRules) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { annualReport } = reducerData,\n    { cardNumber, expMonth, expYear, cvc, cardToken, brand, last4 } = annualReport;\n\n  if (!cardToken) {\n    createAnnualReportOrder(dispatch, reducerData, accountId, filingFees, fieldRules);\n  } else {\n    const data = { cardNumber, expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createAnnualReportOrder(dispatch, reducerData, accountId, filingFees, fieldRules);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const fetchJurisdictionInfo = (dispatch, jurisdictionCode, companyInfo, jurisdictionType) => {\n  logger.logAction(ACTIONS.FETCH_JURISDICTION_REQ, { jurisdictionCode, companyInfo, jurisdictionType });\n\n  dispatch({ type: ACTIONS.FETCH_JURISDICTION_REQ });\n\n  annualReportService.getJurisdictionInfo(jurisdictionCode).then((response) => {\n    const rules = response[companyInfo.type === 'LLCX' ? 'llc' : 'corp'][jurisdictionType];\n    const fieldInfo = formFieldInfo(rules, companyInfo.type === 'LLCX' ? 'llc' : 'corp');\n    annualReportData.fieldInfo = fieldInfo;\n    dispatch({\n      type: ACTIONS.FETCH_JURISDICTION_COMPLETE,\n      jurisdictionRules: rules,\n      fieldInfo\n    });\n  }).catch((error) => {\n    console.log('error', error);\n  });\n};\n\nexport const handleDeepLink = (dispatch, allCompanies, allCompaniesItems, businessEntityId, jurisdictionCode, filingType) => {\n  logger.logAction(ACTIONS.INIT, {});\n  dispatch({\n    type: ACTIONS.INIT,\n    data: {}\n  });\n\n  const selectedCompany = allCompanies[businessEntityId];\n\n  const { worryFree = [] } = allCompaniesItems[businessEntityId];\n  const hasPurchasedWFC = worryFree.length > 0;\n  const originalCompanyInfo = {\n    ...allCompanies[businessEntityId],\n    id: businessEntityId\n  };\n\n  annualReportData.originalCompanyInfo = originalCompanyInfo;\n  annualReportData.hasPurchasedWFC = hasPurchasedWFC;\n\n  logger.logAction(ACTIONS.SET_COMPANY, originalCompanyInfo);\n\n  dispatch({\n    type: ACTIONS.SET_COMPANY,\n    company: {\n      ...originalCompanyInfo,\n      hasPurchasedWFC\n    }\n  });\n\n  if (jurisdictionCode && filingType) {\n    if (jurisdictionCode === 'AR') {\n      logger.logAction(ACTIONS.SET_DEFAULT_TAX_PREPARER, { taxPreparer: selectedCompany.contact });\n      dispatch({\n        type: ACTIONS.SET_DEFAULT_TAX_PREPARER,\n        taxPreparer: selectedCompany.contact\n      });\n    }\n\n    const payload = {\n      jurisdictionType: (filingType.toLowerCase() === 'f' || filingType.toLowerCase() === 'foreign') ? 'foreign' : 'domestic',\n      filingJurisdiction: jurisdictionCode\n    };\n    annualReportData.filingJurisdictionType = payload.jurisdictionType;\n    logger.logAction(ACTIONS.SET_JURISDICTION_TYPE, payload);\n    dispatch({\n      type: ACTIONS.SET_JURISDICTION_TYPE,\n      ...payload\n    });\n  }\n};\n\nexport const goTo = (dispatch, actionKey, url) => {\n  logger.logAction(actionKey);\n  dispatch({\n    type: actionKey\n  });\n  browserHistory.push(`/${URLS.BASE}/${url}`);\n};\n\nexport const goBack = (dispatch, ldFlags) => {\n  logger.logAction(ACTIONS.GO_BACK, { location: document.location.pathname.substring(URLS.BASE.length + 2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, ldFlags);\n};\n\nexport const goNext = (ldFlags) => {\n  go(1, ldFlags);\n};\n\nexport const goToModifyCompany = (dispatch) => {\n  goTo(dispatch, ACTIONS.GO_BACK_TO_MODIFY_COMPANY, URLS.MODIFY_COMPANY);\n};\n\nexport const setAddAmendment = (dispatch, didAddAmendment) => {\n  logger.logAction(ACTIONS.SET_ADD_AMENDMENT, { didAddAmendment });\n  dispatch({\n    type: ACTIONS.SET_ADD_AMENDMENT,\n    didAddAmendment\n  });\n};\n\nexport const setAddWFC = (dispatch, didAddWFC) => {\n  logger.logAction(ACTIONS.SET_ADD_WFC, { didAddWFC });\n  dispatch({\n    type: ACTIONS.SET_ADD_WFC,\n    didAddWFC\n  });\n};\n\nexport const setCompanyToFile = (dispatch, company, sendToModifyPage) => {\n  logger.logAction(ACTIONS.SET_COMPANY, { company });\n  annualReportData.hasPurchasedWFC = company.hasPurchasedWFC;\n  annualReportData.originalCompanyInfo = company;\n  dispatch({\n    type: ACTIONS.SET_COMPANY,\n    company\n  });\n  logger.logAction(ACTIONS.ADVANCE_IN_FLOW, { newRouteName: sendToModifyPage ? URLS.MODIFY_COMPANY : URLS.SELECT_JURISDICTION });\n  dispatch({\n    type: ACTIONS.ADVANCE_IN_FLOW,\n    newRouteName: sendToModifyPage ? URLS.MODIFY_COMPANY : URLS.SELECT_JURISDICTION\n  });\n};\n\nexport const setForeignJurisdictionType = (dispatch, data) => {\n  logger.logAction(ACTIONS.SET_FOREIGN_JURISDICTION, data);\n  dispatch({\n    type: ACTIONS.SET_FOREIGN_JURISDICTION,\n    data\n  });\n  logger.logAction(ACTIONS.ADVANCE_IN_FLOW, { newRouteName: URLS.MODIFY_COMPANY });\n  dispatch({\n    type: ACTIONS.ADVANCE_IN_FLOW,\n    newRouteName: URLS.MODIFY_COMPANY\n  });\n};\n\nexport const setForeignJurisdictionStateId = (dispatch, stateId) => {\n  logger.logAction(ACTIONS.SET_FOREIGN_JURISDICTION_STATE_ID, stateId);\n  dispatch({\n    type: ACTIONS.SET_FOREIGN_JURISDICTION_STATE_ID,\n    stateId\n  });\n};\n\nexport const setJurisdictionType = (dispatch, jurisdictionType, originalCompanyInfo) => {\n  annualReportData.filingJurisdictionType = jurisdictionType;\n  if (originalCompanyInfo.domesticJurisdiction === 'AR') {\n    logger.logAction(ACTIONS.SET_DEFAULT_TAX_PREPARER, { taxPreparer: originalCompanyInfo.contact });\n    dispatch({\n      type: ACTIONS.SET_DEFAULT_TAX_PREPARER,\n      taxPreparer: originalCompanyInfo.contact\n    });\n  }\n\n  logger.logAction(ACTIONS.SET_JURISDICTION_TYPE, { jurisdictionType, filingJurisdiction: jurisdictionType === 'domestic' ? originalCompanyInfo.domesticJurisdiction : null });\n  dispatch({\n    type: ACTIONS.SET_JURISDICTION_TYPE,\n    jurisdictionType,\n    filingJurisdiction: jurisdictionType === 'domestic' ? originalCompanyInfo.domesticJurisdiction : null\n  });\n  logger.logAction(ACTIONS.ADVANCE_IN_FLOW, { type: ACTIONS.ADVANCE_IN_FLOW, newRouteName: jurisdictionType === 'foreign' ? URLS.SELECT_FOREIGN_JURISDICTION : URLS.MODIFY_COMPANY });\n  dispatch({\n    type: ACTIONS.ADVANCE_IN_FLOW,\n    newRouteName: jurisdictionType === 'foreign' ? URLS.SELECT_FOREIGN_JURISDICTION : URLS.MODIFY_COMPANY\n  });\n};\n\nexport const setInit = (dispatch) => {\n  setAppEntryPoint(dispatch, true);\n  logger.logAction(ACTIONS.INIT, {});\n  dispatch({\n    type: ACTIONS.INIT,\n    data: {}\n  });\n  browserHistory.replace(`/${URLS.BASE}/${URLS.START}`);\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setPurchaseWFG = (dispatch, isPurchasing) => {\n  logger.logAction(ACTIONS.SET_PURCHASE_WFG, { isPurchasing });\n  dispatch({\n    type: ACTIONS.SET_PURCHASE_WFG,\n    isPurchasing\n  });\n};\n\nexport const setHasWFG = (dispatch, hasWFG) => {\n  logger.logAction(ACTIONS.SET_HAS_WFG, { hasWFG });\n  dispatch({ type: ACTIONS.SET_HAS_WFG, hasWFG });\n};\n\nexport const setUseCredit = (dispatch, useCredit, creditUUID, hasWFG) => {\n  logger.logAction(ACTIONS.SET_USE_CREDIT, { useCredit, creditUUID, hasWFG });\n  dispatch({\n    type: ACTIONS.SET_USE_CREDIT,\n    useCredit,\n    creditUUID,\n    hasWFG\n  });\n};\n\nexport const setUseARS = (dispatch, hasARS) => {\n  logger.logAction(ACTIONS.SET_USE_ARS, { hasARS });\n  dispatch({\n    type: ACTIONS.SET_USE_ARS,\n    hasARS\n  });\n};\n\nconst dispatchUpdateField = (dispatch, fieldName, newValue) => {\n  logger.logAction(ACTIONS.SET_FIELD, { fieldName, updatedFieldValue: newValue });\n  annualReportData.updatedCompanyInfo[fieldName] = newValue;\n  return dispatch({\n    type: ACTIONS.SET_FIELD,\n    fieldName,\n    updatedFieldValue: newValue\n  });\n};\n\nconst dispatchResetField = (dispatch, fieldName) => {\n  logger.logAction(ACTIONS.RESET_FIELD, { fieldName });\n  delete annualReportData.updatedCompanyInfo[fieldName];\n  return dispatch({\n    type: ACTIONS.RESET_FIELD,\n    fieldName\n  });\n};\n\n/* eslint-disable max-statements */\nexport const updateField = (dispatch, fieldName, newValue, originalValue) => {\n  let hasChanges = false;\n\n  switch (fieldName) {\n    case 'name':\n    case 'description':\n    case 'structure':\n      if (newValue !== originalValue) {\n        return dispatchUpdateField(dispatch, fieldName, newValue);\n      }\n      return dispatchResetField(dispatch, fieldName);\n\n    case 'members':\n    case 'managers':\n      if (newValue.length !== originalValue.length) {\n        const updatedContacts = [];\n        newValue.forEach((contact) => {\n          if (\n            ((_get(contact, 'firstName') &&\n              _get(contact, 'lastName')) ||\n              _get(contact, 'companyName')) &&\n            _get(contact, 'addressLine1') &&\n            _get(contact, 'city') &&\n            _get(contact, 'state') &&\n            _get(contact, 'zipCode')\n          ) {\n            hasChanges = true;\n            updatedContacts.push(contact);\n          }\n        });\n\n        hasChanges = true;\n        dispatchUpdateField(dispatch, fieldName, updatedContacts);\n      } else {\n        const updatedContacts = [];\n        originalValue.forEach((contact, index) => {\n          if (((_get(contact, 'firstName') &&\n            _get(contact, 'lastName')) ||\n            _get(contact, 'companyName')) &&\n            (contact.firstName !== _get(newValue[index], 'firstName') ||\n              contact.middleName !== _get(newValue[index], 'middleName') ||\n              contact.lastName !== _get(newValue[index], 'lastName') ||\n              contact.companyName !== _get(newValue[index], 'companyName') ||\n              contact.suffix !== _get(newValue[index], 'suffix') ||\n              contact.email !== _get(newValue[index], 'email') ||\n              contact.phoneNumber !== _get(newValue[index], 'phoneNumber') ||\n              contact.addressLine1 !== _get(newValue[index], 'addressLine1') ||\n              contact.addressLine2 !== _get(newValue[index], 'addressLine2') ||\n              contact.city !== _get(newValue[index], 'city') ||\n              contact.state !== _get(newValue[index], 'state') ||\n              contact.zipCode !== _get(newValue[index], 'zipCode') ||\n              contact.outstandingJudgments !== _get(newValue[index], 'outstandingJudgments'))\n          ) {\n            hasChanges = true;\n            updatedContacts.push(newValue[index]);\n          } else {\n            updatedContacts.push(contact);\n          }\n        });\n        dispatchUpdateField(dispatch, fieldName, updatedContacts);\n      }\n\n      if (!hasChanges) {\n        dispatchResetField(dispatch, fieldName);\n      }\n      break;\n\n    case 'directors':\n    case 'officers':\n      if (newValue.length !== originalValue.length) {\n        const updatedContacts = [];\n        newValue.forEach((contact) => {\n          if (\n            ((_get(contact, 'firstName') &&\n              _get(contact, 'lastName')) ||\n              _get(contact, 'companyName')) &&\n            _get(contact, 'addressLine1') &&\n            _get(contact, 'city') &&\n            _get(contact, 'state') &&\n            _get(contact, 'zipCode')\n          ) {\n            hasChanges = true;\n            updatedContacts.push(contact);\n          }\n        });\n\n        hasChanges = true;\n        dispatchUpdateField(dispatch, fieldName, updatedContacts);\n      } else {\n        const updatedContacts = [];\n\n        originalValue.forEach((contact, index) => {\n\n          if (\n            !originalValue[index] ||\n            (((_get(contact, 'firstName') &&\n              _get(contact, 'lastName')) ||\n              _get(contact, 'companyName')) &&\n              (_get(contact, 'firstName') !== _get(newValue[index], 'firstName') ||\n                _get(contact, 'middleName') !== _get(newValue[index], 'middleName') ||\n                _get(contact, 'lastName') !== _get(newValue[index], 'lastName') ||\n                _get(contact, 'companyName') !== _get(newValue[index], 'companyName') ||\n                _get(contact, 'suffix') !== _get(newValue[index], 'suffix') ||\n                _get(contact, 'email') !== _get(newValue[index], 'email') ||\n                _get(contact, 'phoneNumber') !== _get(newValue[index], 'phoneNumber') ||\n                _get(contact, 'addressLine1') !== _get(newValue[index], 'addressLine1') ||\n                _get(contact, 'addressLine2') !== _get(newValue[index], 'addressLine2') ||\n                _get(contact, 'city') !== _get(newValue[index], 'city') ||\n                _get(contact, 'state') !== _get(newValue[index], 'state') ||\n                _get(contact, 'title') !== _get(newValue[index], 'title') ||\n                _get(contact, 'zipCode') !== _get(newValue[index], 'zipCode') ||\n                _get(contact, 'outstandingJudgments') !== _get(newValue[index], 'outstandingJudgments')\n              ))) {\n            hasChanges = true;\n            updatedContacts.push(newValue[index]);\n          } else {\n            updatedContacts.push(contact);\n          }\n        });\n        dispatchUpdateField(dispatch, fieldName, updatedContacts);\n      }\n      if (!hasChanges) {\n        dispatchResetField(dispatch, fieldName);\n      }\n      break;\n\n    case 'stockInfo':\n      if (newValue.authorizedShares !== originalValue.authorizedShares ||\n        newValue.valuePerShare !== originalValue.valuePerShare\n      ) {\n        return dispatchUpdateField(dispatch, fieldName, newValue);\n      }\n      return dispatchResetField(dispatch, fieldName);\n\n    case 'taxPreparer':\n      if (newValue.firstName !== originalValue.firstName ||\n        newValue.middleName !== originalValue.middleName ||\n        newValue.lastName !== originalValue.lastName ||\n        newValue.phoneNumber !== originalValue.phoneNumber\n      ) {\n        return dispatchUpdateField(dispatch, fieldName, newValue);\n      }\n      return dispatchResetField(dispatch, fieldName);\n\n    case 'addresses':\n      Object.keys(newValue).forEach((addressType) => {\n        if (\n          !hasChanges &&\n          (newValue[addressType].addressLine1 !== originalValue[addressType].addressLine1 ||\n            newValue[addressType].addressLine2 !== originalValue[addressType].addressLine2 ||\n            newValue[addressType].city !== originalValue[addressType].city ||\n            newValue[addressType].state !== originalValue[addressType].state ||\n            newValue[addressType].zipCode !== originalValue[addressType].zipCode)\n        ) {\n          hasChanges = true;\n          dispatchUpdateField(dispatch, fieldName, newValue);\n        }\n      });\n      if (!hasChanges) {\n        dispatchResetField(dispatch, fieldName);\n      }\n      break;\n\n    case 'authorizedSignatory':\n      if (\n        newValue.firstName !== _get(originalValue, 'firstName') ||\n        newValue.middleName !== _get(originalValue, 'middleName') ||\n        newValue.lastName !== _get(originalValue, 'lastName') ||\n        newValue.companyName !== _get(originalValue, 'companyName') ||\n        newValue.suffix !== _get(originalValue, 'suffix') ||\n        newValue.email !== _get(originalValue, 'email') ||\n        newValue.phoneNumber !== _get(originalValue, 'phoneNumber') ||\n        newValue.addressLine1 !== _get(originalValue, 'addressLine1') ||\n        newValue.addressLine2 !== _get(originalValue, 'addressLine2') ||\n        newValue.city !== _get(originalValue, 'city') ||\n        newValue.state !== _get(originalValue, 'state') ||\n        newValue.title !== _get(originalValue, 'title') ||\n        newValue.zipCode !== _get(originalValue, 'zipCode') ||\n        newValue.outstandingJudgments !== _get(originalValue, 'outstandingJudgments')\n      ) {\n        hasChanges = true;\n        dispatchUpdateField(dispatch, fieldName, newValue);\n      }\n      if (!hasChanges) {\n        dispatchResetField(dispatch, fieldName);\n      }\n      break;\n    case 'doesEmployIndividualsWhoServeInForces':\n      dispatchUpdateField(dispatch, fieldName, newValue);\n      // If answer is no then set 'HOW_MANY_INDIVIDUALS' to 0 be default\n      if (newValue === 'no') {\n        dispatchUpdateField(dispatch, ADDITIONAL_QUESTIONS_KEYS.HOW_MANY_INDIVIDUALS, 0);\n      }\n      break;\n    default:\n      // rely on the constant keys to check for additional questions\n      if (Object.values(ADDITIONAL_QUESTIONS_KEYS).includes(fieldName)) {\n        dispatchUpdateField(dispatch, fieldName, newValue);\n      }\n      break;\n  }\n\n  return null;\n};\n\nexport const checkEligibility = (dispatch, entityType, jurisdictionCode) => {\n  logger.logAction(ACTIONS.CHECK_ELIGIBILITY, { entityType, jurisdictionCode });\n  return annualReportService.checkEligibility(entityType, jurisdictionCode);\n};\n\n/* eslint-enable max-statements */\n","import _isEmpty from 'lodash/isEmpty';\nimport { URLS } from '../../../constants/register_domainname';\nimport { isBasicEmailEnabled, isDomainNamePrivacyEnabled } from '../../../utils/ProductService';\n/* eslint-disable max-statements */\nconst\n  getFlowOrder = (url, registration) => {\n    if (url === URLS.COMPLETE) {\n      return [URLS.COMPLETE];\n    }\n\n    const\n      { domainName, purchase, business } = registration,\n      { companyCount } = domainName,\n      { basicEmail } = purchase,\n      { isSimulated, contact } = business,\n      flow = [URLS.START];\n    if (companyCount > 1 && !isSimulated) {\n      flow.push(URLS.CHOOSE_COMPANY);\n    }\n    if (isSimulated && _isEmpty(contact)) {\n      flow.push(URLS.PRIM_CONTACT);\n    }\n\n    flow.push(URLS.DOMAIN_NAMES);\n\n    if (isDomainNamePrivacyEnabled()) {\n      flow.push(URLS.PURCH_DOMAIN_PRIV);\n    }\n    if (isBasicEmailEnabled()) {\n      flow.push(URLS.PURCH_EMAIL);\n      if (basicEmail) {\n        flow.push(URLS.EMAIL_ADDRESSES);\n      }\n    }\n    if (isBasicEmailEnabled() || isDomainNamePrivacyEnabled()) {\n      flow.push(URLS.PRODUCT_CONFIRM);\n    }\n    flow.push(URLS.PAYMENT, URLS.COMPLETE);\n    return flow;\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegisterAccountingFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterAccountingFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS as ORDER_ACTIONS } from '../../constants/orders';\nimport { ACTIONS, URLS } from '../../constants/register_domainname';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { storageKey as domainNameKey } from '../../reducers/registration/domainName';\nimport { storageKey as purchaseKey } from '../../reducers/registration/purchase';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, orderService, registrationService, businessEntityService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\nimport { setIsFreeAccount } from '../../utils/FreeAccountUtils';\n\nconst\n  defaultDomainNameData = { companyId: '', companyCount: 0 },\n  domainNameData = getReducerSnapshot(domainNameKey, defaultDomainNameData),\n  defaultPurchaseData = { domainNamePrivacy: null, basicEmail: null },\n  purchaseData = getReducerSnapshot(purchaseKey, defaultPurchaseData),\n  businessData = getReducerSnapshot(businessKey, { isSimulated: false }),\n  getFlowOrder = (url) => {\n    const registration = {\n      domainName: domainNameData,\n      purchase: purchaseData,\n      business: businessData\n    };\n\n    return getFlow(url, registration);\n  },\n  getCompanyUrl = () => {\n    if (domainNameData.companyId) {\n      return `/${COMPANY_URLS.BASE}/${domainNameData.companyId}`;\n    }\n    return `/${DASHBOARD_URLS.BASE}`;\n  },\n  go = (jump, dispatch, doReplace) => {\n    const\n      url = document.location.pathname.substring(URLS.BASE.length + 2) || URLS.START,\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      document.location = getCompanyUrl();\n    } else if (jumpIndex >= flowOrder.length) {\n      document.location = getCompanyUrl();\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch);\n    }\n  },\n  doReset = () => {\n    _assign(domainNameData, defaultDomainNameData);\n    _assign(purchaseData, defaultPurchaseData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const path = document.location.pathname,\n    idx = path.indexOf(URLS.BASE),\n    idx2 = idx + URLS.BASE.length + 2;\n\n  logger.logAction(ACTIONS.GO_BACK, { location: path.substring(idx2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const goToEmailAddressPurchase = () => {\n  browserHistory.push(`/${URLS.BASE}/${URLS.PURCH_EMAIL}`);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const setBasicEmailAddress = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.EMAIL_ADDRESS, true);\n};\n\nexport const setBasicEmailAddresses = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.EMAIL_ADDRESSES, true);\n};\n\nexport const setBasicEmailAddressModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.EMAIL_ADDRESSES, false);\n};\n\nexport const setChooseCompany = (dispatch, data) => {\n  const { companyId } = data;\n  _assign(domainNameData, { companyId });\n  set(dispatch, data, ACTIONS.CHOOSE_COMPANY, true);\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, {}, ACTIONS.COMPLETE, data.redirect);\n};\n\nexport const setDomainNamePrimary = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.DOMAIN_NAME, true);\n};\n\nexport const setDomainNames = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.DOMAIN_NAMES, true);\n};\n\nexport const setInit = (dispatch, data) => {\n  const { companyId, companyCount } = data;\n  businessData.isSimulated = data.isSimulated;\n  setIsFreeAccount(data.isSimulated);\n  businessData.contact = data.contact;\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  _assign(domainNameData, { companyId, companyCount });\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(`/${URLS.BASE}/${URLS.START}`);\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setPrimaryContact = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PRIM_CONTACT, false);\n};\n\nexport const setProductConfirmation = (dispatch, data) => {\n  purchaseData.basicEmail = data.basicEmail;\n  purchaseData.domainNamePrivacy = data.domainNamePrivacy;\n  set(dispatch, data, ACTIONS.PRODUCT_CONFIRM, true);\n};\n\nexport const setPurchaseBasicEmail = (dispatch, data) => {\n  purchaseData.basicEmail = data.basicEmail;\n  set(dispatch, data, ACTIONS.PURCH_EMAIL, true);\n};\n\nexport const setPurchaseDomainNamePrivacy = (dispatch, data) => {\n  purchaseData.domainNamePrivacy = data.domainNamePrivacy;\n  set(dispatch, data, ACTIONS.PURCH_DOMAIN_PRIV, true);\n};\n\nexport const setStart = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nconst createDomainNameOrder = (dispatch, reducerData, accountId, filingFees) => {\n  registrationService.createDomainName(reducerData, accountId, filingFees).then((response) => {\n    trackEvent('Purchase', 'complete', 'Domain Name');\n    orderService.getOrders().then((response1) => {\n      const { data } = response;\n      logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        payload: {\n          data,\n          reducerData\n        }\n      });\n\n      logger.logAction(ORDER_ACTIONS.GET_ORDERS_COMPLETE, response1);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        payload: {\n          data: response1\n        }\n      });\n      go(1);\n    }).catch((err) => {\n      logger.error(ORDER_ACTIONS.GET_ORDERS_COMPLETE, err);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: err && err.errorCode ? err.errorCode : 3000\n        }\n      });\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, accountId, filingFees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { domainName } = reducerData,\n    { expMonth, expYear, cvc, cardToken, brand, last4 } = domainName;\n\n  if (!cardToken) {\n    createDomainNameOrder(dispatch, reducerData, accountId, filingFees);\n  } else {\n    const data = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createDomainNameOrder(dispatch, reducerData, accountId, filingFees);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport const updateOrder = (dispatch, reducerData, advance) => {\n  logger.logAction(ACTIONS.UPDATE_ORDER);\n  dispatch({\n    type: ACTIONS.UPDATE_ORDER\n  });\n  businessEntityService.updateContacts(reducerData).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.UPDATE_ORDER_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.UPDATE_ORDER_COMPLETE,\n      payload: {\n        data,\n        reducerData\n      }\n    });\n    if (advance) {\n      go(1);\n    }\n  }).catch((err) => {\n    logger.error(ACTIONS.UPDATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.UPDATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  orderAlreadyCreated,\n  setBasicEmailAddress,\n  setBasicEmailAddressModal,\n  setChooseCompany,\n  setComplete,\n  setDomainNamePrimary,\n  setInit,\n  setPayment,\n  setProductConfirmation,\n  setPurchaseBasicEmail,\n  setPurchaseDomainNamePrivacy,\n  setStart,\n  updateOrder,\n  resetAllData\n};\n","import _assign from 'lodash/assign';\n\nimport { resetAllData as resetAllAccountData } from '../register_account';\nimport { resetAllData } from '../registration';\nimport { ACTIONS } from '../../constants/account';\nimport { ACTIONS as REG_ACTIONS } from '../../constants/register_account';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, initializationService } from '../../services';\nimport { setInitialization } from '../initialization';\nimport { processLogIn, getPartner, getEntryPointGroup } from '../../utils/PartnerUtils';\nimport { logout } from '../../utils/AuthService';\n\nexport const getAccountHasZBMoneyProSubscription = (dispatch) => {\n  accountService.hasZBMoneyProSubscription().then((hasZBMoneyProSubscription) => {\n    dispatch({\n      type: ACTIONS.GET_ACCOUNT_HAS_ZB_MONEY_PRO,\n      payload: {\n        data: { hasZBMoneyProSubscription }\n      }\n    });\n  });\n};\n\n/* eslint-disable max-statements */\nexport const getAccount = (dispatch) => {\n  logger.logAction(ACTIONS.GET_ACCOUNT);\n  dispatch({\n    type: ACTIONS.GET_ACCOUNT\n  });\n  accountService.get().then((response) => {\n    const reInit = processLogIn(response);\n    if (reInit) {\n      const initPayload = { setVisit: false, partner: getPartner() || '', entry_point_group: getEntryPointGroup() || '' };\n      initializationService.initialize(initPayload).then((responseInit) => {\n        setInitialization(dispatch, responseInit);\n        logger.logAction(ACTIONS.GET_ACCOUNT_COMPLETE, response);\n        dispatch({\n          type: ACTIONS.GET_ACCOUNT_COMPLETE,\n          payload: {\n            data: response\n          }\n        });\n      });\n    } else {\n      logger.logAction(ACTIONS.GET_ACCOUNT_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.GET_ACCOUNT_COMPLETE,\n        payload: {\n          data: response\n        }\n      });\n    }\n  }).catch((err) => {\n    logger.error(ACTIONS.GET_ACCOUNT_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.GET_ACCOUNT_COMPLETE,\n      error: true,\n      payload: {\n        errorCode: err && err.errorCode ? err.errorCode : 3000\n      }\n    });\n  });\n  getAccountHasZBMoneyProSubscription(dispatch);\n};\n\nexport const getPaymentMethods = (dispatch) => {\n  logger.logAction(ACTIONS.GET_PAYMENT_METHODS);\n  dispatch({\n    type: ACTIONS.GET_PAYMENT_METHODS\n  });\n  accountService.getPaymentMethods().then((response) => {\n    logger.logAction(ACTIONS.GET_PAYMENT_METHODS_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.GET_PAYMENT_METHODS_COMPLETE,\n      payload: {\n        data: response\n      }\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.GET_PAYMENT_METHODS_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.GET_PAYMENT_METHODS_COMPLETE,\n      error: true,\n      payload: {\n        errorCode: err && err.errorCode ? err.errorCode : 3000\n      }\n    });\n  });\n};\n\nexport const addPaymentMethod = (dispatch, data) => {\n  logger.logAction(ACTIONS.ADD_PAYMENT_METHOD, data);\n  dispatch({\n    type: ACTIONS.ADD_PAYMENT_METHOD,\n    payload: {\n      data\n    }\n  });\n  accountService.addPaymentMethod(data).then((response) => {\n    const mergedData = _assign({}, response.data, data);\n    logger.logAction(ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n    dispatch({\n      type: ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n      payload: {\n        data: mergedData\n      }\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n      error: true,\n      payload: {\n        errorCode: err && err.errorCode ? err.errorCode : 2000\n      }\n    });\n  });\n};\n\nexport const setPaymentMethodDefault = (dispatch, data) => {\n  logger.logAction(ACTIONS.SET_PAYMENT_METHOD_DEFAULT, data);\n  dispatch({\n    type: ACTIONS.SET_PAYMENT_METHOD_DEFAULT,\n    payload: {\n      data\n    }\n  });\n  accountService.setPaymentMethodDefault(data.id).then((response) => {\n    const mergedData = _assign({}, response.data, data);\n    logger.logAction(ACTIONS.SET_PAYMENT_METHOD_DEFAULT_COMPLETE, mergedData);\n    dispatch({\n      type: ACTIONS.SET_PAYMENT_METHOD_DEFAULT_COMPLETE,\n      payload: {\n        data: mergedData\n      }\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.SET_PAYMENT_METHOD_DEFAULT_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.SET_PAYMENT_METHOD_DEFAULT_COMPLETE,\n      error: true,\n      payload: {\n        errorCode: err && err.errorCode ? err.errorCode : 2000\n      }\n    });\n  });\n};\n\nexport const acceptTOS = (dispatch) => {\n  logger.logAction(ACTIONS.ACCEPT_TOS, {});\n  dispatch({\n    type: ACTIONS.ACCEPT_TOS\n  });\n  accountService.acceptTOS().then(() => {\n    logger.logAction(ACTIONS.ACCEPT_TOS_COMPLETE, {});\n    dispatch({\n      type: ACTIONS.ACCEPT_TOS_COMPLETE\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.ACCEPT_TOS_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.ACCEPT_TOS_COMPLETE,\n      error: true,\n      payload: {\n        errorCode: err && err.errorCode ? err.errorCode : 2000\n      }\n    });\n  });\n};\n\nexport const setLogout = (dispatch) => {\n  logger.logAction(ACTIONS.SET_LOGOUT);\n  dispatch({\n    type: ACTIONS.SET_LOGOUT\n  });\n  dispatch({\n    type: REG_ACTIONS.RESET\n  });\n  resetAllData(dispatch);\n  resetAllAccountData(dispatch);\n  logout();\n};\n\nexport default {\n  addPaymentMethod,\n  getAccount,\n  getPaymentMethods,\n  setPaymentMethodDefault,\n  setLogout,\n  acceptTOS\n};\n","import _assign from 'lodash/assign';\nimport { browserHistory } from 'react-router';\nimport _get from 'lodash/get';\n\nimport { ACTIONS, URLS } from '../../constants/amendment';\nimport { accountService, businessEntityService, amendmentService, orderService, registrationService } from '../../services';\nimport logger from '../../utils/ClientLogger';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\nimport { ACTIONS as ORDER_ACTIONS } from '../../constants/orders';\nimport { setAppEntryPoint } from '../initialization';\n\nconst createAmendmentOrder = (dispatch, reducerData, accountId, filingFees, fieldInfo) => {\n  registrationService.createAmendment(reducerData, accountId, filingFees, fieldInfo).then((response) => {\n    trackEvent('Purchase', 'complete', 'Annual Report');\n    orderService.getOrders().then((response1) => {\n      const { data } = response;\n      logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        payload: {\n          data,\n          reducerData\n        }\n      });\n\n      logger.logAction(ORDER_ACTIONS.GET_ORDERS_COMPLETE, response1);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        payload: {\n          data: response1\n        }\n      });\n      browserHistory.push(`/${URLS.BASE}/${URLS.ORDER_SUBMITTED}`);\n    }).catch((err) => {\n      logger.error(ORDER_ACTIONS.GET_ORDERS_COMPLETE, err);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: err && err.errorCode ? err.errorCode : 3000\n        }\n      });\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nconst formFieldInfo = (rules, companyType) => {\n  const fieldInfo = {\n    name: {\n      isEditable: Boolean(rules.amendment),\n      requiresAmendment: Boolean(rules.amendment)\n    },\n    business_purpose: {},\n    structure: {},\n    managers: {},\n    members: {},\n    directors: {},\n    officers: {},\n    addresses: {},\n    stock_info: {},\n    authorized_signatory: {},\n    showWebFileId: false,\n    showMakesLessThanAmount: false\n  };\n\n  if (companyType === 'llc') {\n    fieldInfo.directors = null;\n    fieldInfo.officers = null;\n    fieldInfo.stock_info = null;\n  } else {\n    fieldInfo.structure = null;\n    fieldInfo.managers = null;\n    fieldInfo.members = null;\n  }\n\n\n  Object.keys(rules.annual_report).forEach((fieldKey) => {\n    if (fieldKey === 'makes_less_than_amount') {\n      fieldInfo.showMakesLessThanAmount = rules.annual_report.makes_less_than_amount;\n      return null;\n    }\n    if (fieldKey === 'web_file_id') {\n      fieldInfo.showWebFileId = rules.amendment[fieldKey];\n    }\n    if (!rules.amendment) {\n      fieldInfo[fieldKey] = {\n        canFileAnnualReport: rules.annual_report[fieldKey],\n        isEditable: rules.annual_report[fieldKey],\n        requiresAmendment: !rules.annual_report[fieldKey] && rules.amendment[fieldKey]\n      };\n      return null;\n    }\n    fieldInfo[fieldKey] = {\n      canFileAnnualReport: true,\n      isEditable: rules.amendment[fieldKey],\n      requiresAmendment: !rules.annual_report[fieldKey] && rules.amendment[fieldKey]\n    };\n\n    return null;\n  });\n\n  return fieldInfo;\n};\n\nconst set = (dispatch, data, actionKey) => {\n  logger.logAction(actionKey, data);\n  dispatch({\n    type: actionKey,\n    payload: {\n      data\n    }\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, accountId, filingFees, fieldRules) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { amendment } = reducerData,\n    { cardNumber, expMonth, expYear, cvc, cardToken, brand, last4 } = amendment;\n\n  if (!cardToken) {\n    createAmendmentOrder(dispatch, reducerData, accountId, filingFees, fieldRules);\n  } else {\n    const data = { cardNumber, expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createAmendmentOrder(dispatch, reducerData, accountId, filingFees, fieldRules);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const fetchComplianceEvents = (dispatch, reducerData, companyInfo) => {\n  logger.logAction(ACTIONS.FETCH_JURISDICTION_REQ, { companyInfo });\n\n  dispatch({ type: ACTIONS.FETCH_COMPLIANCE_EVENTS_REQ });\n\n  businessEntityService.getComplianceEvents(reducerData, companyInfo.id).then(({ results }) => {\n    if (results.length > 0) {\n      dispatch({\n        type: ACTIONS.FETCH_COMPLIANCE_EVENTS_COMPLETE,\n        upcomingEventDate: results[0].event_date\n      });\n    }\n  }).catch((error) => {\n    console.log('error', error);\n  });\n};\n\nexport const fetchJurisdictionInfo = (dispatch, jurisdictionCode, companyInfo, jurisdictionType) => {\n  logger.logAction(ACTIONS.FETCH_JURISDICTION_REQ, { jurisdictionCode, companyInfo, jurisdictionType });\n\n  dispatch({ type: ACTIONS.FETCH_JURISDICTION_REQ });\n\n  amendmentService.getJurisdictionInfo(jurisdictionCode).then((response) => {\n    const rules = response[companyInfo.type === 'LLCX' ? 'llc' : 'corp'][jurisdictionType];\n\n    dispatch({\n      type: ACTIONS.FETCH_JURISDICTION_COMPLETE,\n      jurisdictionRules: rules,\n      fieldInfo: formFieldInfo(rules, companyInfo.type === 'LLCX' ? 'llc' : 'corp')\n    });\n  }).catch((error) => {\n    console.log('error', error);\n  });\n};\n\nexport const handleDeepLink = (dispatch, allCompanies, businessEntityId) => {\n  logger.logAction(ACTIONS.INIT, {});\n  dispatch({\n    type: ACTIONS.INIT,\n    data: {}\n  });\n\n  const selectedCompany = allCompanies[businessEntityId];\n\n  logger.logAction(ACTIONS.SET_COMPANY, { ...allCompanies[businessEntityId], id: businessEntityId });\n  dispatch({\n    type: ACTIONS.SET_COMPANY,\n    company: {\n      ...allCompanies[businessEntityId],\n      id: businessEntityId\n    }\n  });\n\n  if (allCompanies[businessEntityId].domesticJurisdiction === 'AR') {\n    logger.logAction(ACTIONS.SET_DEFAULT_TAX_PREPARER, { taxPreparer: selectedCompany.contact });\n    dispatch({\n      type: ACTIONS.SET_DEFAULT_TAX_PREPARER,\n      taxPreparer: selectedCompany.contact\n    });\n  }\n\n  logger.logAction(ACTIONS.SET_JURISDICTION_TYPE, { jurisdictionType: 'domestic' });\n  dispatch({\n    type: ACTIONS.SET_JURISDICTION_TYPE,\n    jurisdictionType: 'domestic',\n    filingJurisdiction: allCompanies[businessEntityId].domesticJurisdiction\n  });\n};\n\nexport const setSelectOnlyAnnualReport = (dispatch, didSelectOnlyAnnualReport) => {\n  logger.logAction(ACTIONS.SET_SELECT_ONLY_ANNUAL_REPORT, { didSelectOnlyAnnualReport });\n  dispatch({\n    type: ACTIONS.SET_SELECT_ONLY_ANNUAL_REPORT,\n    didSelectOnlyAnnualReport\n  });\n};\n\nexport const setAddWFC = (dispatch, didAddWFC) => {\n  logger.logAction(ACTIONS.SET_ADD_WFC, { didAddWFC });\n  dispatch({\n    type: ACTIONS.SET_ADD_WFC,\n    didAddWFC\n  });\n};\n\nexport const setCompanyToFile = (dispatch, company, sendToModifyPage) => {\n  logger.logAction(ACTIONS.SET_COMPANY, { company });\n  dispatch({\n    type: ACTIONS.SET_COMPANY,\n    company\n  });\n  logger.logAction(ACTIONS.ADVANCE_IN_FLOW, { newRouteName: sendToModifyPage ? URLS.MODIFY_COMPANY : URLS.SELECT_JURISDICTION });\n  dispatch({\n    type: ACTIONS.ADVANCE_IN_FLOW,\n    newRouteName: sendToModifyPage ? URLS.MODIFY_COMPANY : URLS.SELECT_JURISDICTION\n  });\n};\n\nexport const setJurisdictionType = (dispatch, jurisdictionType, originalCompanyInfo) => {\n  if (originalCompanyInfo.domesticJurisdiction === 'AR') {\n    logger.logAction(ACTIONS.SET_DEFAULT_TAX_PREPARER, { taxPreparer: originalCompanyInfo.contact });\n    dispatch({\n      type: ACTIONS.SET_DEFAULT_TAX_PREPARER,\n      taxPreparer: originalCompanyInfo.contact\n    });\n  }\n\n  logger.logAction(ACTIONS.SET_JURISDICTION_TYPE, { jurisdictionType, filingJurisdiction: jurisdictionType === 'domestic' ? originalCompanyInfo.domesticJurisdiction : null });\n  dispatch({\n    type: ACTIONS.SET_JURISDICTION_TYPE,\n    jurisdictionType,\n    filingJurisdiction: jurisdictionType === 'domestic' ? originalCompanyInfo.domesticJurisdiction : null\n  });\n  logger.logAction(ACTIONS.ADVANCE_IN_FLOW, { type: ACTIONS.ADVANCE_IN_FLOW, newRouteName: jurisdictionType === 'foreign' ? URLS.SELECT_FOREIGN_JURISDICTION : URLS.MODIFY_COMPANY });\n  dispatch({\n    type: ACTIONS.ADVANCE_IN_FLOW,\n    newRouteName: jurisdictionType === 'foreign' ? URLS.SELECT_FOREIGN_JURISDICTION : URLS.MODIFY_COMPANY\n  });\n};\n\nexport const setInit = (dispatch) => {\n  setAppEntryPoint(dispatch, true);\n  logger.logAction(ACTIONS.INIT, {});\n  dispatch({\n    type: ACTIONS.INIT,\n    data: {}\n  });\n  browserHistory.replace(`/${URLS.BASE}/${URLS.START}`);\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setPurchaseWFG = (dispatch, isPurchasing) => {\n  logger.logAction(ACTIONS.SET_PURCHASE_WFG, { isPurchasing });\n  dispatch({\n    type: ACTIONS.SET_PURCHASE_WFG,\n    isPurchasing\n  });\n};\n\nexport const setUseCredit = (dispatch, useCredit, creditUUID, hasWFG) => {\n  logger.logAction(ACTIONS.SET_USE_CREDIT, { useCredit, creditUUID, hasWFG });\n  dispatch({\n    type: ACTIONS.SET_USE_CREDIT,\n    useCredit,\n    creditUUID,\n    hasWFG\n  });\n};\n\nexport const setUseARS = (dispatch, hasARS) => {\n  logger.logAction(ACTIONS.SET_USE_ARS, { hasARS });\n  dispatch({\n    type: ACTIONS.SET_USE_ARS,\n    hasARS\n  });\n};\n\nconst dispatchUpdateField = (dispatch, fieldName, newValue) => {\n  logger.logAction(ACTIONS.SET_FIELD, { fieldName, updatedFieldValue: newValue });\n\n  return dispatch({\n    type: ACTIONS.SET_FIELD,\n    fieldName,\n    updatedFieldValue: newValue\n  });\n};\n\nconst dispatchResetField = (dispatch, fieldName) => {\n  logger.logAction(ACTIONS.RESET_FIELD, { fieldName });\n\n  return dispatch({\n    type: ACTIONS.RESET_FIELD,\n    fieldName\n  });\n};\n\n/* eslint-disable max-statements */\nexport const updateField = (dispatch, fieldName, newValue, originalValue) => {\n  let hasChanges = false;\n\n  switch (fieldName) {\n    case 'name':\n    case 'description':\n    case 'structure':\n      if (newValue !== originalValue) {\n        return dispatchUpdateField(dispatch, fieldName, newValue);\n      }\n      return dispatchResetField(dispatch, fieldName);\n\n    case 'members':\n    case 'managers':\n      if (newValue.length !== originalValue.length) {\n        const updatedContacts = [];\n        newValue.forEach((contact) => {\n          if (\n            ((_get(contact, 'firstName') &&\n              _get(contact, 'lastName')) ||\n              _get(contact, 'companyName')) &&\n            _get(contact, 'addressLine1') &&\n            _get(contact, 'city') &&\n            _get(contact, 'state') &&\n            _get(contact, 'zipCode')\n          ) {\n            hasChanges = true;\n            updatedContacts.push(contact);\n          }\n        });\n\n        hasChanges = true;\n        dispatchUpdateField(dispatch, fieldName, updatedContacts);\n      } else {\n        const updatedContacts = [];\n        originalValue.forEach((contact, index) => {\n          if (((_get(contact, 'firstName') &&\n            _get(contact, 'lastName')) ||\n            _get(contact, 'companyName')) &&\n            (contact.firstName !== _get(newValue[index], 'firstName') ||\n              contact.middleName !== _get(newValue[index], 'middleName') ||\n              contact.lastName !== _get(newValue[index], 'lastName') ||\n              contact.companyName !== _get(newValue[index], 'companyName') ||\n              contact.suffix !== _get(newValue[index], 'suffix') ||\n              contact.email !== _get(newValue[index], 'email') ||\n              contact.phoneNumber !== _get(newValue[index], 'phoneNumber') ||\n              contact.addressLine1 !== _get(newValue[index], 'addressLine1') ||\n              contact.addressLine2 !== _get(newValue[index], 'addressLine2') ||\n              contact.city !== _get(newValue[index], 'city') ||\n              contact.state !== _get(newValue[index], 'state') ||\n              contact.zipCode !== _get(newValue[index], 'zipCode'))\n          ) {\n            hasChanges = true;\n            updatedContacts.push(newValue[index]);\n          } else {\n            updatedContacts.push(contact);\n          }\n        });\n        dispatchUpdateField(dispatch, fieldName, updatedContacts);\n      }\n\n      if (!hasChanges) {\n        dispatchResetField(dispatch, fieldName);\n      }\n      break;\n\n    case 'directors':\n    case 'officers':\n      if (newValue.length !== originalValue.length) {\n        const updatedContacts = [];\n        newValue.forEach((contact) => {\n          if (\n            ((_get(contact, 'firstName') &&\n              _get(contact, 'lastName')) ||\n              _get(contact, 'companyName')) &&\n            _get(contact, 'addressLine1') &&\n            _get(contact, 'city') &&\n            _get(contact, 'state') &&\n            _get(contact, 'zipCode')\n          ) {\n            hasChanges = true;\n            updatedContacts.push(contact);\n          }\n        });\n\n        hasChanges = true;\n        dispatchUpdateField(dispatch, fieldName, updatedContacts);\n      } else {\n        const updatedContacts = [];\n\n        originalValue.forEach((contact, index) => {\n          if (\n            !originalValue[index] ||\n            (((_get(contact, 'firstName') &&\n              _get(contact, 'lastName')) ||\n              _get(contact, 'companyName')) &&\n              (_get(contact, 'firstName') !== _get(newValue[index], 'firstName') ||\n                _get(contact, 'middleName') !== _get(newValue[index], 'middleName') ||\n                _get(contact, 'lastName') !== _get(newValue[index], 'lastName') ||\n                _get(contact, 'companyName') !== _get(newValue[index], 'companyName') ||\n                _get(contact, 'suffix') !== _get(newValue[index], 'suffix') ||\n                _get(contact, 'email') !== _get(newValue[index], 'email') ||\n                _get(contact, 'phoneNumber') !== _get(newValue[index], 'phoneNumber') ||\n                _get(contact, 'addressLine1') !== _get(newValue[index], 'addressLine1') ||\n                _get(contact, 'addressLine2') !== _get(newValue[index], 'addressLine2') ||\n                _get(contact, 'city') !== _get(newValue[index], 'city') ||\n                _get(contact, 'state') !== _get(newValue[index], 'state') ||\n                _get(contact, 'title') !== _get(newValue[index], 'title') ||\n                _get(contact, 'zipCode') !== _get(newValue[index], 'zipCode')\n              ))) {\n            hasChanges = true;\n            updatedContacts.push(newValue[index]);\n          } else {\n            updatedContacts.push(contact);\n          }\n        });\n        dispatchUpdateField(dispatch, fieldName, updatedContacts);\n      }\n      if (!hasChanges) {\n        dispatchResetField(dispatch, fieldName);\n      }\n      break;\n\n    case 'stockInfo':\n      if (newValue.authorizedShares !== originalValue.authorizedShares ||\n        newValue.valuePerShare !== originalValue.valuePerShare\n      ) {\n        return dispatchUpdateField(dispatch, fieldName, newValue);\n      }\n      return dispatchResetField(dispatch, fieldName);\n\n    case 'taxPreparer':\n      if (newValue.firstName !== originalValue.firstName ||\n        newValue.middleName !== originalValue.middleName ||\n        newValue.lastName !== originalValue.lastName ||\n        newValue.phoneNumber !== originalValue.phoneNumber\n      ) {\n        return dispatchUpdateField(dispatch, fieldName, newValue);\n      }\n      return dispatchResetField(dispatch, fieldName);\n\n    case 'addresses':\n      Object.keys(newValue).forEach((addressType) => {\n        if (\n          !hasChanges &&\n          (newValue[addressType].addressLine1 !== originalValue[addressType].addressLine1 ||\n            newValue[addressType].addressLine2 !== originalValue[addressType].addressLine2 ||\n            newValue[addressType].city !== originalValue[addressType].city ||\n            newValue[addressType].state !== originalValue[addressType].state ||\n            newValue[addressType].zipCode !== originalValue[addressType].zipCode)\n        ) {\n          hasChanges = true;\n          dispatchUpdateField(dispatch, fieldName, newValue);\n        }\n      });\n      if (!hasChanges) {\n        dispatchResetField(dispatch, fieldName);\n      }\n      break;\n\n    case 'authorizedSignatory':\n      if (\n        newValue.firstName !== _get(originalValue, 'firstName') ||\n        newValue.middleName !== _get(originalValue, 'middleName') ||\n        newValue.lastName !== _get(originalValue, 'lastName') ||\n        newValue.companyName !== _get(originalValue, 'companyName')\n      ) {\n        hasChanges = true;\n        dispatchUpdateField(dispatch, fieldName, newValue);\n      }\n      if (!hasChanges) {\n        dispatchResetField(dispatch, fieldName);\n      }\n      break;\n\n    case 'didDisposeOfProperty':\n    case 'hadGrossSales':\n    case 'maintainLicense':\n    case 'makesLessThan':\n    case 'useProperty':\n    case 'webFileId':\n      dispatchUpdateField(dispatch, fieldName, newValue);\n      break;\n\n    default:\n      break;\n  }\n\n  return null;\n};\n/* eslint-enable max-statements */\n","import { URLS } from '../../../constants/register_smb_growth';\n\n/* eslint-disable max-statements */\nconst\n  getFlowOrder = (url, registration) => {\n    if (url === URLS.COMPLETE) {\n      return [ URLS.COMPLETE ];\n    }\n\n    const { smbGrowth } = registration,\n      { alreadyPurchased } = smbGrowth;\n\n    return alreadyPurchased ? [ URLS.ALREADY_PURCHASED ] : [ URLS.CHOOSE_PACKAGE, URLS.CHOOSE_INTERVAL, URLS.PAYMENT, URLS.COMPLETE ];\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegisterSMBGrowthFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterSMBGrowthFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS as ORDER_ACTIONS } from '../../constants/orders';\nimport { ACTIONS, URLS } from '../../constants/register_smb_growth';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { storageKey as smbGrowthKey } from '../../reducers/registration/smbGrowth';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, orderService, registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { trackClick, trackEvent } from '../../utils/ThirdPartyTracking';\nimport { getRegistrationUrl as getUreekaUrl } from '../../utils/UreekaService';\n\nconst\n  defaultSMBGrowthData = { companyId: '', companyCount: 0 },\n  smbGrowthData = getReducerSnapshot(smbGrowthKey, defaultSMBGrowthData),\n  getFlowOrder = (url) => {\n    const registration = {\n      smbGrowth: smbGrowthData\n    };\n\n    return getFlow(url, registration);\n  },\n  getCompanyUrl = () => {\n    return smbGrowthData.companyId ?\n      `/${COMPANY_URLS.BASE}/${smbGrowthData.companyId}` :  `/${DASHBOARD_URLS.BASE}`;\n  },\n  go = (jump, dispatch, doReplace) => {\n    const\n      url = document.location.pathname.substring(URLS.BASE.length + 2) || URLS.START,\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      document.location = getCompanyUrl();\n    } else if (jumpIndex >= flowOrder.length) {\n      document.location = getCompanyUrl();\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  trackClickEvent = (pageTitle, clickText, inputValue) => {\n    const\n      url = document.location.pathname.substring(URLS.BASE.length + 2) || URLS.START,\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + 1 : index,\n      nextUrl = jumpIndex >= 0 && jumpIndex <= flowOrder.length ? flowOrder[jumpIndex] : '',\n\n      pageDetails = {\n        activeFlow: URLS.BASE,\n        pageTitle,\n        pageType: 'standalone - SMB Growth'\n      },\n      clickDetails = {\n        clickType: 'button',\n        clickText,\n        inputValue\n      };\n    if (nextUrl) {\n      clickDetails.nextUrl = nextUrl;\n    }\n    trackClick(pageDetails, clickDetails);\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch);\n    }\n  },\n  doReset = () => {\n    _assign(smbGrowthData, defaultSMBGrowthData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const path = document.location.pathname,\n    idx = path.indexOf(URLS.BASE),\n    idx2 = idx + URLS.BASE.length + 2;\n\n  logger.logAction(ACTIONS.GO_BACK, { location: path.substring(idx2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const setComingSoon = (dispatch, redirect) => {\n  if (redirect) {\n    set(dispatch, {}, ACTIONS.COMING_SOON, true);\n    document.location = getCompanyUrl();\n  }\n  set(dispatch, {}, ACTIONS.COMING_SOON, false);\n};\n\nexport const setAlreadyPurchased = (dispatch, data) => {\n  const { redirect, goToUreeka, kickstarter } = data;\n  if (redirect) {\n    trackClickEvent(URLS.ALREADY_PURCHASED, goToUreeka ? 'Access Your Ureeka Account' : 'Go to Dashboard', goToUreeka ? 'true' : 'false');\n    setTimeout(() => {\n      set(dispatch, {}, ACTIONS.ALREADY_PURCHASED, false);\n      if (goToUreeka) {\n        window.open(getUreekaUrl(kickstarter), '_ureeka');\n      } else {\n        document.location = getCompanyUrl();\n      }\n    }, 1000);\n  } else {\n    set(dispatch, {}, ACTIONS.ALREADY_PURCHASED, false);\n  }\n};\n\nexport const setChooseInterval = (dispatch, data) => {\n  const { yearlyInterval } = data;\n  _assign(smbGrowthData, { yearlyInterval });\n  trackClickEvent(URLS.CHOOSE_INTERVAL, yearlyInterval ? 'Pay yearly' : 'Pay monthly', yearlyInterval ? 'true' : 'false');\n  set(dispatch, data, ACTIONS.CHOOSE_INTERVAL, true);\n};\n\nexport const setChoosePackage = (dispatch, data) => {\n  const { kickstarter } = data;\n  _assign(smbGrowthData, { kickstarter });\n  trackClickEvent(URLS.CHOOSE_PACKAGE, kickstarter ? 'Marketing Kickstarter' : 'Marketing Effectiveness', kickstarter ? 'true' : 'false');\n  set(dispatch, data, ACTIONS.CHOOSE_PACKAGE, true);\n};\n\nexport const setComplete = (dispatch, data) => {\n  const { redirect, goToUreeka, kickstarter } = data;\n  if (redirect) {\n    trackClickEvent(URLS.COMPLETE, goToUreeka ? 'Activate Your Ureeka Account' : 'Go to Dashboard', goToUreeka ? 'true' : 'false');\n    setTimeout(() => {\n      set(dispatch, {}, ACTIONS.COMPLETE, false);\n      if (goToUreeka) {\n        window.open(getUreekaUrl(smbGrowthData.kickstarter || kickstarter), '_ureeka');\n      } else {\n        document.location = getCompanyUrl();\n      }\n    }, 1000);\n  } else {\n    set(dispatch, {}, ACTIONS.COMPLETE, false);\n  }\n};\n\nexport const setInit = (dispatch, data) => {\n  const { alreadyPurchased, companyId } = data;\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  _assign(smbGrowthData, { companyId, alreadyPurchased });\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(`/${URLS.BASE}/${alreadyPurchased ? URLS.ALREADY_PURCHASED : URLS.CHOOSE_PACKAGE}`);\n};\n\nexport const setPayment = (dispatch, data) => {\n  trackClickEvent(URLS.PAYMENT, 'Place Your Order', 'true');\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nconst createSMBGrowthOrder = (dispatch, reducerData, accountId) => {\n  registrationService.createSMBGrowth(reducerData, accountId).then((response) => {\n    trackEvent('Purchase', 'complete', 'SMB Growth');\n    orderService.getOrders().then((response1) => {\n      const { data } = response;\n      logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        payload: {\n          data,\n          reducerData\n        }\n      });\n\n      logger.logAction(ORDER_ACTIONS.GET_ORDERS_COMPLETE, response1);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        payload: {\n          data: response1\n        }\n      });\n      go(1);\n    }).catch((err) => {\n      logger.error(ORDER_ACTIONS.GET_ORDERS_COMPLETE, err);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: err && err.errorCode ? err.errorCode : 3000\n        }\n      });\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, accountId, filingFees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { operatingAgreement } = reducerData,\n    { cardToken, expMonth, expYear, cvc, brand, last4 } = operatingAgreement;\n\n  if (!cardToken) {\n    createSMBGrowthOrder(dispatch, reducerData, accountId, filingFees);\n  } else {\n    const data = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createSMBGrowthOrder(dispatch, reducerData, accountId, filingFees);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  orderAlreadyCreated,\n  setAlreadyPurchased,\n  setChooseInterval,\n  setChoosePackage,\n  setComplete,\n  setInit,\n  setPayment,\n  resetAllData\n};\n","import { ACTIONS } from '../../constants/orders';\nimport logger from '../../utils/ClientLogger';\nimport { orderService } from '../../services';\n\nexport const getOrders = (dispatch) => {\n  logger.logAction(ACTIONS.GET_ORDERS);\n  dispatch({\n    type: ACTIONS.GET_ORDERS\n  });\n  orderService.getOrders().then((response) => {\n    logger.logAction(ACTIONS.GET_ORDERS_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.GET_ORDERS_COMPLETE,\n      payload: {\n        data: response\n      }\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.GET_ORDERS_COMPLETE, err);\n    if (err.message === 'Order missing data and no existing data') {\n      dispatch({\n        type: ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: 3001\n        }\n      });\n      return;\n    }\n    dispatch({\n      type: ACTIONS.GET_ORDERS_COMPLETE,\n      error: true,\n      payload: {\n        errorCode: err && err.errorCode ? err.errorCode : 3000\n      }\n    });\n  });\n};\n\nexport default {\n  getOrders\n};\n","import { URLS } from '../../../constants/register_basicemail';\n\n/* eslint-disable max-statements */\nconst\n  getFlowOrder = (url, registration) => {\n    if (url === URLS.COMPLETE) {\n      return [ URLS.COMPLETE ];\n    }\n\n    const\n      { domainName } = registration,\n      { companyCount, emailInPlan } = domainName,\n      flow = [ URLS.START ];\n\n    if (emailInPlan) {\n      return [ URLS.EMAIL_ADDRESS, URLS.PAYMENT, URLS.COMPLETE ];\n    }\n    if (companyCount > 1) {\n      flow.push(URLS.CHOOSE_COMPANY);\n    }\n    flow.push(URLS.EMAIL_ADDRESS, URLS.PAYMENT, URLS.COMPLETE);\n    return flow;\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegisterAccountingFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterAccountingFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS as ORDER_ACTIONS } from '../../constants/orders';\nimport { ACTIONS, URLS } from '../../constants/register_basicemail';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { storageKey as domainNameKey } from '../../reducers/registration/domainName';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, orderService, registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\n\nconst\n  defaultDomainNameData = { companyId: '', companyCount: 0, emailInPlan: false },\n  domainNameData = getReducerSnapshot(domainNameKey, defaultDomainNameData),\n  getFlowOrder = (url) => {\n    const registration = {\n      domainName: domainNameData\n    };\n\n    return getFlow(url, registration);\n  },\n  getCompanyUrl = () => {\n    if (domainNameData.companyId) {\n      return `/${COMPANY_URLS.BASE}/${domainNameData.companyId}`;\n    }\n    return `/${DASHBOARD_URLS.BASE}`;\n  },\n  go = (jump, dispatch, doReplace) => {\n    const\n      url = document.location.pathname.substring(URLS.BASE.length + 2) || URLS.START,\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      document.location = getCompanyUrl();\n    } else if (jumpIndex >= flowOrder.length) {\n      document.location = getCompanyUrl();\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch);\n    }\n  },\n  doReset = () => {\n    _assign(domainNameData, defaultDomainNameData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const path = document.location.pathname,\n    idx = path.indexOf(URLS.BASE),\n    idx2 = idx + URLS.BASE.length + 2;\n\n  logger.logAction(ACTIONS.GO_BACK, { location: path.substring(idx2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const setBasicEmailAddress = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.EMAIL_ADDRESS, true);\n};\n\nexport const setChooseCompany = (dispatch, data) => {\n  const { companyId } = data;\n  _assign(domainNameData, { companyId });\n  set(dispatch, data, ACTIONS.CHOOSE_COMPANY, true);\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, {}, ACTIONS.COMPLETE, data.redirect);\n};\n\nexport const setInit = (dispatch, data) => {\n  const { companyId, companyCount, emailInPlan = false } = data;\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  _assign(domainNameData, { companyId, companyCount, emailInPlan });\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(`/${URLS.BASE}/${URLS.START}`);\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setStart = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nconst createBasicEmailOrder = (dispatch, reducerData, accountId, filingFees) => {\n  registrationService.createBasicEmail(reducerData, accountId, filingFees).then((response) => {\n    trackEvent('Purchase', 'complete', 'Basic Email');\n    orderService.getOrders().then((response1) => {\n      const { data } = response;\n      logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        payload: {\n          data,\n          reducerData\n        }\n      });\n\n      logger.logAction(ORDER_ACTIONS.GET_ORDERS_COMPLETE, response1);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        payload: {\n          data: response1\n        }\n      });\n      go(1);\n    }).catch((err) => {\n      logger.error(ORDER_ACTIONS.GET_ORDERS_COMPLETE, err);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: err && err.errorCode ? err.errorCode : 3000\n        }\n      });\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, accountId, filingFees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { domainName } = reducerData,\n    { expMonth, expYear, cvc, cardToken, brand, last4 } = domainName;\n\n  if (!cardToken) {\n    createBasicEmailOrder(dispatch, reducerData, accountId, filingFees);\n  } else {\n    const data = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createBasicEmailOrder(dispatch, reducerData, accountId, filingFees);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  orderAlreadyCreated,\n  setBasicEmailAddress,\n  setChooseCompany,\n  setComplete,\n  setInit,\n  setPayment,\n  setStart,\n  resetAllData\n};\n","import { URLS } from '../../../constants/register_domainprivacy';\n\n/* eslint-disable max-statements */\nconst\n  getFlowOrder = (url, registration) => {\n    if (url === URLS.COMPLETE) {\n      return [ URLS.COMPLETE ];\n    }\n\n    const { domainName: { companyCount, primary } } = registration;\n    const showSelectDomain = !primary;\n    const flow = [ URLS.START ];\n\n    if (companyCount > 1) {\n      flow.push(URLS.CHOOSE_COMPANY);\n    }\n    if (showSelectDomain) {\n      flow.push(URLS.SELECT_DOMAIN);\n    }\n    flow.push(URLS.PAYMENT, URLS.COMPLETE);\n    return flow;\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegisterAccountingFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterAccountingFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS as ORDER_ACTIONS } from '../../constants/orders';\nimport { ACTIONS, URLS } from '../../constants/register_domainprivacy';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { storageKey as domainNameKey } from '../../reducers/registration/domainName';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, orderService, registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\nimport { setIsFreeAccount } from '../../utils/FreeAccountUtils';\n\nconst\n  defaultDomainNameData = { companyId: '', companyCount: 0 },\n  domainNameData = getReducerSnapshot(domainNameKey, defaultDomainNameData),\n  getFlowOrder = (url) => {\n    const registration = {\n      domainName: domainNameData\n    };\n\n    return getFlow(url, registration);\n  },\n  getCompanyUrl = () => {\n    if (domainNameData.companyId) {\n      return `/${COMPANY_URLS.BASE}/${domainNameData.companyId}`;\n    }\n    return `/${DASHBOARD_URLS.BASE}`;\n  },\n  go = (jump, dispatch, doReplace) => {\n    const\n      url = document.location.pathname.substring(URLS.BASE.length + 2) || URLS.START,\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      document.location = getCompanyUrl();\n    } else if (jumpIndex >= flowOrder.length) {\n      document.location = getCompanyUrl();\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch);\n    }\n  },\n  doReset = () => {\n    _assign(domainNameData, defaultDomainNameData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const path = document.location.pathname,\n    idx = path.indexOf(URLS.BASE),\n    idx2 = idx + URLS.BASE.length + 2;\n\n  logger.logAction(ACTIONS.GO_BACK, { location: path.substring(idx2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const setChooseCompany = (dispatch, data) => {\n  const { companyId } = data;\n  _assign(domainNameData, { companyId });\n  set(dispatch, data, ACTIONS.CHOOSE_COMPANY, true);\n};\n\nexport const setDomainName = (dispatch, data, redirect = true) => {\n  set(dispatch, data, ACTIONS.SELECT_DOMAIN, redirect);\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, {}, ACTIONS.COMPLETE, data.redirect);\n};\n\nexport const setInit = (dispatch, data) => {\n  const { companyId, companyCount } = data;\n  setIsFreeAccount(data.isSimulated);\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  _assign(domainNameData, { companyId, companyCount });\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(`/${URLS.BASE}/${URLS.START}`);\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setStart = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nconst createDomainNamePrivacyOrder = (dispatch, reducerData, accountId, filingFees) => {\n  registrationService.createDomainNamePrivacy(reducerData, accountId, filingFees).then((response) => {\n    trackEvent('Purchase', 'complete', 'Domain Name Privacy');\n    orderService.getOrders().then((response1) => {\n      const { data } = response;\n      logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        payload: {\n          data,\n          reducerData\n        }\n      });\n\n      logger.logAction(ORDER_ACTIONS.GET_ORDERS_COMPLETE, response1);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        payload: {\n          data: response1\n        }\n      });\n      go(1);\n    }).catch((err) => {\n      logger.error(ORDER_ACTIONS.GET_ORDERS_COMPLETE, err);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: err && err.errorCode ? err.errorCode : 3000\n        }\n      });\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, accountId, filingFees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { domainName } = reducerData,\n    { expMonth, expYear, cvc, cardToken, brand, last4 } = domainName;\n\n  if (!cardToken) {\n    createDomainNamePrivacyOrder(dispatch, reducerData, accountId, filingFees);\n  } else {\n    const data = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createDomainNamePrivacyOrder(dispatch, reducerData, accountId, filingFees);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  orderAlreadyCreated,\n  setChooseCompany,\n  setComplete,\n  setInit,\n  setPayment,\n  setStart,\n  resetAllData\n};\n","import { URLS } from '../../../constants/register_corpdocs';\n\n/* eslint-disable max-statements */\nconst\n  getFlowOrder = (url, registration) => {\n    if (url === URLS.COMPLETE) {\n      return [ URLS.COMPLETE ];\n    }\n    if (registration.corpDocs.companyCount > 1 && !registration.business.isSimulated) {\n      return [ URLS.START, URLS.CHOOSE_COMPANY, URLS.PAYMENT, URLS.COMPLETE ];\n    }\n    return [ URLS.START, URLS.PAYMENT, URLS.COMPLETE ];\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegisterAccountingFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterAccountingFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS as ORDER_ACTIONS } from '../../constants/orders';\nimport { ACTIONS, URLS } from '../../constants/register_corpdocs';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { storageKey as corpDocsKey } from '../../reducers/registration/corpDocs';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, orderService, registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\nimport { setIsFreeAccount } from '../../utils/FreeAccountUtils';\n\nconst defaultBusinessData = { isSimulated: false };\n\nconst\n  defaultCorpDocsData = { companyId: '', companyCount: 0 },\n  corpDocsData = getReducerSnapshot(corpDocsKey, defaultCorpDocsData),\n  businessData = getReducerSnapshot(businessKey, defaultBusinessData),\n  getFlowOrder = (url) => {\n    const registration = {\n      corpDocs: corpDocsData,\n      business: businessData\n    };\n\n    return getFlow(url, registration);\n  },\n  getCompanyUrl = () => {\n    if (corpDocsData.companyId) {\n      return `/${COMPANY_URLS.BASE}/${corpDocsData.companyId}`;\n    }\n    return `/${DASHBOARD_URLS.BASE}`;\n  },\n  go = (jump, dispatch, doReplace) => {\n    const\n      url = document.location.pathname.substring(URLS.BASE.length + 2) || URLS.START,\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n    if (jumpIndex < 0) {\n      document.location = getCompanyUrl();\n    } else if (jumpIndex >= flowOrder.length) {\n      document.location = corpDocsData.returnTo ? corpDocsData.returnTo : getCompanyUrl();\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch);\n    }\n  },\n  doReset = () => {\n    _assign(corpDocsData, defaultCorpDocsData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const path = document.location.pathname,\n    idx = path.indexOf(URLS.BASE),\n    idx2 = idx + URLS.BASE.length + 2;\n\n  logger.logAction(ACTIONS.GO_BACK, { location: path.substring(idx2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const setChooseCompany = (dispatch, data) => {\n  const { companyId } = data;\n  _assign(corpDocsData, { companyId });\n  set(dispatch, data, ACTIONS.CHOOSE_COMPANY, true);\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, {}, ACTIONS.COMPLETE, data.redirect);\n};\n\nexport const setInit = (dispatch, data) => {\n  const { companyId, companyCount } = data;\n  businessData.isSimulated = data.isSimulated;\n  setIsFreeAccount(data.isSimulated);\n  corpDocsData.returnTo = data.returnTo;\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  _assign(corpDocsData, { companyId, companyCount });\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(`/${URLS.BASE}/${URLS.START}`);\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setStart = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nconst createCorpDocsOrder = (dispatch, reducerData, accountId, filingFees) => {\n  registrationService.createCorpDocs(reducerData, accountId, filingFees).then((response) => {\n    trackEvent('Purchase', 'complete', 'Corporate Docs');\n    orderService.getOrders().then((response1) => {\n      const { data } = response;\n      logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        payload: {\n          data,\n          reducerData\n        }\n      });\n\n      logger.logAction(ORDER_ACTIONS.GET_ORDERS_COMPLETE, response1);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        payload: {\n          data: response1\n        }\n      });\n      go(1);\n    }).catch((err) => {\n      logger.error(ORDER_ACTIONS.GET_ORDERS_COMPLETE, err);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: err && err.errorCode ? err.errorCode : 3000\n        }\n      });\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, accountId, filingFees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { corpDocs } = reducerData,\n    { expMonth, expYear, cvc, cardToken, brand, last4 } = corpDocs;\n\n  if (!cardToken) {\n    createCorpDocsOrder(dispatch, reducerData, accountId, filingFees);\n  } else {\n    const data = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createCorpDocsOrder(dispatch, reducerData, accountId, filingFees);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  orderAlreadyCreated,\n  setChooseCompany,\n  setComplete,\n  setInit,\n  setPayment,\n  setStart,\n  resetAllData\n};\n","import { URLS } from '../../../constants/register_opagreement';\n\n/* eslint-disable max-statements */\nconst\n  getFlowOrder = (url, registration) => {\n    if (url === URLS.COMPLETE) {\n      return [ URLS.COMPLETE ];\n    }\n\n    const\n      { operatingAgreement } = registration,\n      { companyCount } = operatingAgreement,\n      flow = [ URLS.START ];\n\n    if (companyCount > 1) {\n      flow.push(URLS.CHOOSE_COMPANY);\n    }\n    flow.push(URLS.PAYMENT, URLS.COMPLETE);\n    return flow;\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegisterAccountingFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterAccountingFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS as ORDER_ACTIONS } from '../../constants/orders';\nimport { ACTIONS, URLS } from '../../constants/register_opagreement';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { storageKey as operatingAgreementKey } from '../../reducers/registration/operatingAgreement';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, orderService, registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\n\nconst\n  defaultOperatingAgreementData = { companyId: '', companyCount: 0 },\n  operatingAgreementData = getReducerSnapshot(operatingAgreementKey, defaultOperatingAgreementData),\n  getFlowOrder = (url) => {\n    const registration = {\n      operatingAgreement: operatingAgreementData\n    };\n\n    return getFlow(url, registration);\n  },\n  getCompanyUrl = () => {\n    return operatingAgreementData.companyId ?\n      `/${COMPANY_URLS.BASE}/${operatingAgreementData.companyId}` :  `/${DASHBOARD_URLS.BASE}`;\n  },\n  go = (jump, dispatch, doReplace) => {\n    const\n      url = document.location.pathname.substring(URLS.BASE.length + 2) || URLS.START,\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      document.location = getCompanyUrl();\n    } else if (jumpIndex >= flowOrder.length) {\n      document.location = getCompanyUrl();\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch);\n    }\n  },\n  doReset = () => {\n    _assign(operatingAgreementData, defaultOperatingAgreementData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const path = document.location.pathname,\n    idx = path.indexOf(URLS.BASE),\n    idx2 = idx + URLS.BASE.length + 2;\n\n  logger.logAction(ACTIONS.GO_BACK, { location: path.substring(idx2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const setChooseCompany = (dispatch, data) => {\n  const { companyId } = data;\n  _assign(operatingAgreementData, { companyId });\n  set(dispatch, data, ACTIONS.CHOOSE_COMPANY, true);\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, {}, ACTIONS.COMPLETE, data.redirect);\n};\n\nexport const setInit = (dispatch, data) => {\n  const { companyId, companyCount } = data;\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  _assign(operatingAgreementData, { companyId, companyCount });\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(`/${URLS.BASE}/${URLS.START}`);\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setStart = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nconst createOperatingAgreementOrder = (dispatch, reducerData, accountId, filingFees) => {\n  registrationService.createOperatingAgreement(reducerData, accountId, filingFees).then((response) => {\n    trackEvent('Purchase', 'complete', 'Operating Agreement');\n    orderService.getOrders().then((response1) => {\n      const { data } = response;\n      logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        payload: {\n          data,\n          reducerData\n        }\n      });\n\n      logger.logAction(ORDER_ACTIONS.GET_ORDERS_COMPLETE, response1);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        payload: {\n          data: response1\n        }\n      });\n      go(1);\n    }).catch((err) => {\n      logger.error(ORDER_ACTIONS.GET_ORDERS_COMPLETE, err);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: err && err.errorCode ? err.errorCode : 3000\n        }\n      });\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, accountId, filingFees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { operatingAgreement } = reducerData,\n    { cardToken, expMonth, expYear, cvc, brand, last4 } = operatingAgreement;\n\n  if (!cardToken) {\n    createOperatingAgreementOrder(dispatch, reducerData, accountId, filingFees);\n  } else {\n    const data = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createOperatingAgreementOrder(dispatch, reducerData, accountId, filingFees);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  orderAlreadyCreated,\n  setChooseCompany,\n  setComplete,\n  setInit,\n  setPayment,\n  setStart,\n  resetAllData\n};\n","import { URLS } from '../../../constants/register_website';\n\n/* eslint-disable max-statements */\nconst\n  getFlowOrder = (url, registration) => {\n    if (url === URLS.COMPLETE) {\n      return [ URLS.COMPLETE ];\n    }\n    if (registration.website.companyCount > 1) {\n      return [ URLS.START, URLS.CHOOSE_COMPANY, URLS.PAYMENT, URLS.COMPLETE ];\n    }\n    return [ URLS.START, URLS.PAYMENT, URLS.COMPLETE ];\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegisterAccountingFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterAccountingFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS as ORDER_ACTIONS } from '../../constants/orders';\nimport { ACTIONS, URLS } from '../../constants/register_website';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { storageKey as websiteKey } from '../../reducers/registration/website';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, orderService, registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\nimport { setIsFreeAccount } from '../../utils/FreeAccountUtils';\n\nconst\n  defaultWebsiteData = { companyId: '', companyCount: 0 },\n  websiteData = getReducerSnapshot(websiteKey, defaultWebsiteData),\n  getFlowOrder = (url) => {\n    const registration = {\n      website: websiteData\n    };\n\n    return getFlow(url, registration);\n  },\n  getCompanyUrl = () => {\n    if (websiteData.companyId) {\n      return `/${COMPANY_URLS.BASE}/${websiteData.companyId}`;\n    }\n    return `/${DASHBOARD_URLS.BASE}`;\n  },\n  go = (jump, dispatch, doReplace) => {\n    const\n      url = document.location.pathname.substring(URLS.BASE.length + 2) || URLS.START,\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      document.location = getCompanyUrl();\n    } else if (jumpIndex >= flowOrder.length) {\n      document.location = getCompanyUrl();\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch);\n    }\n  },\n  doReset = () => {\n    _assign(defaultWebsiteData, websiteData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const path = document.location.pathname,\n    idx = path.indexOf(URLS.BASE),\n    idx2 = idx + URLS.BASE.length + 2;\n\n  logger.logAction(ACTIONS.GO_BACK, { location: path.substring(idx2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const setChooseCompany = (dispatch, data) => {\n  const { companyId } = data;\n  _assign(websiteData, { companyId });\n  set(dispatch, data, ACTIONS.CHOOSE_COMPANY, true);\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, {}, ACTIONS.COMPLETE, data.redirect);\n};\n\nexport const setInit = (dispatch, data) => {\n  const { companyId, companyCount } = data;\n  setIsFreeAccount(data.isSimulated);\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  _assign(websiteData, { companyId, companyCount });\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(`/${URLS.BASE}/${URLS.START}`);\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setStart = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nconst createWebsiteOrder = (dispatch, reducerData, accountId) => {\n  registrationService.createStaticWebsite(reducerData, accountId).then((response) => {\n    trackEvent('Purchase', 'complete', 'Static Website');\n    orderService.getOrders().then((response1) => {\n      const { data } = response;\n      logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        payload: {\n          data,\n          reducerData\n        }\n      });\n\n      logger.logAction(ORDER_ACTIONS.GET_ORDERS_COMPLETE, response1);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        payload: {\n          data: response1\n        }\n      });\n      go(1);\n    }).catch((err) => {\n      logger.error(ORDER_ACTIONS.GET_ORDERS_COMPLETE, err);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: err && err.errorCode ? err.errorCode : 3000\n        }\n      });\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, accountId, filingFees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { website } = reducerData,\n    { expMonth, expYear, cvc, cardToken, brand, last4 } = website;\n\n  if (!cardToken) {\n    createWebsiteOrder(dispatch, reducerData, accountId, filingFees);\n  } else {\n    const data = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createWebsiteOrder(dispatch, reducerData, accountId, filingFees);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  orderAlreadyCreated,\n  setChooseCompany,\n  setComplete,\n  setInit,\n  setPayment,\n  setStart,\n  resetAllData\n};\n","import { URLS } from '../../../constants/register_business_kit';\n\nconst\n  getFlowOrder = (url) => {\n    if (url === URLS.COMPLETE) {\n      return [URLS.COMPLETE];\n    }\n\n    // gurbina: Remomve Choose Company page for now\n    // const { businessKit } = registration;\n    // const { companyCount } = businessKit;\n    const flow = [URLS.START];\n\n    // if (companyCount > 1) {\n    //   flow.push(URLS.CHOOSE_COMPANY);\n    // }\n    flow.push(URLS.PAYMENT, URLS.COMPLETE);\n    return flow;\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegisterBusinessKitFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterBusinessKitFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS as ORDER_ACTIONS } from '../../constants/orders';\nimport { ACTIONS, URLS } from '../../constants/register_business_kit';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { storageKey as businessKitKey } from '../../reducers/registration/businessKit';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, orderService, registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\n\nconst\n  defaultBusinessKitData = { companyId: '', companyCount: 0 },\n  businessKitData = getReducerSnapshot(businessKitKey, defaultBusinessKitData),\n  getFlowOrder = (url) => {\n    const registration = {\n      businessKit: businessKitData\n    };\n\n    return getFlow(url, registration);\n  },\n  getCompanyUrl = () => {\n    if (businessKitData.companyId) {\n      return `/${COMPANY_URLS.BASE}/${businessKitData.companyId}`;\n    }\n    return `/${DASHBOARD_URLS.BASE}`;\n  },\n  go = (jump, dispatch, doReplace) => {\n    const\n      url = document.location.pathname.substring(URLS.BASE.length + 2) || URLS.START,\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      document.location = getCompanyUrl();\n    } else if (jumpIndex >= flowOrder.length) {\n      document.location = getCompanyUrl();\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch);\n    }\n  },\n  doReset = () => {\n    _assign(businessKitData, defaultBusinessKitData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const path = document.location.pathname,\n    idx = path.indexOf(URLS.BASE),\n    idx2 = idx + URLS.BASE.length + 2;\n\n  logger.logAction(ACTIONS.GO_BACK, { location: path.substring(idx2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const setChooseCompany = (dispatch, data) => {\n  const { companyId } = data;\n  _assign(businessKitData, { companyId });\n  set(dispatch, data, ACTIONS.CHOOSE_COMPANY, true);\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, {}, ACTIONS.COMPLETE, data.redirect);\n};\n\nexport const setInit = (dispatch, data) => {\n  const { companyId, companyCount } = data;\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  _assign(businessKitData, { companyId, companyCount });\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(`/${URLS.BASE}/${URLS.START}`);\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setStart = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nconst createBusinessKitOrder = (dispatch, reducerData, accountId, filingFees) => {\n  registrationService.createBusinessKit(reducerData, accountId, filingFees).then((response) => {\n    trackEvent('Purchase', 'complete', 'Business Kit');\n    orderService.getOrders().then((response1) => {\n      const { data } = response;\n      logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        payload: {\n          data,\n          reducerData\n        }\n      });\n\n      logger.logAction(ORDER_ACTIONS.GET_ORDERS_COMPLETE, response1);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        payload: {\n          data: response1\n        }\n      });\n      go(1);\n    }).catch((err) => {\n      logger.error(ORDER_ACTIONS.GET_ORDERS_COMPLETE, err);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: err && err.errorCode ? err.errorCode : 3000\n        }\n      });\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, accountId, filingFees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { businessKit } = reducerData,\n    { expMonth, expYear, cvc, cardToken, brand, last4 } = businessKit;\n\n  if (!cardToken) {\n    createBusinessKitOrder(dispatch, reducerData, accountId, filingFees);\n  } else {\n    const data = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createBusinessKitOrder(dispatch, reducerData, accountId, filingFees);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  orderAlreadyCreated,\n  setChooseCompany,\n  setComplete,\n  setInit,\n  setPayment,\n  setStart,\n  resetAllData\n};\n","import { ACTIONS } from '../../constants/companies';\nimport logger from '../../utils/ClientLogger';\nimport { companyService } from '../../services';\n\nexport const getCompanies = (dispatch) => {\n  logger.logAction(ACTIONS.GET_COMPANIES);\n  dispatch({\n    type: ACTIONS.GET_COMPANIES\n  });\n  companyService.getCompanies().then((response) => {\n    logger.logAction(ACTIONS.GET_COMPANIES_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.GET_COMPANIES_COMPLETE,\n      payload: {\n        data: response\n      }\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.GET_COMPANIES_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.GET_COMPANIES_COMPLETE,\n      error: true,\n      payload: {\n        errorCode: err && err.errorCode ? err.errorCode : 3000\n      }\n    });\n  });\n};\n\nexport default {\n  getCompanies\n};\n","import { browserHistory } from 'react-router';\nimport { isLoggedIn } from '../../utils/AuthService';\nimport { getAppEntryPoint } from '../../utils/AppEntryPoint';\n\nimport { goToNextUncompletedPage as blrGoToNextUncompletedPage } from '../complete_blr';\nimport { goToNextUncompletedPage as coraGoToNextUncompletedPage, setStart as setStartCompleteCoRA } from '../complete_cora';\nimport { goToNextUncompletedPage as corpGoToNextUncompletedPage } from '../complete_corp';\nimport { goToNextUncompletedPage as dbaGoToNextUncompletedPage } from '../complete_dbaentity';\nimport { goToNextUncompletedPage as einGoToNextUncompletedPage } from '../complete_ein';\nimport { goToNextUncompletedPage as llcGoToNextUncompletedPage } from '../complete_llc';\nimport { goToNextUncompletedPage as wfgGoToNextUncompletedPage } from '../complete_wfg';\nimport { goToNextUncompletedPage as nypubGoToNextUncompletedPage } from '../complete_nypub';\n\nimport { goToNextUncompletedPage as postpurchaseGoToNextUncompletedPage } from '../purchase_post_addons';\n\nimport { goToNextUncompletedPage as regBLRGoToNextUncompletedPage } from '../register_blr';\nimport { goToNextUncompletedPage as regCoRAPFGoToNextUncompletedPage } from '../register_cora_pf';\nimport { goToNextUncompletedPage as regDBAPFGoToNextUncompletedPage } from '../register_dbaentity_pf';\nimport { goToNextUncompletedPage as regEinGoToNextUncompletedPage } from '../register_ein';\nimport { goToNextUncompletedPage as regNameResGoToNextUncompletedPage } from '../register_nameres';\nimport { goToNextUncompletedPage as regNYPubGoToNextUncompletedPage } from '../register_nypub';\nimport { goToNextUncompletedPage as regWFGGoToNextUncompletedPage } from '../register_wfg';\nimport { goToNextUncompletedPage as regGoToNextUncompletedPage } from '../registration';\n\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\n\n/* eslint-disable max-statements */\nexport const goToNextRegistration = (dispatch, completedUrl, completedActionIndex, forceBusinessId) => {\n  if (forceBusinessId === 'reg') {\n    regGoToNextUncompletedPage(dispatch, completedUrl, forceBusinessId);\n    return true;\n  }\n  if (forceBusinessId === 'bl') {\n    regBLRGoToNextUncompletedPage(dispatch, completedUrl, forceBusinessId);\n    return true;\n  }\n  if (forceBusinessId === 'ein') {\n    regEinGoToNextUncompletedPage(dispatch, completedUrl, forceBusinessId);\n    return true;\n  }\n  if (forceBusinessId === 'ra' || forceBusinessId === 'cora') {\n    regCoRAPFGoToNextUncompletedPage(dispatch, completedUrl, forceBusinessId);\n    return true;\n  }\n  if (forceBusinessId === 'wfg') {\n    regWFGGoToNextUncompletedPage(dispatch, completedUrl, forceBusinessId);\n    return true;\n  }\n  if (forceBusinessId === 'nypub') {\n    regNYPubGoToNextUncompletedPage(dispatch, completedUrl, forceBusinessId);\n    return true;\n  }\n  if (completedActionIndex <= 0 || completedActionIndex >= 1000) {\n    return false;\n  }\n\n  if (completedActionIndex <= 99) {\n    regGoToNextUncompletedPage(dispatch, completedUrl, forceBusinessId);\n  } else if (completedActionIndex <= 299) {\n    regEinGoToNextUncompletedPage(dispatch, completedUrl, forceBusinessId);\n  } else if (completedActionIndex <= 399) {\n    regNameResGoToNextUncompletedPage(dispatch, completedUrl, forceBusinessId);\n  } else if (completedActionIndex <= 499) {\n    regNYPubGoToNextUncompletedPage(dispatch, completedUrl, forceBusinessId);\n  } else if (completedActionIndex <= 599) {\n    regWFGGoToNextUncompletedPage(dispatch, completedUrl, forceBusinessId);\n  } else if (completedActionIndex <= 999) {\n    regDBAPFGoToNextUncompletedPage(dispatch, completedUrl, forceBusinessId);\n  } else if (completedActionIndex <= 1199) {\n    regBLRGoToNextUncompletedPage(dispatch, completedUrl, forceBusinessId);\n  } else if (completedActionIndex <= 1399) {\n    regCoRAPFGoToNextUncompletedPage(dispatch, completedUrl, forceBusinessId);\n  } else {\n    return false;\n  }\n  return true;\n};\n\nexport const goToNextCompletion = (dispatch, completedUrl, completedActionIndex) => {\n  // In all of these cases, a purchase has been done but the process is not completed. Force to completion.\n  if (completedActionIndex >= 10100 && completedActionIndex <= 10199) {\n    postpurchaseGoToNextUncompletedPage(dispatch, completedUrl);\n    return true;\n  }\n  if (completedActionIndex >= 5900 && completedActionIndex <= 5999) {\n    blrGoToNextUncompletedPage(dispatch, completedUrl);\n    return true;\n  }\n  if (completedActionIndex >= 5800 && completedActionIndex <= 5899) {\n    dbaGoToNextUncompletedPage(dispatch, completedUrl);\n    return true;\n  }\n  if (completedActionIndex >= 5700 && completedActionIndex <= 5799) {\n    nypubGoToNextUncompletedPage(dispatch, completedUrl);\n    return true;\n  }\n  if (completedActionIndex >= 5600 && completedActionIndex <= 5699) {\n    setStartCompleteCoRA(dispatch, {});\n    return true;\n  }\n  if (completedActionIndex >= 5500 && completedActionIndex <= 5599) {\n    coraGoToNextUncompletedPage(dispatch, completedUrl);\n    return true;\n  }\n  if (completedActionIndex >= 5400 && completedActionIndex <= 5499) {\n    wfgGoToNextUncompletedPage(dispatch, completedUrl);\n    return true;\n  }\n  if (completedActionIndex >= 5200 && completedActionIndex <= 5299) {\n    einGoToNextUncompletedPage(dispatch, completedUrl);\n    return true;\n  }\n  if (completedActionIndex >= 5100 && completedActionIndex <= 5199) {\n    corpGoToNextUncompletedPage(dispatch, completedUrl);\n    return true;\n  }\n  if (completedActionIndex >= 5000 && completedActionIndex <= 5099) {\n    llcGoToNextUncompletedPage(dispatch, completedUrl);\n    return true;\n  }\n  return false;\n};\n\nexport const goToNextRegOrComplete = (dispatch, completedUrl, completedActionIndex, skipLoginCheck, forceBusinessId) => {\n  const loggedIn = isLoggedIn(),\n    forceBus = loggedIn ? forceBusinessId : '';\n\n  if (forceBus === 'reg') {\n    regGoToNextUncompletedPage(dispatch, completedUrl, forceBus);\n  } else if (forceBus === 'ein') {\n    regEinGoToNextUncompletedPage(dispatch, completedUrl, forceBus);\n  } else if (forceBus === 'bl') {\n    regBLRGoToNextUncompletedPage(dispatch, completedUrl, forceBus);\n  } else if ((completedActionIndex > 0 && completedActionIndex <= 99)) {\n    regGoToNextUncompletedPage(dispatch, completedUrl, forceBus);\n  } else if (completedActionIndex >= 200 && completedActionIndex <= 299) {\n    regEinGoToNextUncompletedPage(dispatch, completedUrl, forceBus);\n  } else if (completedActionIndex >= 300 && completedActionIndex <= 399) {\n    regNameResGoToNextUncompletedPage(dispatch, completedUrl, forceBus);\n  } else if (completedActionIndex >= 400 && completedActionIndex <= 499) {\n    regNYPubGoToNextUncompletedPage(dispatch, completedUrl, forceBus);\n  } else if (completedActionIndex >= 500 && completedActionIndex <= 599) {\n    regWFGGoToNextUncompletedPage(dispatch, completedUrl, forceBus);\n  } else if (completedActionIndex >= 1100 && completedActionIndex <= 1199) {\n    regBLRGoToNextUncompletedPage(dispatch, completedUrl, forceBus);\n  } else if (completedActionIndex >= 1300 && completedActionIndex <= 1399) {\n    regCoRAPFGoToNextUncompletedPage(dispatch, completedUrl, forceBus);\n  } else if (completedActionIndex >= 5000 && completedActionIndex <= 5099) {\n    llcGoToNextUncompletedPage(dispatch, completedUrl);\n  } else if (completedActionIndex >= 5100 && completedActionIndex <= 5199) {\n    corpGoToNextUncompletedPage(dispatch, completedUrl);\n  } else if (completedActionIndex >= 5200 && completedActionIndex <= 5299) {\n    einGoToNextUncompletedPage(dispatch, completedUrl);\n  } else if (completedActionIndex >= 5400 && completedActionIndex <= 5499) {\n    wfgGoToNextUncompletedPage(dispatch, completedUrl);\n  } else if (completedActionIndex >= 5500 && completedActionIndex <= 5599) {\n    coraGoToNextUncompletedPage(dispatch, completedUrl);\n  } else if (completedActionIndex >= 5600 && completedActionIndex <= 5699) {\n    setStartCompleteCoRA(dispatch, {});\n  } else if (completedActionIndex >= 5700 && completedActionIndex <= 5799) {\n    nypubGoToNextUncompletedPage(dispatch, completedUrl);\n  } else if (completedActionIndex >= 5800 && completedActionIndex <= 5899) {\n    dbaGoToNextUncompletedPage(dispatch, completedUrl);\n  } else if (completedActionIndex >= 5900 && completedActionIndex <= 5999) {\n    blrGoToNextUncompletedPage(dispatch, completedUrl);\n  } else if (completedActionIndex >= 10100 && completedActionIndex <= 10199) {\n    postpurchaseGoToNextUncompletedPage(dispatch, completedUrl);\n  } else if (skipLoginCheck || loggedIn) {\n    document.location = `/${DASHBOARD_URLS.BASE}`;\n  } else {\n    browserHistory.replace(getAppEntryPoint());\n  }\n};\n\nlet beenHere = false;\nexport const isHereThisSession = (key) => {\n  if (beenHere) {\n    return true;\n  }\n  beenHere = true;\n  if (window.sessionStorage) {\n    const beenHereSession = window.sessionStorage.getItem(key) === 'true';\n    if (!beenHereSession) {\n      window.sessionStorage.setItem(key, 'true');\n      return false;\n    }\n    return true;\n  }\n  return false;\n};\n\nexport default {\n  goToNextRegistration,\n  goToNextCompletion,\n  goToNextRegOrComplete,\n  isHereThisSession\n};\n\n","import { URLS } from '../../../constants/business_name_generator';\n\nconst getFlowOrder = (url, registration) => {\n  const flowItems = [ URLS.RESULTS ];\n  const { business: { skipDomesticJurisdiction } } = registration;\n  if (!skipDomesticJurisdiction) {\n    flowItems.push(URLS.DOM_JUR);\n  }\n  flowItems.push(URLS.GREAT_NEWS);\n  flowItems.push(URLS.BUS_NAME_REDIRECT);\n  return flowItems;\n};\n\nexport default {\n  getFlowOrder\n};\n","import { getBusinessNameGeneratorFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst flowTestMap = {\n  default: DefaultFlows\n};\n\nconst getFlowOrder = (url, registration) => {\n  return (flowTestMap[getBusinessNameGeneratorFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n};\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport _capitalize from 'lodash/capitalize';\nimport _trim from 'lodash/trim';\nimport { browserHistory } from 'react-router';\n\n\nimport { getStateFees as getInitStateFees, setAppEntryPoint } from '../initialization';\nimport { ACTIONS, URLS } from '../../constants/business_name_generator';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport logger from '../../utils/ClientLogger';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { domainNameService } from '../../services';\n\nconst defaultBusinessData = {\n  skipDomesticJurisdiction: false\n};\nconst businessData = getReducerSnapshot(businessKey, defaultBusinessData);\n\nconst getFlowOrder = (url) => {\n  const registration = { business: businessData };\n\n  return getFlow(url, registration);\n};\n\nconst dotComReg = /\\.com$/g;\nconst wordsRegex = /[A-Za-z0-9]+/g;\nconst SPECIAL_CHARACTERS = ['`', '‘', '’', '\\'', '&', '+', '-'];\nconst HYPHEN = '-';\n\nconst applyPeculiarities = (name, peculiarities) => {\n  if (!peculiarities) { return name; }\n  let transformedName = name;\n  peculiarities.forEach((pec) => {\n    const { searchableWord, charAfterWord } = pec;\n    const trimSearchableWord = _capitalize(_trim(searchableWord));\n    if (transformedName.includes(trimSearchableWord)) {\n      transformedName = transformedName.replace(trimSearchableWord, `${_capitalize(searchableWord)}${charAfterWord}`);\n    }\n  });\n  return transformedName;\n};\n\nconst mapDomainsToNames = (domainInfo, keywords, peculiarities) => {\n  let { domain = '' } = domainInfo;\n  const nameRegEx = new RegExp(`(${keywords.join('|')})`);\n  domain = domain.replace(dotComReg, '');\n  const domainIncludesHyphen = domain.includes(HYPHEN);\n  const domainSplitted = domain.split(domainIncludesHyphen ? HYPHEN : nameRegEx);\n  const name = domainSplitted.filter((word) => {\n    return !!word;\n  })\n    .map((word) => {\n      return _capitalize(word);\n    }).join(' ');\n\n  return ({\n    name: applyPeculiarities(name, peculiarities),\n    domain: domainInfo.domain\n  });\n};\n\nconst getSuggestions = (rawSuggestions) => {\n  const pageSize = 10;\n  const suggestions = [];\n  const totalPages = Math.ceil(rawSuggestions.length / pageSize);\n  for (let index = 0; index < totalPages; index += 1) {\n    suggestions.push(rawSuggestions.slice(index * pageSize, (index + 1) * pageSize));\n  }\n  return suggestions;\n};\n\nconst getPeculiarities = (keySearch) => {\n  const filteredChars = SPECIAL_CHARACTERS.filter((char) => { return keySearch.includes(char); });\n  if (!filteredChars.length) {\n    return {\n      searchBy: keySearch,\n      peculiarities: null\n    };\n  }\n  let searchBy = keySearch;\n  const peculiarities = filteredChars.map((char) => {\n    searchBy = searchBy.replace(char, '');\n    const specialWord = keySearch.match(new RegExp(`[A-Za-z0-9]+[\\\\s]*[${char}]{1}[\\\\s]*[A-Za-z0-9]*`));\n    const [searchableWord] = specialWord[0].split(char);\n    return {\n      searchableWord,\n      charAfterWord: char\n    };\n  });\n\n  return {\n    searchBy,\n    peculiarities\n  };\n};\n\nconst processDomains = (domains = [], words = [], peculiarities) => {\n  return domains\n    .filter((domainInfo) => {\n      return domainInfo.status === 'available' &&\n        dotComReg.test(domainInfo.domain);\n    })\n    .map((domainInfo) => {\n      return mapDomainsToNames(domainInfo, words, peculiarities);\n    });\n};\n\nconst goInFlow = (flowOrder, jumpIndex) => {\n  if (jumpIndex < 0) {\n    document.location = URLS.LANDING_PAGE;\n  } else if (jumpIndex >= flowOrder.length) {\n    document.location = `/${URLS.BASE}/${URLS.INIT}`;\n  } else {\n    browserHistory.push(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n  }\n};\n\nconst go = (jump) => {\n  const url = document.location.pathname.substring(URLS.BASE.length + 2);\n  const flowOrder = getFlowOrder(url);\n  const index = _indexOf(flowOrder, url);\n  const jumpIndex = index >= 0 ? index + jump : index;\n  goInFlow(flowOrder, jumpIndex);\n};\n\nconst set = (dispatch, data, actionKey, moveUrl) => {\n  logger.logAction(actionKey, data);\n  dispatch({\n    type: actionKey,\n    payload: {\n      data\n    }\n  });\n  if (moveUrl) {\n    go(1, dispatch);\n  }\n};\n\nconst doReset = () => {\n  _assign(businessData, defaultBusinessData);\n};\n\nexport const getDomainSuggestions = (dispatch, data) => {\n  logger.logAction(ACTIONS.SEARCH_BUSINESS_NAMES);\n  const { searchKey } = data;\n\n  const { searchBy, peculiarities } = getPeculiarities(searchKey);\n\n  dispatch({\n    type: ACTIONS.SEARCH_BUSINESS_NAMES,\n    payload: {\n      searchKey\n    }\n  });\n\n  domainNameService\n    .suggest(searchBy)\n    .then((response) => {\n      const { lookup = [], suggestion = [] } = response;\n      const words = searchBy.match(wordsRegex);\n\n      const matches = processDomains(lookup, words, peculiarities);\n      const mappedSuggestions = processDomains(suggestion, words, peculiarities);\n      const suggestions = getSuggestions([...matches, ...mappedSuggestions]);\n      logger.logAction(ACTIONS.SEARCH_BUSINESS_NAMES_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.SEARCH_BUSINESS_NAMES_COMPLETE,\n        payload: {\n          matches,\n          suggestions,\n          matched: !!suggestions.length\n        }\n      });\n    })\n    .catch((err) => {\n      logger.error(ACTIONS.SEARCH_BUSINESS_NAMES_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.SEARCH_BUSINESS_NAMES_COMPLETE,\n        error: true,\n        payload: {\n          matches: [],\n          suggestions: [],\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n};\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const getStateFees = (dispatch, data, filingFees) => {\n  if (filingFees && (!filingFees[data.domesticJurisdiction] || !filingFees[data.domesticJurisdiction].entity_name_reservation)) {\n    getInitStateFees(dispatch, data.domesticJurisdiction);\n  }\n};\n\nexport const goBack = (dispatch) => {\n  logger.logAction(ACTIONS.GO_BACK, { location: document.location.pathname.substring(URLS.BASE.length + 2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const setInit = (dispatch, data) => {\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  set(dispatch, {}, ACTIONS.RESET, false);\n  set(dispatch, data, ACTIONS.INIT, false);\n\n  if (data.searchKey) {\n    getDomainSuggestions(dispatch, data);\n  }\n\n  browserHistory.replace(getEntryPoint());\n};\n\nexport const setDomesticJurisdiction = (dispatch, data, filingFees) => {\n  set(dispatch, data, ACTIONS.DOM_JUR, true);\n  getStateFees(dispatch, data, filingFees);\n};\n\nexport const setBusinessName = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_NAME, true);\n};\n\nexport const setBusinessInformation = (dispatch, data) => {\n  _assign(\n    businessData,\n    { skipDomesticJurisdiction: !!data.domesticJurisdiction }\n  );\n  set(dispatch, data, ACTIONS.BUS_NAME, false);\n  set(dispatch, data, ACTIONS.SEL_BUS_NAME_SUGGES, false);\n  set(dispatch, data, ACTIONS.DOM_JUR, true);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  setInit,\n  resetAllData\n};\n","import { URLS } from '../../../constants/register_expense_tracker_n_tax_filing';\nimport { isExpenseTrackingWithTaxFilingEnabled } from '../../../utils/ProductService';\n\n/* eslint-disable max-statements */\nconst\n  getFlowOrder = () => {\n    if (isExpenseTrackingWithTaxFilingEnabled()) {\n      return [ URLS.START, URLS.PAYMENT, URLS.COMPLETE ];\n    }\n    return [];\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegisterAccountingFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = () => {\n    return (flowTestMap[getRegisterAccountingFlowId()] || DefaultFlows).getFlowOrder();\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS as ORDER_ACTIONS } from '../../constants/orders';\nimport { ACTIONS, URLS } from '../../constants/register_expense_tracker_n_tax_filing';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { storageKey as ETNTFKey } from '../../reducers/registration/expenseTrackerNTaxFiling';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, orderService, registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\nimport { setReducerProgressBar, resetReducerProgressBar } from '../../utils/ProgressBar';\n\nconst setProgressBar = (dispatch, flowOrder, currentStep) => {\n    setReducerProgressBar(\n      dispatch,\n      {\n        flowOrder,\n        currentStep,\n        activeFlow: URLS.BASE\n      }\n    );\n  },\n  resetProgressBar = (dispatch) => {\n    resetReducerProgressBar(dispatch);\n  };\n\nconst\n  defaultETNTFData = { companyId: '', companyCount: 0 },\n  ETNTFData = getReducerSnapshot(ETNTFKey, defaultETNTFData),\n  getCompanyUrl = () => {\n    if (ETNTFData.companyId) {\n      return `/${COMPANY_URLS.BASE}/${ETNTFData.companyId}`;\n    }\n    return `/${DASHBOARD_URLS.BASE}`;\n  },\n  go = (jump, dispatch, doReplace) => {\n    const\n      url = document.location.pathname.substring(URLS.BASE.length + 2) || URLS.START,\n      flowOrder = getFlow(),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      resetProgressBar(dispatch);\n      document.location = getCompanyUrl();\n    } else if (jumpIndex >= flowOrder.length) {\n      resetProgressBar(dispatch);\n      document.location = getCompanyUrl();\n    } else {\n      setProgressBar(dispatch, flowOrder, flowOrder[jumpIndex]);\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch);\n    }\n  },\n  doReset = () => {\n    _assign(defaultETNTFData, ETNTFData);\n  };\n\nexport const getEntryPoint = (dispatch) => {\n  const flowOrder = getFlow();\n  setProgressBar(dispatch, flowOrder, flowOrder[0]);\n\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const path = document.location.pathname,\n    idx = path.indexOf(URLS.BASE),\n    idx2 = idx + URLS.BASE.length + 2;\n\n  logger.logAction(ACTIONS.GO_BACK, { location: path.substring(idx2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, {}, ACTIONS.COMPLETE, data.redirect);\n};\n\nexport const setInit = (dispatch, data) => {\n  const { companyId, companyCount } = data;\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  _assign(ETNTFData, { companyId, companyCount });\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(getEntryPoint(dispatch));\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setStart = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nconst createETNTF = (dispatch, reducerData, accountId) => {\n  registrationService.createExpenseTrackerNTaxFiling(reducerData, accountId).then((response) => {\n    trackEvent('Purchase', 'complete', 'Expense Tracker And Tax Filing');\n    orderService.getOrders().then((response1) => {\n      const { data } = response;\n      logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        payload: {\n          data,\n          reducerData\n        }\n      });\n\n      logger.logAction(ORDER_ACTIONS.GET_ORDERS_COMPLETE, response1);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        payload: {\n          data: response1\n        }\n      });\n\n      go(1, dispatch);\n    }).catch((err) => {\n      logger.error(ORDER_ACTIONS.GET_ORDERS_COMPLETE, err);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: err && err.errorCode ? err.errorCode : 3000\n        }\n      });\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, accountId, filingFees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { expenseTrackerNTaxFiling } = reducerData,\n    { expMonth, expYear, cvc, cardToken, brand, last4  } = expenseTrackerNTaxFiling;\n\n  if (!cardToken) {\n    createETNTF(dispatch, reducerData, accountId, filingFees);\n  } else {\n    const data = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createETNTF(dispatch, reducerData, accountId, filingFees);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  orderAlreadyCreated,\n  setComplete,\n  setInit,\n  setPayment,\n  setStart,\n  resetAllData\n};\n","import { URLS } from '../../../constants/register_bpwq';\n\n/* eslint-disable max-statements */\nconst\n  getFlowOrder = (url) => {\n    if (url === URLS.COMPLETE) {\n      return [ URLS.COMPLETE ];\n    }\n    return [ URLS.START, URLS.SEND_REQUEST, URLS.COMPLETE ];\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegisterGSFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterGSFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS as ORDER_ACTIONS } from '../../constants/orders';\nimport { ACTIONS, URLS } from '../../constants/register_bpwq';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport { storageKey as bpwqKey } from '../../reducers/registration/boldPenguinWidgetQuote';\nimport logger from '../../utils/ClientLogger';\nimport { orderService, registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\n\nconst\n  defaultFlowData = { companyId: '' },\n  flowData = getReducerSnapshot(bpwqKey, defaultFlowData),\n  defaultBusinessData = { businessOrderType: '' },\n  businessData = getReducerSnapshot(businessKey, defaultBusinessData),\n  getFlowOrder = (url) => {\n    return getFlow(url);\n  },\n  getCompanyUrl = () => {\n    if (businessData.id) {\n      return `/${COMPANY_URLS.BASE}/${businessData.id}`;\n    }\n    return `/${DASHBOARD_URLS.BASE}`;\n  },\n  go = (jump, dispatch, doReplace) => {\n    const\n      url = document.location.pathname.substring(URLS.BASE.length + 2) || URLS.START,\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      document.location = getCompanyUrl();\n    } else if (jumpIndex >= flowOrder.length) {\n      document.location = getCompanyUrl();\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch);\n    }\n  },\n  doReset = () => {\n    _assign(flowData, defaultFlowData);\n    _assign(businessData, defaultBusinessData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const path = document.location.pathname,\n    idx = path.indexOf(URLS.BASE),\n    idx2 = idx + URLS.BASE.length + 2;\n\n  logger.logAction(ACTIONS.GO_BACK, { location: path.substring(idx2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const setBackFromCompleteBusiness = () => {\n  browserHistory.push(getEntryPoint());\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, {}, ACTIONS.COMPLETE, data.redirect);\n};\n\nexport const setInit = (dispatch, data) => {\n  const { companyId } = data;\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  _assign(businessData, { id: companyId });\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(`/${URLS.BASE}/${URLS.START}`);\n};\n\nexport const setSendRequest = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.SEND_REQUEST, false);\n};\n\nexport const setStart = (dispatch, data) => {\n  const { companyId } = data;\n  _assign(flowData, { companyId });\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nconst createBPWQOrder = (dispatch, reducerData, accountId) => {\n  registrationService.createBoldPenguinWidgetQuote(reducerData, accountId).then((response) => {\n    trackEvent('Purchase', 'complete', 'Insurance');\n    orderService.getOrders().then((response1) => {\n      logger.logAction(ORDER_ACTIONS.GET_ORDERS_COMPLETE, response1);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        payload: {\n          data: response1\n        }\n      });\n      const { data } = response;\n      logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        payload: {\n          data,\n          reducerData\n        }\n      });\n      go(1);\n    }).catch((err) => {\n      logger.error(ORDER_ACTIONS.GET_ORDERS_COMPLETE, err);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: err && err.errorCode ? err.errorCode : 3000\n        }\n      });\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, accountId) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  createBPWQOrder(dispatch, reducerData, accountId);\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  setBackFromCompleteBusiness,\n  setComplete,\n  setInit,\n  setSendRequest,\n  setStart,\n  orderAlreadyCreated,\n  resetAllData\n};\n","import { URLS } from '../../../constants/register_wfgir';\n\n/* eslint-disable max-statements */\nconst\n  getFlowOrder = (url) => {\n    if (url === URLS.COMPLETE) {\n      return [ URLS.COMPLETE ];\n    }\n    return [ URLS.START, URLS.PAYMENT, URLS.COMPLETE ];\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegisterAccountingFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterAccountingFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS as ORDER_ACTIONS } from '../../constants/orders';\nimport { ACTIONS, URLS } from '../../constants/register_wfgir';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, orderService, registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\n\nconst\n  defaultBusinessData = { id: '' },\n  businessData = getReducerSnapshot(businessKey, defaultBusinessData),\n  getFlowOrder = (url) => {\n    const registration = {\n      business: businessData\n    };\n\n    return getFlow(url, registration);\n  },\n  getCompanyUrl = () => {\n    if (businessData.companyId) {\n      return `/${COMPANY_URLS.BASE}/${businessData.companyId}`;\n    }\n    return `/${DASHBOARD_URLS.BASE}`;\n  },\n  go = (jump, dispatch, doReplace) => {\n    const\n      url = document.location.pathname.substring(URLS.BASE.length + 2) || URLS.START,\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      document.location = getCompanyUrl();\n    } else if (jumpIndex >= flowOrder.length) {\n      document.location = getCompanyUrl();\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch);\n    }\n  },\n  doReset = () => {\n    _assign(defaultBusinessData, businessData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const path = document.location.pathname,\n    idx = path.indexOf(URLS.BASE),\n    idx2 = idx + URLS.BASE.length + 2;\n\n  logger.logAction(ACTIONS.GO_BACK, { location: path.substring(idx2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const setBusinessId = (dispatch, data) => {\n  const { companyId } = data;\n  _assign(businessData, { id: companyId });\n  set(dispatch, data, ACTIONS.CHOOSE_COMPANY, true);\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, {}, ACTIONS.COMPLETE, data.redirect);\n};\n\nexport const setInit = (dispatch, data) => {\n  const { companyId, worryFree, annualReportService } = data;\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  _assign(businessData, { id: companyId, worryFree });\n  _assign(businessData, { id: companyId, annualReportService });\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(`/${URLS.BASE}/${URLS.START}`);\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setStart = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nconst createWFGIROrder = (dispatch, reducerData, accountId, filingFees) => {\n  registrationService.createWFGInitialReport(reducerData, accountId, filingFees).then((response) => {\n    trackEvent('Purchase', 'complete', 'Initial Report');\n    orderService.getOrders().then((response1) => {\n      const { data } = response;\n      logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        payload: {\n          data,\n          reducerData\n        }\n      });\n\n      logger.logAction(ORDER_ACTIONS.GET_ORDERS_COMPLETE, response1);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        payload: {\n          data: response1\n        }\n      });\n      go(1);\n    }).catch((err) => {\n      logger.error(ORDER_ACTIONS.GET_ORDERS_COMPLETE, err);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: err && err.errorCode ? err.errorCode : 3000\n        }\n      });\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, accountId, filingFees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { wfgir } = reducerData,\n    { expMonth, expYear, cvc, cardToken, brand, last4 } = wfgir;\n\n  if (!cardToken) {\n    createWFGIROrder(dispatch, reducerData, accountId, filingFees);\n  } else {\n    const data = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createWFGIROrder(dispatch, reducerData, accountId, filingFees);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  orderAlreadyCreated,\n  setStart,\n  setInit,\n  setBusinessId,\n  setPayment,\n  setComplete,\n  resetAllData\n};\n","import { URLS } from '../../../constants/register_vanity';\n\nconst\n  getFlowOrder = (url) => {\n    if (url === URLS.NOTICE) {\n      return [URLS.NOTICE];\n    }\n\n    return [\n      URLS.START,\n      URLS.PAYMENT,\n      URLS.NOTICE\n    ];\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegisterVanityProductFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterVanityProductFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS as ORDER_ACTIONS } from '../../constants/orders';\nimport { ACTIONS, URLS } from '../../constants/register_vanity';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { storageKey as vanityProductKey } from '../../reducers/registration/vanityProduct';\nimport { storageKey as pageKey } from '../../reducers/registration/page';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, orderService, registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\n\nconst\n  defaultVanityProductData = { companyId: '', companyCount: 0, vanityUrlId: null, vanityKey: null },\n  vanityProductData = getReducerSnapshot(vanityProductKey, defaultVanityProductData),\n  defaultPageData = { fromDashboard: false },\n  pageData = getReducerSnapshot(pageKey, defaultPageData),\n  getFlowOrder = (url) => {\n    const registration = { vanityProduct: vanityProductData, page: pageData };\n    return getFlow(url, registration);\n  },\n  getCompanyUrl = () => {\n    if (vanityProductData.companyId) {\n      return `/${COMPANY_URLS.BASE}/${vanityProductData.companyId}`;\n    }\n    return `/${DASHBOARD_URLS.BASE}`;\n  },\n  getvanityUrlId = () => {\n    const vpData = getReducerSnapshot(vanityProductKey, defaultVanityProductData);\n    return vpData.vanityUrlId;\n  },\n  go = (jump, dispatch, doReplace) => {\n    const\n      vanityUrlId = getvanityUrlId(),\n      url = document.location.pathname.substring(URLS.BASE(vanityUrlId).length + 2) || URLS.START,\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      document.location = getCompanyUrl();\n    } else if (jumpIndex >= flowOrder.length) {\n      document.location = getCompanyUrl();\n    } else {\n      method(`/${URLS.BASE(vanityUrlId)}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch);\n    }\n  },\n  doReset = () => {\n    _assign(vanityProductData, defaultVanityProductData);\n  };\n\nexport const getEntryPoint = () => {\n  const\n    flowOrder = getFlowOrder(''),\n    vanityUrlId = getvanityUrlId();\n  return `/${URLS.BASE(vanityUrlId)}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const\n    vanityUrlId = getvanityUrlId(),\n    path = document.location.pathname,\n    idx = path.indexOf(URLS.BASE(vanityUrlId)),\n    idx2 = idx + URLS.BASE(vanityUrlId).length + 2;\n\n  logger.logAction(ACTIONS.GO_BACK, { location: path.substring(idx2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const setInit = (dispatch, data) => {\n  const { companyId, companyCount, vanityUrlId, vanityKey, fromDashboard = false } = data;\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  _assign(vanityProductData, { companyId, companyCount, vanityUrlId, vanityKey, fromDashboard });\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(getEntryPoint());\n};\n\nexport const setNotice = (dispatch, data) => {\n  set(dispatch, {}, ACTIONS.NOTICE, data.redirect);\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setStart = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nconst createVanityProductOrder = (dispatch, reducerData, accountId, filingFees) => {\n  registrationService.createVanityProduct(reducerData, accountId, filingFees).then((response) => {\n    const { vanityProduct: { vanityKey } } = reducerData;\n    trackEvent('Purchase', 'complete', vanityKey);\n    orderService.getOrders().then((response1) => {\n      const { data } = response;\n      logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        payload: {\n          data,\n          reducerData\n        }\n      });\n\n      logger.logAction(ORDER_ACTIONS.GET_ORDERS_COMPLETE, response1);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        payload: {\n          data: response1\n        }\n      });\n      go(1);\n    }).catch((err) => {\n      logger.error(ORDER_ACTIONS.GET_ORDERS_COMPLETE, err);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: err && err.errorCode ? err.errorCode : 3000\n        }\n      });\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, accountId, filingFees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { vanityProduct } = reducerData,\n    { expMonth, expYear, cvc, cardToken, brand, last4 } = vanityProduct;\n\n  if (!cardToken) {\n    createVanityProductOrder(dispatch, reducerData, accountId, filingFees);\n  } else {\n    const data = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createVanityProductOrder(dispatch, reducerData, accountId, filingFees);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  orderAlreadyCreated,\n  setInit,\n  setPayment,\n  setStart,\n  resetAllData\n};\n","import { URLS } from '../../../constants/register_zbmpro';\n\n/* eslint-disable max-statements */\nconst\n  getFlowOrder = (url) => {\n    if (url === URLS.COMPLETE) {\n      return [ URLS.COMPLETE ];\n    }\n    return [ URLS.START, URLS.PAYMENT, URLS.COMPLETE ];\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegisterAccountingFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterAccountingFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { URLS as ZBM_PLAID_URLS } from '../../constants/register_zbm_plaid';\nimport { ACTIONS as ORDER_ACTIONS } from '../../constants/orders';\nimport { ACTIONS, URLS } from '../../constants/register_zbmpro';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { storageKey as zbmProKey } from '../../reducers/registration/zbmPro';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, orderService, registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\n\nconst\n  defaultZBMProData = { companyId: '' },\n  zbmProData = getReducerSnapshot(zbmProKey, defaultZBMProData),\n  getFlowOrder = (url) => {\n    const registration = {\n      zbmPro: zbmProData\n    };\n\n    return getFlow(url, registration);\n  },\n  getCompanyUrl = () => {\n    if (zbmProData.companyId) {\n      return `/${COMPANY_URLS.BASE}/${zbmProData.companyId}`;\n    }\n    return `/${DASHBOARD_URLS.BASE}`;\n  },\n  go = (jump, dispatch, doReplace) => {\n    const\n      url = document.location.pathname.substring(URLS.BASE.length + 2) || URLS.START,\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      document.location = getCompanyUrl();\n    } else if (jumpIndex >= flowOrder.length) {\n      document.location = zbmProData.returnTo ? zbmProData.returnTo : getCompanyUrl();\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch);\n    }\n  },\n  doReset = () => {\n    _assign(zbmProData, defaultZBMProData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const path = document.location.pathname,\n    idx = path.indexOf(URLS.BASE),\n    idx2 = idx + URLS.BASE.length + 2;\n\n  logger.logAction(ACTIONS.GO_BACK, { location: path.substring(idx2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, {}, ACTIONS.COMPLETE, data.redirect);\n  if (data.redirect) {\n    set(dispatch, {}, ACTIONS.COMPLETE_LINK_WITH_PLAID, data.redirect);\n    document.location = `/${ZBM_PLAID_URLS.BASE}/${ZBM_PLAID_URLS.INIT}/$?companyId=${zbmProData.companyId}`;\n  }\n  if (data.redirectToDashboard) {\n    set(dispatch, {}, ACTIONS.COMPLETE_RETURN_TO_DASH, data.redirectToDashboard);\n    go(-1);\n  }\n};\n\nexport const setInit = (dispatch, data) => {\n  const { companyId } = data;\n  zbmProData.returnTo = data.returnTo;\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  _assign(zbmProData, { companyId });\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(`/${URLS.BASE}/${URLS.START}`);\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setStart = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nconst createZBMProOrder = (dispatch, reducerData, accountId, filingFees) => {\n  registrationService.createZBMPro(reducerData, accountId, filingFees).then((response) => {\n    trackEvent('Purchase', 'complete', 'ZBM Pro');\n    orderService.getOrders().then((response1) => {\n      const { data } = response;\n      logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        payload: {\n          data,\n          reducerData\n        }\n      });\n\n      logger.logAction(ORDER_ACTIONS.GET_ORDERS_COMPLETE, response1);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        payload: {\n          data: response1\n        }\n      });\n      go(1);\n    }).catch((err) => {\n      logger.error(ORDER_ACTIONS.GET_ORDERS_COMPLETE, err);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: err && err.errorCode ? err.errorCode : 3000\n        }\n      });\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, accountId, filingFees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { zbmPro } = reducerData,\n    { expMonth, expYear, cvc, cardToken, brand, last4 } = zbmPro;\n\n  if (!cardToken) {\n    createZBMProOrder(dispatch, reducerData, accountId, filingFees);\n  } else {\n    const data = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createZBMProOrder(dispatch, reducerData, accountId, filingFees);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  orderAlreadyCreated,\n  setComplete,\n  setInit,\n  setPayment,\n  setStart,\n  resetAllData\n};\n","import { URLS } from '../../../constants/register_business';\n\n/* eslint-disable max-statements */\nconst\n  getFlowOrder = () => {\n    const flow = [ URLS.BUS_TYPE, URLS.BUS_NAME, URLS.DOM_JUR ];\n\n    return flow;\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegisterGSFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterGSFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS, URLS } from '../../constants/register_business';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport { businessEntityService } from '../../services';\nimport logger from '../../utils/ClientLogger';\nimport { getAppEntryPoint } from '../../utils/AppEntryPoint';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\n\nimport getFlow from './flows';\n\nconst\n  defaultBusinessData = { id: '', type: 'LLCX', addressMatch: false, addressIsGoogle: false, domesticJurisdiction: '', state: '', noIdMatches: false },\n  businessData = getReducerSnapshot(businessKey, defaultBusinessData),\n  getFlowOrder = (url) => {\n    const\n      registration = {\n        business: businessData\n      },\n      flow = getFlow(url, registration);\n\n    return flow;\n  },\n  go = (jump) => {\n    const\n      url = document.location.pathname.substring(URLS.BASE.length + 2),\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index;\n\n    if (jumpIndex < 0) {\n      document.location = getAppEntryPoint();\n    } else if (jumpIndex >= flowOrder.length) {\n      if (businessData.id) {\n        document.location = `/${COMPANY_URLS.BASE}/${businessData.id}`; // Do this to refresh the data.\n      } else {\n        document.location = `/${DASHBOARD_URLS.BASE}`;\n      }\n    } else {\n      const flowOrderItem = flowOrder[jumpIndex],\n        nextUrl = /pricing/.test(flowOrderItem) ? flowOrderItem : `${URLS.BASE}/${flowOrderItem}`;\n\n      browserHistory.push(`/${nextUrl}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1);\n    }\n  },\n  doReset = () => {\n    _assign(businessData, defaultBusinessData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const path = document.location.pathname,\n    idx = path.indexOf(URLS.BASE),\n    idx2 = idx + URLS.BASE.length + 2;\n\n  logger.logAction(ACTIONS.GO_BACK, { location: path.substring(idx2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const setInit = (dispatch, data) => {\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(getEntryPoint());\n};\n\nexport const setBusinessName = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_NAME, true);\n};\n\nexport const setBusinessType = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BUS_TYPE, true);\n};\n\nexport const setDomesticJurisdiction = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.DOM_JUR, false);\n};\n\nexport const createBusiness = (dispatch, reducerData) => {\n  logger.logAction(ACTIONS.CREATE_BUSINESS);\n  dispatch({\n    type: ACTIONS.CREATE_BUSINESS\n  });\n  businessEntityService.create(reducerData).then((response) => {\n    const { data } = response;\n\n    logger.logAction(ACTIONS.CREATE_BUSINESS_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.CREATE_BUSINESS_COMPLETE,\n      payload: {\n        data,\n        reducerData\n      }\n    });\n    go(1);\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_BUSINESS_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_BUSINESS_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const businessAlreadyCreated = () => {\n  go(1);\n};\n\nexport default {\n  goBack,\n  setInit,\n  businessAlreadyCreated,\n  setBusinessName,\n  setBusinessType,\n  setDomesticJurisdiction,\n  resetAllData\n};\n","import { URLS } from '../../../constants/register_stock_setup';\n\nconst\n  getFlowOrder = () => {\n    const flow = [URLS.START];\n\n    flow.push(URLS.PAYMENT, URLS.COMPLETE);\n    return flow;\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegisterStockSetupFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterStockSetupFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS as ORDER_ACTIONS } from '../../constants/orders';\nimport { ACTIONS, URLS } from '../../constants/register_stock_setup';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { storageKey as stockSetupKey } from '../../reducers/registration/stockSetup';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, corpStockService, orderService, registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\n\nconst\n  defaultStockSetupData = { companyId: '', companyCount: 0 },\n  stockSetupData = getReducerSnapshot(stockSetupKey, defaultStockSetupData),\n  getFlowOrder = (url) => {\n    const registration = {\n      stockSetup: stockSetupData\n    };\n\n    return getFlow(url, registration);\n  },\n  getCompanyUrl = () => {\n    if (stockSetupData.companyId) {\n      return `/${COMPANY_URLS.BASE}/${stockSetupData.companyId}`;\n    }\n    return `/${DASHBOARD_URLS.BASE}`;\n  },\n  go = (jump, dispatch, doReplace) => {\n    const\n      url = document.location.pathname.substring(URLS.BASE.length + 2) || URLS.START,\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      document.location = getCompanyUrl();\n    } else if (jumpIndex >= flowOrder.length) {\n      document.location = getCompanyUrl();\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch);\n    }\n  },\n  doReset = () => {\n    _assign(stockSetupData, stockSetupData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const path = document.location.pathname,\n    idx = path.indexOf(URLS.BASE),\n    idx2 = idx + URLS.BASE.length + 2;\n\n  logger.logAction(ACTIONS.GO_BACK, { location: path.substring(idx2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const setChooseCompany = (dispatch, data) => {\n  const { companyId } = data;\n  _assign(stockSetupData, { companyId });\n  set(dispatch, data, ACTIONS.CHOOSE_COMPANY, true);\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, {}, ACTIONS.COMPLETE, data.redirect);\n};\n\nexport const setInit = (dispatch, data) => {\n  const { companyId, companyCount } = data;\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  _assign(stockSetupData, { companyId, companyCount });\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(`/${URLS.BASE}/${URLS.START}`);\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setStart = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nexport const setCorpStock = (dispatch, data) => {\n  corpStockService.getStockFeeTotal(data).then((response) => {\n    logger.logAction(ACTIONS.START, response);\n    const newData = { ...data, ...response };\n    dispatch({\n      type: ACTIONS.START,\n      payload: {\n        newData\n      }\n    });\n    go(1, dispatch);\n\n  }).catch((error) => {\n    console.log('error', error);\n  });\n};\n\nconst createStockSetupOrder = (dispatch, reducerData, companyId, stockInfo, corpFormationId) => {\n  // make sure to check registrationSErvice for proper stock setup setup\n  registrationService.updateStockSetup(reducerData, companyId, stockInfo, corpFormationId).then((response) => {\n    trackEvent('Purchase', 'complete', 'Stock Setup');\n    orderService.getOrders().then((response1) => {\n      const { data } = response;\n      logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        payload: {\n          data,\n          reducerData\n        }\n      });\n\n      logger.logAction(ORDER_ACTIONS.GET_ORDERS_COMPLETE, response1);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        payload: {\n          data: response1\n        }\n      });\n      go(1);\n    }).catch((err) => {\n      logger.error(ORDER_ACTIONS.GET_ORDERS_COMPLETE, err);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: err && err.errorCode ? err.errorCode : 3000\n        }\n      });\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, companyId, stockInfo, corpFormationId) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { stockSetup } = reducerData,\n    { expMonth, expYear, cvc, cardToken, brand, last4 } = stockSetup;\n\n  if (!cardToken) {\n    createStockSetupOrder(dispatch, reducerData, companyId, stockInfo, corpFormationId);\n  } else {\n    const data = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createStockSetupOrder(dispatch, reducerData, companyId, stockInfo, corpFormationId);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  orderAlreadyCreated,\n  setChooseCompany,\n  setComplete,\n  setInit,\n  setPayment,\n  setStart,\n  resetAllData\n};\n","import { URLS } from '../../../constants/register_zbm_plaid';\n\n/* eslint-disable max-statements */\nconst\n  getFlowOrder = () => {\n    return [ URLS.LINK_PLAID ];\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegisterAccountingFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = () => {\n    return (flowTestMap[getRegisterAccountingFlowId()] || DefaultFlows).getFlowOrder();\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS as ORDER_ACTIONS } from '../../constants/orders';\nimport { ACTIONS, URLS } from '../../constants/register_zbm_plaid';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { storageKey as ZBMPlaidKey } from '../../reducers/registration/zbmPlaid';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, fintechService, orderService, registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\n\nconst\n  defaultZBMPlaidData = { companyId: '' },\n  ZBMPlaidData = getReducerSnapshot(ZBMPlaidKey, defaultZBMPlaidData),\n  getCompanyUrl = () => {\n    if (ZBMPlaidData.companyId) {\n      return `/${COMPANY_URLS.BASE}/${ZBMPlaidData.companyId}`;\n    }\n    return `/${DASHBOARD_URLS.BASE}`;\n  },\n  go = (jump, dispatch, doReplace) => {\n    const\n      url = document.location.pathname.substring(URLS.BASE.length + 2) || URLS.START,\n      flowOrder = getFlow(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      document.location = getCompanyUrl();\n    } else if (jumpIndex >= flowOrder.length) {\n      document.location = `${getCompanyUrl()}/money`;\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch);\n    }\n  },\n  doReset = () => {\n    _assign(defaultZBMPlaidData, ZBMPlaidData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlow();\n\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const path = document.location.pathname,\n    idx = path.indexOf(URLS.BASE),\n    idx2 = idx + URLS.BASE.length + 2;\n\n  logger.logAction(ACTIONS.GO_BACK, { location: path.substring(idx2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const storePublicTokens = (dispatch, data, moveUrl = false) => {\n  set(dispatch, data, ACTIONS.SET_PLAID_PUBLIC_TOKENS, moveUrl);\n};\n\nexport const createHurdrlrOrder = (dispatch, data) => {\n  storePublicTokens(dispatch, data);\n  set(dispatch, data, ACTIONS.CREATE_HURDLR_ORDER, false);\n};\n\nexport const successLinking = (dispatch) => {\n  go(1, dispatch);\n};\n\nexport const setInit = (dispatch, data) => {\n  const { companyId } = data;\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  _assign(ZBMPlaidData, { companyId });\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(getEntryPoint());\n};\n\n\nexport const getPlaidLinkToken = (dispatch, plaidConfigLink) => {\n  logger.logAction(ACTIONS.GET_PLAID_LINK_TOKEN);\n  dispatch({\n    type: ACTIONS.GET_PLAID_LINK_TOKEN\n  });\n  accountService.getPlaidLinkToken(plaidConfigLink).then((response) => {\n    const { linkToken } = response;\n    logger.logAction(ACTIONS.GET_PLAID_LINK_TOKEN_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.GET_PLAID_LINK_TOKEN_COMPLETE,\n      payload: {\n        data: {\n          linkToken\n        }\n      }\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.GET_PLAID_LINK_TOKEN_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.GET_PLAID_LINK_TOKEN_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\n\nconst createZBMPlaidOrder = (dispatch, reducerData, accountId, filingFees) => {\n  registrationService.createZBMPlaid(reducerData, accountId, filingFees).then((response) => {\n    trackEvent('Purchase', 'complete', 'ZBM Plaid');\n    orderService.getOrders().then((response1) => {\n      const { data } = response;\n      logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        payload: {\n          data,\n          reducerData\n        }\n      });\n\n      logger.logAction(ORDER_ACTIONS.GET_ORDERS_COMPLETE, response1);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        payload: {\n          data: response1\n        }\n      });\n      go(1);\n    }).catch((err) => {\n      logger.error(ORDER_ACTIONS.GET_ORDERS_COMPLETE, err);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: err && err.errorCode ? err.errorCode : 3000\n        }\n      });\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, accountId, filingFees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  createZBMPlaidOrder(dispatch, reducerData, accountId, filingFees);\n};\n\n\nexport const getHurdlrSubscriptionTier = (dispatch) => {\n  logger.logAction(ACTIONS.GET_HURDLR_SUBSCRIPTION_TIER);\n  dispatch({\n    type: ACTIONS.GET_HURDLR_SUBSCRIPTION_TIER\n  });\n  fintechService.getHurdlrSubscriptionTier().then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.GET_HURDLR_SUBSCRIPTION_TIER_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.GET_HURDLR_SUBSCRIPTION_TIER_COMPLETE,\n      payload: {\n        data\n      }\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.GET_HURDLR_SUBSCRIPTION_TIER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.GET_HURDLR_SUBSCRIPTION_TIER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\n\nexport const setPlaidHurdlrLink = (dispatch, plaidPublicToken) => {\n  logger.logAction(ACTIONS.SET_PLAID_HURDLR_LINK);\n  dispatch({\n    type: ACTIONS.SET_PLAID_HURDLR_LINK\n  });\n  fintechService.setPlaidHurdlrLink(plaidPublicToken).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.SET_PLAID_HURDLR_LINK_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.SET_PLAID_HURDLR_LINK_COMPLETE,\n      payload: {\n        data\n      }\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.SET_PLAID_HURDLR_LINK_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.SET_PLAID_HURDLR_LINK_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const resetPlaidLink = (dispatch, redirectUrl, plaidAccessToken) => {\n  logger.logAction(ACTIONS.RESET_PLAID_LINK);\n  dispatch({\n    type: ACTIONS.RESET_PLAID_LINK\n  });\n  fintechService.resetPlaidLink(redirectUrl, plaidAccessToken).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.RESET_PLAID_LINK_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.RESET_PLAID_LINK_COMPLETE,\n      payload: {\n        data\n      }\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.RESET_PLAID_LINK_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.RESET_PLAID_LINK_COMPLETE,\n      error: true,\n      payload: {\n        error: err?.error || 'Server Error',\n        errorCode: err?.errorCode || 500\n      }\n    });\n  });\n};\n\nexport const plaidLinkRelink = (dispatch, plaidAccessToken) => {\n  logger.logAction(ACTIONS.PLAID_RELINK_LINK);\n  dispatch({\n    type: ACTIONS.PLAID_RELINK_LINK\n  });\n  fintechService.plaidLinkRelink(plaidAccessToken).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.PLAID_RELINK_LINK_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.PLAID_RELINK_LINK_COMPLETE,\n      payload: {\n        data\n      }\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.PLAID_RELINK_LINK_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.PLAID_RELINK_LINK_COMPLETE,\n      error: true,\n      payload: {\n        error: err?.error || 'Server Error',\n        errorCode: err?.errorCode ||  500\n      }\n    });\n  });\n};\n\n\nexport default {\n  getEntryPoint,\n  goBack,\n  setInit,\n  storePublicTokens,\n  resetAllData,\n  getPlaidLinkToken\n};\n","import { URLS } from '../../../constants/ettf_renewal';\n\n/* eslint-disable max-statements */\nconst\n  getFlowOrder = () => {\n    return [ URLS.CHOOSE_PLAN, URLS.CONFIRMATION ];\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegisterAccountingFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = () => {\n    return (flowTestMap[getRegisterAccountingFlowId()] || DefaultFlows).getFlowOrder();\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS, URLS } from '../../constants/ettf_renewal';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { storageKey as ettfRenewalKey } from '../../reducers/registration/ettfRenewal';\nimport logger from '../../utils/ClientLogger';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { fintechService, accountService } from '../../services';\n\nconst\n  defaultEttfRenewalData = { companyId: '' },\n  ettfRenewalData = getReducerSnapshot(ettfRenewalKey, defaultEttfRenewalData),\n  getCompanyUrl = () => {\n    if (ettfRenewalData.companyId) {\n      return `/${COMPANY_URLS.BASE}/${ettfRenewalData.companyId}`;\n    }\n    return `/${DASHBOARD_URLS.BASE}`;\n  },\n  go = (jump, dispatch, doReplace) => {\n    const\n      url = document.location.pathname.substring(URLS.BASE.length + 2) || URLS.START,\n      flowOrder = getFlow(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      document.location = getCompanyUrl();\n    } else if (jumpIndex >= flowOrder.length) {\n      document.location = getCompanyUrl();\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch);\n    }\n  },\n  doReset = () => {\n    _assign(ettfRenewalData, defaultEttfRenewalData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlow();\n\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const path = document.location.pathname,\n    idx = path.indexOf(URLS.BASE),\n    idx2 = idx + URLS.BASE.length + 2;\n\n  logger.logAction(ACTIONS.GO_BACK, { location: path.substring(idx2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const setInit = async (dispatch, data) => {\n  try {\n    const paymentResponse = await accountService.getPaymentMethods(dispatch);\n    const orderTaskMigrationServicesResponse = await fintechService.getOrderTaskMigrationServices(data);\n\n    let lastFour = '';\n    const {\n      default_source: defaultSource,\n      sources = [{}]\n    } = paymentResponse;\n    lastFour = sources.find((source) => { return source.id === defaultSource; }).last4 || '';\n\n    const { companyId, termEndDate } = data;\n    doReset();\n    setAppEntryPoint(dispatch, true);\n\n    set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n    _assign(ettfRenewalData, { companyId });\n\n    set(\n      dispatch,\n      {\n        ...data,\n        lastFour,\n        planData: orderTaskMigrationServicesResponse.data.planData,\n        termEndDate: new Date(termEndDate).toDateString()\n      },\n      ACTIONS.INIT,\n      false\n    );\n\n    browserHistory.replace(getEntryPoint());\n  } catch (err) {\n    set(dispatch, {\n      error: err && err.error ? err.error : 'Server Error',\n      errorCode: err && err.errorCode ? err.errorCode : 500\n    }, ACTIONS.MIGRATE_MONEY_PLAN_COMPLETE, false);\n  }\n};\n\nexport const setChoosePlan = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.CHOOSE_PLAN, true);\n};\n\nexport const migrateMoneyPlan = (dispatch, {\n  couponUuid,\n  orderTaskUuid,\n  plan,\n  planData,\n  term\n}) => {\n  logger.logAction(ACTIONS.MIGRATE_MONEY_PLAN);\n  dispatch({\n    type: ACTIONS.MIGRATE_MONEY_PLAN\n  });\n  fintechService.migrateMoneyPlan({\n    couponUuid,\n    orderTaskUuid,\n    plan,\n    planData,\n    term\n  }).then((response) => {\n    set(dispatch, { ...response, plan }, ACTIONS.MIGRATE_MONEY_PLAN_COMPLETE, true);\n  }).catch((err) => {\n    set(dispatch, {\n      error: err && err.error ? err.error : 'Server Error',\n      errorCode: err && err.errorCode ? err.errorCode : 500\n    }, ACTIONS.MIGRATE_MONEY_PLAN_COMPLETE, false);\n  });\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, {}, ACTIONS.COMPLETE, data.redirect);\n};\n\n\nexport default {\n  getEntryPoint,\n  goBack,\n  setInit,\n  setChoosePlan,\n  resetAllData,\n  migrateMoneyPlan,\n  setComplete\n};\n","import { URLS } from '../../../constants/register_zb_banking_preferred';\n\nconst\n  getFlowOrder = () => {\n    return [ URLS.PAYMENT ];\n  };\n\nexport default {\n  getFlowOrder\n};\n","import { getRegisterAccountingFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegisterAccountingFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport { setAppEntryPoint } from '../initialization';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS as ORDER_ACTIONS } from '../../constants/orders';\nimport { ACTIONS, URLS } from '../../constants/register_zb_banking_preferred';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport { storageKey as zbBankingPreferredKey } from '../../reducers/registration/zbBankingPreferred';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, orderService, registrationService } from '../../services';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport getFlow from './flows';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\nimport { setIsFreeAccount } from '../../utils/FreeAccountUtils';\n\nconst defaultBusinessData = { isSimulated: false };\n\nconst\n  defaultData = { companyId: '', companyCount: 0 },\n  zbBankingPreferredData = getReducerSnapshot(zbBankingPreferredKey, defaultData),\n  businessData = getReducerSnapshot(businessKey, defaultBusinessData),\n  getFlowOrder = (url) => {\n    const registration = {\n      zbBankingPreferred: zbBankingPreferredData,\n      business: businessData\n    };\n\n    return getFlow(url, registration);\n  },\n  getCompanyUrl = () => {\n    if (zbBankingPreferredData.companyId) {\n      return `/${COMPANY_URLS.BASE}/${zbBankingPreferredData.companyId}`;\n    }\n    return `/${DASHBOARD_URLS.BASE}`;\n  },\n  go = (jump, dispatch, doReplace) => {\n    const\n      url = document.location.pathname.substring(URLS.BASE.length + 2) || URLS.INIT,\n      flowOrder = getFlowOrder(url),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n\n    if (jumpIndex < 0) {\n      document.location = getCompanyUrl();\n    } else if (jumpIndex >= flowOrder.length) {\n      document.location = zbBankingPreferredData.returnTo ? zbBankingPreferredData.returnTo : getCompanyUrl();\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n  set = (dispatch, data, actionKey, moveUrl) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, dispatch);\n    }\n  },\n  doReset = () => {\n    _assign(zbBankingPreferredData, defaultData);\n  };\n\nexport const getEntryPoint = () => {\n  const flowOrder = getFlowOrder('');\n\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const path = document.location.pathname,\n    idx = path.indexOf(URLS.BASE),\n    idx2 = idx + URLS.BASE.length + 2;\n\n  logger.logAction(ACTIONS.GO_BACK, { location: path.substring(idx2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  go(-1, dispatch);\n};\n\nexport const resetAllData = (dispatch) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET\n  });\n};\n\nexport const setChooseCompany = (dispatch, data) => {\n  const { companyId } = data;\n  _assign(zbBankingPreferredData, { companyId });\n  set(dispatch, data, ACTIONS.CHOOSE_COMPANY, true);\n};\n\nexport const setComplete = (dispatch, data) => {\n  const { companyId } = data;\n\n  set(dispatch, { companyId }, ACTIONS.COMPLETE, data.redirect);\n};\n\nexport const setInit = (dispatch, data) => {\n  const { companyId, companyCount } = data;\n  businessData.isSimulated = data.isSimulated;\n  setIsFreeAccount(data.isSimulated);\n  zbBankingPreferredData.returnTo = data.returnTo;\n  doReset();\n  setAppEntryPoint(dispatch, true);\n  set(dispatch, {}, REGISTRATION_ACTIONS.RESET, false);\n  _assign(zbBankingPreferredData, { companyId, companyCount });\n  set(dispatch, data, ACTIONS.INIT, false);\n  browserHistory.replace(`/${URLS.BASE}/${URLS.PAYMENT}`);\n};\n\nexport const setPayment = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setStart = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.START, true);\n};\n\nconst createZbBankingPreferredOrder = (dispatch, reducerData, accountId, filingFees) => {\n  registrationService.createZbBankingPreferred(reducerData, accountId, filingFees).then((response) => {\n    trackEvent('Purchase', 'complete', 'Zb Banking Preferred');\n    orderService.getOrders().then((response1) => {\n      const { data } = response;\n      logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        payload: {\n          data,\n          reducerData\n        }\n      });\n\n      logger.logAction(ORDER_ACTIONS.GET_ORDERS_COMPLETE, response1);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        payload: {\n          data: response1\n        }\n      });\n      // previous functionality\n      // go(1);\n\n      // Customized: Redirect to banking-ui awaiting verification state\n      window.location.replace(`/d/b/${zbBankingPreferredData.companyId}/dashboard?modal=application-received`);\n    }).catch((err) => {\n      logger.error(ORDER_ACTIONS.GET_ORDERS_COMPLETE, err);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: err && err.errorCode ? err.errorCode : 3000\n        }\n      });\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, accountId, filingFees) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { zbBankingPreferred } = reducerData,\n    { expMonth, expYear, cvc, cardToken, brand, last4 } = zbBankingPreferred;\n  if (!cardToken) {\n    createZbBankingPreferredOrder(dispatch, reducerData, accountId, filingFees);\n  } else {\n    const data = { expMonth, expYear, cvc, isDefault: true, card_token: cardToken, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createZbBankingPreferredOrder(dispatch, reducerData, accountId, filingFees);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const orderAlreadyCreated = (dispatch, data) => {\n  set(dispatch, {}, ACTIONS.COMPLETE, data.redirect);\n  // previous functionality\n  // go(1);\n\n  // Customized: Redirect to banking-ui dashboard\n  window.location.replace(`/d/b/${zbBankingPreferredData.companyId}/dashboard`);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  orderAlreadyCreated,\n  setChooseCompany,\n  setComplete,\n  setInit,\n  setPayment,\n  setStart,\n  resetAllData\n};\n","import { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { ACTIONS as ORDER_ACTIONS } from '../../constants/orders';\nimport { ACTIONS } from '../../constants/register_initialcpascreening';\nimport logger from '../../utils/ClientLogger';\nimport { orderService, registrationService } from '../../services';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\n\nexport const createOrder = (dispatch, jurisdiction, companyId, accountId, returnTo) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER,\n    payload: {\n      data: {\n        jurisdiction,\n        companyId,\n        accountId\n      }\n    }\n  });\n\n  registrationService.createInitialCPAScreening(jurisdiction, companyId, accountId).then((response) => {\n    trackEvent('Purchase', 'complete', 'Initial CPA Screening');\n    orderService.getOrders().then((response1) => {\n      const { data } = response;\n      logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        payload: {\n          data,\n          jurisdiction,\n          companyId\n        }\n      });\n\n      logger.logAction(ORDER_ACTIONS.GET_ORDERS_COMPLETE, response1);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        payload: {\n          data: response1\n        }\n      });\n      document.location = returnTo || `/${COMPANY_URLS.BASE}/${companyId}/orders`;\n    }).catch((err) => {\n      logger.error(ORDER_ACTIONS.GET_ORDERS_COMPLETE, err);\n      dispatch({\n        type: ORDER_ACTIONS.GET_ORDERS_COMPLETE,\n        error: true,\n        payload: {\n          errorCode: err && err.errorCode ? err.errorCode : 3000\n        }\n      });\n    });\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport default {\n  createOrder\n};\n","import _some from 'lodash/some';\nimport _flattenDeep from 'lodash/flattenDeep';\nimport { URLS } from '../../../constants/purchase_post_addons';\nimport {\n  isBusinessLicenseEnabled, isFutureFileDateEnabled, isCorporateDocsEnabled, isWFGInitialReportEnabled,\n  isBusinessKitEnabled, getPostPurchaseVanityProduct\n} from '../../../utils/ProductService';\nimport { noBankingOfferFlows } from '../../../utils/OrderUtils';\n\nconst\n  getBLRFlow = (url, registration) => {\n    const\n      { blr, purchase, postpurchase } = registration,\n      { ein: purchaseEIN } = purchase,\n      { purchaseBLR } = postpurchase,\n      flowItems = !purchase.blr ? [URLS.PURCHASE_BLR] : [];\n\n    if (!purchase.blr && !purchaseBLR) {\n      return flowItems;\n    }\n\n    const\n      { hasEmployees } = blr;\n\n    flowItems.push(\n      URLS.BLR_START,\n      URLS.BLR_BUS_AT_HOME,\n      URLS.BLR_BUS_INDUSTRY\n    );\n\n    if (!purchaseEIN) {\n      flowItems.push(URLS.BLR_HAS_EMPLOYEES);\n      if (url === URLS.BLR_EMPL_COUNT || hasEmployees) {\n        flowItems.push(URLS.BLR_EMPL_COUNT);\n      }\n      flowItems.push(URLS.BLR_HAS_DBAS);\n    }\n    flowItems.push(URLS.BLR_DATA_CONFIRM);\n    return flowItems;\n  },\n\n  /* eslint-disable max-statements */\n  getFlowOrder = (url, registration) => {\n    const { lead, postpurchase, business, initialization, purchase } = registration,\n      { feedbackSource, purchaseBLR, purchaseBusinessKit, purchaseFFD, purchaseCD, purchaseWFGIR, purchaseDBAEntity, flowType,\n        purchaseVBA, purchaseVanityProduct, showCD, purchaseBankOfAmericaOffer, purchaseZBMPro, showZBMPro, purchaseZbBankingPreferredOffer } = postpurchase,\n      { purchaseZBMPro: hasPurchasedZBMPro, zbBankingPreferred: hasPurchasedBankingPreferred } = purchase,\n      { requestedJurisdiction, type } = business,\n      { filingFees, expediteFees } = initialization,\n      isStateClosed = expediteFees[requestedJurisdiction] ? expediteFees[requestedJurisdiction].standard.delayed : false,\n      wfgirData = filingFees[requestedJurisdiction] ? filingFees[requestedJurisdiction].wfg_initial_report : null,\n      showWFGIR = !!wfgirData && !!wfgirData[type === 'CORP' ? 'corp' : 'llc'],\n      stackedFlowItems = [],\n      showBanking = !noBankingOfferFlows.includes(flowType);\n\n    const vanityProduct = getPostPurchaseVanityProduct(requestedJurisdiction);\n\n    const potentialAfterPaymentUrls = [\n      vanityProduct && purchaseVanityProduct && URLS.VANITY_PRODUCT_NOTICE,\n      URLS.SHARE,\n      URLS.COMPLETE\n    ].filter((el) => { return el; });\n    if (potentialAfterPaymentUrls.includes(url)) {\n      return potentialAfterPaymentUrls;\n    }\n\n    let vanityForward = 0;\n\n    if (showBanking && !hasPurchasedBankingPreferred) {\n      stackedFlowItems.push(URLS.PURCHASE_BANKING_OFFER);\n    }\n\n    // showZBMPro is true if ZBMPro upsell in postpurchase is enabled AND customer does not have an active ZBMP subscription\n    // hasPurchasedZBMPro will be true if customer purchased ZBMPro with formation for this business entity\n    if (showZBMPro && !hasPurchasedZBMPro) {\n      stackedFlowItems.push(URLS.PURCHASE_ZBMPRO);\n      vanityForward += 1;\n    }\n    if (isBusinessKitEnabled()) {\n      stackedFlowItems.push(URLS.PURCHASE_BUSINESSKIT);\n    }\n    if (isBusinessLicenseEnabled()) {\n      const blrItems = getBLRFlow(url, registration);\n      if (blrItems) {\n        vanityForward += 1;\n      }\n      stackedFlowItems.push(blrItems);\n    }\n    if ((!isStateClosed && isFutureFileDateEnabled()) || url === URLS.PURCHASE_FFD || url === URLS.FUTURE_FILING_DATE) {\n      stackedFlowItems.push(URLS.PURCHASE_FFD);\n      if (purchaseFFD) {\n        vanityForward += 1;\n        stackedFlowItems.push(URLS.FUTURE_FILING_DATE);\n      }\n    }\n    if (isCorporateDocsEnabled() && showCD) {\n      stackedFlowItems.push(URLS.PURCHASE_CD);\n    }\n    if (isWFGInitialReportEnabled() && showWFGIR) {\n      stackedFlowItems.push(URLS.PURCHASE_WFGIR);\n    }\n    /*\n    if (isExpenseTrackingWithTaxFilingEnabled()) {\n      stackedFlowItems.push(URLS.EXPENSE_TRACKER_AND_TAX_FILING);\n    }\n    */\n\n    if (vanityProduct) {\n      stackedFlowItems.splice(vanityProduct.flowPosition + vanityForward, 0, URLS.VANITY_PRODUCT_OFFER);\n    }\n\n    if (!feedbackSource && !lead.feedbackSource && lead.leadUUID) {\n      stackedFlowItems.push(URLS.PURCHASE_FEEDBACK);\n    }\n\n    const addedAnything = _some([\n      purchaseBLR,\n      purchaseBusinessKit,\n      purchaseDBAEntity,\n      purchaseFFD,\n      purchaseCD,\n      purchaseWFGIR,\n      purchaseZBMPro,\n      purchaseVBA,\n      vanityProduct && purchaseVanityProduct,\n      purchaseBankOfAmericaOffer,\n      purchaseZbBankingPreferredOffer\n    ], Boolean);\n\n    if (addedAnything || url === URLS.PAYMENT) {\n      stackedFlowItems.push(URLS.PAYMENT);\n    } else {\n      stackedFlowItems.push(URLS.MARK_COMPLETE);\n    }\n\n    if (vanityProduct && purchaseVanityProduct) {\n      stackedFlowItems.push(URLS.VANITY_PRODUCT_NOTICE);\n    }\n\n    stackedFlowItems.push(URLS.COMPLETE);\n    const flowItems = _flattenDeep(stackedFlowItems);\n    return flowItems;\n  };\n/* eslint-enable max-statements */\n\nexport default {\n  getFlowOrder\n};\n","import { getRegistrationFlowId } from '../../../utils/FlowService';\n\nimport DefaultFlows from './default';\n\nconst\n  flowTestMap = {\n    default: DefaultFlows\n  },\n  getFlowOrder = (url, registration) => {\n    return (flowTestMap[getRegistrationFlowId()] || DefaultFlows).getFlowOrder(url, registration);\n  };\n\nexport default getFlowOrder;\n","import _assign from 'lodash/assign';\nimport _indexOf from 'lodash/indexOf';\nimport { browserHistory } from 'react-router';\n\nimport getFlow from './flows';\nimport { getEntryPoint as getCorpEntryPoint } from '../complete_corp';\nimport { getEntryPoint as getEINEntryPoint } from '../complete_ein';\nimport { getEntryPoint as getLLCEntryPoint } from '../complete_llc';\nimport { ACTIONS as ACCOUNT_ACTIONS } from '../../constants/account';\nimport { URLS as COMPANY_URLS } from '../../constants/companies';\nimport { URLS as DASHBOARD_URLS } from '../../constants/dashboard';\nimport { ACTIONS, URLS } from '../../constants/purchase_post_addons';\nimport { ACTIONS as REGISTRATION_ACTIONS } from '../../constants/registration';\nimport logger from '../../utils/ClientLogger';\nimport { accountService, orderService, registrationService } from '../../services';\nimport { storageKey as initializationKey } from '../../reducers/initialization/fees';\nimport { storageKey as leadKey } from '../../reducers/registration/lead';\nimport { storageKey as blrKey } from '../../reducers/registration/blr';\nimport { storageKey as businessKey } from '../../reducers/registration/business';\nimport { storageKey as postpurchaseKey } from '../../reducers/registration/postpurchase';\nimport { storageKey as feedbackKey } from '../../reducers/registration/feedback';\nimport { storageKey as purchaseKey } from '../../reducers/registration/purchase';\nimport { getReducerSnapshot } from '../../utils/ReducerStorage';\nimport { trackEvent } from '../../utils/ThirdPartyTracking';\nimport { updateLead } from '../register_ein';\nimport { getPostPurchaseVanityProduct } from '../../utils/ProductService';\n\nconst\n  defaultInitializationData = { expediteFees: {} },\n  initializationData = getReducerSnapshot(initializationKey, defaultInitializationData),\n  defaultBlrData = { existingCompany: false, skipBLR: false },\n  blrData = getReducerSnapshot(blrKey, defaultBlrData),\n  defaultBusinessData = { requestedJurisdiction: '', type: 'LLCX', id: '' },\n  businessData = getReducerSnapshot(businessKey, defaultBusinessData),\n  defaultLeadData = {},\n  leadData = getReducerSnapshot(leadKey, defaultLeadData),\n  //add purchase BLR\n  defaultPostpurchaseData = {\n    purchaseZbBankingPreferredOffer: false,\n    purchaseBankOfAmericaOffer: null,\n    purchaseFFD: false,\n    purchaseCD: false,\n    purchaseWFGIR: false,\n    purchaseDBAEntity: false,\n    purchaseExpenseTrackerAndTaxFiling: false,\n    purchaseZBMPro: false,\n    purchaseVBA: false,\n    showCD: true,\n    showZBMPro: true,\n    flowType: ''\n  },\n  postpurchaseData = getReducerSnapshot(postpurchaseKey, defaultPostpurchaseData),\n  defaultFeedbackData = { feedbackSource: '', feedbackOther: '' },\n  feedbackData = getReducerSnapshot(feedbackKey, defaultFeedbackData),\n  purchaseData = getReducerSnapshot(purchaseKey, { ein: null, domainName: null }),\n\n  getFlowOrder = (url, lead) => {\n    const\n      registration = {\n        lead: lead || leadData,\n        initialization: initializationData,\n        blr: blrData,\n        business: businessData,\n        purchase: purchaseData,\n        postpurchase: postpurchaseData\n      },\n      flow = getFlow(url, registration);\n\n    return flow;\n  },\n\n  /* eslint-disable max-statements */\n  getBackUrl = () => {\n    _assign(purchaseData, getReducerSnapshot(purchaseKey, { ein: null, domainName: null }));\n\n    const\n      { ein } = purchaseData,\n      { type } = businessData;\n\n    if (ein) {\n      return getEINEntryPoint(true);\n    }\n    if (type === 'LLCX') {\n      return getLLCEntryPoint(true);\n    }\n    return getCorpEntryPoint();\n  },\n  /* eslint-enable max-statements */\n\n  go = (jump, doReplace, lead) => {\n    const url = document.location.pathname.substring(URLS.BASE.length + 2),\n      flowOrder = getFlowOrder(url, lead),\n      index = _indexOf(flowOrder, url),\n      jumpIndex = index >= 0 ? index + jump : index,\n      method = doReplace ? browserHistory.replace : browserHistory.push;\n    if (jumpIndex < 0) {\n      browserHistory.push(getBackUrl());\n    } else if (jumpIndex >= flowOrder.length) {\n      if (businessData.id) {\n        // Redirect to zb banking preferred application initialization if\n        // customer has purchased the zb banking preferred offer\n        if (postpurchaseData.purchaseZbBankingPreferredOffer || purchaseData.zbBankingPreferred) {\n          document.location = `/d/b/${businessData.id}/dashboard?modal=application-init`;\n          return;\n        }\n        document.location = `/${COMPANY_URLS.BASE}/${businessData.id}`;\n      } else {\n        document.location = `/${DASHBOARD_URLS.BASE}`;\n      }\n    } else {\n      method(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n  },\n\n  set = (dispatch, data, actionKey, moveUrl, doReplace) => {\n    logger.logAction(actionKey, data);\n    dispatch({\n      type: actionKey,\n      payload: {\n        data\n      }\n    });\n    if (moveUrl) {\n      go(1, doReplace);\n    }\n  };\n\nexport const getEntryPoint = () => {\n  _assign(blrData, getReducerSnapshot(blrKey, defaultBlrData));\n  _assign(businessData, getReducerSnapshot(businessKey, defaultBusinessData));\n  _assign(initializationData, getReducerSnapshot(initializationKey, defaultInitializationData));\n  _assign(purchaseData, getReducerSnapshot(purchaseKey, { ein: null, domainName: null }));\n  _assign(postpurchaseData, getReducerSnapshot(postpurchaseKey, defaultPostpurchaseData));\n\n  const flowOrder = getFlowOrder('');\n  return `/${URLS.BASE}/${flowOrder[0]}`;\n};\n\nexport const goBack = (dispatch) => {\n  const { skipBLR } = getReducerSnapshot(blrKey, defaultBlrData);\n  const location = document.location.pathname.substring(URLS.BASE.length + 2);\n  logger.logAction(ACTIONS.GO_BACK, { location: document.location.pathname.substring(URLS.BASE.length + 2) });\n  dispatch({\n    type: ACTIONS.GO_BACK\n  });\n  if (skipBLR && location === URLS.PURCHASE_FFD) {\n    const flowOrder = getFlowOrder(location);\n    const index = _indexOf(flowOrder, location);\n    const lastToBack = _indexOf(flowOrder, URLS.BLR_START);\n    go(lastToBack - index);\n  } else {\n    go(-1);\n  }\n};\n\nexport const goNext = (lead) => {\n  go(1, undefined, lead);\n};\n\nexport const resetAllData = (dispatch, data) => {\n  logger.logAction(ACTIONS.RESET);\n\n  dispatch({\n    type: ACTIONS.RESET,\n    payload: {\n      data: data || {}\n    }\n  });\n};\n\nexport const getNextUncompletedPage = (dispatch, location) => {\n  _assign(blrData, getReducerSnapshot(blrKey, defaultBlrData));\n  _assign(businessData, getReducerSnapshot(businessKey, defaultBusinessData));\n  _assign(initializationData, getReducerSnapshot(initializationKey, defaultInitializationData));\n  _assign(postpurchaseData, getReducerSnapshot(postpurchaseKey, defaultPostpurchaseData));\n  _assign(purchaseData, getReducerSnapshot(purchaseKey, { ein: null, domainName: null }));\n\n  const\n    flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index + 1;\n\n  if (index >= 0) {\n    if (jumpIndex >= flowOrder.length) {\n      if (businessData.id) {\n        return { isDashboard: true, url: `/${COMPANY_URLS.BASE}/${businessData.id}` };\n      }\n      return { isDashboard: true, url: `/${DASHBOARD_URLS.BASE}` };\n    }\n    return { isDasboard: false, url: `/${URLS.BASE}/${flowOrder[jumpIndex]}` };\n  }\n\n  return { isDashboard: false, url: '' };\n};\n\nexport const goToNextUncompletedPage = (dispatch, location) => {\n  _assign(blrData, getReducerSnapshot(blrKey, defaultBlrData));\n  _assign(businessData, getReducerSnapshot(businessKey, defaultBusinessData));\n  _assign(initializationData, getReducerSnapshot(initializationKey, defaultInitializationData));\n  _assign(postpurchaseData, getReducerSnapshot(postpurchaseKey, defaultPostpurchaseData));\n  _assign(purchaseData, getReducerSnapshot(purchaseKey, { ein: null, domainName: null }));\n\n  const\n    flowOrder = getFlowOrder(location),\n    index = _indexOf(flowOrder, location),\n    jumpIndex = index + 1;\n\n  if (index >= 0) {\n    if (jumpIndex >= flowOrder.length) {\n      if (businessData.id) {\n        document.location = `/${COMPANY_URLS.BASE}/${businessData.id}`;\n      } else {\n        document.location = `/${DASHBOARD_URLS.BASE}`;\n      }\n    } else {\n      browserHistory.push(`/${URLS.BASE}/${flowOrder[jumpIndex]}`);\n    }\n    return true;\n  }\n\n  return false;\n};\n\nexport const goToShare = () => {\n  browserHistory.push(`/${URLS.BASE}/${URLS.SHARE}`);\n};\n\nexport const setBLRBusinessIndustry = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BLR_BUS_INDUSTRY, false);\n};\n\nexport const setBLRBusinessOutOfHome = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BLR_BUS_AT_HOME, false);\n};\n\nexport const setBLRDataConfirmation = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BLR_DATA_CONFIRM, false);\n};\n\nexport const setBLREmployeesCount = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BLR_EMPL_COUNT, false);\n};\n\nexport const setBLRHasDBAs = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BLR_HAS_DBAS, false);\n};\n\nexport const setBLRHasEmployees = (dispatch, data) => {\n  blrData.hasEmployees = data.hasEmployees;\n  set(dispatch, data, ACTIONS.BLR_HAS_EMPLOYEES, false);\n};\n\nexport const setBLRLicenseDataModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.BLR_LIC_DATA_MODAL, false);\n};\n\nexport const setBLRStart = (dispatch, data) => {\n  _assign(purchaseData, getReducerSnapshot(purchaseKey, { ein: null, domainName: null }));\n  set(dispatch, data, ACTIONS.BLR_START, false);\n};\n\nexport const setPurchaseBLR = (dispatch, data) => {\n  postpurchaseData.purchaseBLR = data.purchaseBLR;\n  set(dispatch, data, ACTIONS.PURCHASE_BLR, false, data.doReplace || false);\n};\n\nconst updateOrderTaskStatus = (dispatch, blrOrderTaskUuid, status, subStatus, skip) => {\n  orderService.updateOrderTaskStatus(\n    blrOrderTaskUuid,\n    status,\n    subStatus\n  ).then(() => {\n    set(dispatch, ACTIONS.BLR_SKIP, skip);\n  }).catch((err) => {\n    set(dispatch, {\n      error: err && err.error ? err.error : 'Server Error',\n      errorCode: err && err.errorCode ? err.errorCode : 500\n    }, ACTIONS.BLR_SKIP, !skip);\n  });\n};\n\nexport const setSkipBLR = (dispatch, data) => {\n  const { blrOrderTaskUuid, skipBLR } = data;\n  let status = '';\n  let subStatus = '';\n  logger.logAction(ACTIONS.BLR_SKIP, data);\n  dispatch({\n    type: ACTIONS.BLR_SKIP\n  });\n  if (skipBLR) {\n    status = 'pending';\n    subStatus = 'fulfillment hold';\n    updateOrderTaskStatus(dispatch, blrOrderTaskUuid, status, subStatus, true);\n    const ffdURL = `/${URLS.BASE}/purchase-ffd`;\n    browserHistory.push(ffdURL);\n  } else {\n    if (blrData.skipBLR) {\n      status = 'incomplete';\n      subStatus = '';\n      updateOrderTaskStatus(dispatch, blrOrderTaskUuid, status, subStatus, false);\n    }\n    set(dispatch, ACTIONS.BLR_SKIP, false);\n  }\n};\n\nexport const setPurchaseBusinessKit = (dispatch, data) => {\n  postpurchaseData.purchaseBusinessKit = data.purchaseBusinessKit;\n  set(dispatch, data, ACTIONS.PURCHASE_BUSINESSKIT, false, data.doReplace || false);\n};\n\nexport const setPurchaseFFD = (dispatch, data) => {\n  postpurchaseData.purchaseFFD = data.purchaseFFD;\n  set(dispatch, data, ACTIONS.PURCHASE_FFD, false, data.doReplace || false);\n};\n\nexport const setZbBankingPreferred = ( dispatch, data ) => {\n  postpurchaseData.purchaseZbBankingPreferredOffer = data.purchaseZbBankingPreferredOffer;\n  set(dispatch, data, ACTIONS.PURCHASE_BANKING_PREFERRED_OFFER, false);\n};\n\nexport const setBankOfAmericaOffer = ( dispatch, data ) => {\n  postpurchaseData.purchaseBankOfAmericaOffer = data.purchaseBankOfAmericaOffer;\n  set(dispatch, data, ACTIONS.PURCHASE_BOA_OFFER, false);\n};\n\nexport const setPurchaseCD = (dispatch, data) => {\n  postpurchaseData.purchaseCD = data.purchaseCD;\n  set(dispatch, data, ACTIONS.PURCHASE_CD, false, data.doReplace || false);\n};\n\nexport const setPurchaseWFGIR = (dispatch, data) => {\n  postpurchaseData.purchaseWFGIR = data.purchaseWFGIR;\n  set(dispatch, data, ACTIONS.PURCHASE_WFGIR, false, data.doReplace || false);\n};\n\nexport const setPurchaseZBMPro = (dispatch, data) => {\n  postpurchaseData.purchaseZBMPro = data.purchaseZBMPro;\n  set(dispatch, data, ACTIONS.PURCHASE_ZBMPRO, false, data.doReplace || false);\n};\n\nexport const setPurchaseExpenseTrackerAndTaxFiling = (dispatch, data) => {\n  postpurchaseData.purchaseExpenseTrackerAndTaxFiling = data.purchaseExpenseTrackerAndTaxFiling;\n  set(dispatch, data, ACTIONS.PURCHASE_EXPENSE_TRACKING_AND_TAX_FILING, true, data.doReplace || false);\n};\n\nexport const setFeedback = (dispatch, data, leadSourceData) => {\n  updateLead(dispatch, {\n    ...leadSourceData,\n    how_did_you_hear_about_us: data.feedbackSource,\n    how_did_you_hear_about_us_other: data.feedbackOther\n  }, leadSourceData.lead_uuid);\n\n  feedbackData.feedbackSource = data.feedbackSource;\n  feedbackData.feedbackOther = data.feedbackOther;\n  set(dispatch, data, ACTIONS.PURCHASE_FEEDBACK, false, data.doReplace || false);\n};\n\nexport const setFutureFilingDate = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.FUTURE_FILING_DATE, false);\n};\n\nexport const setFFDDataModal = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.FFD_DATA_MODAL, false);\n};\n\nexport const setPurchaseVanityProduct = (dispatch, data) => {\n  postpurchaseData.purchaseVanityProduct = data.purchaseVanityProduct;\n  set(dispatch, data, ACTIONS.VANITY_PRODUCT_OFFER, false);\n};\n\nexport const setMarkComplete = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.MARK_COMPLETE, data.forward || false);\n};\n\nexport const setPayment = (dispatch, data) => {\n  const {\n    purchaseBankOfAmericaOffer,\n    purchaseBLR,\n    purchaseBusinessKit,\n    purchaseCD,\n    purchaseExpenseTrackerAndTaxFiling,\n    purchaseFFD,\n    purchaseVanityProduct,\n    purchaseVBA,\n    purchaseWFGIR,\n    purchaseZbBankingPreferredOffer,\n    purchaseZBMPro\n  } = data;\n\n  postpurchaseData.purchaseBLR = purchaseBLR;\n  postpurchaseData.purchaseBusinessKit = purchaseBusinessKit;\n  postpurchaseData.purchaseFFD = purchaseFFD;\n  postpurchaseData.purchaseCD = purchaseCD;\n  postpurchaseData.purchaseWFGIR = purchaseWFGIR;\n  postpurchaseData.purchaseExpenseTrackerAndTaxFiling = purchaseExpenseTrackerAndTaxFiling;\n  postpurchaseData.purchaseZBMPro = purchaseZBMPro;\n  postpurchaseData.purchaseVBA = purchaseVBA;\n  postpurchaseData.purchaseVanityProduct = getPostPurchaseVanityProduct() && purchaseVanityProduct;\n  postpurchaseData.purchaseBankOfAmericaOffer = purchaseBankOfAmericaOffer;\n  postpurchaseData.purchaseZbBankingPreferredOffer = purchaseZbBankingPreferredOffer;\n  set(dispatch, data, ACTIONS.PAYMENT, false);\n};\n\nexport const setPaymentComplete = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.PAYMENT_COMPLETE, true);\n};\n\nexport const setShare = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.SHARE, true);\n  logger.logAction(REGISTRATION_ACTIONS.PURCHASE_SUCCESS, data);\n  dispatch({\n    type: REGISTRATION_ACTIONS.PURCHASE_SUCCESS,\n    payload: {\n      data\n    }\n  });\n};\n\nexport const setComplete = (dispatch, data) => {\n  set(dispatch, data, ACTIONS.COMPLETE, true);\n};\n\nexport const setEstimatedFormationDate = (dispatch, data) => {\n  logger.logAction(ACTIONS.EST_DATE, data);\n  dispatch({\n    type: ACTIONS.EST_DATE,\n    payload: {\n      data\n    }\n  });\n};\n\nconst createPostPurchaseOrder = (dispatch, reducerData, fees, advance) => {\n\n  registrationService.createPostPurchase(reducerData, fees).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.CREATE_ORDER_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      payload: {\n        data,\n        reducerData\n      }\n    });\n\n    trackEvent('Purchase', 'complete', 'Post Purchase');\n    if (advance) {\n      go(1);\n    }\n  }).catch((err) => {\n    logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.CREATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const createOrder = (dispatch, reducerData, fees, expediteFees, advance) => {\n  logger.logAction(ACTIONS.CREATE_ORDER);\n  dispatch({\n    type: ACTIONS.CREATE_ORDER\n  });\n  // Here, determine if a new card needs to be created. If so, create the new card.\n  const { postpurchase } = reducerData,\n    { expMonth, expYear, cvc, cardToken, brand, last4 } = postpurchase;\n\n  if (!cardToken) {\n    createPostPurchaseOrder(dispatch, reducerData, fees, advance);\n  } else {\n    const data = { card_token: cardToken, expMonth, expYear, cvc, isDefault: true, brand, last4 };\n    accountService.addPaymentMethodV2(data).then((response) => {\n      const mergedData = _assign({}, response.data, data);\n      logger.logAction(ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE, mergedData);\n      dispatch({\n        type: ACCOUNT_ACTIONS.ADD_PAYMENT_METHOD_COMPLETE,\n        payload: {\n          data: mergedData\n        }\n      });\n      createPostPurchaseOrder(dispatch, reducerData, fees, advance);\n    }).catch((err) => {\n      logger.error(ACTIONS.CREATE_ORDER_COMPLETE, err);\n      dispatch({\n        type: ACTIONS.CREATE_ORDER_COMPLETE,\n        error: true,\n        payload: {\n          error: err && err.error ? err.error : 'Server Error',\n          errorCode: err && err.errorCode ? err.errorCode : 500\n        }\n      });\n    });\n  }\n};\n\nexport const updateOrder = (dispatch, reducerData, filingFees, advance) => {\n  const { lead } = reducerData;\n  logger.logAction(ACTIONS.UPDATE_ORDER);\n  dispatch({\n    type: ACTIONS.UPDATE_ORDER\n  });\n  registrationService[reducerData.business.type === 'CORP' ? 'updateCorp' : 'updateLLC'](reducerData, filingFees).then((response) => {\n    const { data } = response;\n    logger.logAction(ACTIONS.UPDATE_ORDER_COMPLETE, response);\n    dispatch({\n      type: ACTIONS.UPDATE_ORDER_COMPLETE,\n      payload: {\n        data,\n        reducerData\n      }\n    });\n    if (advance) {\n      go(1, undefined, lead);\n    }\n  }).catch((err) => {\n    logger.error(ACTIONS.UPDATE_ORDER_COMPLETE, err);\n    dispatch({\n      type: ACTIONS.UPDATE_ORDER_COMPLETE,\n      error: true,\n      payload: {\n        error: err && err.error ? err.error : 'Server Error',\n        errorCode: err && err.errorCode ? err.errorCode : 500\n      }\n    });\n  });\n};\n\nexport const orderAlreadyCreated = () => {\n  go(1);\n};\n\nexport default {\n  getEntryPoint,\n  goBack,\n  goNext,\n  goToNextUncompletedPage,\n  goToShare,\n  orderAlreadyCreated,\n  setBankOfAmericaOffer,\n  setBLRBusinessIndustry,\n  setBLRBusinessOutOfHome,\n  setBLRDataConfirmation,\n  setBLREmployeesCount,\n  setBLRHasDBAs,\n  setBLRHasEmployees,\n  setBLRLicenseDataModal,\n  setBLRStart,\n  setSkipBLR,\n  setComplete,\n  setEstimatedFormationDate,\n  setFeedback,\n  setFFDDataModal,\n  setFutureFilingDate,\n  setMarkComplete,\n  setPayment,\n  setPaymentComplete,\n  setPurchaseBLR,\n  setPurchaseBusinessKit,\n  setPurchaseFFD,\n  setPurchaseCD,\n  setPurchaseWFGIR,\n  createOrder,\n  updateOrder,\n  resetAllData\n};\n"],"sourceRoot":""}