{"version":3,"sources":["../../shared/src/util/index.js","../../shared/src/styles/theme.js","../../shared/src/requests/index.js","../../shared/src/gql/codegen/mutations.js","../../shared/src/gql/codegen/queries.js","../../shared/src/gql/custom/queries.js","../../shared/src/gql/custom/mutations.js","../../shared/src/gql/custom/subscriptions.js","../../shared/src/requests/error.js","../../shared/src/assets/educators/ari.gif","../../shared/src/assets/icons/nclex/AdultHealth.png","../../shared/src/assets/icons/nclex/ChildHealth.png","../../shared/src/assets/icons/nclex/MaternalandNewbornHealth.png","../../shared/src/assets/icons/nclex/MentalHealth.png","../../shared/src/assets/icons/nclex/Fundamentals.png","../../shared/src/assets/icons/nclex/ManagementofCare.png","../../shared/src/util/scoring/NCLEX.js","../../shared/src/assets/icons/nclex/Pharmacology.png","../../shared/src/assets/nclex/correct.png","../../shared/src/assets/nclex/incorrect.png","../../shared/src/assets/icons/nclex/CriticalCare.png","../../shared/src/requests/User.js","../../shared/src/assets/educators/emily_giddings.jpeg","../../shared/src/assets/icons/nclex/FirstAid.png","../../shared/src/assets/icons/nclex/Play.png","../../shared/src/config/anatomy.js","../../shared/src/assets/icons/inbde/anatomy_physiology.png","../../shared/src/assets/icons/inbde/fields_of_dentistry.png","../../shared/src/assets/icons/inbde/medicine.png","../../shared/src/assets/icons/inbde/oral_pathology.png","../../shared/src/assets/icons/inbde/patient_management.png","../../shared/src/assets/icons/inbde/pharmacology.png","../../shared/src/assets/icons/inbde/research.png","../../shared/src/assets/icons/msb/anatomy.png","../../shared/src/assets/icons/msb/heart.png","../../shared/src/assets/icons/nclex/Readiness.png","../../shared/src/assets/images/inbde/anthony_roviso.jpeg","../../shared/src/config/chemistry.js","../../shared/src/util/keys.js","../../shared/src/assets/icons/SquaredMasteryIcon/MasteryIcon/untagged.png","../../shared/src/assets/icons/msb/brain.png","../../shared/src/assets/images/ssg/placeholders/dat.png","../../shared/src/assets/svg/title.svg","../../shared/src/assets/images/logo.svg","../../shared/src/assets/svg/bootcamp_dark_text_logo.png","../../shared/src/assets/icons/MasteryIcon/learning-new.svg","../../shared/src/assets/icons/MasteryIcon/mastered-new.svg","../../shared/src/assets/icons/MasteryIcon/reviewing-new.svg","../../shared/src/assets/icons/MasteryIcon/untagged.svg","../../shared/src/assets/icons/SquaredMasteryIcon/MasteryIcon/bookmarked.png","../../shared/src/assets/icons/SquaredMasteryIcon/MasteryIcon/learning.png","../../shared/src/assets/icons/SquaredMasteryIcon/MasteryIcon/mastered.png","../../shared/src/assets/icons/SquaredMasteryIcon/MasteryIcon/reviewing.png","../../shared/src/assets/icons/SquaredMasteryIcon/MasteryIcon/untagged-selected.png","../../shared/src/assets/icons/chemistry/gc.png","../../shared/src/assets/icons/chemistry/oc.png","../../shared/src/assets/icons/dat/biology.png","../../shared/src/assets/icons/dat/general-chemistry.png","../../shared/src/assets/icons/dat/organic-chemistry.png","../../shared/src/assets/icons/dat/perceptual-ability.png","../../shared/src/assets/icons/dat/quantitative-reasoning.png","../../shared/src/assets/icons/dat/reading-comprehension.png","../../shared/src/assets/icons/highlight_icon.png","../../shared/src/assets/icons/inbde/simulation_exam.png","../../shared/src/assets/icons/logo/dat-logo.png","../../shared/src/assets/icons/logo/white_star.png","../../shared/src/assets/icons/logo/white_text.png","../../shared/src/assets/icons/mcat/book.png","../../shared/src/assets/icons/msb/biostatistics.png","../../shared/src/assets/icons/msb/blood.png","../../shared/src/assets/icons/msb/embryo.png","../../shared/src/assets/icons/msb/endo.png","../../shared/src/assets/icons/msb/genetics.png","../../shared/src/assets/icons/msb/hair.png","../../shared/src/assets/icons/msb/histo.png","../../shared/src/assets/icons/msb/intestine.png","../../shared/src/assets/icons/msb/lung.png","../../shared/src/assets/icons/msb/microbio.png","../../shared/src/assets/icons/msb/nephro.png","../../shared/src/assets/icons/msb/pharm.png","../../shared/src/assets/icons/msb/psych.png","../../shared/src/assets/icons/msb/virus.png","../../shared/src/assets/icons/musculoskeletal.png","../../shared/src/assets/icons/nclex/Stethoscope.png","../../shared/src/assets/icons/nclex/document.png","../../shared/src/assets/icons/pubhealthsci.png","../../shared/src/assets/icons/womb.png","../../shared/src/assets/images/colingustus.jpeg","../../shared/src/assets/images/dat-performance.png","../../shared/src/assets/images/hannah.png","../../shared/src/assets/images/inbde/review_video_background.jpg","../../shared/src/assets/images/matthew_dempsey.png","../../shared/src/assets/images/ssg/placeholders/inbde.png","../../shared/src/assets/images/ssg/placeholders/med-school.png","../../shared/src/assets/images/ssg/placeholders/mobile.png","../../shared/src/assets/images/ssg/placeholders/nclex.png","../../shared/src/assets/images/wave-partition-mobile.png","../../shared/src/assets/images/wave-partition.png","../../shared/src/assets/nclex/arrow.png","../../shared/src/config/step1.js","../../shared/src/config/msb.js","../../shared/src/config/updatedChemistryConfig.js","../../shared/src/aws-exports.js","../../../node_modules/@bootcamp/shared/src/assets sync /^/.//.*$","../../shared/src/assets/icons/mcat/text.png","../../shared/src/assets/images/appstore.png","../../shared/src/assets/images/playstore.png","bootcamps/pages/Generator/scripts/angleRanking.js","bootcamps/pages/Generator/scripts/newPatternFolding.js","bootcamps/pages/Generator/scripts/Trainer.js","../../shared/src/assets/educators/adam.gif","../../shared/src/assets/educators/akmal_shahzad.png","../../shared/src/assets/educators/alex_takshyn.png","../../shared/src/assets/educators/alexa_turpin.jpeg","../../shared/src/assets/educators/alexus_foster.jpeg","../../shared/src/assets/educators/allie_wilk.png","../../shared/src/assets/educators/anvin_thomas.jpeg","../../shared/src/assets/educators/ari.png","../../shared/src/assets/educators/aubrey_leaser.jpeg","../../shared/src/assets/educators/chris.jpeg","../../shared/src/assets/educators/cortney_olejniczak.png","../../shared/src/assets/educators/crysta_bliss.png","../../shared/src/assets/educators/david_nauheim.png","../../shared/src/assets/educators/elaine_chen.jpg","../../shared/src/assets/educators/emily_gagne.jpeg","../../shared/src/assets/educators/gabby_ciancimino.png","../../shared/src/assets/educators/gabriella_alagha.png","../../shared/src/assets/educators/garrett_schick.png","../../shared/src/assets/educators/hannah_riga.png","../../shared/src/assets/educators/jamie_larmie.png","../../shared/src/assets/educators/joel.gif","../../shared/src/assets/educators/joel.png","../../shared/src/assets/educators/john.gif","../../shared/src/assets/educators/lance.gif","../../shared/src/assets/educators/lauren_james.png","../../shared/src/assets/educators/lera_osullivan.png","../../shared/src/assets/educators/livianna_gallone.png","../../shared/src/assets/educators/lucas_garmo.jpeg","../../shared/src/assets/educators/mallory_decampos.png","../../shared/src/assets/educators/margaret.gif","../../shared/src/assets/educators/michael_cassidy.png","../../shared/src/assets/educators/monica.gif","../../shared/src/assets/educators/nick_rochester.jpeg","../../shared/src/assets/educators/sam_komrower.png","../../shared/src/assets/educators/sepehr_saberian.jpeg","../../shared/src/assets/educators/stephen.gif","../../shared/src/assets/educators/whitney.png","../../shared/src/assets/educators/zach-s.png","../../shared/src/assets/fonts/proxima-nova/Proxima-Nova-Bold-It.ttf","../../shared/src/assets/fonts/proxima-nova/Proxima-Nova-Bold.ttf","../../shared/src/assets/fonts/proxima-nova/Proxima-Nova-Light-It.ttf","../../shared/src/assets/fonts/proxima-nova/Proxima-Nova-Light.ttf","../../shared/src/assets/fonts/proxima-nova/Proxima-Nova-Reg-It.ttf","../../shared/src/assets/fonts/proxima-nova/Proxima-Nova-Reg.ttf","../../shared/src/assets/fonts/proxima-nova/proximanova-black.WOFF","../../shared/src/assets/fonts/proxima-nova/proximanova-bold.WOFF","../../shared/src/assets/fonts/proxima-nova/proximanova-extrabold.WOFF","../../shared/src/assets/fonts/proxima-nova/proximanova-light.WOFF","../../shared/src/assets/fonts/proxima-nova/proximanova-medium.WOFF","../../shared/src/assets/fonts/proxima-nova/proximanova-regular.WOFF","../../shared/src/assets/fonts/proxima-nova/proximanova-regular.ttf","../../shared/src/assets/fonts/proxima-nova/proximanova-semibold.WOFF","../../shared/src/assets/fonts/proxima-nova/proximanova-thin.WOFF","../../shared/src/assets/icons/Calendar-gold.svg","../../shared/src/assets/icons/Home/Biology.png","../../shared/src/assets/icons/Home/GeneralChemistry.png","../../shared/src/assets/icons/Home/OrganicChemistry.png","../../shared/src/assets/icons/Home/PerceptualAbility.png","../../shared/src/assets/icons/Home/Physics.png","../../shared/src/assets/icons/Home/QuantitativeReasoning.png","../../shared/src/assets/icons/Home/ReadingComprehension.png","../../shared/src/assets/icons/Home/cardio.png","../../shared/src/assets/icons/Home/embryo.png","../../shared/src/assets/icons/Home/histo.png","../../shared/src/assets/icons/Home/neck.png","../../shared/src/assets/icons/Home/neuro.png","../../shared/src/assets/icons/MasteryIcon/bookmark-icon.svg","../../shared/src/assets/icons/MasteryIcon/learning.svg","../../shared/src/assets/icons/MasteryIcon/mastered.svg","../../shared/src/assets/icons/MasteryIcon/reviewing.svg","../../shared/src/assets/icons/SquaredMasteryIcon/MasteryIcon/learning.svg","../../shared/src/assets/icons/SquaredMasteryIcon/MasteryIcon/mastered.svg","../../shared/src/assets/icons/SquaredMasteryIcon/MasteryIcon/reviewing.svg","../../shared/src/assets/icons/SquaredMasteryIcon/MasteryIcon/untagged-selected.svg","../../shared/src/assets/icons/SquaredMasteryIcon/MasteryIcon/untagged.svg","../../shared/src/assets/icons/Sun-gold.svg","../../shared/src/assets/icons/Sun.svg","../../shared/src/assets/icons/angleranking-icon-grayscale.svg","../../shared/src/assets/icons/arm.svg","../../shared/src/assets/icons/bio.svg","../../shared/src/assets/icons/cardio.svg","../../shared/src/assets/icons/checkmark-outline.svg","../../shared/src/assets/icons/checkmark.svg","../../shared/src/assets/icons/cubecounting-icon-grayscale.svg","../../shared/src/assets/icons/desktop/Home/desktop/Cards.svg","../../shared/src/assets/icons/donut.png","../../shared/src/assets/icons/embryo.svg","../../shared/src/assets/icons/gc-logo.svg","../../shared/src/assets/icons/grid-icon.svg","../../shared/src/assets/icons/histo.svg","../../shared/src/assets/icons/holepunching-icon-grayscale.svg","../../shared/src/assets/icons/home.svg","../../shared/src/assets/icons/inbde/biology-and-biopathology.svg","../../shared/src/assets/icons/inbde/biomaterials.svg","../../shared/src/assets/icons/inbde/case-sets.svg","../../shared/src/assets/icons/inbde/development-structure-function.svg","../../shared/src/assets/icons/inbde/ethics-and-behavioral-sciences.svg","../../shared/src/assets/icons/inbde/genetic-and-developmental-diseases.svg","../../shared/src/assets/icons/inbde/immunology-and-oral-health.svg","../../shared/src/assets/icons/inbde/microbiology-and-micropathology.svg","../../shared/src/assets/icons/inbde/pharmacology.svg","../../shared/src/assets/icons/inbde/research.svg","../../shared/src/assets/icons/inbde/systemic-pathology.svg","../../shared/src/assets/icons/keyholes.png","../../shared/src/assets/icons/muscle.png","../../shared/src/assets/icons/nclex/Heart.png","../../shared/src/assets/icons/nclex/Mouth.png","../../shared/src/assets/icons/nclex/Pacifier.png","../../shared/src/assets/icons/nclex/Statistics.png","../../shared/src/assets/icons/nclex/Sun.png","../../shared/src/assets/icons/nclex/Tooth.png","../../shared/src/assets/icons/neck.svg","../../shared/src/assets/icons/neuro.svg","../../shared/src/assets/icons/oc-logo.svg","../../shared/src/assets/icons/omm.png","../../shared/src/assets/icons/pat-icon.svg","../../shared/src/assets/icons/patternfolding-icon-grayscale.svg","../../shared/src/assets/icons/pelvis.svg","../../shared/src/assets/icons/phys-logo.svg","../../shared/src/assets/icons/qr.svg","../../shared/src/assets/icons/rc.svg","../../shared/src/assets/icons/reviews.svg","../../shared/src/assets/icons/select-arrows.svg","../../shared/src/assets/icons/tfevisualizer-icon-grayscale.svg","../../shared/src/assets/icons/tooth.svg","../../shared/src/assets/icons/uterus.png","../../shared/src/assets/images/albert_chen.png","../../shared/src/assets/images/aleksandra_dagunts.png","../../shared/src/assets/images/alex_bergsman.gif","../../shared/src/assets/images/andrew_stone.jpeg","../../shared/src/assets/images/angela.png","../../shared/src/assets/images/ankit_shah.jpeg","../../shared/src/assets/images/ariel_mayer.jpg","../../shared/src/assets/images/ariella.jpeg","../../shared/src/assets/images/brandonmuncan.gif","../../shared/src/assets/images/brianna.gif","../../shared/src/assets/images/brooke_nelson.gif","../../shared/src/assets/images/caitlin_tran.jpeg","../../shared/src/assets/images/carly.png","../../shared/src/assets/images/chris_durland.png","../../shared/src/assets/images/christian_drkulec.gif","../../shared/src/assets/images/colin_berger.png","../../shared/src/assets/images/daniel.jpeg","../../shared/src/assets/images/david_cornwell.gif","../../shared/src/assets/images/david_gallacher.gif","../../shared/src/assets/images/emma.gif","../../shared/src/assets/images/flora.png","../../shared/src/assets/images/generators/angleranking-icon.png","../../shared/src/assets/images/generators/cubecounting-icon.png","../../shared/src/assets/images/generators/holepunching-icon.png","../../shared/src/assets/images/generators/patternfolding-icon.png","../../shared/src/assets/images/generators/tfevisualizer-icon.png","../../shared/src/assets/images/george_geng.gif","../../shared/src/assets/images/haley.png","../../shared/src/assets/images/inbde/anthony_roviso.gif","../../shared/src/assets/images/inbde/audra_boehm.gif","../../shared/src/assets/images/inbde/audra_boehm.png","../../shared/src/assets/images/inbde/christopher_naglieri.gif","../../shared/src/assets/images/inbde/christopher_naglieri.png","../../shared/src/assets/images/inbde/feifei_huang.gif","../../shared/src/assets/images/inbde/feifei_huang.png","../../shared/src/assets/images/inbde/jason_berglund.gif","../../shared/src/assets/images/inbde/jason_berglund.png","../../shared/src/assets/images/inbde/kriti_sood.png","../../shared/src/assets/images/inbde/lucia_santos.gif","../../shared/src/assets/images/inbde/lucia_santos.png","../../shared/src/assets/images/inbde/ryan_gross.gif","../../shared/src/assets/images/inbde/ryan_gross.png","../../shared/src/assets/images/inbde/scott_noh.gif","../../shared/src/assets/images/inbde/scott_noh.png","../../shared/src/assets/images/inbde/victoria_lansdale.gif","../../shared/src/assets/images/inbde/victoria_lansdale.png","../../shared/src/assets/images/jacobgarcia.gif","../../shared/src/assets/images/james_faul.gif","../../shared/src/assets/images/jason_budzi.png","../../shared/src/assets/images/jia.gif","../../shared/src/assets/images/jim.gif","../../shared/src/assets/images/johank.jpeg","../../shared/src/assets/images/jonathanhunter.gif","../../shared/src/assets/images/joshc.gif","../../shared/src/assets/images/kathak.gif","../../shared/src/assets/images/katheriner.gif","../../shared/src/assets/images/katie.png","../../shared/src/assets/images/katie_buerk.gif","../../shared/src/assets/images/kelton.png","../../shared/src/assets/images/kenneth_li.png","../../shared/src/assets/images/kenneth_pham.png","../../shared/src/assets/images/kiara.gif","../../shared/src/assets/images/kristen_clark.gif","../../shared/src/assets/images/lauren.gif","../../shared/src/assets/images/marenda_biggs.jpg","../../shared/src/assets/images/masood_mohammed.png","../../shared/src/assets/images/matthew_wang.gif","../../shared/src/assets/images/medkinza.jpeg","../../shared/src/assets/images/mike.png","../../shared/src/assets/images/mikechen.gif","../../shared/src/assets/images/mikhail_budovich.png","../../shared/src/assets/images/myles_melamed.gif","../../shared/src/assets/images/olivia_fuson.gif","../../shared/src/assets/images/paige_adams.png","../../shared/src/assets/images/parker.gif","../../shared/src/assets/images/raheelh.gif","../../shared/src/assets/images/saml.jpeg","../../shared/src/assets/images/sarah_feltz.png","../../shared/src/assets/images/selena.gif","../../shared/src/assets/images/shiraz.gif","../../shared/src/assets/images/steffic.jpeg","../../shared/src/assets/images/toby_mathew.gif","../../shared/src/assets/images/tyler.gif","../../shared/src/assets/images/tyler_nelson.gif","../../shared/src/assets/images/tylerh.gif","../../shared/src/assets/images/wesson.gif","../../shared/src/assets/images/william_adili.jpg","../../shared/src/assets/images/winstonc.gif","../../shared/src/assets/svg/BootcampLogo.svg","../../shared/src/assets/svg/anatomy-background.svg","../../shared/src/assets/svg/anatomy-logo.svg","../../shared/src/assets/svg/badge.svg","../../shared/src/assets/svg/bootcamp_white_text_logo.svg","../../shared/src/assets/svg/caret-down.svg","../../shared/src/assets/svg/chemistry-background.svg","../../shared/src/assets/svg/chemistry-logo.svg","../../shared/src/assets/svg/coffee.svg","../../shared/src/assets/svg/dailywarmup.svg","../../shared/src/assets/svg/feature-questions.svg","../../shared/src/assets/svg/feature-schedule.svg","../../shared/src/assets/svg/feature-tests.svg","../../shared/src/assets/svg/feature-videos.svg","../../shared/src/assets/svg/oat-logo.svg","../../shared/src/assets/svg/rocket.svg","../../shared/src/assets/svg/signature.svg","../../shared/src/assets/svg/teambootcamp.svg","../../shared/src/assets/svg/warning.svg","../../shared/src/assets/svg/wave-anatomy.svg","bootcamps/pages/Generator/scripts/cubeCounting.js","bootcamps/pages/Generator/scripts/patternFolding.js","bootcamps/pages/Generator/styles lazy /^/.//.*$/ groupOptions: {} namespace object","components/Grid/index.js","components/Spacing/index.js","components/NavBar/Admin/index.js","../../shared/src/util/hooks/useBeforeUnload.js","../../shared/src/util/hooks/index.js","contexts/UserData.js","components/Branding/Classroom/assets/reviews.svg","components/Typography/index.js","components/Branding/Classroom/assets/home.svg","components/Branding/Classroom/Icons.js","components/Branding/Buttons/IconButton.js","components/Branding/Buttons/TextButton.js","webpack:///../shared/src/assets/svg/badge.svg?1e32","components/Branding/index.js","components/Branding/Buttons/index.js","hooks/index.js","components/NavBar/components/index.js","contexts/Modal.js","components/Modal/components/Upgrade/assets/smile.svg","components/Carousel/index.js","components/Modal/helpers.js","components/Modal/components/Upgrade/outcomes/shared.js","components/Modal/components/Upgrade/assets/abdullahali.png","components/Modal/components/Upgrade/outcomes/dat.js","components/Modal/components/Upgrade/assets/abbypuckett.png","components/Modal/components/Upgrade/assets/allijepsen.png","components/Modal/components/Upgrade/outcomes/oat.js","components/Modal/components/Upgrade/assets/deepalimittal.png","components/Modal/components/Upgrade/assets/jadenborders.png","components/Modal/components/Upgrade/assets/tehaum.png","components/Modal/components/Upgrade/assets/sara.png","components/Modal/components/Upgrade/assets/julie.png","components/Modal/components/Upgrade/outcomes/inbde.js","components/Modal/components/Upgrade/assets/samanthacooper.png","components/Modal/components/Upgrade/assets/barandataylor.png","components/Modal/components/Upgrade/outcomes/anatomy.js","components/Typography/next.js","components/Modal/components/Upgrade/assets/tiffanie_hilson.jpeg","components/Modal/components/Upgrade/assets/alex_mendez.jpeg","components/Modal/components/Upgrade/assets/caroline_jetel.jpeg","components/Modal/components/Upgrade/assets/brittany_prude.jpeg","components/Modal/components/Upgrade/assets/isabella_trybula.jpeg","components/Modal/components/Upgrade/assets/octavio_ordaz.jpeg","components/Modal/components/Upgrade/assets/raksha_pampliega.jpeg","components/Modal/components/Upgrade/assets/kelley_campbell.jpeg","components/Modal/components/Upgrade/outcomes/nclex.js","components/Modal/components/Upgrade/assets/click.svg","components/Modal/components/Upgrade/assets/videos.svg","components/Modal/components/Upgrade/features/shared.js","components/Modal/components/Upgrade/features/dat.js","components/Modal/components/Upgrade/features/oat.js","components/Modal/components/Upgrade/features/inbde.js","components/Modal/components/Upgrade/features/anatomy.js","components/Modal/components/Upgrade/features/nclex.js","components/Modal/components/Upgrade/index.js","components/NavBar/components/Buttons/index.js","helpers/index.js","components/NavBar/components/Menu/legacy.js","components/NavBar/components/Breadcrumbs/index.js","components/QuestionBank/Buttons.js","components/NavBar/Tbc/index.js","components/Footer/index.js","webpack:///../shared/src/assets/svg/anatomy-logo.svg?fc1b","webpack:///../shared/src/assets/svg/chemistry-logo.svg?e351","router/routes/wrappers/index.js","webpack:///../shared/src/assets/svg/bootcamp_white_text_logo.svg?8887","components/Branding/Buttons/iconButtons.js","components/Maintenance.js","../../shared/src/config/search.js","contexts/BootcampConfig.js","webpack:///../shared/src/assets/icons/grid-icon.svg?048f","router/components/SideBar/Links.js","router/components/SideBar/TrackSelect/Folder.js","router/components/SideBar/TrackSelect/index.js","components/UI/index.js","router/components/SideBar/Upgrade.js","../../shared/src/createTest/index.js","bootcamps/pages/CreateTest/context/index.js","bootcamps/pages/CreateTest/components/shared.js","bootcamps/pages/CreateTest/components/Header.js","bootcamps/pages/CreateTest/assets/badge.svg","bootcamps/pages/CreateTest/components/Mode.js","bootcamps/pages/CreateTest/components/Type.js","bootcamps/pages/CreateTest/components/Tags.js","bootcamps/pages/CreateTest/components/Questions.js","bootcamps/pages/CreateTest/components/Count.js","components/Modal/components/MoveQuestionToTest.js","components/NCLEXQBank/assets/Calculator.svg","components/NCLEXQBank/assets/Flag.svg","components/NCLEXQBank/assets/Clock.svg","components/NCLEXQBank/assets/Settings.svg","components/NCLEXQBank/assets/QuestionIcon.svg","components/NCLEXQBank/assets/End.svg","components/NCLEXQBank/assets/Navigator.svg","components/NCLEXQBank/assets/Arrow.svg","components/NCLEXQBank/assets/Alert.svg","components/NCLEXQBank/assets/FlagsFilled.svg","components/NCLEXQBank/assets/FlagFilled.svg","components/NCLEXQBank/assets/ReviewIncomplete.svg","components/NCLEXQBank/assets/Pause.svg","components/Modal/assets/close.svg","components/Modal/components/shared.js","components/NCLEXQBank/shared.js","components/Modal/components/SubmitAnatomyCase.js","components/Modal/components/SubmitModal.js","components/Modal/components/FullScreenAnimation.js","components/Modal/components/TestSettings.js","components/Modal/index.js","hooks/useScrollBlock.js","components/Modal/components/BootcampLockdown.js","../../shared/src/helpers/testComposers.js","../../shared/src/createTest/composers/index.js","contexts/TestBase/index.js","bootcamps/pages/CreateTest/components/Submit.js","bootcamps/pages/CreateTest/index.js","bootcamps/pages/CreateTest/components/CreateTestButton.js","router/components/SideBar/index.js","components/NavBar/components/Menu/index.js","components/NavBar/components/ConfigSearch/Results.js","components/NavBar/components/ConfigSearch/index.js","components/NavBar/App/index.js","router/routes/shared/index.js","router/routes/app/wrappers.js","bootcamps/pages/NotFound/index.js","components/ProgressBar/index.js","components/ExpertEducators/index.js","bootcamps/components/Cards/Overview.js","bootcamps/components/PageTabs/index.js","bootcamps/pages/PageContainer.js","components/Form/FieldRenderer/components/Field/index.js","components/Form/FieldRenderer/index.js","components/Form/FormWrapper/index.js","components/Sequence/index.js","components/Form/Checkbox.js","components/Form/Input.js","components/Form/Menu.js","components/Form/components.js","config/keys.js","components/Form/Stripe/Checkout.js","components/Form/Auth/VerifyEmail/index.js","components/Modal/components/VerifyEmailModal.js","components/Form/Auth/ChangePassword/index.js","components/Modal/components/ChangePasswordModal.js","bootcamps/pages/AccountPage/components/Cards/shared.js","bootcamps/pages/AccountPage/components/Cards/PersonalDetails.js","bootcamps/pages/AccountPage/components/Cards/ResetMastery.js","components/Form/Stripe/UpdatePaymentMethod.js","bootcamps/pages/AccountPage/components/Memberships/PaymentHistory.js","bootcamps/pages/AccountPage/extensionPriceIds.js","components/Form/Stripe/ManageMembership.js","bootcamps/pages/AccountPage/components/Memberships/Card.js","bootcamps/components/Cards/Callout.js","bootcamps/pages/AccountPage/components/Memberships/index.js","bootcamps/pages/AccountPage/components/Memberships/CodeRedemption.js","bootcamps/pages/AccountPage/updated.js","webpack:///../shared/src/assets/svg/rocket.svg?1b70","bootcamps/components/WebflowFAQs.js","bootcamps/pages/FAQ/index.js","bootcamps/pages/StudySchedule/helpers.js","bootcamps/pages/StudySchedule/components/shared.js","bootcamps/pages/StudySchedule/components/DatePicker.js","bootcamps/pages/StudySchedule/components/Modals/shared.js","bootcamps/pages/StudySchedule/components/Modals/Create.js","bootcamps/pages/StudySchedule/components/Create.js","webpack:///../shared/src/assets/svg/caret-down.svg?2eec","bootcamps/pages/StudySchedule/contexts/Tooltip.js","components/UI/inputs.js","bootcamps/pages/StudySchedule/components/Modals/Assignment.js","bootcamps/pages/StudySchedule/components/CalendarDay.js","bootcamps/pages/StudySchedule/components/Modals/Settings.js","bootcamps/pages/StudySchedule/components/Modals/Rebalance.js","bootcamps/pages/StudySchedule/components/Calendar.js","bootcamps/pages/StudySchedule/assets/top_left_32.png","bootcamps/pages/StudySchedule/assets/top_right_32.png","bootcamps/pages/StudySchedule/index.js","bootcamps/components/Cards/Chapter.js","bootcamps/components/Cards/components/Buttons.js","bootcamps/components/Cards/Download.js","bootcamps/pages/CheatSheets/index.js","bootcamps/inbde/CheatSheets/index.js","components/Form/Auth/Join/index.js","components/Form/Auth/SignIn/index.js","components/Form/Auth/DATSignIn/index.js","components/Form/Auth/ForgotPassword/index.js","components/Form/Auth/ResetPassword/index.js","components/Form/Auth/SelectBootcamp/index.js","components/Form/Auth/FurtherInfo/index.js","components/Form/Auth/index.js","bootcamps/pages/Authentication/index.js","../../shared/src/util/scoring/updatedDATScoringReference.js","../../shared/src/util/scoring/index.js","../../shared/src/util/formatting/index.js","bootcamps/pages/ScoreReport/adminStats.js","bootcamps/components/Performance/shared.js","bootcamps/dat/Performance/shared.js","components/AutoHeightParent.js","bootcamps/dat/Performance/PerformanceChart.js","bootcamps/dat/Performance/Test.js","webpack:///../shared/src/assets/svg/warning.svg?0633","bootcamps/dat/Performance/averages.js","bootcamps/dat/Performance/Subject.js","bootcamps/pages/ScoreReport/components/TextToggle.js","bootcamps/dat/Performance/Time.js","bootcamps/dat/Performance/index.js","bootcamps/components/MasteryReview/Select.js","bootcamps/pages/PastTestResults/index.js","bootcamps/pages/CustomTests/index.js","bootcamps/api/progress/formatting.js","bootcamps/api/progress/contentType/VideoLesson.js","bootcamps/api/progress/contentType/QBankCollection.js","bootcamps/api/progress/contentType/index.js","bootcamps/components/Cards/FreeQuestions.js","bootcamps/components/ClassroomContentWrapper.js","bootcamps/components/Cards/Dropdown.js","bootcamps/components/Cards/QBankCollection/Row.js","bootcamps/components/Cards/QBankCollection/index.js","bootcamps/components/ContentTypes/QuestionBanks.js","bootcamps/components/ContentTypes/PracticalExams.js","bootcamps/components/Cards/PracticeTest.js","bootcamps/components/ContentTypes/PracticeTests.js","bootcamps/components/Cards/VideoLesson/Row.js","bootcamps/components/Cards/VideoLesson/index.js","bootcamps/components/SearchBar/index.js","bootcamps/components/ContentTypes/VideoLessons.js","bootcamps/components/ContentTypes/QBankCollection.js","bootcamps/components/ContentTypes/Downloads.js","bootcamps/components/ContentTypes/SearchableDownloads.js","bootcamps/components/ContentTypes/Flashcards.js","bootcamps/components/ContentTypes/Anki.js","bootcamps/components/ContentTypes/Blogposts.js","bootcamps/components/ContentTypes/Generators.js","bootcamps/components/ContentTypes/Trainer.js","bootcamps/pages/Performance/Overall.js","bootcamps/pages/Performance/targets.js","bootcamps/pages/Performance/Subject.js","bootcamps/pages/Performance/index.js","bootcamps/components/ContentTypes/SubjectPerformance.js","bootcamps/components/ContentTypes/Performance.js","bootcamps/components/ContentTypes/index.js","bootcamps/pages/Classroom/index.js","bootcamps/components/Cards/Generic.js","bootcamps/components/MasteryIcon.js","bootcamps/components/MasteryReview/Card.js","bootcamps/components/MasteryReview/index.js","bootcamps/components/GettingStarted.js","bootcamps/components/Grid/index.js","bootcamps/components/Cards/Classroom.js","webpack:///../shared/src/assets/svg/coffee.svg?4a24","webpack:///../shared/src/assets/icons/Calendar-gold.svg?64bf","bootcamps/oat/Home/index.js","bootcamps/dat/Home/index.js","components/Highlightable/helpers.js","components/Highlightable/index.js","components/Tags/Menu.js","components/Tags/Tag.js","components/VideoPlayer/index.js","components/QuestionView/components/AdminButtons.js","components/Modal/components/QuestionFAQs.js","components/QuestionView/index.js","components/Modal/components/DraggablePopup.js","components/Exhibit/Calculator/index.js","components/Exhibit/TICalculator/index.js","components/Exhibit/PeriodicTable/index.js","contexts/TestNavigator/helpers.js","contexts/TestNavigator/useProgress.js","contexts/ReloadBlocker/index.js","contexts/TestNavigator/transitions.js","contexts/TestNavigator/index.js","components/Exhibit/index.js","components/FrontTest/components/StreakAlert/index.js","components/FrontTest/components/Progress/index.js","components/FrontTest/components/FrontPage/images/dailywarmup.svg","components/FrontTest/components/FrontPage/index.js","components/FrontTest/components/LastPage/index.js","components/FrontTest/index.js","bootcamps/pages/WarmupTest/index.js","bootcamps/components/Cards/ClassroomRow.js","bootcamps/inbde/Home/index.js","bootcamps/step1/Home/index.js","bootcamps/dsb/Home/index.js","bootcamps/mcat/Home/index.js","bootcamps/msb/Home/index.js","bootcamps/nclex/shared.js","bootcamps/pages/ScoreReport/context.js","bootcamps/pages/ScoreReport/components/Gauge.js","bootcamps/pages/ScoreReport/helpers.js","components/PieChart/index.js","../../shared/src/util/contexts/Timer.js","contexts/TestTimer.js","components/QBank/SidebarTop.js","components/Charts/data/datScoringBreakdown.js","components/Charts/ScoreDistribution.js","components/TestBlocks/StartReview.js","bootcamps/pages/ScoreReport/components/Score.js","bootcamps/msb/SelfAssessments/index.js","bootcamps/inbde/SimulationExams/index.js","bootcamps/nclex/Home/index.js","../../shared/src/config/nclexCheatSheets.js","bootcamps/nclex/StandaloneQuestions/index.js","bootcamps/nclex/ReadinessExams/index.js","bootcamps/mcat/Passages.js","bootcamps/nclex/NextGenCases/index.js","bootcamps/nclex/NextGenCourse/index.js","bootcamps/nclex/CheatSheets/index.js","bootcamps/anatomy/Home.js","bootcamps/chemistry/Home.js","bootcamps/pages/ReviewBanks/index.js","components/Modal/components/Upgrade/assets/alli.jpg","bootcamps/pages/StudyGuides/shared.js","bootcamps/pages/StudyGuides/dat.js","bootcamps/pages/StudyGuides/inbde.js","bootcamps/pages/StudyGuides/oat.js","bootcamps/pages/StudyGuides/index.js","bootcamps/pages/ExplorePage/Result.js","bootcamps/pages/ExplorePage/index.js","components/Branding/Buttons/MasteryButton.js","components/PrometricBank/assets/tutorial/tut_revscreen.gif","components/PrometricBank/components/shared.js","components/PrometricBank/assets/Next.png","components/PrometricBank/assets/Yes.png","components/PrometricBank/assets/No.png","components/PrometricBank/assets/Previous.png","components/PrometricBank/assets/End.png","components/PrometricBank/assets/Exit.png","components/PrometricBank/assets/Suspend.png","components/PrometricBank/assets/Exhibit.png","components/PrometricBank/assets/Mark.png","components/PrometricBank/assets/Marked.png","components/PrometricBank/assets/Review.png","components/PrometricBank/assets/Review All.png","components/PrometricBank/assets/Review Marked.png","components/PrometricBank/assets/Review Incomplete.png","components/PrometricBank/assets/Check Button.png","components/PrometricBank/assets/Learning Button.png","components/PrometricBank/assets/Reviewing Button.png","components/PrometricBank/assets/Mastered Button.png","components/PrometricBank/assets/tutorial/tut_mouseptr.gif","components/PrometricBank/assets/tutorial/tut_scroll.gif","components/PrometricBank/assets/tutorial/timelimit.gif","components/TestBlocks/QuestionSet.js","components/QBank/Buttons.js","components/AnatomyImageViewer.js","bootcamps/anatomy/Case/components/CaseImage.js","bootcamps/anatomy/Case/components/Question.js","bootcamps/anatomy/Case/components/ImagePrefetcher.js","components/QBank/StartBlock.js","bootcamps/components/Blocks/StartMasteryReview.js","bootcamps/components/Cards/ClassroomBookmark.js","bootcamps/components/Blocks/StartBookmarkedQuestionReview.js","webpack:///../shared/src/assets/svg/dailywarmup.svg?ec97","components/QBank/DailyReviewIntroBlock.js","components/Modal/assets/zoom-out.svg","components/Modal/assets/zoom-in.svg","components/Modal/assets/reset.svg","components/Modal/components/Hyperlink.js","components/QBank/Question/RelatedVideos.js","components/NCLEXQBank/assets/scoring/scoring.svg","components/NCLEXQBank/assets/scoring/01.png","components/NCLEXQBank/assets/scoring/PlusMinus.png","components/NCLEXQBank/assets/scoring/Rationale.png","components/QBank/Question/SolutionMeta.js","components/NCLEXQBank/Question/components/shared.js","components/QBank/Question/AAMCPassageComparison.js","components/QBank/Question/Solution.js","components/Resizable.js","components/QBank/Question/index.js","components/QBank/TopBar.js","webpack:///../shared/src/assets/icons/MasteryIcon/bookmark-icon.svg?87ac","bootcamps/pages/QuestionSearch/context.js","components/QBank/Sidebar.js","components/QBank/QuestionStats.js","components/Tooltip.js","components/QBank/index.js","bootcamps/pages/TestReview/index.js","components/USMLEBank/assets/Menu.svg","components/USMLEBank/shared.js","components/USMLEBank/assets/MarkFlag.svg","components/USMLEBank/assets/Arrow.svg","components/USMLEBank/assets/FullScreen.svg","components/USMLEBank/assets/Tutorial.svg","components/USMLEBank/assets/LabValues.svg","components/USMLEBank/assets/Calculator.svg","components/USMLEBank/assets/Stop.svg","components/USMLEBank/TopBar.js","components/USMLEBank/assets/Suspend.svg","components/USMLEBank/assets/BlackMarkFlag.svg","components/USMLEBank/BottomBar.js","components/USMLEBank/assets/radio-correct.svg","components/USMLEBank/Question.js","components/USMLEBank/Sidebar.js","components/USMLEBank/LabValues/tables/Blood.js","components/USMLEBank/LabValues/tables/Cerebrospinal.js","components/USMLEBank/LabValues/tables/Serum.js","components/USMLEBank/LabValues/tables/UrineBMI.js","components/USMLEBank/LabValues/index.js","components/PrometricBank/components/Sidebar.js","components/USMLEBank/index.js","components/PrometricBank/components/StartBlock.js","components/PrometricBank/assets/ReviewTable/Incomplete.png","components/PrometricBank/components/EndBlock.js","components/PrometricBank/assets/ReviewTable/Marked.png","components/PrometricBank/assets/ReviewTable/Completed.png","components/PrometricBank/assets/SectionBreak.png","components/PrometricBank/components/QuestionView.js","components/PrometricBank/components/FullLengthTutorial.js","components/PrometricBank/assets/perceptual.gif","components/PrometricBank/assets/Keyhole.png","components/PrometricBank/assets/TFE1.png","components/PrometricBank/assets/Hole Punching.png","components/PrometricBank/assets/Pattern Folding.png","components/PrometricBank/components/PATTutorial.js","components/PrometricBank/assets/TFE2.png","components/PrometricBank/assets/Angle Ranking.png","components/PrometricBank/components/SNSTutorial.js","components/PrometricBank/components/QRTutorial.js","components/PrometricBank/components/PhysicsTutorial.js","components/PrometricBank/components/RCPassage.js","components/PrometricBank/components/SectionBreak.js","components/OfflineIndicator.js","components/PrometricBank/helpers.js","components/PrometricBank/index.js","components/NCLEXQBank/Buttons.js","bootcamps/pages/SelfAssessment/StartBlock.js","components/NCLEXQBank/Question/components/DragAndDrop.js","components/NCLEXQBank/Question/assets/arrow-button-active.png","components/NCLEXQBank/Question/assets/arrow-button.png","components/NCLEXQBank/Question/components/HotSpot.js","components/NCLEXQBank/Question/assets/hotSpotSelector.png","components/NCLEXQBank/Question/components/Bowtie.js","components/NCLEXQBank/Question/helpers.js","components/NCLEXQBank/Question/components/index.js","components/NCLEXQBank/Question/components/DataTabs.js","components/NCLEXQBank/Question/index.js","components/NCLEXQBank/TopBar.js","components/NCLEXQBank/BottomBar.js","components/NCLEXQBank/index.js","bootcamps/pages/CustomTest/index.js","bootcamps/pages/ScoreReport/components/Details.js","bootcamps/pages/ScoreReport/components/Subject.js","bootcamps/pages/ScoreReport/components/Filter.js","bootcamps/pages/ScoreReport/components/Question.js","bootcamps/pages/ScoreReport/components/Time.js","bootcamps/pages/ScoreReport/index.js","bootcamps/pages/QuickReview/index.js","bootcamps/pages/QuickReview/Bites.js","bootcamps/pages/QuickReview/BoardStyle.js","bootcamps/pages/QuickReview/GrossAnatomy.js","components/MasteryBank/index.js","bootcamps/pages/MasteryReview/index.js","components/ButtonBar/index.js","components/MCATBank/assets/pencil.svg","bootcamps/pages/QuestionSearch/index.js","bootcamps/pages/PracticeTest/index.js","components/MCATBank/assets/flag-outline.svg","components/MCATBank/assets/clock.svg","components/MCATBank/components/TopBar.js","components/MCATBank/assets/navigation.svg","components/MCATBank/assets/arrow-left.svg","components/MCATBank/assets/arrow-right.svg","components/MCATBank/assets/end.svg","components/MCATBank/assets/pt.svg","components/MCATBank/assets/flag.svg","components/MCATBank/components/BottomBar.js","components/MCATBank/assets/scroll-arrow.svg","components/MCATBank/assets/scroll-arrow-up.svg","components/MCATBank/components/Navigator.js","components/MCATBank/components/PassageBlock.js","components/MCATBank/components/SectionReview.js","components/MCATBank/assets/flag-blue-filled.png","components/MCATBank/components/QBank.js","components/MCATBank/index.js","bootcamps/pages/QuestionBank/index.js","bootcamps/pages/Generator/components/AngleRanking.js","bootcamps/pages/Generator/components/CubeCounting.js","bootcamps/pages/Generator/components/HolePunching.js","bootcamps/pages/Generator/components/PatternFolding.js","bootcamps/pages/Generator/components/Tfe.js","bootcamps/pages/Generator/components/Trainer.js","bootcamps/pages/Generator/scripts/holePunching.js","bootcamps/pages/Generator/scripts/newCubeCounting.js","bootcamps/pages/Generator/index.js","webpack:///../shared/src/assets/icons/checkmark-outline.svg?7757","bootcamps/pages/SelfAssessment/index.js","bootcamps/pages/SimulationExam/index.js","components/CoursePlayer/components/Sidebar/index.js","components/VideoPlayer/YouTubePlayer.js","components/QuestionBank/QuestionStats.js","components/CoursePlayer/components/Block/Text.js","components/CoursePlayer/components/Block/index.js","components/CoursePlayer/components/Controls/index.js","components/CoursePlayer/components/TopBar/index.js","components/Modal/components/QBankSettings.js","components/CoursePlayer/index.js","bootcamps/components/CoursePlayer/index.js","bootcamps/pages/Content/index.js","bootcamps/pages/FullLengthTestDirectory/index.js","bootcamps/pages/Bookmarks/QuestionBank.js","bootcamps/pages/Bookmarks/index.js","bootcamps/pages/Checkout/index.js","bootcamps/pages/CheckoutRedirect/index.js","bootcamps/pages/ThankYou/Receipt.js","bootcamps/pages/ThankYou/index.js","bootcamps/dat/TestReview/index.js","router/routes/app/index.js","bootcamps/dat/config.js","bootcamps/dat/MasteryReviewSelect/index.js","bootcamps/dat/TBCSignup/index.js","router/index.js","styles/global.js","contexts/Notification.js","aws-exports.js","util/error/Boundary.js","util/error/logger.js","App.js","hooks/useDarkMode.js","serviceWorker.js","index.js"],"names":["defaultQuestionParts","prompt","answers","explanation","caseset","citations","xray","clinicalPhoto","tags","comments","anatomyImage","updatedAt","delay","time","Promise","resolve","document","body","style","setProperty","setTimeout","cursor","getFormattedStripeAmount","amount","parseInt","toFixed","replace","deSlugify","slug","split","map","_ref","_ref2","_toArray","firstLetter","rest","slice","toUpperCase","join","getQbankType","classroom","template","getTestTitle","title","contentType","config","contentTypePrefixes","prefix","concat","getTitleConfig","customTestConfig","_customTestConfig$con","_customTestConfig$con2","type","tutorMode","timed","trim","slugify","string","toLowerCase","shuffle","array","randomIndex","currentIndex","length","Math","floor","random","_ref3","parseVideoDuration","rawDuration","hasMinutes","match","hasSeconds","minutes","seconds","findByRenderType","componentsArray","renderType","defaultValue","arguments","undefined","find","component","contents","getRuntime","testBlocks","runtime","filter","testBlock","reduce","acc","videoData","components","duration","JSON","parse","parsedDuration","add","moment","totalRuntime","asSeconds","utc","asMilliseconds","format","getMCATPassageBlockParts","block","characterCount","wordCount","readingLevel","getQuestionParts","question","_findByRenderType","revisionId","latestRevisions","items","revisions","getRevisions","_ref6","_ref7","id","latestRevisionId","questionComponents","revisedBy","createdAt","questionBaseUpdatedAt","latestRevisionUpdatedAt","isAfter","lastUpdated","questionHeader","clinicalExam","customExhibitName","customExhibit","relatedVideos","meta","anatomyImageTransform","hotSpotImage","hotSpotImageSelection","caseHeader","clientDataJson","_JSON$parse2","clientDataTabs","clientDataTabsTypes","answerGroups","_ref8","answerMatrix","_ref9","hyperlinks","dndHeaderLeft","dndHeaderRight","connectedTestBlock","connections","_ref10","tag","_objectSpread","status","revisionCreatedAt","blockParts","anatomyImageSolution","getQuestionPartsAsync","_x","_getQuestionPartsAsync","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","_ref12","fetchRevision","questionRevision","_args2","wrap","_context2","prev","next","abrupt","_ref11","_callee","_yield$getRevision","getQuestionRevision","_context","getRevision","sent","data","t0","Sentry","stringified","stringify","stop","apply","sort","firstBy","sortByDate","reorder","list","startIndex","endIndex","result","Array","from","_result$splice","splice","removed","_slicedToArray","insertAtIndex","index","item","_toConsumableArray","getTestBlockQuestions","allowDraft","questionConnections","_ref14","masteryLevel","bookmarked","determineColorFromTitle","includes","getTagType","test","subject","topic","system","getInObj","path","obj","x","saveFile","filename","blob","Blob","e","createEvent","a","createElement","download","href","window","URL","createObjectURL","dataset","downloadurl","initMouseEvent","dispatchEvent","getUnixTimestamp","date","round","Date","getTime","getRandom","arr","n","len","taken","getStreakDetails","streak","streakDate","current","today","hour","subtract","yesterday","streakActive","isSameOrAfter","streakCompletedToday","isSame","streakLength","tomorrow","startOf","preciseHoursUntilTomorrow","diff","precision","minutesUntilTomorrow","timeUntilTomorrow","timeRunningOut","getTestBlockConnections","blockConnections","changeIntercomDisplay","mode","selector","styles","className","stylesArray","intercomLauncher","querySelector","forEach","capitalize","part","findStartAndEndDates","memberships","bootcampMembershipGroup","latestEnd","earliestStart","activeMemberships","membership","groups","_step","_iterator","_createForOfIteratorHelper","s","done","value","membershipDate","startDate","membershipEndDate","setDate","getDate","endDate","err","f","latestEndDate","console","error","calculateAnswerPercentage","answerData","answerLetter","answerCorrect","noLimit","totalAnswers","Object","entries","_ref16","_ref17","correctPercentage","log","asyncFetchWithS3Cache","_x2","_x3","_x4","_asyncFetchWithS3Cache","_callee3","s3Key","cacheExpiration","fetchFunction","existingDataFetch","_context3","Storage","get","cacheControl","LastModified","isBefore","Error","Response","Body","json","put","getTestsByClassroom","classrooms","_classrooms$filter","filterArray","contentTypeFilterArray","full","contentTypeNameFilterArray","_ref18","name","_ref19","_contentTypes$filter","route","contentTypes","_defineProperty","_ref20","_ref21","_content$filter","content","_ref22","_ref23","_content$filter2","_ref24","lessons","_ref25","_objectWithoutProperties","_excluded","_ref26","testId","formatDurationString","padStart","_duration$replace$spl","_duration$replace$spl2","formatTimeSpent","hours","flatten","flattenArr","el","isArray","push","findInConfigById","targetId","useParentTitle","targetArray","useParent","currentConfig","hit","createPathFromConfigMatch","configMatchArray","reverse","_ref27","getBootcampConfig","_x5","_getBootcampConfig","_callee5","bootcamp","_fetchConfig","fetchConfig","_yield$Promise$all","_yield$Promise$all2","anatomyConfig","dentalSchoolConfig","_dentalSchoolConfig$c","_yield$Promise$all3","_yield$Promise$all4","_anatomyConfig","_dentalSchoolConfig","_medSchoolConfig$clas","_yield$Promise$all5","_yield$Promise$all6","_anatomyConfig2","medSchoolConfig","medicalAnatomy","_context5","_x6","_callee4","fetchedConfig","_context4","fetch","cache","all","_ref28","_ref29","t1","finish","ChemistryConfig","getNCLEXSubjectSystemTags","subjectTag","systemTag","getMaxScore","_getQuestionParts","calculateMaxScore","getMasteryMap","_x7","_x8","_getMasteryMap","_callee6","questions","userId","questionMasteryPromises","userQuestionMasteryResult","masteryMap","_context6","_ref32","getAllQuestionMastery","userIdHashQuestionBaseId","_ref33","questionMastery","getQuestionMastery","getTags","_tags$find","_tags$find2","_tags$find3","_tags$find4","_ref34","_ref35","_ref36","_ref37","getScore","progress","_JSON$parse3","answerState","score","maxScore","didSelectCorrectAnswer","formatScoringBreakdown","_x9","_x10","_x11","_x12","_formatScoringBreakdown","_callee7","_progress$blockProgre","_questions$sort","breakdowns","_context7","blockProgresses","curr","_curr$questionProgres","questionProgresses","_config$selectedQuest","_config$selectedQuest2","_config$selectedQuest3","_curr$question","_curr$question2","_masteryMap$questionI","_masteryMap$questionI2","_acc$subjectBreakdown","_acc$caseBreakdown","_curr$question3","_curr$question4","_subjectStats$mastery","_systemStats$mastery","isSequential","selectedQuestions","isSequentialSet","isSequentialStart","questionId","isSequentialEnd","_getTags","_getTags2","timeSpent","parseFloat","_getScore","defaultStatObj","totalQuestions","avgTime","avgScore","subjectStats","subjectBreakdown","systems","systemStats","caseIndex","caseStats","caseBreakdown","caseQuestionStats","questionStatistics","statistics","questionAvg","summedScore","totalRecords","questionAvgTime","timeSpent2","totalRecordsTimeReset","questionSnippet","_ref38","overview","totalTime","mastery","hasOwnProperty","questionBreakdown","formatReadinessExamScoringBreakdown","_x13","_x14","_x15","_x16","_x17","_formatReadinessExamScoringBreakdown","_callee8","statOverrides","_progress$blockProgre2","_progress$blockProgre3","_config$selectedQuest4","questionMap","_context8","_curr$questionProgres2","_curr$questionProgres3","acc2","curr2","_curr2$question","blockId","_curr$question5","_curr$question6","_masteryMap$questionI3","_masteryMap$questionI4","_acc$subjectBreakdown2","_acc$caseBreakdown2","_curr$question7","_curr$question8","_statOverrides$questi","_statOverrides$questi2","_statOverrides$questi3","_statOverrides$questi4","_subjectStats$mastery2","_systemStats$mastery2","_getTags3","_getTags4","_getScore2","_ref41","avgQuestionScore","avgQuestionTime","updateCustomTestConfig","_x18","_x19","_updateCustomTestConfig","_callee9","values","_customTestConfig$con3","testStorageKey","updatedConfig","_context9","validateCustomTest","isUpgraded","freeTestIds","_config$classrooms","_config$additionalCon","freeClassroom","_ref44","every","_ref45","indexOf","freeContent","additionalContent","_ref46","testIds","safeStringify","safeParse","formatNCLEXScore","attempt","_attempt$map","_ref49","flat","scoreDetails","_ref50","didCheck","_JSON$parse5","correct","total","formatScore","_ref51","checkTestProgressAttempt","_x24","_x25","_x26","_ref52","_callee12","_progressIdResult$dat2","_progressIdResult$dat3","_progressIdResult$dat","_progressIdResult","_progressId","progressIdResult","progressId","_context12","getTestProgressByUserIdHashTestId","TestProgressByTestId","getSubjectTestIdsForFLT","testRoute","testNumber","pop","_getInObj","_matchingTest$test","_curr$testBlock","matchingTest","connection","_connection$test","connectionTitle","splitScreenAllowed","enabledForTemplate","submitted","innerWidth","getThemeForHyperlinkViewer","baseTheme","theme","darkMode","isBoardBank","location","pathname","prometricPalette","colors","themeColor","default","dark","brandPalette","royal","darkModePalette","surfacePrimary","breakpoints","mediaQueries","mobileS","mobileM","mobileL","mobileXl","tablet","laptop","laptopL","desktop","desktopL","custom","breakpoint","assignmentColorPalette","_assignmentColorPalet","blue","light","hover","orange","green","pink","purple","cyan","lime","teal","indigo","violet","fuschia","font","size","smallest","smaller","small","medium","regular","large","larger","xlarge","xxlarge","super","xsuper","xxsuper","gojira","weight","normal","semibold","bold","bolder","height","small2","multipliers","none","mcat","grey","highlight","highlightBlue","hoverLight","extraLight","gradientStart","gradientMid","gradientEnd","gradient","rose","shamrock","cerulean","magenta","pumpkin","red","typographyPalette","primary","secondary","tertiary","transparent","borderPalette","iconPalette","backgroundPalette","elevationPalette","surfaceSecondary","surfaceTransparent","background","surfaceTertiary","borderPrimary","neutralsPalette","extraDark","white","offWhite","black","lightGrey","lightBorder","nclex","lightBlue","yellow","lightYellow","interfacePalette","gradientColors","gradientLocations","alert","fade","special","secondaryGradient","pearlGradient","pearl","naturalDarkGradient","naturalDark","naturalLightGradient","naturalLight","tuxedo","borderColor","purpleBorderColor","lightBorderColor","mediumBorderColor","brandPurple","brandBlue","barBlue","darkTextColor","lightTextColor","greyTextColor","backgroundShade","lightBackground","lightBarBackground","hoverColor","greyButtonHover","animation","loadingBackground","loading","lightMode","gradientRange","overlays","opacity","_100","_200","spin","elevation","shadow","tight","low","high","inner","progressDark","progressLight","_500","_400","_300","_50","layouts","spacing","xs","ms","m","ml","l","xl","xxl","setupLambdaClient","_setupLambdaClient","credentials","lambdaClient","Auth","currentCredentials","LambdaClient","region","awsconfig","aws_project_region","essentialCredentials","Amplify","configure","invokeLambda","FunctionName","payload","command","response","InvokeCommand","Payload","send","Buffer","toString","invokeStreamingLambda","InvokeWithResponseStreamCommand","EventStream","sleep","r","graphqlRetryHandler","_graphqlRetryHandler","args","retryCount","_args4","API","graphql","handleError","pow","getTag","_getTag","graphqlOperation","customQueries","_getRevision","_callee16","_context16","query","variables","authMode","getQuestionBaseTestBlocks","_x31","_getQuestionBaseTestBlocks","_callee26","_context26","getQuestionForTest","_x33","_getQuestionForTest","_callee28","withBlocks","_args28","_context28","getQuestionForTestWithBlocks","getQuestionBaseWithConnections","_x34","_getQuestionBaseWithConnections","_callee29","_context29","getQuestionBaseTests","_x35","_getQuestionBaseTests","_callee30","_context30","getQuestionBaseProgresses","_x36","_x37","_getQuestionBaseProgresses","_callee31","limit","progressNextToken","_result$data$getQuest","nextResult","_context31","getQuestionBase","progresses","nextToken","getQuestionBaseWithFaqOnly","_x38","_getQuestionBaseWithFaqOnly","_callee32","_context32","searchQuestions","_searchQuestions","_callee35","input","fetchBlocks","_yield$graphqlRetryHa","_yield$graphqlRetryHa2","_args35","_context35","searchQuestionBasesAndBlocks","searchQuestionBases","getTest","_x41","_getTest","_callee37","_args37","_context37","t2","t3","listTests","_listTests","_callee41","_result$data$listTest2","_result","_args41","_context41","listTestsWithConnections","t4","getTestBlock","_x47","_getTestBlock","_callee46","_context46","getTestBlockWithQuestionIds","_x48","_getTestBlockWithQuestionIds","_callee47","_context47","createQuestionConnection","_x54","_x55","_createQuestionConnection","_callee53","testBlockId","_context53","mutations","addUniqueQuestionToTestBlock","deleteQuestionConnection","_x56","_deleteQuestionConnection","_callee54","_context54","customMutations","createTestProgress","_x58","_x59","_x60","_createTestProgress","_callee56","wordPressUserDataTestProgressesId","_args56","_context56","userIdHashTestId","createTestProgressWithBlocks","_x61","_x62","_createTestProgressWithBlocks","_callee57","_context57","createTestProgressWithBlocksAndQuestions","_x63","_x64","_createTestProgressWithBlocksAndQuestions","_callee58","_context58","createBlockProgress","_x65","_x66","_x67","_x68","_x69","_createBlockProgress","_callee59","testProgressBlockProgressesId","blockProgress","blockIndex","_args59","_context59","updateBlockProgress","getBlockProgress","_x70","_getBlockProgress","_callee60","_context60","_x71","_x72","_updateBlockProgress","_callee61","blockProgressId","_context61","createQuestionProgress","_x73","_x74","_x75","_x76","_x77","_x78","_createQuestionProgress","_callee62","blockProgressQuestionProgressesId","questionProgressQuestionId","questionRevisionId","questionProgress","questionIndex","_args62","_context62","updateQuestionProgress","_x79","_x80","_updateQuestionProgress","_callee63","questionProgressId","_context63","getAllQuestionMasteryIdsByUserId","_x85","_getAllQuestionMasteryIdsByUserId","_callee68","wpUserId","masteryNextToken","_result$data$Question2","_args68","_context68","QuestionMasteryByWpUserId","getAllQuestionMasteryIdsTagsByUserId","_x86","_getAllQuestionMasteryIdsTagsByUserId","_callee69","_result$data$Question3","_args69","_context69","getTestProgress","_x91","_getTestProgress","_callee74","_context74","getTestProgressSimple","_x93","_getTestProgressSimple","_callee76","_context76","getTestProgressPerformance","_x94","_getTestProgressPerformance","_callee77","_context77","getAllTestProgressByUserIdHashTestId","_x96","_getAllTestProgressByUserIdHashTestId","_callee79","_context79","getTestProgressByTestId","_x97","_x98","_getTestProgressByUserIdHashTestId","_callee80","withData","sortDirection","_args80","_context80","getTestProgressByTestIdFull","didReset","ne","getTestProgressByUserIdHashTestIdForScoring","_x99","_x100","_getTestProgressByUserIdHashTestIdForScoring","_callee81","isDAT","_args81","_context81","getTestProgressByTestIdFullForDATScoring","getTestProgressByTestIdFullForScoring","updateQuestionMastery","_x105","_x106","_updateQuestionMastery","_callee83","create","_context83","createQuestionMastery","_x107","_x108","_getQuestionMastery","_callee84","queryKey","_args84","_context84","questionMasteryBySubjectTagId","subjectWithQuestion","questionMasteryBySubjectTagIdWithQuestion","subjectWithQuestionBaseId","questionMasteryBySubjectTagIdWithQuestionBaseId","questionMasteryByTopicTagId","questionMasteryByTestId","questionMasteryByMasteryLevelAnatomy","questionMasteryByMasteryLevel","getQuestionMasteryByQuestionBaseId","loadMastery","_x109","_x110","_x111","_x112","_loadMastery","_callee85","tagIds","bookmarksOnly","filterQueryKey","masteryLevelFilter","_mastery$data$Questio","nextNextToken","_args85","_context85","eq","or","tagId","_x113","_x114","_getAllQuestionMastery","_callee86","queryTitle","_result$data$queryTit","_context86","subjectWithQuestionTags","questionMasteryBySubjectTagIdWithQuestionTags","topicWithQuestion","questionMasteryByTopicTagIdWithQuestion","testSmall","questionMasteryByTestIdSmall","customTest","questionMasteryByTestIdCustomTest","customTestWithTestId","questionMasteryByTestIdCustomTestWithTestId","getTestProgressIdsByUserId","_x120","_getTestProgressIdsByUserId","_callee90","_context90","getTestProgressIds","getTestProgressIdsByIdOverride","_x121","_getTestProgressIdsByIdOverride","_callee91","_context91","getTestProgressIdsByWpUserId","getUser","_x133","_getUser","_callee100","_args100","_context100","createUser","_x134","_x135","_x136","_createUser","_callee101","idOverride","email","_context101","createMembership","_x137","_createMembership","_callee102","_context102","updateUser","_x139","_updateUser","_callee104","_context104","getPrice","_x141","_getPrice","_callee106","priceId","_context106","price","client_secret","updateActivationCode","_x142","_updateActivationCode","_callee107","_context107","getActivationCode","_x143","_getActivationCode","_callee108","_context108","saveTestProgress","_x144","_saveTestProgress","_callee109","saveCommand","_context109","TextEncoder","encode","StatusCode","method","getIntercomUserAttributes","_x145","_getIntercomUserAttributes","_callee110","_yield$API$post","_context110","post","user","custom_attributes","getQuestionAnswerData","_x147","_x148","_x149","_getQuestionAnswerData","_callee113","uploadKey","formatter","answerMap","fetchAndParseAnswerData","_context113","_callee112","_progresses$items","_progresses$items2","_yield$getQuestionBas","_context112","_acc$total","_acc$total2","_acc$progress$questio","_acc$progress$questio2","startsWith","answerChoice","selectedAnswerIndex","getClassroomCourseBlockCounts","_x150","_x151","_getClassroomCourseBlockCounts","_callee117","testsByClassroom","classroomCourseBlockCountsStorageKey","fetchCounts","_context117","_callee116","_Object$keys","_Object$keys2","classroomCourseBlockCounts","_context116","keys","_x152","_x153","_callee115","blockCount","_context115","_x154","_x155","_callee114","testConfig","blocks","_context114","t5","t6","t7","storedAt","remove","courseBlockCounts","getClassroomQuestionCounts","_x156","_x157","_getClassroomQuestionCounts","_callee121","plusTests","classroomQuestionCountsStorageKey","_args121","_context121","_callee120","_Object$keys3","_Object$keys4","classroomQuestionCounts","_context120","_x158","_x159","_callee119","_ref13","questionCount","_context119","_x160","_x161","_callee118","_context118","getReadinessExamAndCaseStudySubjectCounts","_getReadinessExamAndCaseStudySubjectCounts","_callee122","_context122","getNCLEXReadinessExamAndCaseStudySubjectCounts","_getNCLEXReadinessExamAndCaseStudySubjectCounts","_callee123","_context123","getINBDESimExamAndCaseSetSubjectTopicCounts","_getINBDESimExamAndCaseSetSubjectTopicCounts","_callee124","_context124","getMembership","_x162","_getMembership","_callee125","_context125","queries","trackQuestionPerformance","_x163","_x164","_x165","_x166","_x167","_x168","_trackQuestionPerformance","_callee126","DEFAULT_USER_ID","subjectId","topicId","addAttempts","addCorrect","_JSON$parse","attempts","_context126","trackNCLEXQuizProgressPerformance","_x174","_x175","_x176","_trackNCLEXQuizProgressPerformance","_callee128","quizProgress","allQuestions","performanceByTag","_i","_Object$entries","_Object$entries$_i","_Object$entries$_i$","_tag$split","_tag$split2","_context128","_ref15","subjectTopic","trackQuizProgressPerformance","_x177","_x178","_x179","_trackQuizProgressPerformance","_callee129","_i2","_Object$entries2","_Object$entries2$_i","_Object$entries2$_i$","_tag$split3","_tag$split4","_context129","getQuestionData","_x180","_getQuestionData","_callee130","storageKey","_Object$entries3","fetchConfigQuestionIds","configQuestionIds","indexedByTest","_context130","queryVimeoApi","deleteTest","deleteTestBlock","deleteQuestionBase","createExam","updateExam","deleteExam","createExamComponent","updateExamComponent","deleteExamComponent","createTagJoin","updateTagJoin","deleteTagJoin","createContentQueue","updateContentQueue","deleteContentQueue","createWordPressUserData","updateWordPressUserData","deleteWordPressUserData","createBootcampUserData","updateBootcampUserData","deleteBootcampUserData","deleteQuestionMastery","updateTestProgress","deleteTestProgress","deleteBlockProgress","deleteQuestionProgress","updateQuestionTags","addUniqueQuestionToExam","updateQuestionConnectionOrder","deleteQuestion","deleteUser","updateMembership","deleteMembership","createUserInteraction","updateUserInteraction","deleteUserInteraction","createTest","updateTest","createTestBlockConnection","updateTestBlockConnection","deleteTestBlockConnection","createTestBlock","updateTestBlock","updateQuestionConnection","createQuestionBase","updateQuestionBase","createQuestionComment","updateQuestionComment","deleteQuestionComment","createQuestionRevision","updateQuestionRevision","deleteQuestionRevision","createTag","updateTag","deleteTag","getTestFromCache","getExam","listExams","getExamComponent","listExamComponents","getTagJoin","listTagJoins","getContentQueue","listContentQueues","getWordPressUserData","listWordPressUserDatas","getBootcampUserData","listBootcampUserDatas","listQuestionMasterys","listTestProgresss","listBlockProgresss","getQuestionProgress","listQuestionProgresss","questionMasteryByWpUserId","questionMasteryByQuestionId","questionMasteryByTestTagId","questionMasteryByQuestionBaseIdTestId","testProgressByTestId","listUsers","listMemberships","productId","getUserInteraction","listUserInteractions","getTestBlockConnection","listTestBlockConnections","listTestBlocks","getQuestionConnection","listQuestionConnections","listQuestionBases","getQuestionComment","listQuestionComments","commentTypeByCreatedAt","listQuestionRevisions","listTags","getTestWithSearchString","getTestConfig","getTestTile","getTestNoQuestions","getTestStructureOnly","getTestStructureOnlyWithBlockConnections","getTestQuestionIds","getTestQuestionIdsWithConfig","getTestQuestions","getTestQuestionTags","getTestQuestionIdsAndStatus","getTestConnectionsOnly","getQuestionBaseTagsOnly","getQuestionBaseWithFaq","getQuestionBaseWithTests","getBlockProgressByTestId","getBlockProgressWithQuestions","getTestProgressesCount","getTestProgressesByUserId","getTestProgressesByWpUserId","getTestProgressSpecial","getTestProgressWithoutQuestion","getAllQuestionMasteryQuestionsByUserId","questionMasteryWithQuestionsByWpUserId","questionMasteryWithQuestionTagsByWpUserId","questionMasteryByQuestionIdForFixing","getFilteredBootcampTestProgresses","getFilteredTestProgresses","listUserInteractionsByUserId","onCreateTestProgress","onUpdateBlockProgress","onUpdateQuestionProgress","message","_error$errors","errors","originalError","errorType","getElementById","alertWindow","border","padding","zIndex","position","innerHTML","prepend","getScoringRule","_answers$filter","_answers$filter2","_answers$filter3","_prompt$match","_answers$filter4","answer","group","answerGroup","getScores","_answerState$filter","_answers$","_answerState$index","_answerState","y","width","matrixMultipleChoiceAnswers","row","rowIndex","_matrixMultipleChoice","selectedIndex","findIndex","newTotal","some","_answers$answer","_answers$answer2","max","matrixAnswers","columnAnswerState","col","i","matrixColumns","matrixScore","column","columnIndex","mrgMatrixAnswers","_sortedAnswerState$","_sortedAnswerState$sl","sortedAnswerState","key","_answerState$","_answerState$slice$fi","calculateScore","typeFormatters","multipleChoice","_acc$totals","parsedAnswerState","updatedTotals","totals","totalAnswered","numCorrect","min","percentage","multipleResponse","fillInTheBlank","hotSpot","_JSON$parse4","matrix","matrixMultipleChoice","_JSON$parse6","multipleResponseSelectN","_JSON$parse7","multipleResponseGrouping","_JSON$parse8","dragAndDropSATA","_JSON$parse9","dragAndDropCloze","_JSON$parse10","dragAndDropRationale","_JSON$parse11","dragAndDropOrderedResponse","_JSON$parse12","dragAndDropSelectN","_JSON$parse13","dropdown","_JSON$parse14","dropdownRationale","_JSON$parse15","dropdownTable","_JSON$parse16","bowtie","_JSON$parse17","_JSON$parse18","answerDataFormatter","typeFormatter","checkAnswerState","_createUserInteraction","_updateUserInteraction","_listUserInteractions","themePalette","classroomDescription","icon","educators","firstName","avatar","description","practicalSections","contentSections","startingIndex","videoLessonCount","studyTools","showOnHome","siteTitle","subjectIds","getAnatomyConfigObject","chapters","videoLessonId","questionBankIds","pdfUrl","getChemistryConfigObject","chapter","contentSlug","_contentSlugStrippedI","_contentSlugStrippedI2","matchedChapter","_ref4","_ref5","locked","VIMEO_ACCESS_TOKEN","step1Classrooms","section","comingSoon","calloutText","importedBootcamp","grossAnatomyClassrooms","showVideoProgress","generalChemistryClassroom","DATConfig","generalChemistryClassroomContentTypes","_generalChemistryClas","ocReactionBites","_DATConfig$classrooms","organicChemistryClassrooms","_qbanksTab$content$0$","_videosTab$content$0$","classroomName","_chapters$reduce","chapterIndex","videoBanks","qbanks","qbanksTab","videosTab","awsmobile","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","module","exports","randomInt","j","shuffleArray","temp","permutation","res","jQuery","ready","difficulty","g","b","p1","p2","c","d","loc","incorrect","setTime","angleMode","right","timeon","timer","sec","questionStartTime","alpha","drawangle","increment","html","minRange","maxRange","maxAdded","angle","variation","tempa","tempb","ctx","getContext","clearRect","ax","ay","bx","by","beginPath","setLineDash","moveTo","lineTo","stroke","lindx","dx1","dy1","atan2","degree","PI","theta","cx","cos","cy","sin","newG","r1x","r2x","r1y","r2y","fillStyle","fillText","choice","z","cset","possibleChoices","difficult","easy","choices","append","redrawangle","runTimer","setInterval","clearInterval","attr","ckAnswer","text","newAverage","prop","click","grade","this","val","display","change","$","BlankSquare","BlankTriangle","BlankTriangleInv1","BlankTriangleInv2","BlankTriangleInv3","Choice","Coffin","DIMENSION","DIMENSION0","DblMarkSquare","DiagonalRect","DieFace","El","ElInv","Face","Fold","FourSquare","HexSection","HexSection10","HexSection2","HexSection3","HexSection4","HexSection5","HexSection6","HexSection7","HexSection8","HexSection9","HorizRect","HorizRectFour","HorizRectThree","HorseShoe","HorseShoeSideways","InnerRect","InnerTriangle","InnerTriangleInv","Normal","Pattern","Pentagon","PentagonInv","Point","ProtoRect","Queue","SQ3","SoftL","SoftLInv","SoftLInv2","SoftLSide","Square","SquareDiamond","SquareFor12","StripedRect","StripedSquare","Structure1","Structure10","Structure11","Structure12","Structure13","Structure14","Structure15","Structure16","Structure17","Structure18","Structure19","Structure2","Structure20","Structure21","Structure22","Structure23","Structure24","Structure25","Structure3","Structure4","Structure5","Structure6","Structure7","Structure8","Structure9","TippedHexSection","TippedHexSectionInv","TippedRect","Triangle","TriangleSideways","TwoPentagon","TwoSquare","VertPentagon","VertPentagonInv","VertRect","VertRectFour","VertRectThree","ZInverted","ZShape","addControls","animDir","animOn","animPause","animloop","answerGrades","answerValues","clearCanvas","clearExplication","clearGrades","clearRadios","compareFaces","currentPage","erasePage","folder","gameReset","getBounds","getCtx","getScaling","getStructure","newPage","pagePosition","pauseAction","prevAction","nextAction","povs","previousPage","radioChangeEvent","randInt","render","restoreCurrentPage","revealExplication","reverseAction","sanitizeCanvases","serializedPages","setGrades","setPageNumber","startTimer","tallyScoreboard","testing","timeChangeEvent","timeLeft","timeOut","timeReset","timerOn","startGenerator","rotateCopy","firstCanvas","mouseUp","mouseDown","mouseMove","touchStart","touchMove","touchEnd","__bind","fn","me","__hasProp","__extends","child","parent","call","ctor","constructor","prototype","__super__","__indexOf","posX","posY","cursorX","cursorY","updateMove","dragMode","sqrt","event","pageX","pageY","workingCopy","clone","touch","touches","changedTouches","xDiff","yDiff","abs","rotate","explicate","mainOffset","first","each","dim","bounds","cDim","cMargin","scale","maxX","minX","maxY","minY","xOff","yOff","array1","array2","face1","face2","unique","_j","_len","_len1","compare","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","callback","element","faces","pov","scr","ar","screenPoint","dv","axis","rad","t","_super","changeAngle","point","line","scaling","delta","translate","describe","sanitize","_results","newa","newb","getAngle","angles","axle","cusion","deltas","_k","distance","facing","degrees","x1","y1","getMarks","copyTo","getRectMarks","extension","marks","explication","cln","destination","face","mks","p","points","_ref1","point1","point2","_l","_len2","_len3","fill","closePath","printBack","printFront","accentuate","preSpin","markVertices","preTranslate","extremity","ext","getTops","topX","topY","topZ","getBoundingCube","x0","y0","z0","z1","imposter","populateMainMarkVertices","populateMidRectVertices","addMark","rand","twist","getCenter","populateInnerMarkVertices","center","start","addDieSpots","spots","deltaHX","deltaHY","deltaHZ","deltaVX","deltaVY","deltaVZ","pushVertexArray","vertexArrays","_this","vertexArray","_m","reorient","moveSlide","allowedRotations","disallowedPairs","folds","currentPace","stepsExecuted","correctChoice","boundingCube","horizPentAxes","vertPentAxes","vertTriangleAxes","horizTriangleAxes","sliding","slidePosition","rotation","totalSteps","screenBounds","toArray","_len4","_len5","_len6","_n","_o","restoreFromArray","storage","_results1","setPov","povn","getPovn","allowed","pair","getCorrectAnswer","populateChoices","archive","blank","correctPossibilities","perspectives","storePossibility","OPTIONS","correctAnswer","reposition","getFalseCandidate","postInit","getTypes","print","slider","printFaceArray","offset","tops","fold","animate","currentFold","fc","thisStep","ui","slideLoop","executeStep","dir","count","_this2","duplicate","endTypes","excessType","falseSpot","finalFaces","startTypes","getDieFalseCandidate","fs1","fs2","type1","type2","corners","deltaX","deltaY","deltaZ","spacer","getHorizPentAxes","end1","end2","endy","endz","k","getVertPentAxes","endx","getVertTriangleAxes","getHorizTriangleAxes","getRadians","angleRad","x5","y5","z5","square","shape","order","type15","type23","type24","type6","DIV1","ga","type0","type16","type17","type28","type29","type7","OFFSET","f0","p0","f1","axis1","axis2","coord","drop","type30","type31","type32","type33","type34","type35","answerCanvas","off","visibility","hide","page","steps","show","on","clearTimeout","pattern","onmousedown","onmouseup","onmousemove","ontouchstart","ontouchmove","ontouchend","Bisect","Circle","Cubes","Eyeballer","Holes","MAIN_HEIGHT","MAIN_WIDTH","Midpoint","Parallelogram","Quiz","RightAngle","THICKNESS","TwoAngles","clearQuiz","createQuiz","dist","erase","gameOver","nextQuestion","questionText","reset","scores","screenLine","screenMove","step","timeUsed","layerIds","questionIds","numberWord","Page","structure","options","paintQuery","sequentialQuestions","pq","valid","sidesQty","paintQueries","getTally","tally","populateQuestions","candidate","history","cubes","correctOption","displayQuestions","painted","printCubes","color","sc","solutionScale","perspective","tot","pe","ROUNDS","onload","mouseX","mouseY","solutionX","solutionY","getRandomPoint","setTitle","FoldedSet","Line","OptionObject","Polygon","PunchedHoleList","QUES_MULT","TableSpot","Vertex","answerCanvases","clearSteps","createAndDisplayFolds","executeFold","explicateStep","foldLines","freshSheet","freshTable","intersection","listPoints","locateHole","outlineList","pointMatch","populateFoldLines","printList","relocateSpots","stepCanvases","tableSpots","can","dashed","elem","elem2","smHeight","handleIncorrect","handleCorrect","css","margin","marginLeft","boxSizing","generateFalseAnswers","printAnswerChoices","backgroundColor","handleResult","cell","unbind","rows","cells","paperStages","generate","table","lVal","mir","sVal","tmi","tmj","tmk","v1","members","orientation","mirror","identical","addSpot","clear","polyList","pl","lineWidth","strokeStyle","holes","queue","outlineAroundHoles","fld","oldList","cnt","newList","tempSet","base","flap","v2","foldPoints","segPoints","sp","set","quant","xCur","yCur","holeList","punchedHoles","tableSpots2","holeSpot","ANS_MULT","tSpots","inThere","tb","sp1","sp2","affected","lCandidate","oCandidate","over","tbl","under","validity","poly","cand","flapPoly","pVal","poly1","poly2","tempPoint","testHist","testLine","topFold","trimmedPoly","edgeCase","antiKey","addVertex","contains","fillColor","multiplier","stroked","radius","arc","outline","fNum","newY","alter","_super1","spot","qu","canv","nctx","lineCap","globalCompositeOperation","drawImage","canvases","ctxes","hl","vert","fp","hit1","hit2","generateOptionObject","answerSpots","checkValidity","checkUniqueness","optObj","mult","myPoly","mySet","v1x","v1y","v2x","v2y","punchHole","falseMirror","falseFold","falsified","flsPg","newFldLine","copyOfPunchedHoles","falseRelocate","falseCandidate","mover","newSpot","unmovable","spt","spts","Cube","Structure","opt","pzlHeight","pzlWidth","float","textAlign","borderRadius","view","COLUMNS","seed","createPattern","visible","tallySides","cb","front","h","lip","obstuctColumn","side","ROWS","cb1","cb2","div","cube","hldr","holder","holder2","HEIGHT","bottom","left","top","xScale","yScale","iter","upperCubes","testStructure","_results2","getBaseStructure","initialDisplay","newangle","originangle","x2","y2","x3","y3","x4","y4","correctOnRight","getCursor","rect","getBoundingClientRect","clientX","clientY","drawDynamic","drawFinal","getResult","squarePointer","xa","ya","startX","startY","SIZE","strokeRect","crosshairPointer","dotPointer","drawBase","sane","ghostX","ghostY","ratio","angChos","angCorr","angle1","angle2","angle3","p1x","p1y","p2x","p2y","xb","yb","QUIZZES","LAYER_X","LAYER_Y","clearLayers","clearPuzzle","init","setDifficulty","rd","onclick","getElementsByName","checked","radios","ag","li","PUZZLE_X","PUZZLE_Y","ele","webpackAsyncContext","then","ids","FlexBox","styled","_templateObject","_taggedTemplateLiteral","Column","_templateObject2","Row","_templateObject3","GutterContainer","_templateObject4","GutterInner","_templateObject5","GutterWrapper","children","props","_jsx","GutterRow","_excluded2","GutterColumn","_excluded3","titleBarPadding","_templateObject6","rowStyles","Links","_templateObject7","titleSize","SiteLink","isActive","img","useBeforeUnload","preventReload","handleBeforeunload","useCallback","beforeunloadEvent","returnValue","preventDefault","useEffect","addEventListener","removeEventListener","useDocumentTitle","useAsync","asyncFunction","immediate","_useState3","useState","_useState4","pending","setPending","_useState5","_useState6","setValue","_useState7","_useState8","setError","execute","catch","finally","useMasteryArray","contentIds","_fetchProgress","_useState9","_useState10","setProgresses","hashKey","results","update","contentId","_getAllQuestionMaster2","fetchProgress","useDebounce","_useState13","_useState14","debouncedValue","setDebouncedValue","handler","VALID_BOOTCAMPS","BOOTCAMP_MEMBERSHIP_GROUPS","determineBootcamp","subdomain","host","isValidSubdomain","isAppSubdomain","_window$location$path","_window$location$path2","_path","_path2","_path3","_path4","_path5","UserDataContext","createContext","UserDataProvider","setDarkMode","darkModeEnabled","getDarkModeTheme","_fetchTestProgress","_getCognitoUser","_getIntercomVerificationHash","_runMasteryUpdater","_getUserModel","_saveUserInteraction","_getUserInteractions","_loginLimitCheck","_refreshIntercomUserAttributes","_initializeTbcUser","_handleLoginProtection","_dailyUpdate","_refreshSession","_handleAuthEvent","_refreshAndSearchUserInteractions","_toggleDarkMode","_userModel$membership","_userModel$membership2","_cognitoUser$attribut","_useState","getUsername","_useState2","cognitoUser","setCognitoUser","userModel","setUserModel","userQuestionMastery","testProgress","setTestProgress","loadedUserData","_useState11","_useState12","interactions","setInteractions","setUserId","_useState15","_useState16","setLoading","_useState17","_useState18","intercomUserAttributes","setIntercomUserAttributes","_useState19","_useState20","setBootcamp","_useState21","_useState22","bootcampLoading","setBootcampLoading","getCognitoUser","currentAuthenticatedUser","bypassCache","getIntercomVerificationHash","fetchResult","_yield$fetchResult$js","hash","headers","runMasteryUpdater","request","getUserModel","username","_cognitoUser","_yield$createUser","newUser","attributes","saveUserInteraction","force","trackInIntercom","interactionId","existingInteraction","_args6","IntercomAPI","getUserInteractions","loginLimitCheck","userInteractions","onSignIn","_cognitoUser$signInUs","_cognitoUser$signInUs2","_cognitoUser$signInUs3","loginsInteractionId","loginsInteraction","logins","currentAuthTime","signInUserSession","accessToken","auth_time","LOGIN_LIMIT","handleLoginProtection","initializeTbcUser","_callee10","_window","_window$location","_cognitoUser2","_userModel","_interactions","_findStartAndEndDates","user_hash","intercomParams","_cognitoUser2$attribu","_cognitoUser2$attribu2","urlParams","verificationCode","recentBootcamp","_args10","_context10","activeMembership","membershipExpirationDate","idToken","interaction","search","URLSearchParams","sub","optInVerified","dailyUpdate","_callee11","_cognitoUser$signInUs4","_cognitoUser$signInUs5","_cognitoUser$signInUs6","_context11","signOut","clearCurrentUser","streakDetails","longestStreak","lastIntercomUpdate","currentTime","_findStartAndEndDates2","membershipActive","_intercomUserAttribut","masteryUpdate","_intercomUserAttributes","localStorage","getItem","getUserGroups","tagCount","setItem","handleAuthEvent","_callee14","_context14","callWithUser","Hub","listen","isAdmin","isFreeTrial","isBootcampPlusStudent","isAwaitingPayment","upgradedMembership","trialMembership","loggedIn","USER_ID","fetchProfilePicture","_callee17","personalProfilePictureUrl","_context17","_useAsync","profPicUrl","fetchError","fetching","refreshSession","_callee13","refreshedCognitoUser","session","refreshUserModel","refreshInteractions","_findStartAndEndDates3","_args13","_context13","currentSession","refreshToken","fetchTestProgress","testProgressId","_yield$getTestProgres","testProgressResult","searchUserInteractions","refreshAndSearchUserInteractions","_callee15","_interactions2","_context15","validBootcamps","HAS_EDIT_CAPABILITY","refreshIntercomUserAttributes","intercomUser","toggleDarkMode","useUserData","Provider","useUserDataContext","useContext","H1","h1","H2","h2","H3","h3","H4","h4","_ref30","_ref31","H5","h5","_ref39","H6","h6","_ref40","_ref42","_ref43","Body1","_templateObject8","_ref47","_ref48","Body2","_templateObject9","_ref53","_ref54","_ref55","_ref56","_ref57","_ref58","Body3","_templateObject10","_ref59","_ref60","_ref61","_ref62","_ref63","_ref64","Body4","_templateObject11","_ref65","_ref66","_templateObject12","_ref67","_ref68","_ref69","_ref70","_ref71","_ref72","Label2","_templateObject13","_ref73","_ref74","_ref75","_ref76","_ref77","_ref78","_templateObject14","_ref79","_ref80","_ref81","_ref82","_ref83","_ref84","Label3","_templateObject15","_ref85","_ref86","_ref87","_ref88","_ref89","_ref90","KeyboardShortcutLabel","_templateObject16","_ref91","_extends","assign","bind","target","source","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgReviews","svgRef","titleId","viewBox","xmlns","ref","ForwardRef","SvgHome","strokeLinecap","strokeLinejoin","Icon","HomeIcon","Home","StudentReviewsIcon","Reviews","SearchIcon","MagnifyingGlass","Container","disabled","IconButton","defaultProps","button","attrs","fixed","buttonType","getButtonTypeStyles","TextButton","iconConfig","onClick","OpenIndicator","ChevronDown","open","Button","Link","RaisedButton","as","LoadingSpinner","Spinner2","keyframes","Loader","_templateObject17","active","_templateObject18","_ref12$theme$colors","FullPageSpinnerContainer","_templateObject19","_templateObject20","FullContainerSpinnerContainer","_templateObject21","_templateObject22","FullPageSpinner","FixedBar","_templateObject23","_templateObject24","_templateObject25","barHeight","_templateObject26","_templateObject27","src","DATBootcampLogo","_templateObject28","BootcampLogoSVG","_templateObject29","SvgBadge","fillRule","clipRule","iconPosition","getButtonSizeStyles","colorConfig","_theme$colors","primaryColor","primaryDark","primaryHover","ghostHover","Wrapper","span","IconWrapper","addSpacing","LinkWrapper","renderIcon","buttonProps","iconSize","addIconSpacing","_jsxs","Badge","linkButtonTypes","LinkButton","to","ButtonComponent","useTestProgressArray","_fetchTestProgress2","_fetchTestProgresses","_useUserDataContext2","fetchTestProgresses","useMastery","setProgress","_useUserDataContext3","_fetchProgress2","userIdOverride","_useUserDataContext4","usePrevious","useRef","useHistoryState","initialValue","useHistory","_history$location$sta","state","rawState","rawSetState","ContainerBackground","Content","Left","Center","Right","LoadingWrapper","StyledLink","LoggedIn","Fragment","Upgrade","Account","LoggedOut","LogIn","SignUp","customOpen","modalContainerStyle","ModalContext","useModalContext","initialState","componentProps","enableClickClose","navModal","reducer","action","renderInContainer","ModalProvider","_useReducer","useReducer","_useReducer2","dispatch","modalState","modalDispatch","Modal","withRouter","_useModalContext","_useModalContext$moda","stayOpen","Component","close","modalComponent","ReactDOM","createPortal","displayName","_path6","_path7","_path8","_path9","_path10","_path11","CarouselContainer","maxCardHeight","CarouselSlide","slideIndex","activeIndex","ControlContainer","ControlDots","ControlDot","ControlButtons","LeftArrow","ChevronLeft","RightArrow","ChevronRight","Slide","slide","setHeight","debounce","useLayoutEffect","Carousel","setActiveIndex","slideHeights","setSlideHeights","updateHeightByIndex","tallestCard","stopPropagation","Heading","HeadingName","HeadingSchool","HeadingResultContainer","HeadingResultScore","HeadingResultPercentile","Comment","StudentImageContainer","StudentImage","StudentImageIconContainer","StudentImageIcon","badge","UpdatedStudentImage","RatingContainer","StarIcon","Star","Rating","Name","SubHeader","datOutcomes","ali","oatOutcomes","inbdeOutcomes","tehaum","sara","julie","anatomyOutcomes","samantha","baranda","Hero","Label1","Label4","outcome1","tiffanie","outcome2","alex","outcome3","caroline","outcome4","brittany_prude","outcome5","isabella_trybula","outcome6","octavio_ordaz","outcome7","raksha_pampliega","nclexOutcomes","kelley_campbell","SvgSmile","strokeWidth","SvgClick","_g","_defs","SvgVideos","clipPath","transform","UpgradeCallout","UpgradeHeader","UpgradeSubHeader","UpgradeFeaturesTable","UpgradeFeaturesTableRow","UpgradeFeaturesTableRowIconContainer","UpgradeFeaturesTableRowText","datFeatures","_Fragment","Smile","Click","Videos","oatFeatures","inbdeFeatures","anatomyFeatures","anatomyTrialFeatures","Checkmark","CheckmarkCircle","nclexFeatures","SuperContainer","UpgradeContainer","UpgradeSection","FeatureSection","GradientWrapper","OutcomeSection","ButtonContainer","CloseButton","CancelButton","upgradeDisplayConfig","dat","features","outcomes","oat","inbde","anatomy","trialFeatures","_useUserDataContext","setVisible","isLaptop","documentElement","clientWidth","isTablet","_useState4$","setBreakpoints","updateBreakpoints","_upgradeDisplayConfig","X","UserIconContainer","ExpirationNotificationContainer","UpgradeBadge","User","Close","LogInButton","SignUpButton","UpgradeButton","_ref16$children","_ref16$to","getTrialMessage","trialExpiration","_ref19$type","_ref19$size","_ref19$color","_ref19$fixed","_ref19$children","sharedProps","UpgradeModal","DefaultProfilePictureContainer","ProfilePictureImage","StyledDefaultProfilePicture","DefaultProfilePicture","_ref22$size","Avvvatars","ExpirationNotification","_userModel$activeMemb","activeMembershipType","daysLeft","expirationDate","unix","now","asDays","getDaysLeft","roundedDaysLeft","expirationText","_ref23$onClick","_ref23$buttonType","_ref23$type","_ref23$size","handleGoBack","goBack","canGoBack","urlParts","previousPath","encodeURIComponent","resolveIconPath","iconPath","require","updateQuestionProgressState","updater","params","updatedQuestionProgress","updateQuestionProgressData","_updateQuestionProgressData","startTime","_questionProgresses$q","timeElapsed","_updateQuestionProgre","updatedProgress","blockArrayIndex","questionBaseId","crossedAnswerIndexes","indexes","originalTestId","seen","fullCredit","partialCredit","noCredit","updateQbQuestionProgress","normalizeHighlights","highlights","MenuIcon","MenuIconImport","MenuButton","List","Arrow","ArrowForwardOutline","Locked","ListItem","ItemLink","Current","ItemNameWrapper","MobileTop","MobileBottom","AccountButtonWrapper","getMenuItems","onMenuItemClick","includeStudentReviewLink","releaseDate","directRoute","isRouteActive","elementProps","SVG","AccountButton","BottomLoggedIn","BottomLoggedOut","Menu","setMenuOpen","menuOpen","barHeightMobile","handleClick","Breadcrumb","activeDepth","Separator","slugOverrides","Breadcrumbs","lockAtDepth","customActiveTitle","basePaths","paths","crumbs","crumb","getCrumbText","link","StyledStartButton","inMenu","fullWidth","CloseIcon","StyledNavButton","StyledUpdatedCheckButton","StyledBookmarkButton","UpdatedPreviousButton","oldUseHotkeys","ArrowBackOutline","UpdatedCheckButton","useHotkeys","hotkeyDisabled","UpdatedNextButton","BookmarkButton","Bookmark","UpdatedExhibitButton","exhibitType","Calculator","Template","TitleWrapper","StyledHomeButton","_ref24$destination","StyledRight","renderMenuItems","NavBar","withoutMobileBorder","titleComponent","_ref18$hideMenu","hideMenu","_ref18$withHomeButton","withHomeButton","showLogo","showUpgradeButton","anatomyRouteStyles","UpgradeRouteContainer","withoutPadding","fullHeight","checkRoutePermissions","allow","authenticated","pathArgs","redirectTo","ProtectedRoute","_computedMatch$params","routeProps","defaultAuthState","_useState2$","setAuthState","computedMatch","routeBootcamp","_searchUserInteractio","_getStreakDetails","streakData","permissionProps","prevState","authenticate","Route","Redirect","TBCRoute","UpgradeRoute","_ref30$fullHeight","_excluded6","TbcNavBar","ToggleSidebarButton","ToggleSidebarIcon","Collapse","ToggleSidebar","showingSidebar","SvgBootcampWhiteTextLogo","StyledBootcampLogo","BootcampLogo","Background","Status","Maintenance","adminConfig","statusHTML","dangerouslySetInnerHTML","__html","formatRoute","parentRoute","grandparentRoute","greatGrandparentRoute","substring","url","indexContent","contentTypeName","parentName","activeMembershipGroups","contentTypeContent","keywords","video","indexContentTypes","BootcampConfigContext","BootcampConfigProvider","bootcampConfigLoaded","setBootcampConfigLoaded","expandedSearchConfig","setExpandedSearchConfig","configFetch","themeKey","newThemePalette","themePaletteString","expandedConfig","expandedJSON","asyncExpandConfig","useMemo","indexedConfig","colorMap","indexConfig","getQuestionCounts","questionCounts","adminConfigFetch","useBootcampConfigContext","Section","StyledOpenInNew","ArrowUpRight","LinkRowContainer","StyledBadge","LinkRow","LinksContainer","FolderContainer","FolderHeading","FolderBody","StoreIcon","MobileAppStoreIcons","LinkFolder","savedState","setOpen","oatLinks","AcademicCap","DocumentText","ChartSquareBar","TagMultiple","CalendarLtr","TargetArrow","People","Heart","QuestionCircle","ChatMultiple","datLinks","hideOnHome","Laptop","DataHistogram","Search","PlayCircle","ClipboardTask","inbdeLinks","DocumentArrowDown","msbLinks","Stethoscope","Stack","Lightbulb","ThumbLike","mcatLinks","Book","Target","dsbLinks","linksConfig","chemistry","BriefcaseMedical","DocumentBulletListMultiple","headings","sections","_sections$filter","_sections$filter2","SvgGridIcon","Title","Options","Option","OptionDetails","Folder","activeBootcamp","defaultOpen","details","currentlyStudying","handleLinkClick","MenuContainer","MenuWrapper","trackOptions","Grid","MenuComponent","track","option","_ref2$theme$colors","UIButtonText","IconComponent","UIButtonContainer","_ref4$color","palette","activeBackground","hoverBackground","disabledBackground","textColor","activeTextColor","disabledTextColor","disabledHoverTextColor","RoundButtonText","mini","RoundButtonContainer","DefaultButton","Text","containerProps","tabIndex","Chiclet","RoundButton","contentTypesByBootcamp","defaultMasteryObject","learning","reviewing","mastered","untagged","recursiveToggleState","validate","recurse","updatedChildren","someChecked","formatAdditionalContent","defaults","defaultToggled","free","getStateForContentType","indexClassroomBySubjectId","contentTypeFilters","subjects","indexedContent","acc3","_curr$content","acc4","_curr2$lessons","rowId","nanoid","parentId","acc5","curr3","grandparentId","initState","additionalState","formatMasteryData","_data$data","QuestionMasteryByTestId","questionMasteryQuestionId","TestState","questionLimitByBootcamp","initStateForBootcamp","preclinical","bites","initMedSchoolState","initAnatomyState","filteredClassrooms","questionBank","mockExam","initINBDEState","useTestState","parentLoading","submitting","setSubmitting","getDefaultTypeForBootcamp","setType","setState","setData","newState","_Object$values","_children$id","nestedId","getTestIdsFromStateStructure","masteryByType","loadingMastery","setMode","masteryFilter","setMasteryFilter","testCount","setTestCount","selectAll","setSelectAll","testCounts","_mastery$testId3","_mastery$testId4","subjectCounts","_Object$keys5","_data$subjectId","_data$subjectId2","nestedChildren","topicCounts","_Object$keys6","_data$subjectId3","_data$subjectId4","_config$classrooms2","getFreeTestIdsFromConfig","_Object$keys7","_Object$keys$reduce2","_mastery$testId5","_mastery$testId6","masteryLevelFallback","matchesDefaults","subjectFilter","subjectFilterMatch","dataObject","defaultSubject","_dataObject$subjectKe","subjectKey","_key$split$","masteryTotals","_Object$keys$reduce","_mastery$testId","_mastery$testId2","initSubjectMasteryFilter","settings","methods","newType","maxQuestions","TestStateContextProvider","_useBootcampConfigCon","useCreateTestState","Header","Label","label","Count","CustomInputWrapper","InputCheck","Check","TooltipContainer","Minus","InputHoverWrapper","StyledTooltip","Tooltip","maxWidth","TextTooltip","_ref16$hideIcon","hideIcon","Info","DismissIconWrapper","DismissIcon","Dismiss","_rect","_rect2","SwitchWrapper","Switch","Slider","HeaderWrapper","Mode","_useCreateTestState","_useCreateTestState$v","handleChange","modeType","newValue","modeState","marginBottom","InputWrapper","Input","StyledCustomInputWrapper","valuesByBootcamp","Type","_valuesByBootcamp$boo","_subject$children","_subject$children$tes","htmlFor","Tags","row1","row2","tooltipText","rx","RowWrapper","RowText","Expand","toggled","ToggleControl","TestInputWrapper","depth","SelectAllWrapper","ExpandCollapse","LockedBadge","InputComponent","_ref15$depth","containerRef","MemoizedInput","React","memo","onChange","expandAll","_ref16$defaultToggled","setToggled","previousExpandAll","inputContainerRef","checkedSubjectTotals","_inputContainerRef$cu","_children$key","testName","Questions","setExpandAll","_useCreateTestState$m","previousMasteryFilter","handleSubjectChange","_data$id","subjectChecked","handleTopicChange","topicChecked","testParentId","handleTestChange","updateKey","handleOnChange","_event$target","handleSelectAllChange","handleExpandAllChange","dataKeys","column1","ceil","column2","headerText","Plus","StyledHeader","Subheader","durationMultiplier","formattedString","borderBottom","inputMode","onBlur","clampedValue","marginTop","MoveQuestionToTest","questionConnection","modes","loadingBlockId","finishedLoading","SvgCalculator","SvgFlag","SvgClock","SvgSettings","_rect3","_rect4","SvgQuestionIcon","SvgEnd","SvgNavigator","SvgArrow","_pattern","SvgAlert","xmlnsXlink","patternContentUnits","xlinkHref","SvgFlagsFilled","SvgFlagFilled","SvgReviewIncomplete","SvgPause","SvgClose","CloseSVG","PopupButton","Box","BoxSection","ButtonIconStyle","Check2","draggable","FlagIcon","FlagSVG","marked","withColor","ClockIcon","ClockSVG","SettingsIcon","SettingsSVG","QuestionIcon","QuestionIconSVG","CalculatorIcon","CalculatorSVG","EndIcon","EndSVG","NavigatorIcon","NavigatorSVG","AlertIcon","AlertSVG","LeftArrowIcon","FlagsFilledSVG","FlagFilledSVG","ReviewIncompleteSVG","PauseSVG","ArrowSVG","RightArrowIcon","HoverButton","AlertContainer","AlertHeader","_templateObject30","AlertBody","_templateObject31","AlertText","_templateObject32","AlertButtons","_templateObject33","AlertButton","_templateObject34","faded","_templateObject35","AlertPopup","headerContent","alertText","buttonConfig","marginRight","ButtonWrapper","Cancel","Confirm","LoaderWrapper","prometricStyling","mcatTheme","SubmitAnatomyCase","bodyText","confirmConfig","cancelConfig","preventEscape","_ref30$textAlign","redirect","formatPath","handleConfirmClick","onConfirm","shouldRedirect","onError","handleCancelClick","onCancel","errorText","SubmitModal","FullScreenAnimation","lottieConfig","Lottie","maxHeight","animationData","OptionBox","OptionTitle","OptionDescription","OptionContents","StyledSwitch","TestSettings","isFullLengthTest","prometricDelay","testTitle","TimeUp","SectionTimeUp","ProceedToSection","canDismiss","onErrorDefault","Submit","_ref4$onError","safeDocument","useScrollBlock","scrollBlocked","scrollBarWidth","bodyPaddingRight","getComputedStyle","getPropertyValue","overflow","paddingRight","fixedOnMobile","Side","Callout","CalloutHeading","CalloutSubheading","FeaturesList","FeatureRow","FeatureIcon","FeatureText","Interactions","InteractionItem","MobileInteraction","ReviewHeading","ReviewCarousel","StyledButton","BootcampLockdown","_config$features","isExpiredSubscription","isPremiumFeature","_ref37$fixedOnMobile","_ref37$showClose","showClose","_ref37$showInteractio","showInteractions","_ref37$showReviews","showReviews","_ref37$showFeatures","showFeatures","subheaderText","upgradeText","_useScrollBlock","_useScrollBlock2","blockScroll","allowScroll","reviewHeading","reviews","composeQuickStudyByContentType","_fetchDrawPile","_assembleTest","testLength","allQuestionMastery","allQuestionMasteryItems","fetchDrawPile","assembleTest","excludedQuestionIds","filteredQuestionIds","composedTest","_args5","getListOfLearningReviewingQuestions","_yield$getQuestionFor","questionPool","lectures","_ref15$data$getTest","_testBlock$components","mappedBlock","userIdHashSubjectTagId","masteryResult","QuestionMasteryBySubjectTagId","composeQuickStudy","limitedPool","questionSets","questionsPerBlock","_items","_items$j","_args8","promises","tests","learningAndReviewingIds","composeQuickReview","learningAndReviewingItems","testIdToFetch","drawPile","_items2","_yield$getTest","fetchedTest","formatTestFromQuestions","questionContainer","restoreCustomTest","otherConfig","formattedTest","composeCustomTest","getQuestionIdsByTestId","draftRound","onlyCaseStudies","questionIdsByTestId","difference","learningReviewing","taggedMasteryLevel","_ref11$data$getTest","_curr$userIdHashTestI","_curr$userIdHashQuest","_processTestId","processTestId","questionsToAdd","maxSequentialQuestions","currentSequentialQuestions","remainingSequentialQuestions","sequentialQuestionsToAdd","nonSequentialQuestionsToAdd","questionsToAddByTestId","testLengthIndex","currentCutoff","truncateIndex","truncatedTestLength","_unfilteredConnection","testQuestionPool","selectedQuestion","_selectedQuestionMast","selectedQuestionMastery","savedMasteryLevel","_yield$getQuestionBas2","unfilteredConnections","sequentialBlock","_yield$getTestBlockWi","_block$blockConnectio","_block$components","_connection$question","Boolean","toISOString","TestContext","byTestNameAndNumeral","thenBy","numeral","useTest","setTest","setTests","setCustomTestConfig","fetchTest","_test","_args","_testBlock$questionCo","fetchTests","_tests","filterTests","excludeIds","composers","_args3","reload","_yield$customTestComp","_yield$customTestComp2","customConfig","savedTestsInteractionKey","savedTests","customTestComposers","testList","_yield$customTestComp3","_yield$customTestComp4","TestProvider","useTestContext","recursiveGetTestIds","_recursiveGetTestIds","_handleSubmit","_handleSubmitByBootcamp","handleSubmit","subjectNames","checkedSubjects","mounted","ContentWrapper","CreateTest","setMounted","CreateTestWrapper","CreateTestButton","disableModal","AddSquare","sideBarWidth","withBottomPadding","LogoWrapper","Details","DetailsText","StyledCreateTestButton","bootcampMap","BootcampTitle","StyledChevron","trackSelectOpen","StyledTrackSelectMenuComponent","SideBar","setTrackSelectOpen","_containerRef$current","StarLogo","TextLogo","rel","getFullYear","StyledSideBar","HideButton","nonContextConfig","ResultWrapper","tabbed","ResultTitle","darkGrey","ContentType","BlockType","blockTypeMap","questionSet","lesson","Result","blockType","Results","resultsRef","activeElement","parentNode","targetElement","nextSibling","previousSibling","focus","_resultsRef$current$c","KeyboardShortcutPill","ConfigSearch","setSearch","hits","setHits","setActive","debouncedSearch","inputRef","_inputRef$current","_inputRef$current2","blur","processedSearch","word","intermediateData","lowerKey","mapStep","_step$value","reduceStep","placeholder","onKeyDown","_resultsRef$current","keyCode","navigator","platform","ChevronButton","StyledChevronLeft","StyledChevronRight","StyledConfigSearch","StyledContainer","SectionTitle","ItemWrapper","Item","ItemTitle","StyledMenu","StyledMenuButton","StyledContent","ArrowForward","sectionTitles","upNext","ignore","fromConfig","withoutBorder","AccountPage","itemProps","_key","goForward","paddingLeft","_key2","RouteBackground","NavBarRouteContainer","DEFAULT_THEME_PALETTE","SideBarRouteContainer","NavBarWithSideBar","bootcampRequired","_bootcampSpecificRout","freeRoutes","bootcampSpecificRoutes","_props$computedMatch$","PageContainer","GradientBackground","SideBarRoute","useDefaultPalette","classroomTheme","LeftWrapper","Wave","WaveMobile","SvgWrapper","AnimationWrapper","HomeButton","MessageButton","CenterRow","ButtonRow","NotFound","wavePng","wavePngMobile","loop","padBar","withMargin","Segment","isLast","_ref8$spacing","Marker","targetMet","BareMarker","accountForPadding","TargetLabelContent","BarMarkerContainer","LabelTop","targetNumber","targetLabel","ProgressBarLabel","defaultColors","defaultSegments","ProgressBar","segments","showLabel","segmentHeight","showPercentage","_ref20$padBar","_ref20$bareLabel","bareLabel","labelTop","showLabelTop","_ref20$withSuffix","withSuffix","markPosition","countSum","segment","defaultLabel","lastIndexWithCount","imageDimension","Images","alignImages","getContainerHeight","ImageContainer","scaledDimension","getImagePosition","Image","alignPreface","whiteMode","TextContainer","textPosition","ledByTextOrientation","ledByOrientation","withBorder","NameStringWrapper","layout","NameString","ExpertEducators","preface","educatorNameLayout","slicedEducators","educatorNames","names","withPunctuation","nameStringFormatter","educator","educatorAvatars","displayAsCount","SubTitle","Progress","ActionWrapper","StudyButtonWrapper","StyledTag","Tag","StyledExpertEducators","defaultProgress","Overview","subTitle","actions","_ref39$showProgress","showProgress","hasProgress","progressLabel","showCreateTestButton","showStudyTaggedQuestionsButton","showingDuration","showingTotalQuestionCount","totalQuestionCount","showingCourseCount","courseCount","completed","progressSegments","TaskListSquareLtr","VideoClipMultiple","Active","ItemContainer","sticky","Placeholder","externalLink","useLocation","pathParts","currentPath","rootPath","linkTo","PageTabs","tabs","setSticky","dragging","setDragging","stickTabs","paddingTop","handleMouseDown","handleMouseUp","_ref$current","_previousPosition","Waypoint","onLeave","onEnter","topOffset","PropTypes","ScrollContainer","resetScrollPosition","_document","_document$querySelect","styledComponentId","scroll","AdditionalInfo","IconContainer","ErrorIcon","AlertCircle","CompleteIcon","CheckmarkCircle2","ErrorContainer","InputDecorator","additionalInfo","complete","_ref24$hideInfo","hideInfo","inputProps","validation","_useFormContext","useFormContext","register","watch","clearError","DatePicker","_useFormContext2","RevealedIcon","Eye","HiddenIcon","EyeOff","Password","revealed","setRevealed","_useFormContext3","FieldRenderer","Field","Fields","StyledForm","form","Form","onSubmit","formMethods","noValidate","FormWrapper","defaultValues","FormContext","useForm","StyledFormProgress","FormProgress","_ref3$children","activeProps","setActiveProps","setWidth","_ref4$stepSize","stepSize","_ref4$activeProps","nextIndex","previous","_ref5$stepSize","_ref5$activeProps","previousIndex","updateDimensions","Child","svg","HiddenCheckbox","Select","select","minWidth","renderOptions","FieldGroup","SubmitContainer","SubmitButton","LinkButtonContainer","stripePublishableKey","stripePromise","loadStripe","DiscountInputWrapper","SummaryLoader","CheckoutContainer","SectionWrapper","Summary","SummaryTotal","SummaryTotalDenomination","SummaryDollarAmount","LineItem","LoadingAnimation","LineItemIcon","lineItemType","LineItemDetails","LineItemText","LineItemHeader","LineItemSubHeader","LineItemPrice","CardInput","focused","InputTransition","DiscountCodeToggle","AnimationContainer","FinishedLink","incrementCouponRedemptions","_incrementCouponRedemptions","couponId","fetchPaymentIntent","_fetchPaymentIntent","discountCode","receiptEmail","referral","_yield$invokeLambda","payment_intent","fetchPrice","_fetchPrice","_yield$invokeLambda2","createSubscription","_createSubscription","paymentMethodId","_yield$invokeLambda3","formatPrice","DiscountGroup","StyledDiscountCode","isValid","isComplete","showingInput","setShowingInput","InputRef","PaymentRequestButtonElementContainer","PaymentOptionText","FormLoader","TermsOfUse","bootcampTitleMap","createCohortUserLink","cohortId","addUserToCohort","_addUserToCohort","membershipInput","activationCode","userMembershipsId","redeemedAt","membershipId","Checkout","_summaryData$metadata","_summaryData$metadata2","_summaryData$metadata3","_summaryData$metadata4","onFinished","cardElementFocused","setCardElementFocused","_useDebouncedState","durationInMs","internalState","setInternalState","useDebouncedState","_useDebouncedState2","setDiscountCode","_useState6$","originalPrice","discountedPrice","promoCodeId","setPrice","cardInfoComplete","setCardInfoComplete","summaryData","setSummaryData","checkedBrowserPaymentMethods","setCheckedBrowserPaymentMethods","paymentRequest","setPaymentRequest","stripe","useStripe","elements","useElements","membershipType","formattedOriginalPrice","formattedDiscountPrice","country","currency","ev","paymentIntent","clientSecret","metadata","_yield$stripe$confirm","_yield$stripe$confirm2","confirmCardPayment","payment_method","paymentMethod","handleActions","findStartDate","handlePaymentComplete","canMakePayment","processPayment","skipProcessing","card","getElement","CardElement","createPaymentMethod","paymentMethodError","membershipGroups","_userModel$membership3","extendableMemberships","membershipGroup","_x21","_x22","_x23","productName","TagManager","dataLayer","rewardful","calculatedPrice","_getSummaryData","getActivePrice","getSummaryData","bootcampTitle","FREE_PURCHASE","persist","durationString","Number","isInteger","PaymentRequestButtonElement","paymentRequestButton","onFocus","fontSize","lineHeight","_yield$createPaymentM","appliedDiscount","_yield$createSubscrip","subscription","_subscription$items","_subscription$items$d","_price$metadata","_subscription$plan","_subscription$plan$me","plan","_x20","_window$Rewardful","_userModel$membership4","_yield$fetchPaymentIn","_yield$processPayment","Rewardful","FinishedAnimation","eventListeners","checkoutCompleteAnimation","lottieEventListeners","Finished","paymentIntentId","onAnimationFinished","StyledSequence","Sequence","ContextWrapper","finishedLink","SequenceWrappedCheckout","finished","Elements","showHeader","FormSubmit","formState","VerifyEmail","verifyCurrentUserAttributeSubmit","VERIFY_EMAIL_FORM_CONFIG","autoFocus","required","ModalContainer","VerifyEmailModal","ChangePassword","oldPassword","confirmPassword","changePassword","CHANGE_PASSWORD_FORM_CONFIG","minLength","ChangePasswordModal","TitleBar","Detail","DetailLabel","invalid","DetailContent","ChangePasswordLink","FieldSubmitButton","touched","isSubmitting","isSubmitted","updateCognitoUserAttributes","updateUserAttributes","nameFieldConfig","FirstNameForm","VerifyLink","EmailForm","openVerifyEmailModal","verifiedEmail","email_verified","emailFieldConfig","usernameFieldConfig","UsernameForm","ProfilePictureContainer","ProfilePicturePrompt","ProfilePicture","_ref9$size","_ref9$imgComponent","imgComponent","_ref9$showPrompt","showPrompt","ProfileImage","uploadProfilePicture","file","maxSize","files","uploading","executeUpload","_useAsync2","imageLoading","hiddenInput","accept","StyledProfilePicture","TestDateForm","testDateKey","currentTestDate","testDateForm","testDate","PersonalDetails","_useUserDataContext5","showTestDateInput","FixAlert","FixButton","MasteryDetails","deleteAllQuestionMastery","batchSize","batches","batch","batchPromises","userIdHashTopicTagId","userIdHashTestTagId","deleteMastery","fixMastery","ViewAccountLink","updatePaymentMethodAndRetryInvoice","_updatePaymentMethodAndRetryInvoice","invoiceId","customerId","subscriptionId","updatedInvoice","updatePaymentMethod","_updatePaymentMethod","updatedCustomer","handlePaymentMethodUpdate","_handlePaymentMethodUpdate","membershipStatus","UpdatePaymentMethod","latestInvoiceId","showAccountLink","_yield$handlePaymentM","History","viewing","Toggle","LoadingIndicator","Table","SubscriptionTable","payments","amountPaid","last4","DefaultTable","fetchInvoicesForSubscription","_fetchInvoicesForSubscription","expand","invoices","intentId","loadOneTimePaymentHistory","_loadOneTimePaymentHistory","paymentIntents","extensions","loadSubscriptionPaymentHistory","_loadSubscriptionPaymentHistory","subscriptionDetails","formatSubscriptionPaymentHistory","_invoices$data","_charge$payment_metho","_charge$payment_metho2","amount_paid","created","charge","payment_method_details","formatOneTimePaymentHistory","_charges$data$","_charges$data$$paymen","_charges$data$$paymen2","_ref22$paymentIntent","charges","PaymentHistory","setViewing","setPayments","formatted","load","TableComponent","extensionIdsByBootcamp","extensionPriceIdMap","ContactButton","ResumeMembership","ManageMembership","billingDetails","pendingCancellation","nextInvoice","latestInvoice","ModalSide","ModalHeader","ModalFooter","CloseModal","ModalBody","ExtensionInput","ExtensionContainer","selected","ExtensionLabel","ExtensionPrice","SelectExtensionOptionModal","selectedExtension","setSelectedExtension","alignItems","flexDirection","textDecorationLine","fontWeight","savings","MembershipTitle","MembershipDetails","Action","titleMap","MedSchoolBootcamp","DentalSchoolBootcamp","fetchBillingDetails","_fetchBillingDetails","billingInformation","getMembershipBootcamp","getBootcampSlug","getMembershipType","plusPackAccessType","usesProPlus","expiration","years","months","formatDuration","getExpirationDate","getNextInvoiceDate","lastAmountPaid","Card","setSubscriptionDetails","_getActionForStatus","_membership$extension","_action","activeExtension","proposedEndDate","openExtensionModal","actionText","customer","return_url","_action2","bootcampSlug","bootcampRoute","actionConfig","externalActionLink","actionLink","slugMap","getActionForStatus","wrapperProps","CalloutContainer","CalloutText","trackGroups","Dentistry","Chemistry","Anatomy","Optometry","getMembershipsByBootcamp","isExtension","consolidateExtensions","trackGroup","accType","Memberships","membershipsByTrack","MembershipCard","StyledInputDecorator","_user$memberships","_user$memberships$ite","_user$memberships$ite2","cohortUserLink","queryCohortUserLinksByGsiUserCohorts","CodeRedemption","_handleRedemption","cognitoUsername","setName","setMembership","_useMembershipCodes","fetchActivationCodes","codes","useMembershipCodes","userCodes","redeemCode","_code$cohort","isRedeemed","_membership","formattedExpirationDate","cohort","toLocaleDateString","StyledTable","textDecoration","StyledOverview","ProfilePageContainer","StyledPersonalDetails","StyledResetMastery","ResetMastery","StyledBreadcrumbs","LogOutButtonContainer","LogOutButton","ProfilePage","pageComponents","profile","activeTab","setActiveTab","pageTitle","Helmet","ToggleButton","ElementContainer","expanded","Element","setExpanded","FAQs","_ref11$heading","heading","fetchFAQs","_result$items","cachedFAQs","fetchedFAQs","expires","Cache","FAQ","distributeEvents","events","daysOff","hoursPerDay","studySpeed","eventsByDate","currentDate","currentDayEvents","currentDayTime","eventTime","estimatedTime","addDays","dayOff","getWeeksToDisplay","defaultDate","totalDays","getDay","startOfMonth","getDaysInMonth","formatEstimatedTime","estHours","estMin","formattedHours","formattedMin","Calendar","CalendarWeek","CalendarShadow","CalendarContainer","CalendarHeaderContainer","CalendarHeaderRow","CalendarHeaderButtonsContainer","CalendarHeaderMonth","CalenderHeaderDayRow","CalendarHeaderDay","MobileCalendarDay","isPresent","isSelected","multi","isExamDay","isDayOff","isToday","UpdateCompleteContainer","UpdateTitle","UpdateBody","CheckmarkCircleIcon","WandIcon","Wand","CopyIcon","Copy","ArrowUturnLeftIcon","ArrowUturnLeft","UpdateContent","UpdateComplete","closeToast","toastProps","_ref34$iconName","iconName","_ref34$themePalette","_ref34$showDismiss","showDismiss","handleElementClick","placeholderMap","datCalendar","inbdeCalendar","nclexCalendar","medSchoolCalendar","mobile","mobileCalendar","testTitleMap","studyScheduleLinkMap","StyledCalendar","InlineWrapper","InlineText","CalendarIconBareWrapper","CalendarIcon","CalendarIconBare","StyledInput","PickerWrapper","StyledCalendarHeaderContainer","StyledCalendarHeaderRow","StyledCalendarHeaderMonth","StyledCalendarHeaderDayRow","StyledCalendarHeaderDay","StyledMobileCalendarDay","StyledCalendarWeek","MonthSelector","FormattedMonthDisplay","MonthSelectorWrapper","MonthLeft","MonthRight","ConfirmButton","Tip","Picker","_ref23$multi","dismiss","_ref23$tipText","tipText","setCurrentDate","localValue","setLocalValue","formattedStartDate","formattedMinDate","weeks","weeksDates","_","addWeeks","startOfWeek","checkIsSelected","handleMonthSkip","direction","newDate","addMonths","allPossibleDaysAreSelected","weekStart","dayFormat","totalWeeksUntilEnd","differenceInDays","selectedDatesOnDay","selectedDate","handleHeaderClick","dayIndex","formattedDate","isAvailable","checkAvailable","handleDateClick","_ref24$multi","_ref24$placeholder","_ref24$type","_ref24$containerId","containerId","showCalendar","setShowCalendar","calendarPosition","setCalendarPosition","calendarRef","handleFocus","adjustCalendarPosition","inputRect","modalContainer","containerRect","calendarRect","calendarHeight","spaceBelow","innerHeight","spaceAbove","formatInputValue","handleClickOutside","_inputRef$current3","_calendarRef$current","readOnly","SvgRocket","HeaderText","Header2Text","BackIcon","ButtonArea","Panel","ConfirmationPanel","RightSection","CreateAreaText","CreateButton","Timeline","TimelineArea","TimelineAreaText","TimelineAreaTextHeading","TimelineAreaTextSubheading","StyledRocket","Rocket","StyledWand","StyledSun","WeatherSunny","StyledTarget","EstimateList","Estimate","hideSubheading","IconContent","Clock","WarningIcon","Warning","InfoIcon","EstimateHeading","EstimateSubheading","_templateObject36","EstimateContent","_templateObject37","_templateObject38","_templateObject39","Subheading","_templateObject40","RightHeading","_templateObject41","EstimateSection","rebalance","TimelineComponent","expirationBeforeExamDate","examDate","startingExamDate","DefaultExamDateContainer","InputActive","PresetArea","Preset","PresetName","PresetDuration","PresetDetails","PresetAreaWrapper","presetsByBootcamp","Radio","labelText","DefaultExamDate","_presetsByBootcamp$bo3","_presetsByBootcamp$bo4","_presetsByBootcamp$bo5","selectedPreset","setSelectedPreset","handleToggle","_presetsByBootcamp$bo","_presetsByBootcamp$bo2","CreateModal","onCreate","_ref12$totalHours","onRebalance","totalHours","_ref12$startingExamDa","_ref12$startingDaysOf","startingDaysOff","creating","setCreating","setStartDate","validateExamDate","setExamDate","setDaysOff","defaultExamDate","setDefaultExamDate","daysBetweenStartAndExam","isMembershipExpirationDateBeforeExamDate","handleDateChange","setters","exam","ArrowRight","CalendarImageWrapper","CalendarImage","CalendarImageMobile","FAQHeader","Create","faqItems","FAQElement","TooltipContext","TooltipProvider","tooltipId","setTooltipId","useTooltipState","customTheme","_ref15$tabIndex","_ref15$size","clickDisabled","_ref15$onClick","_ref15$customTheme","role","SvgCaretDown","FloatingModalContainer","FloatingModalWrapper","AssignmentTopHeader","AssignmentModalHeader","AssignmentModalTitle","CustomAssignmentModalTitle","CustomAssignmentEstimatedTime","inputmode","AssignmentModalDescription","AssignmentLinkButton","AssignmentModalDetails","AssignmentModalDetailsRow","StyledClock","DeleteIcon","Delete","solo","StyledChiclet","DurationChiclet","DetailRowText","Indicator","CaretDown","CheckboxWrapper","Checkbox","SubjectText","_theme$colors$assignm","FloatingModal","onCloseCallback","_useTooltipState","modalStyle","setModalStyle","indicatorStyle","setIndicatorStyle","modalRef","parentRef","calculatePosition","parentRect","modalWidth","offsetWidth","modalHeight","offsetHeight","modalStyleUpdate","indicatorStyleUpdate","handleResize","handleContainerScroll","pageContainer","handleEscape","_parentRef$current","SubjectSquare","_theme$colors$assignm2","_theme$colors$assignm3","SubjectSquareContainer","CustomAssignmentModal","updateEvent","onInputClick","updateAssignmentDate","createAssignmentOnDate","titleRef","setEstimatedTime","setComplete","handleSave","_titleRef$current","handleKeyPress","ChicletType","typeDetails","newEvent","duplicateEvent","typeDetail","updatedDate","getCreateTestDefaults","eventUrl","getDefaultsFromURL","eventTitle","parts","getDefaultsFromTitle","AssignmentModal","_subjectDetails$bootc","updateCompleteStatus","useSubjectColors","subjectDetails","ExamDateModal","ExpirationDateModal","AddAssignment","CompletedAssignmentVisibilityToggle","hoverDisabled","CalendarDayContainer","isExamDate","inactive","dividerLineState","CalendarDayHeader","CalendarDayHeaderNumber","CalendarDayHeaderMonth","CalendarDayHeaderEstTime","CalendarDayEventList","CalendarDayOutline","isDraggingOver","CalendarDayEvent","isDragging","CalendarDayEventWrapper","CalendarDayEventText","shortened","hasTitle","qbank","resource","practiceTest","Biology","Gastroenterology","Nephrology","Genetics","Biostatistics","Neurology","Cardiology","Pharmacology","Psychiatry","Endocrinology","Pulmonology","Immunology","Reproduction","Biochemistry","Microbiology","Dermatology","Musculoskeletal","Osteopathy","ExamDayContainer","ExamDayText","ExamDayIcon","RestDayText","RestDayIcon","ExpirationDayContainer","ExpirationDayText","ExpirationDayIcon","EstimatedTimeText","StyledCheckbox","AssignmentWithoutContext","provided","showEstimatedTime","innerRef","draggableProps","dragHandleProps","Assignment","_subjectDetails$bootc2","setChecked","handleInputClick","updatedValue","metaKey","CalendarDayWithoutContext","_events$filter","hideCompletedAssignments","minHeight","CalendarDay","_events$filter2","isExpirationDate","documentWidth","_useTooltipState2","dayOfMonth","toDateString","showTimeInAssignment","showingHiddenAssignments","setShowingHiddenAssignments","estTime","formattedEstTime","header","ExpirationDay","AddAssignmentSection","Add","Droppable","droppableId","snapshot","_events$filter3","droppableProps","Draggable","isDragDisabled","draggableId","dragProps","justifyContent","SettingsContainer","ResetSettingsContainer","SettingsWrapper","SettingsSection","StyledPanel","SettingsOptions","mobileVertical","SettingsOption","AutoWidthSettingsOption","SettingsOptionHeader","SettingsSectionHeader","SettingsSectionSubheader","ResetLabel","ResetScheduleButton","ConfirmResetSection","ResetButtonArea","StyledDownloadButton","DocumentIcon","ResetIcon","ArrowCounterclockwise","AssignmentTypeWrapper","Alert","StyledButtonArea","SettingsModal","_Object$entries$sort$","_Object$entries$sort$2","resetSchedule","resetScreenVisible","setResetScreenVisible","resetConfirmed","setResetConfirmed","defaultStartWeekOn","defaultShowTimeInAssignment","startWeekOn","setStartWeekOn","setShowTimeInAssignment","firstDay","shouldShowSubjectCoding","handleStartWeekOn","handleShowTimeInAssignment","handleHideCompletedAssignments","handleUseSubjectColors","assignmentTypeTitles","assignmentPropsShim","whiteSpace","ConfirmationHeader","ConfirmationSubheader","ScheduleLabel","HeaderIconContent","RebalanceConfirmation","currentSchedule","currentHoursPerDay","overdueIncompleteEvents","RebalanceModal","_currentSchedule$days","remainingHours","rebalanceSchedule","rebalanceConfig","showingConfirmation","setShowingConfirmation","currentDaysBetweenStartAndExam","handleRebalance","onClose","CreateSchedule","ChevronUp","CalendarButton","MobileCalendarButton","MobileCalendarHeaderRow","MobileProgressRow","ProgressBarContainer","VerticalWeekCountLabelContainer","VerticalWeekCountLabel","ContainerRadius","TopRightRadius","TopLeftRadius","Day","updateEventsByDate","setSelectedDate","isFinalWeekOfMonth","dayEvents","isSelectable","hasAssignments","updatedEvents","toast","toastId","autoClose","hideProgressBar","draggableDirection","draggablePercent","transition","closeButton","Week","setScrolledMonth","weeksSinceFirstDay","getWeekOfMonth","endOfMonth","viewportTop","onPositionChange","previousPosition","currentPosition","scrollParent","scrollTop","MobileDateSelect","PillContainer","Pill","CalendarComponent","_Object$entries$sort$3","_Object$entries$sort$4","setEventsByDate","totalEvents","completedEvents","daysUntilExam","onClickRebalance","onClickSettings","mobileDateRef","useResizeObserver","firstDayOfWeek","todayFormatted","firstDayIncomplete","firstDayOfSchedule","initialDisplayDate","setDefaultDate","scrolledMonth","startOfDay","lastDayContainingEvents","setWeeks","handleToday","totalEventsComplete","completedAssignments","isDuplicate","_objectSpread5","save","_eventDetails$title","_eventDetails$title2","rollbackEvents","eventDetails","onDragEnd","_objectSpread10","sourceEvents","movedEventIndex","_sourceEvents$splice","movedEvent","destinationEvents","debouncedHandleResize","weekStartsOn","renderedWeeks","weekIndex","_e$target","month","paddedExamDate","Settings","DragDropContext","prevMonth","subMonths","getElementsByClassName","elementDimensions","nextMonth","weeksToAdd","firstDateNextMonth","newDaysInNextMonth","StyledToastContainer","ToastContainer","PageTitle","BlurbContainer","InfoIconContainer","BlurbText","BlurbTextMobile","DismissIconContainer","Blurb","mobileText","StudySchedule","setContent","incompleteEvents","scheduledDays","dateKeys","earliestDay","latestDay","dates","parseISO","earliest","latest","eachDayOfInterval","end","_scheduledDays$date","calculateDaysOff","newExamDate","distributedEvents","distributedEventsFlat","completedEventsFlat","mergedEvents","filteredEvents","oldExamDate","rollbackSchedule","_yield$API$graphql2","integrityCheck","_data$getQuickCache","cachedData","_data$getQuickCache2","_cachedData","_content","getQuickCache","totalMinutes","hasTenHourDays","averagingTenHourDays","ChapterTitle","ChapterNumber","Middle","ProgressBarWrapper","fullWidthProgress","hidden","Chapter","comingSoonText","defaultLocked","simLocked","_ref33$showProgress","_ref33$actions","_ref33$rawRoute","rawRoute","loadingProgress","MobileVisible","MobileHidden","onClickHandler","DefaultStyledUpgradeButton","Play","CloudDownloadOutline","UpgradeButtonUI","ResultItemText","ResetButtonContainer","ResetButton","setInitialized","setTestProgressId","setScore","_yield$checkTestProgr","_onConfirm","BeginPracticeButton","attempted","StyledBeginPracticeButton","hideOnMobile","StyledFlashcardButton","StyledResetButton","StyledUpgradeButton","DownloadButton","_ref17$children","Description","StyledDocumentArrowDown","Download","_ref11$actions","SectionSelectorContainer","SectionSelectorOption","SectionSelectorIconWrapper","SectionSelectorText","SelectionWrapper","SelectionText","StyledDownload","CheatSheets","categories","filteredItems","category","categoryTitle","_items$find","iconUrl","freeAccess","getIconUrl","INBDECheatSheets","_classroom$contentTyp","_classroom$contentTyp2","_classroom$contentTyp3","formattedItems","Set","setRedirect","setCreatingAccount","password","_e$message","endsWith","signUp","signIn","JOIN_FORM_CONFIG","autoComplete","ErrorText","_onSubmitHandler","setUser","onSubmitHandler","secondAttempt","usernameAsSubmitted","_user","mfaType","challengeName","mfaCode","confirmSignIn","SIGNIN_FORM_CONFIG","ForgotPasswordLink","login","_login","requestUrl","authResponse","token","reject","wpLoginAttempt","user_email","days_left","isBootcampPlus","ForgotPassword","redirecting","_sendResetPasswordCode","_secondTry$CodeDelive","secondTry","forgotPassword","CodeDeliveryDetails","AttributeName","sendResetPasswordCode","FORGOT_PASSWORD_FORM_CONFIG","updatePassword","_updatePassword","resetCode","forgotPasswordSubmit","ResetForm","RESET_PASSWORD_FORM_CONFIG","ResetPassword","queryString","StyledBody","SelectButton","SelectBootcamp","handleBootcampSelect","_cognitoUser$attribut2","redirectUrl","FurtherInfo","bootcampDestination","_URLSearchParams","_URLSearchParams$get","_URLSearchParams$get$","getBootcampFromUrlState","info","Switcher","AnimatedSwitch","mapStyles","glide","spring","stiffness","damping","pageTransitions","atEnter","atLeave","atActive","RouteWrapperContainer","RouteWrapper","node","AuthNavigation","creatingAccount","routerRef","_window$location$hash","_window$location$hash2","_routerRef$current2","HashRouter","Join","SignIn","DATSignIn","ContainerBackgroundColor","Authentication","updatedDatScoringReference","defaultEducator","imgUrl","ari","examResults","getResults","testSubject","_testTitle$match","percentageThresholds","getPercentageThresholds","commentary","getDistributionScores","subjectAbbreviation","getCommentary","analysis","adjustedTestTitle","percentageThreshold","estimatedScore","oatScores","getOATResults","getOATPercentageThresholds","getStatistics","answeredQuestions","didSkip","didMark","timePerQuestion","isFinite","skipped","aggregateBySubject","aggregateSubject","statistic","topicStatistics","aggregateByTopic","markedQuestions","skippedQuestions","subjectStatistics","topics","aggregateTopic","aggregateBySection","snsProgresses","patProgresses","rcProgresses","qrProgresses","sns","pat","rc","qr","totalCorrect","totalMarked","totalSkipped","aggregateByOATSection","physProgresses","phys","getAcademicAverage","_testTitle$match2","totalScore","scoreAcc","parsedTestSubject","getOATAcademicAverage","parsedTestTitle","scoreResult","_aggregateByTopic2","formatClassroomMastery","masteryType","queryLookup","_objectSpread2","formatClassroomMasteryWithTopic","_question$tags","_question$tags2","_acc$byTopic","_acc$byTopic2","_acc$byTopic3","_objectSpread3","_acc$bySystem","_acc$bySystem2","_acc$bySystem3","_objectSpread7","subjectTagId","topicTagId","topicTag","bareTags","byTopic","bySystem","formatReviewVideoProgress","formatClassroomVideoProgress","_curr$data","formatMasteryCardLink","subjectRoute","compileSubjectTopicCountsForTests","compiledCounts","_test$data","_test$data$getTest","_test$data$getTest$bl","_test$data$getTest$bl2","_question$tags$items","_question$tags$items$","_question$tags$items$2","_question$tags2$items","_question$tags2$items2","_question$tags2$items3","_update$subjectTagId","_update$subjectTagId2","getSubjectTopicCountsForDATPerformance","_config$studyTools","_config$studyTools$fi","_config$studyTools$fi2","existingCountsFetch","existingCounts","allTests","baseTests","baseCounts","plusCounts","fetchStats","isNCLEX","_acc$progress$questio3","_acc$progress$questio4","_acc$total3","_acc$total4","_acc$total5","_acc$total6","_acc$progress$questio5","_acc$progress$questio6","_acc$total7","_acc$total8","_acc$progress$questio7","_acc$progress$questio8","fetchAllQuestionStats","testAnswerDataFetch","testAnswerData","stats","_question$latestRevis","_question$latestRevis2","_question$latestRevis3","_answerData","_answerData2","_avgTimeTotal","_avgTimeTotal$total","_avgTimeTotal2","_avgTimeTotal2$total","avgTimeTotal","answerDataFetch","answerDataObject","correctKey","correctCount","totalTimeRecords","fetchAllQuestionStatsForFLT","questionsByTestId","iconMap","heart","hair","embryo","intestine","blood","histo","virus","nephro","brain","psych","lung","biostatistics","endo","genetics","womb","musculoskeletal","pubhealthsci","pharm","biochem","microbio","patho","bio","gc","oc","pa","adultHealth","childHealth","criticalCare","fundamentals","maternalNewbornHealth","mentalHealth","pharmacology","managementOfCare","fieldsOfDentistry","oralPath","medicine","pharma","patientManagement","anatomyPhysiology","research","firstAid","simExam","TitleWithFilter","BlurbIcon","ExpandContainer","ExpandIcon","Subtract","Chevron","TableRow","tr","nested","isExpanded","noHover","Cell","td","hasContent","SubjectCell","CellText","MasteryCountCellText","BarCell","BarCellText","CellSecondary","CellIcon","TopicCell","StyledProgressBar","CellProgressBar","_ref40$loading","bareIcon","TableOverflowOuterWrapper","parentHasPadding","TableOverflowInnerWrapper","CellContent","breakWord","ParentButtonPlaceholder","_ref51$hideChevrons","hideChevrons","buttonElement","_ref51$fixed","hideLastCell","expandedRows","setExpandedRows","handleRowExpansion","_row$cells","cellIndex","_ref52$elementProps","contentLength","spaces","DivergentBarContainer","Bar","BarDivider","DivergentBar","reference","_ref61$height","_ref61$dividerWidth","dividerWidth","disparity","LineLabelContainer","LineLabelWrapper","StyledLabel","StyledBlurb","AutoHeightParent","childRef","childHeight","setChildHeight","updateHeight","observer","ResizeObserver","entry","observe","unobserve","SUBJECTS","subjectColorMap","ChartBackground","SubjectSelect","SelectArea","PerformanceChart","averages","_performanceRecord$re","_ref5$subjectOverride","subjectOverride","dataByTest","selectedSubject","setSelectedSubject","setGradient","chartRef","wrapperRef","sortOrder","performanceRecord","testResultsOverTime","filteredTestResultsOverTime","_chartRef$current","_loop","_SUBJECTS","firstSubject","createLinearGradient","chartArea","addColorStop","ts","dataLabel","pointColor","pointBackgroundColor","pointRadius","pointHoverRadius","hoverBorderWidth","hitRadius","borderWidth","cubicInterpolationMode","averageDataset","borderDash","pointHitRadius","chartData","labels","datasets","chartOptions","responsive","maintainAspectRatio","normalized","scales","unit","ticks","family","_ref11$reverse","resultMatch","grid","suggestedMax","dash","tickBorderDash","tickBorderDashOffset","plugins","tooltip","enabled","external","context","tooltipModel","tooltipEl","pointerEvents","fontFamily","appendChild","datasetLabel","dataPoints","raw","day","year","dataIndex","formattedValue","chartRect","chart","canvas","tooltipWidth","tooltipHeight","tooltipX","scrollX","caretX","tooltipY","scrollY","caretY","viewportWidth","viewportHeight","legend","boxWidth","boxHeight","usePointStyle","blurredBackground","gap","TestResultTable","ShareButton","DownloadIcon","ArrowDownload","CellContentContainer","TooltipContentContainer","TooltipDate","TooltipTestTitle","TooltipScoreArea","TooltipScore","TooltipScoreTop","TooltipScoreBottom","TooltipContent","formatDate","onMouseEnter","Test","_ref9$dataByTest","testAverages","tooltipProps","setTooltipProps","_config$studyTools$","_config$studyTools$$c","configMatch","fltConfigHit","configRoute","cellDisabled","tooltipDisplayTitle","themeIndex","themes","getCellThemeProps","average","scoringAverageMax","feedback","downloadTableAsImage","container","leftText","innerText","logo","datLogo","tableElement","cloneNode","html2canvas","toDataURL","removeChild","leading","trailing","place","SvgWarning","averagesWithPlusTests","SubjectTable","SubjectHeader","StyledTableOverflowOuterWrapper","StyledTableOverflowInnerWrapper","sumCounts","Subject","_ref5$dataBySubject","dataBySubject","_ref5$expandAll","subjectTopicCounts","tableWrapperRef","averagesObj","_averagesObj$testSubj","_averagesObj$testSubj2","_mastery$testSubject","_mastery$testSubject2","_mastery$testSubject3","_mastery$testSubject4","_iconMap$dat","parentPercentage","subjectTotal","counts","hasPlusPackAccess","getSubjectTotal","subjectAvgScore","subjectAvgTagged","subjectMasteryTotal","subjectScoreSegments","subjectMasterySegments","_mastery$testSubject5","_mastery$testSubject6","_mastery$testSubject7","_averagesObj$testSubj3","_averagesObj$testSubj4","_mastery$testSubject8","_mastery$testSubject9","_mastery$testSubject10","_mastery$testSubject11","_mastery$testSubject12","_mastery$testSubject13","_mastery$testSubject14","_mastery$testSubject15","_mastery$testSubject16","topicPercentage","topicTotal","getTopicTotal","topicMasteryTotal","topicAvgs","topicAvgScore","topicAvgTagged","isRed","topicScoreSegments","topicMasterySegments","verticalAlign","ToggleContainer","ToggleOption","TextToggle","_ref6$options","defaultOptionValue","defaultState","selectedOption","setSelectedOption","defaultOption","handleOptionChange","TimeManagement","_Object$keys$filter","_ref$dataBySubject","_ref$subjectFilter","_ref$expandAll","subjectAverages","_averagesObj$subject","_averagesObj$subject2","correspondingSubject","ElementWrapper","SettingsArea","restoreQuizProgress","_blockProgress$questi","filteredBlockProgress","restoredQuestionProgresses","usePerformance","masteryObj","setFetching","setSubjectTopicCounts","TESTS","practiceTestIds","fltIds","testMastery","formattedTestMastery","_update$subjectName","_update$subjectName2","_update$subjectName3","_update$subjectName4","_update$subjectName5","_update$subjectName6","_update$subjectName6$","_update$subjectName7","_update$subjectName7$","_update$subjectName7$2","_update$subjectName8","_update$subjectName8$","_update$subjectName8$2","_update$subjectName9","_update$subjectName9$","_update$subjectName9$2","_update$subjectName10","_update$subjectName11","_update$subjectName12","topicName","subjectName","subjectResults","record","tn","filteredSubjectResults","academicAverage","subjectArray","_performanceRecord$re2","subjectScores","subjectAverage","allTestIds","_subjectTopicCounts","testFetchResults","testResults","testsById","statsReducer","testStats","restoredProgress","matchingRecord","delegateYield","refetch","Performance","_usePerformance","newSortOrder","BareSelect","TopicSelect","retrieveQuestionProgresses","testData","getTestProgresses","_getTestProgresses","getDBCTestProgresses","_getDBCTestProgresses","filterAndSortProgresses","_items$sort","_match$","_match$$name","configHit","SubjectPill","TableStyles","LoadingSpinnerContainer","LoadingOverlay","ResultsMessage","TableWrapper","PaginationWrapper","StyledSelect","_tableRef$current","columns","pageCount","onPreviousPage","onNextPage","onPageSize","tableRef","_useTable","useTable","pageIndex","sortBy","desc","disableSortRemove","manualPagination","useSortBy","usePagination","getTableProps","getTableBodyProps","headerGroups","prepareRow","canPreviousPage","canNextPage","pageOptions","nextPage","gotoPage","setPageSize","_useTable$state","pageSize","hasResults","clientHeight","headerGroup","getHeaderGroupProps","getHeaderProps","getSortByToggleProps","_row$original","original","routeWithBootcamp","getRowProps","getCellProps","PastTestResults","_fetchTests","_handleNextPage","_handlePreviousPage","_handlePageSize","_baseProgress$slice","setCurrentPage","containerWidth","setContainerWidth","setTestsById","progressById","setProgressById","baseProgress","setBaseProgress","_useForm","defaultTestIds","testIdsToFetch","testPromises","progressIdsToFetch","progressPromises","testPromiseResults","progressPromiseResults","fetchedProgress","fetchedTests","_curr$data2","getSubjectFromTestTitle","_testTitle$replace","subjectString","_config$classrooms$fi","_getResults","accessor","sortType","_watch","testDateOutsideFilter","testScore","_fetch","newPageSize","nextPageIndex","PauseIcon","PauseCircle","StyledInfo","DataLoadingSpinner","loaded","hiddenColumns","autoResetPage","pagination","noResults","_row$original$testDat2","CustomTests","_savedTests$testList5","_objectDestructuringEmpty","fetchSavedTests","_savedTests$testList","_savedTests$testList$","_savedTests$testList$2","_savedTests$testList2","_savedTests$testList3","overridingMaxScore","_questionProgresses$r","getScorePercentage","_savedTests$testList4","_row$original$testDat","customTitle","Edit","newTitle","defaultCount","formatQuestionCount","_objectSpread6","getBlockKey","_block$title","_block$title$trim","_block$title$trim$spl","_block$title$trim$spl2","blockTitle","syncQRVideoLessonData","_syncQRVideoLessonData","baseVideoLessonData","oldCourseIds","oldProgressByBlockTitle","syncedQrBlockProgress","syncProgress","courseId","_data$getTest","_data$getTest$blockCo","_TestProgressByTestId","_blockProgresses$item","blockMatch","testBlockConnectionTestBlockId","blockKey","_oldProgressByBlockTi","newBlockProgress","fetchVideoLessonData","_fetchVideoLessonData","videoLessonData","testBlockConnections","blockTemplates","newProgressId","restoredProgressPromises","startBlock","passage","endBlock","blockTemplate","t8","t9","t10","_yield$getBlockProgre","existingBlockProgress","savedProgress","_index","savedBlockProgress","t11","t12","t13","fetchQBankCollectionData","_fetchQBankCollectionData","selectedSection","tId","progressResult","testResult","_testProgress","getQbankCollectionData","_getQbankCollectionData","qbankCollectionData","saveBlockProgress","_qbankCollectionData$","_quizProgress$","backendSaveRequest","updatedQuizProgress","getCounts","_getCounts","configArray","getCount","getProgress","_getProgress","oldIds","oldResults","oldId","masteryItems","accumulator","currentCountByTest","byTest","getTestData","_getTestData","getQbData","_getQbData","routeKey","setNestedQbankCollectionData","collectionData","filteredContent","dataFn","_data$routeKey","getProgressByContentTypeMap","_getVideoLessonData","hasSyncedQrCourseData","refreshVideoLessonData","blockIndexOverride","_videoLessonData$test","_quizProgress$blockIn","spoofedConfig","refreshedVideoLessonData","_getPracticalsData","useContentTypeProgress","extendedConfig","_getProgress2","StyledChapterCard","ChapterCard","FreeQuestions","PageSection","HeadingLink","HeadingContainer","ActionsWrapper","TextContent","DropdownTrigger","DropdownTriggerText","DropdownTriggerArrowUp","DropdownTriggerArrowDown","ChapterIndex","DropdownContainer","Dropdown","componentRef","showText","hideText","textContent","expandOnChange","HeadingWrapper","headingProps","AnimateHeight","IconArea","BadgeWrapper","DetailText","PlayButtonIcon","RowContainer","mobileOnly","RowLabel","RowTitleContainer","RowTitle","RowLink","OptionContainer","BlockNumberContainer","UpgradeOverlayContainer","BlockNumber","OptionOuter","OptionInner","OptionChecked","CheckCircle","UpgradeOverlayText","UpgradeOverlay","QBankRow","_test$config","routeParent","resetInitialized","setResetInitialized","number","numQuestions","FlexRow","QBankCollection","_props$config","searchTerm","scrollIntoView","_qbankCollectionData","_qbankCollectionData2","_qbankCollectionData3","totalTagged","collectionSlug","activeLesson","QuestionBanks","_freeBanks$testIds","plusRef","banks","isPlusPack","isQbank","alwaysLocked","openInModal","hasAccess","freeBanks","_plusRef$current","behavior","FreeQuestionsCard","_progress$byTest","unlocked","upgradeRequired","PracticalExams","practicals","CardWrapper","ResultContainer","ResultItem","Divider","mobileHidden","ResultItemSubText","scoreText","attemptDate","resultDetails","attemptsCount","ArrowRepeatAll","setLastAttempt","resetRequest","PracticeTest","showTestResults","_ref34$testReviewRout","testReviewRoute","testRouteParam","formatResultDetails","formatScoreText","startText","reviewText","isLocked","lastAttempt","setAttemptsCount","testSlug","_testProgressArray$","_testProgressArray$2","_result$data","_result$data$TestProg","testProgressArray","attemptId","fetchLastAttempt","cardLocked","cardActions","baseRoute","_lastAttempt$score","_lastAttempt$score2","splitResults","selectedResult","rawAvgScore","estimate","defaultFormatResultDetails","defaultFormatScoreText","FAQWrapper","StyledFAQHeading","FAQHeading","datPracticeTestFAQs","PracticeTests","topicRef","showDATFaqs","_topicRef$current","PracticeTestCard","padded","Flag","desktopOnly","Duration","VideoRow","getDuration","CTAWrapper","StyledRoundButton","VideoLesson","_props$videoLessonDat","displayIndex","activeBlock","isFilteredBlock","testBlockKeywords","targetIndex","blockLink","displayLimit","ClearIcon","SearchBar","VideoLessons","setSearchTerm","courseContent","lessonsArray","callouts","indexPadding","debouncedSearchTerm","SearchResults","_data$videoLessonData","_data$videoLessonData2","VideoLessonCard","scrollToChapter","filteredLessonSets","QBankCollectionCard","CalloutCard","Downloads","downloads","gatesUp","ignoreSections","filteredDownloads","StyledCollection","CircleStack","Flashcards","flashcards","Anki","decks","Blogposts","blogposts","setBlogposts","_blogposts","ChapterWrapper","Generators","Trainer","classroomIconsByBootcamp","oralPathology","AdultHealthImg","ChildHealthImg","CriticalCareImg","FundamentalsImg","MaternalandNewbornHealthImg","MentalHealthImg","PharmacologyImg","ManagementofCareImg","feedbackByBootcamp","OverallWrapper","CardHeader","CardTitle","CardIconWrapper","CardIcon","BarContainer","BarWrapper","BarTopLabel","BarBottomLabel","TargetHeader","TargetBody","CardContainer","isOverallCard","ProgressLabel","Numerator","Denomenator","_classroomIconsByBoot","_classroomIconsByBoot2","_ref24$totalQuestions","performance","targets","masteryLoaded","performanceLoaded","disableClick","scoreTargetMet","averageScorePercentage","taggedQuestionTargetMet","stillCollecting","targetsMet","targetText","Overall","performanceData","byClassroom","overall","totalTaggedTargets","videos","overallAverageScorePercentage","overallTargets","scoringTargets","StyledHeading","InfoIconWrapper","StyledAddSquare","StyledTopicCell","RowButtonContainer","ButtonElement","_ref9$defaultExpanded","hideHeader","defaultExpanded","headerTitle","handleRowClick","_scoringTargets$bootc","_scoringTargets$bootc2","_iconMap$bootcamp","_displayTopics$sort","displayTopics","rawPercentage","subjectPercentage","subjectTargetScore","subjectTargetTagged","collectingCountdown","_a$name","localeCompare","_config$find","_config$find$contentT","_config$find$contentT2","_config$find$contentT3","_config$find$contentT4","_config$find$contentT5","_scoringTargets$bootc3","_scoringTargets$bootc4","scorePercentage","topicExists","collectionBoundary","headerRows","subtitleFragment","PageWrapper","educatorsByBootcamp","emily","anthony","scorePercentageBySubjectByBootcamp","getDisplayTopics","_questionCounts$auxil","auxiliaryTopicCounts","auxiliaryCounts","_classroom$contentTyp4","_classroom$contentTyp5","_questionCounts$quest","_questionCounts$auxil2","_questionCounts$auxil3","topicQuestionCount","questionCountsByTest","contentKey","formatPerformanceObject","_questionCounts$class","_classroomPerformance","_classroomPerformance2","_classroomPerformance3","_classroomPerformance4","_classroomPerformance5","_classroomPerformance6","_classroomPerformance7","_classroomPerformance8","allTags","classroomPerformance","_mastery$subjectTagId","_mastery$subjectTagId2","_acc$mastery6","_subjectPerformance$m","_acc$mastery7","_subjectPerformance$m2","_acc$mastery8","_subjectPerformance$m3","_acc$mastery9","_subjectPerformance$m4","_acc$mastery10","_subjectPerformance$m5","_acc$performance3","_subjectPerformance$p","_acc$performance4","_subjectPerformance$p2","topicPerformance","masteryStats","combinedTopicPerformance","_tags$topicId","_tags$topicId2","_questionCounts$auxil4","_questionCounts$auxil5","systemName","_contentTypes$filter$","_contentTypes$filter$2","_contentTypes$filter$3","_contentTypes$filter$4","_contentTypes$filter$5","_contentTypes$filter2","_contentTypes$filter3","_contentTypes$filter4","_contentTypes$filter5","_contentTypes$filter6","_contentTypes$filter7","_curr$content$","contentMatch","getContentIdsFromName","totalTopicQuestions","_questionCounts$quest2","auxiliaryTopicKey","subjectPerformance","_acc$mastery","_curr$mastery","_acc$mastery2","_curr$mastery2","_acc$mastery3","_curr$mastery3","_acc$mastery4","_curr$mastery4","_acc$mastery5","_curr$mastery5","_acc$performance","_curr$performance","_acc$performance2","_curr$performance2","subtitlesByBootcamp","getFAQs","PerformanceContext","PerformanceProvider","classroomFilter","setMasteryLoaded","setTags","performanceClassrooms","filterClassroomsByBootcampForPerformance","displayClassrooms","filterClassroomsByBootcampForDisplay","readinessExamAndCaseSetTopicCounts","simExamCaseSetTopicCounts","classroomTestIds","questionCountsByTestByClassroom","acc1","subjectMastery","newAcc","_topicMastery$tag","_newAcc$subjectTagId","_newAcc$subjectTagId2","_newAcc$subjectTagId3","_newAcc$subjectTagId4","_newAcc$subjectTagId5","_newAcc$subjectTagId6","_newAcc$subjectTagId7","_newAcc$subjectTagId8","_newAcc$subjectTagId9","_newAcc$subjectTagId10","_newAcc$subjectTagId11","_newAcc$subjectTagId12","_newAcc$subjectTagId13","_newAcc$subjectTagId14","_newAcc$subjectTagId15","_newAcc$subjectTagId16","_newAcc$subjectTagId17","masteryId","topicMastery","masteryKey","loadingPerformance","_fetchTags","formattedTags","fetchTags","_init","trackingTestProgressId","blockProgressIds","createTestProgressResult","subjectTopics","_blockProgress$id$spl","_blockProgress$id$spl2","onContextMenu","PerformanceWrapper","StyledCard","SubjectPerformance","_performance$byClassr","DATPerformance","ContentTypes","overviewData","SearchableDownloads","Classroom","_overviewData$progres","_courseCounts$classro","_courseCounts$classro2","_questionCounts$class2","_match$params","configClassroom","unfilteredContentTypes","contentTypeConfig","_value$mastery","totalDuration","_duration","lastModified","durationSplit","_durationSplit$map","_durationSplit$map2","_durationSplit$map3","_durationSplit$map4","coursesByClassroom","courseCounts","_interactions$find","defaultDestination","SectionSelector","contentSectionTitle","sectionTitle","isDeselecting","sectionClickHandler","Bottom","TextWrapper","SubText","Top","textLayout","Generic","subText","_ref29$textLayout","_ref29$useAnchor","useAnchor","masteryLevelToIcon","NewLearningMasteryIcon","NewReviewingMasteryIcon","NewMasteredMasteryIcon","UntaggedMasteryIcon","squaredMasteryLevelToIcon","SquaredLearningMasteryIcon","SquaredReviewingMasteryIcon","SquaredMasteredMasteryIcon","SquaredUntaggedMasteryIcon","untaggedSelected","SquaredUntaggedSelectedMasteryIcon","SquaredBookmarkedMasteryIcon","MasteryIconWrapper","BareIcon","BareIconWrapper","MasteryIcon","level","squared","InactiveText","TagContainer","MasteryCard","activeFilter","datStyling","TagIcon","NCLEXMasteryCard","defaultFormatCardLink","baseUrl","MasteryReview","inRouter","formatCardLink","setFilter","masteryLevelProgress","activeClassroomFilter","PillWrapper","AvatarImage","IconText","StyledIcon","BadgeIcon","CheckmarkOutline","DateString","StreakWrapper","StreakString","FireIcon","LocalFireDepartment","TestDateContainer","TestDatePicker","_handleInputChange","hasCurrentTestDate","setTestDate","showPicker","updatedTestDate","interactionKey","checkIfComplete","StyledColumn","currentHour","getHours","greetingMessage","GettingStarted","_ref36$title","hideStreak","findMatchingBreakpoint","getPlaceholders","numItems","itemsPerRow","renderItem","initialPerRow","perRow","setPerRow","onResize","updatedPerRow","numRows","backgroundImg","StyledIconButton","withPadding","TitleSmall","IconsWrapper","detailsOrientation","ExpertEducatorsContainer","getLaunchDate","NewReleaseBannerContainer","NewReleaseBannerText","NewReleaseBannerIcon","NewReleaseBanner","ClassroomCard","newRelease","showExpertEducators","showArrowButton","_ref60$detailsBorder","detailsBorder","expertEducatorOrientation","educatorLayout","_ref60$withHeaderPadd","withHeaderPadding","_ref60$whiteMode","_ref60$label","videoLessonProgress","SvgCoffee","SvgCalendarGold","gradientUnits","stopColor","StyledClassroomCard","getCourseBlockCounts","todayActions","Coffee","interactionObj","_useMastery","biologyProgress","_useMastery3","gcProgress","_useMastery5","ocProgress","_useMastery7","rcProgress","_useMastery9","physicsProgress","_useMastery11","qrProgress","progressMap","_useTestProgressArray","biologyVideoProgress","_useTestProgressArray3","gcVideoProgress","_useTestProgressArray5","ocVideoProgress","_useTestProgressArray7","rcVideoProgress","_useTestProgressArray9","videoProgressMap","_courseBlockCounts$cl","ClassroomCardFull","StyledBookmark","Bolt","DailyWarmupIcon","patProgress","patVideoProgress","_useTestProgressArray11","clearSelection","getSelection","empty","removeAllRanges","selection","setupEventListeners","listener","syncClassApplierWithHighlighter","highlighter","containerElementId","range","rangy","createRange","selectNodeContents","setSingleRange","highlightSelection","exclusive","createHighlighter","rangyHighlighter","highlightApplier","rangyClassApplier","createClassApplier","blueHighlightApplier","strikethroughApplier","addClassApplier","restoreHighlights","serializedString","deserialize","getSerializedHighlights","serialize","syncSerializedHighlights","serializationHighlighter","serializationHighlightApplier","serializationBlueHighlightApplier","serializationStrikethroughApplier","getHighlightsInSelection","addHighlights","hasStrikethrough","isAppliedToSelection","applyToSelection","hasHighlight","toggleSelection","removeHighlights","undoToSelection","dehighlight","nodeName","classList","getHighlightForElement","firstChild","insertBefore","unwrap","highlightIcon","_ref6$position","StrikethroughTooltip","TooltipWrapper","HighlightDropdown","showingDropdown","OptionWrapper","AddWrapper","AddBlue","Remove","HighlightMenuTooltip","onTooltipClick","setShowingDropdown","tooltipRef","preventDefaults","onMouseDown","onMouseUp","highlightKey","highlightMode","onMouseOver","onMouseLeave","Highlightable","htmlString","setHighlights","_ref18$disableToolTip","disableToolTip","questionHighlights","solutionHighlights","strikethroughs","strikethroughTooltipRef","_ref18$enableKeyboard","onlyQbankProp","enableKeyboardShortcuts","_ref18$onModeChange","onModeChange","tooltipMenuActive","setTooltipMenuActive","setHighlighter","tooltipPosition","setTooltipPosition","strikethroughTooltipPosition","setStrikethroughTooltipPosition","tooltipActive","strikethroughTooltipActive","freshHighlighter","parsedHighlights","highlightsToRestore","questionHighlightsToRestore","solutionHighlightsToRestore","timeouts","serialized","contentContainerId","timeout","handleTooltipClick","onlyRemove","selectedMode","selectionElement","focusNode","passageContainer","solutionContainer","determineMCATSelectionParentId","elementInBounds","hasMadeSelection","offsetLeft","offsetTop","getTooltipPosition","_event$target2","detail","_strikethroughTooltip","_tooltipRef$current$g","_strikethroughTooltip2","_strikethroughTooltip3","getElementsByTagName","_strikethroughTooltip4","_strikethroughTooltip5","disable","renderers","qbTags","ptTags","otherTags","TagMenu","BaseTag","TagLinksContainer","TagLinks","VideoPlayer","vimeoId","_ref$autoplay","autoplay","_ref$color","onEnd","playerRef","getPaused","play","pause","Vimeo","onReady","player","defaultPlaybackRate","setPlaybackRate","defaultQuality","setQuality","defaultText","language","enableTextTrack","kind","onPlaying","quality","getQuality","onPlaybackRateChange","playbackRate","getPlaybackRate","onTextTrackChange","textTrack","controls","speed","pip","AdminRow","AdminLink","Alphabet","AdminButtons","correctAnswerIndex","CommentContainer","BootcampAILabel","ConversationContent","UserContent","profilePicture","BotContent","BotInput","SendButton","ArrowCircleUp","SendButtonContainer","Disclaimer","_ref19$content","_content$split","_content$split2","HeaderImage","BootcampBot","_ref20$isVideo","isVideo","_ref20$extraDetails","extraDetails","setQuery","model","conversation","setConversation","conversationId","setConversationId","systemPromptOverride","setSystemPromptOverride","streamLambdaRequest","decoder","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_ret","returnHTML","TextDecoder","chunk","_conversationId","InvokeComplete","ErrorCode","ErrorDetails","PayloadChunk","decode","last","_asyncIterator","return","handleEnter","ConversationContainer","QuestionFAQs","intercomQuestionString","setComments","comment","shortcode","buff","opts","title_open","ChoiceContainer","isCorrect","isIncorrect","isCrossed","LabelText","alphabet","AnswerChoice","setSelectedAnswerIndex","updateCrossedAnswerIndexes","showingExplanation","answerIndex","_answer","answerText","letteredAnswerText","AnswerBoxContainer","AnswerBox","Prompt","Solution","SolutionBox","SolutionText","TopicText","IntercomButtons","IntercomButton","QuestionReviewInformation","Time","Mark","SolutionContainer","solution","didNotAnswer","showFeedback","solutionRef","questionReviewUrl","getQuestionReviewUrl","parsedSolution","_solutionRef$current","_solutionRef$current2","citationsBox","QuestionView","didSubmitAnswer","testBlockName","alwaysShowingExplanation","onSelectAnswerIndex","didSubmitAnswerIndex","enableHighlighting","disableVideos","savedCrossedAnswerIndexes","onCrossedAnswerIndexesUpdate","viewKey","setCrossedAnswerIndexes","filteredAnswers","vimeoNodes","querySelectorAll","vimeoIds","videoContainer","insertAdjacentElement","videoPlayer","playerId","gifs","gif","gifPlayer","gifSrc","getAttribute","setAttribute","PopupContainer","noSize","fullSize","PopupHeader","PopupFooter","DraggablePopup","footerContent","_ref6$fullSize","_ref6$noSize","positionProps","showFooter","positionOffset","popupContainerProps","handle","onTouchEnd","InnerWrapper","DraggableAndResizablePopup","Frame","iframe","scrolling","frameborder","marginheight","marginwidth","Times","onCloseExhibit","defaultPosition","process","PeriodicTable","loadMoreMasteryIntoBlock","masteryArray","updatedTest","generateId","questionProgressTemplate","questionSearchBank","coursePlayer","tbcQuestionBank","tbcSavedBank","quickReview","masteryReview","bookmarkedQuestionReview","testReview","progressTemplate","getQuestionProgressArray","_block$components$fin","caseQuestionSet","_block$components2","_block$components2$fi","sectionBreak","_block$components3","_block$components3$fi","startCustomTest","startQuickReview","startMasteryReview","startBookmarkedQuestionReview","startReview","endReview","fullLengthTest","startFullLength","sectionStart","sectionReview","_getQuestionProgressArray","userQuestionMasteryMap","__","questionRevisions","testTag","_testBlock$blockConne","blockSubject","originalTestBlock","getOriginalTestId","useProgress","testResultId","isReadinessExam","_saveBlockProgress","setQuizProgress","setAnswerData","getAnswerDataUploadKey","isReview","updateQuizProgress","instantiateBlockProgressFromTemplate","allQuestionProgresses","awaitedRestoredProgress","allRestoredQuestionProgresses","questionProgressesToRemove","questionProgressesToRemovePromises","blockProgressesToRemove","blockProgressesToRemovePromises","_testBlock$components2","_testBlock$blockConne2","_blockProgress","isSequentialBlock","questionProgressesAcc","_progressTemplate","_subject","_topic","_masteryLevel","_bookmarked","_questionProgressId","originalTestIdFromQuestion","questionProgressObj","_getTags5","_getTags6","questionAnswerState","didAnswerNclexQuestion","nclexProgressProps","restoredQuestionProgress","_questionProgress$que","_restoredQuestionProg","_questionProgress$que2","restoredBlockProgress","restoreProgress","_testBlock$components3","_testBlock$components4","_testBlock$blockConne3","_test$blockConnection","_x27","_x28","_testBlock$questionCo2","_testBlock$questionCo3","_testBlock$questionCo4","_getTags7","_getTags8","_yield$getQuestionPar","answeredCorrectly","saveQuestionProgresses","_x29","questionProgressesPromises","resolvedPromises","filteredPromises","_x30","_getTestIdOverride","_questionMastery$user","getTestIdOverride","testIdOverride","masteryInput","createOrUpdateQuestionMasteryPromise","_tests$data","_tests$data$getQuesti","_tests$data$getQuesti2","filteredTestIds","pathParams","_classroomConfig$cont","_classroomConfig$cont2","linkedContent","classroomRouteParam","_classroomConfig","courseIndex","_correspondingQbank","_classroomConfig2$con","_classroomConfig2$con2","_classroomConfig2","_correspondingQbank2","classroomConfig","correspondingQbank","_block$blockConnectio2","_excluded4","wordPressUserDataQuestionMasteryId","promise","_x32","localStorageBlockProgressKey","localStorageArrayKey","blockProgressKeyArray","newBlockProgressKeyArray","_args14","updateAverages","_quizProgress$reduce","totalCount","testAverage","existingAverages","existingAveragesFetch","totalAverage","instantiateTestProgress","_callee20","_progressIdResult$dat4","_progressResult$data","_testBlocks$","_testBlocks$$question","customTestQuestionProgresses","correspondingQuestions","correspondingQuestion","filteredBaseProgress","_context20","_excluded11","_excluded12","syncQuestionSearchProgress","_callee21","newProgress","_context21","_blockProgress$questi2","oldBlockProgress","newQuestions","oldQuestionProgress","resultId","_callee18","_yield$getAllQuestion","_context18","instantiateProgress","saveProgress","filteredProgress","submissionJSON","_excluded5","_excluded7","_excluded8","isDATorOAT","saveAndTrackProgress","trackingFunction","_excluded9","_excluded10","jwtToken","instantiateQuestionProgressFromArray","questionArray","getAnswerDataForQuestion","answerDataUploadKey","currentState","markQuestion","_questionProgresses$q2","updatedBookmark","handleSetHighlights","_callee22","currentQuestion","_updateQuestionProgre2","updatedHighlights","_context22","ReloadBlockerContext","ReloadBlocker","reloadBlocked","when","ReloadBlockerProvider","setEnabled","toggleReloadBlocker","useReloadBlockerContext","getSectionBounds","currentBlockIndex","getNextQuestionBlockIndex","getSectionWindow","testBlockIndex","getFirstFilterMatch","progressObject","getLastFilterMatch","_getQuestionParts2","adjustedIndex","getFirstFiltered","sectionBounds","firstFiltered","getDefaults","setBlockIndex","setQuestionIndex","setCurrentIndex","clearCurrentIndex","firstQuestionSet","firstIndexWithQuestions","begin","previousBlockIndex","lastQuestionIndex","nextBlockIndex","shouldUpdateQuestionIndex","reviewAll","_getSectionWindow","firstFilterActive","_quizProgress$reduce2","nextFilterActive","_testBlockConnections","_testBlockConnections2","_getNextReviewBlock","getNextReviewBlock","nextReviewIndex","_getFirstFiltered","_getFirstFiltered2","previousFilterActive","previousBlock","_testBlockConnections3","_testBlockConnections4","_getLastFiltered","lastFiltered","getLastFiltered","_getLastFiltered2","filterActive","transitions","review","reviewSkipped","_getFirstFiltered3","_getFirstFiltered4","reviewMarked","_getFirstFiltered5","_getFirstFiltered6","_getFirstFiltered7","_getFirstFiltered8","_getFirstFiltered9","_getFirstFiltered10","jumpToNextSection","nextSectionStart","endBlockIndex","_testBlockConnections5","_testBlockConnections6","_testBlockConnections7","_testBlockConnections8","_testBlockConnections9","nextUntagged","blockIndexMatch","questionIndexMatch","nextUnanswered","_getFirstFiltered11","_getFirstFiltered12","reviewIncomplete","_getFirstFiltered13","_getFirstFiltered14","_getFirstFiltered15","_getFirstFiltered16","reviewUnseen","_getFirstFiltered17","_getFirstFiltered18","_getFirstFiltered19","_getFirstFiltered20","_getFirstFiltered21","_getFirstFiltered22","_getFirstFiltered23","_getFirstFiltered24","anatomyCase","anatomyCaseReview","TestNavigatorContext","useTestNavigator","skipStartBlock","disableDarkMode","_quizProgress$blockIn2","_quizProgress$slice","_autoTagOnSubmit","updating","setUpdating","shuffled","setShuffled","navigationFilter","setNavigationFilter","timeMultiplier","setTimeMultiplier","urlParamTestId","leftButtons","setLeftButtons","centerButtons","setCenterButtons","rightButtons","setRightButtons","_useHistory","_useTestContext","_useProgress","_useProgress$methods","_useProgress$variable","blockConnection","savedProgressQuestionConnections","getTestReviewBlockConnections","currentQuestionIndex","globalQuestionIndex","updatedBlockProgress","transitionBlock","blockTransitions","loadMoreForBlock","_yield$loadMastery","updatedBlock","_test$config2","_test$config3","_quizProgress$blockIn3","_quizProgress$blockIn4","_quizProgress$blockIn5","initPositionFromUrlParam","suspended","_test$config4","toggleQuestionProgressShuffle","savedQuestions","allProgress","overallIndex","autoTagOnSubmit","updates","filteredUpdates","currentQuestionProgress","_currentQuestionProgr","_currentQuestionProgr2","_currentQuestionProgr3","_currentQuestionProgr4","_currentQuestionProgr5","_currentQuestionProgr6","_currentQuestionProgr7","_currentQuestionProgr8","_currentQuestionProgr9","credit","autoTag","setMcatTheme","startBlockIndex","TestNavigatorProviderBase","onExitTest","_ref16$enableReloadBl","enableReloadBlocker","testNavigatorProps","_testNavigatorProps$v","TestNavigatorProvider","useTestNavigatorContext","typeMap","TICalculator","Exhibit","SelectedExhibit","StreakText","StreakAlert","progressObj","didSubmitCorrectAnswer","BarInner","NumericContainer","answerStats","Numeric","displayStyle","ProgressComponent","FrontPageContainer","FrontPage","dailywarmup","LastPageContainer","StatisticText","LastPage","endTime","questionsCorrect","minutesElapsed","substr","secondsElapsed","averagePace","TopBar","BottomBar","ContentArea","centered","ControlButton","ButtonGroup","ExamControls","blueButton","greyButton","exhibitButton","OffscreenLoader","CurrentDateContainer","CurrentDate","FrontQuiz","nextQuestionIndex","setDidSubmitAnswer","setBlueButton","setGreyButton","setExhibitButton","showingExhibit","setShowingExhibit","questionParts","nextQuestionParts","prefetchQuestionParts","offscreenQuestion","handleSelectAnswerIndex","handleSubmitAnswerClick","submittedAnswerIndex","quizProgressElement","handleNextQuestionClick","handleExhibitToggle","ExamComponent","quizProgressByQuestionIndex","confirm","WarmupTest","totalDWUDays","originDate","idsToFetch","previousInteraction","FrontTest","ComingSoonContainer","Index","ProgressWrapper","Educators","ArrowWrapper","ClassroomRow","_useAsync3","courses","alignSelf","ReviewVideos","FullClassroomCard","StyledAddCircle","AddCircle","reviewVideos","reviewVideoIds","reviewVideoProgress","subjectProgress","_progresses$id","_progresses$id2","_progresses$id3","_progresses$id4","_coursesByClassroom$r","reviewVideoBackground","dentalAnatomyVideoProgress","grossAnatomyVideoProgress","neuroAnatomyVideoProgress","histoVideoProgress","_courseBlockCounts$cl2","CarsPassages","_caseQuestionsData$co","_caseQuestionsData$pr","caseQuestions","caseQuestionsData","BookImg","CarsPracticeTests","_caseQuestionsData$co2","_caseQuestionsData$pr2","ReadinessImg","VideosCard","aamcExplanations","aamcExplanationsData","collectedVideosData","_test$blockConnection2","PlayImg","LinkIcon","heartIcon","anatomyIcon","renderClassroomCard","_ref8$educators","_ref8$showEducators","showEducators","_useContentTypeProgre","freeQuestions","useConfigContext","_history$location","_getTestConfig","_getReadinessExamConfig","_getDATTestConfig","setTestConfig","searchParams","isMCATExam","isPracticeTest","getReadinessExamConfig","_progress$data2","_progress$data2$getTe","_progress$data2$getTe2","_progress$data2$getTe3","_progress$data2$getTe4","_progress$data3","_progress$data4","_progress$data4$getTe","_progress$data4$getTe2","_progress$data4$getTe3","_progress$data5","_progress$data5$getTe","_progressIdResult$dat5","_progressIdResult$dat6","_progressIdResult$dat7","_progressIdResult$dat8","progressWithSequentialBlockData","statOverride","adminStats","subjectBlocks","formattedTestStats","_progress$data7","_progress$data7$getTe","_progress$data7$getTe2","_progress$data7$getTe3","_progress$data7$getTe4","practiceTestAdminStats","statsByQuestionId","scoring","testBlockQuestions","_block$testBlock","_block$testBlock$comp","_block$testBlock$comp2","_progress$data6","_progress$data6$getTe","_progress$data6$getTe2","_progress$data6$getTe3","_progress$data6$getTe4","_progress$data6$getTe5","_progress$data6$getTe6","_curr$questionProgres4","getDATTestConfig","_progress$data","ConfigState","ConfigProvider","useConfigState","circumference","LineLabel","avgScoreLabel","_ref3$avgScoreText","avgScoreText","maxValue","refDimensions","chartHeight","labelOffsetX","labelOffsetY","radians","lineLength","endX","endY","secondEndX","secondEndY","getGradient","_ctx$chart$ctx","_theme$colors$brandPa","GaugeChart","showLineLabel","labelBottom","_ref4$maxValue","scoreSegment","areaSegment","plugin","beforeDraw","midX","easeInQuad","interpolateValue","lineJoin","averageLinePlugin","cutout","hoverOffset","outerStart","innerStart","innerEnd","outerEnd","Doughnut","formatFullLengthStatistics","useAvg","_title$match","snsSubjects","nonSNSSubjects","formatSubject","subjectTestName","getFullLengthAnalysis","formattedStatistics","formattedStatisticsAvg","avgAcademicAverage","PieChart","Pie","TimerContext","useTimerContext","Timer","HideMobile","TestTimer","_useTimerContext","toggleTimer","timerActive","stopwatch","updateTimeLimit","newTimer","TimerProvider","timeLimit","_ref2$autoStart","autoStart","setQuestionStartTime","useStopwatchProps","setTimeElapsed","setStartTime","setIsActive","milliseconds","formattedTimeElapsed","interval","millisecondsElapsed","onOrOff","resetTimer","useStopwatch","useMinuteTimerProps","setLimit","timeUp","setTimeUp","minutesAsSeconds","formattedTimeLeft","longTimeLeft","useMinuteTimer","timerProps","contextValue","ButtonsContainer","TitleContainer","FilterSelector","IncorrectIcon","TopicFilterSelector","ProgressContainer","ToggleBackground","ToggleActive","numOptions","FilterContainer","QbankFilterToggle","visibleFilter","setVisibleFilter","CourseFilterToggle","SettingsToggle","ViewGrid","ViewList","ProgressCount","TitleRow","ProgressButtonWrapper","ShuffleIcon","Shuffle","ProgressRow","StyledTextTooltip","FilterSection","FilterRow","isVisible","FilterText","FilterCount","MasteryTag","SearchInput","_templateObject42","_navigationFilter$val","_navigationFilter$val2","_customTestConfig$con5","_customTestConfig$con6","_navigationFilter$val3","_navigationFilter$val4","_activeTopics$sort","parentTitle","setShowingSidebar","visibleFilterState","progressBar","setGrid","_ref34$showExitButton","showExitButton","_ref34$hide","hideQuestionList","onSearch","hideSettings","openWithSettingsShowing","settingsToggled","setSettingsToggled","hideAnswerData","hideTimer","splitScreenSolutions","showKeyboardShortcuts","autoPlayEnabled","_useTestNavigatorCont","_useTestNavigatorCont2","_useTestNavigatorCont3","_useMemo","_useMemo2","_questions$reduce","testSubjects","testTopics","topicsBySubject","activeSubjectFilter","activeTopics","reviewRoute","completeLessons","totalLessons","handleFilterChange","blockTarget","questionFilter","filterKey","filterValue","handleExitClick","_customTestConfig$con4","titleConfig","exitProps","isUntutoredAndUnsubmitted","FilterRowOptions","iconComponent","Partial","FilterOptionComponent","ScoreFilterRowComponents","MasteryFilterRowComponents","progressCount","_question$answerState","trackingProgressOnly","progressProps","searchQuery","for","delete","DismissCircle","filterSubject","filterTopic","breakdown","YourScore","Swath","SwathText","ScoreDistributionChart","adjustedName","getAdjustedName","totalAttempts","frequencies","summedAttempts","filledScores","occurance","frequencyData","mean","stdDev","backgroundColors","hoverBackgroundColors","borderColors","borderWidths","xMax","hoverBackgroundColor","normalDistribution","pdfValue","exp","calculateNormalDistribution","tension","align","legendItem","drawBorder","callbacks","_context$","parsed","footer","beginAtZero","tick","ScoreComparisonSubjectSelector","AnalysisContent","AnalysisScore","getAnalysis","getOATAnalysis","getOATFullLengthAnalysis","getSnsChartData","bioTime","gcTime","ocTime","getTopicChartData","Metric","metric","MetricWrapper","MetricTop","MetricBottom","StatRow","rowProps","even","hasClickHandler","ScoreReportContainer","TableCell","HalfRow","BoldCell","ScoreReportSection","ScoreHeader","ScoreHeaderCell","ScoreColumn","getTotalScienceScore","topicScores","OfficialScoreReport","dateTaken","StartReview","isFullLength","setVisibleState","_ref16$isOAT","isOAT","subjectScoreComparison","setSubjectScoreComparison","_testTitle$match3","originalCount","newPerformanceRecord","allResults","bioResult","gcResult","ocResult","patResult","rcResult","qrResult","_allResults","relevantTestPerformanceRecord","scoredResult","IS_OAT_STUDENT","datbootcamp_plugin_obj","is_oat_student","UserDetails","_aggregateByTopic","metrics","statTotal","statCorrect","breakdownTable","TopicBreakdown","SectionHeader","TableHeader","Scoring","ScoreBar","MetricContainer","_aggregateByOATSectio","physResult","topicBreakdowns","_aggregateByTopic3","selectedResultStatistics","addSnsChart","chartActive","SectionHeaderWrap","Analysis","TopicBreakdowns","TopicNeedsReviewNotification","_aggregateBySection","activeSubjectComparison","DistributionChartContainer","ScoreComparisonSectionHeader","_testTitle$match4","_aggregateByTopic4","showPatChart","showRcChart","th","ToolTip","leftPercent","ReactTooltip","ScoreBarContainer","ScoreBarWrapperOuter","ScoreBarWrapper","ScoreTableWrapper","ScoreSectionWrapper","adjustment","LabelWrapper","ScoreSection","ReadinessScoreBar","ReadinessScoreBarWrapper","StyledLineLabelWrapper","getPracticeTestFeedback","avgPercentage","readinessExamGrade","getReadinessExamGrade","yourScorePercentage","readinessExamScore","gradeLabel","matthew","Score","_scoring$overview","_scoring$overview2","_scoring$overview3","_scoring$overview4","_scoring$overview5","_scoring$overview6","_scoring$overview7","_scoring$overview8","_scoring$overview9","_scoring$overview10","_scoring$overview11","_ref47$hideChart","hideChart","_ref47$hideBlurb","hideBlurb","_useConfigState","yourScore","setshowLineLabel","avgScorePercentage","avgTimePerQuestion","readinessExamSegments","_getReadinessExamGrad","practiceTestFeedback","styledSubjects","getReadinessExamFeedback","gaugeChartProps","scoreCell","SelfAssessments","contentTypeProgress","showEmily","SimulationExams","qbankContent","_data$queryCohortUser","_yield$API$graphql","contentRestrictions","_item$cohort","StyledPeople","freeVideos","freeVideosData","CasesCard","FirstAidImg","ReadinessExamCard","CheatSheetCard","DocumentImg","StandaloneQuestionCard","standaloneQuestionCounts","filteredProgresses","condensedProgresses","StethoscopeImg","_useUserDataContext6","ClassroomImageMap","StandaloneQuestions","testQuestionCounts","_testQuestionCounts$c","NextGenReadinessExams","CARSPassages","NextGenCases","NextGenCourse","systemImgMap","NCLEXCheatSheets","fetchCheatSheets","sortedItems","StyledMasterySelect","MasterySelect","NCLEXMasterySelect","NCLEXReviewBanks","_progresses$activeCla","topicFilter","setTopicFilter","readinessExamSubjectCounts","progressIndexedByTestId","_progresses$key","_progresses$key$data","_progresses$key$data$","_data$userIdHashTestI","_acc$name","_acc$name2","classroomProgress","handleCardClick","DefaultReviewBanks","_progresses$activeCla2","_progresses$activeCla3","subjectTagIds","ReviewBanks","ReviewBankComponent","OverviewText","InstructorDetails","InstructorDetailsImage","InstructorDetailsText","InstructorDetailsTextHeading","StyledBody2","GuidesContainer","GuideWell","GuideDownloadButton","StyledDownloadIcon","Testimonial","TestimonialRow","TestimonialImage","TestimonialAuthor","TestimonialName","TestimonialByline","studyGuide","alli","StyledTestimonialImage","colin","hannah","studyGuides","datStudyGuide","oatStudyGuide","inbdeStudyGuide","StudyGuides","layoutType","ThumbnailContainer","DetailsTitle","DetailsSubject","Overlay","_ref7$layoutType","StyledPageWrapper","HorizontalPaddingWrapper","ResultGridContainer","ResultRowContainer","ResultRowWrapper","StyledSearchBar","Chiclets","ChicletContainer","ChicletIcon","assetPathMap","getIcon","SubjectHeading","SubjectSection","ClassroomLink","ClassroomLinkText","ScrollButton","LoadingContainer","ResultSectionGrid","ResultSectionRow","scrollPosition","setScrollPosition","containerDimensions","setContainerDimensions","scrollRef","leftScrollDisabled","rightScrollDisabled","scrollWidth","sectionScrollEnabled","handleButtonClick","_scrollRef$current","_scrollRef$current2","currentScrollPosition","scrollLeft","updatedScrollPosition","scrollTo","_scrollRef$current3","_scrollRef$current4","ExplorePage","_useHistoryState","_useHistoryState2","_useHistoryState3","_useHistoryState4","resultsSplitBySubject","SectionComponent","resultsBySubject","_subjects$find","MasteryButtonWrapper","MasteryButton","hotkey","handlePreviousQuestion","handleNextQuestion","MasteryButtonChild","MasteryButtonChildText","MasteryButtonText","_ref3$empty","TableContainer","PrometricWrapper","NextText","ImageButton","HotkeyHandler","_ref2$hotkey","StyledNextButton","NextButton","StyledYesButton","YesButton","StyledNoButton","NoButton","StyledPreviousButton","PreviousButton","StyledEndButton","EndButton","StyledSuspendButton","SuspendButton","StyledExhibitButton","ExhibitButton","StyledMarkButton","MarkButton","StyledMarkedButton","MarkedButton","StyledReviewButton","ReviewButton","StyledReviewAllButton","ReviewAllButton","StyledReviewMarkedButton","ReviewMarkedButton","StyledReviewIncompleteButton","ReviewIncompleteButton","StyledCheckButton","CheckButton","StyledLearningButton","LearningButton","StyledReviewingButton","ReviewingButton","StyledMasteredButton","MasteredButton","MouseImage","ScrollImage","ReviewScreenImage","ReviewScreenImageSrc","TimeLimitImage","Passage","CenterSection","SettingsHeader","Setting","SettingWrapper","scrollable","overflowHidden","alignQuestion","noMaxWidth","LabReferencesButton","QuestionSet","_blockQuestionProgres","_blockQuestionProgres2","_questionParts","_blockQuestionProgres4","_blockQuestionProgres5","_blockQuestionProgres6","_blockQuestionProgres7","_blockQuestionProgres8","_blockQuestionProgres9","_blockQuestionProgres10","_blockQuestionProgres11","_blockQuestionProgres12","setExhibitType","scrollToTop","enableBookmarking","renderQuestion","_ref10$themePalette","testSubmitted","tutorModeExists","untutoredMode","_questions$quizProgre","blockHighlightProgress","blockQuestionProgress","_curr$testBlock$quest","_curr$testBlock$quest2","_curr$testBlock$quest3","passageBlock","passageTitle","passageHtml","blockTransition","updateQuestionTime","templateHandlers","handleBlockProgressChange","sectionWindow","firstQuestionOfThisBlockThatMatchesFilter","previousBlocksMatchFilter","ultimateQuestionReached","nextFilteredIndex","_getQuestionParts3","nextBlocksMatchFilter","_getQuestionParts4","shouldHidePrevious","shouldHideNext","handleMarkToggle","_blockQuestionProgres3","finishedOnClick","_getQuestionParts5","prevIndex","_getQuestionParts6","onClickMasteryButton","updateMastery","isAnatomy","isPAT","interactionKeyName","isDailyWarmup","reviewType","FinishedDWUAnimation","confirmText","cancelText","onConfirmClick","commonQuestionViewProps","bookmarkStatus","displayMasteryButtons","checkOnClick","_match$params2","partial","qbankProgressId","_questionParts2","_getNCLEXSubjectSyste","_questionParts3","_questionParts4","displayNavigationButtons","hideCheckButton","displayPrometricNavigationButtons","FLPreviousButton","FLNextButton","FLCheckButton","FLMarkedButton","FLMarkButton","FLExhibitButton","FLReviewButton","displayPrometricMasteryButtons","FLLearningButton","FLReviewingButton","FLMasteredButton","_blockQuestionProgres13","_blockQuestionProgres14","_blockQuestionProgres15","questionViewProps","isDraft","blockPassage","viewProps","StyledRetakeTestButton","StartButton","_ref14$children","RetakeTestButton","_ref15$children","Refresh","ExitQuizButton","_useHistory2","MapContainer","MapWrapper","ScalePercentContainer","ScalePercent","scalePercent","ResetButtonIcon","FilterCenterFocus","ToggleLabelsButtonContainer","showingLabeled","LabelsActiveButtonIcon","LabelsInactiveButtonIcon","ToggleLabelsButton","setShowingLabeled","AnatomyImageViewer","hasLabels","_ref15$containerDimen","_ref15$defaultScale","defaultScale","_ref15$defaultTransla","defaultTranslation","initialValues","translation","setScale","setTranslation","resizer","dimensions","heightScalingFactor","widthScalingFactor","scalingFactor","scaleDelta","translationDelta","MapInteraction","showControls","controlsClass","btnClass","mobileDisplay","ImageLoadingSpinner","Img","NoImage","NoImageIcon","ImageNotSupported","NoImageText","CaseImage","caseImageProps","caseImageSolutionProps","imageUrl","setImageUrl","imageViewerProps","labeled","onLoad","questionSetExplanation","QuestionTitle","TagDisplay","MasteryLevelWrapper","masteryLevelMap","Question","setCaseImageProps","setCaseImageSolutionProps","showingTags","_ref32$showQuestionNu","showQuestionNumber","fetchQuestionImage","ImagePrefetcher","LessonHighlight","ChapterHighlight","StyledProgress","DescriptionHeader","DescriptionText","formatTestMastery","_mastery$reduce","StartBlock","onExitClick","subheader","descriptionHeader","descriptionText","buttons","_ref29$showProgress","overrideHeaderLoading","TotalQuestionsWrapper","getMasteryLevelParam","StartMasteryReview","headerColor","QuestionCount","StyledIconWrapper","StartBookmarkedQuestionReview","SvgDailywarmup","filterUnits","colorInterpolationFilters","floodOpacity","in","dy","in2","Greeting","DescriptionBox","DescriptionWrapper","QuestionCountList","QuestionCountListRow","QuestionCountListRowText","StyledDWUIcon","DWUIcon","StyledMasteryIcon","ExitStart","DailyReviewIntroBlock","currentMoment","dateStringText","masteryLevels","greetingText","masteryLevelCount","SvgZoomOut","SvgZoomIn","SvgReset","HyperlinkImage","tabImg","containerHeight","tableWidth","videoWidth","useNCLEXTable","ToggleTab","TabRenderer","_React$useState","tab","_React$useState2","TransformComponent","wrapperStyle","contentStyle","TransformControlContainer","ZoomOutIcon","ZoomOut","ZoomInIcon","ZoomIn","Reset","TransformControls","_useControls","useControls","zoomIn","zoomOut","resetTransform","HyperlinkRenderer","associatedHyperlink","hyperlinksRef","_useResizeObserver","doc","DOMParser","parseFromString","tabLinks","tabContents","TransformWrapper","doubleClick","borderLeft","borderRight","PlayButton","VideoTitle","InformationIcon","InformationCircle","VideoContainer","Thumbnail","fetchTestBlock","_fetchTestBlock","RelatedVideo","blockName","setBlock","_parseVimeoIdFromBloc","videoComponent","parseVimeoIdFromBlockContents","_findInConfigById","_findInConfigById$rev","formatConfigMatch","subjectMatch","assembleRouteFromConfig","_getRelatedVideo","getRelatedVideo","RelatedVideos","parsedVideos","parseVideoData","SvgScoring","SolutionStats","stack","SolutionStat","isResult","SolutionResult","SolutionResultMobile","PencilAltMobile","PencilAlt","SolutionStatTop","SolutionStatTopText","noIcon","SolutionStatBottom","showForIncorrectAnswerOnMobile","Colon","SolutionStatBottomMobile","StyledScoringSVG","ScoringSVG","SolutionMeta","loadingAnswerData","correctPercentageText","hideTimeSpent","hideCorrectAnswer","hideResult","scoringRule","scoreDetail","scoringImg","plusMinus","PlusMinusScoring","zeroOne","ZeroOneScoring","rationale","RationaleScoring","PromptContainer","PromptRoot","answered","correctIcon","incorrectIcon","LastUpdatedText","TagRow","TagWrapper","TagTop","TagBottom","forwardRef","hideArrow","arrow","ScoreIcon","setAnswerState","inputType","choiceLimit","SolutionRoot","SolutionHeaderContainer","SolutionHeaderWrapper","SolutionHeader","BorderBlock","CitationContainer","CitationHeader","CitationsText","ExplanationDivider","_solutionRef$current3","_event$target$parentN","_event$target$parentN2","_event$target2$classL","hyperlinkNode","tagName","_hyperlinkNode$datase","outerHTML","hrefIndex","_solutionRef$current4","hideSystemTopicTags","QuestionHeader","submitPadding","ScoreIconContainer","CorrectIcon","WordCountIcon","TextCaseTitle","CharacterCountIcon","TextFirstLine","ReadingLevelIcon","CheckmarkIcon","PassageComparisonContainer","PassageComparisonHeader","PassageComparisonContent","PassageComparisonRow","PassageComparisonRowLabel","PassageComparisonRowValueContainer","ValueContainerLabel","ValueContainerBase","ValueContainerInner","CenteredCheckmarkContainer","ValueContainer","innerOffset","valueOffset","PassageComparison","passageBlockParts","wordCountRange","characterCountRange","readingLevelRange","splitScreen","ImagePopup","relatedVids","shouldHideAnswerData","imagePopupComponent","showExplanationDivider","showSubjectSystem","hideTopic","_baseTheme$colors","_baseTheme$colors$pro","_getThemeForHyperlink3","insertVideoElements","_e$target2","ImageComponent","_getThemeForHyperlink","persistToLocalStorage","setHandleHeight","parentElement","scrollHeight","handleWindowResize","handleElement","Resizable","_window$matchMedia","handleRef","isResizing","setIsResizing","resizableRef","isTouchDevice","matchMedia","matches","userSelect","handleTouchStart","handleTouchEnd","handleDoubleClick","widthFromLocalStorage","_handleRef$current2","_handleRef$current3","_handleRef$current","onMouseMove","_resizableRef$current","newWidth","limitedWidth","onTouchMove","_resizableRef$current2","simpleContainer","AnswerPercentage","answerPercentage","onClickAnswerChoice","isMultipleSelectActive","hasPassage","Handle","HandleArea","HandleIconBackground","HandleIcon","MoreVertical","DividerWrapper","_ref37$colorConfig","minimize","splitScreenEnabled","QuestionWrapper","SolutionWrapper","SplitScreenPlaceholder","QuestionAreaWrapper","INBDEImagesContainer","ImageButtonsContainer","ExhibitWrapper","TutorModeCheckButton","QuestionSolutionMeta","prometricMode","selectedPromptImage","setSelectedPromptImage","resizeHandleRef","questionAnswerData","hasINBDEContent","updateSelectedAnswerIndex","checkImageDisplay","localizeContentForBootcamp","_fetchAnatomyImageSolution","fetchAnatomyImageSolution","insertGifElements","ToggleSidebarOpenIcon","ToggleSidebarClosedIcon","ToggleSettingsButton","Cog","RightContainer","TimerText","StyledAdminButtons","sidebarState","questionStats","onExit","showScore","questionCountThusFar","_sidebarState","DAT_TEST_TAG_ID","INBDE_TEST_TAG_ID","QuestionSearch","QuestionSearchProvider","filterRequired","filterOverride","setSearchParams","filteredQuestions","setFilteredQuestions","loadingQuestions","setLoadingQuestions","hasNextPage","setHasNextPage","composeFilterOverride","and","searchString","matchPhrasePrefix","matchPhrase","debouncedSearchFilter","fetchFilteredQuestions","_yield$searchQuestion","fetchedQuestions","asyncFetch","loadingNextPage","loadNextPage","useQuestionSearchContext","SvgBookmarkIcon","fillOpacity","stdDeviation","operator","k2","k3","Backdrop","ContentElementWrapper","isAnswered","isCurrent","ContentElementContainer","TopAreaWrapper","ContentLabel","QuestionLabel","QuestionListWrapper","CheckIcon","XIcon","PartialCreditIcon","AnsweredIcon","RadioButtonOn","UnansweredIcon","RadioButtonOff","GridElementContainer","GridElementContent","isChecked","TagHeader","BookmarkHeader","BookmarkIcon","BookmarkTag","SequentialSetIndicator","ContentElement","isBookmarked","isPartialCredit","_ref64$withPadding","previewText","showMasteryLevel","scrollContainer","dims","topBarHeight","updatedScrollTop","prevProps","nextProps","EmptyElement","ContentElementGrid","NothingFoundContainer","NothingFound","PreviewText","Sidebar","_test$config$title","_sidebarContent$flat","_ref67$hide","_ref67$openWithSettin","isFullLengthTestReview","blockTitleMap","overallQuestionIndex","sidebarContent","blockArray","_blockArray","reducedQuestions","promptText","_questionProgresses$c","rowRequired","totalGridSectionLength","fillCount","PositionWrapper","_props$sidebarState","Correct","Incorrect","QuestionStats","TooltipPosition","CloseIconContainer","BaseTooltip","dismissalInteractionKey","_ref4$dismissAfterUnm","dismissAfterUnmounting","_ref4$position","closed","setClosed","didDismissTooltip","ControlWrapper","isShowingImage","QuestionSetContainer","QuestionSetWrapper","noOverflow","CaseImageWrapper","QuestionSetInner","ControlsWrapper","StatWrapper","CaseQuestionSetWrapper","Controls","QBank","startBlockTitle","handleEndBlockUpdate","hideSidebarSettings","_useTestNavigatorCont4","_useTestNavigatorCont5","localTheme","examComponent","testBlockConnection","_match$params3","_currentQuestion$ques","masteryBar","paddingBottom","testType","descriptionPreText","buttonText","includesQuestionSet","isCaseQuestion","flex","overrideMobileStyles","blockRenderer","updateSidebarState","setSidebarState","asMinutes","ThemeProvider","TestReview","QuestionBank","withNavSidebar","BoxSubsection","MenuText","Cross","SvgMenu","SvgMarkFlag","SvgFullScreen","SvgTutorial","SvgLabValues","stopOpacity","MenuSVG","ItemCount","MarkFlagWrapper","MarkFlagIcon","MarkFlagSVG","MarkSection","LeftSection","_questionProgresses$q3","ProgressButton","handleNavigation","FullScreenIcon","FullScreenSVG","LabValuesIcon","TutorialSVG","LabValuesSVG","settingsSidebarState","setShowingLabValues","_settingsSidebarState","fullscreen","exitFullscreen","webkitRequestFullscreen","requestFullscreen","showingLabValues","SvgStop","SvgSuspend","TimeWrapper","MasteryWrapper","TimeLeft","TimedText","StopIcon","StopSVG","KeyboardShortcut","handleSubmitClick","handleSuspendClick","SuspendSVG","SolutionInner","ChoicesContainer","QuestionIndexContainer","ContainerSubsection","ChoiceInput","radioCorrect","ChoiceText","selectEnabled","AnswerLetter","ChoiceFeedback","StyledSolution","_questionProgresses$q4","_questionProgresses$q5","_ref19$feedbackDispla","feedbackDisplayStyle","updateSelectedAnswerChoice","Choices","MasteryButtons","_questionProgresses$f","_questionProgresses$q6","showingQuestionIndex","disableHighlighting","_ref24$feedbackDispla","testQuestions","onClickCheckButton","_questionProgresses$q7","_questionProgresses$q8","_questionProgresses$q9","_questionProgresses$q10","_questionProgresses$q11","_questionProgresses$q12","_questionProgresses$q13","_questionProgresses$q14","_questionProgresses$q15","_questionProgresses$q16","_questionProgresses$q17","SvgBlackMarkFlag","BlackMarkFlagIcon","BlackMarkFlagSVG","borderTop","SidebarElementContainer","SidebarElement","hasValidMasteryLevel","sidebarItems","_quizProgress","onlyShowCurrentBlock","nextBlockSequential","Blood","class","rowspan","colspan","Cerebrospinal","Serum","UrineBMI","TabWrapper","showingReferenceIntervals","Tab","highlighted","TabContent","tabComponentIds","highlightTerm","term","processNode","nodeType","Node","TEXT_NODE","nodeValue","RegExp","textNode","createTextNode","childNodes","highlightText","originalHTML","highlightedHTML","LabValues","highlightedTabs","setHighlightedTabs","setShowingReferenceIntervals","setOriginalHTML","handleTabChange","activeTabComponentId","tabId","tabComponent","BreakBlockContainer","BreakInformationContainer","BreakInformation","BreakBlock","breakTimeStarted","timeRemaining","setTimeRemaining","nextBlock","formattedBlockTime","timeInMinutes","formatTime","_ref6$blockRenderers","blockRenderers","prometricTheme","displayEndBlockNavigation","_onConfirm2","_onConfirm3","_onConfirm4","shouldAutoTag","shouldTrackPerformance","_onConfirm5","_onConfirm6","defaultBlocksForTemplate","totalQuestionBlocks","rendererProps","SettingsSidebar","WrappedQbank","_useTestNavigatorCont6","Citation","CitationsContainer","Citations","allCitations","getCitations","timeAccommodation","timeAccommodation2x","newaccommodationValue","baseTimeLimit","Instructions","Mastery","ReviewIcon","Flexbox","EndBlock","goToQuestion","_ref$sectionWindow","showReviewDetails","reviewIconSrc","Incomplete","tutorialMode","ContainerType","PrometricView","IntroContainer","IntroWrapper","ConfidentialityContainer","IntroConfirmation","BoldSection","Intro","Welcome","Mouse","Navigation","Scroll","MultipleChoice","Samples","SNSBiology","SNSGenChem","SNSOrgoChem","RCPassage","RCIntro","RCFirst","RCSecond","QR","Reviewing","End","DATpages","OATpages","SectionBreakImage","FullLengthTutorial","setTopLeftText","setTopRightText","tutorialIndex","setTutorialIndex","tutorialSet","EndButtonComponent","keyhole","TFE1","holePunching","patternFolding","PATTutorial","instructionIndex","setDismissedPATTutorial","dismissedPATTutorial","SNSTutorial","setDismissedSNSTutorial","dismissedSNSTutorial","QRTutorial","setDismissedQRTutorial","PhysicsTutorial","setDismissedPhysicsTutorial","setDismissedRCPassage","dismissedRCPassage","SectionBreak","useOfflineIndicator","Offline","reconnect","initialDelay","ToggleSettingsButtonIcon","ControlsContainer","ControlsPadding","ControlSection","justify","invisible","INBDEQuestionWrapper","WrappedINBDEQuestion","_props$answers","INBDEQuestion","inline","PrometricBank","topLeftText","topRightText","dismissedQRTutorial","dismissedPhysicsTutorial","IS_OAT_TEST","getOATSectionTitle","getSectionTitle","currentBlockType","quizProgressSectionFlat","accommodation","getSectionTimeLimit","exitCustomTest","_onError","isFinalSection","_onError2","_callee19","_context19","_callee23","_context23","BlockComponent","_test$config$title2","QuestionComponent","_callee24","_context24","TimedPrometricBank","_customTestConfig$con7","_useTestNavigatorCont7","_ref12$children","SettingHeader","StyledCloseButton","Luck","SelfAssessmentRules","_ref3$headerText","_ref3$Rules","Rules","_ref3$startText","handleTimeAccommodationChange","DragItem","asTable","ArrowButton","ClozeDragItem","DragItemWrapper","DragHandle","ClozeDropContainer","DropContainer","withButtons","DropAreaWrapper","ClozeDropWrapper","DropWrapper","ListHeader","LimitPlaceholder","CorrectResponse","IncorrectResponse","DropZone","renderButtons","onTargetClick","selectedTarget","showScoreIcon","onlyShowCorrectScoreIcon","controlHeight","initialHeight","setInitialHeight","isDropDisabled","draggingOver","DropTarget","_targetId$split","_droppableId$split","orderMatters","droppableIndex","PromptDragTargets","promptRef","selections","setTargets","dragTargets","groupIndex","DndDefault","headerLeft","headerRight","dropLimit","_ref45$asTable","_ref45$withButtons","answeredAnswersLeft","answeredAnswersRight","setSelectedTarget","answersLeft","setAnswersLeft","answersRight","setAnswersRight","onLeftRightClick","setTo","setFrom","filtered","onUpDownClick","newIndex","reordered","isButtonActive","renderButtonArea","directions","setter","newAnswersTo","newAnswersFrom","onDragStart","onBeforeCapture","beforeCapture","draggableElement","componentMap","clozeSelections","setClozeSelections","answerPool","updatedSelections","targetAnswer","_answerPools$","_answerPools$2","rationaleSelections","setRationaleSelections","answerPools","poolHeaderLeft","poolHeaderRight","sourceIndex","_ref100","_ref101","orderedAnswers","_ref92","_ref93","_ref94","_ref95","_ref96","_ref97","headerL","headerR","_ref98","_ref99","DragAndDrop","_ref102","showAnswerBox","DragComponent","HotspotContainer","Canvas","CanvasOverlay","clickTarget","setClickTarget","drawSelection","canvasOffset","fillRect","drawCorrectArea","HotSpot","hotSpotImageInput","setLoaded","BowtieDropZoneContainer","AnswerPoolsContainer","DropZoneGrouping","SpacerContainer","SpacerLine","BowtieDragItem","BowtieDragHandle","BowtieDropContainer","PlaceholderTextElement","BowtieDropWrapper","Spacer","placeholderText","BowtieDropZone","AnswerPools","targetValue","Bowtie","setSelections","renderDropdown","dropdowns","dropdownDisplay","outsideClickHandler","DefaultQuestion","_promptRef$current","_promptRef$current2","highlightIndexClicked","answerPreviouslySelected","toggle","_promptRef$current3","fitbInput","_promptRef$current4","_promptRef$current4$g","handleTableChange","previousElementSibling","answeredMatrix","domNode","_table$","_table$$children","_table$$children$","root","inputs","inputValues","valueArray","getAnswerMatrix","_answerState$rowIndex","isGrouping","syncMatrixWithAnswerState","inputIndex","_matrix","_matrix2","_matrix3","_answerState2","_answerState3","scoreUI","selectedAnswer","displayScoredMatrixUI","relevantAnswer","_Array$from","_answerState$index2","scoreWrapper","relevantAnswerState","displayScoredDropdownUI","reformatPrompt","answerRow","questionViewsByType","highlightSelectN","headerPresent","TabName","NameContainer","NameWrapper","Names","DataTabs","showClientDataTabs","fontScale","VerticalLine","StyledSolutionMeta","_parseFloat","clientDataTabMap","_clientDataTabsTypes$","solutionMeta","updatedState","_getScores","DesktopOnlyText","HoverHighlight","hideQuestionIndex","CenteredRow","SettingsButton","ButtonText","Subcontainer","UnderlineSpan","toggleSidebar","launchCalculator","ButtonAreaWrapper","hideLaptop","PrometricSpinner","MobileHoverButton","MobileTagIcon","MasteryButtonWrapperMobile","PauseButton","displaySpinner","spinnerContainer","NavigatorTableHeader","NavigatorTableHeaderCell","NavigatorTable","NavigatorTableRow","NavigatorTableRowCell","navigatorComponent","showingMasteryControls","setShowingMasteryControls","urlTestProgressId","udpateQuestionTime","stringifiedAnswerState","stringifiedHighlights","hasUnansweredQuestions","validateAnswerState","_answerState$answerSt","showNavigator","_quizProgress$reduce$","questionRows","setFontScale","updateFontScale","int","formattedDuration","qbankComponentByBootcamp","USMLEBank","NCLEXBank","CustomTest","bootcampWithType","ScoreRow","OuterWrapper","singleSubject","_iconMap$bootcamp2","_iconMap$bootcamp3","_iconMap$bootcamp4","defaultRows","titleText","SubjectSelector","Selector","setSelection","_ref2$options","IconDiv","RowIndex","_filterOptions$","_ref17$filterOptions","filterOptions","_ref17$filterKey","hideExpand","redirectBaseUrl","caseTitle","HeaderRows","RightWrapper","LeftContainer","TotalTimeLabel","TotalTime","Average","topicOnly","typeHeader","PageHeader","_config$config","CustomBreadcrumbs","_config$config2","ScoreReport","getAllTestIds","QuickReview","_config$meta","Bank","contextProps","Bites","_config$meta2","BoardStyle","GrossAnatomy","formatTestFromMastery","MasteryBank","setTotalQuestions","fetchedMastery","setFetchedMastery","_mastery$","_mastery$$question","_mastery$$question$ta","_mastery$$question$ta2","_mastery$$question$ta3","_mastery$$question$ta4","loadedTest","lookupKey","queryType","dataKey","_mastery$2","_mastery$2$question","_mastery$2$question$t","_mastery$2$question$t2","_mastery$2$question$t3","_mastery$2$question$t4","loadAllMastery","propTypes","urlTopicId","masteryBankType","collectedIds","buttonConfigDefaults","Group","ButtonBar","buttonGroups","BankWrapper","_useQuestionSearchCon","formattedResults","UpdatedSearch","PracticeTestWrapper","_ref$template","_ref$testId","SvgPencil","SvgFlagOutline","HighlightText","CountIcon","FlagWrapper","TopMiddle","MiddleRight","showingTime","showingCount","Highlight","StrikethroughIcon","Strikethrough","Caret","ThemeSelector","highlightTooltipRef","setShowingTime","setShowingCount","modalText","wordWrap","SvgNavigation","SvgArrowLeft","SvgArrowRight","_rect5","_rect6","_rect7","_rect8","_rect9","_rect10","_rect11","_rect12","_rect13","_rect14","_rect15","SvgPt","HoverButtonBase","MasteryButtonContainer","PTIconImage","ArrowLeft","alwaysShow","MasteryControlButtonContainer","MasteryTextContainer","MobileMasteryBar","isSectionReview","StyledDraggablePopup","scrollArrowUp","scrollArrow","Footer","StyledFlag","StyledNavigationIcon","NavigationIcon","SortIndicator","Navigator","_quizProgress$reduce3","sortColumn","setSortColumn","sortFunction","flatProgress","globalIndex","HighlightWrapper","QuestionContainer","PassageContainer","PassageWrapper","showingPassage","PassageText","PassageTitle","StyledQuestion","ImportedQuestionWrapper","SolutionMetaStylable","ViewSelectorContainer","ViewOption","PassageBlock","setHighlightMode","questionWrapperRef","setShowingPassage","disableHighlightToolTip","ReviewText","ReviewTable","FilterTab","FilterTabContainer","SectionReview","incomplete","unseen","flagged","questionsSoFar","_test$config$title$sp","MCATQBank","AppQuestionBank","testFilter","MCATBank","AngleRanking","CubeCounting","THREE","HolePunching","PatternFolding","Tfe","holepunching","clearAnswers","answerToggle","gridToggle","disableRadios","initialTime","_maxCandidates","_numAnswers","fourthFoldActive","showAnswer","showGrid","rb","which","punchSecondHole","addedLine","flapped","drawGrid","drawFoldLine","lineDrawn1","lineDrawn2","vertex1","vertex2","diffX","diffY","lineDrawn","_step2","linePoly","_iterator2","foldedSet","lines","secondHoleSpot","_step3","_iterator3","_step4","_iterator4","strokeSyle","initialStrokeStyle","fColor","hasSecondhole","pos","_step5","_iterator5","radi","dimension","newCubeCounting","createScene","updateScene","initScene","createCube","canvasDrag","minZ","maxZ","intervalFunction","resetScene","scene","camera","renderer","dragTouchMode","domElement","zoom","updateProjectionMatrix","Scene","Color","OrthographicCamera","WebGLRenderer","antialias","setSize","geometry","BoxGeometry","material","MeshBasicMaterial","createdCube","Mesh","edgeGeometry","EdgesGeometry","edgeMaterial","LineBasicMaterial","linewidth","edges","LineSegments","newX","newZ","lookAt","contentMap","angleRankingJs","newCubeCountingJs","holePunchingJs","newPatternFoldingJs","TrainerJs","StyledExitQuizButton","generatorKey","_contentMap$generator","script","stylesheet","toggleClass","removeClass","_circle","SelfAssessment","SimulationExam","SvgCheckmarkOutline","sidebarWidth","StyledItem","QuizItemTitle","Complete","StyledBootcampLockdown","getItemData","videoId","Introduction","PlayIcon","SchoolIcon","School","LockedIcon","LessonNumber","LessonDetails","Lesson","_getItemData","StyledQuizIcon","_blockProgress$questi3","_blockProgress$questi4","quizNumber","taggedQuestions","_getItemData3","ItemComponent","chapterName","lessonIndex","blockRef","_testBlock$title","ScrollOnActive","YouTubePlayer","alt","YouTube","playerVars","containerClassName","RawResourceWrapper","RawWrapper","ResourceContainer","TextBlock","parsedHtml","setParsedHtml","htmlContainer","_element$dataset","_element$href","shouldFormatHref","hrefBootcamp","shouldRepointBootcamp","parseHtml","noPadding","VideoWrapper","VimeoWrapper","VideoDetailsRow","VideoSizer","VideoPlayerComponent","VideoElement","origin","Block","exhibit","toggleExhibit","handleNextLesson","onLockedBlockIndex","replaceState","_testBlock$title2","_testBlock$title3","blockContentType","isQuizLinkBlock","handlePreviousLesson","setButtons","_blocks","getNextBlock","checkQuestion","blockQuestions","currentQuestionIsLast","masteryButtons","currentQuestionId","Transition","blockIndexChecked","setBlockIndexChecked","testLoading","isLoading","matchedBlockIdIndex","indexToLoad","CoursePlayer","_ref6$themePalette","sidebarProps","_blocks$nextIndex","nextBlockType","periodicTableSubjects","calculatorSubjects","exhibitProps","showing","_ref9$testId","_ref9$testProgressId","WrappedCoursePlayer","contentParent","fullLengthTests","plusPack","_qbankContent$","classroomContent","generator","Generator","_plusPackTests$conten","classroomTest","plusPackTests","plusPackTest","parentContentMatch","plusPacks","FullLengthTestDirectory","activeContentType","setActiveContentType","BookmarkBank","BookmarkLabel","renderCards","bookmarkCounts","ClassroomCardDefault","Bookmarks","userData","setUserData","grossAnatomyTagIds","_fetchUserData","progressData","fetchUserData","ScrollWrapper","CheckoutPage","referrer","CheckoutRedirect","afterpay","_setupCheckout","checkoutUrl","setupCheckout","CardContent","StyledDetail","formatAmount","Receipt","toLocaleString","dateStyle","EmbedWrapper","Typeform","feedbackFormIdByBootcamp","ThankYou","typeformContainer","sessionId","fetchingPaymentIntent","receipt","_result$body","_result$body3","_result$body2","paymentMethodDetails","formatReceiptFromPaymentIntent","createWidget","_paymentIntent$body","_paymentIntent$body$p","_yield$getMembership","promoCode","trackMembership","ChartCard","optionsByBootcamp","DistributionChart","_scoring$subjectBreak","_scoring$subjectBreak2","setSubject","subjectTestTitle","sharedRoutes","exact","bootcampRoutes","_props$match","_props$match$params","StudySchedulePage","FAQPage","noFade","DATTestReview","BitesReview","BoardStyleReview","GrossAnatomyReview","MSBSelfAssessments","INBDESimulationExams","AnatomyHome","ChemistryHome","OATHome","DATHome","DATDWU","INBDEHome","Step1Home","DSBHome","MCATHome","MSBHome","NCLEXHome","BookmarkQuestionBank","NCLEXStandalone","NCLEXReadinessExams","NCLEXNextGenCases","NCLEXNextGenCourse","BasicRoute","allRoutes","qbIds","MasteryReviewSelect","bioProgress","paProgress","physProgress","classroomMasteryConfig","withHeader","ul","importing","ScrollToTop","AppRouter","Router","Suspense","fallback","AppRoutes","createGlobalStyle","Notification","NotificationContext","NotificationProvider","_Component","_inherits","_createSuper","_classCallCheck","setNotification","notification","_createClass","ErrorBoundary","_React$Component","hasError","errorInfo","logError","originalRemoveChild","warn","originalInsertBefore","newNode","referenceNode","PubSub","AppContainer","withConfig","componentId","App","_useDarkMode","getTheme","overrides","darkModeColors","subKey","subSubKey","useDarkMode","Intercom","appID","_ThemeProvider","GlobalStyle","hostname","disableReactDevTools","smoothscroll","polyfill","defaultRoot","domain","dsn","integrations","BrowserTracing","tracesSampleRate","initialize","gtmId"],"mappings":"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,8/I,+BCAf,OAAe,cAA0B,4C,+BCAzC,OAAe,cAA0B,0C,+BCAzC,OAAe,cAA0B,uC,+BCAzC,OAAe,cAA0B,wC,+BCAzC,OAAe,cAA0B,gC,+BCAzC,OAAe,s8G,+BCAf,OAAe,cAA0B,gC,+BCAzC,OAAe,cAA0B,iC,+BCAzC,OAAe,cAA0B,wC,+BCAzC,OAAe,cAA0B,0C,+BCAzC,OAAe,cAA0B,4C,+BCAzC,OAAe,cAA0B,wC,+BCAzC,OAAe,cAA0B,4C,+BCAzC,OAAe,cAA0B,oC,+BCAzC,OAAe,cAA0B,2C,+BCAzC,OAAe,cAA0B,kC,+BCAzC,OAAe,cAA0B,2C,+BCAzC,OAAe,cAA0B,wC,+BCAzC,OAAe,cAA0B,4C,+BCAzC,OAAe,cAA0B,mC,+BCAzC,OAAe,cAA0B,mC,+BCAzC,OAAe,khX,+BCAf,OAAe,cAA0B,gD,+BCAzC,OAAe,cAA0B,6C,+BCAzC,OAAe,cAA0B,iD,+BCAzC,OAAe,cAA0B,8C,+BCAzC,OAAe,cAA0B,+C,+BCAzC,OAAe,cAA0B,4C,+BCAzC,OAAe,cAA0B,8C,+BCAzC,OAAe,cAA0B,6C,+BCAzC,OAAe,cAA0B,kD,+BCAzC,OAAe,cAA0B,8C,+BCAzC,OAAe,cAA0B,+C,+BCAzC,OAAe,cAA0B,gD,+BCAzC,OAAe,cAA0B,+C,+BCAzC,OAAe,cAA0B,iD,+BCAzC,OAAe,cAA0B,6C,gCCAzC,OAAe,cAA0B,yC,+BCAzC,OAAe,05E,+BCAf,OAAe,kmF,+BCAf,OAAe,0vH,+BCAf,OAAe,84C,+BCAf,OAAe,kpG,+BCAf,OAAe,82C,+BCAf,OAAe,k9E,+BCAf,OAAe,khL,+BCAf,OAAe,cAA0B,kC,+BCAzC,OAAe,8lI,+BCAf,OAAe,8iI,+BCAf,OAAe,8tL,+BCAf,OAAe,cAA0B,yC,+BCAzC,OAAe,cAA0B,oC,+BCAzC,OAAe,cAA0B,oC,+BCAzC,OAAe,cAA0B,qC,+BCAzC,OAAe,cAA0B,oC,+BCAzC,OAAe,cAA0B,oC,+BCAzC,OAAe,cAA0B,qC,+BCAzC,OAAe,cAA0B,6C,+BCAzC,OAAe,cAA0B,oC,+BCAzC,OAAe,cAA0B,oC,+BCAzC,OAAe,cAA0B,+B,+BCAzC,OAAe,cAA0B,uD,+BCAzC,OAAe,cAA0B,+B,+BCAzC,OAAe,cAA0B,+B,+BCAzC,OAAe,cAA0B,kC,+BCAzC,OAAe,cAA0B,6C,+BCAzC,OAAe,cAA0B,qC,+BCAzC,OAAe,cAA0B,uD,+BCAzC,OAAe,cAA0B,iC,+BCAzC,OAAe,s7E,+BCAf,OAAe,cAA0B,kC,+BCAzC,OAAe,cAA0B,mC,+BCAzC,OAAe,cAA0B,qC,+BCAzC,OAAe,cAA0B,iC,+BCAzC,OAAe,cAA0B,uD,+BCAzC,OAAe,cAA0B,gC,+BCAzC,OAAe,cAA0B,oD,+BCAzC,OAAe,cAA0B,wC,+BCAzC,OAAe,cAA0B,qC,+BCAzC,OAAe,cAA0B,0D,+BCAzC,OAAe,cAA0B,0D,+BCAzC,OAAe,cAA0B,8D,+BCAzC,OAAe,cAA0B,sD,+BCAzC,OAAe,cAA0B,2D,+BCAzC,OAAe,cAA0B,wC,+BCAzC,OAAe,cAA0B,oC,+BCAzC,OAAe,cAA0B,8C,+BCAzC,OAAe,cAA0B,oC,+BCAzC,OAAe,cAA0B,kC,+BCAzC,OAAe,s7L,+BCAf,OAAe,0nL,+BCAf,OAAe,81K,+BCAf,OAAe,kqK,+BCAf,OAAe,8iH,+BCAf,OAAe,s2H,+BCAf,OAAe,cAA0B,gC,+BCAzC,OAAe,cAA0B,iC,+BCAzC,OAAe,cAA0B,mC,+BCAzC,OAAe,ktH,+BCAf,OAAe,cAA0B,oC,+BCAzC,OAAe,cAA0B,yD,+BCAzC,OAAe,cAA0B,kC,+BCAzC,OAAe,cAA0B,qC,+BCAzC,OAAe,cAA0B,8B,+BCAzC,OAAe,cAA0B,8B,+BCAzC,OAAe,cAA0B,mC,+BCAzC,OAAe,cAA0B,yC,+BCAzC,OAAe,cAA0B,wD,+BCAzC,OAAe,cAA0B,iC,+BCAzC,OAAe,cAA0B,kC,+BCAzC,OAAe,cAA0B,uC,+BCAzC,OAAe,cAA0B,8C,+BCAzC,OAAe,cAA0B,yC,+BCAzC,OAAe,mlI,+BCAf,OAAe,cAA0B,kC,+BCAzC,OAAe,m3N,+BCAf,OAAe,cAA0B,uC,+BCAzC,OAAe,cAA0B,oC,+BCAzC,OAAe,cAA0B,yC,+BCAzC,OAAe,cAA0B,mC,+BCAzC,OAAe,cAA0B,yC,+BCAzC,OAAe,cAA0B,yC,+BCAzC,OAAe,cAA0B,iC,+BCAzC,OAAe,cAA0B,yC,+BCAzC,OAAe,cAA0B,6C,+BCAzC,OAAe,cAA0B,wC,+BCAzC,OAAe,cAA0B,mC,+BCAzC,OAAe,cAA0B,0C,+BCAzC,OAAe,cAA0B,2C,+BCAzC,OAAe,cAA0B,gC,+BCAzC,OAAe,cAA0B,iC,+BCAzC,OAAe,kqO,+BCAf,OAAe,0vP,+BCAf,OAAe,skP,+BCAf,OAAe,0jN,+BCAf,OAAe,85P,+BCAf,OAAe,cAA0B,uC,+BCAzC,OAAe,cAA0B,iC,+BCAzC,OAAe,k6H,+BCAf,OAAe,cAA0B,uC,+BCAzC,OAAe,s2L,+BCAf,OAAe,cAA0B,gD,+BCAzC,OAAe,sxO,+BCAf,OAAe,cAA0B,wC,+BCAzC,OAAe,kzN,+BCAf,OAAe,cAA0B,0C,+BCAzC,OAAe,kmM,+BCAf,OAAe,03M,+BCAf,OAAe,cAA0B,wC,+BCAzC,OAAe,0nN,+BCAf,OAAe,cAA0B,sC,+BCAzC,OAAe,k2N,+BCAf,OAAe,cAA0B,qC,+BCAzC,OAAe,sqO,+BCAf,OAAe,cAA0B,6C,+BCAzC,OAAe,k8N,+BCAf,OAAe,cAA0B,uC,+BCAzC,OAAe,cAA0B,sC,+BCAzC,OAAe,cAA0B,uC,+BCAzC,OAAe,cAA0B,+B,+BCAzC,OAAe,cAA0B,+B,+BCAzC,OAAe,+4H,+BCAf,OAAe,cAA0B,0C,+BCAzC,OAAe,cAA0B,iC,+BCAzC,OAAe,cAA0B,kC,+BCAzC,OAAe,cAA0B,sC,+BCAzC,OAAe,cAA0B,iC,+BCAzC,OAAe,cAA0B,uC,+BCAzC,OAAe,cAA0B,kC,+BCAzC,OAAe,cAA0B,sC,+BCAzC,OAAe,cAA0B,wC,+BCAzC,OAAe,cAA0B,iC,+BCAzC,OAAe,cAA0B,yC,+BCAzC,OAAe,cAA0B,kC,+BCAzC,OAAe,cAA0B,yC,+BCAzC,OAAe,cAA0B,2C,+BCAzC,OAAe,cAA0B,wC,+BCAzC,OAAe,cAA0B,qC,+BCAzC,OAAe,cAA0B,gC,+BCAzC,OAAe,cAA0B,oC,+BCAzC,OAAe,cAA0B,4C,+BCAzC,OAAe,cAA0B,yC,+BCAzC,O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ACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,OAER,qBAAsB,CACpB,EAAK,MACL,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,OAER,yBAA0B,CACxB,EAAK,MACL,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,OAER,wBAAyB,CACvB,EAAK,MACL,EAAK,MACL,EAAK,MACL,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,OAER,IAAO,CACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,MACN,GAAM,Q,yFCtKGC,GAAkB,CAC7B5kK,KAAM,UACN6kK,OAAQC,YAGGC,GAAc,CACzB,kBAAmB,CACjB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,kBAAmB,CACjB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,kBAAmB,CACjB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,kBAAmB,CACjB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,kBAAmB,CACjB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,kBAAmB,CACjB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,kBAAmB,CACjB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,kBAAmB,CACjB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,kBAAmB,CACjB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,mBAAoB,CAClB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,4BAA6B,CAC3B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,4BAA6B,CAC3B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,4BAA6B,CAC3B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,4BAA6B,CAC3B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,4BAA6B,CAC3B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,4BAA6B,CAC3B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,4BAA6B,CAC3B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,4BAA6B,CAC3B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,4BAA6B,CAC3B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,6BAA8B,CAC5B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,4BAA6B,CAC3B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,4BAA6B,CAC3B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,4BAA6B,CAC3B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,4BAA6B,CAC3B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,4BAA6B,CAC3B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,4BAA6B,CAC3B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,4BAA6B,CAC3B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,4BAA6B,CAC3B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,4BAA6B,CAC3B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,6BAA8B,CAC5B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,6BAA8B,CAC5B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,6BAA8B,CAC5B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,6BAA8B,CAC5B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,6BAA8B,CAC5B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,6BAA8B,CAC5B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,6BAA8B,CAC5B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,6BAA8B,CAC5B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,6BAA8B,CAC5B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,6BAA8B,CAC5B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,8BAA+B,CAC7B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,8BAA+B,CAC7B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,8BAA+B,CAC7B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,8BAA+B,CAC7B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,8BAA+B,CAC7B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,8BAA+B,CAC7B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,gCAAiC,CAC/B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,gCAAiC,CAC/B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,gCAAiC,CAC/B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,gCAAiC,CAC/B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,gCAAiC,CAC/B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,gCAAiC,CAC/B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,gCAAiC,CAC/B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,gCAAiC,CAC/B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,gCAAiC,CAC/B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,iCAAkC,CAChC,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,iCAAkC,CAChC,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,iCAAkC,CAChC,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,iCAAkC,CAChC,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,iCAAkC,CAChC,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,iCAAkC,CAChC,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,iCAAkC,CAChC,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,iCAAkC,CAChC,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,iCAAkC,CAChC,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,iCAAkC,CAChC,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,iCAAkC,CAChC,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,iCAAkC,CAChC,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,iCAAkC,CAChC,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,iCAAkC,CAChC,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,iCAAkC,CAChC,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF,kCAAmC,CACjC,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OAySG,SAASC,GAAWp5H,EAAY4sE,EAAWysD,GAAa,IAAAC,EACrD3zJ,GAAqC,QAAxB2zJ,EAAA1sD,EAAU/pH,MAAM,gBAAQ,IAAAy2K,OAAA,EAAxBA,EAA2B,KAAM,EAC9CC,EAvSH,SAAiCF,GACtC,OAAQA,GACN,IAAK,UACL,IAAK,oBACL,IAAK,oBAwEL,IAAK,UACH,MAAO,CACL,KACA,KACA,GACA,KACA,KACA,GACA,KACA,KACA,GACA,KACA,KACA,GACA,KACA,KACA,GAtEJ,IAAK,qBACH,MAAO,CACL,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GAEJ,IAAK,wBACH,MAAO,CACL,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GAEJ,IAAK,yBACH,MAAO,CACL,KACA,GACA,KACA,GACA,KACA,KACA,KACA,KACA,KACA,GACA,GACA,KACA,GACA,GACA,GAoBJ,QACE,MAAO,GAEb,CAsMiCG,CAAwBH,GAC/CI,EA5GH,SAAuBJ,GAG5B,OA5FK,SAA+BA,GACpC,OAAQA,GACN,IAAK,UACL,IAAK,oBACH,MAAO,CACL,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJ,IAAK,oBACH,MAAO,CACL,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QAEJ,IAAK,qBACH,MAAO,CACL,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJ,IAAK,wBACH,MAAO,CACL,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJ,IAAK,2BAkBT,CAG6BK,CAAsBL,GAEzCA,GACN,IAAK,UACL,IAAK,oBACH,IAIMM,EAJuB,CAC3B,QAAW,MACX,oBAAqB,MAE0BN,GACjD,MAAO,CAAC,yEAADh4K,OACoEs4K,EAAmB,sFAAAt4K,OACnBs4K,EAAmB,sFAAAt4K,OACnBs4K,EAAmB,sFAAAt4K,OACnBs4K,EAAmB,sFAAAt4K,OACnBs4K,EAAmB,yGAAAt4K,OACAs4K,EAAmB,4JAAAt4K,OACnBs4K,EAAmB,4JAAAt4K,OACnBs4K,EAAmB,otCASnH,IAAK,oBACH,MAAO,CAAC,wFAAD,ohEAiBT,IAAK,qBACH,MAAO,CAAC,qFAAD,81GAiBT,IAAK,wBACH,MAAO,CAAC,yFAAD,sqFAiBT,IAAK,yBACH,MAAO,CAAC,oFAAD,opEAiBT,QACE,MAAO,GAEb,CAKuBC,CAAcP,GAC7Bh+J,EAAQ,KAAMw+J,EAAW,GAAIC,EAAoBltD,EAErD,IAAKusD,GAAYvsD,IAAcjnG,EAAa,GAI1Cm0J,EAAoB,GAAHz4K,OAAMg4K,EAAW,UAAU,SACvC,IAAKF,GAAYvsD,GACtB,MAAO,CAACvxG,QAAOw+J,YAejB,OAZAN,EAAqBp7H,MAAK,SAAC47H,EAAqB9uK,GAC9C,GAAI+0C,GAAc+5H,GAAuB9uK,IAAUsuK,EAAqBl3K,OAAS,EAAG,CAClF,IAAM23K,EAAiBb,GAAYW,GAAmB7uK,GAItD,OAHAoQ,EAAQ09J,GAA2BM,GAAaW,GAEhDH,EAAWJ,EAAWxuK,IACf,CACT,CACA,OAAO,CACT,IAGO,CAACoQ,QAAOw+J,WACnB,CAgJO,I,eAAMI,GAAY,CACvB,yBAA0B,CACxB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,wBAAyB,CACvB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,QAAW,CACT,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,oBAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,oBAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,QAAW,CACT,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MAIG,SAASC,GAAcl6H,EAAY4sE,EAAWysD,GACnD,IAAME,EAnRD,SAAoCF,GACzC,OAAQA,GACN,IAAK,UACH,MAAO,CACL,GACA,KACA,KACA,GACA,GACA,KACA,GACA,KACA,KACA,KACA,GACA,GACA,KACA,KACA,KACA,GACA,KACA,GACA,KACA,GACA,GAEJ,IAAK,oBACH,MAAO,CACL,KACA,KACA,GACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,GACA,KACA,KACA,GACA,KACA,KACA,GACA,GAEJ,IAAK,oBACH,MAAO,CACL,KACA,KACA,GACA,KACA,GACA,KACA,GACA,KACA,KACA,GACA,KACA,KACA,KACA,KACA,KACA,KACA,GACA,KACA,KACA,GAEJ,IAAK,yBACH,MAAO,CACL,KACA,KACA,GACA,GACA,GACA,KACA,KACA,GACA,KACA,KACA,KACA,GACA,KACA,KACA,KACA,GACA,KACA,KACA,GACA,GAEJ,IAAK,wBACH,MAAO,CACL,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,GACA,EACA,GAEJ,IAAK,UACH,MAAO,CACL,KACA,KACA,GACA,KACA,KACA,GACA,KACA,KACA,GACA,KACA,KACA,GACA,KACA,KACA,GAEJ,QACE,MAAO,GAEb,CAuI+Bc,CAA2Bd,GACpDh+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M,EACN,cAAiB,KACjB,eAAkB,IAEtB,kBAAmB,CACf,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,kBAAmB,CACf,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,IACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,kBAAmB,CACf,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,IACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,kBAAmB,CACf,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,kBAAmB,CACf,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,kBAAmB,CACf,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,kBAAmB,CACf,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,kBAAmB,CACf,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,mBAAoB,CAChB,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,4BAA6B,CACzB,EAAK,EACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,4BAA6B,CACzB,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,GAAM,GACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,4BAA6B,CACzB,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,cAAiB,KACjB,eAAkB,IAEtB,4BAA6B,CACzB,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,4BAA6B,CACzB,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,4BAA6B,CACzB,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,4BAA6B,CACzB,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,4BAA6B,CACzB,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,4BAA6B,CACzB,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,EAAK,EACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAElB,6BAA8B,CAC9B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,4BAA6B,CACzB,EAAK,EACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,EACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,4BAA6B,CACzB,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,4BAA6B,CACzB,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,4BAA6B,CACzB,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,IACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,4BAA6B,CACzB,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,4BAA6B,CACzB,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,4BAA6B,CACzB,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,4BAA6B,CACzB,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,4BAA6B,CACzB,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,6BAA8B,CAC1B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,6BAA8B,CAC1B,EAAK,EACL,EAAK,GACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,6BAA8B,CAC1B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,6BAA8B,CAC1B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,6BAA8B,CAC1B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,6BAA8B,CAC1B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,6BAA8B,CAC1B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,6BAA8B,CAC1B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,6BAA8B,CAC1B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,6BAA8B,CAC1B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,8BAA+B,CAC3B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,iCAAkC,CAC9B,EAAK,EACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,EACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,iCAAkC,CAC9B,EAAK,EACL,EAAK,GACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,iCAAkC,CAC9B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,iCAAkC,CAC9B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,iCAAkC,CAC9B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,iCAAkC,CAC9B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,iCAAkC,CAC9B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,iCAAkC,CAC9B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,iCAAkC,CAC9B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,kCAAmC,CAC/B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,kBAAmB,CACf,EAAK,EACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,EACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,kBAAmB,CACf,EAAK,EACL,EAAK,GACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,kBAAmB,CACf,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,kBAAmB,CACf,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,kBAAmB,CACf,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,kBAAmB,CACf,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,kBAAmB,CACf,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,kBAAmB,CACf,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,kBAAmB,CACf,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,mBAAoB,CAChB,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,IACjB,eAAkB,IAEtB,gCAAiC,CAC7B,EAAK,EACL,EAAK,GACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,gCAAiC,CAC7B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,gCAAiC,CAC7B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,GACN,GAAM,EACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,gCAAiC,CAC7B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,EACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,gCAAiC,CAC7B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,gCAAiC,CAC7B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,gCAAiC,CAC7B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,gCAAiC,CAC7B,EAAK,EACL,EAAK,GACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,gCAAiC,CAC7B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,EACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,cAAiB,KACjB,eAAkB,IAEtB,iCAAkC,CAC9B,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,EACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GA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uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,yCAGJ,CACEj1S,KAAM,oBACNG,MAAO,oBACPkwB,MAAO,uCACP4d,aAAcr7B,KAAOI,aAAaC,MAClC5D,QAAS,CACP,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCAEA,uCACA,uCACA,uCACA,uCACA,wCAEF4lS,MAAO,CACL,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,yCAGJ,CACEj1S,KAAM,oBACNG,MAAO,oBACPkwB,MAAO,uCACP4d,aAAcr7B,KAAOI,aAAaC,MAClC5D,QAAS,CACP,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCAEA,uCACA,uCACA,uCACA,uCACA,wCAEF4lS,MAAO,CACL,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,yCAGJ,CACEj1S,KAAM,qBACNG,MAAO,qBACPkwB,MAAO,uCACP4d,aAAcr7B,KAAOI,aAAaC,MAClC5D,QAAS,CACP,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,wCAEF4lS,MAAO,CACL,uCACA,uCACA,uCACA,uCACA,uCACA,yCAGJ,CACEj1S,KAAM,yBACNG,MAAO,yBACPkwB,MAAO,uCACP4d,aAAcr7B,KAAOI,aAAaC,MAClC5D,QAAS,CACP,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,wCAOF4lS,MAAO,CACL,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,yCAGJ,CACEj1S,KAAM,wBA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","file":"static/js/main.60f7e4ee.chunk.js","sourcesContent":["import * as keys from './keys';\nimport firstBy from 'thenby';\nimport moment from 'moment';\nimport Storage from '@aws-amplify/storage';\nimport {getRevision, getAllQuestionMastery, getTestProgressByUserIdHashTestId} from '@bootcamp/shared/src/requests';\nimport ChemistryConfig from '@bootcamp/shared/src/config/updatedChemistryConfig';\nimport * as Sentry from '@sentry/react'; // TODO set up sentry for app.bootcamp\nimport {calculateMaxScore} from './scoring/NCLEX';\nimport {updateUserInteraction, createUserInteraction, listUserInteractions} from '@bootcamp/shared/src/requests/User';\n\n\nconst defaultQuestionParts = {\n prompt: '',\n answers: [],\n explanation: '',\n caseset: '',\n citations: '',\n xray: '',\n clinicalPhoto: '',\n tags: [],\n comments: [],\n anatomyImage: '',\n updatedAt: ''\n};\n\nfunction delay(time) {\n return new Promise(resolve => {\n document.body.style.setProperty('cursor', 'wait', 'important');\n setTimeout(() => {\n document.body.style.cursor = 'default';\n resolve();\n }, time);\n });\n}\nfunction getFormattedStripeAmount(amount) {\n return (parseInt(amount) / 100)\n .toFixed(2)\n .replace(\".00\", \"\");\n}\n\nfunction deSlugify(slug) {\n if (!slug) return '';\n const parts = slug.split('-');\n\n return parts\n .map(([firstLetter, ...rest]) => firstLetter.toUpperCase() + rest.join(''))\n .join(' ');\n}\n\nexport const getQbankType = (classroom, template) => {\n switch (template) {\n case 'testReview':\n return 'Test Review';\n case 'customTest':\n return 'Created Test';\n default:\n return classroom ? deSlugify(classroom) : 'Question Bank';\n }\n};\n\nexport function getTestTitle(title, contentType, config) {\n\n if (!title) return config?.title;\n\n const contentTypePrefixes = {\n 'clinical-cases': 'Clinical Cases',\n 'application': 'Application',\n 'lecture-style-questions': 'Lecture Style',\n 'identify-structures': 'Identification',\n 'practicals': 'Practicals',\n 'bio-bites': 'Bio Bites',\n 'bites': 'Bites',\n 'rbites': 'Reaction Bites',\n 'plus-packs': 'Plus Pack',\n };\n\n const prefix = contentTypePrefixes[contentType] ? `${contentTypePrefixes[contentType]}:` : '';\n\n return `${prefix} ${title}`;\n}\n\nexport const getTitleConfig = (title, classroom, template, customTestConfig) => {\n return template === 'questionSearchBank'\n ? {\n type: 'Review',\n title: `Search Questions`\n }\n : template === 'customTest'\n ? {\n type: 'Bootcamp.com',\n title: `${customTestConfig?.config?.tutorMode ? 'Tutored' : 'Untutored'}, ${customTestConfig?.config?.timed ? 'Timed' : 'Untimed'}`\n }\n : {\n type: getQbankType(classroom, template),\n title: title?.trim()\n }\n}\n\nfunction slugify(string) {\n if (!string) return '';\n\n return string\n .toLowerCase()\n .replace(/ /g,'-')\n .replace(/[^\\w-]+/g,'');\n}\n\nfunction shuffle(array) {\n var currentIndex = array.length, randomIndex;\n\n // While there remain elements to shuffle...\n while (0 !== currentIndex) {\n\n // Pick a remaining element...\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex--;\n\n // And swap it with the current element.\n [array[currentIndex], array[randomIndex]] = [\n array[randomIndex], array[currentIndex]];\n }\n\n return array;\n}\n\nfunction sortByDate(revisions) {\n return revisions.sort(firstBy('createdAt'));\n}\n\nfunction parseVideoDuration(rawDuration) {\n if (!rawDuration) return null;\n\n const hasMinutes = !!rawDuration.match('m');\n const hasSeconds = !!rawDuration.match('s');\n\n const minutes = (hasMinutes && rawDuration.split('m')[0]);\n const seconds = hasMinutes && hasSeconds\n ? rawDuration.replace('s', '').split('m')[1]\n : hasSeconds\n ? rawDuration.split('s')[0]\n : '';\n\n return hasMinutes && hasSeconds\n ? `${minutes}:${seconds.length === 1 ? 0 : ''}${seconds}`\n : hasMinutes\n ? `${minutes}:00`\n : hasSeconds\n ? `00:${seconds.length === 1 ? 0 : ''}${seconds}`\n : null;\n}\n\nfunction findByRenderType(componentsArray, renderType, defaultValue='') {\n if (!componentsArray) return defaultValue;\n\n return (componentsArray.find(component => component.renderType === renderType) || {}).contents || defaultValue;\n};\n\nfunction getRuntime(testBlocks) {\n const runtime = testBlocks.filter(testBlock => testBlock.type === 'lesson').reduce((acc, testBlock) => {\n const videoData = findByRenderType(testBlock.components, 'video', '{}');\n const {duration} = JSON.parse(videoData);\n if (!duration) return acc;\n\n const parsedDuration = `00:${parseVideoDuration(duration)}`;\n return acc.add(parsedDuration);\n }, moment.duration(0));\n\n const totalRuntime = runtime.asSeconds() >= 3600 ? moment.utc(runtime.asMilliseconds()).format('H[h] mm[m] ss[s]') : moment.utc(runtime.asMilliseconds()).format('m[m] s[s]');\n\n return runtime.asMilliseconds() > 0 ? ` | Total runtime: ${totalRuntime}` : '';\n}\n\nfunction getQuestionType(question) {\n const tags = getInObj(['tags', 'items'], question, []);\n const {tag: {test, topic}} = tags.find(({tag}) => !!tag.test && !!tag.subject && !!tag.topic) || {tag: {test: 'DAT', subject: '', topic: ''}};\n\n return test === 'Anatomy'\n ? 'anatomy'\n : topic.match('Passage')\n ? 'passage'\n : 'default';\n}\n\nfunction getBlockParts (block) {\n const anatomyImageSolution = findByRenderType(block.components, 'anatomyImageSolution');\n const explanation = findByRenderType(block.components, 'explanation');\n return {\n anatomyImageSolution,\n explanation\n }\n}\n\nexport function getMCATPassageBlockParts(block) {\n const characterCount = findByRenderType(block?.components, 'characterCount');\n const wordCount = findByRenderType(block?.components, 'wordCount');\n const readingLevel = findByRenderType(block?.components, 'readingLevel');\n return {\n characterCount,\n wordCount,\n readingLevel\n }\n}\n\nfunction getQuestionParts(question, revisionId=null) {\n if (!question || !question.latestRevisions || !question.latestRevisions.items.length) return defaultQuestionParts;\n\n let revisions = getRevisions(question);\n\n const {id: latestRevisionId, questionComponents, revisedBy, createdAt} = revisionId\n ? revisions.find(({id}) => id === revisionId) || revisions[question.latestRevisions.items.length - 1]\n : revisions[question.latestRevisions.items.length - 1];\n\n // use whichever is more recent btw qb updatedAT & latest revisions createdAt\n const questionBaseUpdatedAt = moment(question?.updatedAt);\n const latestRevisionUpdatedAt = moment(createdAt);\n\n const updatedAt = questionBaseUpdatedAt.isAfter(latestRevisionUpdatedAt) ? questionBaseUpdatedAt : latestRevisionUpdatedAt;\n const lastUpdated = updatedAt.format('YYYY');\n\n\n const prompt = findByRenderType(questionComponents, 'prompt');\n const questionHeader = findByRenderType(questionComponents, 'questionHeader');\n const answers = findByRenderType(questionComponents, 'answers', '[]');\n const explanation = findByRenderType(questionComponents, 'explanation');\n const caseset = findByRenderType(questionComponents, 'caseset');\n const xray = findByRenderType(questionComponents, 'xray')?.replace(/testtube6dca237224ff44ca973cd2a6dfb779e3-tbc.s3.amazonaws.com\\/public\\//g, 'dekni9rgkrcu0.cloudfront.net/');\n const clinicalPhoto = findByRenderType(questionComponents, 'clinicalPhoto').replace(/testtube6dca237224ff44ca973cd2a6dfb779e3-tbc.s3.amazonaws.com\\/public\\//g, 'dekni9rgkrcu0.cloudfront.net/');\n const clinicalExam = findByRenderType(questionComponents, 'clinicalExam').replace(/testtube6dca237224ff44ca973cd2a6dfb779e3-tbc.s3.amazonaws.com\\/public\\//g, 'dekni9rgkrcu0.cloudfront.net/');\n const customExhibitName = findByRenderType(questionComponents, 'customExhibitName');\n const customExhibit = findByRenderType(questionComponents, 'customExhibit');\n const anatomyImage = findByRenderType(questionComponents, 'anatomyImage');\n const citations = findByRenderType(questionComponents, 'citations');\n const relatedVideos = findByRenderType(questionComponents, 'relatedVideos');\n const meta = findByRenderType(questionComponents, 'meta');\n const anatomyImageTransform = findByRenderType(questionComponents, 'anatomyImageTransform', '{}');\n const hotSpotImage = findByRenderType(questionComponents, 'hotSpotImage');\n const hotSpotImageSelection = findByRenderType(questionComponents, 'hotSpotImageSelection', '{}');\n const type = findByRenderType(questionComponents, 'type') || 'multipleChoice';\n const caseHeader = findByRenderType(questionComponents, 'caseHeader');\n const clientDataJson = findByRenderType(questionComponents, 'clientDataTabs');\n const {clientDataTabs, clientDataTabsTypes} = JSON.parse(clientDataJson || '{}');\n const answerGroups = questionComponents.filter(({renderType}) => renderType.match('answer-group'));\n const answerMatrix = questionComponents.filter(({renderType}) => renderType.match('answerMatrix'));\n const hyperlinks = findByRenderType(questionComponents, 'hyperlinks', '[]');\n const dndHeaderLeft = findByRenderType(questionComponents, 'dndHeaderLeft', '');\n const dndHeaderRight = findByRenderType(questionComponents, 'dndHeaderRight', '');\n const connectedTestBlock = question.connections && question.connections.items && (question.connections.items[0] || {}).block;\n\n return {\n id: question.id,\n prompt,\n questionHeader,\n answers: JSON.parse(answers),\n explanation,\n caseset,\n xray,\n clinicalPhoto,\n clinicalExam,\n customExhibitName,\n customExhibit,\n citations,\n tags: question.tags.items.map(({id, tag}) => ({id, ...tag})),\n status: question.status || 'published',\n comments: question.comments ? question.comments.items : [],\n anatomyImage,\n revisionCreatedAt: createdAt,\n updatedAt,\n anatomyImageTransform: JSON.parse(anatomyImageTransform),\n blockParts: connectedTestBlock && getBlockParts(connectedTestBlock),\n revisedBy,\n relatedVideos,\n meta,\n type,\n hotSpotImageSelection: JSON.parse(hotSpotImageSelection),\n hotSpotImage,\n caseHeader,\n answerGroups,\n answerMatrix,\n clientDataTabs,\n clientDataTabsTypes,\n hyperlinks: JSON.parse(hyperlinks),\n dndHeaderLeft,\n dndHeaderRight,\n latestRevisionId,\n lastUpdated\n };\n}\n\n\nasync function getQuestionPartsAsync(question, revisionId=null) {\n if (!question || !question.latestRevisions || !question.latestRevisions.items.length) return defaultQuestionParts;\n\n let revisions = getRevisions(question);\n if (revisionId && revisions.length === 1 && !revisions.find(({id}) => id === revisionId)) {\n async function fetchRevision () {\n try {\n const {data: {getQuestionRevision}} = await getRevision(revisionId);\n return getQuestionRevision;\n } catch (e) {\n Sentry.captureException({stringified: JSON.stringify(e)});\n throw e;\n }\n }\n const questionRevision = await fetchRevision(); //await asyncFetchWithS3Cache(`json/backups/questions/${question.id}/${revisionId}.json`, moment().subtract(7, 'days'), fetchRevision);\n question.latestRevisions.items = [questionRevision];\n revisions = [questionRevision]\n }\n\n return getQuestionParts(question, revisionId);\n}\n\nfunction stripPunctuation(string) {\n if (!string) return '';\n\n const whitelist = [','];\n return whitelist.reduce((acc, curr) => acc.replace(new RegExp(curr, 'g'), ''), string);\n}\n\nfunction getQuestionTitle(questionId, tags) {\n const {subject, topic} = tags.find(tag => !!tag.test && !!tag.subject && !!tag.topic) || {};\n const modifier = questionId.substr(0,5)\n\n const formattedSubject = stripPunctuation(subject);\n const formattedTopic = stripPunctuation(topic);\n\n return [\n ...(formattedSubject ? formattedSubject.split(' ') : []),\n ...(formattedTopic ? formattedTopic.split(' ') : []),\n modifier\n ].join('-').toLowerCase();\n}\n\nfunction getRevisions(question) {\n const revisions = (question && question.latestRevisions && question.latestRevisions.items.slice()) || [];\n return sortByDate(revisions);\n}\n\nfunction reorder (list, startIndex, endIndex) {\n const result = Array.from(list);\n const [removed] = result.splice(startIndex, 1);\n result.splice(endIndex, 0, removed);\n return result;\n};\n\nfunction insertAtIndex(array, index, item) {\n return [\n ...array.slice(0, index),\n item,\n ...array.slice(index + 1)\n ];\n}\n\nconst getTestBlockQuestions = (testBlock, allowDraft=false) => {\n const questionConnectionItems = (!!testBlock && testBlock.questionConnections && testBlock.questionConnections.items.slice().sort(firstBy('index'))) || [];\n return questionConnectionItems.reduce((acc, {question, index, masteryLevel, bookmarked}) => {\n return question && (question.status !== 'draft' || allowDraft)\n ? acc.concat({...question, masteryLevel, bookmarked, index})\n : acc\n }, []);\n}\n\nconst determineColorFromTitle = title => {\n if (title.includes('Biology')) {\n return 'blue'\n }\n if (title.includes('General Chemistry')) {\n return 'green';\n }\n if (title.includes('Organic Chemistry')) {\n return 'melon';\n }\n if (title.includes('Perceptual Ability')) {\n return 'purple';\n }\n if (title.includes('Quantitative Reasoning')) {\n return 'pink';\n }\n if (title.includes('Reading Comprehension')) {\n return 'red';\n }\n if (title.includes('Full Length')) {\n return 'blue';\n }\n if (title.includes('Physics')) {\n return 'orange';\n }\n return 'blue';\n}\n\nfunction getTagType(tag) {\n return !!tag.test && !tag.subject && !!tag.topic && tag.contentType\n ? 'category'\n : !!tag.test && !!tag.subject && !!tag.topic\n ? 'topic'\n : !!tag.test && !!tag.subject && !!tag.system && !tag.topic\n ? 'system'\n : !!tag.test && !!tag.subject && !tag.topic\n ? 'subject'\n : !!tag.test && !tag.subject && !tag.topic\n ? 'bootcamp'\n : null;\n}\n\nfunction getTestBlockFromJson(testBlock) {\n return (testBlock && JSON.parse(testBlock)) || {blockName: '', testBlockConnectionTestId: null};\n};\n\nfunction getInObj(path, obj, defaultValue=null) {\n if (!obj) return defaultValue;\n return path.reduce((acc, x) => (acc && acc[x]) ? acc[x] : defaultValue, obj);\n}\n\nfunction saveFile(data, filename){\n if(typeof data === \"object\"){\n data = JSON.stringify(data, null, 2)\n }\n\n var blob = new Blob([data], {type: 'text/json'}),\n e = document.createEvent('MouseEvents'),\n a = document.createElement('a')\n\n a.download = filename\n a.href = window.URL.createObjectURL(blob)\n a.dataset.downloadurl = ['text/json', a.download, a.href].join(':')\n e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null)\n a.dispatchEvent(e)\n}\nfunction getFilterFields(filterType, filterFields) {\n if (!filterType || !filterFields) return {};\n\n const filters = JSON.parse(filterFields);\n\n return {[filterType]: filters[filterType]};\n}\n\n\nfunction getUnixTimestamp(date) {\n return Math.round((new Date(date)).getTime() / 1000);\n}\n\nfunction getMembershipExpirationDate(startDate, duration) {\n const start = new Date(startDate);\n start.setDate(start.getDate() + parseInt(duration));\n return getUnixTimestamp(start);\n}\n\nfunction getRandom(arr, n) {\n var result = new Array(n),\n len = arr.length,\n taken = new Array(len);\n if (n > len)\n return arr\n // throw new RangeError(\"getRandom: more elements taken than available\");\n while (n--) {\n var x = Math.floor(Math.random() * len);\n result[n] = arr[x in taken ? taken[x] : x];\n taken[x] = --len in taken ? taken[len] : len;\n }\n return result;\n}\n\nfunction getStreakDetails(streak=0, streakDate='1/1/2001') {\n const current = moment();\n\n const today = current.hour() >= 4 ? current : moment(current).subtract(1, 'day');\n const yesterday = moment(today).subtract(1, 'day');\n\n const streakActive = moment(streakDate, 'MM/DD/YYYY').isSameOrAfter(yesterday, 'day');\n const streakCompletedToday = moment(streakDate, 'MM/DD/YYYY').isSame(today, 'day');\n\n const streakLength = streak > 0 && streakActive ? streak : 0;\n\n const tomorrow = moment(today).add(1, 'days').startOf('day').hour(4);\n const preciseHoursUntilTomorrow = tomorrow.diff(moment(), 'hours', {precision:true});\n const minutesUntilTomorrow = tomorrow.diff(moment(), 'minutes');\n const timeUntilTomorrow = preciseHoursUntilTomorrow >= 1 ? `${Math.round(preciseHoursUntilTomorrow)}h` : `${minutesUntilTomorrow}m`;\n\n const timeRunningOut = streak > 0 && !streakCompletedToday && (today.hour() <= 4 || today.hour() >= 20) && timeUntilTomorrow;\n\n return {\n today,\n streakCompletedToday,\n timeRunningOut,\n streakLength,\n streakActive\n }\n}\nconst preventDefault = event => {\n event.preventDefault();\n event.stopPropagation();\n};\n\nconst getTestBlockConnections = (test) => {\n return (!!test && !!test.blockConnections && test.blockConnections.items.slice().sort(firstBy('index'))) || [];\n};\n\nfunction changeIntercomDisplay (mode, selector, styles=[]) {\n const className = selector || '.intercom-launcher';\n const stylesArray = styles?.length ? styles : [`display: ${mode};`];\n\n const intercomLauncher = document.querySelector(className);\n\n if (intercomLauncher) {\n stylesArray.forEach((style) => intercomLauncher.style = style);\n }\n\n};\n\nfunction capitalize(string) {\n return string\n .split(' ')\n .map(part => `${part[0].toUpperCase()}${part.split('').slice(1).join('')}`)\n .join(' ');\n}\n\nfunction padNumber(number) {\n return number < 10 ? `0${number}` : number;\n}\n\nfunction findStartAndEndDates(memberships, bootcampMembershipGroup) {\n try {\n const activeMemberships = memberships?.items.filter(membership => membership.groups.includes(bootcampMembershipGroup) && membership.status === 'active');\n if (!activeMemberships || activeMemberships.length === 0) return {};\n\n // we need to find when this membership should start\n // based on the ultimate end date of our current memberships\n let latestEnd;\n let earliestStart;\n for (const membership of activeMemberships) {\n if (!latestEnd) latestEnd = membership;\n if (!earliestStart) earliestStart = membership;\n\n const membershipDate = new Date(membership.startDate);\n const membershipEndDate = membershipDate.setDate(membershipDate.getDate() + membership.duration);\n\n const earliestStartDate = new Date(earliestStart.startDate);\n if (membershipDate < earliestStartDate) {\n earliestStart = membership;\n }\n\n const endDate = new Date(latestEnd.startDate);\n const latestEndDate = endDate.setDate(endDate.getDate() + latestEnd.duration);\n if (membershipEndDate > latestEndDate) {\n latestEnd = membership;\n }\n }\n const startDate = new Date(earliestStart.startDate);\n const endDate = new Date(latestEnd.startDate);\n const latestEndDate = endDate.setDate(endDate.getDate() + latestEnd.duration);\n\n return {earliestStart, startDate, latestEnd, endDate: new Date(latestEndDate)};\n } catch (e) {\n console.error('findStartAndEndDates err', e);\n return {}\n }\n}\n\nfunction calculateAnswerPercentage(answerData, answerLetter, answerCorrect, noLimit=false) {\n if (!answerData) return;\n try {\n const answerTuples = Object.entries(answerData);\n const totalAnswers = answerTuples.reduce((acc, [name, count]) => acc += count, 0);\n\n // short circuit percentage calculation if has been answered fewer than 50 times\n if (totalAnswers < 10 && !noLimit) return 0;\n\n const answeredCorrectly = answerData[answerCorrect ? `${answerLetter} (CORRECT)` : answerLetter]\n\n const correctPercentage = ((answeredCorrectly || 0) / totalAnswers) * 100;\n\n return Math.round(correctPercentage) || 0;\n\n } catch (e) {\n console.log(e)\n return 0;\n }\n}\n\nfunction calculateNCLEXAnswerPercentage(answerData, answerState) {\n return '20%';\n // placeholder, we'll need to work on an nclex specific answer percentage calculation per question type\n}\n\nasync function asyncFetchWithS3Cache (s3Key, cacheExpiration, fetchFunction) {\n\n try {\n\n const existingDataFetch = await Storage.get(s3Key, {\n download: true,\n cacheControl: 'no-cache',\n contentType: 'application/json',\n });\n\n if (moment(existingDataFetch.LastModified).isBefore(cacheExpiration)) throw new Error();\n\n return await new Response(existingDataFetch.Body).json();\n } catch (e) {\n const result = await fetchFunction();\n\n await Storage.put(s3Key, JSON.stringify(result), {contentType: 'application/json'});\n\n return result;\n }\n}\n\nexport function getTestsByClassroom(classrooms, filterArray=[], contentTypeFilterArray=[], full=false, contentTypeNameFilterArray=[]) {\n return classrooms\n ?.filter(({name}) => !filterArray.includes(name))\n ?.reduce((acc, {route, contentTypes}) => ({\n ...acc,\n [route]: contentTypes\n ?.filter(({name}) => !contentTypeNameFilterArray.length ? true : contentTypeNameFilterArray.includes(name))\n ?.reduce((acc, {content}) => [\n ...acc,\n ...content\n ?.filter(({type}) => !contentTypeFilterArray.length ? true : contentTypeFilterArray.includes(type))\n ?.reduce((acc, {content}) => [\n ...acc,\n ...content\n ?.filter(({id, lessons}) => !!id || !!lessons)\n ?.reduce((acc, {id, lessons, ...rest}) => lessons ? [...acc, ...lessons.map(({testId, id}) => testId || id)] : [...acc, full ? {id, ...rest} : id] , []) || []\n ], [])\n ], [])\n }), {});\n}\n\nfunction formatDurationString(duration) {\n if (!duration) return '';\n // duration passed as XmXs eg. 12m13s\n if (!duration.includes('m')) return `0:${duration.replace('s', '').padStart(2, 0)}`;\n\n const [minutes, seconds] = duration?.replace('s', '').split('m');\n return `${minutes}:${seconds.padStart(2, 0)}`;\n}\n\nfunction formatTimeSpent(time) {\n const duration = moment.duration(time * 1000);\n\n const hours = duration.hours();\n const minutes = duration.minutes();\n const seconds = duration.seconds();\n\n if (hours > 0) return `${hours}h ${minutes}m ${seconds}s`;\n if (minutes > 0) return `${minutes}m ${seconds}s`;\n\n return `${seconds}s`;\n};\n\nfunction flatten(arr) {\n let flattenArr = [];\n arr.forEach(el => {\n if(Array.isArray(el)){\n const result = flatten(el);\n result.forEach(el => flattenArr.push(el));\n } else {\n flattenArr.push(el);\n }\n });\n return flattenArr;\n}\n\nfunction findInConfigById(config, targetId, useParentTitle) {\n // recursively search through config looking for id\n try {\n // check current iteration's config object for an id match\n const targetMatch = config?.id === targetId || config?.testId === targetId;\n\n // // return with content name on match\n if (targetMatch) {\n return config;\n };\n\n // otherwise try to derive a target array out of the current config's properties (this may need to be expanded)\n const targetArray = config?.classrooms || config?.contentTypes || config?.content || config?.lessons;\n\n const useParent = ['Chapter Bank Dropdown'].includes(config?.type);\n // attempt to reduce over current iteration's config\n return targetArray?.reduce((acc, currentConfig) => {\n if (acc) {\n return acc;\n } else {\n const hit = findInConfigById(currentConfig, targetId, useParent);\n\n if (hit) {\n return flatten([hit, currentConfig]);\n }\n\n return hit;\n }\n }, '');\n } catch (error) {\n console.log('error finding in config', error);\n }\n}\n\nfunction createPathFromConfigMatch(configMatchArray) {\n try {\n return configMatchArray.reverse().reduce((acc, {name, route}) => {\n if (!route || acc.match(route)) return acc;\n return `${acc}/${route}`\n }, '');\n } catch (error) {\n return '';\n }\n}\n\nasync function getBootcampConfig (bootcamp) {\n async function fetchConfig (bootcamp) {\n const fetchedConfig = await fetch(`https://testtube6dca237224ff44ca973cd2a6dfb779e3-tbc.s3.amazonaws.com/public/json/config/${bootcamp}.json`, {cache: \"no-store\"});\n return await fetchedConfig.json();\n }\n switch (bootcamp) {\n case 'dat':\n case 'oat':\n case 'inbde':\n case 'nclex':\n case 'mcat':\n return await fetchConfig(bootcamp);\n case 'anatomy': {\n const [anatomyConfig, dentalSchoolConfig] = await Promise.all(['anatomy', 'dental-school'].map(fetchConfig));\n anatomyConfig.classrooms.push(dentalSchoolConfig.classrooms.find(({name}) => ['Dental Anatomy and Occlusion', 'Dental Anatomy & Occlusion'].includes(name)));\n return anatomyConfig;\n }\n case 'dental-school': {\n const [anatomyConfig, dentalSchoolConfig] = await Promise.all(['anatomy', 'dental-school'].map(fetchConfig));\n dentalSchoolConfig.classrooms.push(...anatomyConfig.classrooms);\n return dentalSchoolConfig;\n }\n case 'med-school': {\n try {\n const [anatomyConfig, medSchoolConfig] = await Promise.all(['anatomy', 'med-school'].map(fetchConfig))\n const medicalAnatomy = anatomyConfig.classrooms.filter(({name}) => !['Anatomy and Physiology', 'Anatomy & Physiology'].includes(name))\n medSchoolConfig.classrooms.push(...medicalAnatomy);\n return medSchoolConfig;\n } catch (e) {\n console.log(e);\n } finally {\n\n }\n }\n case 'chemistry':\n return ChemistryConfig;\n default:\n return {classrooms: [], meta: {}};\n }\n}\n\nfunction getNCLEXSubjectSystemTags(tags) {\n try {\n // subject tag\n const subjectTag = tags?.find(tag => tag.contentType == \"nclexSubject\") || {};\n // system tag\n const systemTag = tags?.find(tag => !!tag.test && !!tag?.subject && !!tag.system && !tag.topic && !tag.contentType) || {};\n return {subject: subjectTag?.id, system: systemTag?.id, subjectTag, systemTag};\n } catch (error) {\n console.log(error)\n return {};\n }\n}\n\nfunction getScorePercentage(questionProgresses, overridingMaxScore) {\n const {score, maxScore} = questionProgresses.reduce((acc, curr) => {\n const answerState = JSON.parse(curr?.answerState || \"{}\");\n return {\n score: acc.score + (answerState.score || (curr.didSelectCorrectAnswer && 1) || 0),\n maxScore: acc.maxScore + (answerState.maxScore || 1)\n }\n }, {score: 0, maxScore: 0});\n\n return `${Math.round(((score / (overridingMaxScore || maxScore)) || 0) * 100)}%`;\n}\n\nconst retrieveQuestionProgresses = testData => {\n const {blockProgresses: {items: blockProgressItems}} = testData || {blockProgresses: {items: []}};\n return blockProgressItems.reduce((acc, blockProgress) => [...acc, ...(blockProgress.questionProgresses.items || [])], []);\n}\n\nfunction getCustomTestTableData (testData, testResults, testName) {\n const type = (() => {\n switch (testData.config.type) {\n case 'preclinical':\n return 'Step 1 - Boards Style';\n case 'bites':\n return 'Bites';\n case 'anatomy':\n return 'Anatomy Bootcamp';\n default:\n return 'Custom';\n }\n })()\n const {createdAt, maxScore} = testData.config;\n const dateTaken = moment(createdAt).format('MMM Do, YYYY');\n const settings = `${testData.config.timed ? 'Timed' : 'Untimed'}, ${testData.config.tutorMode ? 'Tutored' : 'Untutored'}`\n const questions = testData.selectedQuestions.length;\n const {customTitle} = testData.config;\n\n const {data: {TestProgressByTestId: {items}}} = testResults;\n const {submitted} = testData || {};\n let score;\n if (items[0]) {\n const questionProgresses = retrieveQuestionProgresses(items[0]);\n score = submitted ? getScorePercentage(questionProgresses, maxScore) : 'Paused';\n }\n\n return {testData, testResults, type, dateTaken, settings, testName: customTitle || testName, score, questions};\n}\n\nfunction getMaxScore(question) {\n const {prompt, type, answers, answerGroups, answerMatrix} = getQuestionParts(question);\n\n return calculateMaxScore(prompt, type, answers, answerGroups, answerMatrix);\n}\n\nasync function getMasteryMap(questions, userId) {\n try {\n const questionMasteryPromises = questions.map(({question}) => getAllQuestionMastery({userIdHashQuestionBaseId: `${userId}#${question.id}`}));\n const userQuestionMasteryResult = await Promise.all(questionMasteryPromises);\n const masteryMap = userQuestionMasteryResult.reduce((acc, {data: {getQuestionMastery: questionMastery}}) => questionMastery ? {...acc, [questionMastery.userIdHashQuestionBaseId.replace(`${userId}#`, '')]: questionMastery} : acc, {});\n return masteryMap;\n } catch (error) {\n return {};\n }\n}\n\nfunction getTags(bootcamp, tags) {\n switch (bootcamp) {\n case 'nclex':\n return [\n // subject tag\n tags.find(({tag}) => !!tag.test && !!tag?.subject && !tag.topic && tag.contentType === 'nclexSubject')?.tag?.subject,\n // system tag\n tags.find(({tag}) => !!tag.test && !!tag?.subject && !!tag.system && !tag.topic && !tag.contentType)?.tag?.system\n ];\n default:\n return [\n // subject tag\n tags.find(({tag}) => !!tag.test && !!tag?.subject && !tag.topic)?.tag?.subject,\n // system tag\n tags.find(({tag}) => !!tag.test && !!tag?.subject && !!tag.topic)?.tag?.topic\n ];\n }\n}\n\nfunction getScore(bootcamp, progress) {\n switch (bootcamp) {\n case 'nclex':\n let {score, maxScore} = JSON.parse(progress?.answerState || '{}');\n\n return {\n score: score || 0,\n maxScore: maxScore || getMaxScore(progress?.question),\n };\n default:\n return {\n score: progress.didSelectCorrectAnswer ? 1 : 0,\n maxScore: 1\n };\n }\n}\n\nasync function formatScoringBreakdown(progress, config, userId, bootcamp) {\n if (!progress) return {};\n\n const questions = progress?.blockProgresses?.items?.reduce((acc, curr) => ([...(curr?.questionProgresses?.items || []), ...acc]), []);\n const masteryMap = await getMasteryMap(questions, userId);\n\n const breakdowns = questions\n ?.sort(firstBy(progress => progress?.index))\n ?.reduce((acc, curr, index) => {\n const isSequential = config?.selectedQuestions?.[index]?.isSequentialSet;\n const isSequentialStart = config?.selectedQuestions?.[index]?.isSequentialStart;\n const isSequentialEnd = config?.selectedQuestions?.[index]?.isSequentialEnd;\n\n const questionId = curr?.question?.id;\n\n const [subject, system] = getTags(bootcamp, curr?.question?.tags?.items);\n\n const masteryLevel = masteryMap[questionId]?.masteryLevel;\n const bookmarked = masteryMap[questionId]?.bookmarked;\n const timeSpent = parseFloat(curr?.time || 0);\n\n const {score, maxScore} = getScore(bootcamp, curr);\n\n const defaultStatObj = {score: 0, maxScore: 0, timeSpent: 0, totalQuestions: 0, avgTime: 0, avgScore: 0};\n\n const subjectStats = acc.subjectBreakdown?.[subject] || defaultStatObj;\n const systems = subjectStats?.systems || {};\n const systemStats = systems?.[system] || defaultStatObj;\n\n const caseIndex = !isSequential ? null : isSequentialStart ? questionId : acc.caseIndex\n const caseStats = acc?.caseBreakdown?.[caseIndex] || defaultStatObj;\n const caseQuestionStats = caseStats?.questions || {};\n\n const questionStatistics = JSON.parse(curr?.question?.statistics || '{\"summedScore\": \"2\", \"totalRecords\": \"5\", \"timeSpent2\": \"0\"}');\n const questionAvg = parseInt(questionStatistics?.summedScore) / parseInt(questionStatistics?.totalRecords || '1');\n const questionAvgTime = parseInt(questionStatistics?.timeSpent2) / parseInt(questionStatistics?.totalRecordsTimeReset || '1');\n const questionSnippet = isSequential\n ? curr?.question?.latestRevisions?.items?.[0]?.questionComponents?.find(({renderType}) => renderType === 'caseHeader')\n : '';\n\n return {\n ...acc,\n overview: {\n ...acc.overview,\n score: acc.overview.score + score,\n maxScore: acc.overview.maxScore + maxScore,\n avgScore: acc.overview.avgScore + questionAvg,\n avgTime: acc.overview.avgTime + questionAvgTime,\n totalTime: acc.overview.totalTime + timeSpent,\n totalQuestions: index + 1,\n },\n subjectBreakdown: {\n ...acc.subjectBreakdown,\n [subject]: {\n ...subjectStats,\n score: subjectStats.score + score,\n maxScore: subjectStats.maxScore + maxScore,\n avgScore: subjectStats.avgScore + questionAvg,\n timeSpent: subjectStats.timeSpent + timeSpent,\n avgTime: subjectStats.avgTime + questionAvgTime,\n totalQuestions: subjectStats.totalQuestions + 1,\n mastery: {\n ...subjectStats?.mastery,\n [masteryLevel]: (subjectStats?.mastery?.[masteryLevel] || 0) + 1\n },\n systems: {\n ...systems,\n [system]: {\n ...systemStats,\n score: systemStats.score + score,\n maxScore: systemStats.maxScore + maxScore,\n avgScore: systemStats.avgScore + questionAvg,\n timeSpent: systemStats.timeSpent + timeSpent,\n totalQuestions: systemStats.totalQuestions + 1,\n mastery: {\n ...systemStats?.mastery,\n [masteryLevel]: (systemStats?.mastery?.[masteryLevel] || 0) + 1\n }\n }\n }\n }\n },\n caseIndex,\n caseBreakdown: {\n ...acc.caseBreakdown,\n ...(isSequential\n ? {\n [caseIndex]: {\n ...caseStats,\n questionSnippet: caseStats.questionSnippet || questionSnippet,\n index: caseStats.hasOwnProperty('index') ? caseStats.index : index,\n score: caseStats.score + score,\n maxScore: caseStats.maxScore + maxScore,\n timeSpent: caseStats.timeSpent + timeSpent,\n subject: caseStats?.subject || subject,\n system: bootcamp === 'mcat' ? 'Multiple'\n : caseStats?.system && caseStats?.system !== system\n ? 'Multi-system'\n : system,\n questions: {\n ...caseQuestionStats,\n [questionId]: {\n index,\n score,\n maxScore,\n masteryLevel,\n bookmarked,\n subject,\n system,\n timeSpent,\n }\n }\n }\n } : {}\n )\n },\n questionBreakdown: {\n ...acc.questionBreakdown,\n ...(!isSequential\n ? {\n [questionId]: {\n index,\n score,\n maxScore,\n masteryLevel,\n bookmarked,\n subject,\n system,\n timeSpent,\n }\n } : {}\n )\n }\n };\n }, {\n overview: {\n score: 0,\n maxScore: 0,\n avgScore: 0,\n avgTime: 0,\n totalTime: 0,\n totalQuestions: 0,\n },\n caseIndex: null,\n subjectBreakdown: {},\n caseBreakdown: {},\n });\n\n return breakdowns;\n}\n\nasync function formatReadinessExamScoringBreakdown(progress, config, userId, bootcamp, statOverrides) {\n if (!progress) return {};\n\n const questions = progress?.blockProgresses?.items?.reduce((acc, curr) => ([...(curr?.questionProgresses?.items || []), ...acc]), []);\n const questionMap = progress?.blockProgresses?.items?.reduce((acc, curr) => ({...(curr?.questionProgresses?.items?.reduce((acc2, curr2) => ({...acc2, [curr2?.question?.id]: {...curr2, blockId: curr?.blockId}}), {}) || {}), ...acc}), {});\n const masteryMap = await getMasteryMap(questions, userId);\n\n const breakdowns = config?.selectedQuestions\n ?.map(id => questionMap[id])\n ?.reduce((acc, curr, index) => {\n const isSequential = curr?.isSequentialSet;\n const isSequentialStart = curr?.isSequentialStart;\n const isSequentialEnd = curr?.isSequentialEnd;\n if (!curr?.question) {\n return acc;\n }\n const questionId = curr?.question?.id;\n\n const [subject, system] = getTags(bootcamp, curr?.question?.tags?.items);\n\n const masteryLevel = masteryMap[questionId]?.masteryLevel;\n const bookmarked = masteryMap[questionId]?.bookmarked;\n const timeSpent = parseFloat(curr?.time || 0);\n const blockId = curr.blockId;\n\n const {score, maxScore} = getScore(bootcamp, curr);\n\n const defaultStatObj = {score: 0, maxScore: 0, timeSpent: 0, totalQuestions: 0, avgTime: 0, avgScore: 0};\n\n const subjectStats = acc.subjectBreakdown?.[subject] || defaultStatObj;\n const systems = subjectStats?.systems || {};\n const systemStats = systems?.[system] || defaultStatObj;\n\n const caseIndex = !isSequential ? null : isSequentialStart ? questionId : acc.caseIndex\n const caseStats = acc?.caseBreakdown?.[caseIndex] || defaultStatObj;\n const caseQuestionStats = caseStats?.questions || {};\n\n const questionStatistics = JSON.parse(curr?.question?.statistics || '{\"summedScore\": \"2\", \"totalRecords\": \"5\", \"timeSpent2\": \"0\"}');\n const questionAvg = parseInt(questionStatistics?.summedScore) / parseInt(questionStatistics?.totalRecords || '1');\n const questionAvgTime = parseInt(questionStatistics?.timeSpent2 || '1') / parseInt(questionStatistics?.totalRecordsTimeReset || '1');\n const questionSnippet = isSequential\n ? curr?.question?.latestRevisions?.items?.[0]?.questionComponents?.find(({renderType}) => renderType === 'caseHeader')\n : '';\n\n const questionAvgOverride = statOverrides?.[questionId]?.avgScore || 0;\n const questionAvgTimeOverride = statOverrides?.[questionId]?.avgTime || 0;\n\n const avgQuestionScore = statOverrides\n ? statOverrides[questionId]?.avgScore || 0\n : questionAvg;\n\n const avgQuestionTime = statOverrides\n ? statOverrides[questionId]?.avgTime || 0\n : questionAvgTime;\n\n return {\n ...acc,\n overview: {\n ...acc.overview,\n score: acc.overview.score + score,\n maxScore: acc.overview.maxScore + maxScore,\n avgScore: acc.overview.avgScore + avgQuestionScore,\n avgTime: acc.overview.avgTime + avgQuestionTime,\n totalTime: acc.overview.totalTime + timeSpent,\n totalQuestions: index + 1,\n },\n subjectBreakdown: {\n ...acc.subjectBreakdown,\n [subject]: {\n ...subjectStats,\n score: subjectStats.score + score,\n maxScore: subjectStats.maxScore + maxScore,\n avgScore: subjectStats.avgScore + avgQuestionScore,\n avgTime: subjectStats.avgTime + avgQuestionTime,\n timeSpent: subjectStats.timeSpent + timeSpent,\n totalQuestions: subjectStats.totalQuestions + 1,\n mastery: {\n ...subjectStats?.mastery,\n [masteryLevel]: (subjectStats?.mastery?.[masteryLevel] || 0) + 1\n },\n systems: {\n ...systems,\n [system]: {\n ...systemStats,\n score: systemStats.score + score,\n maxScore: systemStats.maxScore + maxScore,\n avgScore: systemStats.avgScore + avgQuestionScore,\n timeSpent: systemStats.timeSpent + timeSpent,\n totalQuestions: systemStats.totalQuestions + 1,\n avgTime: systemStats.avgTime + avgQuestionTime,\n mastery: {\n ...systemStats?.mastery,\n [masteryLevel]: (systemStats?.mastery?.[masteryLevel] || 0) + 1\n }\n }\n }\n }\n },\n caseIndex,\n caseBreakdown: {\n ...acc.caseBreakdown,\n ...(isSequential\n ? {\n [caseIndex]: {\n ...caseStats,\n questionSnippet: caseStats.questionSnippet || questionSnippet,\n index: caseStats.hasOwnProperty('index') ? caseStats.index : index,\n score: caseStats.score + score,\n maxScore: caseStats.maxScore + maxScore,\n timeSpent: caseStats.timeSpent + timeSpent,\n subject: caseStats?.subject || subject,\n blockId,\n system: bootcamp === 'mcat' ? 'Multiple' \n : caseStats?.system && caseStats?.system !== system\n ? 'Multi-system'\n : system,\n questions: {\n ...caseQuestionStats,\n [questionId]: {\n index,\n score,\n maxScore,\n masteryLevel,\n bookmarked,\n subject,\n system,\n timeSpent,\n blockId,\n }\n }\n }\n } : {}\n )\n },\n questionBreakdown: {\n ...acc.questionBreakdown,\n ...(!isSequential\n ? {\n [questionId]: {\n index,\n score,\n maxScore,\n masteryLevel,\n bookmarked,\n subject,\n system,\n timeSpent,\n blockId\n }\n } : {}\n )\n }\n };\n }, {\n overview: {\n score: 0,\n maxScore: 0,\n avgScore: 0,\n avgTime: 0,\n totalTime: 0,\n totalQuestions: 0,\n },\n caseIndex: null,\n subjectBreakdown: {\n },\n caseBreakdown: {},\n });\n\n return breakdowns;\n}\n\nexport async function updateCustomTestConfig(customTestConfig, values) {\n const testStorageKey = customTestConfig?.config?.testStorageKey;\n if (!testStorageKey) return;\n\n try {\n const updatedConfig = {...customTestConfig, ...values};\n\n await Storage.put(testStorageKey, JSON.stringify(updatedConfig), {contentType: 'application/json'});\n\n return updatedConfig\n } catch (error) {\n console.log('error updating custom test config', error);\n }\n}\n// when we're creating a test for a free user, we're matching the testIds that were used to create the test, with the\n// test id's in the free classroom - if there is a mismatch there, that means a free user is trying to load a test\n// with premium content. From there we'll set the test as 'invalid' and the create test page will throw an error\n// resulting in a 404 redirect\nexport const validateCustomTest = (config, isUpgraded, freeTestIds) => {\n if (isUpgraded) return true;\n\n const freeClassroom = config\n ?.classrooms\n ?.find(({route}) => route === 'free-questions')\n ?.contentTypes?.[0]?.content?.[0]?.content.every(({id}) => freeTestIds.indexOf(id) > -1);\n\n const freeContent = config\n ?.additionalContent\n ?.find(({name}) => name === 'Free Tests')\n ?.testIds?.every(id => freeTestIds.indexOf(id) > -1);\n\n return freeClassroom || freeContent;\n}\n\nexport const clampValue = (value, max) => {\n const numberValue = parseInt(value);\n return Math.floor(Math.min(Math.max(1, numberValue), max)) || 1;\n};\n\nexport const updateStreak = async (bootcamp, currentUser, interactions) => {\n try {\n const interactionKey = `Streak-DWU-${bootcamp}`;\n const {streak, longestStreak, date: streakDate} = JSON.parse((interactions?.find(interaction => interaction.id === `${currentUser?.username}-${interactionKey}`) || {})?.value || '{}');\n const {today, streakCompletedToday, streakActive} = getStreakDetails(streak, streakDate);\n const streakData = {\n streak: streak > 0 && streakActive ? streak + 1 : 1,\n date: today.format('M/D/YYYY'),\n longestStreak: streak + 1 > longestStreak && streakActive ? streak + 1 : (longestStreak || streak + 1)\n }\n if (!streakCompletedToday) {\n await updateUserInteraction({id: `${currentUser?.username}-${interactionKey}`, value: JSON.stringify(streakData)});\n // update interaction\n const updatedInteraction = interactions.find(interaction => interaction.id === `${currentUser?.username}-${interactionKey}`);\n updatedInteraction.value = JSON.stringify(streakData);\n interactions = interactions.map(interaction => interaction.id === `${currentUser?.username}-${interactionKey}` ? updatedInteraction : interaction);\n }\n\n return interactions;\n } catch (error) {\n console.log('error updating streak', error); r\n }\n}\nexport async function getUserInteractions(username) {\n try {\n const data = await listUserInteractions(username);\n return getInObj(['data', 'UserId', 'items'], data, []);\n } catch (error) {\n console.log('error fetching user interactions', error);\n return [];\n }\n}\n\nexport function safeStringify(value, defaultValue='') {\n if (typeof value === 'string') return value;\n\n try {\n return JSON.stringify(value);\n } catch (error) {\n return defaultValue;\n }\n}\n\nexport function safeParse(value, defaultValue='') {\n if (typeof value !== 'string') return value;\n\n try {\n return JSON.parse(value);\n } catch (error) {\n return defaultValue;\n }\n}\n\nfunction formatNCLEXScore(attempt) {\n const questionProgresses = attempt\n ?.map(({questionProgresses}) => questionProgresses?.items)\n ?.flat();\n const scoreDetails = questionProgresses?.reduce((acc, {answerState, didCheck}) => {\n try {\n if (!didCheck) return acc;\n const {score, maxScore} = JSON.parse(answerState || \"{}\");\n return {...acc, score: acc.score + (score || 0), maxScore: acc.maxScore + (maxScore || 0)};\n } catch (error) {\n return acc;\n }\n }, {score: 0, maxScore: 0});\n return {correct: scoreDetails.score, total: scoreDetails.maxScore};\n}\n\nfunction formatScore (attempt) {\n return attempt?.length && attempt\n .map(block => block.questionProgresses.items)\n .flat()\n .reduce((acc, {didSelectCorrectAnswer, didCheck}) => ({correct: acc.correct + (!!didSelectCorrectAnswer && !!didCheck), total: acc.total + !!didCheck}), {correct: 0, total: 0});\n}\n\nexport const checkTestProgressAttempt = async (userId, testId, bootcamp) => {\n try {\n if (bootcamp === 'inbde') {\n const progressIdResult = await getTestProgressByUserIdHashTestId(`${userId}#${testId}`, false);\n const progressId = progressIdResult?.data?.TestProgressByTestId?.items?.[0]?.id;\n\n return {\n progressId,\n score: null\n };\n }\n\n const progressIdResult = await getTestProgressByUserIdHashTestId(`${userId}#${testId}`, true);\n const progressId = progressIdResult?.data?.TestProgressByTestId?.items?.[0]?.id;\n\n if (!progressId) return {};\n\n const attempt = progressIdResult?.data?.TestProgressByTestId?.items?.[0]?.blockProgresses.items;\n\n if (bootcamp === 'nclex') {\n return {\n progressId,\n score: formatNCLEXScore(attempt),\n }\n } else {\n return {\n progressId,\n score: formatScore(attempt),\n }\n }\n } catch (error) {\n return {};\n }\n};\n\nexport const getSubjectTestIdsForFLT = (test, testRoute, bootcamp) => {\n try {\n const testNumber = testRoute.split('-').pop();\n const blockConnections = getInObj(['data', 'getTest', 'blockConnections', 'items'], test, [])\n .sort(firstBy('index'))\n .reduce((acc, curr) => {\n const matchingTest = getInObj(['testBlock', 'blockConnections', 'items'], curr, [])\n ?.find(connection => {\n const connectionTitle = connection?.test?.config?.title;\n return connectionTitle?.includes(testNumber) && !connectionTitle?.includes('Full Length')\n })\n return matchingTest ? [...acc, {testId: matchingTest?.test?.id, blockId: curr?.testBlock?.id}] : acc;\n }, [])\n\n return blockConnections;\n } catch (error) {\n return {};\n }\n\n};\n\n\nexport const splitScreenAllowed = (template, type, tutorMode, customTestConfig) => {\n let enabledForTemplate;\n\n switch (template) {\n case 'customTest':\n enabledForTemplate = !!tutorMode || !!customTestConfig?.submitted;\n break;\n case 'tbcSavedBank':\n enabledForTemplate = type !== 'readinessExam';\n break;\n case 'quickReview':\n enabledForTemplate = true;\n break;\n case 'masteryReview':\n enabledForTemplate = true;\n case 'testReview':\n enabledForTemplate = true;\n break;\n case 'coursePlayer':\n return true;\n default:\n enabledForTemplate = false;\n }\n\n return enabledForTemplate && (window.innerWidth >= 768);\n}\n\nfunction getThemeForHyperlinkViewer(bootcamp, template, baseTheme, theme, darkMode) {\n const isBoardBank = window.location.pathname.match('board-banks') || bootcamp === 'mcat'\n const prometricPalette = baseTheme.colors.prometricPalette[bootcamp];\n\n const themeColor = (['customTest', 'testReview'].includes(template) || isBoardBank) && prometricPalette\n ? prometricPalette?.default\n : bootcamp === 'dat'\n ? theme.dark\n : baseTheme.colors.brandPalette.royal.dark;\n\n const themeColorOverride = darkMode ? baseTheme.colors.darkModePalette.surfacePrimary : themeColor;\n\n return [themeColorOverride, darkMode];\n}\n\n\nexport {\n getThemeForHyperlinkViewer,\n getMasteryMap,\n getScore,\n getTags,\n formatScoringBreakdown,\n formatReadinessExamScoringBreakdown,\n getCustomTestTableData,\n defaultQuestionParts,\n getInObj,\n capitalize,\n findInConfigById,\n createPathFromConfigMatch,\n shuffle,\n findByRenderType,\n getQuestionParts,\n getQuestionPartsAsync,\n getQuestionTitle,\n getQuestionType,\n getRevisions,\n reorder,\n insertAtIndex,\n getTestBlockQuestions,\n slugify,\n deSlugify,\n determineColorFromTitle,\n keys,\n getTagType,\n getTestBlockFromJson,\n saveFile,\n getUnixTimestamp,\n getMembershipExpirationDate,\n getRandom,\n getStreakDetails,\n preventDefault,\n parseVideoDuration,\n getFilterFields,\n getTestBlockConnections,\n changeIntercomDisplay,\n padNumber,\n findStartAndEndDates,\n getFormattedStripeAmount,\n asyncFetchWithS3Cache,\n calculateAnswerPercentage,\n calculateNCLEXAnswerPercentage,\n formatDurationString,\n formatTimeSpent,\n getBootcampConfig,\n getNCLEXSubjectSystemTags,\n delay,\n getRuntime\n};\n","\nexport const breakpoints = {\n mobileS: '320px',\n mobileM: '375px',\n mobileL: '425px',\n mobileXl: '480px',\n tablet: '768px',\n laptop: '1024px',\n laptopL: '1440px',\n desktop: '2560px'\n};\n\nexport const mediaQueries = {\n mobileS: `@media (max-width: ${breakpoints.mobileS})`,\n mobileM: `@media (max-width: ${breakpoints.mobileM})`,\n mobileL: `@media (max-width: ${breakpoints.mobileL})`,\n mobileXl: `@media (max-width: ${breakpoints.mobileXl})`,\n tablet: `@media (max-width: ${breakpoints.tablet})`,\n laptop: `@media (max-width: ${breakpoints.laptop})`,\n laptopL: `@media (max-width: ${breakpoints.laptopL})`,\n desktop: `@media (max-width: ${breakpoints.desktop})`,\n desktopL: `@media (max-width: ${breakpoints.desktop})`,\n custom: breakpoint => `@media (max-width: ${breakpoint}px)`,\n};\n\nconst darkModePalette = {\n background: '#121212',\n surfacePrimary: '#1E1E1E',\n surfaceSecondary: '#262626',\n surfaceTertiary: '#2E2E2E',\n borderPrimary: '#333333',\n};\n\nconst typographyPalette = {\n primary: '#2F3037',\n secondary: '#85868E',\n tertiary: '#C8C9CE',\n transparent: 'rgba(255, 255, 255, 0.70)',\n};\nconst iconPalette = {\n transparent: 'rgba(255, 255, 255, 0.7)',\n};\n\nconst borderPalette = {\n primary: '#EDEDF0',\n secondary: '#C8C9CE',\n};\nconst backgroundPalette = {\n secondary: '#FAFAFA',\n};\nconst elevationPalette = {\n surfaceSecondary: '#F6F6F6',\n surfaceTransparent: '#0000001A',\n};\n\nconst assignmentColorPalette = {\n blue: {\n dark: '#1D4ED8',\n light: '#EFF6FF',\n hover: '#E0EEFF',\n },\n orange: {\n dark: '#C2410C',\n light: '#FFF7ED',\n hover: '#FFF0DE',\n },\n green: {\n dark: '#4C8B43',\n light: '#EAF5EA',\n hover: '#E8F4E8',\n },\n pink: {\n dark: '#B13F62',\n light: '#FDF2F6',\n hover: '#F9E5EC',\n },\n purple: {\n dark: '#833499',\n light: '#F9F2FA',\n hover: '#EAE5FF',\n },\n royal: {\n dark: '#5127C4',\n light: '#EEF0FE',\n hover: '#ECEBFF',\n }, \n cyan: {\n dark: '#0E7490',\n light: '#ECFEFF',\n hover: '#DDFDFF',\n },\n lime: {\n dark: '#4D7C0F',\n light: '#F7FEE7',\n hover: '#F2FDD8',\n },\n teal: {\n dark: '#0F766E',\n light: '#F0FDFA',\n hover: '#E3FBF5'\n },\n indigo: {\n dark: '#4338CA',\n light: '#EEF2FF',\n hover: '#DFE6FF'\n },\n violet: {\n dark: '#6D28D9',\n light: '#F5F3FF',\n hover: '#E8E3FF'\n },\n fuschia: {\n dark: '#A21CAF',\n light: '#FDF4FF',\n hover: '#FAE4FF'\n },\n orange: {\n dark: '#C2410C',\n light: '#FFF7ED',\n hover: '#FFF0DE'\n },\n amber: {\n dark: '#B45309',\n light: '#FFFBEB',\n hover: '#FFF8DC'\n },\n rose: {\n dark: '#BE123C',\n light: '#FFF1F2',\n hover: '#FFE2E4'\n },\n red: {\n dark: '#C33C35',\n light: '#FCECEE',\n hover: '#F8D9D9'\n },\n grey: {\n dark: '#2F3037',\n light: '#F6F6F6',\n hover: '#EEEEEE'\n },\n honey: {\n dark: '#995900',\n light: '#FFF9F0',\n hover: '#FFF3E1'\n },\n sienna: {\n dark: '#992100',\n light: '#FFF3F0',\n hover: '#FFE7E1'\n },\n crimson: {\n dark: '#990000',\n light: '#FFEBEB',\n hover: '#FFE0E0'\n },\n magenta: {\n dark: '#99005C',\n light: '#FFF0F9',\n hover: '#FFE1F3'\n },\n lilac: {\n dark: '#731D7C',\n light: '#FBF2FC',\n hover: '#F7E6F9'\n },\n periwinkle: {\n dark: '#330099',\n light: '#F5F0FF',\n hover: '#EBE1FF'\n },\n plum: {\n dark: '#632F6A',\n light: '#F5EAF5',\n hover: '#F0E0F0'\n },\n mocha: {\n dark: '#633636',\n light: '#F5EBEB',\n hover: '#F0E1E1'\n },\n thyme: {\n dark: '#675F32',\n light: '#FAF9F5',\n hover: '#F5F3EB'\n },\n olive: {\n dark: '#666600',\n light: '#FFFFF0',\n hover: '#FFFFDB'\n },\n moss: {\n dark: '#476600',\n light: '#F8FFEB',\n hover: '#F1FFD6'\n },\n fern: {\n dark: '#076600',\n light: '#F1FFF0',\n hover: '#E3FFE1'\n },\n sage: {\n dark: '#526E2B',\n light: '#EAF2DE',\n hover: '#EAF2DE'\n },\n mint: {\n dark: '#23764A',\n light: '#E8F7F0',\n hover: '#DDF3E9'\n },\n aqua: {\n dark: '#006649',\n light: '#F0FFFB',\n hover: '#E1FFF7'\n },\n denim: {\n dark: '#006699',\n light: '#F0FAFF',\n hover: '#E1F5FF'\n },\n lavender: {\n dark: '#293370',\n light: '#F4F5FB',\n hover: '#E9EBF7'\n },\n steel: {\n dark: '#284E71',\n light: '#E9EFF7',\n hover: '#DEE7F3'\n },\n}\n\nexport const font = {\n size: {\n smallest: '10px',\n smaller: '12px',\n small: '14px',\n medium: '16px',\n regular: '18px',\n large: '20px',\n larger: '22px',\n xlarge: '24px',\n xxlarge: '26px',\n super: '28px',\n xsuper: '36px',\n xxsuper:'40px',\n gojira: '48px'\n },\n weight: {\n normal: 400,\n regular: 500,\n semibold: 600,\n bold: 700,\n bolder: 800\n },\n height: {\n smallest: '15px',\n small2: '16px',\n smaller: '18px',\n small: '21px',\n medium: '24px',\n regular: '27px',\n large: '30px',\n larger: '33px',\n xlarge: '36px',\n xxlarge: '39px',\n super: '42px',\n xsuper: '54px',\n xxsuper: '60px',\n gojira: '64px'\n },\n multipliers: {\n none: 1,\n small: 1.2,\n large: 1.5,\n }\n};\n\nexport const colors = {\n prometricPalette: {\n 'inbde': {\n default: '#0f6292',\n dark: '#0C4E74',\n light: '#80AEE1',\n },\n 'med-school': {\n default: '#3852A4',\n light: '#80AEE1',\n },\n 'nclex': {\n default: '#006DAA',\n medium: '#007EC4',\n dark: '#004E7A',\n light: '#80AEE1',\n },\n mcat: {\n dark: '#006DAA',\n default: '#006DAA',\n light: '#80AEE1',\n grey: '#A6A6A6',\n highlight: '#FFFF00',\n highlightBlue: '#43c0fb',\n }\n },\n brandPalette: {\n blue: {\n default: '#3B82F6',\n dark: '#1d4ed8',\n hover: '#60A5FA',\n hoverLight: '#e0eeff',\n light: '#DBEAFE',\n extraLight: '#EFF6FF',\n gradientStart: '#60A5FA',\n gradientMid: '#3B82F6',\n gradientEnd: '#2563EB',\n gradient: 'linear-gradient(180deg, #60A5FA 0%, #3B82F6 50%, #1d4ed8 100%)'\n },\n indigo: {\n default: '#6366F1',\n dark: '#4338ca',\n hover: '#818CF8',\n hoverLight: 'rgb(224, 232, 255)',\n light: '#E0E7FF',\n extraLight: '#EEF2FF',\n gradientStart: '#818CF8',\n gradientMid: '#6366F1',\n gradientEnd: '#4F46E5',\n gradient: 'linear-gradient(180deg, #818CF8 0%, #6366F1 50%, #4338ca 100%)'\n },\n violet: {\n default: '#8B5CF6',\n dark: '#6d28d9',\n hover: '#A78BFA',\n hoverLight: 'rgba(234, 229, 255, 1)',\n light: '#EDE9FE',\n extraLight: '#F5F3FF',\n gradientStart: '#A78BFA',\n gradientMid: '#8B5CF6',\n gradientEnd: '#7C3AED',\n gradient: 'linear-gradient(180deg, #A78BFA 0%, #8B5CF6 50%, #6d28d9 100%)'\n },\n teal: {\n default: '#14B8A6',\n dark: '#0f766e',\n hover: '#2DD4BF',\n light: '#CCFBF1',\n extraLight: '#F0FDFA',\n hoverLight: 'rgba(228, 251, 246, 1)',\n gradientStart: '#2DD4BF',\n gradientMid: '#14B8A6',\n gradientEnd: '#0D9488',\n gradient: 'linear-gradient(180deg, #2DD4BF 0%, #14B8A6 50%, #0f766e 100%)'\n },\n orange: {\n default: '#F97316',\n dark: '#c2410c',\n hover: '#FB923C',\n hoverLight: 'rgb(255, 239, 219)',\n light: '#FFEDD5',\n extraLight: '#FFF7ED',\n gradientStart: '#FB923C',\n gradientMid: '#F97316',\n gradientEnd: '#D97706',\n gradient: 'linear-gradient(180deg, #FB923C 0%, #F97316 50%, #c2410c 100%)'\n },\n pink: {\n default: '#DC517C',\n dark: '#B13F62',\n hover: '#E5517E',\n light: '#F9E5EC',\n extraLight: '#FDF2F6',\n gradientStart: '#F05B89',\n gradientMid: '#DC4F7A',\n gradientEnd: '#B13F62',\n gradient: 'linear-gradient(180deg, #F05B89 0%, #DC4F7A 50%, #B13F62 100%)'\n },\n purple: {\n default: '#9E46B8',\n dark: '#833499',\n hover: '#A748C2',\n hoverLight: 'rgb(234, 229, 255)',\n light: '#F1E6F4',\n extraLight: '#F9F2FA',\n gradientStart: '#BC63D6',\n gradientMid: '#9E46B8',\n gradientEnd: '#7A318E',\n gradient: 'linear-gradient(180deg, #BC63D6 0%, #9E46B8 50%, #7A318E 100%)'\n },\n royal: {\n default: '#6255E5',\n dark: '#5127C4',\n light: '#E0E6FF',\n extraLight: '#EEF0FE',\n hover: '#6765EF',\n gradientStart: '#776CFE',\n gradientMid: '#6B60E5',\n gradientEnd: '#5740DB',\n gradient: 'linear-gradient(180deg, #776CFE 0%, #6B60E5 50%, #5127C4 100%)',\n },\n rose: {\n default: '#F43F5E',\n dark: '#be123c',\n light: '#FFE4E6',\n extraLight: '#FFF1F2',\n hover: '#FB7185',\n hoverLight: 'rgb(255, 224, 227)',\n gradientStart: '#FB7185',\n gradientMid: '#F43F5E',\n gradientEnd: '#E11D48',\n gradient: 'linear-gradient(180deg, #FB7185 0%, #F43F5E 50%, #be123c 100%)',\n },\n shamrock: {\n default: '#1A9E60',\n dark: '#147E44',\n light: '#E7FFF4',\n hover: '#1CA65B',\n gradientStart: '#1A9E60',\n gradientEnd: '#147E44',\n gradient: 'linear-gradient(180deg, #1A9E60 0%, #147E44 100%);',\n },\n cerulean: {\n default: '#00A8E0',\n dark: '#0086B4',\n light: '#EFFBFF',\n hover: '#00B0EC',\n gradientStart: '#00A8E0',\n gradientEnd: '#0086B4',\n gradient: 'linear-gradient(180deg, #00A8E0 0%, #0086B4 100%);',\n },\n magenta: {\n default: '#BA3996',\n dark: '#952E78',\n light: '#FFEEFA',\n hover: '#C33C9E',\n gradientStart: '#BA3996',\n gradientEnd: '#952E78',\n gradient: 'linear-gradient(180deg, #BA3996 0%, #952E78 100%);',\n },\n pumpkin: {\n default: '#FE7F2D',\n dark: '#CB6424',\n light: '#FFF4ED',\n hover: '#FF8630',\n gradientStart: '#FE7F2D',\n gradientEnd: '#CB6424',\n gradient: 'linear-gradient(180deg, #FE7F2D 0%, #CB6424 100%);',\n },\n grey: {\n light: '#FAFAFA',\n default: '#EDEDF0',\n dark: '#2F3037',\n extraLight: '#F6F6F6',\n hoverLight: '#F0F0F0',\n },\n red: {\n default: '#E05E57',\n dark: '#C33C35',\n light: '#FCECEE',\n extraLight: '#FFF0F0',\n hover: '#FDF3F5',\n hoverLight: '#F8D9D9',\n gradientStart: '#F96A62',\n gradientEnd: '#C43C35',\n gradient: 'linear-gradient(180deg, #F96A62 5.47%, #E05E57 51.56%, #C43C35 100%);',\n },\n green: {\n default: '#66AC5C',\n dark: '#4C8B43',\n light: '#EAF5EA',\n extraLight: '#F5F9F4',\n hover: '#6CB461',\n hoverLight: '#E8F4E8',\n gradientStart: '#7BCC6F',\n gradientEnd: '#54964B',\n gradient: 'linear-gradient(180deg, #7BCC6F 0%, #66AC5C 48.96%, #54964B 100%);',\n },\n fuschia: {\n default: '#D946EF',\n dark: '#A21CAF',\n light: '#FAE8FF',\n extraLight: '#FDF4FF',\n hover: '#E04CE4',\n hoverLight: '#F6E0FF',\n gradientStart: '#D946EF',\n gradientEnd: '#A21CAF',\n gradient: 'linear-gradient(180deg, #D946EF 0%, #A21CAF 100%);',\n }\n },\n typographyPalette,\n borderPalette,\n iconPalette,\n backgroundPalette,\n elevationPalette,\n assignmentColorPalette,\n darkModePalette: {\n ...darkModePalette,\n neutralsPalette: {\n extraDark: '#FAFAFA',\n grey: '#C8C9CE',\n extraLight: '#1E1E1E',\n white: '#121212',\n offWhite: '#1E1E1E',\n dark: '#FAFAFA',\n },\n },\n neutralsPalette: {\n extraDark: '#2F3037',\n black: '#000',\n dark: '#585962',\n grey: '#85868E',\n lightGrey: '#C8C9CE',\n light: '#EDEDF0',\n extraLight: '#F6F6F6',\n white: '#FFFFFF',\n offWhite: '#FAFAFA',\n lightBorder: '#ededf0',\n nclex: {\n light: '#E0E0E0',\n offWhite: '#EEEEEE',\n dark: '#707070',\n lightBlue: '#EAF4FE',\n yellow: '#FDFF00',\n lightYellow: '#f7f5c1',\n },\n mcat: {\n black: '#151A1E',\n grey: '#D2D2D2',\n },\n },\n interfacePalette: {\n green: {\n default: '#66AC5C',\n light: '#EAF5EA',\n dark: '#4C8B43',\n hover: '#6CB461',\n gradientStart: '#7BCC6F',\n gradientMid: '#66AC5C',\n gradientEnd: '#54964B',\n gradientColors: ['#7BCC6F', '#66AC5C', '#54964B'],\n gradientLocations: [0, .5, 1],\n gradient: 'linear-gradient(180deg, #7BCC6F 0%, #66AC5C 48.96%, #54964B 100%)',\n transparent: {\n gradientColors: [\n 'rgba(123,204,111,0.15)',\n 'rgba(102,172,92,0.15)',\n 'rgba(76,139,67,0.15)'\n ],\n gradientLocations: [\n 0, .5, 1\n ]\n },\n },\n red: {\n default: '#E05E57',\n light: '#FCECEE',\n dark: '#C33C35',\n hover: '#E9635C',\n gradientStart: '#F96A62',\n gradientMid: '#E05E57',\n gradientEnd: '#C43C35',\n gradientColors: ['#F96A62', '#E05E57', '#C43C35'],\n gradientLocations: [0, .5, 1],\n gradient: 'linear-gradient(180deg, #F96A62 5.47%, #E05E57 51.56%, #C43C35 100%)',\n transparent: {\n gradientColors: [\n 'rgba(249, 106, 98, 0.15)',\n 'rgba(224, 94, 87, 0.15)',\n 'rgba(196, 60, 53, 0.15)'\n ],\n gradientLocations: [\n 0.05, .5, 1\n ]\n },\n },\n yellow: {\n default: '#F3D456',\n light: '#FFFDE9',\n dark: '#D09528',\n hover: '#F8D859',\n alert: '#F3D456',\n gradientStart: '#F9D95B',\n gradientMid: '#F3D456',\n gradientEnd: '#D09528',\n gradientColors: ['#F9D95B', '#F3D456', '#D09528'],\n gradientLocations: [0, .5, 1],\n gradient: 'linear-gradient(180deg, #F9D95B 0%, #F3D456 49.48%, #D09528 100%)',\n transparent: {\n gradientColors: [\n 'rgba(255, 222, 90, 0.15)',\n 'rgba(243, 212, 86, 0.15)',\n 'rgba(208, 149, 40, 0.15)'\n ],\n gradientLocations: [\n 0, .5, 1\n ]\n },\n }\n },\n fade: {\n white: 'linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, #FFFFFF 48.33%, #FFFFFF 100%)'\n },\n special: {\n secondaryGradient: {\n gradientStart: 'rgba(255, 255, 255, 0.12)',\n gradientMid: 'rgba(255, 255, 255, 0.08)',\n gradientEnd: 'rgba(255, 255, 255, 0.05)'\n },\n secondary: 'linear-gradient(180deg, rgba(255, 255, 255, 0.12) 0%, rgba(255, 255, 255, 0.08) 52.05%, rgba(255, 255, 255, 0.05) 100%)',\n pearlGradient: {\n gradientStart: '#FFFFFF',\n gradientMid: '#FFFFFF',\n gradientEnd: '#F5F5F5'\n },\n pearl: 'linear-gradient(180deg, #FFFFFF 0%, #FFFFFF 50.68%, #F5F5F5 100%)',\n naturalDarkGradient: {\n gradientStart: 'rgba(0, 0, 0, 0.08)',\n gradientEnd: 'rgba(0, 0, 0, 0.04)'\n },\n naturalDark: 'linear-gradient(180deg, rgba(0, 0, 0, 0.08) 0%, rgba(0, 0, 0, 0.04) 100%)',\n naturalLightGradient: {\n gradientStart: 'rgba(0, 0, 0, 0.04)',\n gradientEnd: 'rgba(0, 0, 0, 0.02)'\n },\n naturalLight: 'linear-gradient(180deg, rgba(0, 0, 0, 0.04) 0%, rgba(0, 0, 0, 0.02) 100%);',\n tuxedo: '#151A1E'\n }\n};\n\nexport const elevation = {\n shadow: {\n tight: '0px 1px 4px rgba(0, 0, 0, 0.1)',\n low: '0px 4px 8px rgba(0, 0, 0, 0.08)',\n medium: '0px 8px 20px rgba(0, 0, 0, 0.1)',\n high: '0px 12px 32px rgba(0, 0, 0, 0.12)'\n },\n inner: {\n progressDark: 'inset 0px 2px 6px rgba(0, 0, 0, 0.15)',\n progressLight: 'inset 0px 2px 6px rgba(0, 0, 0, 0.07)',\n medium: 'inset 0px 2px 4px rgba(0, 0, 0, 0.25)',\n high: 'inset 0px 2px 8px rgba(0, 0, 0, 0.1)'\n }\n};\n\nexport const overlays = {\n opacity: {\n light: {\n _500: 'rgba(255, 255, 255, .9)',\n _400: 'rgba(255, 255, 255, .7)',\n _300: 'rgba(255, 255, 255, .5)',\n _200: 'rgba(255, 255, 255, .3)',\n _100: 'rgba(255, 255, 255, .1)',\n _50: 'rgba(255, 255, 255, .05)'\n },\n dark: {\n _500: 'rgba(0, 0, 0, .9)',\n _400: 'rgba(0, 0, 0, .7)',\n _300: 'rgba(0, 0, 0, .5)',\n _200: 'rgba(0, 0, 0, .3)',\n _100: 'rgba(0, 0, 0, .1)',\n _50: 'rgba(0, 0, 0, .05)'\n }\n }\n};\n\nexport const layouts = {\n spacing: {\n none: '0px',\n xs: '4px',\n s: '8px',\n ms: '12px',\n m: '16px',\n ml: '18px',\n l: '24px',\n xl: '32px',\n xxl: '64px'\n }\n};\n\nfunction loadingBackground({loading, lightMode}) {\n\n if (!loading) return '';\n\n const gradientRange = lightMode\n ? [theme.colors.neutralsPalette.light, theme.colors.neutralsPalette.lightGrey]\n : [theme.overlays.opacity.dark._100, theme.overlays.opacity.dark._200]; // TODO this probably needs to be tweaked\n\n return `\n background: linear-gradient(-90deg, ${gradientRange[0]} 0%, ${gradientRange[1]} 50%, ${gradientRange[0]} 100%);\n animation: pulse 1.2s ease-in-out infinite;\n background-size: 400% 400%;\n @keyframes pulse {\n 0% {\n background-position: 0% 0%;\n }\n 100% {\n background-position: -135% 0%;\n }\n }\n `;\n}\n\nexport const theme = {\n borderColor: '#D5D8D9',\n purpleBorderColor: '#5B3ABB',\n lightBorderColor: '#F1F1F1',\n mediumBorderColor: '#DFE4EA',\n brandPurple: '#6C5CE7',\n brandBlue: '#46B0E1',\n barBlue: '#0F6292',\n lightGrey: '#EDF0F2',\n darkTextColor: '#252E33',\n lightTextColor: '#6E7577',\n greyTextColor: '#8f9cb5',\n backgroundShade: '#F7F8FC',\n lightBackground: '#FDFDFD',\n lightBarBackground: '#F5F8FA',\n hoverColor: '#7558CF',\n greyButtonHover: '#e1e6e9',\n animation: {\n loadingBackground,\n spin: `\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n `\n },\n mediaQueries,\n colors,\n elevation,\n overlays,\n layouts,\n font,\n};\n\nexport default theme;\n","import Amplify from '@aws-amplify/core';\nimport Storage from '@aws-amplify/storage';\nimport Auth from '@aws-amplify/auth';\n\nimport API, {graphqlOperation} from '@aws-amplify/api';\nimport awsconfig from '../aws-exports';\n\nimport {handleError} from './error';\nimport {LambdaClient, InvokeCommand, InvokeWithResponseStreamCommand} from '@aws-sdk/client-lambda';\nimport {queries, mutations, customQueries, customMutations, customSubscriptions} from '../gql';\nimport {getInObj, asyncFetchWithS3Cache} from '../util';\nimport moment from 'moment';\n// TODO there might be a better way of handling this...\nAmplify.configure(awsconfig);\n\nasync function setupLambdaClient() {\n try {\n const credentials = await Auth.currentCredentials();\n const lambdaClient = new LambdaClient({\n region: awsconfig.aws_project_region,\n credentials: Auth.essentialCredentials(credentials),\n });\n return lambdaClient;\n } catch (error) {\n console.error(\"Error setting up Lambda client:\", error);\n return null;\n }\n}\n\nexport const invokeLambda = async (FunctionName, payload) => {\n try {\n const lambdaClient = await setupLambdaClient();\n if (!lambdaClient) return null;\n\n const command = new InvokeCommand({\n FunctionName,\n Payload: JSON.stringify(payload),\n });\n const response = await lambdaClient.send(command);\n return JSON.parse(Buffer.from(response.Payload).toString());\n } catch (error) {\n console.error(\"Error invoking Lambda function:\", error);\n return {};\n }\n};\nexport const invokeStreamingLambda = async (FunctionName, payload) => {\n try {\n const lambdaClient = await setupLambdaClient();\n if (!lambdaClient) return null;\n\n const command = new InvokeWithResponseStreamCommand({\n FunctionName,\n Payload: JSON.stringify(payload),\n });\n const response = await lambdaClient.send(command);\n return response.EventStream;\n } catch (error) {\n console.error(\"Error invoking Lambda function:\", error);\n return {};\n }\n};\n\nconst sleep = m => new Promise(r => setTimeout(r, m));\n\nasync function graphqlRetryHandler (args, retryCount=1) {\n try {\n return await API.graphql(args);\n } catch (error) {\n handleError('network error', error);\n if (error.response && error.response.status >= 500 && retryCount < 32) {\n await sleep(retryCount ** 2 * 500);\n return await graphqlRetryHandler(args, retryCount + 1);\n } else {\n throw error;\n }\n }\n}\n\nasync function queryVimeoApi(vimeoId, skipCache=false) {\n try {\n return await graphqlRetryHandler({query: mutations.queryVimeoApi, variables: {vimeoId, skipCache}})\n } catch (error) {\n console.log(`Error querying vimeo api for ${vimeoId}`, error);\n }\n}\n\nasync function getExam(id) {\n try {\n return await API.graphql(graphqlOperation(queries.getExam, {id}))\n } catch (error) {\n console.log(`Error fetching exam ${id}`, error);\n }\n}\n\n\nasync function getTag(id) {\n try {\n return await API.graphql(graphqlOperation(customQueries.getTag, {id}));\n } catch (error) {\n handleError('Error fetching tags', error);\n }\n}\n\nasync function listTags(limit=1000) {\n try {\n return await API.graphql(graphqlOperation(customQueries.listTags, {limit}));\n } catch (error) {\n handleError('Error fetching tags', error);\n }\n}\n\nasync function listExams(limit=200) {\n try {\n return await API.graphql(graphqlOperation(customQueries.listExams, {limit}));\n } catch (error) {\n handleError('Error fetching exams', error);\n }\n}\n\nasync function fetchNewQuestionBase(input={}) {\n try {\n const {data} = await API.graphql({query: customMutations.createQuestionBase, variables: {input}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n return data.createQuestionBase.id;\n } catch(error) {\n handleError('Error creating question base', error)\n }\n}\n\nasync function updateQuestionBase(input={}) {\n try {\n const {data} = await API.graphql({query: customMutations.updateQuestionBase, variables: {input}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n return data;\n } catch (error) {\n handleError('Error updating question base', error);\n }\n}\n\nasync function updateQuestionTags(questionBaseId, tagIds) {\n try {\n const input = {\n questionBaseId: questionBaseId,\n tagIds: JSON.stringify(tagIds)\n };\n\n await API.graphql({query: mutations.updateQuestionTags, variables: input, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch (error) {\n handleError('Error updating question tags', error);\n }\n}\n\nasync function createTag(input={}) {\n try {\n return await API.graphql({query: mutations.createTag, variables: {input}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch (error) {\n handleError('Error creating tag', error);\n }\n}\n\nasync function updateTag(input={}) {\n try {\n return await API.graphql({query: mutations.updateTag, variables: {input}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch (error) {\n handleError('Error updating tag', error);\n }\n}\n\nasync function createQuestionRevision(questionBaseId, prompt, answers, explanation, userName=\"\", additionalComponents=[]) {\n try {\n const input = {\n questionBaseQuestionRevisionsId: questionBaseId,\n questionComponents: [\n {index: 0, renderType: 'prompt', contents: prompt || null},\n {index: 1, renderType: 'answers', contents: JSON.stringify(answers)},\n {index: 2, renderType: 'explanation', contents: explanation || null},\n ...additionalComponents\n ],\n revisedBy: userName\n };\n\n return await graphqlRetryHandler({query: mutations.createQuestionRevision, variables: {input}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch (error) {\n handleError('Error creating revision', error);\n }\n}\n\nasync function getRevision(revisionId) {\n return await graphqlRetryHandler({query: customQueries.getQuestionRevision, variables: {id: revisionId}, authMode: 'AWS_IAM'});\n}\n\nasync function createAnatomyQuestionRevision(questionBaseId, s3Key, anatomyImageTransform, prompt, answers, explanation, userName=\"\") {\n try {\n const input = {\n questionBaseQuestionRevisionsId: questionBaseId,\n questionComponents: [\n {index: 0, renderType: 'prompt', contents: prompt},\n {index: 1, renderType: 'answers', contents: JSON.stringify(answers)},\n {index: 2, renderType: 'explanation', contents: explanation || null},\n {index: 3, renderType: 'anatomyImage', contents: s3Key || null},\n {index: 4, renderType: 'anatomyImageTransform', contents: JSON.stringify(anatomyImageTransform)}\n ],\n revisedBy: userName\n };\n\n return await graphqlRetryHandler({query: mutations.createQuestionRevision, variables: {input}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch (error) {\n handleError('Error creating revision', error);\n }\n}\n\nasync function deleteQuestionAndConnections(id) {\n try {\n return await graphqlRetryHandler({query: mutations.deleteQuestion, variables: {questionBaseId: id}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch (error) {\n handleError('Error deleting question base', error);\n }\n}\n\nasync function createExam(title) {\n try {\n return await API.graphql(graphqlOperation(mutations.createExam, {input: {title}}));\n } catch (error) {\n handleError('Error creating exam', error);\n }\n}\n\nasync function updateExam(id, updateFields={}) {\n try {\n return await API.graphql(graphqlOperation(mutations.updateExam, {input: {id, ...updateFields}}))\n } catch (error) {\n handleError('Error updating exam', error);\n }\n}\n\nasync function deleteExam(id) {\n try {\n await API.graphql(graphqlOperation(mutations.deleteExam, {input: {id}}));\n } catch (error) {\n handleError('Error deleting exam', error);\n }\n}\n\nasync function createExamComponent(questionId, examId) {\n try {\n return await API.graphql(graphqlOperation(mutations.addUniqueQuestionToExam, {examId, questionId}));\n } catch(error) {\n handleError('Error adding question to exam', error);\n }\n}\n\nasync function deleteExamComponent(id) {\n try {\n return await API.graphql(graphqlOperation(mutations.deleteExamComponent, {input: {id}}));\n } catch(error) {\n handleError('Error removing question from exam', error);\n }\n}\n\nasync function updateExamComponentOrder(examComponents) {\n try {\n const examComponentIndexPairs = JSON.stringify(examComponents.map(({id, index}) => ([id, index])));\n\n return await API.graphql(graphqlOperation(mutations.updateExamComponentOrder, {examComponentIndexPairs}));\n } catch (error) {\n handleError('Error updating exam components order', error);\n }\n}\n\nasync function getQuestionBase(id, fetchTests=false) {\n try {\n return graphqlRetryHandler({query: fetchTests ? customQueries.getQuestionBaseWithTests : customQueries.getQuestionBase, variables: {id}});\n } catch(error) {\n handleError('Error fetching question base', error)\n }\n}\nasync function getQuestionBaseTestBlocks(id) {\n try {\n return graphqlRetryHandler({query: customQueries.getQuestionBaseTestBlocks, variables: {id}});\n } catch(error) {\n handleError('Error fetching question base', error)\n }\n}\n\nasync function getQuestionBaseTagsOnly(id) {\n try {\n return graphqlRetryHandler({query: customQueries.getQuestionBaseTagsOnly, variables: {id}});\n } catch(error) {\n handleError('Error fetching question base', error)\n }\n}\n\nasync function getQuestionForTest(id, withBlocks=false) {\n try {\n return graphqlRetryHandler({query: withBlocks ? customQueries.getQuestionForTestWithBlocks : customQueries.getQuestionForTest, variables: {id}});\n } catch(error) {\n handleError('Error fetching question base', error)\n }\n}\nasync function getQuestionBaseWithConnections(id) {\n try {\n return graphqlRetryHandler({query: customQueries.getQuestionBaseWithConnections, variables: {id}});\n } catch(error) {\n handleError('Error fetching question base', error)\n }\n}\nexport async function getQuestionBaseTests(id) {\n try {\n return graphqlRetryHandler({query: customQueries.getQuestionBaseTests, variables: {id}});\n } catch(error) {\n handleError('Error fetching question base', error)\n }\n}\n\nasync function getQuestionBaseProgresses(id, limit) {\n try {\n const result = await graphqlRetryHandler({query: customQueries.getQuestionBaseProgresses, variables: {id, limit}});\n if (result.data.getQuestionBase.progresses) {\n let progressNextToken = result.data.getQuestionBase.progresses.nextToken;\n while (progressNextToken) {\n const nextResult = await graphqlRetryHandler({query: customQueries.getQuestionBaseProgresses, variables: {id, limit, progressNextToken}});\n progressNextToken = nextResult.data.getQuestionBase.progresses.nextToken;\n result.data.getQuestionBase.progresses.items.push(...nextResult.data.getQuestionBase.progresses.items);\n }\n }\n return result\n } catch (error) {\n handleError('Error fetching question base progresses', error);\n }\n}\n\nasync function getQuestionBaseWithFaqOnly(id) {\n try {\n return API.graphql({query: customQueries.getQuestionBaseWithFaqOnly, variables: {id}});\n } catch(error) {\n handleError('Error fetching question base with faq', error)\n }\n}\n\nasync function getQuestionBaseWithFaq(id) {\n try {\n return API.graphql({query: customQueries.getQuestionBaseWithFaq, variables: {id}});\n } catch(error) {\n handleError('Error fetching question base with faq', error)\n }\n}\n\nasync function listQuestions(input={}) {\n\n try {\n return await graphqlRetryHandler({query: customQueries.listQuestionBases, variables: input});\n } catch (error) {\n handleError('Error fetching questions', error);\n }\n}\n\nasync function searchQuestions(input={}, fetchBlocks=false) {\n\n try {\n const {data: {searchQuestionBases: {items, nextToken}}} = await graphqlRetryHandler({query: fetchBlocks ? customQueries.searchQuestionBasesAndBlocks : customQueries.searchQuestionBases, variables: input});\n return {items, nextToken}\n } catch (error) {\n handleError('Error fetching questions', error);\n }\n}\n\nasync function getContentQueue(name) {\n try {\n return await graphqlRetryHandler({query: queries.getContentQueue, variables: {name}})\n } catch (error) {\n console.log(`Error fetching ${name} content queue`, error);\n }\n}\n\nasync function getTest(id, query='getTest') {\n // const s3Key = `json/backups/tests/${query}/${id}.json`;\n // const maxAge = moment().subtract(7, 'days')\n // const fetchFunction = () => graphqlRetryHandler({query: customQueries[query], variables: {id}});\n try {\n // return asyncFetchWithS3Cache(s3Key, maxAge, fetchFunction);\n return graphqlRetryHandler({query: customQueries[query], variables: {id}});\n } catch(error) {\n handleError('Error fetching test', error)\n try {\n const result = await fetch(`https://dekni9rgkrcu0.cloudfront.net/backups/tests/${id}.json`);\n return {data: {getTest: await result.json()}};\n } catch (e) {\n console.log('backup fetch error', e);\n }\n }\n}\n\nasync function createTest(input) {\n try {\n return await graphqlRetryHandler({query: customMutations.createTest, variables: {input}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch (error) {\n handleError('Error creating test', error);\n }\n}\n\n\nasync function listTestBlockConnections(limit=200, withConnections=false) {\n const query = customQueries.listTestBlockConnections;\n try {\n const result = await graphqlRetryHandler({query: query, variables: {limit}});\n if (result.data.listTestBlockConnections) {\n let nextToken = result.data.listTestBlockConnections.nextToken;\n while (nextToken) {\n const nextResult = await graphqlRetryHandler({query: query, variables: {limit, nextToken}});\n nextToken = nextResult.data.listTestBlockConnections.nextToken;\n result.data.listTestBlockConnections.items.push(...nextResult.data.listTestBlockConnections.items);\n }\n }\n return result\n } catch (error) {\n handleError('Error fetching tests', error);\n }\n}\n\nasync function listQuestionConnections(limit=200, withConnections=false) {\n const query = customQueries.listQuestionConnections;\n try {\n const result = await graphqlRetryHandler({query: query, variables: {limit}});\n if (result.data.listQuestionConnections) {\n let nextToken = result.data.listQuestionConnections.nextToken;\n while (nextToken) {\n const nextResult = await graphqlRetryHandler({query: query, variables: {limit, nextToken}});\n nextToken = nextResult.data.listQuestionConnections.nextToken;\n result.data.listQuestionConnections.items.push(...nextResult.data.listQuestionConnections.items);\n }\n }\n return result\n } catch (error) {\n handleError('Error fetching tests', error);\n }\n}\n\nasync function listTests(limit=100, withConnections=false) {\n const query = withConnections ? customQueries.listTestsWithConnections : customQueries.listTests\n try {\n const result = await graphqlRetryHandler({query: query, variables: {limit}});\n if (result.data.listTests) {\n let nextToken = result.data.listTests.nextToken;\n while (nextToken) {\n const nextResult = await graphqlRetryHandler({query: query, variables: {limit, nextToken}});\n nextToken = nextResult.data.listTests.nextToken;\n result.data.listTests.items.push(...nextResult.data.listTests.items);\n }\n }\n return result\n } catch (error) {\n handleError('Error fetching tests', error);\n try {\n const result = await fetch('https://dekni9rgkrcu0.cloudfront.net/backups/testLists/ALL.json');\n return {data: {listTests: {items: await result.json()}}}\n } catch (e) {\n console.log('backup fetch error', e);\n }\n }\n}\n\nasync function searchBlocks(filter, limit=200) {\n try {\n const result = await graphqlRetryHandler({query: customQueries.listTestBlocks, variables: {filter, limit}});\n if (result.data.listTestBlocks) {\n let nextToken = result.data.listTestBlocks.nextToken;\n while (nextToken) {\n const nextResult = await graphqlRetryHandler({query: customQueries.listTestBlocks, variables: {filter, limit, nextToken}});\n nextToken = nextResult.data.listTestBlocks.nextToken;\n result.data.listTestBlocks.items.push(...nextResult.data.listTestBlocks.items);\n }\n }\n return result\n\n } catch (error) {\n handleError('Error fetching blocks', error);\n }\n}\n\nasync function searchUsers(filter, limit=200) {\n try {\n const result = await graphqlRetryHandler({query: customQueries.listUsers, variables: {filter, limit}});\n if (result.data.listUsers) {\n let nextToken = result.data.listUsers.nextToken;\n while (nextToken) {\n const nextResult = await graphqlRetryHandler({query: customQueries.listUsers, variables: {filter, limit, nextToken}});\n nextToken = nextResult.data.listUsers.nextToken;\n result.data.listUsers.items.push(...nextResult.data.listUsers.items);\n }\n }\n return result\n\n } catch (error) {\n handleError('Error searching users', error);\n }\n}\n\n\nasync function updateTest(id, updateFields={}) {\n try {\n return await graphqlRetryHandler({query: customMutations.updateTest, variables: {input: {id, ...updateFields}}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch (error) {\n handleError('Error updating test', error);\n }\n}\n\n\nasync function updateTestBlock(input) {\n try {\n return await graphqlRetryHandler({query: customMutations.updateTestBlock, variables: {input}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch (error) {\n handleError('Error updating test block', error);\n }\n}\n\nasync function getTestBlock(id) {\n try {\n return await API.graphql(graphqlOperation(customQueries.getTestBlock, {id}));\n } catch (error) {\n handleError('Error fetching question comment', error);\n return error;\n }\n}\nasync function getTestBlockWithQuestionIds(id) {\n try {\n return await API.graphql(graphqlOperation(customQueries.getTestBlockWithQuestionIds, {id}));\n } catch (error) {\n handleError('Error fetching question comment', error);\n return error;\n }\n}\n\nasync function deleteTest(id) {\n try {\n await graphqlRetryHandler({query: mutations.deleteTest, variables: {input: {id}}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch (error) {\n handleError('Error deleting test', error);\n }\n}\n\nasync function deleteTestBlockConnection(id) {\n try {\n await graphqlRetryHandler({query: customMutations.deleteTestBlockConnection, variables: {input: {id}}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch (error) {\n handleError('Error deleting test block connection', error);\n }\n}\n\nasync function createTestBlockConnection(input) {\n try {\n return await graphqlRetryHandler({query: customMutations.createTestBlockConnection, variables: {input}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch (error) {\n handleError('Error creating test block connection', error);\n }\n}\nasync function updateTestBlockConnection(input) {\n try {\n return await graphqlRetryHandler({query: customMutations.updateTestBlockConnection, variables: {input}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch (error) {\n handleError('Error updating test block connection', error);\n }\n}\n\nasync function createTestBlock(input) {\n try {\n return await graphqlRetryHandler({query: customMutations.createTestBlock, variables: {input}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch(error) {\n handleError('Error creating test block', error);\n }\n}\n\nasync function createQuestionConnection(questionId, testBlockId) {\n try {\n return await graphqlRetryHandler({query: mutations.addUniqueQuestionToTestBlock, variables: {questionId, testBlockId}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch(error) {\n handleError('Error adding question to test block', error);\n }\n}\n\nasync function deleteQuestionConnection(id) {\n try {\n return await graphqlRetryHandler({query: customMutations.deleteQuestionConnection, variables: {input: {id}}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch(error) {\n handleError('Error deleting question connection', error);\n }\n}\n\nasync function updateQuestionConnectionOrder(questionConnections) {\n try {\n const questionConnectionIndexPairs = JSON.stringify(questionConnections.map(({id, index}) => ([id, index])));\n\n return await graphqlRetryHandler({query: mutations.updateQuestionConnectionOrder, variables: {questionConnectionIndexPairs}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch (error) {\n handleError('Error updating question connection order', error);\n }\n}\n\nasync function createTestProgress(id, wordPressUserDataTestProgressesId, testId, retryCount=0) {\n try {\n return await graphqlRetryHandler({\n query: customMutations.createTestProgress,\n variables: {\n input: {\n id,\n wordPressUserDataTestProgressesId,\n testId,\n userIdHashTestId: `${wordPressUserDataTestProgressesId}#${testId}`,\n }\n }\n });\n } catch (error) {\n handleError('Error creating test progress', error);\n }\n}\nexport async function createTestProgressWithBlocks(id, testId) {\n try {\n return await graphqlRetryHandler({\n query: customMutations.createTestProgressWithBlocks,\n variables: {\n input: {\n id,\n testId,\n }\n }\n });\n } catch (error) {\n handleError('Error creating test progress', error);\n }\n}\n\nexport async function createTestProgressWithBlocksAndQuestions(id, testId) {\n try {\n await graphqlRetryHandler({\n query: customMutations.createTestProgressWithBlocksAndQuestions,\n variables: {\n input: {\n id,\n testId,\n }\n }\n });\n } catch (error) {\n console.log(error)\n handleError('Error creating test progress', error);\n }\n}\n\nasync function createBlockProgress(id, testProgressBlockProgressesId, blockId, blockProgress, blockIndex, retryCount=0) {\n try {\n try {\n return await graphqlRetryHandler({query: customMutations.createBlockProgress, variables: {input: {id, testProgressBlockProgressesId, blockId, ...blockProgress, index: blockIndex}}});\n } catch (error) {\n return await graphqlRetryHandler({query: customMutations.updateBlockProgress, variables: {input: {id, testProgressBlockProgressesId, blockId, ...blockProgress, index: blockIndex}}});\n }\n } catch (error) {\n handleError('Error creating block progress', error);\n }\n}\nasync function getBlockProgress(id) {\n try {\n return await graphqlRetryHandler({query: customQueries.getBlockProgress, variables: {id}});\n } catch (error) {\n handleError('Error getting block progress', error);\n }\n}\n\nasync function updateBlockProgress(blockProgressId, blockProgress) {\n try {\n return await graphqlRetryHandler({query: customMutations.updateBlockProgress, variables: {input: {id: blockProgressId, ...blockProgress}}});\n } catch (error) {\n handleError('Error updating block result', error);\n }\n}\n\nasync function createQuestionProgress(id, blockProgressQuestionProgressesId, questionProgressQuestionId, questionRevisionId, questionProgress, questionIndex, retryCount=0) {\n try {\n return await graphqlRetryHandler({\n query: customMutations.createQuestionProgress,\n variables: {\n input: {\n id,\n blockProgressQuestionProgressesId,\n questionProgressQuestionId,\n questionRevisionId,\n ...questionProgress,\n index: questionIndex\n }\n }});\n } catch (error) {\n handleError('Error creating question progress', error);\n }\n}\n\nasync function updateQuestionProgress(questionProgressId, questionProgress) {\n try {\n return await graphqlRetryHandler({query: customMutations.updateQuestionProgress, variables: {input: {id: questionProgressId, ...questionProgress}}});\n } catch (error) {\n handleError('Error updating question result', error);\n }\n}\n\nasync function createWordPressUserData(wpUserId) {\n try {\n return await graphqlRetryHandler({query: customMutations.createWordPressUserData, variables: {input: {wpUserId}}});\n } catch (error) {\n handleError('Error creating wordpress user data', error);\n return error;\n }\n}\n\nasync function getWordPressUserData(wpUserId) {\n try {\n const result = await graphqlRetryHandler({query: customQueries.getWordPressUserData, variables: {wpUserId}});\n if (result.data.getWordPressUserData) {\n let masteryNextToken = result.data.getWordPressUserData.questionMastery.nextToken;\n while (masteryNextToken) {\n const nextResult = await graphqlRetryHandler({query: customQueries.getWordPressUserData, variables: {wpUserId, masteryNextToken}});\n masteryNextToken = nextResult.data.getWordPressUserData.questionMastery.nextToken;\n result.data.getWordPressUserData.questionMastery.items.push(...nextResult.data.getWordPressUserData.questionMastery.items);\n }\n }\n return result\n } catch (error) {\n handleError('Error getting wordpress user data', error);\n return error;\n }\n}\n\nasync function getQuestionMasteryByWpUserId(wpUserId) {\n try {\n const result = await graphqlRetryHandler({query: customQueries.questionMasteryByWpUserId, variables: {wpUserId}});\n if (result.data.getWordPressUserData) {\n let masteryNextToken = result.data.getWordPressUserData.questionMastery.nextToken;\n while (masteryNextToken) {\n const nextResult = await graphqlRetryHandler({query: customQueries.questionMasteryByWpUserId, variables: {wpUserId, masteryNextToken}});\n masteryNextToken = nextResult.data.getWordPressUserData.questionMastery.nextToken;\n result.data.getWordPressUserData.questionMastery.items.push(...nextResult.data.getWordPressUserData.questionMastery.items);\n }\n }\n return result\n } catch (error) {\n handleError('Error getting question mastery data', error);\n return error;\n }\n}\n\nasync function getAllQuestionMasteryQuestionsByUserId(wpUserId, filter={}) {\n try {\n const result = await graphqlRetryHandler({query: customQueries.getAllQuestionMasteryQuestionsByUserId, variables: {limit: 500, wpUserId}});\n if (result.data.QuestionMasteryByWpUserId) {\n let masteryNextToken = result.data.QuestionMasteryByWpUserId.nextToken;\n while (masteryNextToken) {\n const nextResult = await graphqlRetryHandler({query: customQueries.getAllQuestionMasteryQuestionsByUserId, variables: {limit: 500, wpUserId, masteryNextToken}});\n masteryNextToken = nextResult.data.QuestionMasteryByWpUserId.nextToken;\n result.data.QuestionMasteryByWpUserId.items.push(...nextResult.data.QuestionMasteryByWpUserId.items);\n }\n }\n return result\n } catch (error) {\n handleError('Error getting all question mastery data', error);\n return error;\n }\n}\n\n\nasync function getAllQuestionMasteryIdsByUserId(wpUserId, filter={}) {\n try {\n const result = await graphqlRetryHandler({query: customQueries.getAllQuestionMasteryIdsByUserId, variables: {limit: 500, wpUserId}});\n if (result.data.QuestionMasteryByWpUserId) {\n let masteryNextToken = result.data.QuestionMasteryByWpUserId.nextToken;\n while (masteryNextToken) {\n const nextResult = await graphqlRetryHandler({query: customQueries.getAllQuestionMasteryIdsByUserId, variables: {limit: 500, wpUserId, masteryNextToken}});\n masteryNextToken = nextResult.data.QuestionMasteryByWpUserId.nextToken;\n result.data.QuestionMasteryByWpUserId.items.push(...nextResult.data.QuestionMasteryByWpUserId.items);\n }\n }\n return result\n } catch (error) {\n handleError('Error getting all question mastery data', error);\n return error;\n }\n}\n\nasync function getAllQuestionMasteryIdsTagsByUserId(wpUserId, filter={}) {\n try {\n const result = await graphqlRetryHandler({query: customQueries.getAllQuestionMasteryIdsTagsByUserId, variables: {limit: 500, wpUserId, filter}});\n if (result.data.QuestionMasteryByWpUserId) {\n let masteryNextToken = result.data.QuestionMasteryByWpUserId.nextToken;\n while (masteryNextToken) {\n const nextResult = await graphqlRetryHandler({query: customQueries.getAllQuestionMasteryIdsTagsByUserId, variables: {limit: 500, wpUserId, masteryNextToken, filter}});\n masteryNextToken = nextResult.data.QuestionMasteryByWpUserId.nextToken;\n result.data.QuestionMasteryByWpUserId.items.push(...nextResult.data.QuestionMasteryByWpUserId.items);\n }\n }\n return result\n } catch (error) {\n handleError('Error getting all question mastery data', error);\n return error;\n }\n}\n\nasync function getQuestionMasteryWithQuestionsByWpUserId(wpUserId) {\n try {\n const result = await graphqlRetryHandler({query: customQueries.questionMasteryWithQuestionsByWpUserId, variables: {wpUserId}});\n if (result.data.getWordPressUserData) {\n let masteryNextToken = result.data.getWordPressUserData.questionMastery.nextToken;\n while (masteryNextToken) {\n const nextResult = await graphqlRetryHandler({query: customQueries.questionMasteryWithQuestionsByWpUserId, variables: {wpUserId, masteryNextToken}});\n masteryNextToken = nextResult.data.getWordPressUserData.questionMastery.nextToken;\n result.data.getWordPressUserData.questionMastery.items.push(...nextResult.data.getWordPressUserData.questionMastery.items);\n }\n }\n return result\n } catch (error) {\n handleError('Error getting question mastery data', error);\n return error;\n }\n}\nconst allBootcamps = {userIdHashTestId: {beginsWith: ''}};\n// const justApp = {wpUserId: {contains: '@'}}\n\nasync function getQuestionMasteryByQuestionIdForFixing(questionMasteryQuestionId) {\n try {\n const result = await graphqlRetryHandler({query: customQueries.questionMasteryByQuestionIdForFixing, variables: {limit: 2000, filter: allBootcamps, questionMasteryQuestionId}});\n if (result.data.QuestionMasteryByQuestionId) {\n let nextToken = result.data.QuestionMasteryByQuestionId.nextToken;\n while (nextToken) {\n const nextResult = await graphqlRetryHandler({query: customQueries.questionMasteryByQuestionIdForFixing, variables: {limit: 2000, filter: allBootcamps, questionMasteryQuestionId, nextToken}});\n nextToken = nextResult.data.QuestionMasteryByQuestionId.nextToken;\n result.data.QuestionMasteryByQuestionId.items.push(...nextResult.data.QuestionMasteryByQuestionId.items);\n }\n }\n return result\n } catch (error) {\n handleError('Error getting question mastery data by question id', error);\n return error;\n }\n}\nconst topicExistsFilter = {userIdHashTopicTagId: {beginsWith: ''}};\n\nasync function getQuestionMasteryByQuestionId(questionMasteryQuestionId) {\n try {\n const result = await graphqlRetryHandler({query: customQueries.questionMasteryByQuestionId, variables: {limit: 2000, filter: topicExistsFilter, questionMasteryQuestionId}});\n if (result.data.QuestionMasteryByQuestionId) {\n let nextToken = result.data.QuestionMasteryByQuestionId.nextToken;\n while (nextToken) {\n const nextResult = await graphqlRetryHandler({query: customQueries.questionMasteryByQuestionId, variables: {limit: 2000, filter: topicExistsFilter, questionMasteryQuestionId, nextToken}});\n nextToken = nextResult.data.QuestionMasteryByQuestionId.nextToken;\n result.data.QuestionMasteryByQuestionId.items.push(...nextResult.data.QuestionMasteryByQuestionId.items);\n }\n }\n return result\n } catch (error) {\n handleError('Error getting question mastery data by question id', error);\n return error;\n }\n}\n\nasync function getQuestionMasteryWithQuestionTagsByWpUserId(wpUserId) {\n try {\n const result = await graphqlRetryHandler({query: customQueries.questionMasteryWithQuestionTagsByWpUserId, variables: {wpUserId}});\n if (result.data.getWordPressUserData) {\n let masteryNextToken = result.data.getWordPressUserData.questionMastery.nextToken;\n while (masteryNextToken) {\n const nextResult = await graphqlRetryHandler({query: customQueries.questionMasteryWithQuestionTagsByWpUserId, variables: {wpUserId, masteryNextToken}});\n masteryNextToken = nextResult.data.getWordPressUserData.questionMastery.nextToken;\n result.data.getWordPressUserData.questionMastery.items.push(...nextResult.data.getWordPressUserData.questionMastery.items);\n }\n }\n return result\n } catch (error) {\n handleError('Error getting question mastery data', error);\n return error;\n }\n}\n\nasync function getTestProgress(id) {\n try {\n return await graphqlRetryHandler({query: customQueries.getTestProgress, variables: {id}});\n } catch (error) {\n handleError('Error getting test progress data', error);\n return error;\n }\n}\n\n\nexport async function getTestProgressWithoutQuestion(id) {\n try {\n return await graphqlRetryHandler({query: customQueries.getTestProgressWithoutQuestion, variables: {id}});\n } catch (error) {\n handleError('Error getting test progress data', error);\n return error;\n }\n}\nexport async function getTestProgressSimple(id) {\n try {\n return await graphqlRetryHandler({query: customQueries.getTestProgressSimple, variables: {id}});\n } catch (error) {\n handleError('Error getting test progress data', error);\n return error;\n }\n}\nexport async function getTestProgressPerformance(id) {\n try {\n return await graphqlRetryHandler({query: customQueries.getTestProgressPerformance, variables: {id}});\n } catch (error) {\n handleError('Error getting test progress data', error);\n return error;\n }\n}\n\nasync function getTestProgressCount(id) {\n try {\n const result = await graphqlRetryHandler({query: customQueries.getTestProgressesCount, variables: {id}});\n return getInObj(['data', 'getUser', 'testProgresses', 'items'], result, []).length;\n } catch (error) {\n handleError('Error getting test progress count', error);\n return error;\n }\n}\n\nasync function getAllTestProgressByUserIdHashTestId(userIdHashTestId) {\n const query = customQueries.getTestProgressByTestId;\n\n try {\n return await graphqlRetryHandler({query, variables: {userIdHashTestId, limit: 1000}});\n } catch (error) {\n handleError('Error getting test progress by userId testId hash key', error);\n return error;\n }\n}\n\nasync function getTestProgressByUserIdHashTestId(userIdHashTestId, withData, sortDirection = 'DESC') {\n const query = withData ? customQueries.getTestProgressByTestIdFull : customQueries.getTestProgressByTestId;\n\n try {\n return await graphqlRetryHandler({query, variables: {userIdHashTestId, limit: 1, sortDirection, filter: {didReset: {ne: true}}}});\n } catch (error) {\n handleError('Error getting test progress by userId testId hash key', error);\n return error;\n }\n}\nasync function getTestProgressByUserIdHashTestIdForScoring(userIdHashTestId, isDAT, sortDirection = 'DESC', nextToken = null) {\n const query = isDAT ? customQueries.getTestProgressByTestIdFullForDATScoring : customQueries.getTestProgressByTestIdFullForScoring;\n\n try {\n return await graphqlRetryHandler({query, variables: {userIdHashTestId, limit: 1, sortDirection, nextToken}});\n } catch (error) {\n handleError('Error getting test progress by userId testId hash key', error);\n return error;\n }\n}\n\nfunction createTestProgressSubscription() {\n try {\n return graphqlRetryHandler({query: customSubscriptions.onCreateTestProgress});\n } catch (error) {\n handleError('Error subscribing to test progress creation', error);\n }\n}\n\nfunction updateBlockProgressSubscription() {\n try {\n return graphqlRetryHandler({query: customSubscriptions.onUpdateBlockProgress});\n } catch (error) {\n handleError('Error subscribing to block progress update', error);\n }\n}\n\nfunction updateQuestionProgressSubscription() {\n try {\n return graphqlRetryHandler({query: customSubscriptions.onUpdateQuestionProgress});\n } catch (error) {\n handleError('Error subscribing to question progress update', error);\n }\n}\n\nasync function createQuestionMastery(wpUserId, questionBaseId, masteryLevel, bookmarked) {\n try {\n return await graphqlRetryHandler({\n query: customMutations.createQuestionMastery,\n variables: {\n input: {\n wordPressUserDataQuestionMasteryId: wpUserId,\n userIdHashQuestionBaseId: `${wpUserId}#${questionBaseId}`,\n wpUserId,\n questionMasteryQuestionId: questionBaseId,\n masteryLevel,\n bookmarked\n }\n }});\n } catch (error) {\n handleError('Error creating question mastery', error);\n }\n}\n\nasync function updateQuestionMastery(input, create) {\n const query = create ? customMutations.createQuestionMastery : customMutations.updateQuestionMastery;\n\n try {\n return await graphqlRetryHandler({query, variables: {input}});\n } catch (error) {\n handleError('Error updating question mastery', error);\n }\n}\n\nasync function getQuestionMastery(variables, queryKey, bootcamp='') {\n const query = {\n subject: customQueries.questionMasteryBySubjectTagId,\n subjectWithQuestion: customQueries.questionMasteryBySubjectTagIdWithQuestion,\n subjectWithQuestionBaseId: customQueries.questionMasteryBySubjectTagIdWithQuestionBaseId,\n topic: customQueries.questionMasteryByTopicTagId,\n test: customQueries.questionMasteryByTestId,\n masteryLevel: ['anatomy', 'med-school', 'dental-school'].includes(bootcamp) ? customQueries.questionMasteryByMasteryLevelAnatomy : customQueries.questionMasteryByMasteryLevel,\n }[queryKey] || customQueries.getQuestionMasteryByQuestionBaseId;\n\n try {\n const result = await graphqlRetryHandler({query, variables});\n\n return result;\n } catch (error) {\n handleError('Error fetching question mastery', error);\n }\n}\n\nasync function loadMastery(masteryLevel, tagIds, userId, nextToken, bootcamp='', bookmarksOnly=false, type) {\n const filterQueryKey = type === 'topicReview'\n ? 'userIdHashTopicTagId'\n : 'userIdHashSubjectTagId';\n\n const filter = tagIds.length\n ? {\n filter: {\n ...(bookmarksOnly ? {bookmarked: {eq: true}} : {}),\n or: tagIds.map(tagId => ({[filterQueryKey]: {eq: `${userId}#${tagId}`}}))\n }\n }\n : {};\n\n const masteryLevelFilter = masteryLevel === 'all' || bookmarksOnly\n ? {}\n : {masteryLevel: {eq: masteryLevel}}\n\n try {\n const mastery = await getQuestionMastery({\n wpUserId: userId,\n limit: 500,\n nextToken,\n ...masteryLevelFilter,\n ...filter,\n }, 'masteryLevel', bootcamp);\n\n const {items, nextToken: nextNextToken} = mastery.data['QuestionMasteryByMasteryLevel'];\n\n return {\n mastery: items,\n nextToken: nextNextToken,\n }\n } catch (error) {\n handleError('Error fetching question mastery', error);\n }\n}\n\nasync function getAllQuestionMastery(variables, queryKey) {\n const {query, queryTitle} = {\n subject: {\n query: customQueries.questionMasteryBySubjectTagId,\n queryTitle: 'QuestionMasteryBySubjectTagId'\n },\n subjectWithQuestion: {\n query: customQueries.questionMasteryBySubjectTagIdWithQuestion,\n queryTitle: 'QuestionMasteryBySubjectTagId'\n },\n subjectWithQuestionBaseId: {\n query: customQueries.questionMasteryBySubjectTagIdWithQuestionBaseId,\n queryTitle: 'QuestionMasteryBySubjectTagId'\n },\n subjectWithQuestionTags: {\n query: customQueries.questionMasteryBySubjectTagIdWithQuestionTags,\n queryTitle: 'QuestionMasteryBySubjectTagId'\n },\n topic: {\n query: customQueries.questionMasteryByTopicTagId,\n queryTitle: 'QuestionMasteryByTopicTagId',\n },\n topicWithQuestion: {\n query: customQueries.questionMasteryByTopicTagIdWithQuestion,\n queryTitle: 'QuestionMasteryByTopicTagId',\n },\n test: {\n query: customQueries.questionMasteryByTestId,\n queryTitle: 'QuestionMasteryByTestId'\n },\n testSmall: {\n query: customQueries.questionMasteryByTestIdSmall,\n queryTitle: 'QuestionMasteryByTestId'\n },\n customTest: {\n query: customQueries.questionMasteryByTestIdCustomTest,\n queryTitle: 'QuestionMasteryByTestId'\n },\n customTestWithTestId: {\n query: customQueries.questionMasteryByTestIdCustomTestWithTestId,\n queryTitle: 'QuestionMasteryByTestId'\n }\n }[queryKey] || {\n query: customQueries.getQuestionMasteryByQuestionBaseId,\n queryTitle: 'GetQuestionMastery'\n }\n\n try {\n const result = await graphqlRetryHandler({query, variables: {...variables}});\n if (result.data[queryTitle]) {\n let nextToken = result.data[queryTitle].nextToken;\n while (nextToken) {\n const nextResult = await graphqlRetryHandler({query, variables: {...variables, nextToken}});\n nextToken = nextResult.data[queryTitle].nextToken;\n result.data[queryTitle].items.push(...nextResult.data[queryTitle].items);\n }\n }\n return result;\n } catch (error) {\n handleError('Error fetching question mastery', error);\n }\n}\n\nasync function getTestProgressesByWpUserId(wpUserId) {\n try {\n const result = await graphqlRetryHandler({query: customQueries.getTestProgressesByWpUserId, variables: {wpUserId}});\n\n if (result.data.getWordPressUserData) {\n let testProgressesNextToken = result.data.getWordPressUserData.testProgresses.nextToken;\n while (testProgressesNextToken) {\n const nextResult = await graphqlRetryHandler({query: customQueries.getTestProgressesByWpUserId, variables: {wpUserId, testProgressesNextToken}});\n testProgressesNextToken = nextResult.data.getWordPressUserData.testProgresses.nextToken;\n result.data.getWordPressUserData.testProgresses.items.push(...nextResult.data.getWordPressUserData.testProgresses.items);\n }\n }\n return result\n } catch (error) {\n handleError('Error getting wordpress user data', error);\n return error;\n }\n}\n\nasync function getPaginatedTestProgressesByWpUserId(wpUserId, limit, nextToken) {\n try {\n const result = await graphqlRetryHandler({query: customQueries.getTestProgressesByWpUserId, variables: {wpUserId, nextToken, limit}});\n // if (result.data.getWordPressUserData) {\n // let testProgressesNextToken = result.data.getWordPressUserData.testProgresses.nextToken;\n // while (testProgressesNextToken) {\n // const nextResult = await graphqlRetryHandler({query: customQueries.getTestProgressesByWpUserId, variables: {wpUserId, testProgressesNextToken}});\n // testProgressesNextToken = nextResult.data.getWordPressUserData.testProgresses.nextToken;\n // result.data.getWordPressUserData.testProgresses.items.push(...nextResult.data.getWordPressUserData.testProgresses.items);\n // }\n // }\n return result\n } catch (error) {\n handleError('Error getting wordpress user data', error);\n return error;\n }\n}\n\nasync function getTestProgressesByUserId(id) {\n try {\n const result = await graphqlRetryHandler({query: customQueries.getTestProgressesByUserId, variables: {id}});\n if (result.data.getUser) {\n let testProgressesNextToken = result.data.getUser.testProgresses.nextToken;\n while (testProgressesNextToken) {\n const nextResult = await graphqlRetryHandler({query: customQueries.getTestProgressesByUserId, variables: {id, testProgressesNextToken}});\n testProgressesNextToken = nextResult.data.getUser.testProgresses.nextToken;\n result.data.getUser.testProgresses.items.push(...nextResult.data.getUser.testProgresses.items);\n }\n }\n return result\n } catch (error) {\n handleError('Error getting user data', error);\n return error;\n }\n}\n\nexport async function getTestProgressIdsByUserId(id) {\n try {\n const result = await graphqlRetryHandler({query: customQueries.getTestProgressIds, variables: {id, sortDirection: 'DESC'}});\n // if (result.data.getUser) {\n // let testProgressesNextToken = result.data.getUser.testProgresses.nextToken;\n // while (testProgressesNextToken) {\n // const nextResult = await graphqlRetryHandler({query: customQueries.getTestProgressesByUserId, variables: {id, testProgressesNextToken}});\n // testProgressesNextToken = nextResult.data.getUser.testProgresses.nextToken;\n // result.data.getUser.testProgresses.items.push(...nextResult.data.getUser.testProgresses.items);\n // }\n // }\n return result\n } catch (error) {\n handleError('Error getting user data', error);\n return error;\n }\n}\n\n\nexport async function getTestProgressIdsByIdOverride(id) {\n try {\n const result = await graphqlRetryHandler({query: customQueries.getTestProgressIdsByWpUserId, variables: {wpUserId: id, sortDirection: 'DESC'}});\n // if (result.data.getUser) {\n // let testProgressesNextToken = result.data.getUser.testProgresses.nextToken;\n // while (testProgressesNextToken) {\n // const nextResult = await graphqlRetryHandler({query: customQueries.getTestProgressesByUserId, variables: {id, testProgressesNextToken}});\n // testProgressesNextToken = nextResult.data.getUser.testProgresses.nextToken;\n // result.data.getUser.testProgresses.items.push(...nextResult.data.getUser.testProgresses.items);\n // }\n // }\n return result\n } catch (error) {\n handleError('Error getting user data', error);\n return error;\n }\n}\n\nasync function getPaginatedTestProgressesByUserId(id, limit, nextToken) {\n try {\n const result = await graphqlRetryHandler({query: customQueries.getTestProgressesByUserId, variables: {id, limit, testProgressesNextToken: nextToken}});\n // if (result.data.getUser) {\n // let testProgressesNextToken = result.data.getUser.testProgresses.nextToken;\n // while (testProgressesNextToken) {\n // const nextResult = await graphqlRetryHandler({query: customQueries.getTestProgressesByUserId, variables: {id, testProgressesNextToken}});\n // testProgressesNextToken = nextResult.data.getUser.testProgresses.nextToken;\n // result.data.getUser.testProgresses.items.push(...nextResult.data.getUser.testProgresses.items);\n // }\n // }\n return result\n } catch (error) {\n handleError('Error getting user data', error);\n return error;\n }\n}\n\nasync function getFilteredBootcampTestProgresses(id, testId) {\n try {\n const result = await graphqlRetryHandler({query: customQueries.getFilteredBootcampTestProgresses, variables: {id, testId}});\n if (result.data.getUser) {\n let testProgressesNextToken = result.data.getUser.testProgresses.nextToken;\n while (testProgressesNextToken) {\n const nextResult = await graphqlRetryHandler({query: customQueries.getFilteredBootcampTestProgresses, variables: {id, testId, testProgressesNextToken}});\n testProgressesNextToken = nextResult.data.getUser.testProgresses.nextToken;\n result.data.getUser.testProgresses.items.push(...nextResult.data.getUser.testProgresses.items);\n }\n }\n return result\n } catch (error) {\n handleError('Error getting user data', error);\n return error;\n }\n}\n\nasync function getFilteredTestProgresses(wpUserId, testId) {\n try {\n const result = await graphqlRetryHandler({query: customQueries.getFilteredTestProgresses, variables: {wpUserId, testId}});\n if (result.data.getWordPressUserData) {\n let testProgressesNextToken = result.data.getWordPressUserData.testProgresses.nextToken;\n while (testProgressesNextToken) {\n const nextResult = await graphqlRetryHandler({query: customQueries.getFilteredTestProgresses, variables: {wpUserId, testId, testProgressesNextToken}});\n testProgressesNextToken = nextResult.data.getWordPressUserData.testProgresses.nextToken;\n result.data.getWordPressUserData.testProgresses.items.push(...nextResult.data.getWordPressUserData.testProgresses.items);\n }\n }\n return result\n } catch (error) {\n handleError('Error getting wordpress user data', error);\n return error;\n }\n}\n\nasync function listQuestionComments(limit=200) {\n try {\n const result = await API.graphql(graphqlOperation(queries.listQuestionComments, {limit, sortDirection: 'ASC'}));\n if (result.data.listQuestionComments) {\n let nextToken = result.data.listQuestionComments.nextToken;\n while (nextToken) {\n const nextResult = await graphqlRetryHandler({query: queries.listQuestionComments, variables: {limit, sortDirection: 'ASC', nextToken}});\n nextToken = nextResult.data.listQuestionComments.nextToken;\n result.data.listQuestionComments.items.push(...nextResult.data.listQuestionComments.items);\n }\n }\n return result\n } catch (error) {\n handleError('Error fetching question comments', error);\n return error;\n }\n}\n\nasync function getQuestionComment(id) {\n try {\n return await API.graphql(graphqlOperation(queries.getQuestionComment, {id}));\n } catch (error) {\n handleError('Error fetching question comment', error);\n return error;\n }\n}\n\nasync function createQuestionComment(input) {\n try {\n const result = await API.graphql({query: customMutations.createQuestionComment, variables: {input}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n return result\n } catch (error) {\n handleError('Error creating question comment', error);\n return error;\n }\n}\n\nasync function updateQuestionComment(input) {\n try {\n const result = await API.graphql({query: mutations.updateQuestionComment, variables: {input}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n return result;\n } catch (error) {\n handleError('Error updating question comment', error);\n return error;\n }\n}\n\nasync function deleteQuestionComment(id) {\n try {\n const result = await API.graphql({query: mutations.deleteQuestionComment, variables: {input: {id}}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n return result\n } catch (error) {\n handleError('Error deleting question comment', error);\n return error;\n }\n}\n\nasync function getUser(id, authMode='AMAZON_COGNITO_USER_POOLS') {\n try {\n return await API.graphql({query: customQueries.getUser, variables: {id}, authMode});\n } catch (error) {\n handleError('Error getting user', error);\n return error;\n }\n}\n\nasync function createUser(id, idOverride, email) {\n try {\n return await graphqlRetryHandler({query: mutations.createUser, variables: {input: {id, idOverride, email}}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch (error) {\n handleError('Error creating user', error);\n return error;\n }\n}\n\nasync function createMembership(input) {\n try {\n return await graphqlRetryHandler({\n query: mutations.createMembership,\n variables: {input},\n authMode: 'AMAZON_COGNITO_USER_POOLS'\n });\n } catch (error) {\n handleError('Error creating membership', error);\n return error;\n }\n}\n\nasync function updateMembership(input) {\n try {\n return await graphqlRetryHandler({\n query: customMutations.updateMembership,\n variables: {input},\n authMode: 'AMAZON_COGNITO_USER_POOLS'\n });\n } catch (error) {\n handleError('Error updating membership', error);\n return error;\n }\n}\n\nasync function updateUser(input) {\n try {\n return await graphqlRetryHandler({\n query: customMutations.updateUser,\n variables: {input},\n authMode: 'AMAZON_COGNITO_USER_POOLS'\n });\n } catch (error) {\n handleError('Error updating user', error);\n return error;\n }\n}\n\nasync function getPriceConfig(bootcamp) {\n\n try {\n const result = await invokeLambda('tbc-Stripe', {bootcamp, path: '/stripe/get-active-prices'});\n return result.body.activePrices;\n } catch (error) {\n console.log('error fetching price config', error);\n return {client_secret: null};\n }\n};\nasync function getPrice(priceId) {\n\n try {\n const result = await invokeLambda('tbc-Stripe', {priceId, path: '/stripe/get-price'});\n return result.body.price;\n } catch (error) {\n console.log('error fetching price config', error);\n return {client_secret: null};\n }\n};\n\nexport async function updateActivationCode(input) {\n try {\n const result = await API.graphql({query: customMutations.updateActivationCode, variables: {input}});\n return getInObj(['data', 'updateActivationCode'], result);\n } catch (error) {\n handleError('Error updating Activation Code', error);\n return null;\n }\n}\n\nexport async function getActivationCode(id) {\n try {\n const result = await API.graphql({query: customQueries.getActivationCode, variables: {id}});\n return getInObj(['data', 'getActivationCode'], result);\n } catch (error) {\n handleError('Error getting Activation Code', error);\n return null;\n }\n}\n\nasync function saveTestProgress(input) {\ntry {\n const lambdaClient = await setupLambdaClient();\n if (!lambdaClient) throw new Error('Failed to setup lambda client');\n const saveCommand = new InvokeCommand({\n FunctionName: 'saveTestProgress-tbc-2',\n Payload: new TextEncoder().encode(JSON.stringify({body: JSON.stringify(input)})),\n });\n const response = await lambdaClient.send(saveCommand);\n if (response.StatusCode !== 200) throw new Error('Failed to save test progress');\n return response;\n } catch (error) {\n try {\n await fetch('https://x7h44q3mpdubxjvpfjxwh7mure0ikjmm.lambda-url.us-east-1.on.aws', {\n method: 'POST',\n body: JSON.stringify(input),\n });\n } catch (error) {\n handleError('Error saving test progress', error);\n return;\n }\n handleError('Error saving test progress', error);\n return;\n }\n}\n\nasync function getIntercomUserAttributes(email) {\n try {\n const {body} = await API.post('tbcPublicAPI', '/intercom/users', {\n body: {\n email\n }\n });\n\n return body.user;\n } catch (error) {\n console.log('error fetching intercom user attributes', JSON.stringify(error));\n return {custom_attributes: null};\n }\n};\n\nasync function getQuestionProgressesFromS3(uploadKey) {\n try {\n // check for existing data in S3\n const existingDataFetch = await Storage.get(uploadKey, {\n download: true,\n cacheControl: 'no-cache',\n contentType: 'application/json',\n });\n\n const existingProgresses = await existingDataFetch.Body?.text();\n\n if (existingProgresses) return JSON.parse(existingProgresses);\n\n } catch (e) {\n console.log('error fetching from s3', e);\n }\n\n}\n\nasync function getQuestionAnswerData(questionId, uploadKey, formatter) {\n if (!questionId) return;\n\n const answerMap = {\n 0: 'A',\n 1: 'B',\n 2: 'C',\n 3: 'D',\n 4: 'E',\n 5: 'F',\n 6: 'G',\n 7: 'H',\n };\n\n try {\n const fetchAndParseAnswerData = async () => {\n try {\n const {data: {getQuestionBase: {progresses}}} = await getQuestionBaseProgresses(questionId, 3000);\n\n if (!progresses?.items?.length) {\n return {};\n } else if (typeof formatter === 'function') {\n return formatter(progresses?.items);\n }\n\n const answerData = progresses?.items?.reduce((acc, progress) => {\n if (progress.id.startsWith('tracking#')) return acc;\n let answerChoice = answerMap[progress.selectedAnswerIndex];\n\n if (progress.didSelectCorrectAnswer) {\n answerChoice += ' (CORRECT)';\n }\n\n if (!answerChoice) return acc;\n\n return {\n ...acc,\n total: {\n ...acc.total,\n [answerChoice]: acc.total?.[answerChoice] ? acc.total?.[answerChoice] + 1 : 1\n },\n [progress.questionRevisionId]: {\n ...(acc[progress.questionRevisionId] || []),\n [answerChoice]: acc?.[progress.questionRevisionId]?.[answerChoice] ? acc?.[progress.questionRevisionId]?.[answerChoice] + 1 : 1\n }\n }\n }, {total: {}});\n\n return answerData;\n\n } catch (error) {\n // raise error to prevent s3 storage from taking place\n throw new Error();\n }\n };\n\n const data = await asyncFetchWithS3Cache(uploadKey, moment().subtract(1, 'days'), fetchAndParseAnswerData);\n\n return data;\n\n } catch (error) {\n return {};\n }\n}\n\nasync function getClassroomCourseBlockCounts (bootcamp, testsByClassroom) {\n const classroomCourseBlockCountsStorageKey = `json/${bootcamp}/lambdaClassroomCourseBlockCounts.json`;\n const fetchCounts = async () => {\n const classroomCourseBlockCounts = await Object.keys(testsByClassroom).reduce(async (acc, route) => {\n try {\n const blockCount = await testsByClassroom[route].reduce(async (acc, id) => {\n const testConfig = await getTest(id, 'getTestNoQuestions');\n const blocks = getInObj(['data', 'getTest', 'blockConnections', 'items'], testConfig, []);\n return (await acc) + blocks?.length - 2;\n }, 0);\n\n return {\n ...(await acc),\n [route]: blockCount\n }\n } catch (e) {\n return await acc\n }\n }, {});\n\n if ((bootcamp === 'med-school' && testsByClassroom['general-chemistry']) || Object.keys(classroomCourseBlockCounts).length === 0 || (Object.keys(testsByClassroom)?.length !== Object.keys(classroomCourseBlockCounts)?.length)) throw new Error('no keys = no count = no storage');\n\n return {classroomCourseBlockCounts, storedAt: moment()}\n }\n\n try {\n const result = await asyncFetchWithS3Cache(classroomCourseBlockCountsStorageKey, moment().subtract(7, 'days'), fetchCounts);\n\n if (result && Object.keys(result?.classroomCourseBlockCounts).length === 0) {\n await Storage.remove(classroomCourseBlockCountsStorageKey);\n }\n return result;\n } catch (e) {\n return {courseBlockCounts: {}}\n }\n}\n\nasync function getClassroomQuestionCounts (bootcamp, testsByClassroom, plusTests=false) {\n const classroomQuestionCountsStorageKey = `json/${bootcamp}/lambdaClassroomQuestionCounts${plusTests ? 'Plus' : ''}.json`;\n const fetchCounts = async () => {\n const classroomQuestionCounts = await Object.keys(testsByClassroom).reduce(async (acc, route) => {\n try {\n const questionCount = await testsByClassroom[route].reduce(async (acc, id) => {\n const testConfig = await getTest(id, 'getTestConfig');\n const questionCount = getInObj(['data', 'getTest', 'config', 'questionCount'], testConfig, 0);\n return (await acc) + questionCount\n }, 0);\n return {\n ...(await acc),\n [route]: questionCount\n }\n } catch (e) {\n return await acc\n }\n }, {});\n\n if (Object.keys(classroomQuestionCounts).length === 0 || (Object.keys(testsByClassroom)?.length !== Object.keys(classroomQuestionCounts)?.length)) throw new Error('no keys = no count = no storage');\n\n return {classroomQuestionCounts, storedAt: moment()}\n }\n try {\n const result = await Storage.get(classroomQuestionCountsStorageKey, {\n download: true,\n cacheControl: 'no-cache',\n });\n return await new Response(result.Body).json();\n // const result = await asyncFetchWithS3Cache(classroomQuestionCountsStorageKey, moment().subtract(7, 'days'), fetchCounts);\n //\n // if (result && Object.keys(result?.classroomQuestionCounts).length === 0) {\n // await Storage.remove(classroomQuestionCountsStorageKey);\n // }\n // return result;\n } catch (e) {\n console.log(e);\n return {classroomQuestionCounts: {}}\n }\n}\n\nexport async function getReadinessExamAndCaseStudySubjectCounts () {\n try {\n const storageKey = `json/nclex/lambdaSubjectQuestionCounts.json`;\n const result = await Storage.get(storageKey, {\n download: true,\n cacheControl: 'no-cache',\n });\n return await new Response(result.Body).json();\n } catch (error) {\n console.error('Error fetching readiness exam subject counts', error);\n return {};\n }\n}\n\nexport async function getNCLEXReadinessExamAndCaseStudySubjectCounts () {\n try {\n const storageKey = `json/nclex/lambdaSubjectAndTopicQuestionCounts.json`;\n const result = await Storage.get(storageKey, {\n download: true,\n cacheControl: 'no-cache',\n });\n return await new Response(result.Body).json();\n } catch (error) {\n console.error('Error fetching readiness exam subject counts', error);\n return {};\n }\n}\n\nexport async function getINBDESimExamAndCaseSetSubjectTopicCounts(){\n try {\n const storageKey = `json/inbde/lambdaCaseSetSimExamTopicCounts.json`;\n const result = await Storage.get(storageKey, {\n download: true,\n cacheControl: 'no-cache',\n });\n return await new Response(result.Body).json();\n } catch (error) {\n console.error('Error fetching readiness exam subject counts', error);\n return {};\n }\n}\n\n\nasync function getMembership(id) {\n try {\n return await API.graphql(graphqlOperation(queries.getMembership, {id}));\n } catch (error) {\n handleError('Error fetching membership', error);\n return error;\n }\n}\n\nexport async function trackQuestionPerformance(DEFAULT_USER_ID, subjectId, topicId, addAttempts, addCorrect, testProgressBlockProgressesId) {\n const blockProgressQuestionProgressesId = `${DEFAULT_USER_ID}#${subjectId}#${topicId}`;\n try {\n // query blockProgress\n const result = await API.graphql(graphqlOperation(customQueries.getBlockProgress, {\n id: blockProgressQuestionProgressesId\n }));\n const {status} = result.data.getBlockProgress;\n const {attempts, correct} = JSON.parse(status || '{\"attempts\": 0, \"correct\": 0}');\n await API.graphql(graphqlOperation(customMutations.updateBlockProgress, {\n input: {\n id: blockProgressQuestionProgressesId,\n status: JSON.stringify({\n attempts: attempts + addAttempts,\n correct: correct + addCorrect\n })\n }\n }))\n } catch (error) {\n await API.graphql(graphqlOperation(customMutations.createBlockProgress, {\n input: {\n id: blockProgressQuestionProgressesId,\n blockId: 'null',\n testProgressBlockProgressesId,\n status: JSON.stringify({\n attempts: addAttempts,\n correct: addCorrect\n })\n }\n }))\n }\n}\n\nexport async function trackFirstQuestionAttempt(username, testId, questionId, questionRevisionId, questionProgress) {\n try {\n const blockProgressId = `tracking#${username}#${testId}`;\n const qbankProgressId = `tracking#${username}#${testId}#${questionId}`;\n\n await createQuestionProgress(\n qbankProgressId,\n blockProgressId,\n questionId,\n questionRevisionId,\n questionProgress,\n questionProgress.index,\n );\n } catch (error) {\n console.log('can ignore this error', error);\n }\n}\n\n// TODO update here for nclex\nexport async function trackNCLEXQuizProgressPerformance (userId, quizProgress, testProgressBlockProgressesId) {\n const allQuestions = quizProgress.reduce((acc, {questions}) => !questions ? acc : [...acc, ...questions.reduce((acc, {question, answerState}) => !question || !answerState?.answerState ? acc : [...acc, {question, answerState}], [])], []);\n // reduce allQuestions into an object keyed by subject & topic tags\n const performanceByTag = allQuestions.reduce((acc, {question, answerState}) => {\n const {tags} = question;\n const {tag: {id: subject}} = (tags.items || []).find(({tag}) => tag.contentType === 'nclexSubject') || {};\n const {tag: {id: topic}} = (tags.items || []).find(({tag}) => !!tag.test && !!tag?.subject && !!tag.system && !tag.topic && !tag.contentType) || {};\n const subjectTopic = `${subject}#${topic}`;\n const {attempts, correct} = acc[subjectTopic] || {attempts: 0, correct: 0};\n return {\n ...acc,\n [subjectTopic]: {attempts: attempts + answerState.maxScore, correct: correct + answerState.score}\n };\n }, {});\n\n for (const [tag, {attempts, correct}] of Object.entries(performanceByTag)) {\n const [subject, topic] = tag.split('#');\n await trackQuestionPerformance(userId, subject, topic, attempts, correct, testProgressBlockProgressesId);\n }\n}\n\n// TODO update here for nclex\nexport async function trackQuizProgressPerformance (userId, quizProgress, testProgressBlockProgressesId) {\n const allQuestions = quizProgress.reduce((acc, {questions}) => !questions ? acc : [...acc, ...questions.reduce((acc, {question, didSelectCorrectAnswer, selectedAnswerIndex}) => !question || selectedAnswerIndex == -1 ? acc : [...acc, {question, didSelectCorrectAnswer}], [])], []);\n // reduce allQuestions into an object keyed by subject & topic tags\n const performanceByTag = allQuestions.reduce((acc, {didSelectCorrectAnswer, question}) => {\n const {tags} = question;\n const {tag: {id: subject}} = (tags.items || []).find(({tag}) => !!tag.subject && !tag.topic) || {};\n const {tag: {id: topic}} = (tags.items || []).find(({tag}) => !!tag.topic) || {};\n const subjectTopic = `${subject}#${topic}`;\n const {attempts, correct} = acc[subjectTopic] || {attempts: 0, correct: 0};\n return {\n ...acc,\n [subjectTopic]: {attempts: attempts + 1, correct: correct + (didSelectCorrectAnswer ? 1 : 0)}\n };\n }, {});\n\n for (const [tag, {attempts, correct}] of Object.entries(performanceByTag)) {\n const [subject, topic] = tag.split('#');\n await trackQuestionPerformance(userId, subject, topic, attempts, correct, testProgressBlockProgressesId);\n }\n}\n\n\nasync function getQuestionData(bootcamp) {\n if (!['med-school', 'inbde', 'nclex', 'anatomy'].includes(bootcamp)) return {}\n\n const storageKey = `json/${bootcamp}/lambdaQuestionConfigIdsIndexedByTest.json`;\n\n try {\n const fetchConfigQuestionIds = await fetch(`https://testtube6dca237224ff44ca973cd2a6dfb779e3-tbc.s3.amazonaws.com/public/${storageKey}`, {cache: \"no-store\"});\n const configQuestionIds = await fetchConfigQuestionIds.json();\n\n //NOTE intermittent formatting step - this will be done in the cloud before release\n const indexedByTest = Object.entries(configQuestionIds)?.reduce((acc, curr) => ({\n ...acc,\n [curr[0]]: curr[1].reduce((acc, curr) => ({\n ...acc,\n [curr]: true\n }), {})\n }), {})\n\n return indexedByTest;\n } catch (error) {\n console.log('error getting question counts', error);\n return {};\n }\n}\n\nexport {\n handleError,\n getQuestionData,\n getQuestionAnswerData,\n getQuestionComment,\n getContentQueue,\n getPriceConfig,\n getPrice,\n getTag,\n listTags,\n listExams,\n listQuestions,\n searchQuestions,\n fetchNewQuestionBase,\n getQuestionBase,\n getQuestionBaseTestBlocks,\n getQuestionBaseTagsOnly,\n getQuestionBaseWithFaq,\n getQuestionBaseWithFaqOnly,\n updateQuestionBase,\n updateQuestionTags,\n createQuestionRevision,\n createAnatomyQuestionRevision,\n createTestBlock,\n deleteQuestionAndConnections,\n getExam,\n createExam,\n updateExam,\n deleteExam,\n createExamComponent,\n deleteExamComponent,\n updateExamComponentOrder,\n getTest,\n createTest,\n listTests,\n searchBlocks,\n updateTest,\n updateTestBlock,\n getTestBlock,\n getTestBlockWithQuestionIds,\n deleteTest,\n createTestBlockConnection,\n updateTestBlockConnection,\n deleteTestBlockConnection,\n createQuestionConnection,\n deleteQuestionConnection,\n updateQuestionConnectionOrder,\n queryVimeoApi,\n createTestProgress,\n createBlockProgress,\n getBlockProgress,\n updateBlockProgress,\n createQuestionProgress,\n updateQuestionProgress,\n getWordPressUserData,\n getTestProgressesByWpUserId,\n getPaginatedTestProgressesByWpUserId,\n getTestProgressesByUserId,\n getPaginatedTestProgressesByUserId,\n getTestProgress,\n getTestProgressCount,\n createWordPressUserData,\n createTestProgressSubscription,\n updateBlockProgressSubscription,\n updateQuestionProgressSubscription,\n createQuestionMastery,\n updateQuestionMastery,\n getAllQuestionMastery,\n getQuestionMastery,\n loadMastery,\n getQuestionMasteryByWpUserId,\n getAllQuestionMasteryIdsByUserId,\n getAllQuestionMasteryIdsTagsByUserId,\n getQuestionMasteryWithQuestionsByWpUserId,\n getQuestionMasteryWithQuestionTagsByWpUserId,\n getQuestionMasteryByQuestionId,\n getQuestionMasteryByQuestionIdForFixing,\n listQuestionComments,\n createQuestionComment,\n updateQuestionComment,\n deleteQuestionComment,\n createTag,\n updateTag,\n getFilteredBootcampTestProgresses,\n getFilteredTestProgresses,\n getUser,\n createUser,\n createMembership,\n updateMembership,\n getTestProgressByUserIdHashTestId,\n getTestProgressByUserIdHashTestIdForScoring,\n getAllTestProgressByUserIdHashTestId,\n getQuestionBaseProgresses,\n getQuestionForTest,\n getQuestionBaseWithConnections,\n listTestBlockConnections,\n listQuestionConnections,\n saveTestProgress,\n searchUsers,\n updateUser,\n getIntercomUserAttributes,\n getAllQuestionMasteryQuestionsByUserId,\n getClassroomQuestionCounts,\n getClassroomCourseBlockCounts,\n getRevision,\n getMembership,\n}\n","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const queryVimeoApi = /* GraphQL */ `\n mutation QueryVimeoApi($vimeoId: String, $skipCache: Boolean) {\n queryVimeoApi(vimeoId: $vimeoId, skipCache: $skipCache)\n }\n`;\nexport const saveTestProgress = /* GraphQL */ `\n mutation SaveTestProgress(\n $quizProgress: String\n $testProgressId: ID\n $testId: ID\n $userId: ID\n ) {\n saveTestProgress(\n quizProgress: $quizProgress\n testProgressId: $testProgressId\n testId: $testId\n userId: $userId\n )\n }\n`;\nexport const deleteTest = /* GraphQL */ `\n mutation DeleteTest($input: DeleteTestInput!) {\n deleteTest(input: $input) {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n }\n`;\nexport const deleteTestBlock = /* GraphQL */ `\n mutation DeleteTestBlock($input: DeleteTestBlockInput!) {\n deleteTestBlock(input: $input) {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n }\n`;\nexport const deleteQuestionBase = /* GraphQL */ `\n mutation DeleteQuestionBase($input: DeleteQuestionBaseInput!) {\n deleteQuestionBase(input: $input) {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n`;\nexport const createExam = /* GraphQL */ `\n mutation CreateExam($input: CreateExamInput!) {\n createExam(input: $input) {\n id\n examComponents {\n items {\n id\n index\n examComponentQuestionId\n questionRevisionId\n extra {\n index\n renderType\n contents\n }\n exam {\n id\n examComponents {\n items {\n id\n index\n examComponentQuestionId\n questionRevisionId\n extra {\n index\n renderType\n contents\n }\n exam {\n id\n createdAt\n title\n active\n updatedAt\n }\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n createdAt\n title\n active\n updatedAt\n }\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n title\n active\n updatedAt\n }\n }\n`;\nexport const updateExam = /* GraphQL */ `\n mutation UpdateExam($input: UpdateExamInput!) {\n updateExam(input: $input) {\n id\n examComponents {\n items {\n id\n index\n examComponentQuestionId\n questionRevisionId\n extra {\n index\n renderType\n contents\n }\n exam {\n id\n examComponents {\n items {\n id\n index\n examComponentQuestionId\n questionRevisionId\n extra {\n index\n renderType\n contents\n }\n exam {\n id\n createdAt\n title\n active\n updatedAt\n }\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n createdAt\n title\n active\n updatedAt\n }\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n title\n active\n updatedAt\n }\n }\n`;\nexport const deleteExam = /* GraphQL */ `\n mutation DeleteExam($input: DeleteExamInput!) {\n deleteExam(input: $input) {\n id\n examComponents {\n items {\n id\n index\n examComponentQuestionId\n questionRevisionId\n extra {\n index\n renderType\n contents\n }\n exam {\n id\n examComponents {\n items {\n id\n index\n examComponentQuestionId\n questionRevisionId\n extra {\n index\n renderType\n contents\n }\n exam {\n id\n createdAt\n title\n active\n updatedAt\n }\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n createdAt\n title\n active\n updatedAt\n }\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n title\n active\n updatedAt\n }\n }\n`;\nexport const createExamComponent = /* GraphQL */ `\n mutation CreateExamComponent($input: CreateExamComponentInput!) {\n createExamComponent(input: $input) {\n id\n index\n examComponentQuestionId\n questionRevisionId\n extra {\n index\n renderType\n contents\n }\n exam {\n id\n examComponents {\n items {\n id\n index\n examComponentQuestionId\n questionRevisionId\n extra {\n index\n renderType\n contents\n }\n exam {\n id\n examComponents {\n items {\n id\n index\n examComponentQuestionId\n questionRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n title\n active\n updatedAt\n }\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n title\n active\n updatedAt\n }\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const updateExamComponent = /* GraphQL */ `\n mutation UpdateExamComponent($input: UpdateExamComponentInput!) {\n updateExamComponent(input: $input) {\n id\n index\n examComponentQuestionId\n questionRevisionId\n extra {\n index\n renderType\n contents\n }\n exam {\n id\n examComponents {\n items {\n id\n index\n examComponentQuestionId\n questionRevisionId\n extra {\n index\n renderType\n contents\n }\n exam {\n id\n examComponents {\n items {\n id\n index\n examComponentQuestionId\n questionRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n title\n active\n updatedAt\n }\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n title\n active\n updatedAt\n }\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const deleteExamComponent = /* GraphQL */ `\n mutation DeleteExamComponent($input: DeleteExamComponentInput!) {\n deleteExamComponent(input: $input) {\n id\n index\n examComponentQuestionId\n questionRevisionId\n extra {\n index\n renderType\n contents\n }\n exam {\n id\n examComponents {\n items {\n id\n index\n examComponentQuestionId\n questionRevisionId\n extra {\n index\n renderType\n contents\n }\n exam {\n id\n examComponents {\n items {\n id\n index\n examComponentQuestionId\n questionRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n title\n active\n updatedAt\n }\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n title\n active\n updatedAt\n }\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const createTagJoin = /* GraphQL */ `\n mutation CreateTagJoin($input: CreateTagJoinInput!) {\n createTagJoin(input: $input) {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n }\n`;\nexport const updateTagJoin = /* GraphQL */ `\n mutation UpdateTagJoin($input: UpdateTagJoinInput!) {\n updateTagJoin(input: $input) {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n }\n`;\nexport const deleteTagJoin = /* GraphQL */ `\n mutation DeleteTagJoin($input: DeleteTagJoinInput!) {\n deleteTagJoin(input: $input) {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n }\n`;\nexport const createContentQueue = /* GraphQL */ `\n mutation CreateContentQueue($input: CreateContentQueueInput!) {\n createContentQueue(input: $input) {\n name\n startDate\n currentIndex\n contentType\n content\n createdAt\n updatedAt\n }\n }\n`;\nexport const updateContentQueue = /* GraphQL */ `\n mutation UpdateContentQueue($input: UpdateContentQueueInput!) {\n updateContentQueue(input: $input) {\n name\n startDate\n currentIndex\n contentType\n content\n createdAt\n updatedAt\n }\n }\n`;\nexport const deleteContentQueue = /* GraphQL */ `\n mutation DeleteContentQueue($input: DeleteContentQueueInput!) {\n deleteContentQueue(input: $input) {\n name\n startDate\n currentIndex\n contentType\n content\n createdAt\n updatedAt\n }\n }\n`;\nexport const createWordPressUserData = /* GraphQL */ `\n mutation CreateWordPressUserData($input: CreateWordPressUserDataInput!) {\n createWordPressUserData(input: $input) {\n wpUserId\n testProgresses {\n items {\n id\n testId\n userIdHashTestId\n blockProgresses {\n items {\n id\n blockId\n questionProgresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n highlights\n status\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n wordPressUserDataTestProgressesId\n updatedAt\n }\n nextToken\n }\n questionMastery {\n items {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n updatedAt\n }\n }\n`;\nexport const updateWordPressUserData = /* GraphQL */ `\n mutation UpdateWordPressUserData($input: UpdateWordPressUserDataInput!) {\n updateWordPressUserData(input: $input) {\n wpUserId\n testProgresses {\n items {\n id\n testId\n userIdHashTestId\n blockProgresses {\n items {\n id\n blockId\n questionProgresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n highlights\n status\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n wordPressUserDataTestProgressesId\n updatedAt\n }\n nextToken\n }\n questionMastery {\n items {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n updatedAt\n }\n }\n`;\nexport const deleteWordPressUserData = /* GraphQL */ `\n mutation DeleteWordPressUserData($input: DeleteWordPressUserDataInput!) {\n deleteWordPressUserData(input: $input) {\n wpUserId\n testProgresses {\n items {\n id\n testId\n userIdHashTestId\n blockProgresses {\n items {\n id\n blockId\n questionProgresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n highlights\n status\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n wordPressUserDataTestProgressesId\n updatedAt\n }\n nextToken\n }\n questionMastery {\n items {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n updatedAt\n }\n }\n`;\nexport const createBootcampUserData = /* GraphQL */ `\n mutation CreateBootcampUserData($input: CreateBootcampUserDataInput!) {\n createBootcampUserData(input: $input) {\n bootcampUserId\n testProgresses {\n items {\n id\n testId\n userIdHashTestId\n blockProgresses {\n items {\n id\n blockId\n questionProgresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n highlights\n status\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n wordPressUserDataTestProgressesId\n updatedAt\n }\n nextToken\n }\n questionMastery {\n items {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n updatedAt\n }\n }\n`;\nexport const updateBootcampUserData = /* GraphQL */ `\n mutation UpdateBootcampUserData($input: UpdateBootcampUserDataInput!) {\n updateBootcampUserData(input: $input) {\n bootcampUserId\n createdAt\n updatedAt\n }\n }\n`;\nexport const deleteBootcampUserData = /* GraphQL */ `\n mutation DeleteBootcampUserData($input: DeleteBootcampUserDataInput!) {\n deleteBootcampUserData(input: $input) {\n bootcampUserId\n createdAt\n updatedAt\n }\n }\n`;\nexport const createQuestionMastery = /* GraphQL */ `\n mutation CreateQuestionMastery($input: CreateQuestionMasteryInput!) {\n createQuestionMastery(input: $input) {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const updateQuestionMastery = /* GraphQL */ `\n mutation UpdateQuestionMastery($input: UpdateQuestionMasteryInput!) {\n updateQuestionMastery(input: $input) {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const deleteQuestionMastery = /* GraphQL */ `\n mutation DeleteQuestionMastery($input: DeleteQuestionMasteryInput!) {\n deleteQuestionMastery(input: $input) {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const createTestProgress = /* GraphQL */ `\n mutation CreateTestProgress($input: CreateTestProgressInput!) {\n createTestProgress(input: $input) {\n id\n testId\n userIdHashTestId\n blockProgresses {\n items {\n id\n blockId\n questionProgresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n highlights\n status\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n wordPressUserDataTestProgressesId\n updatedAt\n }\n }\n`;\nexport const updateTestProgress = /* GraphQL */ `\n mutation UpdateTestProgress($input: UpdateTestProgressInput!) {\n updateTestProgress(input: $input) {\n id\n testId\n userIdHashTestId\n blockProgresses {\n items {\n id\n blockId\n questionProgresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n highlights\n status\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n wordPressUserDataTestProgressesId\n updatedAt\n }\n }\n`;\nexport const deleteTestProgress = /* GraphQL */ `\n mutation DeleteTestProgress($input: DeleteTestProgressInput!) {\n deleteTestProgress(input: $input) {\n id\n testId\n userIdHashTestId\n blockProgresses {\n items {\n id\n blockId\n questionProgresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n highlights\n status\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n wordPressUserDataTestProgressesId\n updatedAt\n }\n }\n`;\nexport const createBlockProgress = /* GraphQL */ `\n mutation CreateBlockProgress($input: CreateBlockProgressInput!) {\n createBlockProgress(input: $input) {\n id\n blockId\n questionProgresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n highlights\n status\n index\n createdAt\n updatedAt\n }\n }\n`;\nexport const updateBlockProgress = /* GraphQL */ `\n mutation UpdateBlockProgress($input: UpdateBlockProgressInput!) {\n updateBlockProgress(input: $input) {\n id\n blockId\n questionProgresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n highlights\n status\n index\n createdAt\n updatedAt\n }\n }\n`;\nexport const deleteBlockProgress = /* GraphQL */ `\n mutation DeleteBlockProgress($input: DeleteBlockProgressInput!) {\n deleteBlockProgress(input: $input) {\n id\n blockId\n questionProgresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n highlights\n status\n index\n createdAt\n updatedAt\n }\n }\n`;\nexport const createQuestionProgress = /* GraphQL */ `\n mutation CreateQuestionProgress($input: CreateQuestionProgressInput!) {\n createQuestionProgress(input: $input) {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const updateQuestionProgress = /* GraphQL */ `\n mutation UpdateQuestionProgress($input: UpdateQuestionProgressInput!) {\n updateQuestionProgress(input: $input) {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const deleteQuestionProgress = /* GraphQL */ `\n mutation DeleteQuestionProgress($input: DeleteQuestionProgressInput!) {\n deleteQuestionProgress(input: $input) {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const updateQuestionTags = /* GraphQL */ `\n mutation UpdateQuestionTags($questionBaseId: ID, $tagIds: String) {\n updateQuestionTags(questionBaseId: $questionBaseId, tagIds: $tagIds)\n }\n`;\nexport const addUniqueQuestionToExam = /* GraphQL */ `\n mutation AddUniqueQuestionToExam($examId: ID, $questionId: ID) {\n addUniqueQuestionToExam(examId: $examId, questionId: $questionId)\n }\n`;\nexport const addUniqueQuestionToTestBlock = /* GraphQL */ `\n mutation AddUniqueQuestionToTestBlock($testBlockId: ID, $questionId: ID) {\n addUniqueQuestionToTestBlock(\n testBlockId: $testBlockId\n questionId: $questionId\n )\n }\n`;\nexport const updateQuestionConnectionOrder = /* GraphQL */ `\n mutation UpdateQuestionConnectionOrder(\n $questionConnectionIndexPairs: String\n ) {\n updateQuestionConnectionOrder(\n questionConnectionIndexPairs: $questionConnectionIndexPairs\n )\n }\n`;\nexport const deleteQuestion = /* GraphQL */ `\n mutation DeleteQuestion($questionBaseId: String) {\n deleteQuestion(questionBaseId: $questionBaseId)\n }\n`;\nexport const createUser = /* GraphQL */ `\n mutation CreateUser($input: CreateUserInput!) {\n createUser(input: $input) {\n id\n email\n idOverride\n testProgresses {\n items {\n id\n testId\n userIdHashTestId\n blockProgresses {\n items {\n id\n blockId\n questionProgresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n highlights\n status\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n wordPressUserDataTestProgressesId\n updatedAt\n }\n nextToken\n }\n questionMastery {\n items {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n updatedAt\n memberships {\n items {\n id\n productId\n groups\n startDate\n duration\n status\n userMembershipsId\n type\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n`;\nexport const updateUser = /* GraphQL */ `\n mutation UpdateUser($input: UpdateUserInput!) {\n updateUser(input: $input) {\n id\n email\n idOverride\n testProgresses {\n items {\n id\n testId\n userIdHashTestId\n blockProgresses {\n items {\n id\n blockId\n questionProgresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n highlights\n status\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n wordPressUserDataTestProgressesId\n updatedAt\n }\n nextToken\n }\n questionMastery {\n items {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n updatedAt\n memberships {\n items {\n id\n productId\n groups\n startDate\n duration\n status\n userMembershipsId\n type\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n`;\nexport const deleteUser = /* GraphQL */ `\n mutation DeleteUser($input: DeleteUserInput!) {\n deleteUser(input: $input) {\n id\n email\n idOverride\n testProgresses {\n items {\n id\n testId\n userIdHashTestId\n blockProgresses {\n items {\n id\n blockId\n questionProgresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n highlights\n status\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n wordPressUserDataTestProgressesId\n updatedAt\n }\n nextToken\n }\n questionMastery {\n items {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n updatedAt\n memberships {\n items {\n id\n productId\n groups\n startDate\n duration\n status\n userMembershipsId\n type\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n`;\nexport const createMembership = /* GraphQL */ `\n mutation CreateMembership($input: CreateMembershipInput!) {\n createMembership(input: $input) {\n id\n productId\n groups\n startDate\n duration\n status\n userMembershipsId\n type\n createdAt\n updatedAt\n }\n }\n`;\nexport const updateMembership = /* GraphQL */ `\n mutation UpdateMembership($input: UpdateMembershipInput!) {\n updateMembership(input: $input) {\n id\n productId\n groups\n startDate\n duration\n status\n userMembershipsId\n type\n createdAt\n updatedAt\n }\n }\n`;\nexport const deleteMembership = /* GraphQL */ `\n mutation DeleteMembership($input: DeleteMembershipInput!) {\n deleteMembership(input: $input) {\n id\n productId\n groups\n startDate\n duration\n status\n userMembershipsId\n type\n createdAt\n updatedAt\n }\n }\n`;\nexport const createUserInteraction = /* GraphQL */ `\n mutation CreateUserInteraction($input: CreateUserInteractionInput!) {\n createUserInteraction(input: $input) {\n id\n userId\n value\n createdAt\n updatedAt\n }\n }\n`;\nexport const updateUserInteraction = /* GraphQL */ `\n mutation UpdateUserInteraction($input: UpdateUserInteractionInput!) {\n updateUserInteraction(input: $input) {\n id\n userId\n value\n createdAt\n updatedAt\n }\n }\n`;\nexport const deleteUserInteraction = /* GraphQL */ `\n mutation DeleteUserInteraction($input: DeleteUserInteractionInput!) {\n deleteUserInteraction(input: $input) {\n id\n userId\n value\n createdAt\n updatedAt\n }\n }\n`;\nexport const createTest = /* GraphQL */ `\n mutation CreateTest($input: CreateTestInput!) {\n createTest(input: $input) {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n }\n`;\nexport const updateTest = /* GraphQL */ `\n mutation UpdateTest($input: UpdateTestInput!) {\n updateTest(input: $input) {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n }\n`;\nexport const createTestBlockConnection = /* GraphQL */ `\n mutation CreateTestBlockConnection($input: CreateTestBlockConnectionInput!) {\n createTestBlockConnection(input: $input) {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const updateTestBlockConnection = /* GraphQL */ `\n mutation UpdateTestBlockConnection($input: UpdateTestBlockConnectionInput!) {\n updateTestBlockConnection(input: $input) {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const deleteTestBlockConnection = /* GraphQL */ `\n mutation DeleteTestBlockConnection($input: DeleteTestBlockConnectionInput!) {\n deleteTestBlockConnection(input: $input) {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const createTestBlock = /* GraphQL */ `\n mutation CreateTestBlock($input: CreateTestBlockInput!) {\n createTestBlock(input: $input) {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n }\n`;\nexport const updateTestBlock = /* GraphQL */ `\n mutation UpdateTestBlock($input: UpdateTestBlockInput!) {\n updateTestBlock(input: $input) {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n }\n`;\nexport const createQuestionConnection = /* GraphQL */ `\n mutation CreateQuestionConnection($input: CreateQuestionConnectionInput!) {\n createQuestionConnection(input: $input) {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const updateQuestionConnection = /* GraphQL */ `\n mutation UpdateQuestionConnection($input: UpdateQuestionConnectionInput!) {\n updateQuestionConnection(input: $input) {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const deleteQuestionConnection = /* GraphQL */ `\n mutation DeleteQuestionConnection($input: DeleteQuestionConnectionInput!) {\n deleteQuestionConnection(input: $input) {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const createQuestionBase = /* GraphQL */ `\n mutation CreateQuestionBase($input: CreateQuestionBaseInput!) {\n createQuestionBase(input: $input) {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n`;\nexport const updateQuestionBase = /* GraphQL */ `\n mutation UpdateQuestionBase($input: UpdateQuestionBaseInput!) {\n updateQuestionBase(input: $input) {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n`;\nexport const createQuestionComment = /* GraphQL */ `\n mutation CreateQuestionComment($input: CreateQuestionCommentInput!) {\n createQuestionComment(input: $input) {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n }\n`;\nexport const updateQuestionComment = /* GraphQL */ `\n mutation UpdateQuestionComment($input: UpdateQuestionCommentInput!) {\n updateQuestionComment(input: $input) {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n }\n`;\nexport const deleteQuestionComment = /* GraphQL */ `\n mutation DeleteQuestionComment($input: DeleteQuestionCommentInput!) {\n deleteQuestionComment(input: $input) {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n }\n`;\nexport const createQuestionRevision = /* GraphQL */ `\n mutation CreateQuestionRevision($input: CreateQuestionRevisionInput!) {\n createQuestionRevision(input: $input) {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n }\n`;\nexport const updateQuestionRevision = /* GraphQL */ `\n mutation UpdateQuestionRevision($input: UpdateQuestionRevisionInput!) {\n updateQuestionRevision(input: $input) {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n }\n`;\nexport const deleteQuestionRevision = /* GraphQL */ `\n mutation DeleteQuestionRevision($input: DeleteQuestionRevisionInput!) {\n deleteQuestionRevision(input: $input) {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n }\n`;\nexport const createTag = /* GraphQL */ `\n mutation CreateTag($input: CreateTagInput!) {\n createTag(input: $input) {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n`;\nexport const updateTag = /* GraphQL */ `\n mutation UpdateTag($input: UpdateTagInput!) {\n updateTag(input: $input) {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n`;\nexport const deleteTag = /* GraphQL */ `\n mutation DeleteTag($input: DeleteTagInput!) {\n deleteTag(input: $input) {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n`;\n","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const getTestFromCache = /* GraphQL */ `\n query GetTestFromCache($id: ID!) {\n getTestFromCache(id: $id) {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n }\n`;\nexport const getExam = /* GraphQL */ `\n query GetExam($id: ID!) {\n getExam(id: $id) {\n id\n examComponents {\n items {\n id\n index\n examComponentQuestionId\n questionRevisionId\n extra {\n index\n renderType\n contents\n }\n exam {\n id\n examComponents {\n items {\n id\n index\n examComponentQuestionId\n questionRevisionId\n extra {\n index\n renderType\n contents\n }\n exam {\n id\n createdAt\n title\n active\n updatedAt\n }\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n createdAt\n title\n active\n updatedAt\n }\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n title\n active\n updatedAt\n }\n }\n`;\nexport const listExams = /* GraphQL */ `\n query ListExams(\n $filter: ModelExamFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listExams(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n examComponents {\n items {\n id\n index\n examComponentQuestionId\n questionRevisionId\n extra {\n index\n renderType\n contents\n }\n exam {\n id\n examComponents {\n items {\n id\n index\n examComponentQuestionId\n questionRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n title\n active\n updatedAt\n }\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n title\n active\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const getExamComponent = /* GraphQL */ `\n query GetExamComponent($id: ID!) {\n getExamComponent(id: $id) {\n id\n index\n examComponentQuestionId\n questionRevisionId\n extra {\n index\n renderType\n contents\n }\n exam {\n id\n examComponents {\n items {\n id\n index\n examComponentQuestionId\n questionRevisionId\n extra {\n index\n renderType\n contents\n }\n exam {\n id\n examComponents {\n items {\n id\n index\n examComponentQuestionId\n questionRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n title\n active\n updatedAt\n }\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n title\n active\n updatedAt\n }\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const listExamComponents = /* GraphQL */ `\n query ListExamComponents(\n $filter: ModelExamComponentFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listExamComponents(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n index\n examComponentQuestionId\n questionRevisionId\n extra {\n index\n renderType\n contents\n }\n exam {\n id\n examComponents {\n items {\n id\n index\n examComponentQuestionId\n questionRevisionId\n extra {\n index\n renderType\n contents\n }\n exam {\n id\n examComponents {\n nextToken\n }\n createdAt\n title\n active\n updatedAt\n }\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n title\n active\n updatedAt\n }\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n nextToken\n }\n questionConnections {\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getTagJoin = /* GraphQL */ `\n query GetTagJoin($id: ID!) {\n getTagJoin(id: $id) {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n }\n`;\nexport const listTagJoins = /* GraphQL */ `\n query ListTagJoins(\n $filter: ModelTagJoinFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listTagJoins(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n`;\nexport const getContentQueue = /* GraphQL */ `\n query GetContentQueue($name: String!) {\n getContentQueue(name: $name) {\n name\n startDate\n currentIndex\n contentType\n content\n createdAt\n updatedAt\n }\n }\n`;\nexport const listContentQueues = /* GraphQL */ `\n query ListContentQueues(\n $name: String\n $filter: ModelContentQueueFilterInput\n $limit: Int\n $nextToken: String\n $sortDirection: ModelSortDirection\n ) {\n listContentQueues(\n name: $name\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n sortDirection: $sortDirection\n ) {\n items {\n name\n startDate\n currentIndex\n contentType\n content\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const getWordPressUserData = /* GraphQL */ `\n query GetWordPressUserData($wpUserId: Int!) {\n getWordPressUserData(wpUserId: $wpUserId) {\n wpUserId\n testProgresses {\n items {\n id\n testId\n userIdHashTestId\n blockProgresses {\n items {\n id\n blockId\n questionProgresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n highlights\n status\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n wordPressUserDataTestProgressesId\n updatedAt\n }\n nextToken\n }\n questionMastery {\n items {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n updatedAt\n }\n }\n`;\nexport const listWordPressUserDatas = /* GraphQL */ `\n query ListWordPressUserDatas(\n $wpUserId: Int\n $filter: ModelWordPressUserDataFilterInput\n $limit: Int\n $nextToken: String\n $sortDirection: ModelSortDirection\n ) {\n listWordPressUserDatas(\n wpUserId: $wpUserId\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n sortDirection: $sortDirection\n ) {\n items {\n wpUserId\n testProgresses {\n items {\n id\n testId\n userIdHashTestId\n blockProgresses {\n items {\n id\n blockId\n questionProgresses {\n nextToken\n }\n highlights\n status\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n wordPressUserDataTestProgressesId\n updatedAt\n }\n nextToken\n }\n questionMastery {\n items {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const getBootcampUserData = /* GraphQL */ `\n query GetBootcampUserData($bootcampUserId: ID!) {\n getBootcampUserData(bootcampUserId: $bootcampUserId) {\n bootcampUserId\n createdAt\n updatedAt\n }\n }\n`;\nexport const listBootcampUserDatas = /* GraphQL */ `\n query ListBootcampUserDatas(\n $bootcampUserId: ID\n $filter: ModelBootcampUserDataFilterInput\n $limit: Int\n $nextToken: String\n $sortDirection: ModelSortDirection\n ) {\n listBootcampUserDatas(\n bootcampUserId: $bootcampUserId\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n sortDirection: $sortDirection\n ) {\n items {\n bootcampUserId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const getQuestionMastery = /* GraphQL */ `\n query GetQuestionMastery($userIdHashQuestionBaseId: ID!) {\n getQuestionMastery(userIdHashQuestionBaseId: $userIdHashQuestionBaseId) {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const listQuestionMasterys = /* GraphQL */ `\n query ListQuestionMasterys(\n $userIdHashQuestionBaseId: ID\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n $sortDirection: ModelSortDirection\n ) {\n listQuestionMasterys(\n userIdHashQuestionBaseId: $userIdHashQuestionBaseId\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n sortDirection: $sortDirection\n ) {\n items {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n nextToken\n }\n questionConnections {\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getTestProgress = /* GraphQL */ `\n query GetTestProgress($id: ID!) {\n getTestProgress(id: $id) {\n id\n testId\n userIdHashTestId\n blockProgresses {\n items {\n id\n blockId\n questionProgresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n highlights\n status\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n wordPressUserDataTestProgressesId\n updatedAt\n }\n }\n`;\nexport const listTestProgresss = /* GraphQL */ `\n query ListTestProgresss(\n $filter: ModelTestProgressFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listTestProgresss(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n testId\n userIdHashTestId\n blockProgresses {\n items {\n id\n blockId\n questionProgresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n highlights\n status\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n wordPressUserDataTestProgressesId\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const getBlockProgress = /* GraphQL */ `\n query GetBlockProgress($id: ID!) {\n getBlockProgress(id: $id) {\n id\n blockId\n questionProgresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n highlights\n status\n index\n createdAt\n updatedAt\n }\n }\n`;\nexport const listBlockProgresss = /* GraphQL */ `\n query ListBlockProgresss(\n $filter: ModelBlockProgressFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listBlockProgresss(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n blockId\n questionProgresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n highlights\n status\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const getQuestionProgress = /* GraphQL */ `\n query GetQuestionProgress($id: ID!) {\n getQuestionProgress(id: $id) {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const listQuestionProgresss = /* GraphQL */ `\n query ListQuestionProgresss(\n $filter: ModelQuestionProgressFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listQuestionProgresss(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n nextToken\n }\n questionConnections {\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const questionMasteryByWpUserId = /* GraphQL */ `\n query QuestionMasteryByWpUserId(\n $wpUserId: ID\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n QuestionMasteryByWpUserId(\n wpUserId: $wpUserId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n nextToken\n }\n questionConnections {\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const questionMasteryByMasteryLevel = /* GraphQL */ `\n query QuestionMasteryByMasteryLevel(\n $wpUserId: ID\n $masteryLevel: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n QuestionMasteryByMasteryLevel(\n wpUserId: $wpUserId\n masteryLevel: $masteryLevel\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n nextToken\n }\n questionConnections {\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const questionMasteryByQuestionId = /* GraphQL */ `\n query QuestionMasteryByQuestionId(\n $questionMasteryQuestionId: ID\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n QuestionMasteryByQuestionId(\n questionMasteryQuestionId: $questionMasteryQuestionId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n nextToken\n }\n questionConnections {\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const questionMasteryByTestTagId = /* GraphQL */ `\n query QuestionMasteryByTestTagId(\n $userIdHashTestTagId: ID\n $updatedAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n QuestionMasteryByTestTagId(\n userIdHashTestTagId: $userIdHashTestTagId\n updatedAt: $updatedAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n nextToken\n }\n questionConnections {\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const questionMasteryBySubjectTagId = /* GraphQL */ `\n query QuestionMasteryBySubjectTagId(\n $userIdHashSubjectTagId: ID\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n QuestionMasteryBySubjectTagId(\n userIdHashSubjectTagId: $userIdHashSubjectTagId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n nextToken\n }\n questionConnections {\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const questionMasteryByTopicTagId = /* GraphQL */ `\n query QuestionMasteryByTopicTagId(\n $userIdHashTopicTagId: ID\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n QuestionMasteryByTopicTagId(\n userIdHashTopicTagId: $userIdHashTopicTagId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n nextToken\n }\n questionConnections {\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const questionMasteryByTestId = /* GraphQL */ `\n query QuestionMasteryByTestId(\n $userIdHashTestId: ID\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n QuestionMasteryByTestId(\n userIdHashTestId: $userIdHashTestId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n nextToken\n }\n questionConnections {\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const questionMasteryByQuestionBaseIdTestId = /* GraphQL */ `\n query QuestionMasteryByQuestionBaseIdTestId(\n $questionBaseIdHashTestId: ID\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n QuestionMasteryByQuestionBaseIdTestId(\n questionBaseIdHashTestId: $questionBaseIdHashTestId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n nextToken\n }\n questionConnections {\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const testProgressByTestId = /* GraphQL */ `\n query TestProgressByTestId(\n $userIdHashTestId: ID\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelTestProgressFilterInput\n $limit: Int\n $nextToken: String\n ) {\n TestProgressByTestId(\n userIdHashTestId: $userIdHashTestId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n testId\n userIdHashTestId\n blockProgresses {\n items {\n id\n blockId\n questionProgresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n highlights\n status\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n wordPressUserDataTestProgressesId\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const getUser = /* GraphQL */ `\n query GetUser($id: ID!) {\n getUser(id: $id) {\n id\n email\n idOverride\n testProgresses {\n items {\n id\n testId\n userIdHashTestId\n blockProgresses {\n items {\n id\n blockId\n questionProgresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n highlights\n status\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n wordPressUserDataTestProgressesId\n updatedAt\n }\n nextToken\n }\n questionMastery {\n items {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n updatedAt\n memberships {\n items {\n id\n productId\n groups\n startDate\n duration\n status\n userMembershipsId\n type\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n`;\nexport const listUsers = /* GraphQL */ `\n query ListUsers(\n $filter: ModelUserFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listUsers(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n email\n idOverride\n testProgresses {\n items {\n id\n testId\n userIdHashTestId\n blockProgresses {\n items {\n id\n blockId\n questionProgresses {\n nextToken\n }\n highlights\n status\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n wordPressUserDataTestProgressesId\n updatedAt\n }\n nextToken\n }\n questionMastery {\n items {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n questionMasteryQuestionId\n userIdHashTestTagId\n userIdHashSubjectTagId\n userIdHashTopicTagId\n userIdHashTestId\n questionBaseIdHashTestId\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n updatedAt\n memberships {\n items {\n id\n productId\n groups\n startDate\n duration\n status\n userMembershipsId\n type\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n nextToken\n }\n }\n`;\nexport const getMembership = /* GraphQL */ `\n query GetMembership($id: ID!) {\n getMembership(id: $id) {\n id\n productId\n groups\n startDate\n duration\n status\n userMembershipsId\n type\n createdAt\n updatedAt\n }\n }\n`;\nexport const listMemberships = /* GraphQL */ `\n query ListMemberships(\n $filter: ModelMembershipFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listMemberships(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n productId\n groups\n startDate\n duration\n status\n userMembershipsId\n type\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const productId = /* GraphQL */ `\n query ProductId(\n $productId: String\n $sortDirection: ModelSortDirection\n $filter: ModelMembershipFilterInput\n $limit: Int\n $nextToken: String\n ) {\n ProductId(\n productId: $productId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n productId\n groups\n startDate\n duration\n status\n userMembershipsId\n type\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const getUserInteraction = /* GraphQL */ `\n query GetUserInteraction($id: ID!) {\n getUserInteraction(id: $id) {\n id\n userId\n value\n createdAt\n updatedAt\n }\n }\n`;\nexport const listUserInteractions = /* GraphQL */ `\n query ListUserInteractions(\n $filter: ModelUserInteractionFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listUserInteractions(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n userId\n value\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const userId = /* GraphQL */ `\n query UserId(\n $userId: String\n $sortDirection: ModelSortDirection\n $filter: ModelUserInteractionFilterInput\n $limit: Int\n $nextToken: String\n ) {\n UserId(\n userId: $userId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n userId\n value\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const getTest = /* GraphQL */ `\n query GetTest($id: ID!) {\n getTest(id: $id) {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n }\n`;\nexport const listTests = /* GraphQL */ `\n query ListTests(\n $filter: ModelTestFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listTests(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n`;\nexport const getTestBlockConnection = /* GraphQL */ `\n query GetTestBlockConnection($id: ID!) {\n getTestBlockConnection(id: $id) {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const listTestBlockConnections = /* GraphQL */ `\n query ListTestBlockConnections(\n $filter: ModelTestBlockConnectionFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listTestBlockConnections(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n nextToken\n }\n questionConnections {\n nextToken\n }\n }\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n nextToken\n }\n questionConnections {\n nextToken\n }\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n nextToken\n }\n questionConnections {\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getTestBlock = /* GraphQL */ `\n query GetTestBlock($id: ID!) {\n getTestBlock(id: $id) {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n }\n`;\nexport const listTestBlocks = /* GraphQL */ `\n query ListTestBlocks(\n $id: ID\n $filter: ModelTestBlockFilterInput\n $limit: Int\n $nextToken: String\n $sortDirection: ModelSortDirection\n ) {\n listTestBlocks(\n id: $id\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n sortDirection: $sortDirection\n ) {\n items {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n`;\nexport const getQuestionConnection = /* GraphQL */ `\n query GetQuestionConnection($id: ID!) {\n getQuestionConnection(id: $id) {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n }\n`;\nexport const listQuestionConnections = /* GraphQL */ `\n query ListQuestionConnections(\n $filter: ModelQuestionConnectionFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listQuestionConnections(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n config {\n title\n type\n timeLimit\n status\n questionCount\n }\n tags {\n nextToken\n }\n groupsCanRead\n updatedAt\n blockConnections {\n nextToken\n }\n }\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n nextToken\n }\n questionConnections {\n nextToken\n }\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n nextToken\n }\n questionConnections {\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n nextToken\n }\n questionConnections {\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n nextToken\n }\n searchString\n progresses {\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n nextToken\n }\n comments {\n nextToken\n }\n questionRevisions {\n nextToken\n }\n latestRevisions {\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getQuestionBase = /* GraphQL */ `\n query GetQuestionBase($id: ID!) {\n getQuestionBase(id: $id) {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n test {\n id\n createdAt\n groupsCanRead\n updatedAt\n }\n testBlock {\n id\n title\n type\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n createdAt\n updatedAt\n }\n question {\n id\n oldId\n createdAt\n status\n searchString\n updatedAt\n groupsCanRead\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n`;\nexport const listQuestionBases = /* GraphQL */ `\n query ListQuestionBases(\n $filter: ModelQuestionBaseFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listQuestionBases(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n nextToken\n }\n }\n`;\nexport const searchQuestionBases = /* GraphQL */ `\n query SearchQuestionBases(\n $filter: SearchableQuestionBaseFilterInput\n $sort: SearchableQuestionBaseSortInput\n $limit: Int\n $nextToken: String\n $from: Int\n ) {\n searchQuestionBases(\n filter: $filter\n sort: $sort\n limit: $limit\n nextToken: $nextToken\n from: $from\n ) {\n items {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n tag {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n createdAt\n updatedAt\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n createdAt\n updatedAt\n }\n nextToken\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n question {\n id\n oldId\n createdAt\n status\n tags {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n searchString\n progresses {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n createdAt\n updatedAt\n }\n nextToken\n }\n updatedAt\n groupsCanRead\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n }\n nextToken\n }\n comments {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n questionRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n latestRevisions {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n nextToken\n total\n }\n }\n`;\nexport const getQuestionComment = /* GraphQL */ `\n query GetQuestionComment($id: ID!) {\n getQuestionComment(id: $id) {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n }\n`;\nexport const listQuestionComments = /* GraphQL */ `\n query ListQuestionComments(\n $filter: ModelQuestionCommentFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listQuestionComments(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n }\n`;\nexport const commentTypeByCreatedAt = /* GraphQL */ `\n query CommentTypeByCreatedAt(\n $type: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionCommentFilterInput\n $limit: Int\n $nextToken: String\n ) {\n CommentTypeByCreatedAt(\n type: $type\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n index\n content\n createdBy\n createdAt\n updatedAt\n type\n questionBaseCommentsId\n }\n nextToken\n }\n }\n`;\nexport const getQuestionRevision = /* GraphQL */ `\n query GetQuestionRevision($id: ID!) {\n getQuestionRevision(id: $id) {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n }\n`;\nexport const listQuestionRevisions = /* GraphQL */ `\n query ListQuestionRevisions(\n $filter: ModelQuestionRevisionFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listQuestionRevisions(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n questionBaseQuestionRevisionsId\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const getTag = /* GraphQL */ `\n query GetTag($id: ID!) {\n getTag(id: $id) {\n id\n test\n subject\n topic\n contentType\n }\n }\n`;\nexport const listTags = /* GraphQL */ `\n query ListTags(\n $filter: ModelTagFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listTags(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n test\n subject\n topic\n contentType\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\n","export const listQuestionBases = `query ListQuestionBases(\n $filter: ModelQuestionBaseFilterInput\n $limit: Int\n $nextToken: String\n) {\n listQuestionBases(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n createdAt\n latestRevisions(limit: 2000, sortDirection: ASC) {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n }\n }\n tags {\n items {\n id\n tag {\n id\n test\n subject\n topic\n contentType\n }\n }\n nextToken\n }\n }\n nextToken\n }\n}\n`;\n\nexport const getActivationCode = `query GetActivationCode($id: ID!) {\n getActivationCode(id: $id) {\n id\n redeemedAt\n groups\n duration\n priceId\n membershipId\n cohort {\n id\n bootcamp\n name\n universityId\n }\n }\n}\n`;\n\nexport const getTest = `query GetTest($id: ID!) {\n getTest(id: $id) {\n id\n blockConnections(limit: 5000) {\n items {\n index\n testBlockConnectionTestBlockId\n testBlock {\n id\n type\n title\n blockConnections(limit: 5) {\n items {\n test {\n id\n config {\n title\n }\n }\n }\n }\n components {\n index\n renderType\n contents\n }\n questionConnections(limit: 5000) {\n items {\n id\n index\n question {\n id\n createdAt\n updatedAt\n status\n latestRevisions(limit: 1, sortDirection: DESC) {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n createdAt\n }\n }\n tags {\n items {\n id\n tag {\n id\n test\n subject\n system\n topic\n contentType\n }\n }\n }\n }\n pinnedRevisionId\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n config {\n title\n type\n timeLimit\n }\n groupsCanRead\n }\n}\n`;\n\nexport const getTestWithSearchString = `query GetTest($id: ID!) {\n getTest(id: $id) {\n id\n blockConnections(limit: 5000) {\n items {\n id\n index\n testBlock {\n id\n type\n title\n components {\n index\n renderType\n contents\n }\n questionConnections(limit: 5000) {\n items {\n id\n index\n question {\n id\n createdAt\n searchString\n status\n latestRevisions(limit: 1, sortDirection: DESC) {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n createdAt\n }\n }\n tags {\n items {\n id\n tag {\n id\n test\n subject\n topic\n contentType\n }\n }\n nextToken\n }\n }\n pinnedRevisionId\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n config {\n title\n type\n timeLimit\n questionCount\n }\n groupsCanRead\n }\n}\n`;\n\nexport const getTestConfig = `query GetTest($id: ID!) {\n getTest(id: $id) {\n id\n config {\n questionCount\n title\n }\n }\n}\n`;\n\nexport const getTestTile = `query GetTest($id: ID!) {\n getTest(id: $id) {\n id\n createdAt\n config {\n title\n type\n timeLimit\n }\n blockConnections(limit: 2000) {\n items {\n testBlockConnectionTestBlockId\n index\n testBlock {\n id\n type\n title\n }\n }\n }\n }\n}\n`;\n\nexport const getTestFromCache = `query GetTestFromCache($id: ID!) {\n getTestFromCache(id: $id) {\n id\n blockConnections(limit: 5000) {\n items {\n id\n index\n testBlock {\n id\n type\n title\n components {\n index\n renderType\n contents\n }\n questionConnections(limit: 5000) {\n items {\n id\n index\n question {\n id\n oldId\n createdAt\n status\n questionRevisions(limit: 5000) {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n }\n }\n tags {\n items {\n id\n tag {\n id\n test\n subject\n topic\n contentType\n }\n }\n nextToken\n }\n }\n pinnedRevisionId\n }\n nextToken\n }\n }\n }\n nextToken\n }\n createdAt\n config {\n title\n type\n timeLimit\n }\n groupsCanRead\n }\n}\n`;\n\nexport const getTestBlock = `query GetTestBlock($id: ID!) {\n getTestBlock(id: $id) {\n id\n type\n components {\n index\n renderType\n contents\n }\n }\n}\n`;\nexport const getTestBlockWithQuestionIds = `query GetTestBlock($id: ID!) {\n getTestBlock(id: $id) {\n id\n type\n components {\n index\n renderType\n contents\n }\n questionConnections(limit: 5000) {\n items {\n index\n question {\n id\n status\n }\n }\n }\n }\n}\n`;\n\nexport const getTestNoQuestions = `query GetTest($id: ID!) {\n getTest(id: $id) {\n id\n blockConnections(limit: 5000) {\n items {\n id\n index\n testBlock {\n id\n type\n title\n blockConnections(limit: 5) {\n items {\n id\n test {\n id\n config {\n title\n }\n }\n }\n }\n components {\n index\n renderType\n contents\n }\n }\n }\n nextToken\n }\n createdAt\n config {\n title\n type\n timeLimit\n }\n }\n}\n`;\nexport const getTestStructureOnly = `query GetTest($id: ID!) {\n getTest(id: $id) {\n id\n blockConnections(limit: 5000) {\n items {\n id\n index\n testBlock {\n id\n type\n title\n components {\n index\n renderType\n contents\n }\n }\n }\n nextToken\n }\n createdAt\n config {\n title\n type\n timeLimit\n }\n }\n}\n`;\nexport const getTestStructureOnlyWithBlockConnections = `query GetTest($id: ID!) {\n getTest(id: $id) {\n id\n blockConnections(limit: 5000) {\n items {\n id\n index\n testBlock {\n id\n type\n title\n blockConnections(limit: 5) {\n items {\n test {\n id\n config {\n title\n }\n }\n }\n }\n components {\n index\n renderType\n contents\n }\n }\n }\n nextToken\n }\n createdAt\n config {\n title\n type\n timeLimit\n }\n }\n}\n`;\n\nexport const getTestQuestionIds = `query GetTest($id: ID!) {\n getTest(id: $id) {\n id\n blockConnections(limit: 5000) {\n items {\n testBlock {\n questionConnections(limit: 5000) {\n items {\n index\n question {\n id\n status\n }\n }\n }\n }\n }\n }\n }\n}\n`;\n\n\nexport const getTestQuestionIdsWithConfig = `query GetTest($id: ID!) {\n getTest(id: $id) {\n id\n blockConnections(limit: 5000) {\n items {\n id\n index\n testBlock {\n id\n type\n title\n components {\n index\n renderType\n contents\n }\n questionConnections(limit: 5000) {\n items {\n question {\n id\n status\n }\n }\n }\n }\n }\n }\n }\n}\n`;\nexport const getTestQuestions = `query GetTest($id: ID!) {\n getTest(id: $id) {\n blockConnections(limit: 5000) {\n items {\n index\n testBlock {\n id\n type\n questionConnections(limit: 5000) {\n items {\n index\n question {\n id\n createdAt\n status\n latestRevisions(limit: 5000, sortDirection: DESC) {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n createdAt\n }\n }\n tags {\n items {\n tag {\n id\n test\n subject\n topic\n }\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n }\n nextToken\n }\n config {\n title\n type\n timeLimit\n }\n }\n}\n`;\n\nexport const getTestQuestionTags = `query GetTest($id: ID!) {\n getTest(id: $id) {\n blockConnections(limit: 5000) {\n items {\n testBlock {\n questionConnections(limit: 5000) {\n items {\n question {\n id\n status\n tags {\n items {\n tag {\n id\n }\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n}\n`;\n\n\nexport const getTestQuestionIdsAndStatus = `query GetTest($id: ID!) {\n getTest(id: $id) {\n blockConnections(limit: 5000) {\n items {\n testBlock {\n questionConnections(limit: 5000) {\n items {\n question {\n id\n status\n }\n }\n }\n }\n }\n }\n }\n}\n`;\n\nexport const getTestConnectionsOnly = `query GetTest($id: ID!) {\n getTest(id: $id) {\n id\n blockConnections(limit: 5000) {\n items {\n id\n }\n }\n }\n}\n`;\n\nexport const listTests = `query ListTests(\n $filter: ModelTestFilterInput\n $limit: Int\n $nextToken: String\n) {\n listTests(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n createdAt\n config {\n title\n type\n timeLimit\n }\n blockConnections(limit: 2000) {\n items {\n testBlockConnectionTestBlockId\n index\n testBlock {\n type\n title\n }\n }\n }\n }\n nextToken\n }\n}\n`;\n\nexport const listTestBlocks = `query ListTestBlocks(\n $filter: ModelTestBlockFilterInput\n $limit: Int\n $nextToken: String\n) {\n listTestBlocks(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n title\n type\n }\n nextToken\n }\n}\n`;\n\nexport const listUsers = /* GraphQL */ `\n query ListUsers(\n $filter: ModelUserFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listUsers(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n email\n idOverride\n createdAt\n updatedAt\n memberships(limit: 200) {\n items {\n id\n productId\n groups\n startDate\n duration\n status\n userMembershipsId\n type\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n nextToken\n }\n }\n`;\n\nexport const listExams = `query ListExams(\n $filter: ModelExamFilterInput\n $limit: Int\n $nextToken: String\n) {\n listExams(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n createdAt\n title\n active\n examComponents(sortDirection: ASC) {\n items {\n id\n index\n questionRevisionId\n examComponentQuestionId\n extra {\n index\n renderType\n contents\n }\n question {\n id\n createdAt\n searchString\n questionRevisions(limit: 2000) {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n }\n nextToken\n }\n tags {\n items {\n id\n tag {\n id\n test\n subject\n topic\n contentType\n }\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n nextToken\n }\n}\n`;\n\nexport const getQuestionBase = `query GetQuestionBase($id: ID!) {\n getQuestionBase(id: $id) {\n id\n oldId\n createdAt\n updatedAt\n status\n connections {\n items {\n id\n index\n pinnedRevisionId\n }\n nextToken\n }\n latestRevisions(limit: 5000, sortDirection: DESC) {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n updatedAt\n }\n }\n tags {\n items {\n id\n tag {\n id\n test\n subject\n topic\n contentType\n }\n }\n nextToken\n }\n }\n}\n`;\n\nexport const getQuestionBaseTagsOnly = `query GetQuestionBase($id: ID!) {\n getQuestionBase(id: $id) {\n id\n tags {\n items {\n id\n tag {\n id\n test\n subject\n topic\n contentType\n }\n }\n nextToken\n }\n }\n}\n`;\n\nexport const getQuestionBaseWithFaqOnly = `query GetQuestionBase($id: ID!) {\n getQuestionBase(id: $id) {\n comments(limit: 500) {\n items {\n content\n createdAt\n }\n nextToken\n }\n }\n}`\n\nexport const getQuestionBaseWithFaq = `query GetQuestionBase($id: ID!) {\n getQuestionBase(id: $id) {\n id\n oldId\n createdAt\n status\n comments {\n items {\n id\n content\n createdAt\n createdBy\n }\n }\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n }\n }\n nextToken\n }\n latestRevisions(limit: 5000, sortDirection: DESC) {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n }\n }\n tags {\n items {\n id\n tag {\n id\n test\n subject\n topic\n contentType\n }\n }\n nextToken\n }\n }\n}\n`;\nexport const getQuestionBaseTestBlocks = `query GetQuestionBase($id: ID!) {\n getQuestionBase(id: $id) {\n id\n connections(limit: 5000) {\n items {\n block {\n components {\n index\n renderType\n contents\n }\n }\n }\n nextToken\n }\n }\n}\n`;\nexport const getQuestionBaseWithTests = `query GetQuestionBase($id: ID!) {\n getQuestionBase(id: $id) {\n id\n oldId\n createdAt\n updatedAt\n status\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n block {\n blockConnections {\n items {\n test {\n id\n config {\n title\n }\n }\n }\n }\n }\n }\n nextToken\n }\n latestRevisions(limit: 5000, sortDirection: DESC) {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n revisedBy\n }\n }\n tags {\n items {\n id\n tag {\n id\n test\n subject\n topic\n contentType\n }\n }\n nextToken\n }\n comments {\n items {\n id\n content\n createdBy\n createdAt\n }\n }\n }\n}\n`;\nexport const getQuestionBaseProgresses = `query GetQuestionBase($id: ID!, $limit: Int, $progressNextToken: String) {\n getQuestionBase(id: $id) {\n progresses(limit: $limit, nextToken: $progressNextToken) {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n questionRevisionId\n answerState\n time\n }\n nextToken\n }\n }\n}`\n\nexport const searchQuestionBases = `query SearchQuestionBases(\n $filter: SearchableQuestionBaseFilterInput\n $sort: SearchableQuestionBaseSortInput\n $limit: Int\n $nextToken: String\n) {\n searchQuestionBases(\n filter: $filter\n sort: $sort\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n status\n latestRevisions(limit: 1, sortDirection: DESC) {\n items {\n id\n revisedBy\n createdAt\n questionComponents {\n index\n renderType\n contents\n }\n }\n }\n connections {\n items {\n block {\n blockConnections {\n items {\n test {\n id\n config {\n title\n }\n }\n }\n }\n }\n }\n }\n tags {\n items {\n tag {\n id\n test\n subject\n topic\n contentType\n }\n }\n nextToken\n }\n }\n nextToken\n total\n }\n}\n`;\n\nexport const searchQuestionBasesAndBlocks = `query SearchQuestionBases(\n $filter: SearchableQuestionBaseFilterInput\n $sort: SearchableQuestionBaseSortInput\n $limit: Int\n $nextToken: String\n) {\n searchQuestionBases(\n filter: $filter\n sort: $sort\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n oldId\n createdAt\n connections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n block {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n }\n }\n nextToken\n }\n latestRevisions(limit: 5000, sortDirection: DESC) {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n }\n }\n tags {\n items {\n id\n tag {\n id\n test\n subject\n topic\n contentType\n }\n }\n nextToken\n }\n }\n nextToken\n total\n }\n}\n`;\nexport const listTags = `query ListTags($filter: ModelTagFilterInput, $limit: Int, $nextToken: String) {\n listTags(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n test\n subject\n topic\n contentType\n }\n nextToken\n }\n}\n`;\nexport const getWordPressUserData = `query GetWordPressUserData($wpUserId: Int!, $masteryNextToken: String) {\n getWordPressUserData(wpUserId: $wpUserId) {\n wpUserId\n createdAt\n testProgresses(limit: 5000) {\n items {\n id\n testId\n createdAt\n blockProgresses(limit: 5000) {\n items {\n id\n blockId\n highlights\n questionProgresses(limit: 5000) {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n masteryLevel\n highlights\n questionRevisionId\n question {\n id\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n nextToken\n }\n questionMastery(limit: 500, nextToken: $masteryNextToken) {\n items {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n question {\n id\n }\n }\n nextToken\n }\n }\n}\n`;\n\nexport const getTestProgressByTestId = /* GraphQL */ `\n query TestProgressByTestId(\n $userIdHashTestId: ID!\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelTestProgressFilterInput\n $limit: Int\n $nextToken: String\n ) {\n TestProgressByTestId(\n userIdHashTestId: $userIdHashTestId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n createdAt\n }\n nextToken\n }\n }\n`;\nexport const getBlockProgressByTestId = /* GraphQL */ `\n query TestProgressByTestId(\n $userIdHashTestId: ID!\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelTestProgressFilterInput\n $limit: Int\n $nextToken: String\n ) {\n TestProgressByTestId(\n userIdHashTestId: $userIdHashTestId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n testId\n createdAt\n blockProgresses(limit: 5000) {\n items {\n id\n blockId\n highlights\n }\n nextToken\n }\n }\n nextToken\n }\n }\n`;\nexport const getTestProgressByTestIdFull = /* GraphQL */ `\n query TestProgressByTestId(\n $userIdHashTestId: ID!\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelTestProgressFilterInput\n $limit: Int\n $nextToken: String\n ) {\n TestProgressByTestId(\n userIdHashTestId: $userIdHashTestId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n testId\n createdAt\n blockProgresses(limit: 5000) {\n items {\n id\n blockId\n highlights\n status\n index\n questionProgresses(limit: 5000) {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n masteryLevel\n highlights\n questionRevisionId\n answerState\n question {\n id\n\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n`;\nexport const getTestProgressByTestIdFullForScoring = /* GraphQL */ `\n query TestProgressByTestId(\n $userIdHashTestId: ID!\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelTestProgressFilterInput\n $limit: Int\n $nextToken: String\n ) {\n TestProgressByTestId(\n userIdHashTestId: $userIdHashTestId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n testId\n createdAt\n blockProgresses (limit: 5000) {\n items {\n id\n blockId\n highlights\n index\n status\n questionProgresses (limit: 5000) {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n answerState\n question {\n id\n oldId\n createdAt\n updatedAt\n statistics\n latestRevisions(limit: 1, sortDirection: DESC) {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n }\n }\n tags {\n items {\n id\n tag {\n id\n test\n subject\n system\n topic\n contentType\n }\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n`;\n\nexport const getTestProgressByTestIdFullForDATScoring = /* GraphQL */ `\n query TestProgressByTestId(\n $userIdHashTestId: ID!\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelTestProgressFilterInput\n $limit: Int\n $nextToken: String\n ) {\n TestProgressByTestId(\n userIdHashTestId: $userIdHashTestId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n testId\n createdAt\n blockProgresses(limit: 5000) {\n items {\n index\n questionProgresses(limit: 5000) {\n items {\n selectedAnswerIndex\n didSelectCorrectAnswer\n time\n question {\n id\n tags {\n items {\n tag {\n id\n test\n subject\n topic\n }\n }\n }\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n`;\nexport const getBlockProgress = /* GraphQL */ `\n query GetBlockProgress($id: ID!) {\n getBlockProgress(id: $id) {\n id\n status\n }\n }\n`;\n\nexport const getBlockProgressWithQuestions = /* GraphQL */ `\n query GetBlockProgress($id: ID!, $questionProgressesNextToken: String) {\n getBlockProgress(id: $id) {\n id\n questionProgresses (limit: 150, nextToken: $questionProgressesNextToken) {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n answerState\n question {\n id\n tags {\n items {\n tag {\n id\n test\n subject\n system\n topic\n contentType\n }\n }\n }\n }\n }\n nextToken\n }\n }\n }\n`;\n\nexport const getTestProgressesCount = `query GetUserData($id: ID!) {\n getUser(id: $id) {\n id\n testProgresses(limit: 100) {\n items {\n id\n }\n }\n }\n}\n`;\n\nexport const getTestProgressIds = `query GetUserData($id: ID!) {\n getUser(id: $id) {\n id\n testProgresses(limit: 5000, sortDirection: DESC) {\n items {\n id\n testId\n createdAt\n }\n }\n }\n}\n`;\n\nexport const getTestProgressIdsByWpUserId = `query GetWordPressUserData($wpUserId: Int!) {\n getWordPressUserData(wpUserId: $wpUserId) {\n wpUserId\n testProgresses(limit: 5000, sortDirection: DESC) {\n items {\n id\n testId\n createdAt\n }\n }\n }\n}\n`;\n\nexport const getTestProgressesByUserId = `query GetUserData($id: ID!, $limit: Int, $testProgressesNextToken: String) {\n getUser(id: $id) {\n id\n testProgresses(limit: $limit, nextToken: $testProgressesNextToken) {\n items {\n id\n testId\n createdAt\n blockProgresses(limit: 5000) {\n items {\n id\n blockId\n highlights\n questionProgresses(limit: 5000) {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n masteryLevel\n highlights\n questionRevisionId\n question {\n id\n\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n}\n`;\n\nexport const getTestProgressesByWpUserId = `query GetWordPressUserData($wpUserId: Int!, $testProgressesNextToken: String) {\n getWordPressUserData(wpUserId: $wpUserId) {\n wpUserId\n createdAt\n testProgresses(limit: 50, nextToken: $testProgressesNextToken) {\n items {\n id\n testId\n createdAt\n blockProgresses(limit: 5000) {\n items {\n id\n blockId\n highlights\n questionProgresses(limit: 5000) {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n masteryLevel\n highlights\n questionRevisionId\n question {\n id\n\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n}\n`;\n\nexport const getQuestionRevision = /* GraphQL */ `\n query GetQuestionRevision($id: ID!) {\n getQuestionRevision(id: $id) {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n }\n }\n`;\n\nexport const getTestProgressPerformance = `query GetTestProgress($id: ID!) {\n getTestProgress(id: $id) {\n id\n blockProgresses (limit: 5000) {\n items {\n id\n status\n }\n nextToken\n }\n }\n}\n`;\nexport const getTestProgressSpecial = `query GetTestProgress($id: ID!, $nextToken:) {\n getTestProgress(id: $id) {\n id\n blockProgresses (limit: 5000) {\n items {\n id\n questionProgresses (limit: 15) {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n question {\n id\n tags {\n items {\n id\n tag {\n id\n test\n subject\n system\n topic\n contentType\n }\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n }\n }\n}\n`;\nexport const getTestProgressSimple = `query GetTestProgress($id: ID!) {\n getTestProgress(id: $id) {\n id\n }\n}\n`;\nexport const getTestProgress = `query GetTestProgress($id: ID!) {\n getTestProgress(id: $id) {\n id\n testId\n createdAt\n wordPressUserDataTestProgressesId\n blockProgresses (limit: 5000) {\n items {\n id\n blockId\n highlights\n index\n status\n questionProgresses (limit: 5000) {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n crossedAnswerIndexes\n index\n answerState\n question {\n id\n oldId\n createdAt\n updatedAt\n statistics\n latestRevisions(limit: 1, sortDirection: DESC) {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n }\n }\n tags {\n items {\n id\n tag {\n id\n test\n subject\n system\n topic\n contentType\n }\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n}\n`;\nexport const getTestProgressWithoutQuestion = `query GetTestProgress($id: ID!) {\n getTestProgress(id: $id) {\n id\n testId\n createdAt\n wordPressUserDataTestProgressesId\n blockProgresses (limit: 5000) {\n items {\n id\n blockId\n highlights\n index\n status\n questionProgresses (limit: 5000) {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n highlights\n masteryLevel\n questionRevisionId\n index\n answerState\n question {\n id\n statistics\n tags {\n items {\n id\n tag {\n id\n test\n subject\n system\n topic\n contentType\n }\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n}\n`;\n\n// could add to question above\n// oldId\n// createdAt\n// searchString\n// questionRevisions(limit: 2000, sortDirection: ASC) {\n// items {\n// id\n// questionComponents {\n// index\n// renderType\n// contents\n// }\n// scorePossible\n// createdAt\n// }\n// nextToken\n// }\n// tags {\n// items {\n// id\n// tag {\n// id\n// test\n// subject\n// topic\n// contentType\n// }\n// }\n// nextToken\n// }\n\nexport const getAllQuestionMasteryQuestionsByUserId = /* GraphQL */ `\n query QuestionMasteryByWpUserId(\n $wpUserId: ID\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $masteryNextToken: String\n ) {\n QuestionMasteryByWpUserId(\n wpUserId: $wpUserId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $masteryNextToken\n ) {\n items {\n userIdHashQuestionBaseId\n masteryLevel\n userIdHashTestId\n question {\n id\n connections {\n items {\n block {\n blockConnections {\n items {\n test {\n id\n }\n }\n }\n }\n }\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getAllQuestionMasteryIdsByUserId = /* GraphQL */ `\n query QuestionMasteryByWpUserId(\n $wpUserId: ID\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $masteryNextToken: String\n ) {\n QuestionMasteryByWpUserId(\n wpUserId: $wpUserId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $masteryNextToken\n ) {\n items {\n userIdHashQuestionBaseId\n masteryLevel\n updatedAt\n }\n nextToken\n }\n }\n`;\n\nexport const getAllQuestionMasteryIdsTagsByUserId = /* GraphQL */ `\n query QuestionMasteryByWpUserId(\n $wpUserId: ID\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $masteryNextToken: String\n ) {\n QuestionMasteryByWpUserId(\n wpUserId: $wpUserId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $masteryNextToken\n ) {\n items {\n bookmarked\n question {\n tags {\n items {\n tag {\n id\n test\n subject\n topic\n }\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n`;\n\n\n\nexport const questionMasteryByWpUserId = `query GetWordPressUserData($wpUserId: Int!, $masteryNextToken: String) {\n getWordPressUserData(wpUserId: $wpUserId) {\n questionMastery(limit: 500, nextToken: $masteryNextToken) {\n items {\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n }\n nextToken\n }\n }\n}\n`;\n\nexport const questionMasteryWithQuestionsByWpUserId = `query GetWordPressUserData($wpUserId: Int!, $masteryNextToken: String) {\n getWordPressUserData(wpUserId: $wpUserId) {\n questionMastery(limit: 500, nextToken: $masteryNextToken) {\n items {\n masteryLevel\n bookmarked\n updatedAt\n question {\n id\n latestRevisions(limit: 2000, sortDirection: ASC) {\n items {\n id\n createdAt\n questionComponents {\n index\n renderType\n contents\n }\n }\n }\n tags {\n items {\n tag {\n id\n test\n subject\n topic\n }\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n}\n`;\n\nexport const questionMasteryWithQuestionTagsByWpUserId = `query GetWordPressUserData($wpUserId: Int!, $masteryNextToken: String) {\n getWordPressUserData(wpUserId: $wpUserId) {\n questionMastery(limit: 500, nextToken: $masteryNextToken) {\n items {\n masteryLevel\n bookmarked\n question {\n id\n tags {\n items {\n tag {\n id\n test\n subject\n topic\n }\n }\n nextToken\n }\n }\n }\n nextToken\n }\n }\n}\n`;\n\nexport const questionMasteryByQuestionId = /* GraphQL */ `\n query QuestionMasteryByQuestionId(\n $questionMasteryQuestionId: ID\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n QuestionMasteryByQuestionId(\n questionMasteryQuestionId: $questionMasteryQuestionId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n userIdHashQuestionBaseId\n userIdHashTopicTagId\n }\n nextToken\n }\n }\n`;\n\nexport const questionMasteryByQuestionIdForFixing = /* GraphQL */ `\n query QuestionMasteryByQuestionId(\n $questionMasteryQuestionId: ID\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n QuestionMasteryByQuestionId(\n questionMasteryQuestionId: $questionMasteryQuestionId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n userIdHashTestId\n userIdHashQuestionBaseId\n wpUserId\n }\n nextToken\n }\n }\n`;\n\n\nexport const getQuestionMasteryByQuestionBaseId = /* GraphQL */ `\n query GetQuestionMastery($userIdHashQuestionBaseId: ID!) {\n getQuestionMastery(userIdHashQuestionBaseId: $userIdHashQuestionBaseId) {\n userIdHashTestId\n userIdHashQuestionBaseId\n wpUserId\n masteryLevel\n bookmarked\n questionRevisionId\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const questionMasteryBySubjectTagId = /* GraphQL */ `\n query QuestionMasteryBySubjectTagId(\n $userIdHashSubjectTagId: ID!\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n QuestionMasteryBySubjectTagId(\n userIdHashSubjectTagId: $userIdHashSubjectTagId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n masteryLevel\n userIdHashTopicTagId\n bookmarked\n userIdHashTestId\n userIdHashQuestionBaseId\n userIdHashSubjectTagId\n }\n nextToken\n }\n }\n`;\n\nexport const questionMasteryByMasteryLevel = /* GraphQL */ `\n query QuestionMasteryByMasteryLevel(\n $wpUserId: ID\n $masteryLevel: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n QuestionMasteryByMasteryLevel(\n wpUserId: $wpUserId\n masteryLevel: $masteryLevel\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n masteryLevel\n userIdHashTopicTagId\n bookmarked\n question {\n id\n oldId\n createdAt\n latestRevisions(limit: 1, sortDirection: DESC) {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n }\n }\n tags {\n items {\n id\n tag {\n id\n test\n subject\n topic\n contentType\n }\n }\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const questionMasteryByMasteryLevelAnatomy = /* GraphQL */ `\n query QuestionMasteryByMasteryLevel(\n $wpUserId: ID\n $masteryLevel: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n QuestionMasteryByMasteryLevel(\n wpUserId: $wpUserId\n masteryLevel: $masteryLevel\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n masteryLevel\n userIdHashTopicTagId\n question {\n id\n oldId\n createdAt\n latestRevisions(limit: 1, sortDirection: DESC) {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n }\n }\n connections {\n items {\n block {\n components {\n index\n renderType\n contents\n }\n }\n }\n }\n tags {\n items {\n id\n tag {\n id\n test\n subject\n topic\n contentType\n }\n }\n }\n }\n }\n nextToken\n }\n }\n`;\n\n\nexport const questionMasteryBySubjectTagIdWithQuestion = /* GraphQL */ `\n query QuestionMasteryBySubjectTagId(\n $userIdHashSubjectTagId: ID!\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n QuestionMasteryBySubjectTagId(\n userIdHashSubjectTagId: $userIdHashSubjectTagId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n masteryLevel\n bookmarked\n userIdHashTopicTagId\n question {\n id\n oldId\n createdAt\n latestRevisions(limit: 1, sortDirection: DESC) {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n }\n }\n tags {\n items {\n id\n tag {\n id\n test\n subject\n topic\n contentType\n }\n }\n }\n }\n }\n nextToken\n }\n }\n`;\n\nexport const questionMasteryBySubjectTagIdWithQuestionTags = /* GraphQL */ `\n query QuestionMasteryBySubjectTagId(\n $userIdHashSubjectTagId: ID!\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n QuestionMasteryBySubjectTagId(\n userIdHashSubjectTagId: $userIdHashSubjectTagId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n masteryLevel\n bookmarked\n userIdHashTopicTagId\n question {\n id\n tags {\n items {\n id\n tag {\n id\n test\n subject\n topic\n contentType\n }\n }\n }\n }\n }\n nextToken\n }\n }\n`;\n\nexport const questionMasteryBySubjectTagIdWithQuestionBaseId = /* GraphQL */ `\n query QuestionMasteryBySubjectTagId(\n $userIdHashSubjectTagId: ID!\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n QuestionMasteryBySubjectTagId(\n userIdHashSubjectTagId: $userIdHashSubjectTagId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n masteryLevel\n userIdHashTopicTagId\n userIdHashQuestionBaseId\n }\n nextToken\n }\n }\n`;\n\nexport const questionMasteryByTopicTagId = /* GraphQL */ `\n query QuestionMasteryByTopicTagId(\n $userIdHashTopicTagId: ID!\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n QuestionMasteryByTopicTagId(\n userIdHashTopicTagId: $userIdHashTopicTagId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n masteryLevel\n userIdHashTestId\n userIdHashQuestionBaseId\n }\n nextToken\n }\n }\n`;\nexport const questionMasteryByTopicTagIdWithQuestion = /* GraphQL */ `\n query QuestionMasteryByTopicTagId(\n $userIdHashTopicTagId: ID!\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n QuestionMasteryByTopicTagId(\n userIdHashTopicTagId: $userIdHashTopicTagId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n masteryLevel\n bookmarked\n userIdHashTestId\n userIdHashQuestionBaseId\n question {\n id\n oldId\n createdAt\n latestRevisions(limit: 1, sortDirection: DESC) {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n scorePossible\n createdAt\n }\n }\n tags {\n items {\n id\n tag {\n id\n test\n subject\n topic\n contentType\n }\n }\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const getTag = /* GraphQL */ `\n query GetTag($id: ID!) {\n getTag(id: $id) {\n id\n test\n subject\n topic\n system\n contentType\n }\n }\n`;\nexport const questionMasteryByTestId = /* GraphQL */ `\n query QuestionMasteryByTestId(\n $userIdHashTestId: ID!\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n QuestionMasteryByTestId(\n userIdHashTestId: $userIdHashTestId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n masteryLevel\n bookmarked\n userIdHashTestId\n userIdHashTopicTagId\n userIdHashSubjectTagId\n question {\n tags {\n items {\n tag {\n id\n test\n subject\n topic\n contentType\n system\n }\n }\n }\n }\n }\n nextToken\n }\n }\n`;\nexport const questionMasteryByTestIdSmall = /* GraphQL */ `\n query QuestionMasteryByTestId(\n $userIdHashTestId: ID!\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n QuestionMasteryByTestId(\n userIdHashTestId: $userIdHashTestId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n masteryLevel\n bookmarked\n questionMasteryQuestionId\n }\n nextToken\n }\n }\n`;\nexport const questionMasteryByTestIdCustomTest = /* GraphQL */ `\n query QuestionMasteryByTestId(\n $userIdHashTestId: ID!\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n QuestionMasteryByTestId(\n userIdHashTestId: $userIdHashTestId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n userIdHashQuestionBaseId\n masteryLevel\n bookmarked\n }\n nextToken\n }\n }\n`;\nexport const questionMasteryByTestIdCustomTestWithTestId = /* GraphQL */ `\n query QuestionMasteryByTestId(\n $userIdHashTestId: ID!\n $sortDirection: ModelSortDirection\n $filter: ModelQuestionMasteryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n QuestionMasteryByTestId(\n userIdHashTestId: $userIdHashTestId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n userIdHashQuestionBaseId\n userIdHashTestId\n masteryLevel\n bookmarked\n }\n nextToken\n }\n }\n`;\n\nexport const getFilteredBootcampTestProgresses = `query GetFilteredBootcampTestProgresses($id: ID!, $testId: ID, $testProgressesNextToken: String) {\n getUser(id: $id) {\n id\n createdAt\n testProgresses(limit: 50, filter: {testId: {eq: $testId}}, nextToken: $testProgressesNextToken) {\n items {\n id\n testId\n createdAt\n blockProgresses(limit: 5000) {\n items {\n id\n blockId\n highlights\n questionProgresses(limit: 5000) {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n masteryLevel\n highlights\n questionRevisionId\n question {\n id\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n}\n`;\nexport const getFilteredTestProgresses = `query GetFilteredTestProgresses($wpUserId: Int!, $testId: ID, $testProgressesNextToken: String) {\n getWordPressUserData(wpUserId: $wpUserId) {\n wpUserId\n createdAt\n testProgresses(limit: 50, filter: {testId: {eq: $testId}}, nextToken: $testProgressesNextToken) {\n items {\n id\n testId\n createdAt\n blockProgresses(limit: 5000) {\n items {\n id\n blockId\n highlights\n questionProgresses(limit: 5000) {\n items {\n id\n selectedAnswerIndex\n didSelectCorrectAnswer\n didSkip\n didMark\n didCheck\n time\n masteryLevel\n highlights\n questionRevisionId\n question {\n id\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n}\n`;\nexport const listTestsWithConnections = /* GraphQL */ `\n query ListTests(\n $filter: ModelTestFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listTests(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n blockConnections {\n items {\n id\n index\n testBlock {\n id\n title\n type\n components {\n index\n renderType\n contents\n }\n questionConnections {\n items {\n id\n index\n questionConnectionQuestionId\n pinnedRevisionId\n }\n nextToken\n }\n blockConnections {\n items {\n id\n index\n testBlockConnectionTestBlockId\n }\n nextToken\n }\n }\n testBlockConnectionTestBlockId\n }\n nextToken\n }\n createdAt\n config {\n title\n type\n timeLimit\n status\n }\n tags {\n items {\n id\n tag {\n id\n test\n subject\n topic\n contentType\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n`;\nexport const listQuestionProgresss = /* GraphQL */ `\n query ListQuestionProgresss(\n $filter: ModelQuestionProgressFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listQuestionProgresss(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n question {\n id\n }\n }\n nextToken\n }\n }\n`;\n\nexport const listBlockProgresss = /* GraphQL */ `\n query ListBlockProgresss(\n $filter: ModelBlockProgressFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listBlockProgresss(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n blockId\n }\n nextToken\n }\n }\n`;\nexport const getUser = /* GraphQL */ `\n query GetUser($id: ID!) {\n getUser(id: $id) {\n id\n email\n idOverride\n createdAt\n updatedAt\n memberships {\n items {\n id\n productId\n groups\n startDate\n duration\n status\n userMembershipsId\n type\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n`;\n\n\nexport const getUserInteraction = /* GraphQL */ `\n query GetUserInteraction($id: ID!) {\n getUserInteraction(id: $id) {\n value\n }\n }\n`;\n\nexport const listUserInteractionsByUserId = /* GraphQL */ `\n query UserId(\n $userId: String\n ) {\n UserId(userId: $userId) {\n items {\n id\n value\n }\n }\n }\n`;\n\nexport const getQuestionForTest = /* GraphQL */ `\n query GetQuestionBase(\n $id: ID!\n ) {\n getQuestionBase(id: $id) {\n id\n status\n latestRevisions(limit: 1, sortDirection: DESC) {\n items {\n id\n createdAt\n questionComponents {\n index\n renderType\n contents\n }\n }\n }\n updatedAt\n tags {\n items {\n id\n tag {\n id\n test\n subject\n system\n topic\n contentType\n }\n }\n nextToken\n }\n }\n }\n`\nexport const getQuestionForTestWithBlocks = /* GraphQL */ `\n query GetQuestionBase(\n $id: ID!\n ) {\n getQuestionBase(id: $id) {\n id\n status\n latestRevisions(limit: 1, sortDirection: DESC) {\n items {\n id\n questionComponents {\n index\n renderType\n contents\n }\n }\n }\n connections {\n items {\n block {\n components {\n index\n renderType\n contents\n }\n }\n }\n }\n tags {\n items {\n id\n tag {\n id\n test\n subject\n topic\n contentType\n }\n }\n nextToken\n }\n }\n }\n`\nexport const getQuestionBaseWithConnections = /* GraphQL */ `\n query GetQuestionBase(\n $id: ID!\n ) {\n getQuestionBase(id: $id) {\n id\n status\n connections {\n items {\n block {\n id\n blockConnections {\n items {\n id\n }\n }\n components {\n index\n renderType\n contents\n }\n }\n }\n }\n }\n }\n`\nexport const getQuestionBaseTests = /* GraphQL */ `\n query GetQuestionBase(\n $id: ID!\n ) {\n getQuestionBase(id: $id) {\n connections {\n items {\n block {\n blockConnections {\n items {\n test {\n id\n }\n }\n }\n }\n }\n }\n }\n }\n`\nexport const listTestBlockConnections = /* GraphQL */ `\n query ListTestBlockConnections(\n $filter: ModelTestBlockConnectionFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listTestBlockConnections(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n testBlockConnectionTestBlockId\n testBlock {\n id\n }\n }\n nextToken\n }\n }\n`;\n\nexport const listQuestionConnections = /* GraphQL */ `\n query ListQuestionConnections(\n $filter: ModelQuestionConnectionFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listQuestionConnections(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n question {\n id\n }\n }\n nextToken\n }\n }\n`;\n","export const updateActivationCode = `mutation UpdateActivationCode($input: UpdateActivationCodeInput!) {\n updateActivationCode(input: $input) {\n id\n cohortId\n userId\n }\n}\n`;\n\nexport const createUserInteraction = `mutation CreateUserInteraction($input: CreateUserInteractionInput!) {\n createUserInteraction(input: $input) {\n id\n value\n }\n}\n`;\n\nexport const updateUserInteraction = `mutation UpdateUserInteraction($input: UpdateUserInteractionInput!) {\n updateUserInteraction(input: $input) {\n id\n }\n}\n`;\n\nexport const updateMembership = `mutation UpdateMembership($input: UpdateMembershipInput!) {\n updateMembership(input: $input) {\n id\n }\n}\n`;\n\nexport const createQuestionBase = `mutation CreateQuestionBase($input: CreateQuestionBaseInput!) {\n createQuestionBase(input: $input) {\n id\n }\n}\n`;\n\nexport const updateQuestionBase = `mutation UpdateQuestionBase($input: UpdateQuestionBaseInput!) {\n updateQuestionBase(input: $input) {\n id\n }\n}\n`;\n\nexport const createTest = `mutation CreateTest($input: CreateTestInput!) {\n createTest(input: $input) {\n id\n }\n}\n`;\n\nexport const updateTest = `mutation UpdateTest($input: UpdateTestInput!) {\n updateTest(input: $input) {\n id\n }\n}\n`;\nexport const updateTestBlock = `mutation UpdateTestBlock($input: UpdateTestBlockInput!) {\n updateTestBlock(input: $input) {\n id\n }\n}\n`;\n\nexport const deleteQuestionConnection = `mutation DeleteQuestionConnection($input: DeleteQuestionConnectionInput!) {\n deleteQuestionConnection(input: $input) {\n id\n }\n}\n`;\n\nexport const createTestProgress = `mutation CreateTestProgress($input: CreateTestProgressInput!) {\n createTestProgress(input: $input) {\n id\n }\n}\n`;\nexport const createTestProgressWithBlocks = `mutation CreateTestProgress($input: CreateTestProgressInput!) {\n createTestProgress(input: $input) {\n id\n blockProgresses (limit: 5000) {\n items {\n id\n status\n }\n }\n }\n}\n`;\nexport const createTestProgressWithBlocksAndQuestions = `mutation CreateTestProgress($input: CreateTestProgressInput!) {\n createTestProgress(input: $input) {\n id\n }\n}\n`;\nexport const updateTestProgress = `mutation UpdateTestProgress($input: UpdateTestProgressInput!) {\n updateTestProgress(input: $input) {\n id\n }\n}\n`;\n\nexport const createBlockProgress = `mutation CreateBlockProgress($input: CreateBlockProgressInput!) {\n createBlockProgress(input: $input) {\n id\n }\n}\n`;\n\n\nexport const updateBlockProgress = `mutation UpdateBlockProgress($input: UpdateBlockProgressInput!) {\n updateBlockProgress(input: $input) {\n id\n }\n}\n`;\n\nexport const createQuestionProgress = `mutation CreateQuestionProgress($input: CreateQuestionProgressInput!) {\n createQuestionProgress(input: $input) {\n id\n }\n}\n`;\nexport const createTestBlock = /* GraphQL */ `\n mutation CreateTestBlock($input: CreateTestBlockInput!) {\n createTestBlock(input: $input) {\n id\n }\n }\n`;\n\nexport const createTestBlockConnection = `mutation CreateTestBlockConnection($input: CreateTestBlockConnectionInput!) {\n createTestBlockConnection(input: $input) {\n id\n }\n}\n`;\nexport const updateTestBlockConnection = /* GraphQL */ `\n mutation UpdateTestBlockConnection($input: UpdateTestBlockConnectionInput!) {\n updateTestBlockConnection(input: $input) {\n id\n }\n }\n`;\nexport const deleteTestBlockConnection = /* GraphQL */ `\n mutation DeleteTestBlockConnection($input: DeleteTestBlockConnectionInput!) {\n deleteTestBlockConnection(input: $input) {\n id\n }\n }\n`;\nexport const createWordPressUserData = `mutation CreateWordPressUserData($input: CreateWordPressUserDataInput!) {\n createWordPressUserData(input: $input) {\n wpUserId\n }\n}\n`;\nexport const createQuestionMastery = /* GraphQL */ `\n mutation CreateQuestionMastery($input: CreateQuestionMasteryInput!) {\n createQuestionMastery(input: $input) {\n userIdHashQuestionBaseId\n }\n }\n`;\nexport const updateQuestionMastery = /* GraphQL */ `\n mutation UpdateQuestionMastery($input: UpdateQuestionMasteryInput!) {\n updateQuestionMastery(input: $input) {\n userIdHashQuestionBaseId\n }\n }\n`;\n\nexport const updateQuestionProgress = /* GraphQL */ `\n mutation UpdateQuestionProgress($input: UpdateQuestionProgressInput!) {\n updateQuestionProgress(input: $input) {\n id\n }\n }\n`;\n\nexport const createQuestionComment = /* GraphQL */ `\n mutation CreateQuestionComment($input: CreateQuestionCommentInput!) {\n createQuestionComment(input: $input) {\n id\n }\n }\n`;\nexport const updateQuestionComment = /* GraphQL */ `\n mutation UpdateQuestionComment($input: UpdateQuestionCommentInput!) {\n updateQuestionComment(input: $input) {\n id\n }\n }\n`;\nexport const updateUser = /* GraphQL */ `\n mutation UpdateUser($input: UpdateUserInput!) {\n updateUser(input: $input) {\n id\n }\n }\n`;\n","export const onCreateTestProgress = `subscription OnCreateTestProgress {\n onCreateTestProgress {\n id\n }\n}\n`;\nexport const onUpdateBlockProgress = `subscription OnUpdateBlockProgress {\n onUpdateBlockProgress {\n id\n }\n}\n`;\nexport const onUpdateQuestionProgress = `subscription OnUpdateQuestionProgress {\n onUpdateQuestionProgress {\n id\n }\n}\n`;\n","function handleError(message, error) {\n // TODO add sentry reporting here\n if (error.errors?.[0]?.originalError?.response?.data?.errors?.[0]?.errorType == 'BadRequestException' && !document.getElementById('clockAlert')) {\n const alertWindow = document.createElement('div');\n alertWindow.id = 'clockAlert';\n alertWindow.style.border = '1px solid red';\n alertWindow.style.padding = '15px';\n alertWindow.style.zIndex = '10000';\n alertWindow.style.position = 'relative';\n alertWindow.innerHTML = 'Your system clock is out of sync, so Bootcamp.com will not function properly. Please synchronize your system clock, then reload this page. '\n // const bootcampLink = document.createElement('a');\n // bootcampLink.href = 'https://help.datbootcamp.com/en/articles/5902400-how-to-sync-your-computer-s-clock';\n // bootcampLink.innerHTML = 'Click to read our Bootcamp.com support article for helpful instructions.';\n // bootcampLink.target = \"_blank\";\n // alertWindow.appendChild(bootcampLink);\n document.getElementById('root').prepend(alertWindow);\n }\n console.log(message, JSON.stringify(error, null, 2));\n}\n\nexport {\n handleError,\n}\n","export default __webpack_public_path__ + \"static/media/ari.6f902640.gif\";","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAVJSURBVHgB7Z3PT2NVFMe/9/UHBZG2Cs6oiSkJ8cdKILpz0b9AHWOi48Ip8wc46MbEhcBuVjrzDzijxpDMQnRnYoKYuHPRRhNnFiZ0JmYcA06pQAu0713PLSVTBAud0N5zH+eTvLzQvpZyPz333HPvew9AEARBEARBOHkUHOZaXqcSXv0SdDBNP6bozylorefemej7Bo7itJD5wk4e0OP/eZic4A1XpXhwlK/y1dwhMgxKKXwGR3FWiIIab/N0aj5fzcBBnBVyFFtIrMFBHI4Q3S5HFKYmlAjpJecn+pc0NfwhT2kadX0ARwlllxUAGThKFI7STNqHj7KgXoSjOBshFAXZ/3uOxr0XTNEIB3FSiIkOT3kzbQ5Jx7E1DQdxUggl81kckSdI2Mc38jvtahWWOCfky3w1q5R34RiHKl/hEziGc0KiKjJz/KN1lrq3LBzCKSG7iVpnO3iJ0lCvwSGcEhJHLYMOUY7VJE4JCeB3PpRVSMIhQju56CpOVOrTC6VUH7ZS6+u11CP9sY5eSzkk9eHCnxmzEnf53JNFMIf1iuFHCyWzPDuLxvLsCaFwPYA3d/lcugiGsBVCMmaaMrrBcqXsTV6ZSrObomeZQ2api+qiDMPowFCd5dQKSyHVer3rUx5aqVfBEJZCIp7KoMvQFD3L2WAZ9jJDhDBDhDDDiTMXS6XSD2izQnhMtO/7F4eHh6+DMa5EyImMumhpl/2yLnshFB1Gxkk0pPI8j+VQtxUXIqSDBakjyZLgLBjDWgg1npHxOk4OkzO/pvfNgClskzo12iXaXUF3WKZtMp2Wuaxj0exWuiXDMErbIhjCTkizO1lA95mg38XuOhJWQpoyTM3Rq+Fprpmn2MAmh1DDGAlGRq9PbtM0HJ5KJpOfgwGcIuRT9F6GQQVBcK1Z71iHhZBmt5GDPUxPsdiMUqtwiZAc7JOmSLG+imhdyOrqag5MTmajXPIeLGNdCE34ZcGHlO0q3roQ+layutqJpuizsAiHHMLpGg4KWJWBRWTFkBnWTyWt+vt/7o+gp2jwmmG1LuSn+wcNPBrViFIrpWMa6bjGEB0SfchY3qgFuLlaxa2VKlYqdazStlnzG/s9BmIeRgZijf1wv90mYXmy9Xp99ztbqtG+svuYkfNUQjf27aLIfOMrJOG738sNEWY7CnP87fJ28w00bOLMdepGTkMQHsgxm2m+TWrQW9Twt9d2ji2BK07eOGBPzq/lAIU7f+OXP0oIC06PsqiGwWRmBG++NIqxJ4YQBpy9tUYrg4kYXnn2LMafeRz3yhX8dncN9ze3O36fOI0c4hG7Y65QCNnDiBlLJDF2JomNrVpDzr1yFRvbtYagnXqw//i+KB4b7KN9HGeT/bQNIEZCbsAeoRLSSqucTtAyyjpIZohqguiDrqNS1yj+U8NpgKWQl88kDjwmQizy819bByLktMBSyGmJhsOQ2V5mSFJnhiR1ZkhSZ4YkdWZIUmeGE0m9lbubdaxtBwgrziT1PZ4ejOH7O5sIK04k9VZMhIQZSerMkKTODKnUmSGVOjOkUmeGJHVmSFJnhnOV+krVb2xhhaWQ8ZE+xLzDhZhpE6nUe0xhZVsqdU5IUhfYIEKYIUL2o5ubNTgIYXUTMa3tfh77QhSWwAitgwIsYl2IX/evggtaF8+/kP4RFrEuhBpgSe3eJ8s21FupWViGRVKv+/5Fao5l2EMTc289N/QFLMPmmvn5m6VMxPMWsXtri15+Lh0E+v23n0+y6DrZ3SaWxOS8SORdBT2OLv6PD4qIIvVR31ISv0rdZhGCIAiCIAhCiPkXYjjbvoWOTG4AAAAASUVORK5CYII=\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import firstBy from 'thenby';\n/*\n 0/1\n bowtie\n dragAndDropCloze\n dragAndDropSelectN\n dragAndDropOrderedResponse\n dropdown\n dropdownTable\n fillInTheBlank\n hotSpot\n matrixMultipleChoice\n multipleChoice\n multipleResponseSelectN\n\n +/-\n dragAndDropSATA\n matrix\n multipleResponse\n multipleResponseGrouping\n highlight\n highlightSelectN (NOTE no example questions)\n\n rationale\n dragAndDropRationale (NOTE using percentage here for now)\n dropdownRationale\n*/\n\nexport function getScoringRule (type) {\n switch (type) {\n case 'bowtie':\n case 'dragAndDropCloze':\n case 'dragAndDropSelectN':\n case 'dragAndDropOrderedResponse':\n case 'dropdown':\n case 'dropdownCloze':\n case 'dropdownTable':\n case 'fillInTheBlank':\n case 'hotSpot':\n case 'matrixMultipleChoice':\n case 'multipleChoice':\n case 'multipleResponseSelectN':\n return 'zeroOne'\n case 'dragAndDropSATA':\n case 'matrix':\n case 'multipleResponse':\n case 'multipleResponseGrouping':\n case 'highlight':\n case 'highlightSelectN':\n return 'plusMinus'\n case 'dragAndDropRationale':\n case 'dropdownRationale':\n return 'rationale'\n default:\n return ''\n }\n}\n\nexport function calculateMaxScore(prompt, type, answers, answerGroups, answerMatrix) {\n switch (type) {\n case 'bowtie':\n return 5;\n case 'dragAndDropCloze':\n return answers?.filter(answer => answer[1])?.length;\n case 'dragAndDropRationale':\n const dndRationaleMaxScore = answerGroups.reduce((acc, curr) => {\n const groupContents = JSON.parse(curr.contents || '[]');\n return acc + groupContents.filter(group => group?.[1]).length;\n }, 0)\n return dndRationaleMaxScore - 1;\n case 'dragAndDropSATA':\n return answers?.filter(answer => answer[1])?.length;\n case 'dragAndDropSelectN':\n return answers?.filter(answer => answer[1])?.length;\n case 'dropdown':\n return answerGroups?.length;\n case 'dropdownRationale':\n return answerGroups?.length - 1;\n case 'dropdownTable':\n return answerGroups?.length;\n case 'highlight':\n case 'highlightSelectN':\n return prompt?.match(/.fr-highlight-correct/g)?.length || 0;\n case 'matrix':\n case 'matrixMultipleChoice':\n case 'multipleResponseGrouping':\n // count how many \"trues\" exist in answers 2d matrix or array\n const matrixAnswers = JSON.parse(answerMatrix[0].contents || '[]');\n\n return matrixAnswers.reduce((acc, answerGroup) => {\n return acc + answerGroup.reduce((acc, answerGroup) => (\n Array.isArray(answerGroup)\n ? acc + answerGroup.reduce((acc2, group) => acc2 + group, 0)\n : answerGroup === true\n ? acc + 1\n : acc\n ), 0);\n }, 0)\n case 'multipleChoice':\n return answers.reduce((acc, answerGroup) => {\n if (answerGroup[1] === true) acc += 1\n return acc;\n }, 0)\n case 'multipleResponse':\n case 'multipleResponseSelectN':\n return answers?.filter(answer => answer[1])?.length;\n default:\n return 1;\n }\n}\n\nexport function getScores(prompt, type, answerState=[], answers, answerGroups, hotSpotImageSelection, answerMatrix) {\n function calculateScore() {\n let summedScore = 0;\n\n switch (type) {\n // 0/1 SCORING RULES\n // 1 point for every correct answer\n // 0 point for every incorrect answer\n case 'bowtie':\n if (Object.entries(answerState).length !== 5) return 0;\n return Object.values(answerState).filter(answer => answer[2]).length\n case 'dragAndDropCloze':\n return Object.values(answerState || {}).filter(answer => answer[2]).length;\n case 'dragAndDropSelectN': // SELECT N - can receive +1 for each selected\n return answerState?.filter(answer => answer[2]).length;\n case 'dragAndDropOrderedResponse':\n return answers?.every(([a, b, orderIndex], index) => orderIndex === answerState?.[index]?.[3]) ? 1 : 0\n case 'dropdown':\n case 'dropdownTable':\n return answerState?.filter(answer => answer?.[1])?.length;\n case 'fillInTheBlank':\n // answerState will be string\n const isCorrect = parseFloat(answerState) === parseFloat(answers?.[0]?.[0]);\n return isCorrect ? 1 : 0;\n case 'hotSpot':\n // answerState will be true/false, updated on click event\n const [x, y] = answerState;\n return (\n x >= hotSpotImageSelection.x &&\n x <= hotSpotImageSelection.x + hotSpotImageSelection.width &&\n y >= hotSpotImageSelection.y &&\n y <= hotSpotImageSelection.y + hotSpotImageSelection.height\n ) ? 1 : 0;\n case 'matrixMultipleChoice':\n if (!answerState?.length) return 0;\n const matrixMultipleChoiceAnswers = JSON.parse(answerMatrix[0].contents || '[]');\n const matrixMultipleChoiceScore = answerState?.reduce((acc, row, rowIndex) => {\n const selectedIndex = row.findIndex(value => !!value);\n let newTotal = acc;\n if (matrixMultipleChoiceAnswers?.[rowIndex]?.[selectedIndex]) newTotal++;\n return newTotal;\n }, 0);\n return matrixMultipleChoiceScore;\n case 'multipleChoice':\n return answerState.some(answer => answers?.[answer]?.[1]) ? 1 : 0\n case 'multipleResponseSelectN': // SELECT N - can receive +1 for each selected\n return answerState.filter(answer => answers?.[answer]?.[1]).length\n\n // +/- SCORING RULES\n case 'dragAndDropSATA':\n if (!answerState?.length) return 0;\n summedScore = answerState.reduce((acc, answer) => answer[2] ? acc += 1 : acc -= 1, 0);\n return Math.max(summedScore, 0);\n case 'highlight':\n case 'highlightSelectN':\n summedScore = answerState?.reduce((acc, answer) => answer[1] ? acc += 1 : acc -= 1, 0);\n return Math.max(summedScore, 0);\n case 'matrix': // Matrix Multiple Response\n if (!answerState?.length) return 0;\n const matrixAnswers = JSON.parse(answerMatrix[0].contents || '[]');\n const columnAnswerState = answerState[0].map((col, i) => answerState.map(row => row[i]));\n const matrixColumns = matrixAnswers[0].map((col, i) => matrixAnswers.map(row => row[i]));\n const matrixScore = columnAnswerState?.reduce((acc, column, columnIndex) => {\n summedScore = column.reduce((acc, value, index) => value && matrixColumns[columnIndex][index] === value ? acc += 1 : value ? acc -= 1 : acc, 0);\n return acc + Math.max(summedScore, 0);\n }, 0);\n return Math.max(matrixScore, 0);\n case 'multipleResponse': // Multiple Response SATA\n summedScore = answerState.reduce((acc, answer) => answers[answer][1] ? acc += 1 : acc -= 1, 0);\n return Math.max(summedScore, 0)\n case 'multipleResponseGrouping': // Multiple Response SATA, scored by grouping\n const mrgMatrixAnswers = JSON.parse(answerMatrix[0].contents || '[]');\n // calculate +/- score per row, minimum of 0\n const multipleResponseGroupingScore = answerState?.reduce((acc, row, rowIndex) => {\n summedScore = row[0].reduce((acc, value, index) => value && mrgMatrixAnswers[rowIndex][0][index] === value ? acc += 1 : value ? acc -= 1 : acc, 0)\n return acc + Math.max(summedScore, 0);\n }, 0);\n return multipleResponseGroupingScore;\n\n // RATIONALE SCORING RULES\n case 'dragAndDropRationale':\n // make sure that answer keys are ordered\n const sortedAnswerState = Object\n .keys(answerState || {})\n .sort(firstBy(key => parseInt(key?.split('-').slice(-2)[0])))\n .map(key => answerState[key]);\n\n if (sortedAnswerState?.length < 2) {\n return 0;\n } else if (sortedAnswerState.length === 2) {\n return sortedAnswerState.every(answer => answer?.[2]) ? 1 : 0;\n } else if (sortedAnswerState.length === 3) {\n const firstIsCorrect = sortedAnswerState?.[0]?.[2];\n // only score if first of triad is correct\n if (!firstIsCorrect) return 0;\n // otherwise can us dyad score - both right = max score (2) one right = partial credit (1)\n return sortedAnswerState.slice(1).filter(answer => answer[2])?.length;\n } else {\n return 0;\n }\n case 'dropdownRationale':\n if (answerState?.length < 2) {\n return 0;\n } else if (answerGroups.length === 2) {\n return answerState?.every(answer => answer[1]) ? 1 : 0;\n } else if (answerGroups.length === 3) {\n const firstIsCorrect = answerState?.[0]?.[1];\n // only score if first of triad is correct\n if (!firstIsCorrect) return 0;\n // otherwise can us dyad score - both right = max score (2) one right = partial credit (1)\n return answerState.slice(1).filter(answer => answer[1])?.length;\n } else {\n return 0;\n }\n default:\n return 0;\n }\n }\n\n return {\n score: calculateScore(),\n maxScore: calculateMaxScore(prompt, type, answers, answerGroups, answerMatrix)\n }\n}\n\nconst typeFormatters = {\n multipleChoice: (acc, answerState) => {\n const {answerState: parsedAnswerState, score} = JSON.parse(answerState || '{\"answerState\": []}');\n const selectedAnswerIndex = parsedAnswerState?.[0];\n\n if (selectedAnswerIndex === undefined) return acc;\n\n const updatedTotals = acc?.totals?.[selectedAnswerIndex] ? acc?.totals[selectedAnswerIndex] + 1 : 1;\n const totalAnswered = (acc?.totalAnswered || 0) + 1;\n const numCorrect = (acc?.numCorrect || 0) + Math.min(score, 1);\n\n return {\n ...acc,\n totals: {\n ...acc?.totals,\n [selectedAnswerIndex]: updatedTotals\n },\n numCorrect,\n totalAnswered,\n percentage: numCorrect / totalAnswered,\n };\n },\n multipleResponse: (acc, answerState) => {\n const {answerState: parsedAnswerState, score} = JSON.parse(answerState || '{\"answerState\": []}');\n\n if (!parsedAnswerState?.length) return acc;\n\n const totalAnswered = (acc?.totalAnswered || 0) + 1;\n const numCorrect = (acc?.numCorrect || 0) + score;\n\n return {\n ...acc,\n numCorrect,\n totalAnswered,\n avgScore: numCorrect / totalAnswered,\n };\n },\n fillInTheBlank: (acc, answerState) => {\n const {answerState: parsedAnswerState, score} = JSON.parse(answerState || '{\"answerState\": \"\"}');\n\n if (parsedAnswerState === \"\" || !parsedAnswerState) return acc;\n\n const totalAnswered = (acc?.totalAnswered || 0) + 1;\n const numCorrect = (acc?.numCorrect || 0) + Math.min(score, 1);\n\n return {\n numCorrect,\n totalAnswered,\n percentage: numCorrect / totalAnswered,\n };\n },\n hotSpot: (acc, answerState) => {\n const {answerState: parsedAnswerState, score} = JSON.parse(answerState || '{\"answerState\": []}');\n\n if (parsedAnswerState.length !== 2) return acc;\n\n const totalAnswered = (acc?.totalAnswered || 0) + 1;\n const numCorrect = (acc?.numCorrect || 0) + Math.min(score, 1);\n\n return {\n numCorrect,\n totalAnswered,\n percentage: numCorrect / totalAnswered,\n }\n },\n matrix: (acc, answerState) => {\n const {answerState: parsedAnswerState, score} = JSON.parse(answerState || '{\"answerState\": []}');\n\n if (!parsedAnswerState?.length) return acc;\n\n const totalAnswered = (acc?.totalAnswered || 0) + 1;\n const numCorrect = (acc?.numCorrect || 0) + score;\n\n return {\n numCorrect,\n totalAnswered,\n avgScore: numCorrect / totalAnswered,\n }\n },\n matrixMultipleChoice: (acc, answerState) => {\n const {answerState: parsedAnswerState, score} = JSON.parse(answerState || '{\"answerState\": []}');\n\n if (!parsedAnswerState?.length) return acc;\n\n const totalAnswered = (acc?.totalAnswered || 0) + 1;\n const numCorrect = (acc?.numCorrect || 0) + score;\n\n return {\n numCorrect,\n totalAnswered,\n avgScore: numCorrect / totalAnswered,\n }\n },\n multipleResponseSelectN: (acc, answerState) => {\n const {answerState: parsedAnswerState, score} = JSON.parse(answerState || '{\"answerState\": []}');\n if (!parsedAnswerState?.length) return acc;\n\n const totalAnswered = (acc?.totalAnswered || 0) + 1;\n const numCorrect = (acc?.numCorrect || 0) + Math.min(score, 1);\n\n return {\n numCorrect,\n totalAnswered,\n avgScore: numCorrect / totalAnswered,\n }\n },\n multipleResponseGrouping: (acc, answerState) => {\n const {answerState: parsedAnswerState, score} = JSON.parse(answerState || '{\"answerState\": []}');\n\n if (!parsedAnswerState?.length) return acc;\n\n const totalAnswered = (acc?.totalAnswered || 0) + 1;\n const numCorrect = (acc?.numCorrect || 0) + score;\n\n return {\n numCorrect,\n totalAnswered,\n avgScore: numCorrect / totalAnswered,\n }\n },\n dragAndDropSATA: (acc, answerState) => {\n const {answerState: parsedAnswerState, score} = JSON.parse(answerState || '{\"answerState\": []}');\n\n if (!parsedAnswerState?.length) return acc;\n\n const totalAnswered = (acc?.totalAnswered || 0) + 1;\n const numCorrect = (acc?.numCorrect || 0) + score;\n\n return {\n numCorrect,\n totalAnswered,\n avgScore: numCorrect / totalAnswered,\n }\n },\n dragAndDropCloze: (acc, answerState) => {\n const {answerState: parsedAnswerState, score} = JSON.parse(answerState || '{\"answerState\": []}');\n\n if (!Object.keys(parsedAnswerState)?.length) return acc;\n\n const totalAnswered = (acc?.totalAnswered || 0) + 1;\n const numCorrect = (acc?.numCorrect || 0) + Math.min(score, 1);\n\n return {\n numCorrect,\n totalAnswered,\n avgScore: numCorrect / totalAnswered,\n }\n },\n dragAndDropRationale: (acc, answerState) => {\n const {answerState: parsedAnswerState, score} = JSON.parse(answerState || '{\"answerState\": []}');\n\n if (!Object.keys(parsedAnswerState)?.length) return acc;\n\n const totalAnswered = (acc?.totalAnswered || 0) + 1;\n const numCorrect = (acc?.numCorrect || 0) + score;\n\n return {\n numCorrect,\n totalAnswered,\n avgScore: numCorrect / totalAnswered,\n }\n },\n dragAndDropOrderedResponse: (acc, answerState) => {\n const {answerState: parsedAnswerState, score} = JSON.parse(answerState || '{\"answerState\": []}');\n\n if (!parsedAnswerState?.length) return acc;\n\n const totalAnswered = (acc?.totalAnswered || 0) + 1;\n const numCorrect = (acc?.numCorrect || 0) + Math.min(score, 1);\n\n return {\n numCorrect,\n totalAnswered,\n percentage: numCorrect / totalAnswered,\n }\n },\n dragAndDropSelectN: (acc, answerState) => {\n const {answerState: parsedAnswerState, score} = JSON.parse(answerState || '{\"answerState\": []}');\n\n if (!parsedAnswerState?.length) return acc;\n\n const totalAnswered = (acc?.totalAnswered || 0) + 1;\n const numCorrect = (acc?.numCorrect || 0) + Math.min(score, 1);\n\n return {\n numCorrect,\n totalAnswered,\n avgScore: numCorrect / totalAnswered,\n }\n },\n dropdown: (acc, answerState) => {\n const {answerState: parsedAnswerState, score} = JSON.parse(answerState || '{\"answerState\": []}');\n\n if (!parsedAnswerState?.length) return acc;\n\n const totalAnswered = (acc?.totalAnswered || 0) + 1;\n const numCorrect = (acc?.numCorrect || 0) + score;\n\n return {\n numCorrect,\n totalAnswered,\n avgScore: numCorrect / totalAnswered,\n }\n },\n dropdownRationale: (acc, answerState) => {\n const {answerState: parsedAnswerState, score} = JSON.parse(answerState || '{\"answerState\": []}');\n\n if (!parsedAnswerState?.length) return acc;\n\n const totalAnswered = (acc?.totalAnswered || 0) + 1;\n const numCorrect = (acc?.numCorrect || 0) + score;\n\n return {\n numCorrect,\n totalAnswered,\n avgScore: numCorrect / totalAnswered,\n }\n },\n dropdownTable: (acc, answerState) => {\n const {answerState: parsedAnswerState, score} = JSON.parse(answerState || '{\"answerState\": []}');\n\n if (!parsedAnswerState?.length) return acc;\n\n const totalAnswered = (acc?.totalAnswered || 0) + 1;\n const numCorrect = (acc?.numCorrect || 0) + score;\n\n return {\n numCorrect,\n totalAnswered,\n avgScore: numCorrect / totalAnswered,\n }\n },\n bowtie: (acc, answerState) => {\n const {answerState: parsedAnswerState, score} = JSON.parse(answerState || '{\"answerState\": []}');\n\n if (!Object.keys(parsedAnswerState)?.length) return acc;\n\n const totalAnswered = (acc?.totalAnswered || 0) + 1;\n const numCorrect = (acc?.numCorrect || 0) + Math.min(score, 1);\n\n return {\n numCorrect,\n totalAnswered,\n percentage: numCorrect / totalAnswered,\n }\n },\n highlight: (acc, answerState) => {\n const {answerState: parsedAnswerState, score} = JSON.parse(answerState || '{\"answerState\": []}');\n\n if (!parsedAnswerState?.length) return acc;\n\n const totalAnswered = (acc?.totalAnswered || 0) + 1;\n const numCorrect = (acc?.numCorrect || 0) + score;\n\n return {\n numCorrect,\n totalAnswered,\n avgScore: numCorrect / totalAnswered,\n }\n },\n};\n\nexport function answerDataFormatter(type, progresses) {\n const defaultFormatter = answerState => answerState;\n const typeFormatter = typeFormatters[type] || defaultFormatter;\n\n return progresses.reduce((acc, progress, index) => {\n try {\n return {\n ...acc,\n [progress.questionRevisionId]: typeFormatter(acc[progress.questionRevisionId], progress.answerState, index)\n }\n } catch (error) {\n return acc;\n }\n }, [])\n}\n\nexport function checkAnswerState(answerState) {\n try {\n return !(!answerState || ['[]', '{}'].includes(JSON.stringify(answerState)));\n } catch (error) {\n return false;\n }\n}","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAOCAYAAADNGCeJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAEtSURBVHgBpZIxUsJAFIb/t7s6KS0tcwPwBlDaMY6NMo7hBBwBPQG5AVAkqdTSUrwB3oDSkhaH3efbBQo0GSX5Z3Ym7+XPl7f/LqGJJjijyLwQc+zW9sKgrgSkTs0cjBZAQCQ1akpFeiyMln8mpgFusEQdqdyMZXFYmXlAXanCjKpBGdqhKRk0A8l2qTBvxOgwsOD1posBVqWg7GQo4aTbimfu1ia/POx4FqiQCX2oJdK57u1BzPgoAwUY+nYqx/u4/SElqtCTA4fEwP4i7ED8temgQjqYnt2crhTJeGKkNl0r8JN7F0SsjH6V3jmDl6zsJe7wWQWjgzF9qITRbuYUjntiiQOIbPevu0Q/GwJMpTvc1/8FlcICMNdTeXUvoBWzgPpYoJEynfjwj/nkG2fceZgBmJ/EAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAQCAYAAADwMZRfAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACVSURBVHgBpZPRDYAgDETROAAjsIoTuAIbOQJu4AiOoiPoBHjG+kNqabXJBWjal9KCy86N0AoFZzDEJ8rzLfkCtGhBFwBLpKN/nBOUNRVRBXysBiQCNCAVQAKZAC8gO4ABVQGtzPlhxRXmL/1ITGPV70icggqkmYIIsoyRBdEvNjWuAPkOvgPaoL6516ohLiJ5x3aA/Akci6tGqhu62gAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,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\"","import API from '@aws-amplify/api';\nimport {handleError} from './error';\n\nimport {customQueries, customMutations} from '../gql';\n\nexport async function createUserInteraction (input) {\n try {\n return await API.graphql({query: customMutations.createUserInteraction, variables: {input}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch (e) {\n handleError('creating user interaction', e)\n }\n}\nexport async function updateUserInteraction (input) {\n try {\n return await API.graphql({query: customMutations.updateUserInteraction, variables: {input}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch (e) {\n handleError('updating user interaction', e)\n }\n}\n\nexport async function fetchUserInteraction (id) {\n try {\n return await API.graphql({query: customQueries.getUserInteraction, variables: {id}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch (e) {\n handleError('creating user interaction', e)\n }\n}\n\nexport async function listUserInteractions(userId) {\n try {\n return await API.graphql({query: customQueries.listUserInteractionsByUserId, variables: {userId}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch (e) {\n handleError('listing user interaction', e)\n }\n}\n","export default \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAUFBQUFBQUGBgUICAcICAsKCQkKCxEMDQwNDBEaEBMQEBMQGhcbFhUWGxcpIBwcICkvJyUnLzkzMzlHREddXX0BBQUFBQUFBQYGBQgIBwgICwoJCQoLEQwNDA0MERoQExAQExAaFxsWFRYbFykgHBwgKS8nJScvOTMzOUdER11dff/CABEIAQQBBAMBIgACEQEDEQH/xAAdAAEAAQUBAQEAAAAAAAAAAAAAAQIDBQYHCAQJ/9oACAEBAAAAAPWxMlVICoBUAWRUACoBIBZSTKlMtJ5l9eFyHa8yAAsySlBa4byL4/lzEbD3HooAFhMpCz5u0D6cFbvxVu3ozZ4CQWJJklwbhH34vcN3zFjRcZ2DtNYAWSUyYjxP92E3brGcvThuQ5z1D9AAWSSZaT5T+D5Ox9CylynH82031nnAA+eZBVa8d6jtPWtlyUvi1vgvqjoSACymQOIeeuvbh816/ndRxHHvQ/aYAFkTIeVuc9q2vXNe6Nb0RovVu/xIBZBJ8XmjVOo5/OV/Bi/t+nm3b9siQEWJSDDebdZ2nouevav9fyZbLdBgAU2hMjWvNvEOndzv4jMfLhdk+jrcACm0Epjg2hch3PvGd1vL0a79NfeYAFNmQNV8w4/Ru29L+bLfFVh+Pdh7vCkBFiZSOKeTfg2T139+Pw2RtcMq6J6QoQAptJlJ578fYTqvs67RZ+TkOg5TdvTH1oCCLRMzV8/hHilqn0v6aps/Pw7SNiy2N9GdAgUhaEz8vhji3z0K/RHpu783M+GZ7OYnFe7PsIiBaTNWn+ANLpgmvovpXouueRt6vahlu9egZpIgtpnF/nXoqAffl/Te2eN+067pO1ff77ikiC2l5N8oUpCasrvfr7w105o2Un3zmqSILaY/MTWqVQH2/f674Br3S9PubB7N2WkiCynmn52UU1TKKa6K8xu++cU3rKfBv3rXLUQQWjy35Ht01AmiMn9u8aZ9u+5P6fTXR6YIRZVeHuB0U1IiKoL2Yu2r2ybvmOs97tgptKvz05bRTUpoVKoqyv112/p3XZeqek7YpmLSr8/ORwIsripP3ZO7boy/VNy9OfaKS0q8B8bCLE3EzP0Zi5Niz1noPovaBSWlfgPjcCmzNxMzXmrtyn5uy7R6W2cUotqvz65LApszcTM1Zm9dMz1vsvZ4KUW1f5/cggqt2JrTVVdyt+pj8x1/v3XREP/EABoBAQACAwEAAAAAAAAAAAAAAAAEBQECAwb/2gAIAQIQAAAAAADbUEeNrKkg21CHC1ZtOwbahT640zNsA21Cs4YxjrcABVcOmrragDFNrjflaSsgEGBnXrwtJeQCr6QjSymbAGmYcTXnm47ABif57vWTrEAErnjzne3ABm11oqu63ABPs4vjbCUADre48zBswAZv+vnKqzAAv+/n6qeP/8QAGgEBAAIDAQAAAAAAAAAAAAAAAAIFAQMEBv/aAAgBAxAAAACIAJBEHT1Z5eXOQiHbZbcxpdAIjN117EaysBEZt++Zx0YIjN33a9urkpgRErzfvxmh4wRFha43bo0HECIt42Es5p+AERux392yWil1BEzNnj9JzWNdWhFmWWeXoh6TmpgikkYq831rRaxFJIcVT1e1reMRSSGqgeq7KrJFJIY89r9JZVmSKSQx5/V6Gzrsn//EADAQAAEEAgECBQMEAQUBAAAAAAMBAgQFAAYRBxASEyAhQBQwMRUiMkEIFiMkNTdQ/9oACAEBAAEIAO6fO5/+dsm/0OttVpHdb5pXcAF1klK3kk3qltUo3MOr6n3gSok+lva+9jIaJ8k5xRhPKbcOpLiq6FWla8z3EUqeFcZJ+mL5iLJTyRyji2FGu8Ba6VHIYUiBqW6paKyBZfHPIDFC8xt/6gvmEdEiQIPP/JlnlDX9o5DfdUKMSPXjEjGHixiExgSxlR7K+c6aIZWaneJd1Qnk9XOc5z97qjuowukVUapE97zW0udPVPENI7jHVeIFGWTxzA1mIJEVyUcN3shdYiPy+pH1nMkYkWIcMgWnWQ4VoFURfi39l+k0lrOSQhbaUOHk07Bsb5ajQbWo7W63l3mlhxGpxjAo1PZgUTHDyfDHIE9j5IHQXnhPoZ3lkY1QP8wIXp8TqKMxdK2FA1gSRILnvOVPc2RRqU3jdrYORtTIw+OMaz29/Diph2/nNxr1RsaaOvk+VKjkzXj/AFNJVE+FznOc5ICKQEoS7PUlorOZVOmgMpRAZRU6SXsayuhNjjaiA9uMb7p2VMO3LaMkqHJAsZyvWSFOmcxJevq3tz8Tq3LhOJTwUlT/AKqxMgtShNjQW4VpkbyFBRg/7kxSFGnESNbWI3+CQ+Y1omvyy2ZgSeEZ7Ns0XhI5/wBLcnenSOQgybBDx35zn4m9SHS7abOfr1e5TOLlMngDgF5ZlxrT7R43Mo+nv6NPNLeABQxf96U/mKHL7RC3LopSm0sDzQCptNY6HaSXt6NmeWbZo5f6+Dz3sjrGr5x27WNsgzhs0M8SzrJCZFTwcJkZ2CY1Wpy5iZNejBeHCu5gK7IRXEG1VJwmbSGVYrAqYOnayDWatgE/r7vPr2J/gpJ2WpfGlmTOmAoRYVqh9TuX262DkEvCJkQqcJyQw2c8TzuUjnnF5BoblHFO+GuSHNKBHs1MAEsJRey/E20/kVDUwqqVg25bxvAQyZ0hKrqQw8H/ABTHlOIT3Mh7RXyvGrn2FURvD1k0rB8jPcAWZHgRmRDiH4c0WYki8ueMX4bnNYiufsmxus57i4NP3ViZsitGcyZ0d/66dkQnlOcwkf8AOWkIcKeyeIdtF8wZyWF2Fol8FIAhp0y1k7NepUQ08HTNPDYyU7L8Pcp/0NO5qSLbzZ6+F9qrHRMntHZXMEDunuvfpFJDFjoqEai4w74pkQj0HIb4k/TIa/l1ZDanKW1lEpIn1JjypVlYBkyunLkSwkdl+H1VtfKR4UW0e6ajslX6qX31Gifs94x+RIjI42NajUXJUNhUXnmVBd7BmsIiczbWHDjGNItb9+zWanao0E0hk6YSHPnAVfidS4/n3BEWwOMMyWkVfznTffW0EsNdZCVpBte1G49MUbHJ7njBRvt1FOoNdsUyiGiR0XJLSyERU0+UKrmRH5AsoVoBDw/hS5UaDGPKl9WepablaGj1LnYru3R3qTx9NrFw3HJziphvdudT2qsOuZlUv7xNc6cEimGML0E8q5ZWlnRTA3dL093+BvVWR/wbGxg1ECVPn9TurE/dzvgxCE5xV9HT3rMWuGCr2SJPh2MUMyEq84/3zeqZ9zS2AB63JW0fLR8BjYkqO50iQo2MdkuxEwngPXzLPSbmFsFRAnx7ODDnRvVznPr3fdqfRKUlnY7rv+x73YLKtfEqJnK+jnGO8LkXNU2641mQ2RXap1PptlcGJIZ7rm3ShVOv3Fk7R5CBvfJc9FSL5eSjeOPBflrMRrYrViT5Uqme8HQLcP1unsaM33b27rtcqJ9vZdQt6sN+vy2Un1cdoplavCsN+M6V7nMu2SKyy6mR1l6NsAmw5CwJ8GWk+OroxJYo0hZMiwDluRXSBomsqyMgRl1az/0B1HpJSOTwuVPu/wCSu2qr6jU4/o4zjOO7V4VME7xImaHdpR7RUSSThMnQ5UUs0CxZcoDtYt0NAigKKsfXWt7IRRI0zTEhqr3e3UQaGh1tk3W57rXXNesHfbeQQmPKbctiNtu03l4b7Ud/9YiovsvT7ZmbBrsNxOoUBsDaJyMp5TgyHBWtlksK0jn2MRzSKFKxqCkhe7aqxSatbKulgJG03UQF+0i51iv36707vzCxfWnZVwT1a5MavKIuaLsv+mbwRy9YIYlLTWQcobAku1hvLsisA6I9QDVgiFUDwT6acI9FJ+spKc/3P8nLVUBptOjv7xfRz257r2jE5b4VTP1tbPSiUsrIUssMzTCEcF3rnlrOjpEgR4zoblFXSn50tsvrNZZFf6+fR/kTY/Wb8KGi4vp5789wu8L0xi8oi5+UxFVi8ORc1w6IY0N1uNXWzHpSsZLCeC/pNLdEtrWtJ9vrIbz+pm5vxcX0quIvdOyZHf4mY3HMRyYntkQ7o8qOVLSyJGuHvIE7ockZ21Bkh7Fr9yNft9bBjD1N25jFX1E9lxO6d4i8I5uD7PTj37ClhmRhwplUx0ivho+kM8tbOA+pmMn1dbLb9rrqPy+p+zL6y43+u6dwu4I3GL7dvymOThcP7hei6QA59feA1STxWJS5pCquoawrvspnXgyF6n3yIvpXC43P67Ji9mr+Fwa8tTP6xv8AHCJ+3nPA4vAmMkxq2QyDHpCOkHkvzTpLZWsUhGfa64f+pbTi+lcLjcT8dkxezUwf8G4mN/jj/dmQTpHmRCLWTEm2r35VTWworHr0Htn22hcvX7KZ1z/9R2XF9K4X8438Yn47J3T+GD/g3G9nL7ZJcrWjVNW/7N+CCyROBEf0op4dHEt4kL0L3//EAEQQAAIBAgIECggEAgkFAAAAAAECAwARBCESMUFRBRMiMDJAQmFxkRAgUnKBgqGxI0NiwTNTBhQ0VJKTtMLRYGNkpLL/2gAIAQEACT8A/wCj5HxWJ/kwWy95jYCv6NwIm95nc/QCuB4L7gz00GFi3CASHza9TQYldoMXEnzWpOUOnEekh61IEjUXLGpjDEcjIBy2q4JzLudJz6FEg2qc6Y8v+EinRrCoY9xzPjesZJBiEzQq+gyn9xVkxY5Ky6lk7jubrDhUUXJNMeKvZVHarlTNnYnIUAXOqjpt7OwUL1cjdaoquCKbRxsGv9QH/Ff2mG0cw+x6vJ+FhlIxTDtyHsfLS6TtlCp20wL9s9nL/aKJCMc3PSfw3ClKrvOs1HnUQpbUS0XbG6jycj4gU1ocWNBxukHVulBhpHQb2tZfqan4w6RmxUuvSYmslQaEIHkTQ0mbMKe0d7blFLxjnW2wDcBuFLQoehQQRY1+U9kO9WzU0eVGY3HwrUyA9V6a4cP8qOGNZSyDPxfUPlFJp6NkhjHaNPpuTdzs9dc0vG/g3RPwNHkuCvnl9DRzMAv1VQ0ciMjrsKsLEUr6MJ/C/VG/RNHYGkYdlTsFLyRQ9btIbdxrJ4yHX9/rRzin8g4DdWhjOL5b8aRy0jOWh4GviTtrpu2k/jWj82quFn0rakyFYzEqP+5E1qgEkfZdaFr76RBbIvM/Fr5muGIAD/IGl9dVdBMVLG3eoNHJOKlT3XJ6tqZHEXultEHyFC7HNr+nhOeBQLMkdl0viLGpUxAYNoEKYpFJFgS4OdqZWIGTDWe899b6xiLLEGBPEJIjA/ok0gp7xUaI+GiEYeO8buB7TLa9RsIMSVl7lkACsPjakzGDjVn8H5PVdccDkeNq6MUaA+Oq1ScViIZHQkbe1t9I9PZNZ5UBWFM+KxswKgdkRjXRR8SwAnkHb6r2uLT/ABMBX8zLwWjgMMIMWiYiSZwDJG/asRsBsWp0fD4bENhoZEyWTijmy93pzY02hGtOCLVnHfyo5GkUzxxrGGIzUONI2Pf1b8yZR5AtX50Mzn4MBX6vtXYxT+i+QvkKMymMhZNKM8knPO2qsSCPdNTH4KajeXFTBWWMjRtG2uQnYtSAitRmkUeCckfbqrBVAuSdQA21dYE5GHj/AE+0e9q/u8i+bVvav70a26vQraD8idUOiSL3NQjTZxK11OvoaxryrCjlS8bmmjn8a0TPMFjUgWCogtoqDqAtWeJnPFwL3kgFj3Ctj/fqrWbEHQ8EGbGnJUWAvR6KN9GNOEEuKjjdibBVdszn40vKZdNjvLULMK1VY3FYcfA2rDr8azOqKIa2NOXlY6bbkA1KBW0r1VsoofvmabNFdzUnRZvrXKwmHIMje0W7NLYAWFChQLJWVYhYoo0LSO2pVAuTlWkuCgHF4aPu2u3ea3KtH+In2J6rIsaFkV3Y2CqI7knwvWIEkZ4yLTtkyk6x6NEcHSSAiUDOF97b1o3BFwR6VFIKNjOyQD52rfR0YxcDvvR5MTx6XgTWKjmTUdE3KncRsPU50hw8KGSWWQ6Koq5kkmgYeCY7Lp2s+KZMtNtybh6k36MBiG+kDf7PVyjfG6L+LIwX60bJbzqxdUDC3RUCvaSuFn4PxiWSRtASQzr/AC5lOw0ow/CuE0Vx2EvcAnVJHvjbqOKTD4XDoXllc2CgUXwvAkb8iDtTldTy/svrGTEYVbLHjRypo/f9sViUnw0oukkZuD6cpUImjPfHnRs0ELlgKzWeEoN1xRzYk+RtS6cUoAZdhBqUvArhRsDIx5UMw3Gn0oMTCksbb1cX599JzdMNhlNpJ5Nir+5rGNxCMf6tg0NoYF3Ku/e3MYmytbjcO+cUoGwiozgOEXyETteOQ7kf0D+BhZGA3sRYDzo5YjDTJ4kANXThc2o6kfS8dKj2WPkbCp9GeHkuCodJI9zqddECbg4rNAN8ExP2bnpuKwmEj05G+gUd7HIUpiw0Y4rB4YG4ii/dj2jzJr4GpRJicNGrRTE8qWPVyu9a2Qo/wjcPWXEzqze6cm+hrNdbVqSQ6Pgxo9m1aprq/wA2qnaPCS4k4fE7jhsUfshN62HnZMhbHY77RJzj6MEjnDz+5MNH6GxoXSaJ42HiLUtjHKy2o3urwtf20/cgg0dKHEJxqd1waW5uxUeznrNdJJBl7tdJRJA3jTXbF8G4Sdj3yRBjzj6MUas8jHKyKLsfgBWRxmILRj2YkARF+CjnZdLGYVRBiht0kFg/zChZZLSedPZJbFT7Mq6jQsbGNmOo1yRrJ2mx210Wax8dVfkTjEL4AZih+JHwRg1f3hEOcIGIxqDg+DxxXIfyS/PE/wBTnAixI3DY/wAppgyToy6S5g7QQfRMco9BoeyRcAEChbjXYE9woZBsqAZZQFYHaGyNa3wcN/EKAec1PLiMa/yARpz8t5+DplxGCJObQnJ4/k1j0GzqMjR/ESaVVJzIYfiBT9RQ/Ekj41vE6hR5KFD8uz6095MDM8B8L3XnDlwdwXh4vmmJmPUNXoPInaNvijXpvwkmXCyDczLdT9abRE0MkV9xIsD5ismmiEhH64+cOrFxxf5UKJ1LsSKfI1/ZsamHnT34wA32vXR46xHc+dHRSUiGYbDpDLzHObZ4HPi8CN1ObiypPETN0VJ2E7L7DTKHYcRIwsQHYcg/4hasp4YmaPerpmB5i1dHEYWKUfOoPN/mDCP/AOug57b6u6mKs5IVu5uVG3wK1ks8RZhuZku3ka1ng+Hm+xDg0P8AkIee2H1Vu8jKi+LG1Cyx4UBTv4tgP3rZAGHjIp/5o3C4fifjCTGftzf/AIf+lj5/d6gvoyX8gSKOfEuPNr1rKEnwhzo54fhTGJ8JGEo/+ub9nB/6ZOf3epr0/wBjX8o1fimixKEDcVFB1haSCTRY3sxDcx//xAAvEQABAwIEBAQFBQAAAAAAAAABAAIDBBESITBRBRATMRQyQXEgIkJSYTNAcoGR/9oACAECAQE/AP28lQG5N77rxEn3Lryfeopw6wdkdWab6WoknmCQe6hfjYNxpuyY7exRuSj8FI75iNSVoa9wvdFZj0VxypHESDTOQJTiSSfVEprhsjZB5sBsqeMmXEOw05SBE/2Kjfc2UowvcEFnsjdpVLbpjTrZDkwH3UWTipSHPcgbLqFPdcql/TGm5jpp3/gp1NgbduZWHNW5WCpXAtI20wwNJNszymguSWj+kWkGx78ntsVE9zDdRSCRo31BkQn0lPWMxAWduFLA+CdsTxbMZ7hcUjDZI3js5tkAqM5katJJgfh9HLjMGIRzt7tyKqofE0DXjzNFwm3JN+6gdhkH+aoNjdWbU09ndnCxVJGY4jE4diR7hcSpOjJ1GN+UoEghRuxMadWjf5mH3CtkqqITQSN9SMlIwsw32VI4GO22rC7BKw/lDsiFxeBkRa9uWInJUJON4vlbVHcKM3a07gKy4wwvcwXyaCVRNON59ALa0PkZ7DlxTzO/iqL6/h//xAAuEQACAgECBQMCBQUAAAAAAAABAgADEQQxEiEwQVEFE2EQIBQiMlJxM0BygZH/2gAIAQMBAT8A/t6tMXwW28Qaav8AbPw6fslunKZI26tFGzNEX4gT4nAI1YIIxL6zW58dNRl1HbIiAYifZrk2PTBxKHLIpxE2mAe8KzA8zXLmt/jEG3SG8oUch4igRqVc5Ofoahxlpq7B7bKdzt06gTag+RHrIVTKWyin6c/BmDNWSLWz09DVvYR8CPzQSkFa1gPMQJpsglnOO0dgSQo5TW/1T00sWmhP4iaoM2G5A7QNymZn6a5SHB89MsSFBPITvKNSAAr/AOjFYEZG0EU5AxLqw64Il1ZrbHbqHaVavUaN+EtlPBlV6X6c2IcjB5eDPSr/AHK7UO6mNNYv5VPRH2aqvjTPcT0W8BrKG2baaa38J6k6E4Vjgx8YBG01CcdR/wCw9Vi2nvDqcEHImtsFtq2qdwDPTNZ79Xtu35lhUEES1SjsOrq0yobxMkH4mkt9m+t+wPOVOHL48zWLizPkdW5eKtx8R94pno97Wh0bnwjea4DgU9wcdU7S0YYjwYJ6O3AjnHNiBNc2K0HcnPWu/W38mCel/pT/ACmv2r+3/9k=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAARvSURBVHgB7d1BiBtVGAfw/3tJMOvF5mDBW/YgCGJNtGBbqYy7B0EKBrQXkVYFpVePXhQ9eVHrbUGwUbzVw66WKkU3W6sIBZtAC6IVkpu1LU0Py26WzryvLy2l0L5JJpuZfd9svx+ELDOTHdh/5r2X782+AEIIIYQQQgixtRQYunjxSqBJHQapAIqqSV5z+fIlJNQZPsiYpX0v7FoEM6wC6f7Vr1IhOkZAgAlNEMhdhC7CG3N7X6z3wIQGE91/+jVTiNqbCWPTFGZRKp07+/uFGphgEcjwyjCIWvbHHdh6lYiw/EerXQUDLAIxhdBXGHdU7JXyFRjwHsi/f19t2LajCv+CM2fOB/CsCO9MI+59YYg+Kq6tHp2tz17HlIgIndOdHRtKv0WFwmeOQ1RRq0P2eQUe+Q9E6addm40x7z3+xM6jSOs06taA8nq73f18sLr6iN3w4f0npQCeeW+y7J/JOcJZXS81kYFarYqNMPzCuVOpKjxjM+y9V71embqZchleKQ+Vy5n87jSwDeRBJYEwI4EwI4EwI4EwI4EwI4EwI4Ewk3iC6sprRwJbDjqstJ2vIFTBzP+DNTDUsUW0jjGFpV0/NhPNTo4NpN84Ug2LOIatnDjaBKaB3KXQvVHQc/XFZm/UYSObrP7Bd2pRkdpgHkYuEGZLoTl34eXXR85OxgYyvDIi0i2C8jlxtN1UoIvL7cab1bgDYgMJS5AwslEphVHs7KQzkKuvvtvg2HFvHyo4f+CNwLXHGYiBbkBkyc4CFA65dmj30eScxRPpIbhnJ2P6EMXmPqXtSsV0CfJJnRkJhBkJhBkG92Ulow68BD23H3h4xrlfX/rP/cLBAPSnLSn9cAp5kItA1MEG9Px+bEq5DPX8HmB9A/TzaXCXiyZL792Naal9zyEP8tGHxDRTE5kpIw+kU2dGAmFGAmFGAmFGAmFGAmFGAmFGAmHGW+lkXG0q/RPad98nH4w/znPty0sgU9Wmsua59uWlyUqjNpU1X7UvP33IVjVT0/BU+5JOnRkJhBkJhBkJhBkJhBkJhBkJhBkJhBkJhBkJhBkJJBbBBz+BrK2DvfUBfPASiFn+FazZi2M4J+KDl/kQOnEKNGMrvnt2QyWp/KqUFuCm8QeQnaDCb2dBv/i5D9jbjKE5vgQMHwkUFj7F1GwY5v2PwZ106sxIIMxIIMxIIMxIIMxIIMxIIMw8QIH4qU1NKh+BpFH78lSbmlQuApm69uWxNjWpXPyfeqLaF7k3+q5NTSo3KzmMq30Z7otgJiSjLGYkEGYkEGbcgSj0ILJFcA773ItgEvIxJMkzrZIHYjc2IbJEKiLnWvDOQB79bmHFPrUgMkGE7pMnv/netS9+ZesQb9uX9iFSZT+/XgsjPR+3PzaQxxYXeqTMnISSnlthGD1f/yn+GxJGDnt3Hv+yE4bqGVLoIi/lUp6G1bRWGOpn6yebI4tqiW94Gq4Hb6Bfub3qNb+Fljl+f4gi9EjTChF9/dSJb2XkKoQQQgghhGDpJhNET8T1kN4PAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,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\"","import {colors} from '../styles/theme';\n\nconst config = {\n classrooms: [\n {\n name: 'Anatomy and Physiology',\n tagId: '65dcea9c-ac11-4e6c-aac0-89fa2f979afb',\n route: 'anatomy-and-physiology',\n themePalette: colors.brandPalette.blue,\n classroomDescription: 'Anatomy and Physiology is one of the most important classes for your future career. Learning how the human body works will help you understand the body in health, disease, and treatment.',\n questionCount: 1432,\n icon: 'icons/bio.svg',\n educators: [\n {\n firstName: 'Brianna',\n avatar: 'images/brianna.gif',\n },\n {\n firstName: 'Lance',\n avatar: 'educators/lance.gif',\n },\n {\n firstName: 'Parker',\n avatar: 'images/parker.gif',\n },\n ],\n contentTypes: [\n {\n name: 'A&P Videos',\n route: 'videos',\n content: [\n {\n type: 'Course',\n name: 'A&P Videos',\n description: 'Get to the next level of A&P mastery with our A&P Videos.',\n content: [\n {\n \"id\": \"f60d5c4d-f49e-49a6-a8b6-8dcc05eb19f7\",\n \"classroomName\": \"Physiology\",\n \"route\": \"circulatory-system\",\n \"name\": \"Circulatory System\"\n },\n {\n \"id\": \"694d48d6-a3be-459e-9105-5231188cf412\",\n \"classroomName\": \"Physiology\",\n \"route\": \"respiratory-system\",\n \"name\": \"Respiratory System\"\n },\n {\n \"id\": \"a5731c48-a7ef-47b7-a1bb-af12bd2624a6\",\n \"classroomName\": \"Physiology\",\n \"route\": \"immune-system\",\n \"name\": \"Immune System\"\n },\n {\n \"id\": \"209c621c-8992-4603-a973-d5e2595786c8\",\n \"classroomName\": \"Physiology\",\n \"route\": \"nervous-system\",\n \"name\": \"Nervous System\"\n },\n {\n \"id\": \"3d855b4e-b167-4c52-b31e-291c48e0b552\",\n \"classroomName\": \"Physiology\",\n \"route\": \"muscular-system\",\n \"name\": \"Muscular System\"\n },\n {\n \"id\": \"c0dc2552-b3eb-426e-9a2b-fce2cedc5676\",\n \"classroomName\": \"Physiology\",\n \"route\": \"skeletal-system\",\n \"name\": \"Skeletal System\"\n },\n {\n \"id\": \"f2de33ff-cb1e-4236-9776-6b28bf26b176\",\n \"classroomName\": \"Physiology\",\n \"route\": \"endocrine-system\",\n \"name\": \"Endocrine System\"\n },\n {\n \"id\": \"7190197d-cd85-4b1f-8231-2fabcef2d393\",\n \"classroomName\": \"Physiology\",\n \"route\": \"digestive-system\",\n \"name\": \"Digestive System\"\n },\n {\n \"id\": \"b2c2896b-1d51-41df-8934-d10c1c380c3a\",\n \"classroomName\": \"Physiology\",\n \"route\": \"excretory-system\",\n \"name\": \"Excretory System\"\n },\n {\n \"id\": \"1f64f9b6-6303-4a5a-9096-8d9bbec227c5\",\n \"classroomName\": \"Physiology\",\n \"route\": \"integumentary-system\",\n \"name\": \"Integumentary System\"\n },\n {\n \"id\": \"bd06bab1-e9ef-430b-ab9f-d912285e9b1c\",\n \"classroomName\": \"Physiology\",\n \"route\": \"reproduction-and-developmental-biology\",\n \"name\": \"Reproduction and Developmental Biology \"\n }\n ]\n }\n ]\n },\n {\n name: 'A&P Bites',\n route: 'bites',\n content: [\n {\n name: 'Question Banks',\n content: [\n {\n \"name\": \"Circulatory System\",\n \"id\": \"f4fd0992-3194-4529-9c36-4a50f0dd0498\",\n \"route\": \"bank-1\"\n },\n {\n \"name\": \"Respiratory System\",\n \"id\": \"976d9d41-0e68-4999-a5a4-3889bd11a5cf\",\n \"route\": \"bank-2\"\n },\n {\n \"name\": \"Immune System\",\n \"id\": \"7f9dda79-45e5-4bd7-99f8-d406131ea889\",\n \"route\": \"bank-3\"\n },\n {\n \"name\": \"Nervous System\",\n \"id\": \"e56cd1d3-411a-434a-abae-008c51fe519e\",\n \"route\": \"bank-4\"\n },\n {\n \"name\": \"Muscular System\",\n \"id\": \"f32522fd-498b-4bc9-b721-7b6de0cdf907\",\n \"route\": \"bank-5\"\n },\n {\n \"name\": \"Skeletal System\",\n \"id\": \"175cfab9-1896-4544-902d-872f2afa12e1\",\n \"route\": \"bank-6\"\n },\n {\n \"name\": \"Endocrine System\",\n \"id\": \"320c579a-9c24-43ee-a2cd-a3dc55b4d6c7\",\n \"route\": \"bank-7\"\n },\n {\n \"name\": \"Digestive System\",\n \"id\": \"588554ef-5edf-4747-90a9-1afa6d821be7\",\n \"route\": \"bank-8\"\n },\n {\n \"name\": \"Excretory System\",\n \"id\": \"bdd9eed6-985e-4d90-849c-03d70ee80886\",\n \"route\": \"bank-9\"\n },\n {\n \"name\": \"Integumentary System\",\n \"id\": \"b9f7339f-74f1-47f4-8cf4-aa0fa49a3523\",\n \"route\": \"bank-10\"\n },\n {\n \"name\": \"Reproduction and Developmental Biology \",\n \"id\": \"d2e59217-e32d-4f7f-916c-9d333794ef00\",\n \"route\": \"bank-11\"\n }\n ]\n }\n ]\n },\n {\n name: 'A&P Banks',\n // icon: ,\n route: 'qbanks',\n content: [\n {\n name: 'Question Banks',\n content: [\n {\n \"name\": \"Circulatory System\",\n \"id\": \"248bbbc9-0724-486d-b456-8bb48d309597\",\n \"route\": \"bank-1\"\n },\n {\n \"name\": \"Respiratory System\",\n \"id\": \"1d2ebda7-6049-420d-8bfe-f61d23184943\",\n \"route\": \"bank-2\"\n },\n {\n \"name\": \"Immune System\",\n \"id\": \"f45e2ec1-21e2-4e36-bf94-a593ab1a40e7\",\n \"route\": \"bank-3\"\n },\n {\n \"name\": \"Nervous System\",\n \"id\": \"8210ccd0-064e-4a9a-a073-8895bfe70e0c\",\n \"route\": \"bank-4\"\n },\n {\n \"name\": \"Muscular System\",\n \"id\": \"1596ee53-3cb3-4d42-80fa-6dabccc173d4\",\n \"route\": \"bank-5\"\n },\n {\n \"name\": \"Skeletal System\",\n \"id\": \"2499026f-20ef-466c-9f86-dffd53444249\",\n \"route\": \"bank-6\"\n },\n {\n \"name\": \"Endocrine System\",\n \"id\": \"4bf81f3c-8767-41d2-af31-8d5fecfe447b\",\n \"route\": \"bank-7\"\n },\n {\n \"name\": \"Digestive System\",\n \"id\": \"7b5eef3e-7197-467f-a020-33e11c69c446\",\n \"route\": \"bank-8\"\n },\n {\n \"name\": \"Excretory System\",\n \"id\": \"3b0ffb77-4524-4ece-b9ca-fe69237697c0\",\n \"route\": \"bank-9\"\n },\n {\n \"name\": \"Integumentary System\",\n \"id\": \"5d11b74a-2543-46fb-b39f-e1390a4e301b\",\n \"route\": \"bank-10\"\n },\n {\n \"name\": \"Reproduction and Developmental Biology \",\n \"id\": \"b4b1b56e-ab42-40bf-b541-dbb37de861bb\",\n \"route\": \"bank-11\"\n }\n ]\n }\n ]\n },\n {\n name: 'A&P High-Yield Notes',\n // icon: ,\n route: 'notes',\n content: [\n {\n name: 'Downloads',\n content: [\n {\n name: \"Bootcamp High-Yield A&P Notes\",\n description: \"A high-yield review of the most important concepts in A&P\",\n route: 'https://drive.google.com/file/d/1lYPQBu3AIsi1hoCAdVVi3yPSvkNZEyvp/view?usp=sharing',\n },\n ]\n }\n ]\n },\n ]\n },\n {\n name: 'Gross Anatomy',\n route: 'gross-anatomy',\n tagIds: [\n 'd8496b7d-8fbb-420f-8b05-91e35ad45bc3', // ULLB\n 'eb01603a-62af-4b68-aa9d-b160a3f28279', // Head & Neck\n '7ff0f5aa-9081-4299-bf2e-4944e24582e5', // TAP\n ],\n themePalette: colors.brandPalette.blue,\n icon: 'icons/neck.svg', // TODO add gross anatomy icon\n classroomDescription: `Welcome to your first patient, Doctor. Be sure to watch the video lessons and practice with the qbanks. We'll make learning anatomy easy, so you can ace your exams.`,\n questionCount: 6064,\n practicalSections: [\n 'Upper & Lower Limbs, Back',\n 'Head & Neck',\n 'Thorax, Abdomen & Pelvis'\n ],\n contentSections: [\n 'Upper Limbs',\n 'Back',\n 'Lower Limbs',\n 'Head & Neck',\n 'Thorax',\n 'Abdomen',\n 'Pelvis'\n ],\n educators: [\n {\n firstName: 'Adam',\n avatar: 'educators/adam.gif'\n },\n {\n firstName: 'Whitney',\n avatar: 'educators/whitney.png'\n },\n {\n firstName: 'Lance',\n avatar: 'educators/lance.gif'\n },\n {\n firstName: 'John',\n avatar: 'educators/john.gif'\n },\n ],\n contentTypes: [\n {\n \"name\": \"Gross Anatomy Videos\",\n \"route\": \"videos\",\n \"content\": [\n {\n \"name\": \"Videos\",\n \"type\": \"Course\",\n startingIndex: 0,\n \"content\": [\n {\n \"id\": \"51dc7e4c-be4a-47c9-bbd9-bcd35a56f55e\",\n \"route\": \"intro-to-anatomy\",\n \"name\": \"Foundational Concepts in Anatomy\",\n },\n {\n \"id\": \"478e27a4-4982-4acd-9b95-495c66df1805\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Upper Limbs\",\n \"route\": \"pectoral-region\",\n \"name\": \"Pectoral Region\",\n },\n {\n \"id\": \"c4115d51-962b-4a9a-8d9f-1fe318437073\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Upper Limbs\",\n \"route\": \"scapular-region-and-posterior-arm\",\n \"name\": \"Scapular Region and Posterior Arm\",\n },\n {\n \"id\": \"e5595b27-1c40-4b8d-8a0f-deb2af4bec8f\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Upper Limbs\",\n \"route\": \"axilla\",\n \"name\": \"Axilla\",\n },\n {\n \"id\": \"825d2dc7-eca1-4fc6-be2e-abfb869ebb45\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Upper Limbs\",\n \"route\": \"anterior-arm\",\n \"name\": \"Anterior Arm\",\n },\n {\n \"id\": \"afe5fc13-1927-4678-85cd-1c842690aec2\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Upper Limbs\",\n \"route\": \"forearm-and-cubital-fossa\",\n \"name\": \"Forearm and Cubital Fossa\",\n },\n {\n \"id\": \"b8c8dab4-7b3e-4585-a0e7-3c99db5a7dd0\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Upper Limbs\",\n \"route\": \"hand\",\n \"name\": \"Hand\",\n },\n {\n \"id\": \"2eccdeeb-95e0-4cff-85b0-d8e2cc9c198d\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Back\",\n \"route\": \"back\",\n \"name\": \"Back\",\n },\n {\n \"id\": \"99630b55-326e-42f4-b6a3-b76572ce4e22\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Back\",\n \"route\": \"spinal-cord\",\n \"name\": \"Spinal Cord\",\n },\n {\n \"id\": \"5041173e-238a-4ef2-956d-f7397021aad8\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Lower Limbs\",\n \"route\": \"anterior-and-medial-thigh-knee\",\n \"name\": \"Anterior & Medial Thigh, Knee\",\n },\n {\n \"id\": \"f765df25-2a94-46bd-98dc-e720666a4178\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Lower Limbs\",\n \"route\": \"gluteal-region-posterior-thigh-popliteal-fossa\",\n \"name\": \"Gluteal Region, Posterior Thigh, Popliteal Fossa\",\n },\n {\n \"id\": \"c6192c3d-9262-4370-b5fd-b1135ff027b4\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Lower Limbs\",\n \"route\": \"leg\",\n \"name\": \"Leg\",\n },\n {\n \"id\": \"79dc7ec3-8278-4ccc-8504-796782dcc997\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Lower Limbs\",\n \"route\": \"foot\",\n \"name\": \"Foot\",\n },\n {\n \"id\": \"fdbebc14-710e-4b63-99e4-99629c2ab136\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"external-examination-of-the-brain\",\n \"name\": \"External Examination of the Brain + Skull\",\n },\n {\n \"id\": \"fdf1bbac-c504-4c27-b8f8-575cbe8e78ef\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"anterior-triangle-of-the-neck\",\n \"name\": \"Anterior Triangle of the Neck\",\n },\n {\n \"id\": \"1f3df0f5-c65a-417d-99f9-25937a150cd0\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"posterior-triangle-of-the-neck\",\n \"name\": \"Posterior Triangle of the Neck\",\n },\n {\n \"id\": \"63c82c5a-481b-4ea7-93d3-d47f91b95645\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"occipital-region-and-posterior-neck\",\n \"name\": \"Occipital Region & Posterior Neck\",\n },\n {\n \"id\": \"b57b3b32-b585-42a7-8a16-d1d3c1c11b3f\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"face\",\n \"name\": \"Face\",\n },\n {\n \"id\": \"c62affbe-7a90-4849-b45e-0a1dfb99a22d\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"infratemporal-fossa\",\n \"name\": \"Infratemporal Fossa\",\n },\n {\n \"id\": \"a3e373ad-f091-4a6f-af30-f266fd82f85c\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"orbit\",\n \"name\": \"Orbit\",\n },\n {\n \"id\": \"6e70261d-b3f2-4a17-8321-277f1dcb114e\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"pharynx\",\n \"name\": \"Pharynx\",\n },\n {\n \"id\": \"349bcf41-ba82-4338-9916-006b584cbfd8\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"nose-and-nasal-cavity\",\n \"name\": \"Nose & Nasal Cavity\",\n },\n {\n \"id\": \"2e0fa80f-ea84-48dc-bdf0-7d27f5527767\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"hard-and-soft-palate-and-pterygopalatine-fossa\",\n \"name\": \"Hard & Soft Palate, and Pterygopalatine Fossa\",\n },\n {\n \"id\": \"1cb05347-bb84-45ff-be96-2fa0b4eb9cd7\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"tongue-and-floor-of-the-mouth\",\n \"name\": \"Tongue & Floor of the Mouth\",\n },\n {\n \"id\": \"e14ef7d5-e9f4-40d4-b6f5-8df6b458fbde\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"larynx\",\n \"name\": \"Larynx\",\n },\n {\n \"id\": \"69d16981-01bd-4d30-adef-d634be6f5c76\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"cranial-nerve-review\",\n \"name\": \"Cranial Nerve Review\",\n },\n {\n \"id\": \"cb26a305-1ef7-4a89-b47d-70d27e5a7e84\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\",\n \"section\": \"Thorax\",\n \"route\": \"thoracic-wall\",\n \"name\": \"Thoracic Wall\",\n },\n {\n \"id\": \"b74e43a3-3cf5-4f9e-9682-adac6725cf88\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\",\n \"section\": \"Thorax\",\n \"route\": \"heart\",\n \"name\": \"Heart\",\n },\n {\n \"id\": \"adeb4919-2724-48db-92d2-376f78ac786c\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\",\n \"section\": \"Thorax\",\n \"route\": \"lungs\",\n \"name\": \"Lungs\",\n },\n {\n \"id\": \"649d611a-0d52-4dcd-9664-b27dbc349ab3\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\",\n \"section\": \"Thorax\",\n \"route\": \"mediastinum\",\n \"name\": \"Mediastinum\",\n },\n {\n \"id\": \"9c70a5e5-5d2c-47ec-be9f-54819ad8014e\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\",\n \"section\": \"Abdomen\",\n \"route\": \"abdominal-wall\",\n \"name\": \"Abdominal Wall and Viscera in situ\",\n },\n {\n \"id\": \"877d8efa-3c18-416a-a5ee-dd09af992271\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\",\n \"section\": \"Abdomen\",\n \"route\": \"hepatoduodenal-ligament-celiac-trunk-stomach-spleen-liver-and-gallbladder\",\n \"name\": \"Hepatoduodenal Ligament, Celiac Trunk, Stomach, Spleen, Liver & Gallbladder\",\n },\n {\n \"id\": \"b964abca-edca-4e99-b9cb-a66d4d90931c\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\",\n \"section\": \"Abdomen\",\n \"route\": \"superior-mesenteric-artery-inferior-mesenteric-artery-small-intestine-pancreas-large-intestine\",\n \"name\": \"Superior Mesenteric Artery, Inferior Mesenteric Artery, Small Intestine, Pancreas, Large Intestine\",\n },\n {\n \"id\": \"7e629bc0-4054-4485-a0d2-4674d34fb192\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\",\n \"section\": \"Abdomen\",\n \"route\": \"posterior-abdominal-viscera-muscles-and-diaphragm\",\n \"name\": \"Posterior Abdominal Viscera, Muscles and Diaphragm\",\n },\n {\n \"id\": \"44535502-8fdc-4c72-ad3c-d156f7b78a7b\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\",\n \"section\": \"Pelvis\",\n \"route\": \"posterior-abdominal-wall-inguinal-region-scrotum-testis-and-spermatic-cord\",\n \"name\": \"Posterior Abdominal Wall, Inguinal Region, Scrotum, Testis & Spermatic Cord\",\n },\n {\n \"id\": \"50bc70d2-cfba-4e36-9959-e76a5b794d5c\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\",\n \"section\": \"Pelvis\",\n \"route\": \"perineum-and-external-genitalia\",\n \"name\": \"Perineum & External Genitalia\",\n },\n {\n \"id\": \"bfae02af-fc2e-4092-b924-790d82098c0e\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\",\n \"section\": \"Pelvis\",\n \"route\": \"pelvic-cavity\",\n \"name\": \"Pelvic Cavity\",\n }\n ]\n }\n ]\n },\n {\n \"name\": \"Question Banks\",\n \"type\": \"Question Bank\",\n \"route\": \"qbank-collection\",\n \"content\": [\n {\n \"name\": \"Question Banks\",\n \"content\": [\n {\n \"name\": \"Pectoral Region\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Upper Limbs\",\n \"route\": \"pectoral-region\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"ad373628-9b71-46cb-9946-cafff16c0c02\",\n \"type\": \"identification\",\n },\n {\n route: 'bank-2',\n testId: 'b5c12041-1a47-42d8-82f8-3bae643f6ccc',\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Scapular Region and Posterior Arm\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Upper Limbs\",\n \"route\": \"scapular-region-and-posterior-arm\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"c0630572-3327-4abd-872b-53d3a92f688a\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"135c7e39-b545-4ee3-b54e-cfa13c9a995a\",\n type: \"application\",\n },\n {\n \"route\": \"bank-3\",\n \"testId\": \"c7bcbb81-af4c-4724-8e6f-28b007213260\",\n \"type\": \"Clinical Cases\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Axilla\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Upper Limbs\",\n \"route\": \"axilla\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"dbec931b-5c74-4a76-b77b-755180974341\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"c28cae6b-4b83-41b7-ab8d-3c77ba5aeccb\",\n type: \"application\",\n },\n {\n \"route\": \"bank-3\",\n \"testId\": \"eb5a0203-b548-4ba5-b422-df066b6b1ee1\",\n \"type\": \"Clinical Cases\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Anterior Arm\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Upper Limbs\",\n \"route\": \"anterior-arm\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"0894830c-ff94-45f5-b23f-6295aca943be\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"c091b9b9-30cb-44fd-9897-de1c1a097223\",\n type: \"application\",\n },\n {\n \"route\": \"bank-3\",\n \"testId\": \"f8b50ca5-5680-4396-951a-6579fc92bf91\",\n \"type\": \"Clinical Cases\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Forearm and Cubital Fossa\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Upper Limbs\",\n \"route\": \"forearm-and-cubital-fossa\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"2e6297ac-df0e-45e9-9c44-893469e66225\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"f461d479-9b6a-442c-9c39-e5fef78bb7da\",\n type: \"application\",\n },\n {\n \"route\": \"bank-3\",\n \"testId\": \"ab653525-83f3-4eca-a85f-047bb4101af9\",\n \"type\": \"Clinical Cases\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Hand\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Upper Limbs\",\n \"route\": \"hand\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"6b4cb0d5-86f8-44ec-a23c-e9c9576ea8ab\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"f20bf026-eccb-455d-9a30-6731e0d3ef28\",\n type: \"application\",\n },\n {\n \"route\": \"bank-3\",\n \"testId\": \"8aa3d412-cdab-43fe-8962-980bb64f1d2a\",\n \"type\": \"Clinical Cases\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Back\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Back\",\n \"route\": \"back\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"e65e5d32-cdad-426c-98f3-f5bd4147897a\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"df585a0f-5231-487e-981b-6e1676832a66\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Spinal Cord\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Back\",\n \"route\": \"spinal-cord\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"d73814ef-27b9-487e-b540-6d42b5f27ea2\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"0901bb8a-fd9c-4de2-8b60-74667093eed7\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Anterior & Medial Thigh, Knee\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Lower Limbs\",\n \"route\": \"anterior-and-medial-thigh-knee\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"70a667d4-f5d6-4d73-8805-86665dbe6aa5\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"392d4d29-ddd0-4609-9b7b-2e92b19ec586\",\n type: \"application\",\n },\n {\n \"route\": \"bank-3\",\n \"testId\": \"9d2cae20-3dc4-40f8-bff4-0b95b33fe672\",\n type: \"Clinical Cases\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Gluteal Region, Posterior Thigh, Popliteal Fossa\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Lower Limbs\",\n \"route\": \"gluteal-region-posterior-thigh-popliteal-fossa\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"addef550-c659-4fcb-a33f-32cba70f38e3\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"730caa49-27e5-4604-a044-4e3a93cf9f1b\",\n type: \"application\",\n },\n {\n \"route\": \"bank-3\",\n \"testId\": \"33cda52a-39f0-4c0c-8048-ca47199899bb\",\n type: \"Clinical Cases\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Leg\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Lower Limbs\",\n \"route\": \"leg\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"0bf378e7-8678-4ef6-ac76-439872222b4f\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"08f492ae-e13f-44b0-8d78-ec919a487603\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Foot\",\n \"classroomName\": \"Upper & Lower Limbs, Back\",\n \"section\": \"Lower Limbs\",\n \"route\": \"foot\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"1496a0c3-3903-4a83-bf4a-988f60e8c2dc\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"0119c069-ffeb-406e-81ae-bccf461b3e47\",\n type: \"application\",\n },\n {\n \"route\": \"bank-3\",\n \"testId\": \"3113d898-7a20-4eb4-8048-82ca485480c1\",\n type: \"Clinical Cases\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"External Examination of the Brain + Skull\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"external-examination-of-the-brain\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"991f6068-6380-4882-9a57-4d3377fd3028\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"d994beba-3915-4169-973e-da1f2b140bf8\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Anterior Triangle of the Neck\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"anterior-triangle-of-the-neck\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"a58093a6-51ed-4e60-a577-2bb3a0e039a5\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"86884df1-ab2f-414c-ac6f-14788174f6c2\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Posterior Triangle of the Neck\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"posterior-triangle-of-the-neck\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"0528413b-a091-427c-9299-8bf6b75d9581\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"5b9f1aab-7d06-4711-9e5b-5d5ece54c285\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Occipital Region & Posterior Neck\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"occipital-region-and-posterior-neck\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"c86ef651-67d5-4b3a-b66e-09c3b140f385\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"556e7418-ce65-4c2b-95ee-b894bee1b26d\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Face\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"face\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"19f35b9f-547f-40cf-9e7e-ed8b506186a4\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"7444ed51-76ff-4dad-9c71-9c16ade8f90d\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Infratemporal Fossa\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"infratemporal-fossa\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"6329de43-e0c0-4952-a8c8-6f82bfc46aef\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"7edc6096-3802-4d50-bded-c471921c0e5a\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Orbit\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"orbit\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"2beebd2a-f9f7-4cda-8800-a25478ff1825\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"c4d4ba72-cace-4300-800d-702bb67623e1\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Pharynx\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"pharynx\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"b75e1301-46d5-44ef-93a2-9c5114fcecca\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"631439cf-a641-46f1-b08c-8b4e7f715c84\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Nose & Nasal Cavity\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"nose-and-nasal-cavity\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"9feff03c-331a-4ad0-afab-47f4aa404aff\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"d214276c-5a76-4bb4-944c-c5f4dc613b15\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Hard & Soft Palate, and Pterygopalatine Fossa\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"hard-and-soft-palate-and-pterygopalatine-fossa\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"58eb1f0c-e005-4c4d-9bcf-7f2251364a04\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"e4a98c42-59c9-4ff8-aa9d-65135932d80f\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Tongue & Floor of the Mouth\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"tongue-and-floor-of-the-mouth\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"09ab1c26-acb3-49b8-ae1f-8a7b0389a382\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"6896adcc-9f20-4c77-96b1-b0b5afae4f2c\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Larynx\",\n \"classroomName\": \"Head & Neck\",\n \"section\": \"Head & Neck\",\n \"route\": \"larynx\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"42f6dcb4-eb56-4276-82e3-fcee8e5a61cd\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"ab084e92-69bf-41b0-b01c-f4fd182d2ab0\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Thoracic Wall\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\",\n \"section\": \"Thorax\",\n \"route\": \"thoracic-wall\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"cd0a5996-e6a8-4172-9a5a-0e4d02d7ee3c\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"c412e9c7-f2fc-4829-9bc3-a791b5f6e0fe\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Heart\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\",\n \"section\": \"Thorax\",\n \"route\": \"heart\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"47276602-9b8b-490a-93d7-a9bc8874d79e\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"e0e731dd-1c07-4be0-b4d7-bd74657ad966\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Lungs\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\",\n \"section\": \"Thorax\",\n \"route\": \"lungs\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"ecbeaaa6-9a6b-4340-b0d6-440a7fb65b10\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"0982076d-e65b-4087-835f-bf0a2c1eb527\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Mediastinum\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\",\n \"section\": \"Thorax\",\n \"route\": \"mediastinum\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"067c9b4c-7e33-48fe-9cb6-b394a697ac23\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"9abe58bf-a9a7-4fba-a6e4-d8e71be6d574\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Abdominal Wall and Viscera in situ\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\",\n \"section\": \"Abdomen\",\n \"route\": \"abdominal-wall\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"2bfbbe5a-8be1-47ea-a365-477dfc893761\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"2eff1287-5c6d-4859-b449-639c8001cfe4\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Hepatoduodenal Ligament, Celiac Trunk, Stomach, Spleen, Liver & Gallbladder\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\",\n \"section\": \"Abdomen\",\n \"route\": \"hepatoduodenal-ligament-celiac-trunk-stomach-spleen-liver-and-gallbladder\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"b337b312-15d2-47f3-8b99-10d31de03b20\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"cffc9dec-1aca-426a-814a-5586dadb89bb\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Superior Mesenteric Artery, Inferior Mesenteric Artery, Small Intestine, Pancreas, Large Intestine\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\",\n \"section\": \"Abdomen\",\n \"route\": \"superior-mesenteric-artery-inferior-mesenteric-artery-small-intestine-pancreas-large-intestine\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"b594eab8-120d-4e70-91d9-adca533339dd\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"fe951c20-b5b7-4067-a8cc-b72d3eae27ee\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Posterior Abdominal Viscera, Muscles and Diaphragm\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\",\n \"section\": \"Abdomen\",\n \"route\": \"posterior-abdominal-viscera-muscles-and-diaphragm\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"e0b88263-24dc-418b-9fdb-e872271faeeb\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"17b9a2c3-3fe6-4fe7-b50c-35a0248b07a5\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Posterior Abdominal Wall, Inguinal Region, Scrotum, Testis & Spermatic Cord\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\",\n \"section\": \"Pelvis\",\n \"route\": \"posterior-abdominal-wall-inguinal-region-scrotum-testis-and-spermatic-cord\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"42daafa6-9960-4449-b741-8d77cb78e529\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"41f0432c-b9f6-4287-bcd9-005c2c99356f\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Perineum & External Genitalia\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\",\n \"section\": \"Pelvis\",\n \"route\": \"perineum-and-external-genitalia\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"b130caad-135f-4590-a8ec-98c5336d5900\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"c277c886-7d54-4345-af88-572168e14126\",\n type: \"application\",\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Pelvic Cavity\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\",\n \"section\": \"Pelvis\",\n \"route\": \"pelvic-cavity\",\n \"lessons\": [\n {\n \"route\": \"bank-1\",\n \"testId\": \"1f7aa4b7-8941-4b6a-a906-79171d8fff62\",\n \"type\": \"identification\",\n },\n {\n \"route\": \"bank-2\",\n \"testId\": \"dc56da50-e18e-49ca-9a3a-866b8b23de56\",\n type: \"application\",\n }\n ],\n \"type\": \"Chapter Bank Dropdown\"\n }\n ]\n }\n ]\n },\n {\n \"name\": \"Atlas\",\n \"type\": \"Downloads\",\n \"route\": \"atlas\",\n \"content\": [\n {\n \"name\": \"Downloads\",\n \"content\": [\n {\n \"route\": \"https://drive.google.com/file/d/14HkgZ0MFQ6aiW4RXLdNlTJE5NV-OYgEs/view?usp=sharing\",\n \"section\": \"Upper Limbs\",\n \"name\": \"Pectoral Region\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1MyX_X4N4lcXTtrVBTaC6Fg6TS5NsZYRv/view?usp=sharing\",\n \"section\": \"Upper Limbs\",\n \"name\": \"Scapular Region and Posterior Arm\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/10EXMGI64Xs5pt0M6GbCwmnLn0B66PUGh/view?usp=sharing\",\n \"section\": \"Upper Limbs\",\n \"name\": \"Axilla\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1T7RB7Gc07Xr5u6GVM7Q4EHNrYLFx9DXU/view?usp=sharing\",\n \"section\": \"Upper Limbs\",\n \"name\": \"Anterior Arm\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1veM3KbgokG7YsasvnTi5c-2GT4K2mutQ/view?usp=sharing\",\n \"section\": \"Upper Limbs\",\n \"name\": \"Forearm and Cubital Fossa\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1VEn1UovqeJnaX6Yk-r21EzszdRrcK9hy/view?usp=sharing\",\n \"section\": \"Upper Limbs\",\n \"name\": \"Hand\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1svlO3O_SR3SpUftLdvIlWEjhihGLlTvH/view?usp=sharing\",\n \"section\": \"Back\",\n \"name\": \"Back\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1YohZHQJyRi7XxmxPgJtRRgF9MVvkKhmW/view?usp=sharing\",\n \"section\": \"Back\",\n \"name\": \"Spinal Cord\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1AQv0M6-I55vks2tGXxgCmOtyaOc_bElu/view?usp=sharing\",\n \"section\": \"Lower Limbs\",\n \"name\": \"Anterior & Medial Thigh, Knee\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1-qIB3LF8q9PRgl6eJ0XGPmywCIXmL4k1/view?usp=sharing\",\n \"section\": \"Lower Limbs\",\n \"name\": \"Gluteal Region, Posterior Thigh, Popliteal Fossa\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/177VCGbmzopbNG5cMhcct03PJ8pqbcXgm/view?usp=sharing\",\n \"section\": \"Lower Limbs\",\n \"name\": \"Leg\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1BtfbQFgH0VQPUbIKwnR9wEHyaW_KOd4K/view?usp=sharing\",\n \"section\": \"Lower Limbs\",\n \"name\": \"Foot\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1GMTBxpd1Wc5JFgT21WzwcGZQYLvnbx_V/view?usp=sharing\",\n \"section\": \"Head & Neck\",\n \"name\": \"External Examination of the Brain + Skull\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1x5XBD9ERfzuV-GsWbE-cgFnsEdCmGTvc/view?usp=sharing\",\n \"section\": \"Head & Neck\",\n \"name\": \"Anterior Triangle of the Neck\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1VzkevE1Png_Q45fqKgQoOBsdlE33_NgH/view?usp=sharing\",\n \"section\": \"Head & Neck\",\n \"name\": \"Posterior Triangle of the Neck\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1eqrKquL_2Ue_H7I_5VLkM3D5JEs3kQH7/view?usp=sharing\",\n \"section\": \"Head & Neck\",\n \"name\": \"Occipital Region & Posterior Neck\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1tkWG0p9IcXcbrgleskbwoQdgebx80pNX/view?usp=sharing\",\n \"section\": \"Head & Neck\",\n \"name\": \"Face\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1MBreiP6G_bMMQEFSJUV4BF90HIJHX2Cl/view?usp=sharing\",\n \"section\": \"Head & Neck\",\n \"name\": \"Infratemporal Fossa\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1E5aE8GIMIfc6-kO12YDILVSsdF9HpEO3/view?usp=sharing\",\n \"section\": \"Head & Neck\",\n \"name\": \"Orbit\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/112drewWKrT16VMCuXLjD_scprWixuuWM/view?usp=sharing\",\n \"section\": \"Head & Neck\",\n \"name\": \"Pharynx\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1088j8YKN6YduR4uSOLOZ9Mro1Im8IzgN/view?usp=sharing\",\n \"section\": \"Head & Neck\",\n \"name\": \"Nose & Nasal Cavity\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1PjOofoFscOTp3YlpAgCJNjhnlACTHygv/view?usp=sharing\",\n \"section\": \"Head & Neck\",\n \"name\": \"Hard & Soft Palate, and Pterygopalatine Fossa\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1tRltFBE0CcKJjx0OrdeZPsyrojtj8hZn/view?usp=sharing\",\n \"section\": \"Head & Neck\",\n \"name\": \"Tongue & Floor of the Mouth\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1LTw0hXLT_WtTA9jMFz9fY4g5g8o6Pjzm/view?usp=sharing\",\n \"section\": \"Head & Neck\",\n \"name\": \"Larynx\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1OHZpM5sgDfNd-wboW9XWkj-B3Gnub-my/view?usp=sharing\",\n \"section\": \"Thorax\",\n \"name\": \"Thoracic Wall\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1-yDuDj2XZLhU2BgvvfWq6hI4UW_quM98/view?usp=sharing\",\n \"section\": \"Thorax\",\n \"name\": \"Heart\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1Qu-BRvfelXnxByOvegr8uOVNTPHlpZ6E/view?usp=sharing\",\n \"section\": \"Thorax\",\n \"name\": \"Lungs\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1jhI5aq_Aaloafx_js-CSGFzhiDnjk1Xd/view?usp=sharing\",\n \"section\": \"Thorax\",\n \"name\": \"Mediastinum\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1vqvR523PB5DARvZHDshBK3u3Zqdn9oyL/view?usp=sharing\",\n \"section\": \"Abdomen\",\n \"name\": \"Abdominal Wall and Viscera in situ\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1euCjPtN_SoUEZIKecxgzm0lIju0T1R8E/view?usp=sharing\",\n \"section\": \"Abdomen\",\n \"name\": \"Hepatoduodenal Ligament, Celiac Trunk, Stomach, Spleen, Liver & Gallbladder\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/17HKZtYVvOSa81woPURnoBYY04h5cj2EK/view?usp=sharing\",\n \"section\": \"Abdomen\",\n \"name\": \"Superior Mesenteric Artery, Inferior Mesenteric Artery, Small Intestine, Pancreas, Large Intestine\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1aMq3O4AWvI9_6Yjjdo9iuUIQDt6EZPEq/view?usp=sharing\",\n \"section\": \"Abdomen\",\n \"name\": \"Posterior Abdominal Viscera, Muscles and Diaphragm\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1qQFdD6o4NpxKi0MyKPWINxab58Suydv5/view?usp=sharing\",\n \"section\": \"Pelvis\",\n \"name\": \"Posterior Abdominal Wall, Inguinal Region, Scrotum, Testis & Spermatic Cord\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1Z_hZi9mdq0Ko7pboAuMbAX_ID6T4w3tM/view?usp=sharing\",\n \"section\": \"Pelvis\",\n \"name\": \"Perineum & External Genitalia\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/151mnUkmn2sN2TdeSBrNjjiXK8Hg1t8Ap/view?usp=sharing\",\n \"section\": \"Pelvis\",\n \"name\": \"Pelvic Cavity\"\n }\n ]\n }\n ]\n },\n {\n \"name\": \"Practical Exams\",\n \"type\": \"Question Bank\",\n \"route\": \"practicals\",\n \"content\": [\n {\n \"name\": \"Practical Exams\",\n \"content\": [\n {\n \"name\": \"Upper & Lower Limbs, Back - Practical Exam #1\",\n \"route\": \"upper-and-lower-limbs-back-practical-1\",\n \"id\": \"14827b2b-d410-46e8-9c02-b8c626d7b85a\",\n \"classroomName\": \"Upper & Lower Limbs, Back\"\n },\n {\n \"name\": \"Upper & Lower Limbs, Back - Practical Exam #2\",\n \"route\": \"upper-and-lower-limbs-back-practical-2\",\n \"id\": \"50ff513a-cb5f-4956-bd6d-537b0af3778e\",\n \"classroomName\": \"Upper & Lower Limbs, Back\"\n },\n {\n \"name\": \"Upper & Lower Limbs, Back - Practical Exam #3\",\n \"route\": \"upper-and-lower-limbs-back-practical-3\",\n \"id\": \"746fea73-cad0-48d3-9d1a-b4f4bcde432e\",\n \"classroomName\": \"Upper & Lower Limbs, Back\"\n },\n {\n \"name\": \"Head & Neck - Practical Exam #1\",\n \"route\": \"head-and-neck-practical-1\",\n \"id\": \"ff9bdd33-f3f9-4401-b85d-2d7888cc39be\",\n \"classroomName\": \"Head & Neck\"\n },\n {\n \"name\": \"Head & Neck - Practical Exam #2\",\n \"route\": \"head-and-neck-practical-2\",\n \"id\": \"310f90cc-a7ce-4b8d-9cdb-b549acd99a67\",\n \"classroomName\": \"Head & Neck\"\n },\n {\n \"name\": \"Head & Neck - Practical Exam #3\",\n \"route\": \"head-and-neck-practical-3\",\n \"id\": \"9cc708db-d821-4684-b324-0512d623a427\",\n \"classroomName\": \"Head & Neck\"\n },\n {\n \"name\": \"Thorax, Abdomen & Pelvis - Practical Exam #1\",\n \"route\": \"thorax-abdomen-and-pelvis-practical-1\",\n \"id\": \"f97c8145-e819-44c4-85d3-fa9c79015647\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\"\n },\n {\n \"name\": \"Thorax, Abdomen & Pelvis - Practical Exam #2\",\n \"route\": \"thorax-abdomen-and-pelvis-practical-2\",\n \"id\": \"a3be441a-6351-4a76-81e0-83fdef68c0f2\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\"\n },\n {\n \"name\": \"Thorax, Abdomen & Pelvis - Practical Exam #3\",\n \"route\": \"thorax-abdomen-and-pelvis-practical-3\",\n \"id\": \"321723b2-81e0-41b3-bee4-4e0a797a015b\",\n \"classroomName\": \"Thorax, Abdomen & Pelvis\"\n }\n ]\n }\n ]\n }\n ],\n },\n {\n name: 'Neuroanatomy',\n route: 'neuroanatomy',\n tagId: '298aed63-b9f9-4cf6-b9f5-5dbbf929a429', // bio tag: 65dcea9c-ac11-4e6c-aac0-89fa2f979afb -- but not sure if we want to use this here.\n themePalette: colors.brandPalette.pink,\n icon: 'icons/neuro.svg',\n classroomDescription: `It's all in your head. Let's learn how your brain works to give you life. Watch Bootcamp.com's video lessons and practice with the qbanks to master neuroanatomy.`,\n questionCount: 609,\n educators: [\n {\n firstName: 'John',\n avatar: 'educators/john.gif'\n },\n {\n firstName: 'Chris',\n avatar: 'educators/chris.jpeg',\n }\n ],\n contentTypes: [\n {\n \"name\": \"John's Neuro Videos\",\n \"route\": \"videos\",\n \"content\": [\n {\n \"name\": \"Videos\",\n \"type\": \"Course\",\n \"content\": [\n {\n \"id\": \"9741ddae-8a35-4a96-ac8a-1c5615bed02d\",\n \"classroomName\": \"Neuroanatomy\",\n \"section\": \"\",\n \"route\": \"cerebral-cortex\",\n \"name\": \"Cerebral Cortex\",\n },\n {\n \"id\": \"302e3335-01db-44c3-9ba5-bdf70a56496a\",\n \"classroomName\": \"Neuroanatomy\",\n \"section\": \"\",\n \"route\": \"diencephalon\",\n \"name\": \"Diencephalon\",\n },\n {\n \"id\": \"f7978856-89d2-44b5-8f61-f9b40f2a6236\",\n \"classroomName\": \"Neuroanatomy\",\n \"section\": \"\",\n \"route\": \"basal-ganglia\",\n \"name\": \"Basal Ganglia\",\n },\n {\n \"id\": \"9017509d-de7c-407b-a7fd-01dce3a44e1a\",\n \"classroomName\": \"Neuroanatomy\",\n \"section\": \"\",\n \"route\": \"subcortical-white-matter\",\n \"name\": \"Subcortical White Matter\",\n },\n {\n \"id\": \"ca6fc41c-38cd-44db-8079-587c769b34de\",\n \"classroomName\": \"Neuroanatomy\",\n \"section\": \"\",\n \"route\": \"cranial-nerves\",\n \"name\": \"Cranial Nerves\",\n },\n {\n \"id\": \"f862ed49-cdab-4c08-b712-2b9d110ac489\",\n \"classroomName\": \"Neuroanatomy\",\n \"section\": \"\",\n \"route\": \"superficial-brainstem\",\n \"name\": \"Superficial Brainstem\",\n },\n {\n \"id\": \"eda2a64e-20ae-48e0-9077-5d579c933451\",\n \"classroomName\": \"Neuroanatomy\",\n \"section\": \"\",\n \"route\": \"cerebellum\",\n \"name\": \"Cerebellum\",\n },\n {\n \"id\": \"e6ee46bb-dd87-4225-8780-ad88dc0b24bb\",\n \"classroomName\": \"Neuroanatomy\",\n \"section\": \"\",\n \"route\": \"brain-ventricles\",\n \"name\": \"Brain Ventricles\",\n },\n {\n \"id\": \"7dee7886-d53a-4c66-9405-0800e8feac0b\",\n \"classroomName\": \"Neuroanatomy\",\n \"section\": \"\",\n \"route\": \"cerebral-vasculature\",\n \"name\": \"Cerebral Vasculature\",\n }\n ]\n }\n ]\n },\n {\n \"name\": \"Question Banks\",\n \"type\": \"Question Bank\",\n \"route\": \"qbank-collection\",\n \"content\": [\n {\n \"name\": \"Question Banks\",\n \"content\": [\n {\n \"name\": \"Cerebral Cortex\",\n \"classroomName\": \"Neuroanatomy\",\n \"section\": \"\",\n \"route\": \"cerebral-cortex\",\n \"lessons\": [\n {\n \"testId\": \"30287c71-7e29-447f-9ec5-26757d7e8e67\",\n \"type\": \"identification\",\n \"route\": \"bank-1\"\n },\n {\n \"testId\": \"e6f25606-0bfb-4b48-83a3-61a3b53d5194\",\n type: \"application\",\n \"route\": \"bank-2\"\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Diencephalon\",\n \"classroomName\": \"Neuroanatomy\",\n \"section\": \"\",\n \"route\": \"diencephalon\",\n \"lessons\": [\n {\n \"testId\": \"95a40d89-4767-480d-9e2c-b8e101d53e31\",\n \"type\": \"identification\",\n \"route\": \"bank-1\"\n },\n {\n \"testId\": \"82a17aa4-eeef-4dc6-8f25-85d415edebaf\",\n type: \"application\",\n \"route\": \"bank-2\"\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Basal Ganglia\",\n \"classroomName\": \"Neuroanatomy\",\n \"section\": \"\",\n \"route\": \"basal-ganglia\",\n \"lessons\": [\n {\n \"testId\": \"fdc84b3d-67b7-4052-ab35-1602a94acd55\",\n \"type\": \"identification\",\n \"route\": \"bank-1\"\n },\n {\n \"testId\": \"70c5123f-6118-4183-b8a5-efa110857168\",\n type: \"application\",\n \"route\": \"bank-2\"\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Subcortical White Matter\",\n \"classroomName\": \"Neuroanatomy\",\n \"section\": \"\",\n \"route\": \"subcortical-white-matter\",\n \"lessons\": [\n {\n \"testId\": \"5729cd09-8d69-4965-a493-3d485d289174\",\n \"type\": \"identification\",\n \"route\": \"bank-1\"\n },\n {\n \"testId\": \"ccc49416-4b88-4b34-9eba-23ede26e39be\",\n type: \"application\",\n \"route\": \"bank-2\"\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Cranial Nerves\",\n \"classroomName\": \"Neuroanatomy\",\n \"section\": \"\",\n \"route\": \"cranial-nerves\",\n \"lessons\": [\n {\n \"testId\": \"82f152f8-cb5f-426e-9705-3c76c52708e7\",\n \"type\": \"identification\",\n \"route\": \"bank-1\"\n },\n {\n \"testId\": \"47d2c3f2-43e1-402d-a016-6701cc30a674\",\n type: \"application\",\n \"route\": \"bank-2\"\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Superficial Brainstem\",\n \"classroomName\": \"Neuroanatomy\",\n \"section\": \"\",\n \"route\": \"superficial-brainstem\",\n \"lessons\": [\n {\n \"testId\": \"1707cdde-8527-446f-9c72-d34a48be2504\",\n \"type\": \"identification\",\n \"route\": \"bank-1\"\n },\n {\n \"testId\": \"64abb213-7c17-4d64-b327-d4bb26e719b4\",\n type: \"application\",\n \"route\": \"bank-2\"\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Cerebellum\",\n \"classroomName\": \"Neuroanatomy\",\n \"section\": \"\",\n \"route\": \"cerebellum\",\n \"lessons\": [\n {\n \"testId\": \"fb8884ea-0807-4a06-9709-5c58e0411a5c\",\n \"type\": \"identification\",\n \"route\": \"bank-1\"\n },\n {\n \"testId\": \"9dd610ab-4781-418c-b248-4d2d05be2aa3\",\n type: \"application\",\n \"route\": \"bank-2\"\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Brain Ventricles\",\n \"classroomName\": \"Neuroanatomy\",\n \"section\": \"\",\n \"route\": \"brain-ventricles\",\n \"lessons\": [\n {\n \"testId\": \"1a8ffed6-2fbb-43e6-be25-41153b38ef2d\",\n \"type\": \"identification\",\n \"route\": \"bank-1\"\n },\n {\n \"testId\": \"45c9c966-b8f6-48a6-b2c4-94b3c05af428\",\n type: \"application\",\n \"route\": \"bank-2\"\n },\n ],\n \"type\": \"Chapter Bank Dropdown\"\n },\n {\n \"name\": \"Cerebral Vasculature\",\n \"classroomName\": \"Neuroanatomy\",\n \"section\": \"\",\n \"route\": \"cerebral-vasculature\",\n \"lessons\": [\n {\n \"testId\": \"cd92ef32-2f75-498c-8ffb-abdbda946164\",\n \"type\": \"identification\",\n \"route\": \"bank-1\"\n },\n {\n \"testId\": \"f27a5902-8348-4643-b0d0-c8d1dafbfaba\",\n type: \"application\",\n \"route\": \"bank-2\"\n }\n ],\n \"type\": \"Chapter Bank Dropdown\"\n }\n ]\n }\n ]\n },\n {\n \"name\": \"Atlas\",\n \"type\": \"Downloads\",\n \"route\": \"atlas\",\n \"content\": [\n {\n \"name\": \"Downloads\",\n \"content\": [\n {\n \"route\": \"https://drive.google.com/file/d/1KMQ7eZSRhGG5DCzIk6j0IzEF2CAM42sd/view?usp=sharing\",\n \"section\": \"\",\n \"name\": \"Cerebral Cortex\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1jdCN24mSvrWnmUnWRdrvxTYSPjOhHg0V/view?usp=sharing\",\n \"section\": \"\",\n \"name\": \"Diencephalon\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/14hQTNLhOW18HTy0_kJJQXoYQlT5Pc7VA/view?usp=sharing\",\n \"section\": \"\",\n \"name\": \"Basal Ganglia\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/16-u0wvuEWqci-sa5kZuX4W9BGrUfRR3H/view?usp=sharing\",\n \"section\": \"\",\n \"name\": \"Subcortical White Matter\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1xtzpWJvKUPReD0An46FV9TTF-RIrII29/view?usp=sharing\",\n \"section\": \"\",\n \"name\": \"Cranial Nerves\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1nbZXHYW5Jgp1Z0P-QYiGhCnRy_WCJmPN/view?usp=sharing\",\n \"section\": \"\",\n \"name\": \"Superficial Brainstem\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1GFRaEUHbB49t3_SQTFJuN6XjuJkBrShQ/view?usp=sharing\",\n \"section\": \"\",\n \"name\": \"Cerebellum\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/1zXpsx3llAq3CABn4hgYjMd7ShPjM8o9y/view?usp=sharing\",\n \"section\": \"\",\n \"name\": \"Brain Ventricles\"\n },\n {\n \"route\": \"https://drive.google.com/file/d/11rma8MRuCCcwJ7c_gRbjpE5rueAv-7L0/view?usp=sharing\",\n \"section\": \"\",\n \"name\": \"Cerebral Vasculature\"\n }\n ]\n }\n ]\n }\n ]\n },\n {\n name: 'Histology',\n tagId: \"0b7fa985-e051-4a99-85b2-34a50ba4fcac\",\n route: 'histology',\n themePalette: colors.brandPalette.teal,\n videoLessonCount: 256,\n classroomDescription: `The study of the microanatomy of cells, tissues, and organs as seen through a microscope. We'll learn the correlation between structure and function of cells.`,\n questionCount: 0,\n icon: 'icons/histo.svg',\n educators: [\n {\n firstName: 'Monica',\n avatar: 'educators/monica.gif'\n },\n {\n firstName: 'James',\n avatar: 'images/james_faul.gif'\n }\n ],\n contentTypes: [\n {\n \"name\": \"Monica's Histology Videos\",\n \"route\": \"videos\",\n \"content\": [\n {\n \"name\": \"Videos\",\n \"type\": \"Course\",\n \"content\": [\n {\n \"id\": \"66313bea-e10c-43fe-b3a0-89a200c7f120\",\n \"classroomName\": \"Histology\",\n \"section\": \"\",\n \"route\": \"methods-and-overview-of-cells\",\n \"name\": \"Methods and Overview of Cells\",\n },\n {\n \"id\": \"52a74180-7bd8-4478-8dbd-e5336842f96a\",\n \"classroomName\": \"Histology\",\n \"section\": \"\",\n \"route\": \"epithelium\",\n \"name\": \"Epithelium\",\n },\n {\n \"id\": \"5206c58f-ee4c-424d-bcb4-765b446bb168\",\n \"classroomName\": \"Histology\",\n \"section\": \"\",\n \"route\": \"connective-tissue\",\n \"name\": \"Connective Tissue\",\n },\n {\n \"id\": \"e0c88eb8-1721-4e3e-89c3-9ccb71e308f3\",\n \"classroomName\": \"Histology\",\n \"section\": \"\",\n \"route\": \"cartilage\",\n \"name\": \"Cartilage\",\n },\n {\n \"id\": \"47f39e88-e899-4a67-bbc4-fb928dce4429\",\n \"classroomName\": \"Histology\",\n \"section\": \"\",\n \"route\": \"bone\",\n \"name\": \"Bone\",\n },\n {\n \"id\": \"6531d4ed-8036-437d-90f8-dd350f4afd54\",\n \"classroomName\": \"Histology\",\n \"section\": \"\",\n \"route\": \"muscles\",\n \"name\": \"Muscles\",\n },\n {\n \"id\": \"8d7f2d23-924e-4e87-81df-bd219b51032b\",\n \"classroomName\": \"Histology\",\n \"section\": \"\",\n \"route\": \"nervous-system\",\n \"name\": \"Nervous System\",\n },\n {\n \"id\": \"d9298a0d-edff-4309-be8b-6b8f6898133c\",\n \"classroomName\": \"Histology\",\n \"section\": \"\",\n \"route\": \"cardiovascular-system\",\n \"name\": \"Cardiovascular System\",\n },\n {\n \"id\": \"9b2c7157-d273-4310-9fd6-00f4a6d68f5f\",\n \"classroomName\": \"Histology\",\n \"section\": \"\",\n \"route\": \"respiratory-system\",\n \"name\": \"Respiratory System\",\n },\n {\n \"id\": \"513a2a1e-26b4-4015-9b23-e2a29f65c84e\",\n \"classroomName\": \"Histology\",\n \"section\": \"\",\n \"route\": \"blood-and-blood-formation\",\n \"name\": \"Blood and Blood Formation\",\n },\n {\n \"id\": \"fa8c5869-ae8d-484c-926a-850dc6ebb464\",\n \"classroomName\": \"Histology\",\n \"section\": \"\",\n \"route\": \"lymphatic-system\",\n \"name\": \"Lymphatic System\",\n },\n {\n \"id\": \"84be4ea4-4bbd-4950-bd1d-dd37df5abbdf\",\n \"classroomName\": \"Histology\",\n \"section\": \"\",\n \"route\": \"skin\",\n \"name\": \"Skin\",\n },\n {\n \"id\": \"e0bb07b6-4748-4a30-aca9-b7e3a70b8639\",\n \"classroomName\": \"Histology\",\n \"section\": \"\",\n \"route\": \"endocrine-system\",\n \"name\": \"Endocrine System\",\n },\n {\n \"id\": \"f1b10f9a-d833-4c89-9e1a-e117a8283ee6\",\n \"classroomName\": \"Histology\",\n \"section\": \"\",\n \"route\": \"eyes\",\n \"name\": \"Eyes\",\n },\n {\n \"id\": \"ff76f6bb-75d7-4718-84fa-6bb099751794\",\n \"classroomName\": \"Histology\",\n \"section\": \"\",\n \"route\": \"ears\",\n \"name\": \"Ears\",\n },\n {\n \"id\": \"51cec2a4-1c81-4247-b9d3-0d98a9528e5a\",\n \"classroomName\": \"Histology\",\n \"section\": \"\",\n \"route\": \"oral-cavity\",\n \"name\": \"Oral Cavity\",\n },\n {\n \"id\": \"d2246bf3-2a92-47f9-b069-52eef281a3e3\",\n \"classroomName\": \"Histology\",\n \"section\": \"\",\n \"route\": \"gastrointestinal-tract\",\n \"name\": \"Gastrointestinal Tract\",\n },\n {\n \"id\": \"c19ecf56-7f42-47b3-8768-97b75efa50bc\",\n \"classroomName\": \"Histology\",\n \"section\": \"\",\n \"route\": \"liver-gallbladder-pancreas\",\n \"name\": \"Liver, Gallbladder and Pancreas\",\n },\n ]\n }\n ]\n },\n {\n \"name\": \"Question Banks\",\n \"route\": \"qbanks\",\n \"type\": \"Question Bank\",\n \"content\": [\n {\n \"name\": \"Question Banks\",\n \"content\": [\n {\n \"name\": \"Methods and Overview of Cells\",\n \"route\": \"methods-and-overview-of-cells\",\n \"id\": \"7b9b73dd-e01f-4042-98b9-92568d5d807b\"\n },\n {\n \"name\": \"Epithelium\",\n \"route\": \"epithelium\",\n \"id\": \"3b478615-3367-4964-b5f5-0e7c7a708a1b\"\n },\n {\n \"name\": \"Connective Tissue\",\n \"route\": \"connective-tissue\",\n \"id\": \"47c4a495-f3e5-4db4-b784-101fdb1fef7f\"\n },\n {\n \"name\": \"Cartilage\",\n \"route\": \"cartilage\",\n \"id\": \"de7a1a8d-2a23-412a-84b1-385f4a33adcc\"\n },\n {\n \"name\": \"Bone\",\n \"route\": \"bone\",\n \"id\": \"e350e794-c91a-48bb-a475-902061055a4c\"\n },\n {\n \"name\": \"Muscles\",\n \"route\": \"muscles\",\n \"id\": \"8a7d45e4-f2fe-414d-bea2-b438d2aeebb7\"\n },\n {\n \"name\": \"Nervous System\",\n \"route\": \"nervous-system\",\n \"id\": \"e3cc5aa2-8301-4a4c-b330-a9f0f9488be9\"\n },\n {\n \"name\": \"Cardiovascular System\",\n \"route\": \"cardiovascular-system\",\n \"id\": \"7aa10e84-4215-4ef3-820a-b2e708af945d\"\n },\n {\n \"name\": \"Respiratory System\",\n \"route\": \"Respiratory System\",\n \"id\": \"28ae7c4f-e5dc-4c47-ad41-66c7fec310e3\"\n },\n {\n \"name\": \"Blood and Blood Formation\",\n \"route\": \"Blood and Blood Formation\",\n \"id\": \"d14455e4-0bfd-4286-b0e9-0a8044262986\"\n },\n {\n \"name\": \"Lymphatic System\",\n \"route\": \"Lymphatic System\",\n \"id\": \"cf3517d7-8723-4568-9da3-28a0f7275755\"\n },\n {\n \"name\": \"Skin\",\n \"route\": \"skin\",\n \"id\": \"d235eec5-9ea0-4b8e-b91c-a26426f59f33\"\n },\n ]\n }\n ]\n },\n // {\n // \"name\": \"Atlas\",\n // \"type\": \"Downloads\",\n // \"route\": \"atlas\",\n // \"content\": [\n // {\n // \"name\": \"Downloads\",\n // \"content\": []\n // }\n // ]\n // }\n ]\n },\n {\n name: 'Embryology',\n route: 'embryology',\n tagId: '1cb0857c-d81a-4e41-8add-8ba000cf0123',\n themePalette: colors.brandPalette.orange,\n icon: 'icons/embryo.svg',\n questionCount: 577,\n videoLessonCount: 29,\n classroomDescription: `The study of the development of an embryo and fetus. We'll learn how babies are really made.`,\n educators: [\n {\n firstName: 'Margaret',\n avatar: 'educators/margaret.gif'\n }\n ],\n contentTypes: [\n {\n \"name\": \"Margaret's Embryology Videos\",\n \"route\": \"videos\",\n \"content\": [\n {\n \"name\": \"Videos\",\n \"type\": \"Course\",\n \"content\": [\n {\n \"id\": \"22a77689-af10-4113-af5b-cee1bb196a91\",\n \"classroomName\": \"Embryology\",\n \"section\": \"\",\n \"route\": \"fetal-stage\",\n \"name\": \"Fetal Stage\",\n },\n {\n \"id\": \"cb6d4181-02ad-4429-879c-1512f0c1f885\",\n \"classroomName\": \"Embryology\",\n \"section\": \"\",\n \"route\": \"organogenesis-development-of-external-features\",\n \"name\": \"Organogenesis, Development of External Features\",\n },\n {\n \"id\": \"53dfe026-a7d6-45ce-9ed2-37d1a004fd6f\",\n \"classroomName\": \"Embryology\",\n \"section\": \"\",\n \"route\": \"thoracic-systems-respiratory-and-cardiovascular\",\n \"name\": \"Thoracic Systems (Respiratory & Cardiovascular)\",\n },\n {\n \"id\": \"fc4051ec-12cc-408e-9c0c-a7dd4fbd116e\",\n \"classroomName\": \"Embryology\",\n \"section\": \"\",\n \"route\": \"abdominopelvic-systems-digestive-urinary-and-reproductive\",\n \"name\": \"Abdominopelvic Systems (Digestive, Urinary & Reproductive)\",\n }\n ]\n }\n ]\n },\n {\n \"name\": \"Question Banks\",\n \"route\": \"qbanks\",\n \"type\": \"Question Bank\",\n \"content\": [\n {\n \"name\": \"Question Banks\",\n \"content\": [\n {\n \"name\": \"Spermatogenesis, Oogenesis\",\n \"route\": \"spermatogenesis-oogenesis\",\n \"id\": \"7b09353f-4c67-4701-925d-4fbee01fce2d\"\n },\n {\n \"name\": \"Fertilization\",\n \"route\": \"fertilization\",\n \"id\": \"997f37bf-f45e-4dad-8bea-0601673b7d94\"\n },\n {\n \"name\": \"Early Cell Development\",\n \"route\": \"early-cell-development\",\n \"id\": \"332bec49-6d16-4e12-8fa5-3d38df2b386e\"\n },\n {\n \"name\": \"Implantation\",\n \"route\": \"implantation\",\n \"id\": \"71e38848-e075-4572-ae87-71815e6d3ba1\"\n },\n {\n \"name\": \"Gastrulation\",\n \"route\": \"gastrulation\",\n \"id\": \"b43e1124-f986-47c5-b69f-df9c4e497bdd\"\n },\n {\n \"name\": \"Amnion & Chorion\",\n \"route\": \"amnion-and-chorion\",\n \"id\": \"a0e8fc4e-821a-4244-9eb2-b4f04bed58b5\"\n },\n {\n \"name\": \"Neurulation\",\n \"route\": \"neurulation\",\n \"id\": \"fab7039d-1dae-41e9-b54f-437a26be5dbb\"\n },\n {\n \"name\": \"Somites, Sclerotome\",\n \"route\": \"somites-sclerotome\",\n \"id\": \"598fa602-0bb5-455f-81bb-742590065939\"\n },\n {\n \"name\": \"CNS\",\n \"route\": \"cns\",\n \"id\": \"16dbb525-a24b-4fe8-8e79-4e7968679ceb\"\n },\n {\n \"name\": \"Face & Pharynx\",\n \"route\": \"face-and-pharynx\",\n \"id\": \"adfb95c8-52c9-49e9-b637-5464380a2365\"\n },\n {\n \"name\": \"Face Development\",\n \"route\": \"face-development\",\n \"id\": \"4d58373e-170c-4ee0-908f-2c83d00ee36f\"\n },\n {\n \"name\": \"Limb Development\",\n \"route\": \"limb-development\",\n \"id\": \"4384a0da-5320-435f-bd61-e725a5a88dde\"\n },\n {\n \"name\": \"Skin Development\",\n \"route\": \"skin-development\",\n \"id\": \"9e729410-3d59-49df-a10c-fb91d091cb9a\"\n },\n {\n \"name\": \"Eye Development\",\n \"route\": \"eye-development\",\n \"id\": \"3e4efe1f-05dd-402d-9c0b-15b70a5116cb\"\n },\n {\n \"name\": \"Ear Development\",\n \"route\": \"limb-development\",\n \"id\": \"bfef4b95-2f9f-4f59-ae8d-469c0cb58ff5\"\n },\n {\n \"name\": \"Separation of Body Cavities\",\n \"route\": \"separation-of-body-cavities\",\n \"id\": \"fa99f697-f5e1-46f7-84e3-7d2073e77188\"\n },\n {\n \"name\": \"Respiratory System\",\n \"route\": \"respiratory-system\",\n \"id\": \"b26800a8-cb0d-4ac5-af46-6b8d22552383\"\n },\n {\n \"name\": \"Cardiovascular System - Development of Blood & Vessels\",\n \"route\": \"cardiovascular-system-development-of-blood-and-vessels\",\n \"id\": \"0db3d5f8-de53-436f-856e-80452917b78a\"\n },\n {\n \"name\": \"Cardiovascular System - Arterial System\",\n \"route\": \"cardiovascular-system-arterial-system\",\n \"id\": \"3681d20d-01be-4bc3-b700-5f100f68e42f\"\n },\n {\n \"name\": \"Cardiovascular System - Venous System\",\n \"route\": \"cardiovascular-system-venous-system\",\n \"id\": \"ec423bb9-809a-4b27-bb5b-40df84f2551d\"\n },\n {\n \"name\": \"Cardiovascular System - Endocardial Looping\",\n \"route\": \"cardiovascular-system-endocardial-looping\",\n \"id\": \"38ebe880-08d4-4a7b-9a9e-5b2d45843730\"\n },\n {\n \"name\": \"Cardiovascular System - Chamber Development\",\n \"route\": \"cardiovascular-system-chamber-development\",\n \"id\": \"e1f006cb-dcc6-4e4a-a982-ab252511707c\"\n },\n {\n \"name\": \"Cardiovascular System - Fetal Circulation\",\n \"route\": \"cardiovascular-system-fetal-circulation\",\n \"id\": \"383eb3fb-bdbd-499a-877f-1d391b628668\"\n },\n {\n \"name\": \"Digestive System - Foregut\",\n \"route\": \"digestive-system-foregut\",\n \"id\": \"7368abf7-f90b-4e62-9a01-8c7d1b37128f\"\n },\n {\n \"name\": \"Digestive System - Midgut, Hindgut & Intestinal Rotation\",\n \"route\": \"digestive-system-midgut-hindgut-and-internal-rotation\",\n \"id\": \"bd49bbcc-b7c0-4259-a412-aded4ab53e67\"\n },\n {\n \"name\": \"Urinary System\",\n \"route\": \"urinary-system\",\n \"id\": \"40ee5276-3c1b-4d51-9c7f-4f3184eaa9b3\"\n },\n {\n \"name\": \"Reproductive System\",\n \"route\": \"reproductive-system\",\n \"id\": \"b1a5599e-cb8d-4585-8458-0cf83d8626e3\"\n },\n {\n \"name\": \"Reproduction\",\n \"route\": \"reproduction\",\n \"id\": \"b8037d69-9e1b-40fd-a6bb-fc7335d95bf3\"\n }\n ]\n }\n ]\n },\n {\n \"name\": \"Student Resources\",\n \"route\": \"anki\",\n \"content\": [\n {\n \"name\": \"Anki\",\n \"type\": \"Link\",\n \"content\": [\n {\n \"name\": \"Spermatogenesis, Oogenesis\",\n \"route\": \"https://ankiweb.net/shared/info/1321836690\"\n },\n {\n \"name\": \"Fertilization\",\n \"route\": \"https://ankiweb.net/shared/info/792709887\"\n },\n {\n \"name\": \"Early Cell Development\",\n \"route\": \"https://ankiweb.net/shared/info/899556799\"\n },\n {\n \"name\": \"Implantation\",\n \"route\": \"https://ankiweb.net/shared/info/1165620282\"\n },\n {\n \"name\": \"Gastrulation\",\n \"route\": \"https://ankiweb.net/shared/info/601082048\"\n },\n {\n \"name\": \"Amniotic & Chorionic Development\",\n \"route\": \"https://ankiweb.net/shared/info/1784994218\"\n },\n {\n \"name\": \"Neurulation\",\n \"route\": \"https://ankiweb.net/shared/info/1898290619\"\n },\n {\n \"name\": \"Nervous System\",\n \"route\": \"https://ankiweb.net/shared/info/1605939939\"\n },\n {\n \"name\": \"Face & Pharynx\",\n \"route\": \"https://ankiweb.net/shared/info/1471765780\"\n },\n {\n \"name\": \"Face Development\",\n \"route\": \"https://ankiweb.net/shared/info/205999590\"\n },\n {\n \"name\": \"Eye Development\",\n \"route\": \"https://ankiweb.net/shared/info/984910429\"\n },\n {\n \"name\": \"Ear Development\",\n \"route\": \"https://ankiweb.net/shared/info/86231708\"\n },\n {\n \"name\": \"Digestive System\",\n \"route\": \"https://ankiweb.net/shared/info/758261480\"\n },\n {\n \"name\": \"Respiratory System\",\n \"route\": \"https://ankiweb.net/shared/info/1332230343\"\n },\n {\n \"name\": \"Cardiovascular System\",\n \"route\": \"https://ankiweb.net/shared/info/1372398626\"\n },\n {\n \"name\": \"Urinary System\",\n \"route\": \"https://ankiweb.net/shared/info/1910508368\"\n },\n {\n \"name\": \"Reproductive System: Male & Female\",\n \"route\": \"https://ankiweb.net/shared/info/267667472\"\n }\n ]\n }\n ]\n }\n ],\n },\n ],\n studyTools: [\n {\n name: 'Bookmarks',\n route: 'bookmarks',\n themePalette: colors.brandPalette.royal,\n showOnHome: true,\n },\n ],\n meta: {\n siteTitle: 'Anatomy Bootcamp',\n subjectIds: [\n '65dcea9c-ac11-4e6c-aac0-89fa2f979afb', // A & P\n 'd8496b7d-8fbb-420f-8b05-91e35ad45bc3', // ULLB\n 'eb01603a-62af-4b68-aa9d-b160a3f28279', // Head & Neck\n '7ff0f5aa-9081-4299-bf2e-4944e24582e5', // TAP\n '298aed63-b9f9-4cf6-b9f5-5dbbf929a429', // Neruoanatomy\n '7d5e9730-7ace-4b16-99a1-b65581ad55da', // Histology\n '1cb0857c-d81a-4e41-8add-8ba000cf0123', // Embryology\n ],\n }\n};\n\nconst getAnatomyConfigObject = () => {};\n\nexport {getAnatomyConfigObject} // TODO this is a vestige of the old anatomy config setup & can be removed when legacy Anatomy code is deleted (used in router & various AB content pages)\nexport default config;\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAR+SURBVHgB7ZlfT9tWFMDPdRxYUpWZqts6dV3dl61aNYlqKluf6nyC8Q22fYKG5wUljO4Z8gkCT3scfIKkT5vYJNKnrdJoUugfjUoQkUAgcXx2jpNA5tiOnZgAUn5SIPE9vjnn+tzz5wZgxIgRlxoBAYLrTx8DogaSKAIYa+JBLAdnTCAG4EZWgZrI0GwzlqESvVZJ4imEISfux4oQMAMbgOvZKZrmV3qrehDP0R0rYjq2DAExkAEt5bP0VvF1o4Gz4pvYEgSABINggEZ/lXq5DPzy/q0iSW6nQgAMZsA4LOuk+OHrt7C78Qz0atXrnQrUTbcbmIH3wNZCYiYkxLcNxLXxaCSj3PvCdKejnR2Qr05A9ObHLneLJTH9aBYGINAw+urJXFwgLtK0JQMwLYfD311/OK3KkYjzTQJjg4TbQA1gCqmU+QTupFIcQqH8S0Ybv/HRVDgaUar/vnscufGhdcMXIYz3KcSWoA8CN8CN1wuJ1Pt3P0teuf2pZaR/VxpsE/uk1pCX9jcLJaNet4xgHP/MzkAfDNUAditSfuXg5Xb3oCEy/YTWoRrAIJUWx3t7dkMcWjPgk6EbcGvuSa62W7JxIxMNf8/GwQdDN4ARgHkywn6Qs7RZonjjXAwAIdaOdt45jSpcHJoVrgfOxYBjPbTMmdrBjRgV6lISPHAuBnA0Ql3PVd+8dZHyFlrPx4UIHSBddXajJs3Q6upKMvjA3FxSq3FB6rZkyPdbAjQashmNjnf3lPFrk05iSsuVHLN0z1IC/8hqgIInmQL7xiVPmzIHspH22zJyaTF2bTJ5/cFX7oIuBZ+jC7H/4XquQMpzx6WBc9c1RY18nJJQgeR9ZVMuLVpPwV2wuYC2dD0B/I0UCJkZUYP+KNIs8177Xi7B5ffGFz94+DVI4bCzoMNT6DaAV91bg96LInATL+Faa7/w55LdnnmzkMheuX1Lm7j7udt8OTGtxawXz9IAN0qdr8bhoVreLKjhiavQXWp3EMZJ6wLY7AFasbOH95MKzcCghaJRVfnynrvyTA266qRuAwQfRF1QhHhkvdRlQGuj9BXbh0BXkWcfRhHTcDFRrJnZ3oAx4FOzC/UUapQrKsWtVesmti0lWIgy8DwlkEUIgEb1qPW/CiE6YhFyyDHmc4WqlyvAXdtBcQsMXW9ep9pJb8gpq7xrKUEhtZ2FfcFKHGxtA2dYfb98okQnkiw3jQk31xDrOsnVT4w1lROQMwxjpW6MrbaPaay4F3MN/IGy8gZ4PLzlo8XK5gvzqLETIbAIQsojnrql0WgAVspqh1CJx4UQz3TEIhd7Tkr/b+5eAmZNbvQ+xzyk2n7/r+enqy1EkSZPc/PiRZF+8XSwRfsh7rYfyrTq5X9etKcsoTDmP0n8HMjxeS88NTSUG5YotM7bjXFve6I8rTpKodiwlDe/0o9wy534Saj8mUMbH6s33YZWnpX/MZWHIeL7bLRdbldebmv7fz8/vS5wdpgr36bvw91XP819L0mQRESVXedmYuEOXEbYEP6RA0aMuJz8B0h4AbQJVe6yAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAVzSURBVHgB7VlLTxtXFD7XHg+2gcQQIJiI2JBKqURSoA+o2kXsVt1VTbJIV63KP+iqmyoVrtJuumml/oC0q66iUFXdVKpMoqp5UBSiKhWtAnGSxgnQYoMBG3vsm3MuHsc2M/Y8DEIKnzSaGd9zPec7r3vmDsA+9vF8g4FN3ItEfO4m8IGiBOk+zwvB8nEnc8TE2VFIrufkWF8kkoQGwhSBxS8/HVK4M8QBBoHzIZweBOA+MI8ZfHAMGLvCOJ/xf/bFJFhEXQKPL5wP5Rk7zTiMWVS2vhIuKXno5IkJ+fChH9mr4QlTc/UGKDSanMpltHYIdhi+EwPgPeJXb2Pg4mE2HI4ZmSvpDchS/mvOtZV3etwgt7eDq7UVJLyme4fkEmct5NMZKCg54DkFsqk1KKQ3xDm7nBDjTe1t5eJByLGLeA6DAWh6gKwvO5WE1liVtQSUVApyq3jgOa/ki0qnK2QckiTIOjxecHd14LVHyCz9fgPahgerSSD4MBsJz0AdaHoA7egraPzu7fGXlC/kcrD+4CGsxx5QDAuPSG43uNErAm3P0kVBD2wmErB2/6G4X7s7B91vh9BjHiTTKQywjQADQ/kmgQl4j/SUrpeu3QAPPrxj5BWQVKV1sBVCSilkyj1IxNxdXdvmZJLGqq0pAgWMYfHni0vCegdePL5NZvnW7eL4Vj7w4hzpQCu0HusXlpbxIDKrc/Mij9yHOyv+Q8HQ+u/6NDScQGZpUTyMFFD+vAMpVMCDYUXxrKId45nCixdzgaCSIU+kkRwprmDONAeOQusL/duU/3/KmPKmCWw8eowK9wgrdr4xCiuz/0Dq7rxQ0Fkk4SwjQ+BIhhRXk5o8QSHjHXoJHC5XSU7NKfo/MzBEgCxOD92Ix4V1yGoUDqq185mMCBWKc1K4GgwVpVDRKrNUuSjkqBjQfLOoS4Aqj+/kgLhuCfSKB5KVFq7+hiSOITmfUM4MqOpklpOo+GIpsa2iLoGW4NGKe1KWLE8hQURSc3NiEWtCIlRKqd47sKwy/I1kVK8QcSqnpLAVS1smoFciKdZVz5BSG4/ipeTcTdQkoNcaVEMulkYC5YRCbUKxZaCVmTxAVlcTXL0nEGE7HjFVhYyAKks5ISMoJ51dXjYVZg0nYAUVpLFQEPLZ7Dj/I+qr1147YI/CKcshKLDL/ObkPX4zOqYn11AC2cQKrPz1N6zN38e1YRMahCCuJBf5rWhQa7ChIbR6ZxbiP/9S8ZuMXWngw3Pg8XeDTWh2dw31AK3I1cgmkrge2PcGvqFpErDtgdmvvoXm/gC09AUgm1zRlJHbDoJN6PbWtgmQhbPTSUhM39aVobHm/iA2gt3gxD0YC9g5Akaw8OtVADoQBweOQ+CD98EkYnoDu74OpOMLxgQ5TICTfw95OIO7Y1xPbE8sZJpgqDh3zLDRU2O1xGxXobaXB0Wp3BFwHuFTV8Zridj2QO+598Q5HX8C/176SZwbCiJxPbrCXg9/ozXcsBDaqjDa3evA+Cci9onc5hODOVCOGlssO54DFF5ErIXWCjwsgelXoYauxP5334GON0dR0aCuNywgVouA7uZu/ML5KG3sdr91qmL3wAyotaAdCctJzvnnbDQcqSWi64HNvHQW2U3m8CXDKsgLtiqUDN/VE6n7fWD90g8Rb6//IxBt7S6D4Tb7a+HJmiJgAPwa9uK0sDjYx7C7RJJI4mwtEqa/kfGpaAiX+TM4dRB24eMHIsZGQn16g7Y/8uHr3hBmUhB7liFRrzkLlNXtYJW4r3iYQRIJ6O4Q2CZgBfh66IMcklOJkzeZ8KYWuZ31QCMhvAn0MZGdhmfem0QCup+b9hSBcmzlGhONXC0Cex6iAu5jD+Mp7444/XwhLBAAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QCMRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAEugAwAEAAAAAQAAAEsAAAAA/+0AOFBob3Rvc2hvcCAzLjAAOEJJTQQEAAAAAAAAOEJJTQQlAAAAAAAQ1B2M2Y8AsgTpgAmY7PhCfv/CABEIAEsASwMBEQACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAADAgQBBQAGBwgJCgv/xADDEAABAwMCBAMEBgQHBgQIBnMBAgADEQQSIQUxEyIQBkFRMhRhcSMHgSCRQhWhUjOxJGIwFsFy0UOSNIII4VNAJWMXNfCTc6JQRLKD8SZUNmSUdMJg0oSjGHDiJ0U3ZbNVdaSVw4Xy00Z2gONHVma0CQoZGigpKjg5OkhJSldYWVpnaGlqd3h5eoaHiImKkJaXmJmaoKWmp6ipqrC1tre4ubrAxMXGx8jJytDU1dbX2Nna4OTl5ufo6erz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAECAAMEBQYHCAkKC//EAMMRAAICAQMDAwIDBQIFAgQEhwEAAhEDEBIhBCAxQRMFMCIyURRABjMjYUIVcVI0gVAkkaFDsRYHYjVT8NElYMFE4XLxF4JjNnAmRVSSJ6LSCAkKGBkaKCkqNzg5OkZHSElKVVZXWFlaZGVmZ2hpanN0dXZ3eHl6gIOEhYaHiImKkJOUlZaXmJmaoKOkpaanqKmqsLKztLW2t7i5usDCw8TFxsfIycrQ09TV1tfY2drg4uPk5ebn6Onq8vP09fb3+Pn6/9sAQwACAQEBAQECAQEBAgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwLCgwJCgoK/9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK/9oADAMBAAIRAxEAAAHhuHo+g0r2ryviPRvpjh6Pib0k/TPy839MmvlnsX6oyNYb41015jk9jrAfLfR8f9HvOys1mrXyv2L9S5XyX1JwXnfQe9+d7nqMfAvV+d+ik8lyJqL5E7V6kjhh3E4fT9LXrt8+qj7PH+e/T+eXnoXLX7r8ne+0Xir0/mhtfZsurmNtu3Xm8R7vn7mWxA9n8vo6rZGpHxJ09jps/Uk9O/Hn+yZcKqXHjObbrds6bsWt9tPE8bzrk0+quBesSxl1Qc+tL6a33p59hoitV+PeVPpHw+h8DqVXLu9B6q93uO60zOy+JheCwX3Xj2Zedoo3D9Dq9LPsdrsHTp2TkFPzYuX2AX8y8Tdtif/aAAgBAQABBQLwD4K8P+NvrMg+pb6tLV2X1feB7FV/tG0W+x/Uh4h2zwpNeeMvDnijw/afutgNdjlg5p92L+pnT635UiN3252Oy7f4z+t7xV9Y+42H1Py3K0fUrv8AaJlsrnb7jwyrLw7LM+Yp/VCrl/XHdXdoIv8AOY8QXAsvq3EFrt/hxRWqC3nXB9c/hxKU+GLy3R4Wl8RbNbk+P/BINufrI8JeP/6a/wCcZM/GW1fWl4wn8Dw4NPh+5Te7BLNYXHijw3dbX4Ckvkl2u6bZap/pBYB2dyVNJqnxnt3vNoJv0Hv1l4s2TadmsNwu5d3G+nfdtg/zct9Lh/zbIGP82rYqWMrhXVO62wvtt8RR7htd7beKUpVsPikbOPC1/F4g8YZPJ5Oxq7f2LneETzJ8G2+92Xij6jd+sY9n8MeI4p/CfheHwva5PJ5u0QI03+9XF1Ltc1+ZEpvJhLfTwo3f65vFOxeNNr3ay3rbcnm83v1z7tbWSUre19TtcJnLaq92+tD6tbXxxtP1AbgbnaJNtv7d5PJ+ICTc7ShMs3h3+OS200inNDGm15ijc+Pv9YfrpjSJIL0BF0//2gAIAQMRAT8BP8Qu0NDTGDE86dX+KP8AgRqf4h1wYJ9ROosfiCfVl8RMeC9aDGYB/JGp/iFJASdz8aRGNBjOIHL7kH5vFGRjmh/gP++P94/qjxpYZCe/w1k/J6Xoc/UxMh6PRRMdwcmDNL8Ff5+XHg4p6/Bmj0cr/wBp/V9vIfRjhy/4j+nz/wCInjT43qPbmcZ8FyT9jqCx6uMYWSjNlkfsi9VmrGYzFGn3uo/xndmP9p/mf4zLQcF6ie6skWOcCVsc+Ax5iC9b1AzT4Gtp13ImPVrJHkPPYdCA8JRmyRG30QbF9tp1lEFhIjhEtZJ7PRl+PQeNP//aAAgBAhEBPwEExwRp9yf5u+X5oJtz/eKCcconlxsvxFBbT/k8dACSy2YI3J/vAD0f7wgfIcREo2GX4i00H/ZEX1cUa8vWgmT7cpHhOOT8cZRuEv8AMz/GdNs/yYyxnEAS/wCp/wA05sUPwvVG6LiywA+7/YJO6TgyQOeNP2s7kRU6dv8AucsTrs34w+1ImgwxUOUQMMgl6Pv4vyf1Ef8AFf1P9GKEcFx45fhknEa4Y+56piYxs9kdMPTGZBLHGKouTpjHmKZw9XJP3C1rAODAI8ljbZDEly4xK+OWUTCW09nSQuVsQgaBkN3+F9uGT8Tn6MAboaU9F/DLF8BGh8sv4mmcAZ5af//aAAgBAQAGPwLfdv8AEdtJLHATJGlEykdXMI8nl/Qi3X/u9ZW/4n4K2qE+vuwd3ydttEUtl/uoQPyue83iRSUSwRUwRkeDvotp3AKWLVZ5SxRVPk1/7qH8Dsz/AMaqP4Hlp8H/AIp/vIfiRP8AsL/oYX0xCn9lzbnuEyIbe3QZJpFJ4JDVsXg/m2G3cFGn0kg9Vny/sj/QYy3ReXwfvWy70BIkGgk4H4Oexu7cxSxDGSJX5S7E/wDGoj+B4JTX5P8Ad/iS/EtQT9H5f7sLCp5cKnSqXtuxbfcn3a65ks+lMigpoP11+xi2RF1K6pFPpCB/afSUn+yXF4ihSgrA5N1gRw/KT9un2uwMtyhP8TRxV8GTc75AkfGYOivE9lX/AHcHvG++GfB8t173KpAVJF041rUah0g8GQRj/jzTp+Mrt5/HMFvCu1Qr3ZHLCcgaZeyT6Di7i0UnFSF4qcKyi3XZinvHNizWseYHo59sEphRNGRFGDpGXd3F17uqZNF3EkcWPTzOP+DxeMl3WnkZGvmWMM5VwK/yug2q2/wC+PYXqEA8sFEo9UK4uez9pRx6gPa+LXd7srIaICQOKjwDF9Z2yla5JJKQeHs6+Tv/AApu1kEz3FjjSoKTn0+X8DHvPi+Lhrhan/kp/wAa8X3B/sQJevijcP8ABj/5J73Fkf77CpP6nBuKoV14SAjUhrE0QEcwSChQ0082P0TuChVI+gQo0SHJKmHS3iEsshHFZqBX9f3jt9j1ZDFU4BKUeXlxarDcoErj8gr2h8a+n62ZdkWb2H2kpGkgT+1TzH6/m8bS4RkV4DMeZLWk3iri4mIM86hTh5AeQ+5mvQAal8i3JRECDSmqtfN/R3RqCUURxHpwfNUpWWntp/N8X1JOS1EpCkmipPKp/wBsOVG/+E9sTISDIIgrJSaflUdCr+VT4fFwbvts2cFxEJIlU4g/cRbI4ya8OPwfVqDx0rVJ86eevnwfLkP8iTiuh8jpoHjgCRqU0SKKHHzaoFpyqNOj2v8AbDCYl43EByhKFcDjoNPLV3/gXdvorza7kqQknFWBPUOPkr9Sg9fpEU9vzHz7oJP5Uj9bgiWOmSSRKx6geT5dx1J5Shj5aMI0pyq6JapAjWOVOB9P9urlr/pY8vj/AKL8P7rs4FvcXa8LmSMfvBzEx6/5Jp+HoGCuprqan4ORKf2u3//EADMQAQADAAICAgICAwEBAAACCwERACExQVFhcYGRobHB8NEQ4fEgMEBQYHCAkKCwwNDg/9oACAEBAAE/Id9pl0qVkkBlD255QfytknPP/lqpAGRjXqnuhnyC5D5rPCHAnMuf+I+3/wCHfNAchpBv+H5sPZL9T5vL+6a54wEl5dr5dJTsA4vyeWm8x0hh8eKBgfd1NacT56vY6xADn8I9iN97/wAOvr8wybFkPyv5o5EeCg2BEmX6sm2a6O/GP3imwlw90S5Ei4s8nnOGz6AkznE5yVU0vWiZodBGB/uswByNA80yTyeymzNXyV/KvNoho/Q+z/1YcfpPTFbsi7n62HxEyF5B0+RIliUMWhG/hlLrucUWWMCkPqaWRXDeHiPN6q9S/wDd5p3cs/i8vS/RD6miwPQOAQR+Ky2ZCXDhRh25Dp9Dn3UBYi2yE+yeVZhTEivuX+ld9vB/kb2R9VFly7ChEevlFjjYvnB55j+G6EWAFSDxXqeyJg9Meg8VBSvAedGu9vB/wWZpw3OrzsFKjyxwefFgy5HSJ15B5ez6KC9i35cfpfjQuAQNkDY9+psb7QJ6dZlg13X/AJLKmsSydFLp0HFh+Hr83qFOezxn5oY1Shh8kPKJHZtIIox6ch78QexdS4msDi9kN4Al8XCpQp06fJ/yV8rhnZDPHH2f4qU7rAl6rwdmOq5zl+MuuNgEssGcZkyTbDS04jyiZ+GNdJ2l1Cw6yFcecs5mpGE06b8eTNdWGoH/AIOn36p/yZJPa6uYt9K8vR44vN+0YhwwyqKhFQGjjlCJOfMP9rLUeOEdePhFizpBEcA8Oy8xPYkPRMjzQkQdLLf/2gAMAwEAAhEDEQAAEL/lojhNwD2uGHTlvhsdKE/mZoMF25NRCScoCK8EIO1K5YNYi9gP/8QAMxEBAQEAAwABAgUFAQEAAQEJAQARITEQQVFhIHHwkYGhsdHB4fEwQFBgcICQoLDA0OD/2gAIAQMRAT8Qyg/Er2WXRJ9rUQR6u99v+7gWFh61yKD/AD9rnnnGqa/Rj/xAJ9xbpNr5O1uAFh7vltWsuXvi7AD9j5Pzw8H5rptDtvu2wmpd/T/dkYGe/nTo+n5v/bZTE4sRX3Yf9jJNlx+D4kfK6PGOMbvLvEdBfsxx5P5kYcH9fzDVzt+Th/M6/ecYdg31KvzbRbH10JcIdd6O9Wv/ABPbdnzUOJ6lgxam/D/22QhH1PkeP2SwIABwGH7ejCeky4bOep3HH73MTi1Ovf4H8TiX0Eg4h9LXXt1CQ6fwLMXHE5kZvMDj3A/Zb8PoyXE8H8zPgYJ6urz/2gAIAQIRAT8QUF9r4yKdqwNYsoTHzDj+b+obC/PKCEBPf6zxidHijLaLpDPzGIQi0bwJto5tGvUYA2HwkP0u/wDY/k5/iwfmMm9F9/8AsxzTC0d/1v8AidxLv0hyfPNhA5/CTf4Ic3mPb85xlx+n9I7Bn6fP/k7ef3P+SpzDxP1PieQ+IxHmDkcxE5T/ACfNl8/3sup+T/WfOSlgxNNPkuMXMdvL87fnK5/HnNjCLjhN+k/IJ+v2/Mvnc+nyf5/XcUwdShhgdWPdOrM5WWO4Rso36T5Ro7+36/mXdpx+AWfx/uzZjr84M/XxAXbp/D+v2uUAX7kw+H4/x/jw4X9VcP6XyH1Lgwdfe4zofqX6/rGgfPn/2gAIAQEAAT8QcSTsFRNEpMerJJEYreWY3TMAQT1qzW8RNKR2khsOu55LcvoyVT3UHlEagYGOJOkapb358qTrKiwjJRjENlmHfxQwNfJE1NHwf5+aWLZKW5nrFlDDG0GiugNVA1o7WpUciSE5BsEmyEXiJIvBFmAcRFQqYPzOJuOFksJIqHvEd/DEhAwBjRnTbPmw0lcMR7MOfhrBkQH9hMqswh3rtx91ZeFQQ4Ec0zJYGPIgXHcdkL2gYxUZL3BAHqyWlBwk8kpW8IpA8dedKoWrlMIRlNP0a4k3oJWjxLV68iXpzJwrJ40aP5pL0fQfSlUJ4SPuLe8XP8HqtBZnsF4QM7AMEbCVTnpkv1w+OKNypSKEC49gUybIzkCSkDdYA9ZQYMeMjnqyySBEMQ2hBMMgSAPBUvFxkkucyuWeCnB32z8smmkgwJaJNl+a0GrDFBT7B4lU1j0oWouixXnT4vGxSkxEkVOXCJUpKIw14afJhAkSw9ykoURGOKEKAAoJFDDwR7AOBlSX2pZLPAv6sYJkNRn4sEB6KYfsUO0hhGZL1sbZSCSEEgroeFkEs+PaaLOhHCeFGpvZiyoTDgYH0K/KVXAuVEj4UAUBh1e6e6gCWw2exrSfCggqYk8QRHIEPLG8vunkgSNM2FAYCZgvYnIQB0EAGrVYHBoAiXPcgEZ4ohAtNCEzz0UUot9W72EiSsJKdwNWo1FKAmGF6McCJbAcYJTaEBCGYiQy7UH2k/c0CAQhqGws6FBkTnBUYlRynBQm2imFWGQRA2cMZgCSEphNERuf7j/gYvUyYQjrCapBO+k0mUM5gACDUKicIJpCdhBNGW1mdvzZ0q9RACMh5TvizdvEx5MgmYLBnriiNECnCUAfgDpJY/5DhzFOtBJSQIqod0AZAwLQkiUDoajHzTPP6rOwJqBKc9+eYU7sEXqUJGaPVxeKInBAJ+zGk8pNA1PNp9AMnn80Jd4kqh75IGGcY6IUiAxm5ZiIUiIRjxZ5gOuL1ndJIZKbdDqIkiHn22GmtOXIL+1sWDf/2Q==\"","import {colors} from '../styles/theme';\n\nconst config = [\n {\n name: 'Organic Chemistry',\n tagId: '13925cee-9aa5-4ddd-9a82-7e65274ef211',\n route: 'organic-chemistry',\n themePalette: colors.brandPalette.violet,\n questionCount: 328,\n icon: 'icons/oc-logo.svg',\n educators: [\n {\n firstName: 'Dr. Mike',\n avatar: 'images/mike.png',\n }\n ],\n chapters: [\n {\n name: 'Bonding and Molecular Geometry',\n tagId: '0ff8c014-edab-4f3f-9847-c51742b3fa72',\n videoLessonId: '6aeb90d0-4817-420c-92f2-15d89e521ef2',\n questionBankIds: ['0dfd58e8-d433-425d-af89-3946d4504c83'],\n route: 'bonding-and-molecular-geometry',\n },\n {\n name: 'Acids and Bases',\n tagId: 'f6ce6bc6-1d6c-4bc5-b4eb-105e30c62510',\n videoLessonId: '20decc73-e13c-4e43-82cd-a8c2a6a6df7f',\n questionBankIds: ['a7b8f2bf-fa69-4658-85aa-b7d994249fd5'],\n route: 'acids-and-bases'\n },\n {\n name: 'Nomenclature',\n tagId: '70e150b0-05ed-4e8f-9e61-16df3a3464e1',\n videoLessonId: '181107aa-4ff8-49cf-8908-9d511ddf6515',\n questionBankIds: ['2f3eda4b-ba44-4a20-ba55-c40190a7e49e'],\n route: 'nomenclature'\n },\n {\n name: 'Stereochemistry',\n tagId: 'f57f0e78-c0bf-44cb-8121-5161c4ae681d',\n videoLessonId: '98151b49-53a8-4f10-9dbf-5434fbe4bd26',\n questionBankIds: ['d58cae22-cbcc-4d53-88c4-a3a980527c6f'],\n route: 'stereochemistry'\n },\n {\n name: 'Alkenes and Alkynes',\n tagId: '9671ae9f-68ed-4bdb-9493-dca5fb60e56c',\n videoLessonId: 'f812811b-f6bb-44f9-b975-d14fb07c8883',\n questionBankIds: ['b5db3d32-6e24-4c1e-b0ed-fe992590845a'],\n pdfUrl: 'https://drive.google.com/file/d/1h1G5pbM5lXYJLAiUAZRD85PoZUlvh9jX/view?usp=sharing',\n route: 'alkenes-and-alkynes'\n },\n {\n name: 'Substitution and Elimination',\n tagId: 'fadf69be-82c6-4023-8b21-42d6a4063391',\n videoLessonId: '9765a9cf-6403-4aad-81d0-e66f5c95b620',\n questionBankIds: ['bceffdf0-b1f6-4e17-9afe-93abdea113a6'],\n pdfUrl: 'https://drive.google.com/file/d/11E-v9ubfW5oP9aT-g7aos3IlnTw-SNlX/view?usp=sharing',\n route: 'substitution-and-elimination'\n },\n {\n name: 'Alcohols, Ethers, and Epoxides',\n tagId: '9af0b015-82f1-451d-91fa-9fe7b1f4e525',\n videoLessonId: 'e5437bf6-6688-49b2-a833-fd3872dbce7e',\n questionBankIds: ['5fc9bb57-d897-4919-935f-aed4d1935cd5'],\n pdfUrl: 'https://drive.google.com/file/d/1ZKFdbdDqJb7yGGNVkY6qdfCcjPqms0xh/view?usp=sharing',\n route: 'alcohols-ethers,-and-epoxides'\n },\n {\n name: 'Spectroscopy',\n tagId: '7d818e38-272a-4994-97cf-bc50ac5709d2',\n videoLessonId: 'eef3a30c-3eaf-4f0e-9011-6d82ce67b6f4',\n questionBankIds: ['f6ccc119-00b8-4467-bdf9-2d009075a76c'],\n route: 'spectroscopy'\n },\n {\n name: 'Free Radical Halogenation and Diels-Alder Reactions',\n tagId: 'c8a4a186-879c-411d-adc1-e9e1436f5e4d',\n videoLessonId: '8878ca86-dc11-4daf-b954-ffb0ee0fc31f',\n questionBankIds: ['5bd82d88-7532-4bed-8189-371228a15c42'],\n pdfUrl: 'https://drive.google.com/file/d/1CPmCNqn_aCOPTpseE-H3kjuQzhZ2drZ5/view?usp=sharing',\n route: 'free-radical-halogenation-and-diels-alder-reactions'\n },\n {\n name: 'Aromatic Compounds',\n tagId: '9db7202f-6978-45ef-8b8c-a01d787cc84b',\n videoLessonId: '81ef0cb6-1082-4bd5-a419-7267d47611b7',\n questionBankIds: ['107b7986-1ebb-4c88-b4c4-b575ce7e2a6a'],\n pdfUrl: 'https://drive.google.com/file/d/1NBK0sMS3fgRAgFCLERCcnTRLYUqVh7ok/view?usp=sharing',\n route: 'aromatic-compounds'\n },\n {\n name: 'Aldehydes and Ketones',\n tagId: '2a7b988c-b24f-42ca-8b30-39fd5a00fc49',\n videoLessonId: '75ea53b2-1ad1-481b-80b3-35acbd0a9c62',\n questionBankIds: ['2c9023b0-e3c8-421a-bf47-059025b465cb'],\n pdfUrl: 'https://drive.google.com/file/d/1VWxvXcpMjo3T1OACU9I7CxMfjJw9FNN2/view?usp=sharing',\n route: 'aldehydes-and-ketones'\n },\n {\n name: 'Carboxylic Acids and Their Derivatives',\n tagId: '84490018-5c28-43d2-a831-0dd787c182f9',\n videoLessonId: '822654e2-3a5f-48e5-acd1-c750752591ba',\n questionBankIds: ['1b2a6a6b-f39b-4b45-b4e8-501f14620216'],\n pdfUrl: 'https://drive.google.com/file/d/1KFMLTHqpioAfvkPuAXD3SX6Tl7PF2NhQ/view?usp=sharing',\n route: 'carboxylic-acids-and-their-derivatives'\n },\n {\n name: 'Alpha Substitution Reactions',\n tagId: 'ec4fb66c-6a7b-4a8c-9e44-bbb44f3cf0e8',\n videoLessonId: '29d7debd-b0ed-40d7-ad77-b144e25f8fdc',\n questionBankIds: ['f48ce08f-afef-4e1e-92eb-426d95100d0b'],\n pdfUrl: 'https://drive.google.com/file/d/1FNFJJsJGgoNKjefssVYZl3R8J3kYHJdb/view?usp=sharing',\n route: 'alpha-substitution-reactions'\n },\n {\n name: 'Olefin Metathesis and Organometallic Coupling Reactions',\n tagId: 'ad571482-e140-40dc-85a5-10acb2895770',\n videoLessonId: 'ab88dbdc-b9b1-45c4-bbe6-a187f6d06811',\n questionBankIds: ['c9628267-ee0e-497a-846f-d27acf1127e2'],\n route: 'olefin-metathesis-and-organometallic-coupling-reactions'\n },\n {\n name: 'Amines',\n tagId: '95d22c93-5e25-4c9f-ae16-0dfc5bb7d649',\n videoLessonId: 'f5c8c919-a04c-40f2-9b04-82b0bc12091b',\n questionBankIds: ['68b6a8a0-cd17-4ee2-bcba-018623aab08d'],\n route: 'amines'\n },\n { // HAS COURSE BUT NO QB OR TAG ID\n name: 'Amino Acids and Proteins',\n tagId: 'd2b4706b-6cd5-470d-8db9-263b568988a8',\n videoLessonId: '1b8062ce-1728-47eb-84c1-ae8ff1158494',\n questionBankIds: ['974b6b68-f8bb-4d7d-aea3-8747abd9efa9'],\n route: 'amino-acids-and-proteins',\n },\n { // HAS COURSE BUT NO QB OR TAG ID\n name: 'Carbohydrates and Lipids',\n tagId: '0e8e6f0c-126f-49b0-ac9f-ca4a5d6ac00f',\n videoLessonId: '99cf687b-820d-4a38-85a7-36385fa28d11',\n questionBankIds: ['ac601f6a-b5cb-4705-969c-243b5cccb24e'],\n route: 'carbohydrates-and-lipids',\n },\n { // HAS COURSE BUT NO QB OR TAG ID\n name: 'Nucleic Acids',\n tagId: 'f9900dd0-5c00-4753-8f50-ddffef39c984',\n videoLessonId: 'bc5bcfdb-28fb-4ddc-abf2-60890bae5ce3',\n questionBankIds: ['004a4148-b9ad-45a0-b545-d86fbd410856'],\n route: 'nucleic-acids',\n },\n ],\n },\n // {\n // name: 'General Chemistry',\n // route: 'general-chemistry',\n // themePalette: colors.brandPalette.teal,\n // icon: ,\n // chapters: [],\n // locked: true,\n // releaseDate: 'Coming Spring 2021'\n // }\n];\n\nconst updatedConfig = {\n classrooms: [\n {\n name: 'Organic Chemistry',\n tagId: '1a0ba62c-1c67-45ef-a811-245a6ddcedd4',\n route: 'organic-chemistry',\n themePalette: colors.brandPalette.pumpkin,\n classroomDescription: \"Dr. Mike is going to make organic chemistry easy. Study Dr. Mike’s Videos and move on to the Question Banks and Practice Tests to ace this section.\",\n questionCount: 1127,\n icon: 'icons/oc-logo.svg',\n educators: [\n {\n firstName: 'Dr. Mike',\n avatar: 'images/mike.png',\n },\n {\n firstName: 'Tyler',\n avatar: 'images/tylerh.gif',\n },\n {\n firstName: 'Wes',\n avatar: 'images/wesson.gif',\n }\n ],\n contentTypes: [\n {\n name: 'Question Banks',\n // icon: ,\n route: 'qbanks',\n content: [\n {\n name: 'Question Banks',\n content: [\n {\n name: 'Bonding and Molecular Geometry',\n id: '0dfd58e8-d433-425d-af89-3946d4504c83',\n route: 'bonding-and-molecular-geometry',\n },\n {\n name: 'Acids and Bases',\n id: 'a7b8f2bf-fa69-4658-85aa-b7d994249fd5',\n route: 'acids-and-bases'\n },\n {\n name: 'Nomenclature',\n id: '2f3eda4b-ba44-4a20-ba55-c40190a7e49e',\n route: 'nomenclature'\n },\n {\n name: 'Stereochemistry',\n id: 'd58cae22-cbcc-4d53-88c4-a3a980527c6f',\n route: 'stereochemistry'\n },\n {\n name: 'Alkenes and Alkynes',\n id: 'b5db3d32-6e24-4c1e-b0ed-fe992590845a',\n pdfUrl: 'https://drive.google.com/file/d/1h1G5pbM5lXYJLAiUAZRD85PoZUlvh9jX/view?usp=sharing',\n route: 'alkenes-and-alkynes'\n },\n {\n name: 'Substitution and Elimination',\n id: 'bceffdf0-b1f6-4e17-9afe-93abdea113a6',\n pdfUrl: 'https://drive.google.com/file/d/11E-v9ubfW5oP9aT-g7aos3IlnTw-SNlX/view?usp=sharing',\n route: 'substitution-and-elimination'\n },\n {\n name: 'Alcohols, Ethers, and Epoxides',\n id: '5fc9bb57-d897-4919-935f-aed4d1935cd5',\n pdfUrl: 'https://drive.google.com/file/d/1ZKFdbdDqJb7yGGNVkY6qdfCcjPqms0xh/view?usp=sharing',\n route: 'alcohols-ethers,-and-epoxides'\n },\n {\n name: 'Spectroscopy',\n id: 'f6ccc119-00b8-4467-bdf9-2d009075a76c',\n route: 'spectroscopy'\n },\n {\n name: 'Free Radical Halogenation and Diels-Alder Reactions',\n id: '5bd82d88-7532-4bed-8189-371228a15c42',\n pdfUrl: 'https://drive.google.com/file/d/1CPmCNqn_aCOPTpseE-H3kjuQzhZ2drZ5/view?usp=sharing',\n route: 'free-radical-halogenation-and-diels-alder-reactions'\n },\n {\n name: 'Aromatic Compounds',\n id: '107b7986-1ebb-4c88-b4c4-b575ce7e2a6a',\n pdfUrl: 'https://drive.google.com/file/d/1NBK0sMS3fgRAgFCLERCcnTRLYUqVh7ok/view?usp=sharing',\n route: 'aromatic-compounds'\n },\n {\n name: 'Aldehydes and Ketones',\n id: '2c9023b0-e3c8-421a-bf47-059025b465cb',\n pdfUrl: 'https://drive.google.com/file/d/1VWxvXcpMjo3T1OACU9I7CxMfjJw9FNN2/view?usp=sharing',\n route: 'aldehydes-and-ketones'\n },\n {\n name: 'Carboxylic Acids and Their Derivatives',\n id: '1b2a6a6b-f39b-4b45-b4e8-501f14620216',\n pdfUrl: 'https://drive.google.com/file/d/1KFMLTHqpioAfvkPuAXD3SX6Tl7PF2NhQ/view?usp=sharing',\n route: 'carboxylic-acids-and-their-derivatives'\n },\n {\n name: 'Alpha Substitution Reactions',\n id: 'f48ce08f-afef-4e1e-92eb-426d95100d0b',\n pdfUrl: 'https://drive.google.com/file/d/1FNFJJsJGgoNKjefssVYZl3R8J3kYHJdb/view?usp=sharing',\n route: 'alpha-substitution-reactions'\n },\n {\n name: 'Olefin Metathesis and Organometallic Coupling Reactions',\n id: 'c9628267-ee0e-497a-846f-d27acf1127e2',\n route: 'olefin-metathesis-and-organometallic-coupling-reactions'\n },\n {\n name: 'Amines',\n id: '68b6a8a0-cd17-4ee2-bcba-018623aab08d',\n route: 'amines'\n },\n { // HAS COURSE BUT NO QB OR TAG ID\n name: 'Amino Acids and Proteins',\n id: '974b6b68-f8bb-4d7d-aea3-8747abd9efa9',\n route: 'amino-acids-and-proteins',\n },\n { // HAS COURSE BUT NO QB OR TAG ID\n name: 'Carbohydrates and Lipids',\n id: 'ac601f6a-b5cb-4705-969c-243b5cccb24e',\n route: 'carbohydrates-and-lipids',\n },\n { // HAS COURSE BUT NO QB OR TAG ID\n name: 'Nucleic Acids',\n id: '004a4148-b9ad-45a0-b545-d86fbd410856',\n route: 'nucleic-acids',\n },\n ]\n }\n ]\n },\n {\n name: \"Mike's Videos\",\n // icon: ,\n route: 'videos',\n content: [\n {\n type: 'Course',\n name: \"Mike's Videos\",\n description: \"Understand the “big picture” of how chemistry works. Each concept is broken down into bite-size video lessons and quizzes which make it easy to follow along.\",\n content: [\n {\n name: 'Bonding and Molecular Geometry',\n id: '6aeb90d0-4817-420c-92f2-15d89e521ef2',\n route: 'bonding-and-molecular-geometry',\n },\n {\n name: 'Acids and Bases',\n id: '20decc73-e13c-4e43-82cd-a8c2a6a6df7f',\n route: 'acids-and-bases'\n },\n {\n name: 'Nomenclature',\n id: '181107aa-4ff8-49cf-8908-9d511ddf6515',\n route: 'nomenclature'\n },\n {\n name: 'Stereochemistry',\n id: '98151b49-53a8-4f10-9dbf-5434fbe4bd26',\n route: 'stereochemistry'\n },\n {\n name: 'Alkenes and Alkynes',\n id: 'f812811b-f6bb-44f9-b975-d14fb07c8883',\n pdfUrl: 'https://drive.google.com/file/d/1h1G5pbM5lXYJLAiUAZRD85PoZUlvh9jX/view?usp=sharing',\n route: 'alkenes-and-alkynes'\n },\n {\n name: 'Substitution and Elimination',\n id: '9765a9cf-6403-4aad-81d0-e66f5c95b620',\n pdfUrl: 'https://drive.google.com/file/d/11E-v9ubfW5oP9aT-g7aos3IlnTw-SNlX/view?usp=sharing',\n route: 'substitution-and-elimination'\n },\n {\n name: 'Alcohols, Ethers, and Epoxides',\n id: 'e5437bf6-6688-49b2-a833-fd3872dbce7e',\n pdfUrl: 'https://drive.google.com/file/d/1ZKFdbdDqJb7yGGNVkY6qdfCcjPqms0xh/view?usp=sharing',\n route: 'alcohols-ethers,-and-epoxides'\n },\n {\n name: 'Spectroscopy',\n id: 'eef3a30c-3eaf-4f0e-9011-6d82ce67b6f4',\n route: 'spectroscopy'\n },\n {\n name: 'Free Radical Halogenation and Diels-Alder Reactions',\n id: '8878ca86-dc11-4daf-b954-ffb0ee0fc31f',\n pdfUrl: 'https://drive.google.com/file/d/1CPmCNqn_aCOPTpseE-H3kjuQzhZ2drZ5/view?usp=sharing',\n route: 'free-radical-halogenation-and-diels-alder-reactions'\n },\n {\n name: 'Aromatic Compounds',\n id: '81ef0cb6-1082-4bd5-a419-7267d47611b7',\n pdfUrl: 'https://drive.google.com/file/d/1NBK0sMS3fgRAgFCLERCcnTRLYUqVh7ok/view?usp=sharing',\n route: 'aromatic-compounds'\n },\n {\n name: 'Aldehydes and Ketones',\n id: '75ea53b2-1ad1-481b-80b3-35acbd0a9c62',\n pdfUrl: 'https://drive.google.com/file/d/1VWxvXcpMjo3T1OACU9I7CxMfjJw9FNN2/view?usp=sharing',\n route: 'aldehydes-and-ketones'\n },\n {\n name: 'Carboxylic Acids and Their Derivatives',\n id: '822654e2-3a5f-48e5-acd1-c750752591ba',\n pdfUrl: 'https://drive.google.com/file/d/1KFMLTHqpioAfvkPuAXD3SX6Tl7PF2NhQ/view?usp=sharing',\n route: 'carboxylic-acids-and-their-derivatives'\n },\n {\n name: 'Alpha Substitution Reactions',\n id: '29d7debd-b0ed-40d7-ad77-b144e25f8fdc',\n pdfUrl: 'https://drive.google.com/file/d/1FNFJJsJGgoNKjefssVYZl3R8J3kYHJdb/view?usp=sharing',\n route: 'alpha-substitution-reactions'\n },\n {\n name: 'Olefin Metathesis and Organometallic Coupling Reactions',\n id: 'ab88dbdc-b9b1-45c4-bbe6-a187f6d06811',\n route: 'olefin-metathesis-and-organometallic-coupling-reactions'\n },\n {\n name: 'Amines',\n id: 'f5c8c919-a04c-40f2-9b04-82b0bc12091b',\n route: 'amines'\n },\n { // HAS COURSE BUT NO QB OR TAG ID\n name: 'Amino Acids and Proteins',\n id: '1b8062ce-1728-47eb-84c1-ae8ff1158494',\n route: 'amino-acids-and-proteins',\n },\n { // HAS COURSE BUT NO QB OR TAG ID\n name: 'Carbohydrates and Lipids',\n id: '99cf687b-820d-4a38-85a7-36385fa28d11',\n route: 'carbohydrates-and-lipids',\n },\n { // HAS COURSE BUT NO QB OR TAG ID\n name: 'Nucleic Acids',\n id: 'bc5bcfdb-28fb-4ddc-abf2-60890bae5ce3',\n route: 'nucleic-acids',\n },\n ],\n },\n ],\n },\n {\n name: 'Worksheets',\n // icon: ,\n route: 'downloads',\n content: [\n {\n name: 'Downloads',\n content: [\n {\n \"name\": \"Mike’s Organic Chemistry Outline\",\n description: \"Click the following button to download Mike’s Organic Chemistry outline:\",\n \"route\": \"https://drive.google.com/file/d/1jAyxn9uNqPjy7egupktyyoim25wsfJga/view\",\n },\n {\n \"name\": \"Bootcamp OC Reactions Sheet\",\n description: \"A big part of Organic Chemistry is knowing the reactions. Download the Bootcamp OC Reactions Sheet below, study it, and practice with the Reaction Qbank!\",\n \"route\": \"https://drive.google.com/file/d/1hU-hFhyYtYS6FCQpcoQgtpiruh2164s9/view\",\n },\n ]\n }\n ]\n },\n {\n name: 'Strategy',\n // icon: ,\n route: 'strategy',\n content: []\n },\n ],\n },\n ],\n studyTools: {},\n meta: {\n siteTitle: 'Chemistry Bootcamp',\n subjectIds: ['fa72381b-e2c2-4e46-a113-135220a010b6'],\n }\n};\n\nfunction getChemistryConfigObject(classroom, chapter, contentSlug) {\n try {\n if (classroom && chapter && contentSlug) {\n const contentSlugStrippedIndex = contentSlug.split('?')[0];\n const [type, index] = contentSlugStrippedIndex.split('-');\n\n const matchedChapter = config\n .find(({route}) => route === classroom)\n .chapters\n .find(({route}) => route === chapter);\n\n const isValidContentSlug = type === 'lesson'\n ? parseInt(index) === 1\n : type === 'bank'\n ? index > 0 && index <= matchedChapter.questionBankIds.length\n : false;\n\n return isValidContentSlug && chapter;\n } else if (classroom && chapter) {\n return config\n .find(({route}) => route === classroom)\n .chapters\n .find(({route}) => route === chapter)\n } else if (classroom) {\n return config\n .find(({route, locked}) => route === classroom && !locked)\n }\n return false;\n } catch (error) {\n return false;\n }\n\n}\n\nexport {getChemistryConfigObject, updatedConfig};\nexport default config;\n","// // TODO this can actually probably live in web since it's only for Admin\n// export const froalaKey = window.location.hostname.includes('datbootcamp.com')\n// ? 'XAG4eG3A2B10C9C5D6C-11ecwfjiskhgH-9F4nablA6F6D5D4A1D3C7A3D5A5=='\n// : window.location.hostname.includes('bootcamp.com')\n// ? 'UBB7jE6C3A4A2H3C10aD-16A-13mhlH3fjiskhgH-9F4nablA6F6D5D4A1D3C7A3D5A5=='\n// : 'XAG4eG3A2B10C9C5D6C-11ecwfjiskhgH-9F4nablA6F6D5D4A1D3C7A3D5A5=='\nconst SENTRY_DSN = '';\nconst QUIZLET_CLIENT_ID = '';\nconst VIMEO_ACCESS_TOKEN = '';\n\nexport {\n SENTRY_DSN,\n QUIZLET_CLIENT_ID,\n VIMEO_ACCESS_TOKEN,\n};\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/dat.56605b7d.png\";","export default __webpack_public_path__ + \"static/media/title.a9dff818.svg\";","export default __webpack_public_path__ + \"static/media/logo.54d7eb7d.svg\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/learning-new.397b5266.svg\";","export default __webpack_public_path__ + \"static/media/mastered-new.a405ce85.svg\";","export default __webpack_public_path__ + \"static/media/reviewing-new.1149ac56.svg\";","export default __webpack_public_path__ + \"static/media/untagged.98506565.svg\";","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAVESURBVHgBvZgNUhs3FMcl7dpAQwdDk+Fj4tguOUB6guYGyQ06OQHpCcA34AbJEZobpCdoDhBqwFMDhQkm4cP2srt5/919tqyV1h/D5M3IK8nap5+e9J60kqJAWq1WRSl/J47FSyFkXYi4LqXeAoU4e9okHi+Nil1Kn+JYfhDC+6vR2Dx0KLBrJjAC8d9R9uUIyAUxr6S0gJZSvo8ir2kDzfV6dNTeocce/VWhF4Xve8LzPHoqKBIPIVEUiTCMxf19SOmegcmqUbNWq+07Advt9m4UyT3kAba4WHZCzQIbx7Fww8ZiMAhEEKSgSsV71Wq1mQNstzs7NLKEHmClkj8XzCyigwOy3w+4+Get9nR/CNhqndSVCv+hbGVhoSTK5ZIV6qFATYtyOQgC0eslkF1ak79hTSqUlIp2AVcu+zk45DnZ6mZJLp2cL5fTmaNsxfPCd8l/sB4VWjDmo0eLBKuGL+kKTZnVmrZ1qNdxHs+bmx494UjBKvHErwEHcsCZI7OBueDN9yYN0mzLCQ4KJorBb30qv0IDVNoUI8QgLJgd6GW2OkZfBMllthbnuQ3nwQKvltL7nVw1foFKpTynYn3azaky666uvonLbpfiWySGO8lws5FibXVFrK1VxiB1ODxhlCxfJwvKSmqp/KJ1iQnFbU9Pz8Xp2blwSyyur28S2LXVyqhWg0uNNdRbVyaQbQ3a6mBVtizk7OxCnP1/Yffg0VCS8ter66m93re5vwlns5r+zvHxf+LL5VXuv6WlJbGx/pi8MUwsi2AMK4ZROGY53XpmH37aiRvONL8uITlPp3NKa+6rdUk06k/FwkJ5WD5ud0S6GMdnxoRL61OL+2x63SL6Ux+pDo099ODgSNzd9YRL9O0SoEMYS1+mZ/NRTjGHOdX6U/diJISAzweHokdwUrh3FjgNrIwtLLXeeFtz4LZZ8NOFWwypr5X+YCAO/j1K15Ms3k3OL74kKScyH+zNsMNTzA491nhc16g8ANxBBjeHsC7EOduaHi9ns1ekiEeGKcY0fZ4EN8X2DJ0rKz87o4Upvv6ibYoBB0gTzqXQBqmHjo2NJ8luMmkQLErKycOGU0wFV9Ah0sb6kyTpAZ7/t+ezKXY1gNj23nlkHXBkvdn0SPsaNJXgELu8/JOYV9ZpN9nM4NIYGo3pN/vT80pMIWj8rLqVnHhnFZ5W83CBss2TTSn0YhYoAtzz7WeJNacVc1p1fbZ9d2pAUxlLqVQS27/WpoIEHKZVD/LzyERAVsyggJsEyXAsPJ26vgcD5A50K2Djf75dt0JiSnHE0qF0MP3jaBpBoD6kVJ+0YM3TBk4qsCQOqre9O+F7vnj8yxrtEsvW04nrLFnUF0kXh4VDAIZhlAug3Ng8K3IdLFmtbua80fY5qUNNsiKHIWr9ScVx+DeyALQpdU0NxzPdI20duz6OTFhdgoBZog/04X5ZWVwMLtF4eXkpd/YzQc38LOL6UNefMNT19W3WKmyoRmMVl4kf0aDXGzgV/ghBf9qe/35zM7ubIdI3ZJQu7uumOevNAz7NO4PBffbBLsloYRN1CSBIaT0lFbAirsFcU6B3aKai/83/zCfg+v10BqMobIJpCAjZ2trYp3bNdCRBAjryJmGFNMUFVKQjXVr9IRxdGjXBwv/nVnunc/6Wbhl2KVuBL2B7S6+BlfXmaxbRLZZe/6YpM0SX6psU6N1XwCwnJ7jQ9PbIwH8Ue+/oAye9DLdBJb9WUM7Tex/pqu0NT2u+B4ecnFzWpYxeKyVfSRm/IF2Vea03DpdsDoeIwbe3/n4WSazyHdu1EedWDAQFAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAhCAYAAABX5MJvAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMqSURBVHgB7ZfNTxNBGMaf/eonlLZUKkljkJBoTFTUBMIND3jRk/HgkSb+A170aIiJB73I2QN68OhXiBqNCcRbJQRMiOnBYIMiIqUftLTb7u6MM9vyIZawuwVP/JLN7s7uzvvs+z4zswsccsjfCLDJ2OtPY6AYZocP41f6bmIfsCVibHxq0OWSJwgh0A2DP30ufrlvFk0i27pbpDkenFJaP1dy2AdEOzfztyaUxDWN5NSKgZyK/y+iLuSxWtFHdYNCqZSHsQ9Y9sS3LA16gCA//r6SC84l52dkWZocGjgbt9pHZ0hIwYmIpSztkoA7hI0Ig6IpmJUmYxHh4s52ea/gLPBwSQN0AkjbJFeZQQvFdSiyjIDfByuwPl41at81Ez8zdKaqoZe/fAurg8Tco+lb1zXdwMT0Z7ODof7zsEI0JDSMt6sxSypGmIj40QCO+z1IeVw1IRsosmRmgItZza+hGSwZs1ymXUTEDDEQLFWA7FoeXrcb66qGxFwSXZ1RnOo+tmc/tjOxHa9XSDFTPZGk2vmz928x/WUO7W2tYCMEiytp6CwjTrE+Y1LMbuTtxrXrm82xIxGklpbxK5NFrCMCJ1gW4UomQQ0dWkXCaOKj2TbQewEnu0+YIn78TjcUIWazEBeXeE2bF6GMvwFPR2ghjduigPX2MJTVPFyBFQRYeyZfMEviKqyZQaX5echT0xBUdc++7S1gdZ4HvegpFdD/7oN5fimdh8E2MRqCFGqFXWyvHZwzZQ3tfPba6CRcC0wLZTjBkYiwKUBARq4/LooQfB5QNrkQPoYPWkSZ+SHhd7FNwVf3VjXFFq+550LsYtsTXraSXc39m3Yx6Dd9QbIFSJE22MFROe5HA3gR3LFo8ZLwud0gtkviaHTcWm68VvAM6AsqaJFlyufGgYngnnga8pv70+UqBotbby3wwCwjJF+slUS09s3kzBP50ubxTrg3SKYAolYhWsyGI08kfC4sKnJjEWyykjpClgVwHHkiphkNBXAEJk4I25s1rWeCiC9ZiJTS5mNe0NBT0WGTkd0u2P4NpHcfDKrLeeiqdRGCIOZaHt1r+k/tQPkDlVk5Eg+MC28AAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAhCAYAAABX5MJvAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAUoSURBVHgB7ZfNa1xVFMDPfV8zE9M6SbDEFNuZjRQK7XQjWrTOLCyIFNOV4MIm/gNJBEFw0QkudKWpbtw12YigkHQjgtA8BFFsaafUQgtKX6yln8m8mffevI/7cTx3aqHBTptgEjc9cPPmZe6953c+7jl3AJ7IE1ktDDZZhs9jKcf4yaKVVGJpQXxXLfA/70zfHC97WwIxfD4u7XDkud1OMBBIG8LMhk5ogH9ppeFYquaNl309z4BNFfv4kBUPLPMcNNM8dmIHkEBsy95vZPbY/VkWbKL0W6ISCBtiUixSkxkp2RwIzDOLMQP29YTAydEiGJ0JcNIx/a58cNtea3rg+4YH65REmH6ociBJuZkwsFIEI5YMmA2MyXZPCMj5i7CjXelmS2AB0R9zTKzG1T21gnvZe3DqF0G9ioATgEDzcTelWEtJaESxmvvw2Y9md19f8m4N7CLlAE4GaGXALLDQpIn0Z+b+PqsSE997bQyG2ifBlgChBRgYNCTwGxHyiH++zb0yqeedxHoxCHE+B6xaVgBPIxlHO7Xou+tSwe1MwrWfDM8+Wyg1Sgfh7q6XwOFkcYZg0zCFmnLf6Zt5uCcU7u8+fUqgELrx80WB/TE4wnbKv96k/3QhwggXB4FVXhEEScoDckWAejnCdnomTQfsM3YpaLdg+OdvZ1dGXpgzpPGqKbBlFnKz7lHmP6h2NQSSWS0bMCInR4K0cfhxaC+cHamAuccqHT80vlh8a8XrQ1E5RAAJQ+iyajAC0MtChSziEtoqhJuDbVg5zKFxpODSFBd6yOojmqpT2CSWNgFEHDDhbN+138C6fAGaK3eBQ1I1d/CxCuVWQAArtKSpHUcAvkJoCWQhRVIMCnTeVhC+KOEpxxkbnZ8swiNkFQT70nUxyqYxpixKMvIrx13hMrz/+2k3WG6WZenOQp7SSC9qUhh8CkOTvNcigIByIZQKQ660A7tb7xzchoWchbCNHVszhBbzq1/rFLsycjWNQp6ATNX6z3i12dkZb+RI7kKOIuaze9bTGcNAsXsAgsJBI+Y0EmQZPU2DQb/jMNtilUdBPLRYsYVuTaj/i9hgqLTllHwRQcQKWEcoiiJiLIAlBMEp+9NMAeqM1aemaynCuiF6CUpc6tB+ls5biSyRuiBRKknUkUNOEILeM3rqHNcgRA0gjQuP2nddvUNKWIgl0rFVrEOKO/+4P8mQcQ40yBNdAFJOCBpAsyhDuBsGMTVQ94XAuYCUdXTsucKUwsHJekFwUlIxJjipldNnUDp+7NQ3tZnGhkFoSSJzKuPgJdpqjkx0Q0CDPmcNCc5iH6SR1CCU1+gxMKcet+e6Ierlug/SrGkFnKzXOSB1baCRLnFQN6hwXWGQcrVEZ632de0T73F7/qdLzeSlD8aEYBNCqIqGSRsZ9F0sgDPc713ce/uAe3TGX8s+G3KzmjxfLyZJUkwaCcA54+rg0DOwPZ8fqNentg7iQfn043fPvXHQP/DcyDIUTGyAyM2y5384AVsFgVcOj6p8ax5yEbVUurgIujmkDmS38jP5l0/3TNCNvWOa8jNmSCqdfVRKC8BiBxndqlSmJoL5arXXsg27Y+LVapGOSAkSanGCHCyortMxBqoljIobc7DUa+2GeYKVXR8S6m0dphuLHgw6iil6Wsjpspb6mw7RlVS6uqvpRkKD3qmriQwNmXmObTS2BiIwx0m5RzBMA1BTAZaKliHlOHv9F6/Xsk35BYbfVUapbe0HQfceZcyxo4011Yv/Vf4GdnYDX5kSoDAAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAYAAABG1c6oAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAGnSURBVHgB3ZM/S8NAGMafS6u0VLCD+A+VODgIOoirQvsNOoh0jIuOCs4S+wnaRRwc6t6hLuLYfoOCDoJLIyiKtFKq0jZtcr4xEs0/0qI4+MLB5Z7nfvdw9wb4F8WvUrv8MiX142UBoAQ4ZJomPpcUDCHJFs8Uvz2CL6yykSVY6RvMKBFdVCltfmAg3iJ76Az7qdLgQJ2kVgRojpjzPivYacAM6K8BByxPIC+mRWjcd5MiRIGHYzEQyIupOC9sytD0CmodepiezdxgQ8hEF7AyugZoQhX3J7ITaPUhL6QTYDwPzkWbI0SWWBjluQi2YstmOkdgwmQws31qT3hbL6HTE51udFXg7gbJxiqUngtGj0YBXlpWX4Ytodk2xzi96BgNge6wXaPWqVN8DXjWzTFJGSZCtGbodCVt1cYPu058eqXLahG4Qaer7kSPBphg06qRziV7t42qecMsnXvC/IE/qC+gEJoHY4rbwsrgQtLU4a2DJa0vp8wP1iUITMZUPQ6mZ9jOdc5mOD+SqL1kzHY/dCzt5xBU/DAh8rwY9zVc0F9SycbxF/UOuBOVc6mmLuMAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAhCAYAAABX5MJvAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAPTSURBVHgB7Ze7bhNNFMfPXBycLxSGLp8EWp6ApCfIeQKcji42AYkGhXQgRLARBQUSJAhBA14oUDqTJ8i+AeEJbCoQAmEIdryXmcOZjR288e56Qygo+FurHe3cfnPmnDNjgH/6p6gYHFL+5cdFDuwCaF1CBpbIqTPs2Uqr1sCvVN2iAbfp2by9wN5kHVNmbaiWHi8jYBUQC/SOwy/QM4N7T5mgDFBtdYHZ48YeC4FXn1o6CBqIOAOHk0UwdYK5Q+/56gJrJTXkaaN4V57MKN9/+xsAERiyyNt7m7gIh4UwAFyrLdgz81FVUBrsagNLkBXCbIHQqvGHAPZFFqkTiAVZIJSvzD5aCWORbyJ0Ahe+el342O6F37rfP4PvdgF1ACkq0IT1sRAmBAF0GRLUCTz41NuB714PeoH/C5y+9zptgvkCXq8DiQsAKN5tYDkVgiHcSRpgx3dp8l3QZAnGKPQQ5qc3brbCfgpnyUQvtVbgdr+Bu7sDKYo4aSTajS9QNDTjenWVB9/cXdOjDRoWTm3cduLa3ah/sJTGLcol1uTxkyAn8nHNjEVmKWy3TTliCeX5RUjQD7JC2FnjShKA0f3KdAu1qpiy2Z4k0cTFofIQHYvPBy45m9KaSsw5vbFqwxg9uHLKof1yEDX5ihvfiMHZQVFGv/OzoaEOyFNBvx42IauUqoEQocNKeWykWiO8j4VIHA91+EaB25BRoTUAnCxtM0Hwvv8yzS3IqGbjokV2KObzOTg5NTFSTydwKzdnOyMQGvR7HnM8Cr7nOrTHmc8QCeo6vZaPiZB+pJ6Rf0HfUtE8wVisuSfF/koWm6VqplTOzJ2DlA8pRkUh/G5Q5gc6xkJwxmBKhiAFOSnqMEbNRsncOdqTeUFWjL83MeTOr3kPKFhaNzekkdWaLPnZ/dEPVXAkysogW+5PTlYS//HS6dertgH5/8TxLSF43Ba25dyrE4kQ/uW1KkMWm7pNlHxxOwOQEAb71mMQ5piiKUvGq9Ovb9Vwq1zQMsyeURBK+fLcy0oiBJYfFpQQTUg4xo1FupSAusofhgk12LYpygsceFW8uBYDwtoiYLNs3m4lQhh5l9av01Y+hDHyKJMaKPOTXECORZ2QLDoCQqmwlpt7VY20S5rAX1p7RI66DEfUMIgvoDxx3n400iZtAG9pzaa8sQh/CCSpPvWiO/F8uUyHWg2OKM116mIz/fkJLq2XyedSr3wJorOcVeTza2+ODDEMQyGwSPm7mNqQjnGtcTOnlc3slfa4cQ/9N9BoL4xlkSLDYhzDUEbN2hSiLaECJ8vEf51+Ah5NwxCaCsbkAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAhCAYAAABX5MJvAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAG2SURBVHgB7ZZNTsJAFMf//UBKFSqgbDQI8RwmcALdunDhDbwB3MB4AzYuPIWNJLJ1p2hMCFETE1AIDZRSZpzWkCAEOnwFF/0lk05fXzr/efPe5AE+Pn8ReB1LxXIufZjIBwISZiG+G/FcQwQHjgAKmscclIqPGWdM85Hhwf3d8yUFucCcUAi3LN4VNk1P8pkaqteXz7xt2zln7hyDpqmYlfLTBwghjfe3+hUh0E/PjvRRn6mR0DQlJQjcaTMRQug2229OFKnzqo9+58qJVeOLGOBZHaNUq3VPH0WRkUho4GVmEclkHMuGS4RhmDBa5pg9ooXYrgOo1VruzpvNNjptC8FgANHYJnjhErG1pbAfj7tKkgRRFBCN/i4YDoegqhuufRa4RLA6R6/XH7MP24bn/T51I7RUEaZpoc3CzItzuy5dhKoG3bEqOBOzg++v9pjdyYe9/RgWhTMxQ+5YFf61PcAXMcAXMcCjRAXd6vYPOmY3g3WJ2ElECqxdr7COOYN1iXAwbeVhQzLPDaN7bFn2CeaAEoqFRGSz6QZ7FG6uiyl2PHOJ8IK7syKiXIBt61gEWa7gv/IDKkeD4Vunm54AAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAUCAMAAABYi/ZGAAABWVBMVEX//////f/9/fz/+////Pvn0suEhISLgn+CZjf8//+CgoL///yAYjz5//+Gg4eKgH99fn6IfnmDZDX6+v//+fL/9vCHiIiJhYT/6nB/ZDP9//j/+/b/9+vf0szx07uDfX3/7W5fYmLx1Fnt01WFYk58ZU2FX0CDYTX6/fz//PTx6+///u7/+e3q7e3z5e3t7Onz7ub+5+Le29bg2cbr077/5Le0tLW8sqienZX/6pLou5GMiIaIhIGEgoH/63uwl3SNgG1pX1/rzl700lZlYVWCYUyCZkSCXEGDaTB+Yyr4+vXx7vXr7/Dx8O7y6eL46uHx59vk3dX/6tPw0MH/4cDMwb28vr25uL27urX/6rS4r7DVwK3Ova2jop2bm5vKtZjTu5exoJbhwZKjmJLjt5Dbu4qlmIiumn+FhH/xzHSSgHTlym+yi27/6G1kY2l/YVdxX1OAa0xlWUu8YEI7AAABTklEQVQY0z2QRXfDQAyEpd1tbNeOY4eTBhsqU5ibNFhmZmb6/4fKl44uep80b/QEKDhyRKFOALqQCwSSrarretT3XDUdDsmU6qMAdoPRHHHhN5ns7s6oYDEvY+CC+c55ev9emw5aDIwgU+zr8ePH90pFm1bAxgBtwCZm44el7Ug/fRVUrD3h43zt8+hyfufmu7jA0GJqlM+1Du42ly5ap1NI8gIwnc+dNZtPpXhhinNOt1FGnS/2Hm6vO4VZ5AguRl40F5P5k/xPcUMgwqpq7THpq5/JaLktIYSqTrqFAaDUQnuRSC7k8XjcoRmPW4wSM1OaMxCQZWfGKcvprptycXnw0hiPJfzj/pVYuzzMGozYsNz2J2KEPhKNt0GWMsZeUz0tIFtm8mqpsJeYOTYZHvlXeMmwfqr7fFGHJEkOKqlmo7/YFbuCgIzSSADU/AFv5Sojnj/D6QAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAAkCAYAAADM3nVnAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAwZSURBVHgB7VwLkBXFFe0FkYVQ/KRU8MPGED4GrSSiolHY4CdGk1iRSBKDgAZi1MgnoiEUyiJYShUqIiFEEgFJ/GAiCGURNHGjEBSUTyTK311g+SnyFQQRrvfQPXLfnZ6Z95b1Laxzqk699/revt3T03em5/adV2AqASI6iT/aM9swmzILmfuZm5lrmQsLCgp2mhQpvixgp2jAHMB8i7LDAmZfZqFJkaKmgid4E+Yw5g6qHNYz72eeblKkqEngSX0z84MEBzjE/ISSsZbZw6RIURPAk/kvERN9O/MR5jXMFszaTv8E5leZV7q6eyPqjzEpUhyv4AlciznJM7HXMW9nNsjSTl1mL2aZxxbs1zIpUhxPcM7xDzWZDzKH4g5hKgGu9xXmg2SXYhLjTIoUxxN40o7wOMePI3QR1bqU2Zs5iNmTWcysF6F/rbMn8TuTIsUxjILgC0/WVvyxghksffYyf8j7Ga/ICqzXmT/6Ma9g+pZb+5h/Zz7Kdd9Sdbvzx5Oi3U+ZHVlvoYkB1+vEHyd6RIeYB5gb2MZ7JgewzQ780VgUbWMbi5ROR+M/xjhUsJ3lEW3iuC8zycAYLk33ko4h8MlbqK7utyg57hjjKDeMxRJL2emjdF7Lom+7s2hrI3Mis30W9s7y1P+Q1DKSf2+i3DEqpt3GOdjB3fYZZpFJUb3gk3C5OjnPKzn2QlZS5fAquUiXsDdT6XRJ6F82DiIxNMHe0Ih6tyq96nSQAMuZJ5pqALc7WvSj1HxZwQe/WJ2UIiV/KeEk9k+Qv0x2eRHYa8c8IOTTE/onHQTfNwl+HNHm8Ahb9ZnbIuqUesZlkyLF9AUsiTkO7SCbXRuSvgvRTaYaQKmDHB6EtupkTFbyARSPV5zerAS9gcruC0KGSd44po/SQSZ65GczH6ZwEKC/R7eH0rlb/W4T049CpTvT5AAKO8iICD095hNNNYBSBzk8CP3UyeggZAj7rqd4fNvpXpKghw3GesL2j5S8T0wfYx1E6P3c02Z9pfNvIcfyrx5zpygribGfLwepo/Se9uh8l/lPZoU7zhXMqcyzEtpHxHEJc6vj68w7mE2FXje0yVwl+rDJlYFnCt0C5k+ZrzG3kL07I18P6UktVfuNXFs4Bxtcv9HGNObZSreBaA9sxixi/tnVxTPjXBKrHbKb1/OY75Pdf8OGdXMhv1rYG0p2fv+G+bbrN8bwUXl8qCT3PdarTnaneOhnlZkJ+tcL3YbMfUL2dMyJzcpBnO5Y1ea1QlakZDe78r+KstUxtvPlIG2U3q+F7HQK71VpDCe1EUs2wyEubaiM3MWRwuF+jUAPq4/VMXpw3i5Otzslpy2ViP6eqmS4m+3z1IGTn8n8U4RNJM0WOJvyUQBOMSeiDtKizg06skgIZqlB1QawhMFBlzIfZ7ZW+q3Iei3kZRTeHHxS6S8VshUmemLl4iDnqDbHCNkgdSzNXXkXVac4wnZVO0gpc4jiSMp81iljnuzq44q3Stk4SP4gxjjRbnvmfiXfQ+EJh4RUPB8mOgjZi806Vf6ppy8zXB/kc2yF+z2XwsviYqevHSTALk/Zxpj2gY7OZtSz8k5PGe5QzYwSjjLRE/MuUiHbLCYElgr3CBsrlPwPQrY9xk4uDoJJJAMAzwjZO6J8tihHHpl8cB8fYbuqHSQOOIZSylzO9FI6jzGbONnXyV4VJS5ysnmiDM97WN4WOA6kzElayjyFrFNNEeULXRlYX8kALKkaiL6UkV12Fbqy88k6VCc1JnA0OfaPuXLtILiqXxxRB3iW3HMsf96kZD1duXYQLLVaCJuzlbwEAjk498ZMBuj1NjmA9b9HmVGmzUo+WNqPsZO1gzh92eZMV9ZBHU8PVeePQoa1cWOP3Xw6CPAuiRA42eVCgFKP/Wau7wFGUfjZ8DZPvWFKJ5iI3od0Nw5yjB/x2MSyp5E+/ohxkRfK51yZdpBvqjrjhew9ElFSJ98o5L1cmXSQxZ5+1FJjPF8nDJL4XqBk0J3Ale4wWYD1uvIHwreFyoaJaKNKkhfJXnFlm1vd5+2iDFkCM1TVZ8V3nMisjvMogZ378YpTmOVO3o6J6OCFzDr8vYOoG7pQ8M47jlU+yxUzLxe/dzOfMGEgJL5D/D7PxOMqkznGj5twX9bJTADCcsWYwW7i4vUI3AFmu8m7W1StY/zYoX7vE993cluk5PtNPPaZcJ+RmfGcKGqLneNd5kjKRVOhjCsElj1NlJ0xXF6b5aNNBFiOyTjWI1qvfheJ7x+ZqoHedHzbOU0vUYZUkGIul3pwVpyEYCx+YezE+SIxi8dxiC7E1ZM/lrm+YJNwMLO3ybygVETY3Ci+NzKZ6TSruT3fxMDafZPQPcnEo4X6XRanTDZg8Abza6IY8+pKxw3m2IHsS0N0/H1RcJpS/r/x4wcmHhdFlK9Sv2VaSGT0KFuQDfk9oIpfZH5flSE0PU0RETk5mRBJ6mSqATxhsRSVKThY8uDKekiUNY+oLicv7igyn6s1eV6BJrtTL+3tMfHYon4nOdTdJtM5HmZeyLyUWWLCF+HqxKni+144yJuioLNSnmD8eNfEY3lE+QvBF7IPdOcL2TpzFGB7GGysk+UBPsWTbSV/9jeVQ1dTDSCbmnOuKEJwBEmZ/xNlPT314ODyYvAOc56y48vO/qXJvDgs8OjIuxc2h+WdyPdcU0hHQs3FQjSFz8mdzAXMucxhXFYdrz5EJaHeIL4vxQHMFwUnq4chrMd2eIz8S/7gOhco+RpPnQqTub67hClztJ432QFRlEGOvycbyYGT44pbJPTKmbdh/c6fbUU5rqpLYvix0L2R69c1Xxxwl/qJIjKe/2Myj2UxT6QPTOb4XUF2s+twnpZzjsmq3iSuh2idnPBYIn8+HvwdS5yHhHwJ13nVhIFsBQQZ6rMcS++XhAznYaCwieeNea4/gLyL1fbYJpN/YB7dR0ciX9iXg6PK5685QZqGxFPSCv++k8JANixChF3FUz/i8z1cndaeOgOU3b8J2UE3qF5Q7smK5eR2lPlzgpLF3hVY/oDSv1rI8h3FCtDb1cdO9Bol+4js2Os9jSdEu9h113tSCJvqLAk8i5wj6g1Rcmz0IUqG8489L/1HHttcX+SeC8b/VqX3EPNisu8T3UuZ53e6a1tHsYrUWMoImy8iVSbkvVyZbx8Ec28lhefYns/bpMwNQVSQgwRHeFnIcUKwZR/19z9lZF+ikmHAGarzRarOVBM/sbJ1EJw8bHIFewMI21UIOTbgaie0dZ6yKfdLqsNBRprw2M1PqINsgoaq3i1kT3oUMLmvV3XgBFs9uv2cHKHz8hibmCvBHsTUCJ1gggbIl4Msc/QBm4SHnz+D9x+w/xG8GIVl14PMa/AD4TNGN2Nv03ipCuvYF000ikzmswuWPnrdO1L9DoUJFWAjKuUbIdv1rk9zuL8yGobb5TLHw3ZYHrnfAuDlLbIOG0T0cOWth6iesUsBubxcZHKDrh8FPG8sZU7jdt9Q/SvnD4R9kX7yK2MDHXiAx7IHS8ThrBPaI+EypGLA2fsyr2O2dP1B1GsSc7QLE8s6SCPBEnW6awdBAozlm06OiyQCHugLlobtXFUEftDWXayzxekiv6vE2Ggi2sZ5wvIec+8bzG6ubjCmh9RY6aX+GiFfacLAy3pB4KfcI4c9vLw2xPX9DNen/zL7cH8zI65kE/dIe52QI6lvLOUGbOY0UHb6Kp3YtwlTJIMq8ed8ZLMH6uSof0IWOonvrkCH1MZePqDuIK8rWd2kylhayBQNLGsu8+hdQPZ2GfUeBuph27+zp+6NShdX51YmRYo8IM5BsjVwn5rAWB9eF6GLv/UpJvvncogo4bnjOxTxt0Bk8390Ytr9JkWKPKEqHKQ22dx8fZW/x1QSZMNnIzzOkf6BXIq84qgdxBlB5GcihVFGNps0q/Uu2RdesA+xwWNrMqV/HJcizyC7/fAzx6vM0YAys1sl8NYY3gXBCzgtg4lONrX9DLJvdSFisiui/iSTIkVNgLtjrKVkIDvzUIIONpluMClS1CTwpD6NifSE7VQ5oB7eNziWEtJSpKhakN1Fxh7Goiyc4oDT+y1l+WfXKVIci6jUZg3ZBK9vMZHvdIqxu9zI7kRCHXY4kfC2w6RIcZzjMynPgpYBX4wnAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAYWSURBVHgB3VztceM2EF178j/q4NCBnQrCVBCngqiDUwdWKrBTgZwKch1QqcB2BaArsFPBC1YAzxyG3F2ApCT7zWCsO3zs8mGBxQIgL+iIALAKf1xIVUhf0u/rlO16xZuQ3lJ6CumF/15cXOzpM4FJCWkTUh3SK+ZBHdI6JEcfET1SlkbNZNFHQCLmFvNZSg58ku3o3HBiYvrwId3SuSAoUyWlzg0+pBs6FRCt5g7nD9ZxRYW4oAIgjvOa/u+arWDXvafkuundnfdxnWRcpd+lD9qE9EtYIjS0NBCHVMlcU4e0DemaCsF1Eb3jI/LBOi875IKAr8gDK3UfUkUzI7TpQnpAPja0BBC9VA4xbC3FYz9DrxKi5vVyyLOcGidYixQQNY8lhYZujAJfsZT55um7gX2OrGgKUq9YhHmc0Qo26e0Ner9qel8IQnj+eCTdlbObZhf6RplIyrWunKP7ds5i98/tNRQj+IYykdr+m953C8bQhPRTtv6wLQIfkTkRIy4T7pC3VPAh7ZA5JBAXs5YlwV1Ou9Z5J4scxO0Jj+nwyIjeYSepsrZJ0B+E852xraViNQ8jUYgkeUN7eodDX++oE1tHqWPEaqZYCzaHs7U04pVGVFee2ikJB0rhYeu0jdIOE7iSGrhVGtgZlLC62LnhYSOpVtrZSpW9UtnRsuR4TK9v0VEaasNWhOhlJOwUwZaJUMMauh4aVO+KGCdK2AxVqpVKThE6dUL27YNhOtF3pHemZEV1v4JTBGrWM7XXGduZ26sUne+V+qucB3SKMI9p8H0ZmKFNRedKqb/pFq6Fgo+KoFmtZ+Z214rutVC37haUsFGEeEyDx4iFYnkrkibrgze7hB6D7AUBFZVv3H9vX4jW/6BpcMrzfRPyDvcILkneDngLyj8J+b/TdIySEGQ/UNyOmIIbof32RGUMFRPkhAISOYcGaBr+NOz1TLUirRP3Qp77geKZ0xiexzLSvOFIR0PvV1ieO78byyZVsqIHxOMi10lXnd8SeM3jhI54EeoeCJJWnY2QJw1Nntj/ISMJFqThMGjRHfLuaJgwzm9oGNIoueIhJhEkVXZC3ppmJEdDIu9XGtfJCdVFHbU5SIJELPdYjSOcizEQV/proYgT8iSCDl6sFE7Jb0nSyk2CgRzGj1SIKQRZsChJRnImYQpB1vnF0cwkIUbjfKSzNlZ5oUIwQY2QX+rh+nA0E0lpXuM46SajWqmzaDQLmosghqOJJHXI0Q4D+2iEPDGSYIKeCitrq+whOJoWuzFBueQwSpcrB4LEleRYRlqZlphuQ4UolNko4YwYSWhz0M8k4y/Kw9sM1+AaysNeyZcs8jAH7YUCK8hX5r5RHkqGZR/PmeVHOzE9mxhJtBYkma20XbCnvB7Nfbgh5JDcKO92VELe4fkuU7wkCdWGWc52RCNlIu4Tr0lGDkGabtJWyP77L+hHspXQUM7WaDVSn4mpO+VqoezKKEvbbtVOctY5Qu8VYdoJQYvVgJK1UJ7z3IA8y92itaLzTqnv+hVqobB8qE+mc6bXHjE72LHrKgz9kFPrUM166qFK2jDbKkK1i0o1pl+J2SE+nNQZHnpn7iBjPfaA2qG+I71nvKD4XG8DeeH/LTqKbUuVt0rlmhTg/K+/7JR2tlJlzYoYG4MSxyaJh7Yz6KVdiPdqO9CtKOcKnjZxzwGWcZwreJ0H80pDHsb9Zsx3u3VIh8qog8WiPVkB27rms10DztmAM61rgPKL5A/II6votaoMckbXTXO9ivDbhNcF2kM/lvclZf1LMW7jVPoqgnX3saGSVxGSEMvEBnzil1kswqxx1rm8DvUV9gVp3rwjCNXCkC52OIE1QQ98+5i3M6Gvj05CFMo+arClJYA8S1qUKJS9VsVYdhpAfFWqJOhkd8sElxzbtLL5tfBblH00hXWuKBOn/LBAe9+n/bhAH6uU2otSFX2EDwu0wPFirakwxWpLEsVDzuP84LHABw2KgejlPE6Po33UIBuIa5FTEXW+xAwBMXqvsTxqRO/4MYjpA9Gq5iTr9ZikFLn5KUCcONsInl14685dr2iT/rZLAf73no54e5bxH6Z/EsZWY37hAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAhCAYAAAC4JqlRAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAFoSURBVHgB7ZcxS8NAAEa/i7UobaHWgnUQikJ1jNDBQbCzOHTUsQgiLtWhOFq3jk4KOlj/QR3sJBQHB8GhgyiCSPdqktImrUmbMx3MlJiYoiLeg3CBdyEvuVsO+O8Qpwnp7dNwfDbJB8NReKUL1AprkzUr5/vsweWtkz3tTc0P+QPo6Y6ttnCg+8aQt3a2Lz/mCdXz+GY4e0HT+AE4/DIsgAWwABbAAlgAC2ABPjeTnu+uMQiEDBCwmExgPBKCV0SpVa3cPBThJSAaCWJ9NQVFAaggIvx0azo5NgN5YhpOGF9f3c2kavhqAKWQlLaKF6FphITwei9i+OrS9IElwD/nHOC0y2xXp38g0VStYpTw0bEQEmgj2300/QUXQ9m4nFA6qiR31J3y4UbRytv+gdJBRjKG+ZXNo1RdaMQXRpo8/Mh++Cm1Uaoro+dwQ0+v2inXx51WLseD47KUkDOi6/17KVgoFMH467wDHkZpZ1qbh8kAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAA0mSURBVHgB7Vx7cFTVGf+dfWU3zw0QILzc0CpKK2wqtvVRXWrBMjpDGHXqOFXCH1UcnRL6RzuOf2TxDxmm0xGtr7YzJXQ6VdsRonZ0KpUEFW0VTSwWEiBkk0gebEg2yWbf956e7+5u9nU3+0jYpC2/mcu9ufece87+zvd95zvfdy7AFVzBFVxGMBQQ9sPcAhk2xmBlGlT0nb6AS1+NABzHDr24ronKeF/62KIFa6RrLks9nDMX51K7tkjjMjx8SzsKDB0KCQ67IGa7csnFIcnKTTBlnJroH6PP5woYjPXhChrlEWM68CDge+GjN4yP3VyHAkKDeQa2e6NLkOZSfQZchQJjTgnS6rXKmXNemfiEudRrMDMKjLklSBcmSMNYRfx9oVaONFUsKDDmnYoRuMzHME8wLwkSvXKle0SzHAqIeUGQDJ5gW8QM58I8QaEJUp+dGBIIYmlmMYJWKxfUUBeWoCTJiM5iuUDyF5agwjqKSdBq1Qki75ll6eMHW+ptXCNZWcQFYLKmXby1lW1smhU1vawEhd5/sF7oy/bQhMc63tVjPuH+HT4t/0lqQZ44fXPGXSzDKoiI0ejkAxyyJaGsRhY2DQ7pg4eatN/7wx7MEJeFIN5SbwnppGYxnuuVG5H+l4X6MVNI7oBF/PhGQYydpynDw/6SPfDu/T2Gza82YQaYdRsUaKm3Sjq5jUXJyRJ1DW0ZbYuvowfc+Fa9IMCu9pzWdt5BJybO9WD0ZAdcnee2Y4aYVQkiyZF18mHxAxJ+bNDtyaY61UlrN4gc/+BZmDdP3J7SrkLMRficI4kPGLMM2PZafPC7alrtedmkWSVI0obsQigtyff9I+G+lUkDyAeBvkF4Ox0wrp+ExhxMbNPrw0R3H+RA+D6/VAXeZwHEGZ5iCzOg2wQjhjbtc3HwdnEcRBCt1a1POLJpOyeCum12c7HBtEssLm1ChazCmEYkhbdrqwIuebzXpqlI/AFETrTzyYif5ldaVuwSp91q5bxCeghF6xNXIETO+DmHIkHcUyJ6sSFMjAoifaV+22CAY2DT3j3VR55oQgZkbYMubH66rlhv6hYjYBdG1xYjh8CskrPINvLc1fAci3WQiCGbEMWErjrhndHFKkFvMjQ8dZg3JrcbGhYEe3zha8kZiSGJa6G2JDlT5Hx8e1pyVGBhjB24eOe+ZzIVzIqgoc37GrXQHE4kRR2e96sUkogcGt146ek33JC2ns/tpdnHLkg60G9cMBX3kcbcU2W8X7kU40tH/LsVyfEUI1fInDdkIikjQUSOIjU5gEhyvaNNIIekp6Pk7rR1nL3DCHiDRFL9WxU19g/LVmBMVwTZ65sqw8fDUZGoFCnXfVflIjkpIJL673y6Id3zaX19oafk6O1HHuAjlWBXnRctyAo5byx6GQFNWUKZoC+IkYHRcHmZY3x4HBVVFQgZDOgtKseJkmpcNJZCEnFag98Pg1sGW9mT2M4pqxiREswMmu8+vvLW3zzraPUlP0lLEE2PTMcOIGnKzhqyFv5yoG3FVrRUNsKjXZRSJJ4gghSSFJJ0wjaZykzKPVd5JRw11+Dkug0YqLxWGKsQitgYiuQJxfbg3zm5W6oQfqxRp9X6f9X1Xmvys/SzmEFxxizIA/4iI75cdwNOXt8groum7vsmfDCWGVXrCNU6SOeAN7C991QfBruHsLRmCSqXxaKx/ctWoR9PKNdrJv+KNe5/ohqzBQ3Novbku6oLHkV6DKwbOSJGzI0JxBCGzg9hUBzXfOfqKekQZOD08Y5oT/Ycen69ve7xNtvSgO/ARX2xhW6TK1BqLkVpZQnKhfoZTPqE9y7r74Xt6Nsom5h5EFIsj2pXvP1kQmpJXYIMqEcO6F+2UlGDM2uuTyGGECWHEAmGpVXb5udrWwc27z04oi9uPGq24JxpAfqCEsacY7hwph+mUhOqVi1CSWWpQhZJ1Z9+vBMbTnyIGz49jplAG9QIg4bMBAlnKqs1DBHz2Y23Kp1MqO/xgBeHp904clzCEu8uLjfRu20pL+MsIaWzMOjFfc7TyrVHo8NZ00J8UboYZ4ML0StcAsKC6kosWb1UIerEhlvRs2Q57jryJor8PuQDroE1+V7KNE/qhSxsz0e33IG3tj6QQk7x0XdgOHNKuY4nR8vljYderG1CHiiWQ1g/OYSHhk7iqe6WHTKTN5LNIgN/+vhppR2Cc2UN/nZd/kZbZHQrku+l+kF6ldFVgaPm6oS/TR8fQ9WTP1Wsrd+6AePO8QRy/vJibdZp4wVbb0PZLeth/Npy6BaZwfSJgk5qePiF9fWyJNeICNkeYdAdZMuIqP5+J7qGncgHXE4VjBQVE7/Pmk0wr/qV38O7ZRsMZ0+j5L13oL3khPvue+C5Y4vi8NFMJHTVIVb3Gw/tr3XENTCWzY4AIoaOKMijpsM/FFuxN7+svNdet7OtaXXHp93efwVQdepDeM1lyAssC4I0WcZxvuUeQ+iXwr8JBKAXoVPzN9Zh8O57IQVldH3eJc6SS9bLG5vjyYEyAK6M/IgwBZKiYdqKUuUoWrU4ksWP4a7mfRY5Up76snpR/p51MlIIEhkFM89iiCtMJmy6bq1CkLasHK/fV6/cH+oeVKZvYSe2JZOTjHyC9pylpqW/vnhpvTcYgCFCTrHwxGcLOpUO5OQ5U2c+E77PRFkFRvtHlTUV+TRkJzLVjV/NZwtZklIIWrukeqtYSGOm8Ku8O8VIj05mFf2bAhFDUyypFnm/ZHfI4UOOYHl67QM/2GvLJsqQDToHBzITNO735RSaPLtqtbKEILsjVMtFRhkFxNFznRbMAshUnB8eTnHHUwganhjvQQ4wfNCCiT+/DuP5Tlzb/q7rgTefa4j4UurgaXdu5AW3z2cZdrsxUxzvOkcZ3hRXJIWgPteoIyhJyBZrKspwV9dH2PTJIXx/rNeyYVXNLi+C3X9c9WAD8oTw5HPaKNU5NIiZoEPUJwkSDGUmSBjp5vM5OFo0rdauXAXbNWvwzWXLFaPdOzqCSX+o8YC5riBpYpKgwbH8FqvU187BMMEieJaZIKPP2N7lHHYpjOYBqhdukJuDer0Fsw2dzhH/J2VR6fx5Xy/GvF7kAvK423p7lWsxSbQ+OviqI7lMCkE7XE2UF29v6+tFriBySJenoNVaM9VR84VE1iQXyXPQP2QWWs90ZqVu1M9PHN348sKF2E0WjkclQ3U175NCewJut41IIvXJBlFy4iVPQmaDTBsYhNedfNuCLEESHzD4XYhM9R1CentHRrCotBTlwpkt0YedRiJwzOdVpEzFqDseHlRPUasSJESt9bdL7m8VDdnoZd+21CiesxqoYbJZXU4nko270efLc19z9s4qSfzLS350UBj2XdF7NEhEUraQGXake5Y25CoJb1jDYaPGSHRpRBaKIzoiAVlSRoOMo9qsJ/zaN3a4mnNO9wZe+MTKkX4WNT16kyOlLcb2M1nEsPJwGAU5e0gg0j1Pm/ahSiLd82z0b5IkMr5kDOkg/e0To5TOJeB5ZkOYLOX8IxXjKsIeyBlst6hrn67EtHmxnUOvNZB1R67NMjRNMyqO6epKjGc07Gp4ZOi1/RFVcWQqS78pJGtqHxl6JeMgZszN6/3GbYEiv0j/8DpkB4eQqbw3LjFkF7BTgxiUppeW3t8qLm0azraGIxMizUykCQ9eqOIXMuPNatN5OmQkiIygOG0TDduFTaJ4siV9aS46wOpy6UAK2LSfGziQAZG2m5ASNcoPWW9eIF0VIryRxDiido7IIwf9LdRqhxBz60zI4c+0mGkjBOYRctr+MtujEw+hCo6QzjivyCHMq532kmZ6OzfNNxyXDfOKIKGqt2OeYU4Jos0KAV94abLcKFvmm/0hzClBk6OTU9fXmqR5Rw5hTgkauxiL4dxcHsroQXP+f/a9mNsVlqAqPcfaktiuMdqT6Hr7uLK7da4xZwRRiojyZ4R7qhJ3wdKWXx4MIZQaQ7egwJgzguJ3lq0tiS14SXoCveHNCIGB4ZR6/Jm2nBezM8GcEEQbG9yj4aDVbeaQomJRkPREEZaixIhJsMRjQQExJwTRRqgo7o1Tr3jpYTycYg4MJklREAWd7QpOUMc/zk7Znmmlh4cjAlHCYmD/2wQFJsO7v4iYeOmhGWuKDLGkWPr3X+wnKUpWM15gb3vOjPSWhcEp6SHVin6PQeAyV6RHYvIxOns745O9zFpIQz0nBNGstWVBSLkmCZk4/sXU9xgkPdGPTBhHM51JguKlKGDw5J21zRUFJ+jG8iB2LoulhjxfdsXIEQjJ0rbotS/ob44aayoXA9uKAqHgBP1sZaAxqlqTbZ3C7sS8ZYplrzgS26dMH8FJkJWEHm2/ixlxZvX++gMbCoCCEyTLIiLJ0JpMjrKfkfGUWDbTYn9Uiuirw6iqaTS6A4WwRQX9D5biMfDDvRaR/rLR3mStzCoYNM8uPvJz1UQjfVSjAVNmL2YsQoWtFqzYCEnmx0yP3dSEK7iCK/hvxX8AKhIfAe6kZn8AAAAASUVORK5CYII=\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABBCAYAAABhNaJ7AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKbSURBVHgB7drfbtJQHAfwb0/btcMyYPyZU5fUaKLesUsvTNwbeOeFF76CbyBv4CvsbpeLT4BRkUt2NzFRjFMTphmMbArrP3uYbNNM05ZToDvnkzQ9lEDptz2/tqcAgiAIHJPAUKPRyhYWjSep1Bzili9mKmCAWQD1+rbpOdLmykq+nEppiFu+uMDktytg4PfGV+HBRMKMHcC0Np6ud9TWdb27unq9iwgIxlCrvSu7NmlMY897ttQaTf3Do2eIKHIAb142H8D1qhK8LBIsUheov24+9jxv/e8qpKoyJlEAWQpdSXda3+5bjlM97710eh6EMD2z/lPz7deT9mBgb+22O89Hrx8+uldBQKGPAMPQ4fqdfpbYtl3292X5zKJK0M+OVQQvAhEAOCcCAOdEAOAck7vB8+ztHcJ1XbCg6+rw+iMOsQRAN7zX+wHXYXPBRL8vUQEQQmCaRSSBKILgHJMu8OVzJ3DB0zQFpaXMsG1ZDnbbPf82mpwsOzjoo+MX0LNo/88tXkIcmASg6cpwY4JQ1dNVyrIEdY5AVU6XKYoMxR9XmBQmARQKaURBi2WplPljGT3lLS9PbpBJFEFwjkkX+PC+HbgGRGEY87h6LYc4MAmgtLQAx4lvmEzTVMSFSQB0DyWVqAFgoN+3Qt350WsBdYLn+v9hEsDOp+9+AOFqwK3bVzALmARw4+ZlvwgGPwvI8mzsfYpJAPRpECGxja3ESlwJgnMiAHBOBADOiQDAOREAOCcCAOfEgAjC8qSuJHkvaPPIckzLsk0kWOgAciVjy5+t0Xbt1XZFgvQUCSZqADg31jAOsbEO5bge9AdWdn//5yamwLGj/xVnrADurt356M/ohI2Nuknc+J4OxUV0AbAkHR8NgiAIQkL8Ann2t+XyyLipAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAABtlBMVEUAAAC/3/+93/+93v+93v+24I2/3/+334//33hJf86+3v+134293P9IgM//3Xe93v//gIC93v+/3///gIC14I3/3na+3v//3nb/33j/3nb/3Xb/gID/gICv34//gID/gID/gID/3nf/gID/3na14Y3/gIC24ItJgM693v//33e93v+z34v/33f/34D/3na24Iz/33dJf8634Y3/33D/3na93v9Jfs7/gID/gIC14Iy+3///3HZIgM+334u2343/gIC14YxQgM+GsehKf87/gID/3na/3/9Jf8++3v+83P+14Iy+3v9JgM5Jf85JgM1Kf8273f9JgM3/gID/33n/gIC33/+24I2z34u/4f+34Yy334fon6rTv9RIgM2234xwn99KgM+93v//////gID/3na14IxJf873+//G4//v9//N5v/B4P//9/f/iIjm8///oKDe7v//wMD7/f//7+/W6///39//kJDi8f/a7P//5+f/x8f/mJjvmKD/19f/uLj/qKjz+f/r9f/e7//S6P//t7f/sLDNyOHTwNWy1PpYi9Tcs8XlpbLF1vOgxvP/z8/qpa/zkZdml9pnjE2SAAAAYXRSTlMAIEDv398QICDfgGBgIGCfYHAwIO/fv4BA73DfvxAQQO+/n5CPgHBgz5+QQDAQz7+/gH8QsK+gj1DPv1BAQDDPnxD776+gj49QUO/fz7+vn4BwcFAwIK+AX18gwJBgUDAwoCNEzwAACfdJREFUeNrsms1u2kAUhcc/siqEaoHUdF1lE0VRd9m0+yhVX6DbmUHCdvgJBocAAgJJtnnmJiiSxc9wxk7mYiR/b3B077nnzrVZSUlJSUlJSUlJSUlJSQkNnmXb1Tdsu+6xo8S7rvlnDl/j7PL8us6OCK/q/+UqnMvacYixKicc4fo2KzZeLVUBtFQsVli8isMzUNSyWD7PykkBpShkQCkFM76yqTB+kbxiuzw/ToUVBO+Kfwy3GEXB5cDU2OGp8c/A99hh8S75O8fdXpbLPwuHPFP0dQSP98NF2HwjDDu3j0FRjVJ39oi4X8Rikzi8jbga6jmMdQTLplDR7EQFU6LUMQjFfpqDoEBKFP64WcZCg45Cyj8GoNIxiIUmy91SqGeXt1NHFApM2mA7pzBxnlzt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\"","export default \"data:image/png;base64,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\"","export default \"data:image/jpeg;base64,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\"","export default __webpack_public_path__ + \"static/media/dat-performance.f8477ac6.png\";","export default __webpack_public_path__ + \"static/media/hannah.c8c378e8.png\";","export default __webpack_public_path__ + \"static/media/review_video_background.af392d28.jpg\";","export default __webpack_public_path__ + \"static/media/matthew_dempsey.ea25830c.png\";","export default __webpack_public_path__ + \"static/media/inbde.f05df373.png\";","export default __webpack_public_path__ + \"static/media/med-school.b6707c9f.png\";","export default __webpack_public_path__ + \"static/media/mobile.654aa8e2.png\";","export default __webpack_public_path__ + \"static/media/nclex.d6ec11d8.png\";","export default __webpack_public_path__ + \"static/media/wave-partition-mobile.fd93f8b0.png\";","export default __webpack_public_path__ + \"static/media/wave-partition.a5416675.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAyCAYAAACgadDsAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALfSURBVHgB7ZbPUtNQFMbPuWli+KOD4h/Ywc5BnYGd1Q19A30C8AmAtSApuBeeAHgCfQPYASu6EMZxQ9Y6OlkIIiX3eG+b29y2SZqUlmGRb6btzW3aL79z7ncTgFy5ct16Ta3tz087+xNwg2IMwa0aeDq1drh6U+Yo356tH+yKj1nxcomofPKhuA19VM30+fr+LAHuavOu6VOp4hRd6INQDTRaXdvCvNxrcxa6Uzkc881gOC/6vSv7DT1Uw/TrSnFPfMgXcI6e79MkAO2IwwlEckQlTuVKhx6I6QeKFhlbsMH2jleK8wzwLRG4dXPcEuZb113l2DqhektcrOLVotOY/3iwSBwWEGFCHhOhY3G+002/WftVhLTTztGImj9efrnBOZWCkoMseb3f2UuOUZNxtEpPRXkNAz+L4XQwlSlikaZhbtEzfWuy4sx4UefVKXFVlRxSRoxFTYYrmUYu8WIx7sdy57L43xktbqkihnFfpKVVqpccHHH+XDAVu6Vi0h916m2UXqwfvvGJPiWVPNFUpyXe2KXSCXFOM26KGHb6raA9gnCVXlNYOfOtUiHpFLnzVAPDH+dVyKJ7VgHsQsgkRl+ufL7kirWRaFqtLQwA758PP8+vII0GDIQnw5ZuuCdXd5AIdQHRqlGKJwo5/v77AqqcIEmGaOCjwQKMDigO8gCpfLz8aqP13FhSnbKT4ahdgMfCUD771OwANs9923FjYhZJmpZy0GQwPtRcSmL+0sn71xVIUCRpJ0pLEI0Nm3DXMiAgcxnQO71vSWojTaKUfXsgevbQNoJSkifeN//49obbYcfS1UYaRympxodMMA1UVysiAEvfurifNpFGUaoIDJmNe0NbBLKqiVSnlJBjgixNBLKqQapT/rq4gvuW0RKBO06WviWpQaoopWTuAqWKQFbVUHRKqawRyKoaUkhZj8BZxghkFSrKegSoqwhkVeGSwawoZalfpcyVK1eu1PoPK5eUvgzsYc0AAAAASUVORK5CYII=\"","import {colors} from '../styles/theme';\n\nconst config = {\n classrooms: [\n {\n name: 'Cardiology',\n section: 'step1',\n tagIds: ['cedc26ad-70e2-4fc7-bd4b-d89924f86e86', 'e52db2c9-926e-4ce4-9383-99cf90de03cb'],\n route: 'cardiology',\n themePalette: colors.brandPalette.pumpkin,\n classroomDescription: 'All the high-yield cardiology concepts you need to know in one place. Watch the videos and answer the practice questions to ace this section on test day!',\n questionCount: 625,\n comingSoon: false,\n icon: 'icons/cardio.svg',\n educators: [\n {\n firstName: 'Dr. Roviso',\n avatar: 'images/inbde/anthony_roviso.gif',\n },\n {\n firstName: 'Kristen',\n avatar: 'images/kristen_clark.gif',\n },\n {\n firstName: 'Jonathan',\n avatar: 'images/jonathanhunter.gif',\n },\n ],\n contentTypes: [\n {\n name: 'Cardiology Videos',\n route: 'videos',\n content: [\n {\n name: 'Cardiology Videos',\n type: 'Course',\n description: '',\n content: [\n {\n name: 'Embryology',\n id: 'af87f47c-0df3-410d-9d4d-0e5b20cd35af',\n route: 'embryology',\n },\n {\n name: 'Anatomy',\n id: 'e65a0ca4-18ac-4b8b-927c-f69bd89284c2',\n route: 'anatomy',\n },\n {\n name: 'Vascular System',\n id: '5076fa38-1d0c-48b5-aa01-d6fdfef857ed',\n route: 'vascular-system',\n },\n {\n name: 'Cardiac Parameters of Physiologic Function',\n id: '6769e381-b925-4d08-8403-9f862c289e1b',\n route: 'cardiac-parameters-of-physiologic-function',\n },\n {\n name: 'Cardiac Function and Venous Return Curves',\n id: '6bdc6c02-f5d6-4147-9a35-a0a38526eefe',\n route: 'cardiac-function-and-venous-return-curves',\n },\n {\n name: 'Pressure-Volume Loops',\n id: '598b8d0e-46cd-46f7-bf46-e1ab8099474f',\n route: 'pressure-volume-loops',\n },\n {\n name: 'Vasodilation and Vasoconstriction',\n id: 'f880e672-9a44-41ce-82fe-f71f85b514a3',\n route: 'vasodilation-and-vasoconstriction',\n },\n {\n name: 'Pressure and Flow Physiology',\n id: 'adb6a0af-4622-4abe-a63f-42b75ab49372',\n route: 'pressure-and-flow-physiology',\n },\n {\n name: 'Cardiac Cycle',\n id: '728fb8a5-1437-4135-b342-c9f948c38de7',\n route: 'cardiac-cycle',\n },\n {\n name: 'Renin-Angiotensin-Aldosterone System',\n id: 'fca6a028-3d07-440a-af64-e1ed3ab6a026',\n route: 'renin-angiotensin-aldosterone-system',\n },\n {\n name: 'Exercise Physiology',\n id: 'd4e17ac4-6c7d-46c4-8674-b285fe494a0a',\n route: 'Exercise Physiology',\n },\n {\n name: 'Cardiac Conductive Physiology',\n id: '37c50291-eeab-4513-a5b5-4915817e755e',\n route: 'Cardiac Conductive Physiology',\n },\n {\n name: 'Antiarrhythmics',\n id: 'f5c24faa-eaf5-4b39-8c5a-a7fc516e6d7c',\n route: 'Antiarrhythmics',\n },\n {\n name: 'Atrial Arrhythmias',\n id: '6e5f5d6d-defc-4018-86d4-01d34856af1d',\n route: 'atrial-arrhythmias',\n },\n {\n name: 'Ventricular Arrhythmias',\n id: '80d23ff8-73b7-4033-af84-710cba56d376',\n route: 'ventricular-arrhythmias',\n },\n {\n name: 'Conduction Blocks',\n id: '20250ae2-3ae4-42c6-b924-66a8cd2b16df',\n route: 'conduction-blocks',\n },\n {\n name: 'Heart Failure',\n id: 'e659e621-23a0-418f-aa3b-ad091189bdb6',\n route: 'heart-failure',\n },\n {\n name: 'Cardiomyopathy',\n id: 'aa785966-34f6-4f95-b305-14119961c488',\n route: 'cardiomyopathy',\n },\n {\n name: 'Aortic Disease',\n id: '892a420a-d035-4e57-b5b4-d4c62b8bf736',\n route: 'aortic-disease',\n },\n {\n name: 'Valvular Disease',\n id: '03b6d572-1c32-425f-94c6-b074b99ef688',\n route: 'valvular-disease',\n },\n {\n name: 'Acyanotic Congenital Heart Defects',\n id: '2f29e116-0b73-4fdb-9ebe-e9e91ebbebdf',\n route: 'acyanotic-congenital-heart-defects',\n },\n {\n name: 'Cyanotic Congenital Heart Defects',\n id: '7b8c2959-b7b9-4953-9d15-c065b92c0291',\n route: 'cyanotic-congenital-heart-defects',\n },\n {\n name: 'Stable Angina and Atherosclerosis',\n id: '2836a8aa-1cca-46b0-bfdb-f458858e25bd',\n route: 'stable-angina-and-atherosclerosis',\n },\n {\n name: 'Myocardial Infarction',\n id: '562c1c3d-3f1f-4159-bd47-091ce50c7bbc',\n route: 'myocardial-infarction',\n },\n {\n name: 'Peripheral Venous and Arterial Disease',\n id: '066b8374-87ec-425d-a23d-f4c277c10702',\n route: 'peripheral-venous-and-arterial-disease',\n },\n {\n name: 'Hypertension',\n id: 'd8698608-7bcf-4573-9fc2-9f4a493d3f59',\n route: 'hypertension',\n },\n {\n name: 'Pericardial Disease',\n id: 'ae1c92dd-f799-413c-9126-93f03f70a2e7',\n route: 'pericardial-disease',\n },\n {\n name: 'Shock',\n id: 'c534d424-1e09-4cf1-b7b8-74ab18ec6a21',\n route: 'shock',\n },\n ]\n }\n ],\n },\n {\n name: 'Board Style Questions',\n route: 'board-banks',\n content: [\n {\n name: 'Question Banks',\n content: [\n {\n name: 'Anatomy',\n id: 'e83db12e-8aa9-4f6b-b743-7b5457adc68f',\n route: 'anatomy'\n },\n {\n name: 'Pathology',\n id: '11ccd07b-50a6-435a-9edb-72a5f8b066ea',\n route: 'pathology'\n },\n {\n name: 'Pharmacology',\n id: '56ae5ecb-2a96-4551-b6c4-1e10d532da2f',\n route: 'pharmacology'\n },\n // {\n // name: 'Biochemistry',\n // id: '251a0b30-1765-414c-8398-d966ab65994a',\n // route: 'biochemistry'\n // },\n // {\n // name: 'Genetics',\n // id: '2de49cc9-4447-45e7-81cd-aa0c63f7818e',\n // route: 'genetics'\n // },\n {\n name: 'Microbiology',\n id: '219cbf7d-a7b0-49d5-86dd-d79920628cf0',\n route: 'microbiology'\n },\n {\n name: 'Physiology',\n id: '9e2ae8de-5e52-490f-9e2b-b2127aa78b55',\n route: 'physiology'\n },\n ]\n }\n ]\n },\n {\n name: 'Cardio Bites',\n route: 'qbanks',\n calloutText: 'Cardio Bites are bite-sized questions that cover what you learn in Dr. Roviso’s videos. Use them to test your recall and switch on active learning!',\n // icon: ,\n content: [\n {\n name: 'Question Banks',\n content: [\n {\n name: 'Embryology',\n id: 'dc08fc46-bffa-48d2-b6d5-17f7a0e44f2c',\n route: 'embryology',\n },\n {\n name: 'Anatomy',\n id: '38b04cb7-199d-4eaa-bf11-2a7734544d15',\n route: 'anatomy',\n },\n {\n name: 'Vascular System',\n id: '1a1810e8-51d2-4408-a27a-b215cf20981c',\n route: 'vascular-system',\n },\n {\n name: 'Cardiac Parameters of Physiologic Function',\n id: '67c9d021-2627-4320-a240-4bd2e381c56d',\n route: 'cardiac-parameters-of-physiologic-function',\n },\n {\n name: 'Cardiac Function and Venous Return Curves',\n id: 'e269c30a-6b36-4fb8-b12e-92c446362dae',\n route: 'cardiac-function-and-venous-return-curves',\n },\n {\n name: 'Pressure-Volume Loops',\n id: 'a5a8028e-93e9-4627-a5e5-69f2d61d4fe9',\n route: 'pressure-volume-loops',\n },\n {\n name: 'Vasodilation and Vasoconstriction',\n id: 'eba82859-360a-49a5-94a8-15d53f3fbe05',\n route: 'vasodilation-and-vasoconstriction',\n },\n {\n name: 'Pressure and Flow Physiology',\n id: '0d241817-cbdb-4db6-9db9-a1426233ccd3',\n route: 'pressure-and-flow-physiology',\n },\n {\n name: 'Cardiac Cycle',\n id: '7851fd81-fd65-45b4-b444-4c915babb440',\n route: 'cardiac-cycle',\n },\n {\n name: 'Renin-Angiotensin-Aldosterone System',\n id: '4620a248-56c4-4e7b-a92c-1eccd38895b2',\n route: 'renin-angiotensin-aldosterone-system',\n },\n {\n name: 'Exercise Physiology',\n id: '064fa8f9-196d-43ce-b2ae-0178d2a0829f',\n route: 'Exercise Physiology',\n },\n {\n name: 'Cardiac Conductive Physiology',\n id: '0e574379-66e1-4720-9e6c-9d3ec1948692',\n route: 'Cardiac Conductive Physiology',\n },\n {\n name: 'Antiarrhythmics',\n id: '80af692f-0010-44e6-ab2a-422cad159699',\n route: 'Antiarrhythmics',\n },\n {\n name: 'Atrial Arrhythmias',\n id: '501f270d-eb88-425f-bf61-de523e63c47c',\n route: 'atrial-arrhythmias',\n },\n {\n name: 'Ventricular Arrhythmias',\n id: '14128d34-8176-4e70-9009-aba7dc429e56',\n route: 'ventricular-arrhythmias',\n },\n {\n name: 'Conduction Blocks',\n id: '7abea0d8-7b64-4474-9ebf-62a9da780ef7',\n route: 'conduction-blocks',\n },\n {\n name: 'Heart Failure',\n id: '3a6fbf48-e172-4dd6-ac68-1efd179ecb3d',\n route: 'heart-failure',\n },\n {\n name: 'Cardiomyopathy',\n id: '7752627a-b291-4b0f-abf4-bdab1d903a5e',\n route: 'cardiomyopathy',\n },\n {\n name: 'Aortic Disease',\n id: '4b3d9b93-02b0-4096-a90a-e9e04f40b35a',\n route: 'aortic-disease',\n },\n {\n name: 'Valvular Disease',\n id: 'ece0d035-c8dd-4313-a7d3-6c1be8c02aa5',\n route: 'valvular-disease',\n },\n {\n name: 'Acyanotic Congenital Heart Defects',\n id: '4aff18d1-e9f8-473c-83af-f69a957b9d4f',\n route: 'acyanotic-congenital-heart-defects',\n },\n {\n name: 'Cyanotic Congenital Heart Defects',\n id: '8cbde7f6-cdb3-4f33-8018-2b36272ae82e',\n route: 'cyanotic-congenital-heart-defects',\n },\n {\n name: 'Stable Angina and Atherosclerosis',\n id: 'd9c782f7-0d0f-4337-b791-dc7205465100',\n route: 'stable-angina-and-atherosclerosis',\n },\n {\n name: 'Myocardial Infarction',\n id: 'c1f2c440-be49-482b-9cb9-7c57749ec199',\n route: 'myocardial-infarction',\n },\n {\n name: 'Peripheral Venous and Arterial Disease',\n id: '1f57ef8c-4bd2-4c10-abf7-677b4878027c',\n route: 'peripheral-venous-and-arterial-disease',\n },\n {\n name: 'Hypertension',\n id: 'c1f9b72a-43b7-4dc2-83ce-6b92ba6bcfd8',\n route: 'hypertension',\n },\n {\n name: 'Pericardial Disease',\n id: '5338a7c3-1cb9-42df-ae6c-3c0e11d19414',\n route: 'pericardial-disease',\n },\n {\n name: 'Shock',\n id: '80a795ac-bbee-4cbb-b163-3a61d1e9f15d',\n route: 'shock',\n },\n ]\n }\n ]\n }\n ]\n },\n {\n name: 'Neurology',\n section: 'step1',\n tagIds: ['163640c8-3e6e-450c-8edd-6935175d224f', '51765dae-449a-4035-8c34-5331477bc4ce'],\n route: 'neurology',\n themePalette: colors.brandPalette.magenta,\n classroomDescription: 'All the high-yield neurology concepts you need to know in one place. Watch the videos and answer the practice questions to ace this section on test day!',\n questionCount: 690,\n icon: 'icons/inbde/ethics-and-behavioral-sciences.svg',\n educators: [\n {\n firstName: 'Dr. Roviso',\n avatar: 'images/inbde/anthony_roviso.gif',\n },\n {\n firstName: 'Tyler',\n avatar: 'images/tyler.gif',\n },\n {\n firstName: 'Jia',\n avatar: 'images/jia.gif',\n },\n ],\n contentTypes: [\n {\n name: 'Neurology Videos',\n route: 'videos',\n content: [\n {\n name: 'Neurology Videos',\n type: 'Course',\n description: 'review stuff',\n content: [\n {\n name: 'Embryology',\n id: '167d52f8-98aa-424a-9aef-c3398d10672e',\n route: 'embryology',\n index: 1\n },\n {\n name: 'Cellular Function',\n id: '17233ff3-f5ae-4498-8442-3c444032e67a',\n route: 'cellular-function',\n index: 2\n },\n {\n name: 'Ascending Spinal Cord Tracts',\n id: '9d47f4d6-3277-4651-a7a8-19c847c852d8',\n route: 'ascending-spinal-cord-tracts',\n index: 3\n },\n {\n name: 'Descending Spinal Cord Tracts',\n id: '767f2aa0-4fae-410c-a6ac-3048ad21b05c',\n route: 'descending-spinal-cord-tracts',\n index: 4\n },\n {\n name: 'Brainstem Anatomy',\n id: 'fc1f81f8-7d84-4fe0-809c-13e7d9feba44',\n route: 'brainstem-anatomy',\n index: 5\n },\n {\n name: 'Cerebral Cortex',\n id: '85b144bc-4775-4583-8033-db7839a2ad66',\n route: 'cerebral-cortext',\n index: 6\n },\n {\n name: 'Radiculopathy',\n id: '7f3ba4fb-1c2e-4b24-a85f-46d58c4e5333',\n route: 'radiculopathy',\n index: 7\n },\n {\n name: 'Spinal Cord Syndromes',\n id: 'dbdde3cd-38f5-4284-931f-e21ea515f555',\n route: 'spinal-cord-syndromes',\n index: 8\n },\n {\n name: 'Invasive Spinal Cord Disease',\n id: '74def73a-8f3e-4883-adcf-91ae9dab349e',\n route: 'invasive-spinal-cord-disease',\n index: 9\n },\n {\n name: 'Demyelinating Disease',\n id: '4f5b47af-0069-4212-af9c-6a27be2d5589',\n route: 'demyelinating-disease',\n index: 10\n },\n {\n name: 'Conduction Physiology',\n id: 'cd270c1b-c73e-4768-9189-a5649244960c',\n route: 'conduction-physiology',\n index: 11\n },\n {\n name: 'Neuromuscular Junction (NMJ)',\n id: '62a118b4-782d-4ada-b63e-5351f385aa96',\n route: 'neuromuscular-junction-nmj',\n index: 12\n },\n {\n name: 'Cranial Nerves 1-6',\n id: '255da5b0-0626-460d-9599-4fa89a74a188',\n route: 'cranial-nerves-1-6',\n index: 13\n },\n {\n name: 'Cranial Nerves 7-12',\n id: '0e4865f9-fd48-45fa-bf63-54a1ff88c6de',\n route: 'cranial-nerves-7-12',\n index: 14\n },\n {\n name: 'Vision',\n id: '4523083b-a275-435c-adc7-c77190748b75',\n route: 'vision',\n index: 15\n },\n {\n name: 'Auditory Sensation',\n id: 'ccabbc0a-cb58-4a53-86d0-5c653494f9cd',\n route: 'auditory-sensation',\n index: 16\n },\n {\n name: 'Vertigo',\n id: 'a8906d3a-10c1-41eb-9e55-8da083407879',\n route: 'vertigo',\n index: 17\n },\n {\n name: 'Pediatric Brain Tumors',\n id: '91a2e29b-febc-40a0-ae6a-422a066bb6c3',\n route: 'pediatric-brain-tumors',\n index: 18\n },\n {\n name: 'Adult Primary Brain Tumors',\n id: '6115fcf8-6864-4e6b-b201-caa5a81f7e2a',\n route: 'adult-primary-brain-tumors',\n index: 19\n },\n {\n name: 'Ischemic Cerebrovascular Accidents',\n id: '26ab6dd6-5065-465f-8cee-4cb250a214bd',\n route: 'ischemic-cerebrovascular-accidents',\n index: 20\n },\n {\n name: 'Aneurysms and Intracranial Hemorrhage',\n id: 'e1cad664-701f-43c6-aa5f-40ad1351f81a',\n route: 'aneurysms-and-intracranial-hemorrhage',\n index: 21\n },\n {\n name: 'Cerebellum and Ventricles',\n id: 'd0e52b66-566a-4618-8d68-2369b405569e',\n route: 'cerebellum-and-ventricles',\n index: 22\n },\n {\n name: 'Diencephalon',\n id: 'bbd6ca5c-667d-48a3-ab4b-b6de4e26119e',\n route: 'diencephalon',\n index: 23\n },\n {\n name: 'Basal Ganglia',\n id: '36f85117-3701-4c08-9446-1939c73414cc',\n route: 'basal-ganglia',\n index: 24\n },\n {\n name: 'Neurotransmitter Activity in Psychiatric Disease',\n id: '50321894-7010-48c7-980e-516b75ef8aa0',\n route: 'neurotransmitter-activity-in-psychiatric-disease',\n index: 25\n },\n {\n name: 'Dementia',\n id: '2fbd657b-69bf-4b1c-8b85-a480d380d03f',\n route: 'dementia',\n index: 26\n },\n {\n name: 'Headache',\n id: '44781f72-b5c9-4214-995d-7339f54218dc',\n route: 'headache',\n index: 27\n },\n {\n name: 'Seizures',\n id: '821ec6fe-4b82-4f54-a1d1-d6107c133f6d',\n route: 'seizures',\n index: 28\n },\n {\n name: 'Traumatic Brain Injuries',\n id: 'b8c5f8d9-4f9c-4226-8a2d-27ad15f38669',\n route: 'traumatic-brain-injuries',\n index: 29\n },\n ]\n }\n ],\n },\n {\n name: 'Board Style Questions',\n route: 'board-banks',\n content: [\n {\n name: 'Question Banks',\n content: [\n {\n name: 'Anatomy',\n id: '770ae7dc-3a7f-4198-84fc-0c14f583b18e',\n route: 'anatomy'\n },\n {\n name: 'Pathology',\n id: 'd03123fb-29c3-4f2d-a0ec-7995e2ab4371',\n route: 'pathology'\n },\n {\n name: 'Pharmacology',\n id: '65d8c2c1-89bc-4dc6-9e6e-f9f659582e87',\n route: 'pharmacology'\n },\n {\n name: 'Biochemistry',\n id: '790d2841-6967-4b03-b4c4-ef207a16c86f',\n route: 'biochemistry'\n },\n {\n name: 'Microbiology',\n id: 'bd53a4d7-2f3a-4556-bfe4-991de33f62de',\n route: 'microbiology'\n },\n // {\n // name: 'Genetics',\n // id: '70fddc4b-1953-4ce4-a264-f2978956b195',\n // route: 'genetics'\n // },\n // {\n // name: 'Physiology',\n // id: '2a0e9e74-cc41-4d4e-9571-954fa002f4a8',\n // route: 'physiology'\n // },\n // {\n // name: 'Pathophysiology',\n // id: '68c86eca-807d-405d-85d9-7735a59acfa1',\n // route: 'pathophysiology'\n // },\n // {\n // name: 'Embryology',\n // id: '8450ca7d-9a83-4aa5-b32b-3595c3e6ac9e',\n // route: 'embryology'\n // },\n ]\n }\n ]\n },\n {\n name: 'Neuro Bites',\n // icon: ,\n calloutText: 'Neuro Bites are bite-sized questions that cover what you learn in Dr. Roviso’s videos. Use them to test your recall and switch on active learning!',\n route: 'qbanks',\n content: [\n {\n name: 'Question Banks',\n content: [\n {\n name: 'Embryology',\n route: 'embryology',\n id: '0af841bb-3570-428c-b207-528ca79bb5e4',\n },\n {\n name: 'Cellular Function',\n route: 'cellular-function',\n id: '84964351-b0b2-41c4-8201-ddf9793847f0',\n },\n {\n name: 'Ascending Spinal Cord Tracts',\n route: 'ascending-spinal-cord-tracts',\n id: '10569bcf-f74d-435e-b024-abdf35611413',\n },\n {\n name: 'Descending Spinal Cord Tracts',\n route: 'descending-spinal-cord-tracts',\n id: 'c8234d01-b2db-480f-94f5-2eb6806b8bdd',\n },\n {\n name: 'Brainstem Anatomy',\n route: 'brainstem-anatomy',\n id: '2170e457-4f27-43a5-8de8-62a8e2530190',\n },\n {\n name: 'Cerebral Cortex',\n route: 'cerebral-cortex',\n id: '43210a5e-5772-4acc-afed-ca514218883a',\n },\n {\n name: 'Radiculopathy',\n route: 'radiculopathy',\n id: 'f1628fa8-e2ea-4a60-91a0-b06eed0a598b',\n },\n {\n name: 'Spinal Cord Syndromes',\n route: 'spinal-cord-syndromes',\n id: 'a87c93a3-1c91-4c86-b5c2-3913d7bdc35d',\n },\n {\n name: 'Invasive Spinal Cord Disease',\n route: 'invasive-spinal-cord-disease',\n id: '1962878b-6098-4576-84cc-e31985c24247',\n },\n {\n name: 'Demyelinating Disease',\n route: 'demyelinating-disease',\n id: '1a65cb63-980b-4ffb-aaba-f31f250e2bf2',\n },\n {\n name: 'Conduction Physiology',\n route: 'conduction-physiology',\n id: '74a58338-9c86-4850-b95c-6d820bf7552f',\n },\n {\n name: 'Neuromuscular Junction',\n route: 'neuromuscular-junction',\n id: '8a2154bd-98c8-483e-9976-29b939e7b356',\n },\n {\n name: 'Cranial Nerves 1-6',\n route: 'cranial-nerves-1-6',\n id: '4a841de8-9bef-49aa-9d1d-8f2e0822e0e5',\n },\n {\n name: 'Cranial Nerves 7-12',\n route: 'cranial-nerves-7-12',\n id: '043915ef-035d-48ac-892c-836898d1d01a',\n },\n {\n name: 'Vision',\n route: 'vision',\n id: '77d417e7-f4eb-41c3-8cbc-a9e2a0e344b6',\n },\n {\n name: 'Auditory',\n route: 'auditory',\n id: '579edfd1-9df3-498a-bfe7-8d56a19089c9',\n },\n {\n name: 'Vertigo',\n route: 'vertigo',\n id: 'd0186d03-14ff-4454-82c5-d9285a6eed0e',\n },\n {\n name: 'Pediatric Brain Tumors',\n route: 'pediatric-brain-tumors',\n id: 'ced83a8a-3c94-4864-9789-bed29f04ae4b',\n },\n {\n name: 'Adult Primary Brain Tumors',\n route: 'adult-primary-brain-tumors',\n id: '66ee23bb-e6b5-4d76-b622-6eb59108d37a',\n },\n {\n name: 'Ischemic Cerebrovascular Accidents',\n route: 'ischemic-cerebrovascular-accidents',\n id: '5c41ad11-1c3d-4ee3-bd13-881446d089dc',\n },\n {\n name: 'Aneurysms and Intracranial Hemorrhage',\n route: 'aneurysms-and-intracranial-hemorrhage',\n id: '8d49e739-6a82-493b-b0e9-d9107ea86a8b',\n },\n {\n name: 'Cerebellum and Ventricles',\n route: 'cerebellum-and-ventricles',\n id: 'e416e870-9225-4f16-b885-a8424884dc7a',\n },\n {\n name: 'Diencephalon',\n route: 'diencephalon',\n id: '7b9ba624-acd9-44b0-aa38-0a289627e2ea',\n },\n {\n name: 'Basal Ganglia',\n route: 'basal-ganglia',\n id: '1fc4ba3d-30d9-4852-9fb3-2f51012e1571',\n },\n {\n name: 'Neurotransmitter Activity in Psychiatric Disease' ,\n route: 'neurotransmitter-activity-in-psychiatric-disease' ,\n id: '77e72a3f-1efa-4559-9556-80c875d6fc44',\n },\n {\n name: 'Dementia',\n route: 'dementia',\n id: '849655c0-9929-42e0-9246-15125aa3b1dc',\n },\n {\n name: 'Headache',\n route: 'headache',\n id: '0dd2b22f-5f59-45da-afcf-f0df0f5c1f82',\n },\n {\n name: 'Seizures',\n route: 'seizures',\n id: '48137373-5b10-4560-8cc7-277099ef5234',\n },\n {\n name: 'Traumatic Brain Injuries',\n route: 'traumatic-brain-injuries',\n id: 'c89c4eb8-d207-4e00-bcf4-8ebd4ffb28da'\n }\n ],\n },\n ]\n },\n ]\n },\n {\n name: 'Endocrinology',\n tagId: '',\n route: 'endocrinology',\n section: 'step1',\n themePalette: colors.brandPalette.blue,\n classroomDescription: 'All the high-yield details you need to know for Step 1 Endocrinology in one place. Watch Dr. R’s videos and answer the practice questions to ace this section on test day!',\n questionCount: 0,\n comingSoon: true,\n icon: 'inbde/development-structure-function.svg',\n educators: [\n {\n firstName: 'Dr. Roviso',\n avatar: 'images/inbde/anthony_roviso.gif',\n },\n {\n firstName: 'Jonathan',\n avatar: 'images/jonathanhunter.gif',\n },\n {\n firstName: 'Brandon',\n avatar: 'images/brandonmuncan.gif',\n },\n ],\n contentTypes: [\n {\n name: 'Dr. Roviso\\'s Videos',\n route: 'videos',\n content: [\n ],\n },\n {\n name: 'Endocrinology Bites',\n // icon: ,\n route: 'qbanks',\n content: [\n ]\n },\n ]\n },\n ],\n studyTools: [\n // {\n // name: 'Past Test Results',\n // route: 'past-test-results',\n // themePalette: colors.brandPalette.royal,\n // showOnHome: true,\n // },\n {\n name: 'Bookmarks',\n route: 'bookmarks',\n themePalette: colors.brandPalette.royal,\n showOnHome: true,\n },\n // {\n // name: 'Download iPhone App',\n // route: '#',\n // themePalette: colors.brandPalette.royal,\n // },\n // {\n // name: 'Download Android App',\n // route: '#',\n // themePalette: colors.brandPalette.royal,\n // },\n ],\n // upNext: [\n //\n // ],\n meta: {\n siteTitle: 'Step 1 Bootcamp',\n subjectIds: [\n '163640c8-3e6e-450c-8edd-6935175d224f', // Neurology\n ]\n }\n};\nfunction getOATConfigObject(classroom, chapter, contentSlug) {\n}\n\nexport {getOATConfigObject};\nexport default config;\n","import {colors} from '../styles/theme';\n\n\nimport anatomyConfig from './anatomy';\nimport step1Config from './step1';\n\nconst step1Classrooms = step1Config.classrooms.filter(({comingSoon}) => !comingSoon).map(classroom => ({...classroom, importedBootcamp: 'step-1'}));\nconst grossAnatomyClassrooms = anatomyConfig.classrooms.filter(({name}) => ['Gross Anatomy', 'Neuroanatomy', 'Histology', 'Embryology'].includes(name))\n\nconst config = {\n classrooms: [\n ...grossAnatomyClassrooms,\n ...step1Classrooms,\n {\n name: 'Pulmonology',\n route: 'pulmonology',\n section: 'step1',\n tagIds: ['fe4787d2-942d-4d6f-95a9-da5a67a49bf7', 'fa156415-adc1-4d82-a134-36ea31fbe264'],\n themePalette: colors.brandPalette.indigo,\n questionCount: 128,\n videoLessonCount: 40,\n classroomDescription: `All the high-yield pulmonary concepts you need to know in one place. Watch the videos and answer the practice questions to ace this section on test day!`,\n educators: [\n {\n firstName: 'Myles',\n avatar: 'images/myles_melamed.gif',\n },\n {\n firstName: 'Katie',\n avatar: 'images/katie_buerk.gif',\n },\n {\n firstName: 'Tyler',\n avatar: 'images/tyler_nelson.gif',\n },\n ],\n contentTypes: [\n {\n name: `Pulmonary Videos`,\n route: 'videos',\n content: [\n {\n name: 'Pulmonary Videos',\n type: 'Course',\n content: [\n {\n name: 'Introduction to the Respiratory System',\n route: 'introduction-to-the-respiratory-system',\n id: '48d58a03-0427-4e4c-abcd-8ef6248e6c55'\n },\n {\n name: 'Respiratory Physiology - Air',\n route: 'respiratory-physiology-air',\n id: 'db048b7d-ca34-4bc0-98fd-3a0e4f81cdfb'\n },\n {\n name: 'Respiratory Physiology - Blood',\n route: 'respiratory-physiology-blood',\n id: 'c3765201-ccac-49b9-b308-1e0f915e3205'\n },\n {\n name: 'Lung Pathology Fundamentals',\n route: 'lung-pathology-fundamentals',\n id: 'a1950ff7-9093-43f7-ad4a-bc5462412968'\n },\n {\n name: 'Pathology - Obstructive Lung Disease',\n route: 'pathology-obstructive-lung-disease',\n id: '2da21109-1811-4331-aebb-e2eeabaa2ef9'\n },\n {\n name: 'Pathology - Restrictive Lung Disease',\n route: 'pathology-restrictive-lung-disease',\n id: '2f2cfcf6-b260-49de-99df-e667e86ce15f'\n },\n {\n name: 'Lung Cancer',\n route: 'lung-cancer',\n id: 'f833dcb7-f512-4d5a-bd54-eb610f28b00c'\n },\n {\n name: 'Lung Pathology Special Topics',\n route: 'lung-pathology-special-topics',\n id: '977230d9-6315-4822-b54d-32607bfdf155'\n },\n ]\n }\n ]\n },\n {\n name: 'Board Style Questions',\n route: 'board-banks',\n content: [\n {\n name: 'Question Banks',\n content: [\n {\n name: 'Anatomy',\n id: '58d46b82-76e0-4a69-8f8d-ce223c8993ed',\n route: 'anatomy'\n },\n {\n name: 'Histology',\n id: '8c870d59-5c08-409e-8cb5-153fce9287c3',\n route: 'histology'\n },\n {\n name: 'Immunology',\n id: 'e45ff058-4cba-41c3-817c-ded90f90227b',\n route: 'immunology'\n },\n {\n name: 'Microbiology',\n id: '4cbe39d1-815a-48f4-9bc8-87e9485c22a4',\n route: 'microbiology'\n },\n {\n name: 'Pathology',\n id: 'ddb50a87-94c7-4d96-a428-a4dc43d6d9e2',\n route: 'pathology'\n },\n {\n name: 'Pathophysiology',\n id: 'd8d2f853-c14a-446d-bb82-f501b65797b2',\n route: 'pathophysiology'\n },\n {\n name: 'Pharmacology',\n id: '13abbe66-e34c-4c4a-8743-f69ddf1611e0',\n route: 'pharmacology'\n },\n {\n name: 'Physiology',\n id: 'a8354a5c-64d6-440c-b911-4b9380645503',\n route: 'physiology'\n },\n ]\n }\n ]\n },\n {\n name: `Pulm Bites`,\n route: 'qbanks',\n content: [\n {\n name: 'Question Banks',\n content: [\n {\n name: 'Introduction to the Respiratory System',\n route: 'introduction-to-the-respiratory-system',\n id: '93394017-c71b-4229-a831-dda5737f4df5'\n },\n {\n name: 'Respiratory Physiology - Air',\n route: 'respiratory-physiology-air',\n id: '7ca51a3b-a07a-43ae-b996-867894363568'\n },\n {\n name: 'Respiratory Physiology - Blood',\n route: 'respiratory-physiology-blood',\n id: 'eea31fd8-7986-4d51-ab13-54aec98e3352'\n },\n ]\n }\n ]\n },\n ]\n },\n {\n name: 'Immunology',\n route: 'immunology',\n section: 'step1',\n tagIds: ['c41e7205-f9b9-4c97-b6c0-6c3716921813', 'bf8d83c5-0ce3-4902-bd38-d2aba900301a'],\n themePalette: colors.brandPalette.indigo,\n icon: 'icons/histo.svg',\n questionCount: 0,\n videoLessonCount: 80,\n classroomDescription: `All the high-yield immunology concepts you need to know in one place. Watch the videos and answer the practice questions to ace this section on test day!`,\n educators: [\n {\n firstName: 'Dr. Roviso',\n avatar: 'images/inbde/anthony_roviso.gif',\n },\n {\n firstName: 'Katie',\n avatar: 'images/katie_buerk.gif',\n },\n {\n firstName: 'Audra',\n avatar: 'images/inbde/audra_boehm.gif',\n },\n ],\n contentTypes: [\n {\n name: `Immunology Videos`,\n route: 'videos',\n content: [\n {\n name: 'Videos',\n type: 'Course',\n content: [\n {\n name: 'Lymphoid Tissue',\n route: 'lymphoid-tissue',\n id: '04e59278-55ff-4dbc-acbe-fe416760a671'\n },\n {\n name: 'Innate vs Adaptive Immunity',\n route: 'innate-vs-adaptive-immunity',\n id: 'a615ad49-87f9-451b-b1e5-2c81f3574ed2'\n },\n {\n name: 'Acute Inflammatory Response',\n route: 'acute-inflammatory-response',\n id: '50053b3c-792a-456d-90bc-fe28c7835448'\n },\n {\n name: 'Cytokines',\n route: 'cytokines',\n id: '44321afd-ee0c-4a60-a8d3-a1282060b903'\n },\n {\n name: 'T-cells',\n route: 't-cells',\n id: '533ea0de-1399-468a-85df-213d61246b9d'\n },\n {\n name: 'B-cells',\n route: 'b-cells',\n id: 'e65ce497-2251-4342-b53b-959e35425891'\n },\n {\n name: 'Antibodies',\n route: 'antibodies',\n id: '1f414663-c332-4a25-bef9-1ed1e6ee4cf5'\n },\n {\n name: 'Complement',\n route: 'complement',\n id: 'aff5735e-7c78-4218-b28e-a80c436d7aa1'\n },\n {\n name: 'Vaccinations',\n route: 'vaccinations',\n id: '12e0bdad-f4e8-40fb-b430-f2341ce79015'\n },\n {\n name: 'Immunodeficiency Syndromes',\n route: 'immunodeficiency-syndromes',\n id: '9943f414-38ac-461e-b8e7-18e634ba4dfc'\n },\n {\n name: 'Hypersensitivities',\n route: 'hypersensitivities',\n id: '20e04bc3-7764-4acb-806d-ee04b1b651f7'\n },\n {\n name: 'Blood Transfusion Reactions',\n route: 'blood-transfusion-reactions',\n id: '41f48a78-d269-449e-978b-f7719a9b8d2d'\n },\n {\n name: 'Transplant Rejection',\n route: 'transplant-rejection',\n id: 'b568a92f-972b-4f05-8642-e8e10f9c5217'\n },\n ]\n },\n ]\n },\n {\n name: 'Board Style Questions',\n route: 'board-banks',\n content: [\n {\n name: 'Question Banks',\n content: [\n {\n name: 'Immunology',\n id: 'e0ba78ab-36d8-457a-9860-dc8c539b21d9',\n route: 'immunology'\n },\n {\n name: 'Microbiology',\n id: 'b411e150-e960-47a8-aa18-acbca370cb0a',\n route: 'microbiology'\n },\n {\n name: 'Pathology',\n id: '29d4d442-8188-460a-8a57-e1ed80d0e016',\n route: 'pathology'\n },\n {\n name: 'Pharmacology',\n id: '239623b4-2cac-43f8-b102-9a2cce37d25a',\n route: 'pharmacology'\n },\n ]\n }\n ]\n },\n {\n name: 'Immuno Bites',\n route: 'qbanks',\n content: [\n {\n name: 'Question Banks',\n content: [\n {\n name: 'Lymphoid Tissue',\n route: 'lymphoid-tissue',\n id: 'b5247d14-c8a8-47d7-86a9-ab671974246e'\n },\n {\n name: 'Innate vs Adaptive Immunity',\n route: 'innate-vs-adaptive-immunity',\n id: 'e4ade753-482a-4abc-8222-bd7171d4da31'\n },\n {\n name: 'Acute Inflammatory Response',\n route: 'acute-inflammatory-response',\n id: 'fea485f9-58c1-4de7-becc-29cd3b6d70f8'\n },\n {\n name: 'Cytokines',\n route: 'cytokines',\n id: '94aab045-f20d-4284-9edb-db13d705f2be',\n },\n {\n name: 'T-cells',\n route: 't-cells',\n id: '349598ad-03df-4655-a010-c63a6589e58a'\n },\n {\n name: 'B-cells',\n route: 'b-cells',\n id: '7607d7b5-a78c-4193-89a4-67d937233f76'\n },\n {\n name: 'Antibodies',\n route: 'antibodies',\n id: 'dd78ba76-2bf1-4241-a80e-56f93a61bb87'\n },\n {\n name: 'Complement',\n route: 'complement',\n id: 'f16d5769-edff-4ec0-9bb6-f27b6fb19ca4'\n },\n {\n name: 'Vaccinations',\n route: 'vaccinations',\n id: '6f38269e-2ad7-491d-b54c-e737fd6d5a85'\n },\n ]\n }\n ]\n }\n ]\n },\n {\n name: 'Psychiatry',\n route: 'psychiatry',\n section: 'step1',\n tagId: 'e3999743-fedd-43bd-bea3-dbb9e79a28b9',\n themePalette: colors.brandPalette.indigo,\n questionCount: 40,\n videoLessonCount: 30,\n classroomDescription: `All the high-yield psychiatry concepts you need to know in one place. Watch the videos and answer the practice questions to ace this section on test day!`,\n educators: [\n {\n firstName: 'Jake',\n avatar: 'images/jacobgarcia.gif',\n },\n {\n firstName: 'Jim',\n avatar: 'images/jim.gif',\n },\n {\n firstName: 'Kathak',\n avatar: 'images/kathak.gif',\n },\n ],\n contentTypes: [\n {\n name: `Psychiatry Videos`,\n route: 'videos',\n content: [\n {\n name: 'Psychiatry Videos',\n type: 'Course',\n content: [\n {\n name: 'Psychology',\n route: 'psychology',\n id: '83d809c4-cfa0-4408-ba10-176eee281a01'\n },\n {\n name: 'Developmental Disorders',\n route: 'developmental-disorders',\n id: 'd21d69f7-1191-4774-9723-953326e0b0f6'\n },\n {\n name: 'Memory, Dissociation, and Orientation',\n route: 'memory-dissociation-and-orientation',\n id: '38891345-0431-46af-8915-6514fc6d857a'\n },\n {\n name: 'Anxiety, Trauma, and Stress Disorders',\n route: 'anxiety-trauma-and-stress-disorders',\n id: 'ed5750d5-0102-4161-aa99-c7d32d0c304c'\n },\n {\n name: 'Personality Disorders',\n route: 'personality-disorders',\n id: '782f356b-1708-4886-b14e-864627f2e26c'\n },\n {\n name: 'Psychotic and Mood Disorders',\n route: 'psychotic-and-mood-disorders',\n id: 'f4e3dddd-29f7-46a1-baba-3efbf15a7d2b'\n },\n ]\n }\n ]\n },\n {\n name: `Psych Bites`,\n route: 'qbanks',\n content: [\n {\n name: 'Question Banks',\n content: [\n {\n name: 'Psychology',\n route: 'psychology',\n id: '9dd8d3b5-119c-4db4-bdf3-d9d1b7af85d6'\n },\n {\n name: 'Developmental Disorders',\n route: 'developmental-disorders',\n id: 'cae3c1aa-7fa2-4045-805b-3505ee67c2a5'\n },\n {\n \"name\": \"Memory, Dissociation, and Orientation\",\n \"route\": \"memory-dissociation-and-orientation\",\n \"id\": \"5b259892-3672-420b-a2a0-74d60a5a6b5b\"\n },\n {\n \"name\": \"Anxiety, Trauma, and Stress Disorders\",\n \"route\": \"anxiety-trauma-and-stress-disorders\",\n \"id\": \"ce9757c5-f5c1-441a-9c27-91e31fa3f56b\"\n }\n ]\n }\n ]\n },\n ]\n },\n {\n name: 'Hematology & Oncology',\n route: 'hematology-and-oncology',\n section: 'step1',\n tagId: '', // c7cc2866-4c86-42a2-8860-af9cc6852006 TODO add this tagId when we have qbanks in this subject\n themePalette: colors.brandPalette.indigo,\n questionCount: 0,\n videoLessonCount: 48,\n showVideoProgress: true,\n classroomDescription: `All the high-yield heme & onc concepts you need to know in one place. Watch the videos and answer the practice questions to ace this section on test day!`,\n educators: [\n {\n firstName: 'Dr. Roviso',\n avatar: 'images/inbde/anthony_roviso.gif',\n },\n {\n firstName: 'Jonathan',\n avatar: 'images/jonathanhunter.gif',\n },\n ],\n contentTypes: [\n {\n name: `Heme & Onc Videos`,\n route: 'videos',\n content: [\n {\n name: 'Heme & Onc Videos',\n type: 'Course',\n content: [\n {name: 'Embryology', route: 'embryology', id: 'de495996-515d-4d31-ac8d-39f0bb5be759'},\n {name: 'Blood Cells', route: 'blood-cells', id: '5bc1f772-e145-4337-97e1-2cac8ebc21b0'},\n {name: 'Microcytic Anemia', route: 'microcytic-anemia', id: '1bd1d311-9afc-41f6-ab64-b9439728a3b0'},\n {name: 'Normocytic Anemia', route: 'normocytic-anemia', id: '34687b83-6900-471d-9660-f9e98c23b2e7'},\n {name: 'Macrocytic Anemia', route: 'macrocytic-anemia', id: '7ae22c51-f1ce-4601-b473-237681b9c1be'},\n {name: 'Platelets', route: 'platelets', id: '6cbbb79a-55aa-453a-bda0-19dfc8bc7739'},\n {name: 'Coagulation and Fibrinolysis', route: 'coagulation-and-fibrinolysis', id: '919a439b-2228-49ee-b734-beca32cfcdde'},\n ]\n }\n ]\n },\n ]\n },\n {\n name: 'Dermatology',\n route: 'dermatology',\n classroomDescription: 'All the high-yield dermatology concepts you need to know in one place. Watch the videos and answer the practice questions to ace this section on test day!',\n section: 'step1',\n tagIds: ['03368b16-4e2f-4db7-8de6-44937f453f91', 'cb030e2b-4777-4c94-9eeb-1783a9591f1e'],\n themePalette: colors.brandPalette.cerulean,\n icon: 'icons/neck.svg', // TODO add gross anatomy icon\n questionCount: 0,\n videoLessonCount: 53,\n educators: [\n {\n firstName: 'Jake',\n avatar: 'images/jacobgarcia.gif',\n },\n {\n firstName: 'Brooke',\n avatar: 'images/brooke_nelson.gif',\n },\n {\n firstName: 'Jim',\n avatar: 'images/jim.gif',\n },\n ],\n contentTypes: [\n {\n name: `Dermatology Videos`,\n route: 'videos',\n content: [\n {\n name: 'Videos',\n type: 'Course',\n content: [\n {\n name: 'Skin Structure and Function',\n route: 'skin-structure-and-function',\n id: 'c28a6bfb-9912-4eb9-a623-85c407137c42'\n },\n {\n name: 'Histopathology',\n route: 'histopathology',\n id: '44728323-8ac8-47f6-a1bd-d7cea5df4505'\n },\n {\n name: 'Skin Lesions',\n route: 'skin-lesions',\n id: 'f69bace8-d22e-4967-849c-e638916362e6'\n },\n {\n name: 'Bacterial Infectious Diseases',\n route: 'bacterial-infectious-diseases',\n id: '7071a622-65f6-41ee-802d-c660eaf0d6c4'\n },\n {\n name: 'Herpes Simplex and Varicella Infections',\n route: 'herpes-simplex-and-varicella-infections',\n id: 'd398bc87-5e00-46a7-be10-b469391852ae'\n },\n {\n name: 'Viral Infectious Conditions',\n route: 'viral-infectious-conditions',\n id: '6107cb1a-8edf-496e-bfda-32be61c843af'\n },\n {\n name: 'Candida',\n route: 'candida',\n id: 'c8ad97ab-4801-4077-b41c-5baf0e6d83fd'\n },\n {\n name: 'Fungal Infectious Conditions',\n route: 'fungal-infectious-conditions',\n id: '291d8046-7f79-4422-b3aa-b86705935707'\n },\n {\n name: 'Autoimmune Blistering Conditions',\n route: 'autoimmune-blistering-conditions',\n id: '8f4a3efe-955e-4acf-b8fc-29c84f7d200d'\n },\n {\n name: 'Reactive Disease',\n route: 'reactive-disease',\n id: '0a0f6a20-655e-4bc3-9730-5a3490b8a232'\n },\n {\n name: 'Burns',\n route: 'burns',\n id: 'ada6afe2-350e-490e-8be6-dcd559d3b384'\n },\n {\n name: 'Skin Cancer',\n route: 'skin-cancer',\n id: '3a821d28-6d77-4cf1-8608-588181385168'\n },\n {\n name: 'Melanoma',\n route: 'melanoma',\n id: '28747933-bdec-4c54-b364-73564defcde9'\n },\n {\n name: 'Vascular Tumors',\n route: 'vascular-tumors',\n id: 'bb700370-7773-4828-bc89-c57b95be5ab8'\n },\n {\n name: 'Atopic and Allergic Disease',\n route: 'atopic-and-allergic-disease',\n id: 'a97ff3fb-3dec-436c-9417-9538fefd39a1'\n },\n {\n name: 'Pustular Disease',\n route: 'pustular-disease',\n id: '85ee781d-e4d9-454d-a49c-59cb0ad4265f'\n },\n {\n name: 'Benign Dark Skin Lesions',\n route: 'benign-dark-skin-lesions',\n id: 'cb2b8200-c165-4c01-9e45-e9d81c79e419'\n },\n {\n name: 'Red Plaque Disease',\n route: 'red-plaque-disease',\n id: 'fd4c7895-84ec-4cba-ae3f-e7ba06b25370'\n },\n ]\n }\n ]\n },\n {\n name: 'Board Style Questions',\n route: 'board-banks',\n content: [\n {\n name: 'Question Banks',\n content: [\n {\n name: 'Immunology',\n id: 'd8822373-d2dd-460d-9b1a-6f147a5bbae3',\n route: 'immunology'\n },\n {\n name: 'Microbiology',\n id: '90ce973f-87f6-4aa2-98db-b00829fed972',\n route: 'microbiology'\n },\n {\n name: 'Pathology',\n id: '6370e3f3-bccd-48ed-8d17-558c19620f54',\n route: 'pathology'\n },\n {\n name: 'Pathophysiology',\n id: '41dd4e05-912a-41b0-9347-dc523416244c',\n route: 'pathophysiology'\n },\n {\n name: 'Pharmacology',\n id: '41194efa-a320-456b-b0ef-e6886e960312',\n route: 'pharmacology'\n },\n ]\n }\n ]\n },\n {\n name: 'Derm Bites',\n route: 'qbanks',\n content: [\n {\n name: 'Question Banks',\n content: [\n {\n name: 'Skin Structure and Function',\n route: 'skin-structure-and-function',\n id: 'f62353b2-3365-46e7-aa5d-0146b7581247'\n },\n {\n name: 'Histopathology',\n route: 'histopathology',\n id: 'c209a420-655f-4384-ba1e-8b9473654912'\n },\n {\n name: 'Skin Lesions',\n route: 'skin-lesions',\n id: '1317939f-a619-4b59-b1c2-6fde553f61d5'\n },\n {\n name: 'Bacterial Infectious Diseases',\n route: 'bacterial-infectious-diseases',\n id: '2bcb0484-8403-4122-9c84-fba079d3c6a9'\n },\n {\n name: 'Herpes Simplex and Varicella Infections',\n route: 'herpes-simplex-and-varicella-infections',\n id: '22dc0478-de31-454b-9aaf-e768f4bb7854'\n },\n {\n name: 'Viral Infectious Conditions',\n route: 'viral-infectious-conditions',\n id: 'edc523df-0775-4656-bfa8-5ffb13ba5b7d'\n },\n {\n name: 'Candida',\n route: 'candida',\n id: 'cf3f790c-8e22-44b0-8e90-89b9de41e8c6'\n },\n {\n name: 'Fungal Infectious Conditions',\n route: 'fungal-infectious-conditions',\n id: '5048617e-a4c0-4a8b-a1b5-5c532ff1e099'\n },\n {\n name: 'Autoimmune Blistering Conditions',\n route: 'autoimmune-blistering-conditions',\n id: 'd935e657-5a22-4921-88ac-c5e5af3266e9'\n },\n {\n name: 'Reactive Skin Disease',\n route: 'reactive-skin-disease',\n id: '9099ce40-c69c-48c5-9ab0-bed9f65a377e'\n },\n {\n name: 'Burns',\n route: 'burns',\n id: '98ef32f0-7482-41d3-8179-6004cfaec785'\n },\n {\n name: 'Skin Cancer',\n route: 'skin-cancer',\n id: '6c3f8f41-07f0-4a02-9055-1077a5ea8187'\n },\n {\n name: 'Melanoma',\n route: 'melanoma',\n id: 'cef3c08b-d2de-4837-ac79-9b7ff19b0a3a'\n },\n {\n name: 'Vascular Tumors',\n route: 'vascular-tumors',\n id: 'f70e5b61-5026-432b-9096-ac9000af58c0'\n },\n {\n name: 'Atopic and Allergic Disease',\n route: 'atopic-and-allergic-disease',\n id: '5c5352f3-a0e7-441b-a06b-31d749b267ab'\n },\n {\n name: 'Pustular Disease',\n route: 'pustular-disease',\n id: '65d8b53e-cab3-4e92-a489-9325b5cbc018'\n },\n {\n name: 'Benign Dark Skin Lesions',\n route: 'benign-dark-skin-lesions',\n id: 'a02e62a7-952e-44f1-a8a9-6e15deec6e45'\n },\n {\n name: 'Red Plaque Disease',\n route: 'red-plaque-disease',\n id: '5622842e-d9ad-454e-83c6-38b90a23258a'\n },\n ]\n }\n ]\n }\n ]\n },\n {\n name: 'Nephrology',\n route: 'nephrology',\n section: 'step1',\n tagIds: ['8f5e08ad-f30b-4a64-b0af-24b12ad97497', '09012e37-514e-4fef-ba98-28a574d90375'],\n themePalette: colors.brandPalette.indigo,\n questionCount: 0,\n videoLessonCount: 54,\n classroomDescription: `All the high-yield renal concepts you need to know in one place. Watch the videos and answer the practice questions to ace this section on test day!`,\n educators: [\n {\n firstName: 'David',\n avatar: 'images/david_gallacher.gif',\n },\n {\n firstName: 'Shiraz',\n avatar: 'images/shiraz.gif',\n },\n ],\n contentTypes: [\n {\n name: `Renal Videos`,\n route: 'videos',\n content: [\n {\n name: 'Renal Videos',\n type: 'Course',\n content: [\n {\n name: 'Anatomy & Embryology',\n route: 'anatomy-and-embryology',\n id: 'fcc74edc-0e97-4104-9a23-770d383c6303'\n },\n {\n name: 'Fluid & Filtration Physiology',\n route: 'fluid-and-filtration-physiology',\n id: '498e6323-3cbe-473c-afcd-817a1b4967ec'\n },\n {\n name: 'Nephron Transporters',\n route: 'nephron-transporters',\n id: 'dda9deb1-024f-4b8e-8233-a60da2487f73'\n },\n {\n name: 'Renin-Angiotensin-Aldosterone System',\n route: 'renin-angiotensin-aldosterone-system',\n id: '56685d89-b9af-403d-aea2-a51784965c2c'\n },\n {\n name: 'Electrolytes',\n route: 'electrolytes',\n id: '420db2fe-f439-4966-80aa-e5954cdf83cc'\n },\n {\n name: 'Acid-Base Physiology',\n route: 'acid-base-physiology',\n id: 'bcb4658f-5fe9-41ac-82bb-42e7e906cd8b'\n },\n ]\n }\n ]\n },\n {\n name: 'Board Style Questions',\n route: 'board-banks',\n content: [\n {\n name: 'Question Banks',\n content: [\n {\n name: 'Histology',\n id: '279f1705-0d1c-4d3f-9ce3-d0aa0312c3ae',\n route: 'histology'\n },\n {\n name: 'Immunology',\n id: '678e6f56-74c8-4a07-8505-d6ceb6ac5c6a',\n route: 'immunology'\n },\n {\n name: 'Pathology',\n id: '2b4f1c32-a586-426f-8a47-fef7b7784731',\n route: 'pathology'\n },\n {\n name: 'Pathophysiology',\n id: '43608475-65fe-4ddd-9379-7df3fd01e96f',\n route: 'pathophysiology'\n },\n {\n name: 'Pharmacology',\n id: 'c3bbd1d9-bfa3-4078-9430-6b6cb8d305eb',\n route: 'pharmacology'\n },\n ]\n }\n ]\n },\n {\n name: 'Nephro Bites',\n route: 'qbanks',\n content: [\n {\n name: 'Question Banks',\n content: [\n {\n name: 'Anatomy & Embryology',\n route: 'anatomy-and-embryology',\n id: '97fc58bf-2611-4c16-b25d-089e2ae25f04'\n },\n {\n name: 'Fluid & Filtration Physiology',\n route: 'fluid-and-filtration-physiology',\n id: 'a1f4f8ae-9642-41ab-87ac-be86272cd7b7'\n },\n {\n name: 'Nephron Transporters',\n route: 'nephron-transporters',\n id: '69118396-9b27-4370-b1f0-d4340ac4a03c'\n },\n {\n name: 'Renin-Angiotensin-Aldosterone System',\n route: 'renin-angiotensin-aldosterone-system',\n id: '718f6295-a0d2-4411-a838-8b4a0e9264c1'\n },\n {\n name: 'Electrolytes',\n route: 'electrolytes',\n id: '00554e94-ae10-42c8-92b4-4188d9a418c9'\n },\n ]\n }\n ]\n }\n ]\n },\n {\n name: 'Gastroenterology',\n route: 'gastroenterology',\n section: 'step1',\n tagIds: ['bfb4f691-60c1-45f1-a2c5-d9cf67e3d927', '7eea0976-b3bb-4b5b-ad09-250e02ea8cfb'],\n themePalette: colors.brandPalette.indigo,\n questionCount: 0,\n videoLessonCount: 23,\n classroomDescription: `All the high-yield GI concepts you need to know in one place. Watch the videos and answer the practice questions to ace this section on test day!`,\n educators: [\n {\n firstName: 'David',\n avatar: 'images/david_cornwell.gif',\n },\n {\n firstName: 'Christian',\n avatar: 'images/christian_drkulec.gif',\n },\n {\n firstName: 'Toby',\n avatar: 'images/toby_mathew.gif',\n },\n ],\n contentTypes: [\n {\n name: `GI Videos`,\n route: 'videos',\n content: [\n {\n name: 'GI Videos',\n type: 'Course',\n content: [\n {\n name: 'Visceral Anatomy',\n route: 'visceral-anatomy',\n id: 'ba824be3-b868-4bdf-8881-9951f28b231c'\n },\n {\n name: 'Non-visceral Anatomy',\n route: 'non-visceral-anatomy',\n id: 'd208fbc7-4d32-4d05-87b9-db5cae3da5b1'\n },\n {\n name: 'Physiology',\n route: 'physiology',\n id: 'e4c3e7be-cc1d-4750-94f2-278f074cb498'\n },\n ]\n }\n ]\n },\n {\n name: 'Board Style Questions',\n route: 'board-banks',\n content: [\n {\n name: 'Question Banks',\n content: [\n {\n name: 'Biochemistry',\n id: '98d2e9e3-4ae1-4b95-bb4c-1f4511482cc6',\n route: 'biochemistry'\n },\n {\n name: 'Microbiology',\n id: '71b4860f-b4aa-4f17-91e3-6336e7daf595',\n route: 'microbiology'\n },\n {\n name: 'Pathology',\n id: 'c2651167-04fe-4367-a949-f8211492ab87',\n route: 'pathology'\n },\n {\n name: 'Pathophysiology',\n id: '90fc5923-021e-4694-8e87-24afcee361e7',\n route: 'pathophysiology'\n },\n {\n name: 'Pharmacology',\n id: '6e0925a7-f99e-478c-95e5-a0005676ac54',\n route: 'pharmacology'\n },\n ]\n }\n ]\n },\n {\n name: 'Gastro Bites',\n route: 'qbanks',\n content: [\n {\n name: 'Question Banks',\n content: [\n {\n name: 'Visceral Anatomy',\n route: 'visceral-anatomy',\n id: '61fdfbdc-b7f6-4f11-9e8c-ba320af93b67'\n },\n {\n name: 'Non-visceral Anatomy',\n route: 'non-visceral-anatomy',\n id: '9a1d43b3-ac71-4a3e-a1d1-13c51f663e17'\n }\n ]\n }\n ]\n }\n ]\n },\n ],\n studyTools: [\n {\n name: 'Bookmarks',\n route: 'bookmarks',\n themePalette: colors.brandPalette.royal,\n showOnHome: true,\n },\n ],\n meta: {\n siteTitle: 'Med School Bootcamp',\n subjectIds: [...grossAnatomyClassrooms, ...step1Classrooms].reduce((acc, {tagIds, tagId}) => tagId ? [...acc, tagId] : tagIds ? [...acc, ...tagIds] : acc, [])\n }\n};\nfunction getMedSchoolConfigObject(classroom, chapter, contentSlug) {\n}\n\nconst anatomyConfigReducer = () => {}\n\nexport {getMedSchoolConfigObject, anatomyConfigReducer};\nexport default config;\n","import {anatomyConfigReducer} from './msb';\nimport ChemistryConfig from './chemistry';\nimport DATConfig from './json/dat.json';\nimport {colors} from '../styles/theme';\n\nconst generalChemistryClassroom = {...DATConfig.classrooms.find(({name}) => name === 'General Chemistry')};\nconst generalChemistryClassroomContentTypes = generalChemistryClassroom.contentTypes.filter(({name}) => !['Practice Tests', 'Plus Tests', 'Strategy'].includes(name));\n\ngeneralChemistryClassroom.contentTypes = [\n generalChemistryClassroomContentTypes[1], // Mike's videos\n generalChemistryClassroomContentTypes[0], // QBs\n { // Worksheets\n ...generalChemistryClassroomContentTypes[2],\n content: [{\n name: 'Downloads',\n content: generalChemistryClassroomContentTypes[2]?.content[0].content?.filter(({name}) => !['General Chemistry Lab Techniques'].includes(name))\n }]\n },\n];\n\ngeneralChemistryClassroom.classroomDescription = 'Everything around us is made of chemicals. Let’s learn how we interact with it. Start studying with Dr. Mike’s Videos, and progress on to the Question Banks.';\ngeneralChemistryClassroom.icon = 'icons/chemistry/gc.png';\n\nconst ocReactionBites = DATConfig.classrooms.find(({name}) => name === 'Organic Chemistry')?.contentTypes.find(({name}) => name === 'Reaction Bites');\nconst organicChemistryClassrooms = ChemistryConfig.reduce((acc, {name: classroomName, route: classroomRoute, chapters}) => {\n const {videoBanks, qbanks} = chapters.reduce((acc, {name, route, questionBankIds, videoLessonId}, chapterIndex) => {\n return {\n videoBanks: videoLessonId ? [...acc.videoBanks, {id: videoLessonId, classroomName, route, name}] : acc.videoBanks,\n qbanks: questionBankIds ? [...acc.qbanks, ...questionBankIds.map(id => ({id, name, route: `bank-${chapterIndex+1}`}))] : acc.qbanks\n }\n }, {videoBanks: [], qbanks: []})\n\n const qbanksTab = acc[1];\n qbanksTab?.content[0].content.push(...qbanks);\n const videosTab = acc[0];\n videosTab?.content[0].content.push(...videoBanks);\n\n return acc;\n }, [\n {\n name: 'Mike\\'s Videos',\n route: 'videos',\n content: [\n {\n name: 'Videos',\n type: 'Course',\n content: [\n ]\n }\n ]\n },\n {\n name: `Question Banks`,\n route: 'qbanks',\n type: 'Question Bank',\n content: [\n {\n name: 'Question Banks',\n content: [\n ]\n }\n ]\n },\n ocReactionBites,\n {\n name: 'Worksheets',\n // icon: ,\n route: 'downloads',\n content: [\n {\n name: 'Downloads',\n content: [\n {\n \"name\": \"Bootcamp OC Reactions Sheet\",\n description: \"A big part of Organic Chemistry is knowing the reactions. Download the Bootcamp OC Reactions Sheet below, study it, and practice with the Reaction Qbank!\",\n \"route\": \"https://drive.google.com/file/d/15XmSS5e8_g5F8EBnJ3b4twekmq_J2Ktp/view\",\n },\n ]\n }\n ]\n }\n ]\n);\n\n\nconst config = {\n classrooms: [\n generalChemistryClassroom,\n {\n name: 'Organic Chemistry',\n tagIds: ['13925cee-9aa5-4ddd-9a82-7e65274ef211', '1a0ba62c-1c67-45ef-a811-245a6ddcedd4'],\n route: 'organic-chemistry',\n themePalette: colors.brandPalette.orange,\n classroomDescription: 'Dr. Mike is going to make organic chemistry easy. Study Dr. Mike’s Videos and move on to the Question Banks to ace this class',\n questionCount: 328,\n icon: 'icons/chemistry/oc.png',\n educators: [\n {\n firstName: 'Dr. Mike',\n avatar: 'images/mike.png',\n }\n ],\n contentTypes: organicChemistryClassrooms\n },\n ],\n studyTools: [\n {\n name: 'Bookmarks',\n route: 'bookmarks',\n themePalette: colors.brandPalette.royal,\n showOnHome: true,\n },\n ],\n meta: {\n siteTitle: 'Chemistry Bootcamp',\n subjectIds: ['1a0ba62c-1c67-45ef-a811-245a6ddcedd4', '13925cee-9aa5-4ddd-9a82-7e65274ef211', 'fa72381b-e2c2-4e46-a113-135220a010b6'],\n }\n}\n\nexport default config;\n","/* eslint-disable */\n// WARNING: DO NOT EDIT. This file is automatically generated by AWS Amplify. It will be overwritten.\n\nconst awsmobile = {\n \"aws_project_region\": \"us-east-1\",\n \"aws_cognito_identity_pool_id\": \"us-east-1:68b66c72-c507-413c-aedd-19ea4c61d767\",\n \"aws_cognito_region\": \"us-east-1\",\n \"aws_user_pools_id\": \"us-east-1_xyVDhrmBL\",\n \"aws_user_pools_web_client_id\": \"3vvv1kugsv5vrb7ngci2vhdtt\",\n \"oauth\": {},\n \"aws_cognito_username_attributes\": [],\n \"aws_cognito_social_providers\": [],\n \"aws_cognito_signup_attributes\": [\n \"EMAIL\"\n ],\n \"aws_cognito_mfa_configuration\": \"OPTIONAL\",\n \"aws_cognito_mfa_types\": [\n \"SMS\",\n \"TOTP\"\n ],\n \"aws_cognito_password_protection_settings\": {\n \"passwordPolicyMinLength\": 8,\n \"passwordPolicyCharacters\": []\n },\n \"aws_cognito_verification_mechanisms\": [\n \"EMAIL\"\n ],\n \"aws_appsync_graphqlEndpoint\": \"https://i75lg2i6nncdvinozslpvnlq5y.appsync-api.us-east-1.amazonaws.com/graphql\",\n \"aws_appsync_region\": \"us-east-1\",\n \"aws_appsync_authenticationType\": \"AWS_IAM\",\n \"aws_cloud_logic_custom\": [\n {\n \"name\": \"tbcPublicAPI\",\n \"endpoint\": \"https://c0rwwjyoma.execute-api.us-east-1.amazonaws.com/tbc\",\n \"region\": \"us-east-1\"\n },\n {\n \"name\": \"webflow\",\n \"endpoint\": \"https://9j6zqh6xm3.execute-api.us-east-1.amazonaws.com/tbc\",\n \"region\": \"us-east-1\"\n }\n ],\n \"aws_user_files_s3_bucket\": \"testtube6dca237224ff44ca973cd2a6dfb779e3-tbc\",\n \"aws_user_files_s3_bucket_region\": \"us-east-1\"\n};\n\n\nexport default awsmobile;\n","var map = {\n\t\"./animations/FinishedDWUAnimation\": 264,\n\t\"./animations/FinishedDWUAnimation.json\": 264,\n\t\"./animations/hourglass\": 684,\n\t\"./animations/hourglass.json\": 684,\n\t\"./educators/adam.gif\": 1154,\n\t\"./educators/akmal_shahzad.png\": 1155,\n\t\"./educators/alex_takshyn.png\": 1156,\n\t\"./educators/alexa_turpin.jpeg\": 1157,\n\t\"./educators/alexus_foster.jpeg\": 1158,\n\t\"./educators/allie_wilk.png\": 1159,\n\t\"./educators/anvin_thomas.jpeg\": 1160,\n\t\"./educators/ari.gif\": 91,\n\t\"./educators/ari.png\": 1161,\n\t\"./educators/aubrey_leaser.jpeg\": 1162,\n\t\"./educators/chris.jpeg\": 1163,\n\t\"./educators/cortney_olejniczak.png\": 1164,\n\t\"./educators/crysta_bliss.png\": 1165,\n\t\"./educators/david_nauheim.png\": 1166,\n\t\"./educators/elaine_chen.jpg\": 1167,\n\t\"./educators/emily_gagne.jpeg\": 1168,\n\t\"./educators/emily_giddings.jpeg\": 239,\n\t\"./educators/gabby_ciancimino.png\": 1169,\n\t\"./educators/gabriella_alagha.png\": 1170,\n\t\"./educators/garrett_schick.png\": 1171,\n\t\"./educators/hannah_riga.png\": 1172,\n\t\"./educators/jamie_larmie.png\": 1173,\n\t\"./educators/joel.gif\": 1174,\n\t\"./educators/joel.png\": 1175,\n\t\"./educators/john.gif\": 1176,\n\t\"./educators/lance.gif\": 1177,\n\t\"./educators/lauren_james.png\": 1178,\n\t\"./educators/lera_osullivan.png\": 1179,\n\t\"./educators/livianna_gallone.png\": 1180,\n\t\"./educators/lucas_garmo.jpeg\": 1181,\n\t\"./educators/mallory_decampos.png\": 1182,\n\t\"./educators/margaret.gif\": 1183,\n\t\"./educators/michael_cassidy.png\": 1184,\n\t\"./educators/monica.gif\": 1185,\n\t\"./educators/nick_rochester.jpeg\": 1186,\n\t\"./educators/sam_komrower.png\": 1187,\n\t\"./educators/sepehr_saberian.jpeg\": 1188,\n\t\"./educators/stephen.gif\": 1189,\n\t\"./educators/whitney.png\": 1190,\n\t\"./educators/zach-s.png\": 1191,\n\t\"./fonts/proxima-nova/Proxima-Nova-Bold-It.ttf\": 1192,\n\t\"./fonts/proxima-nova/Proxima-Nova-Bold.ttf\": 1193,\n\t\"./fonts/proxima-nova/Proxima-Nova-Light-It.ttf\": 1194,\n\t\"./fonts/proxima-nova/Proxima-Nova-Light.ttf\": 1195,\n\t\"./fonts/proxima-nova/Proxima-Nova-Reg-It.ttf\": 1196,\n\t\"./fonts/proxima-nova/Proxima-Nova-Reg.ttf\": 1197,\n\t\"./fonts/proxima-nova/proxima-nova.css\": 682,\n\t\"./fonts/proxima-nova/proximanova-black.WOFF\": 1198,\n\t\"./fonts/proxima-nova/proximanova-bold.WOFF\": 1199,\n\t\"./fonts/proxima-nova/proximanova-extrabold.WOFF\": 1200,\n\t\"./fonts/proxima-nova/proximanova-light.WOFF\": 1201,\n\t\"./fonts/proxima-nova/proximanova-medium.WOFF\": 1202,\n\t\"./fonts/proxima-nova/proximanova-regular.WOFF\": 1203,\n\t\"./fonts/proxima-nova/proximanova-regular.ttf\": 1204,\n\t\"./fonts/proxima-nova/proximanova-semibold.WOFF\": 1205,\n\t\"./fonts/proxima-nova/proximanova-thin.WOFF\": 1206,\n\t\"./icons\": 477,\n\t\"./icons/\": 1207,\n\t\"./icons/Calendar-gold.svg\": 1208,\n\t\"./icons/Home/Biology.png\": 1209,\n\t\"./icons/Home/GeneralChemistry.png\": 1210,\n\t\"./icons/Home/OrganicChemistry.png\": 1211,\n\t\"./icons/Home/PerceptualAbility.png\": 1212,\n\t\"./icons/Home/Physics.png\": 1213,\n\t\"./icons/Home/QuantitativeReasoning.png\": 1214,\n\t\"./icons/Home/ReadingComprehension.png\": 1215,\n\t\"./icons/Home/cardio.png\": 1216,\n\t\"./icons/Home/embryo.png\": 1217,\n\t\"./icons/Home/histo.png\": 1218,\n\t\"./icons/Home/neck.png\": 1219,\n\t\"./icons/Home/neuro.png\": 1220,\n\t\"./icons/MasteryIcon/bookmark-icon.svg\": 1221,\n\t\"./icons/MasteryIcon/learning-new.svg\": 486,\n\t\"./icons/MasteryIcon/learning.svg\": 1222,\n\t\"./icons/MasteryIcon/mastered-new.svg\": 487,\n\t\"./icons/MasteryIcon/mastered.svg\": 1223,\n\t\"./icons/MasteryIcon/reviewing-new.svg\": 488,\n\t\"./icons/MasteryIcon/reviewing.svg\": 1224,\n\t\"./icons/MasteryIcon/untagged.svg\": 489,\n\t\"./icons/SquaredMasteryIcon/MasteryIcon/bookmarked.png\": 490,\n\t\"./icons/SquaredMasteryIcon/MasteryIcon/learning.png\": 491,\n\t\"./icons/SquaredMasteryIcon/MasteryIcon/learning.svg\": 1225,\n\t\"./icons/SquaredMasteryIcon/MasteryIcon/mastered.png\": 492,\n\t\"./icons/SquaredMasteryIcon/MasteryIcon/mastered.svg\": 1226,\n\t\"./icons/SquaredMasteryIcon/MasteryIcon/reviewing.png\": 493,\n\t\"./icons/SquaredMasteryIcon/MasteryIcon/reviewing.svg\": 1227,\n\t\"./icons/SquaredMasteryIcon/MasteryIcon/untagged-selected.png\": 494,\n\t\"./icons/SquaredMasteryIcon/MasteryIcon/untagged-selected.svg\": 1228,\n\t\"./icons/SquaredMasteryIcon/MasteryIcon/untagged.png\": 399,\n\t\"./icons/SquaredMasteryIcon/MasteryIcon/untagged.svg\": 1229,\n\t\"./icons/Sun-gold.svg\": 1230,\n\t\"./icons/Sun.svg\": 1231,\n\t\"./icons/angleranking-icon-grayscale.svg\": 1232,\n\t\"./icons/arm.svg\": 1233,\n\t\"./icons/bio.svg\": 1234,\n\t\"./icons/cardio.svg\": 1235,\n\t\"./icons/checkmark-outline.svg\": 1236,\n\t\"./icons/checkmark.svg\": 1237,\n\t\"./icons/chemistry/gc.png\": 495,\n\t\"./icons/chemistry/oc.png\": 496,\n\t\"./icons/cubecounting-icon-grayscale.svg\": 1238,\n\t\"./icons/dat/biology.png\": 497,\n\t\"./icons/dat/general-chemistry.png\": 498,\n\t\"./icons/dat/organic-chemistry.png\": 499,\n\t\"./icons/dat/perceptual-ability.png\": 500,\n\t\"./icons/dat/quantitative-reasoning.png\": 501,\n\t\"./icons/dat/reading-comprehension.png\": 502,\n\t\"./icons/desktop/Home/desktop/Cards.svg\": 1239,\n\t\"./icons/donut.png\": 1240,\n\t\"./icons/embryo.svg\": 1241,\n\t\"./icons/gc-logo.svg\": 1242,\n\t\"./icons/grid-icon.svg\": 1243,\n\t\"./icons/highlight_icon.png\": 503,\n\t\"./icons/histo.svg\": 1244,\n\t\"./icons/holepunching-icon-grayscale.svg\": 1245,\n\t\"./icons/home.svg\": 1246,\n\t\"./icons/inbde/anatomy_physiology.png\": 329,\n\t\"./icons/inbde/biology-and-biopathology.svg\": 1247,\n\t\"./icons/inbde/biomaterials.svg\": 1248,\n\t\"./icons/inbde/case-sets.svg\": 1249,\n\t\"./icons/inbde/development-structure-function.svg\": 1250,\n\t\"./icons/inbde/ethics-and-behavioral-sciences.svg\": 1251,\n\t\"./icons/inbde/fields_of_dentistry.png\": 330,\n\t\"./icons/inbde/genetic-and-developmental-diseases.svg\": 1252,\n\t\"./icons/inbde/immunology-and-oral-health.svg\": 1253,\n\t\"./icons/inbde/medicine.png\": 331,\n\t\"./icons/inbde/microbiology-and-micropathology.svg\": 1254,\n\t\"./icons/inbde/oral_pathology.png\": 332,\n\t\"./icons/inbde/patient_management.png\": 333,\n\t\"./icons/inbde/pharmacology.png\": 334,\n\t\"./icons/inbde/pharmacology.svg\": 1255,\n\t\"./icons/inbde/research.png\": 335,\n\t\"./icons/inbde/research.svg\": 1256,\n\t\"./icons/inbde/simulation_exam.png\": 504,\n\t\"./icons/inbde/systemic-pathology.svg\": 1257,\n\t\"./icons/index\": 477,\n\t\"./icons/index.js\": 477,\n\t\"./icons/keyholes.png\": 1258,\n\t\"./icons/logo/dat-logo.png\": 505,\n\t\"./icons/logo/white_star.png\": 506,\n\t\"./icons/logo/white_text.png\": 507,\n\t\"./icons/mcat/book.png\": 508,\n\t\"./icons/mcat/text.png\": 685,\n\t\"./icons/msb/anatomy.png\": 336,\n\t\"./icons/msb/biostatistics.png\": 509,\n\t\"./icons/msb/blood.png\": 510,\n\t\"./icons/msb/brain.png\": 400,\n\t\"./icons/msb/embryo.png\": 511,\n\t\"./icons/msb/endo.png\": 512,\n\t\"./icons/msb/genetics.png\": 513,\n\t\"./icons/msb/hair.png\": 514,\n\t\"./icons/msb/heart.png\": 337,\n\t\"./icons/msb/histo.png\": 515,\n\t\"./icons/msb/intestine.png\": 516,\n\t\"./icons/msb/lung.png\": 517,\n\t\"./icons/msb/microbio.png\": 518,\n\t\"./icons/msb/nephro.png\": 519,\n\t\"./icons/msb/pharm.png\": 520,\n\t\"./icons/msb/psych.png\": 521,\n\t\"./icons/msb/virus.png\": 522,\n\t\"./icons/muscle.png\": 1259,\n\t\"./icons/musculoskeletal.png\": 523,\n\t\"./icons/nclex/AdultHealth.png\": 112,\n\t\"./icons/nclex/ChildHealth.png\": 120,\n\t\"./icons/nclex/CriticalCare.png\": 168,\n\t\"./icons/nclex/FirstAid.png\": 265,\n\t\"./icons/nclex/Fundamentals.png\": 141,\n\t\"./icons/nclex/Heart.png\": 1260,\n\t\"./icons/nclex/ManagementofCare.png\": 142,\n\t\"./icons/nclex/MaternalandNewbornHealth.png\": 121,\n\t\"./icons/nclex/MentalHealth.png\": 122,\n\t\"./icons/nclex/Mouth.png\": 1261,\n\t\"./icons/nclex/Pacifier.png\": 1262,\n\t\"./icons/nclex/Pharmacology.png\": 150,\n\t\"./icons/nclex/Play.png\": 273,\n\t\"./icons/nclex/Readiness.png\": 338,\n\t\"./icons/nclex/Statistics.png\": 1263,\n\t\"./icons/nclex/Stethoscope.png\": 524,\n\t\"./icons/nclex/Sun.png\": 1264,\n\t\"./icons/nclex/Tooth.png\": 1265,\n\t\"./icons/nclex/document.png\": 525,\n\t\"./icons/neck.svg\": 1266,\n\t\"./icons/neuro.svg\": 1267,\n\t\"./icons/oc-logo.svg\": 1268,\n\t\"./icons/omm.png\": 1269,\n\t\"./icons/pat-icon.svg\": 1270,\n\t\"./icons/patternfolding-icon-grayscale.svg\": 1271,\n\t\"./icons/pelvis.svg\": 1272,\n\t\"./icons/phys-logo.svg\": 1273,\n\t\"./icons/pubhealthsci.png\": 526,\n\t\"./icons/qr.svg\": 1274,\n\t\"./icons/rc.svg\": 1275,\n\t\"./icons/reviews.svg\": 1276,\n\t\"./icons/select-arrows.svg\": 1277,\n\t\"./icons/tfevisualizer-icon-grayscale.svg\": 1278,\n\t\"./icons/tooth.svg\": 1279,\n\t\"./icons/uterus.png\": 1280,\n\t\"./icons/womb.png\": 527,\n\t\"./images/albert_chen.png\": 1281,\n\t\"./images/aleksandra_dagunts.png\": 1282,\n\t\"./images/alex_bergsman.gif\": 1283,\n\t\"./images/andrew_stone.jpeg\": 1284,\n\t\"./images/angela.png\": 1285,\n\t\"./images/ankit_shah.jpeg\": 1286,\n\t\"./images/appstore.png\": 686,\n\t\"./images/ariel_mayer.jpg\": 1287,\n\t\"./images/ariella.jpeg\": 1288,\n\t\"./images/brandonmuncan.gif\": 1289,\n\t\"./images/brianna.gif\": 1290,\n\t\"./images/brooke_nelson.gif\": 1291,\n\t\"./images/caitlin_tran.jpeg\": 1292,\n\t\"./images/carly.png\": 1293,\n\t\"./images/chris_durland.png\": 1294,\n\t\"./images/christian_drkulec.gif\": 1295,\n\t\"./images/colin_berger.png\": 1296,\n\t\"./images/colingustus.jpeg\": 528,\n\t\"./images/daniel.jpeg\": 1297,\n\t\"./images/dat-performance.png\": 529,\n\t\"./images/david_cornwell.gif\": 1298,\n\t\"./images/david_gallacher.gif\": 1299,\n\t\"./images/emma.gif\": 1300,\n\t\"./images/flora.png\": 1301,\n\t\"./images/generators/angleranking-icon.png\": 1302,\n\t\"./images/generators/cubecounting-icon.png\": 1303,\n\t\"./images/generators/holepunching-icon.png\": 1304,\n\t\"./images/generators/patternfolding-icon.png\": 1305,\n\t\"./images/generators/tfevisualizer-icon.png\": 1306,\n\t\"./images/george_geng.gif\": 1307,\n\t\"./images/haley.png\": 1308,\n\t\"./images/hannah.png\": 530,\n\t\"./images/inbde/anthony_roviso.gif\": 1309,\n\t\"./images/inbde/anthony_roviso.jpeg\": 339,\n\t\"./images/inbde/audra_boehm.gif\": 1310,\n\t\"./images/inbde/audra_boehm.png\": 1311,\n\t\"./images/inbde/christopher_naglieri.gif\": 1312,\n\t\"./images/inbde/christopher_naglieri.png\": 1313,\n\t\"./images/inbde/feifei_huang.gif\": 1314,\n\t\"./images/inbde/feifei_huang.png\": 1315,\n\t\"./images/inbde/jason_berglund.gif\": 1316,\n\t\"./images/inbde/jason_berglund.png\": 1317,\n\t\"./images/inbde/kriti_sood.png\": 1318,\n\t\"./images/inbde/lucia_santos.gif\": 1319,\n\t\"./images/inbde/lucia_santos.png\": 1320,\n\t\"./images/inbde/review_video_background.jpg\": 531,\n\t\"./images/inbde/ryan_gross.gif\": 1321,\n\t\"./images/inbde/ryan_gross.png\": 1322,\n\t\"./images/inbde/scott_noh.gif\": 1323,\n\t\"./images/inbde/scott_noh.png\": 1324,\n\t\"./images/inbde/victoria_lansdale.gif\": 1325,\n\t\"./images/inbde/victoria_lansdale.png\": 1326,\n\t\"./images/jacobgarcia.gif\": 1327,\n\t\"./images/james_faul.gif\": 1328,\n\t\"./images/jason_budzi.png\": 1329,\n\t\"./images/jia.gif\": 1330,\n\t\"./images/jim.gif\": 1331,\n\t\"./images/johank.jpeg\": 1332,\n\t\"./images/jonathanhunter.gif\": 1333,\n\t\"./images/joshc.gif\": 1334,\n\t\"./images/kathak.gif\": 1335,\n\t\"./images/katheriner.gif\": 1336,\n\t\"./images/katie.png\": 1337,\n\t\"./images/katie_buerk.gif\": 1338,\n\t\"./images/kelton.png\": 1339,\n\t\"./images/kenneth_li.png\": 1340,\n\t\"./images/kenneth_pham.png\": 1341,\n\t\"./images/kiara.gif\": 1342,\n\t\"./images/kristen_clark.gif\": 1343,\n\t\"./images/lauren.gif\": 1344,\n\t\"./images/logo.svg\": 484,\n\t\"./images/marenda_biggs.jpg\": 1345,\n\t\"./images/masood_mohammed.png\": 1346,\n\t\"./images/matthew_dempsey.png\": 532,\n\t\"./images/matthew_wang.gif\": 1347,\n\t\"./images/medkinza.jpeg\": 1348,\n\t\"./images/mike.png\": 1349,\n\t\"./images/mikechen.gif\": 1350,\n\t\"./images/mikhail_budovich.png\": 1351,\n\t\"./images/myles_melamed.gif\": 1352,\n\t\"./images/olivia_fuson.gif\": 1353,\n\t\"./images/paige_adams.png\": 1354,\n\t\"./images/parker.gif\": 1355,\n\t\"./images/playstore.png\": 687,\n\t\"./images/raheelh.gif\": 1356,\n\t\"./images/saml.jpeg\": 1357,\n\t\"./images/sarah_feltz.png\": 1358,\n\t\"./images/selena.gif\": 1359,\n\t\"./images/shiraz.gif\": 1360,\n\t\"./images/ssg/placeholders/dat.png\": 401,\n\t\"./images/ssg/placeholders/inbde.png\": 533,\n\t\"./images/ssg/placeholders/med-school.png\": 534,\n\t\"./images/ssg/placeholders/mobile.png\": 535,\n\t\"./images/ssg/placeholders/nclex.png\": 536,\n\t\"./images/steffic.jpeg\": 1361,\n\t\"./images/toby_mathew.gif\": 1362,\n\t\"./images/tyler.gif\": 1363,\n\t\"./images/tyler_nelson.gif\": 1364,\n\t\"./images/tylerh.gif\": 1365,\n\t\"./images/wave-partition-mobile.png\": 537,\n\t\"./images/wave-partition.png\": 538,\n\t\"./images/wesson.gif\": 1366,\n\t\"./images/william_adili.jpg\": 1367,\n\t\"./images/winstonc.gif\": 1368,\n\t\"./nclex/arrow.png\": 539,\n\t\"./nclex/correct.png\": 159,\n\t\"./nclex/incorrect.png\": 160,\n\t\"./svg/BootcampLogo.svg\": 1369,\n\t\"./svg/anatomy-background.svg\": 1370,\n\t\"./svg/anatomy-logo.svg\": 1371,\n\t\"./svg/badge.svg\": 1372,\n\t\"./svg/bootcamp_dark_text_logo.png\": 485,\n\t\"./svg/bootcamp_white_text_logo.svg\": 1373,\n\t\"./svg/caret-down.svg\": 1374,\n\t\"./svg/chemistry-background.svg\": 1375,\n\t\"./svg/chemistry-logo.svg\": 1376,\n\t\"./svg/coffee.svg\": 1377,\n\t\"./svg/dailywarmup.svg\": 1378,\n\t\"./svg/feature-questions.svg\": 1379,\n\t\"./svg/feature-schedule.svg\": 1380,\n\t\"./svg/feature-tests.svg\": 1381,\n\t\"./svg/feature-videos.svg\": 1382,\n\t\"./svg/oat-logo.svg\": 1383,\n\t\"./svg/rocket.svg\": 1384,\n\t\"./svg/signature.svg\": 1385,\n\t\"./svg/teambootcamp.svg\": 1386,\n\t\"./svg/title.svg\": 481,\n\t\"./svg/warning.svg\": 1387,\n\t\"./svg/wave-anatomy.svg\": 1388\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 683;","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAhCAYAAAC4JqlRAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAGqSURBVHgB7ZbLTsJAFIbPdCBgKYEaWLDDnezY4iXhKdy40DfAN9A30EfAJ5GEGJa4Q1eYGFAj0WK59AIztjUkRhmnAyWY2C+Z9HL+zPmnM2c6AP8d5Ff40H4pK0ocRFCzyRpPE+EJms122tCt82gsckyAgiDcAUZ4ycdD88rppggLcF1vnSGEtJ297QuWRmIFGo1W3ktOoShJCDBmSpkgQKfOpfK7hsHz41uVUnrk3mOMwTUhyt1tFwghWrfzegMUXR4c7la/a5jDckccjUa8tkjyGYTQNKVQpkDy8+Li3zVg1m6AW4ZfMQzbnVOuTpZj4BchA6ZpczWi1SJkIJWSIWi4BgaDMei6+eO9qiYgHo9Cr6dDJpP0rrY9daoGe8+BGVCUDa+xmCUTSSpkYDQynWaBX7AkgbqZ8K3nGnA3Illg6iUp4EX4uarx3Jhrblm4PRiGBf3+eG4sl0vDsnANuJuKyMYiSvgvCA2EBphliBGpau+mNhpaFVghTANqVq016i3nUIzWY8CltF+oOcfzradO/4RMyUqMcNdAqVS4t0xbm0wILNpC/jQfIaWrFZDLTVIAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","/* eslint-disable */\nmodule.exports = jQuery => jQuery(document).ready(function(jQuery)\n{\n var difficulty = 0; // change to 1 for easy, 2 for very easy\n\tvar g=[];\n\tvar a=[];\n\tvar b=[];\n\tvar p1 = [];\n\tvar p2 = [];\n\tvar c=[];\n\tvar d=[];\n\tvar r=[];\n\tvar m=[];\n\tvar loc =1;\n\tvar total=1;\n\tvar correct=0;\n\tvar incorrect=0;\n\tvar setTime = 30;\n\tvar angleMode = 0;\n\tvar right='';\n\tvar timeon = true;\n\tvar timer = null;\n\tvar sec = setTime;\n\tvar questionStartTime = new Date().getTime();\n\tvar totalTime = 0;\n\tvar totalAnswered = 0;\n\tvar alpha = ['A','B','C','D'];\n\tvar l = [100,100,100,100,100,100,100,100,100,23,100,100,100,100,100,100,100,100,100,100,50,100,100,100,100,33,100,100,100];\n\tjQuery('.grade input[type=radio]').prop('checked', false);\n\tjQuery('.grade input[type=radio]').attr('disabled',false);\n\n\tfunction drawangle(n) {\n\t\tvar temp = [];\n\t\tvar answer = [];\n\t\tvar increment = 0;\n\t\ta[n]=[];\n\t\tb[n]=[];\n\t\tp1[n] = [];\n\t\tp2[n] = [];\n\t\tc[n]=[];\n\t\td[n]=[];\n\t\tm[n]=[];\n\t\tjQuery('#answers').html('');\n\n\t\tvar minRange = 30;\n\t\tvar maxRange = 179;\n\t\tvar maxAdded = 48;\n\n\t\tif (difficulty == 0){\n\t\t\tmaxAdded = 12;\n\t\t}else if (difficulty == 1){\n\t\t\tmaxAdded = 18\n\t\t}\n\n\t\tif (angleMode == 1){\n\t\t\tmaxRange = 89;\n\t\t}else if (angleMode == 2){\n\t\t\tminRange = 95;\n\t\t}\n\n\t\tmaxRange -= maxAdded;\n\n\t\ttemp[0] = randomInt(minRange,maxRange);\n\n\t\tfor (var i=1;i<=3;i++) {\n if (difficulty === 0) {\n increment = randomInt(3,4);\n } else if (difficulty === 1) {\n increment = randomInt(5,6);\n } else {\n increment = randomInt(15,16);\n }\n\t\t\ttemp[i]=temp[i-1]+increment;\n\t\t}\n\t\tvar angle = temp.slice();\n\t\tshuffle(angle);\n\t\tvar variation = randomInt(0,2);\n\t\tvar tempa = [];\n\t\tvar tempb = [];\n\n\t\tfor (i=0;i<=3;i++) {\n\t\t\ta[n][i]=[];\n\t\t\tb[n][i]=[];\n\t\t\tp1[n][i]=[];\n\t\t\tp2[n][i]=[];\n\t\t\tc[n][i]=[];\n\t\t\tvar canvas = document.getElementById('canvas'+(i+1));\n\t\t\tvar ctx = canvas.getContext('2d');\n\t\t\tctx.clearRect(0, 0, 200, 230);\n\n\t\t\tvar index = temp.indexOf(angle[i]);\n\t\t\tanswer[index] = i+1;\n\n\t\t\tvar ax = 0;\n\t\t\tvar ay = 0;\n\t\t\tvar bx = 0;\n\t\t\tvar by = 0;\n\t\t\tif (i<1) {\n\t\t\t\tax = randomInt(40,160);\n\t\t\t\tay = randomInt(40,180);\n\n\t\t\t\tif (ax > 100) {\n\t\t\t\t\tbx = ax/2;\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tbx = ((200-ax)/2)+ax;\n\t\t\t\t}\n\t\t\t\tif (ay > 100) {\n\t\t\t\t\tby = ay/2;\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tby = ((200-ay)/2)+ay;\n\t\t\t\t}\n\t\t\t\ttempa['x'] = ax;\n\t\t\t\ttempa['y'] = ay;\n\t\t\t\ttempb['x'] = bx;\n\t\t\t\ttempb['y'] = by;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvar diff = 0\n\t\t\t\tif (variation == 0) { // all same\n\t\t\t\t\tdiff = randomInt(-3,3);\n\t\t\t\t\tax = tempa['x'] + diff;\n\t\t\t\t\tdiff = randomInt(-3,3);\n\t\t\t\t\tay = tempa['y'] + diff;\n\t\t\t\t\tdiff = randomInt(-3,3);\n\t\t\t\t\tbx = tempb['x'] + diff;\n\t\t\t\t\tdiff = randomInt(-3,3);\n\t\t\t\t\tby = tempb['y'] + diff;\n\t\t\t\t}\n\t\t\t\telse if (variation == 1) { // 2 same, 2 opposite\n\t\t\t\t\tif (i==1) {\n\t\t\t\t\t\tdiff = randomInt(-3,3);\n\t\t\t\t\t\tax = tempa['x'] + diff;\n\t\t\t\t\t\tdiff = randomInt(-3,3);\n\t\t\t\t\t\tay = tempa['y'] + diff;\n\t\t\t\t\t\tdiff = randomInt(-3,3);\n\t\t\t\t\t\tbx = tempb['x'] + diff;\n\t\t\t\t\t\tdiff = randomInt(-3,3);\n\t\t\t\t\t\tby = tempb['y'] + diff;\n\t\t\t\t\t}\n\t\t\t\t\telse if (i==2) {\n\t\t\t\t\t\tax = randomInt(40,160);\n\t\t\t\t\t\tay = randomInt(40,180);\n\n\t\t\t\t\t\tif (ax > 100) {\n\t\t\t\t\t\t\tbx = ax/2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\tbx = ((200-ax)/2)+ax;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (ay > 100) {\n\t\t\t\t\t\t\tby = ay/2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\tby = ((200-ay)/2)+ay;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttempa['x'] = ax;\n\t\t\t\t\t\ttempa['y'] = ay;\n\t\t\t\t\t\ttempb['x'] = bx;\n\t\t\t\t\t\ttempb['y'] = by;\n\t\t\t\t\t}\n\t\t\t\t\telse if (i==3) {\n\t\t\t\t\t\tdiff = randomInt(-3,3);\n\t\t\t\t\t\tax = tempa['x'] + diff;\n\t\t\t\t\t\tdiff = randomInt(-3,3);\n\t\t\t\t\t\tay = tempa['y'] + diff;\n\t\t\t\t\t\tdiff = randomInt(-3,3);\n\t\t\t\t\t\tbx = tempb['x'] + diff;\n\t\t\t\t\t\tdiff = randomInt(-3,3);\n\t\t\t\t\t\tby = tempb['y'] + diff;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tax = randomInt(40,160);\n\t\t\t\t\tay = randomInt(40,180);\n\n\t\t\t\t\tif (ax > 100) {\n\t\t\t\t\t\tbx = ax/2;\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tbx = ((200-ax)/2)+ax;\n\t\t\t\t\t}\n\t\t\t\t\tif (ay > 100) {\n\t\t\t\t\t\tby = ay/2;\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tby = ((200-ay)/2)+ay;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t ctx.beginPath();\n\t\t\tctx.setLineDash([]);\n\t\t\tctx.moveTo(ax,ay);\n\t\t\tctx.lineTo(bx,by);\n\t\t\tctx.stroke();\n\t\t\tvar lindx = randomInt(0,l.length-1);\n\t\t\t//var len = 100;\n\t\t\tvar len = l[lindx];\n\t\t\tvar dx1=ax-bx;\n\t\t\tvar dy1=ay-by;\n\n\t\t\tvar result=Math.atan2(dy1,dx1);\n\t\t\tvar degree = Math.round(180-(result* (180/Math.PI)));\n\n\t\t\tvar theta = ((180+angle[i])-degree) * Math.PI / 180;\n\t\t\tvar dx2 = len * Math.cos(theta);\n\t\t\tvar dy2 = len * Math.sin(theta);\n\n\t\t\tvar cx = ax - dx2;\n\t\t\tvar cy = ay - dy2;\n\n\t\t\tvar newG = -dx1 / dy1;\n\t\t\tvar r1x = ax + 50;\n\t\t\tvar r2x = ax - 50;\n\n\t\t\tvar r1y = ay + (r1x - ax) * newG;\n\t\t\tvar r2y = ay + (r2x - ax) * newG;\n\n\n\t\t\tctx.moveTo(ax,ay);\n\t\t\tctx.lineTo(cx,cy);\n\t\t\tctx.stroke();\n\n\t\t\tctx.clearRect(0, 0,200, 10);\n\t\t\tctx.clearRect(0, 0, 10, 230);\n\t\t\tctx.clearRect(190, 0, 200, 230);\n\t\t\tctx.clearRect(0, 200, 200, 230);\n\n\t\t\tctx.font=\"18px Arial\";\n\t\t\tctx.fillStyle=\"black\";\n\t\t\tctx.fillText((i+1),95,220);\n\n\t\t\ta[n][i]['x']=ax;\n\t\t\ta[n][i]['y']=ay;\n\t\t\tb[n][i]['x']=bx;\n\t\t\tb[n][i]['y']=by;\n\t\t\tp1[n][i]['x']=r1x;\n\t\t\tp1[n][i]['y']=r1y;\n\t\t\tp2[n][i]['x']=r2x;\n\t\t\tp2[n][i]['y']=r2y;\n\t\t\tc[n][i]['x']=cx;\n\t\t\tc[n][i]['y']=cy;\n\t\t\td[n][i]=angle[i];\n\n\t\t}\n\t\tright='';\n\t\tvar choice = choices(answer);\n\t\tshuffle(choice);\n\n\t\tfor (i=0;i<=3;i++) {\n\t\t\tjQuery('#answers').append(alpha[i]+'. '+choice[i]+'
');\n\t\t\tm[n][i]=choice[i];\n\t\t\tif (right==choice[i]) {\n\t\t\t\tr[n]=alpha[i];\n\t\t\t}\n\t\t}\n\n\t}\n\tfunction redrawangle(n) {\n\t\tjQuery('#answers').html('');\n\t\tfor (i=0;i<=3;i++) {\n\t\t\tjQuery('#answers').append(alpha[i]+'. '+m[n][i]+'
');\n\t\t}\n\t\tfor (var i=0;i<=3;i++) {\n\t\t\tvar canvas = document.getElementById('canvas'+(i+1));\n\t\t\tvar ctx = canvas.getContext('2d');\n\t\t\tvar ax = a[n][i]['x'];\n\t\t\tvar ay = a[n][i]['y'];\n\t\t\tvar bx = b[n][i]['x'];\n\t\t\tvar by = b[n][i]['y'];\n\t\t\tvar cx = c[n][i]['x'];\n\t\t\tvar cy = c[n][i]['y'];\n\n\t\t\tvar r1x = p1[n][i]['x'];\n\t\t\tvar r1y = p1[n][i]['y'];\n\t\t\tvar r2x = p2[n][i]['x'];\n\t\t\tvar r2y = p2[n][i]['y'];\n\n\n\t\t\tctx.clearRect(0, 0, 200, 230);\n\t\t ctx.beginPath();\n\t\t\tctx.setLineDash([]);\n\t\t\t//ctx.setLineDash([5, 15]);\n\t\t\tctx.moveTo(ax,ay);\n\t\t\tctx.lineTo(bx,by);\n\t\t\tctx.stroke();\n\t\t\tctx.moveTo(ax,ay);\n\t\t\tctx.lineTo(cx,cy);\n\t\t\tctx.stroke();\n\n\t\t\tctx.font=\"18px Arial\";\n\t\t\tctx.fillStyle=\"black\";\n\t\t\tif (g[loc]!=undefined ) {\n\t\t\t\tctx.fillText((i+1)+' ('+d[n][i]+'°)',75,220);\n\t\t\t\tctx.setLineDash([3, 3]);\n\t\t\t\tctx.moveTo(r1x,r1y);\n\t\t\t\tctx.lineTo(r2x,r2y);\n\t\t\t\tctx.stroke();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tctx.fillText((i+1),95,220);\n\t\t\t}\n\n\t\t\tctx.clearRect(0, 0,200, 10);\n\t\t\tctx.clearRect(0, 0, 10, 230);\n\t\t\tctx.clearRect(190, 0, 200, 230);\n\t\t\tctx.clearRect(0, 200, 200, 230);\n\t\t}\n\t}\n\n\tjQuery('#next').click(function(){\n\t\tjQuery('.grade input[type=radio]').attr('disabled',false);\n\t\tjQuery('.grade div').html('');\n\t\tjQuery('.grade input[type=radio]').prop('checked', false);\n\t\tloc++;\n\t\tjQuery('#location').text(loc);\n\t\tif (timer) {\n\t\t\tclearInterval(timer);\n\t\t\ttimer = null;\n\t\t}\n\t\tquestionStartTime = new Date().getTime();\n\t\tsec = setTime;\n\t\tjQuery('#time-display').text(sec);\n\t\tif (loc>total) {\n\t\t\ttotal=loc;\n\t\t\tjQuery('#total').text(total);\n\t\t\tdrawangle(loc);\n\t\t\tif (timeon==true) {\n\t\t\t\trunTimer();\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (g[loc]!=undefined ) {\n\t\t\t\tckAnswer(r[loc],g[loc]);\n\t\t\t\tif (g[loc]!='') jQuery('[name=answer][value='+g[loc]+']').prop('checked',true);\n\t\t\t\tjQuery('.grade input[type=radio]').attr('disabled',true);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (timeon==true) {\n\t\t\t\t\trunTimer();\n\t\t\t\t}\n\t\t\t}\n\t\t\tredrawangle(loc);\n\t\t}\n\n\n\t});\n\tjQuery('#previous').click(function(){\n\t\tif (loc>1) {\n\t\t\tquestionStartTime = new Date().getTime();\n\t\t\tjQuery('.grade input[type=radio]').attr('disabled',false);\n\t\t\tjQuery('.grade div').html('');\n\t\t\tif (timer) {\n\t\t\t\tclearInterval(timer);\n\t\t\t\ttimer = null;\n\t\t\t}\n\t\t\tsec = setTime;\n\t\t\tjQuery('#time-display').text(sec);\n\t\t\tloc--;\n\t\t\tjQuery('.grade input[type=radio]').prop('checked', false);\n\t\t\tjQuery('#location').text(loc);\n\t\t\tif (g[loc]!=undefined ) {\n\t\t\t\tckAnswer(r[loc],g[loc]);\n\t\t\t\tif (g[loc]!='') jQuery('[name=answer][value='+g[loc]+']').prop('checked',true);\n\t\t\t\tjQuery('.grade input[type=radio]').attr('disabled',true);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (timeon==true) {\n\t\t\t\t\trunTimer();\n\t\t\t\t}\n\t\t\t}\n\t\t\tredrawangle(loc);\n\t\t}\n\t});\n\n\tjQuery('.grade input[type=radio]').click(function(){\n\t\tvar grade = jQuery(this).val();\n\n\t\tg[loc] = grade;\n\t\tjQuery('.grade input[type=radio]').attr('disabled',true);\n\t\tckAnswer(r[loc],grade,1);\n\t\tif (timer) {\n\t\t\tclearInterval(timer);\n\t\t\ttimer = null;\n\t\t}\n\t\tfor (var i=0;i<=3;i++) {\n\t\t\tvar r1x = p1[loc][i]['x'];\n\t\t\tvar r1y = p1[loc][i]['y'];\n\t\t\tvar r2x = p2[loc][i]['x'];\n\t\t\tvar r2y = p2[loc][i]['y'];\n\n\t\t\tvar canvas = document.getElementById('canvas'+(i+1));\n\t\t\tvar ctx = canvas.getContext('2d');\n\t\t\tctx.beginPath();\n\t\t\tctx.setLineDash([3, 3]);\n\t\t\tctx.moveTo(r1x,r1y);\n\t\t\tctx.lineTo(r2x,r2y);\n\t\t\tctx.stroke();\n\n\t\t\tctx.clearRect(0, 0,200, 10);\n\t\t\tctx.clearRect(0, 0, 10, 230);\n\t\t\tctx.clearRect(190, 0, 200, 230);\n\t\t\tctx.clearRect(0, 200, 200, 230);\n\n\t\t\tctx.fillText((i+1)+' ('+d[loc][i]+'°)',75,220);\n\t\t}\n\n\n\t});\n\tjQuery('#time-button').click(function(){\n\t\tif (timeon==true) {\n\t\t\tif(timer) {\n\t\t\t\tclearInterval(timer);\n\t\t\t\ttimer = null;\n\t\t\t}\n\t\t\ttimeon = false;\n\t\t}\n\t\telse {\n\t\t\ttimeon = true;\n\t\t\tif (g[loc]==undefined ) {\n\t\t\t\trunTimer();\n\t\t\t}\n\t\t}\n\t});\n\n\tjQuery('#start-generator').click(function() {\n\t\tdocument.getElementById('generator').style.display='block';\n\t\tdocument.getElementById('introduction').style.display='none';\n\t\trunTimer();\n\t\tquestionStartTime = new Date().getTime();\n\t});\n\n\tjQuery('#game-reset').click(function(){\n\t\tloc =1;\n\t\ttotal=1;\n\t\tcorrect=0;\n\t\tincorrect=0;\n\t\tright='';\n\t\ttimeon = true;\n\t\tif(timer) {\n\t\t\tclearInterval(timer);\n\t\t}\n\t\ttimer = null;\n\t\tsec = setTime;\n\t\tjQuery('#location').text(loc);\n\t\tjQuery('#total').text(total);\n\t\tjQuery('#time-display').text(sec);\n\t\tjQuery('.grade input[type=radio]').prop('checked', false);\n\t\tjQuery('.grade input[type=radio]').attr('disabled',false);\n\t\tjQuery('.grade div').html('');\n\t\tjQuery('#correct').text(0);\n\t\tjQuery('#incorrect').text(0);\n\t\tdrawangle(loc);\n\n\t});\n jQuery('#setdifficulty').change(function() {\n difficulty = parseInt(jQuery(this).val());\n jQuery('#next').click();\n });\n\n\t\tjQuery('#setTimer').change(function() {\n setTime = parseInt(jQuery(this).val());\n\t\t\tsec = setTime;\n\t\t\tjQuery('#time-display').text(sec);\n\t\t\t//jQuery('#next').click();\n });\n\n\t\tjQuery('#setAngleMode').change(function() {\n angleMode = parseInt(jQuery(this).val());\n\t\t\t//jQuery('#next').click();\n });\n\n\tfunction runTimer() {\n\t\ttimer = setInterval(function(){\n\t\t\tsec--;\n\t\t\tif(sec<0) {\n\t\t\t\tclearInterval(timer);\n\t\t\t\ttimer = null;\n\t\t\t\tjQuery('.grade input[type=radio]').attr('disabled',true);\n\t\t\t\t/*\n\t\t\t\tvar array = alpha.slice();\n\t\t\t\tvar index = array.indexOf(r[loc]);\n\t\t\t\tif (index > -1) {\n\t\t\t\t array.splice(index, 1);\n\t\t\t\t}\n\t\t\t\tshuffle(array);\n\t\t\t\tjQuery('[name=answer][value='+array[0]+']').trigger( \"click\" );\n\t\t\t\tjQuery('[name=answer][value='+array[0]+']').prop('checked',true);\n\t\t\t\tckAnswer(r[loc],array[0],1)\n\t\t\t\t*/\n\t\t\t\tg[loc] = '';\n\t\t\t\tckAnswer(r[loc],g[loc],1);\n\t\t\t\tfor (var i=0;i<=3;i++) {\n\t\t\t\t\tvar r1x = p1[loc][i]['x'];\n\t\t\t\t\tvar r1y = p1[loc][i]['y'];\n\t\t\t\t\tvar r2x = p2[loc][i]['x'];\n\t\t\t\t\tvar r2y = p2[loc][i]['y'];\n\n\t\t\t\t\tvar canvas = document.getElementById('canvas'+(i+1));\n\t\t\t\t\tvar ctx = canvas.getContext('2d');\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.setLineDash([3, 3]);\n\t\t\t\t\tctx.moveTo(r1x,r1y);\n\t\t\t\t\tctx.lineTo(r2x,r2y);\n\t\t\t\t\tctx.stroke();\n\n\t\t\t\t\tctx.clearRect(0, 0,200, 10);\n\t\t\t\t\tctx.clearRect(0, 0, 10, 230);\n\t\t\t\t\tctx.clearRect(190, 0, 200, 230);\n\t\t\t\t\tctx.clearRect(0, 200, 200, 230);\n\n\t\t\t\t\tctx.fillText((i+1)+' ('+d[loc][i]+'°)',75,220);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tjQuery('#time-display').text(sec);\n\t\t\t}\n\t\t}, 1000);\n\t}\n\tfunction ckAnswer(r,g,n) {\n\t\ttotalTime += new Date().getTime() - questionStartTime;\n\t\t++totalAnswered;\n\n\t\tvar newAverage = (totalTime / (1000* totalAnswered));\n\t\tnewAverage -= newAverage % 1;\n\n\t\tjQuery('#average-time').text(newAverage);\n\n\t\tif (r==g) {\n\t\t\tjQuery('#grade-'+g).html('');\n\t\t\tif(n==1) {\n\t\t\t\tcorrect++;\n\t\t\t\tjQuery('#correct').text(correct);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tjQuery('#grade-'+g).html('');\n\t\t\tjQuery('#grade-'+r).html('');\n\t\t\tif(n==1) {\n\t\t\t\tincorrect++;\n\t\t\t\tjQuery('#incorrect').text(incorrect);\n\t\t\t}\n\t\t}\n\t}\n\tfunction choices(o){\n\t\tvar c = [];\n\t\tc[0] = o[0]+' - '+o[1]+' - '+o[2]+' - '+o[3];\n\t\tc[1] = o[0]+' - '+o[1]+' - '+o[3]+' - '+o[2];\n\t\tc[2] = o[1]+' - '+o[0]+' - '+o[2]+' - '+o[3];\n\t\tc[3] = o[1]+' - '+o[0]+' - '+o[3]+' - '+o[2];\n\n /**\n *\n * Do random choices\n var possibleChoices = permutation([0,1,2,3]); // generate all possible choice combinations\n var correct = possibleChoices.splice(0,1); // the correct one is always the first, we simply remove it.\n var r = shuffleArray(possibleChoices); // now randomize the full array\n\n\t\tc[0] = o[0]+' - '+o[1]+' - '+o[2]+' - '+o[3];\n\t\tc[1] = o[r[0][0]]+' - '+o[r[0][1]]+' - '+o[r[0][2]]+' - '+o[r[0][3]];\n\t\tc[2] = o[r[1][0]]+' - '+o[r[1][1]]+' - '+o[r[1][2]]+' - '+o[r[1][3]];\n\t\tc[3] = o[r[2][0]]+' - '+o[r[2][1]]+' - '+o[r[2][2]]+' - '+o[r[2][3]];\n */\n\n /**\n * Sort choice combinations into categories\n *\n * - difficult (more positions are correct)\n * - medium (one position is correct)\n * - easy (the rest, random)\n *\n * Examples of difficult:\n * - start with a small angle *and* ends with a big angle\n *\n * if (pos[0] = 1 or 2) and (pos[3] = 3 or 4) = difficult\n *\n * 1,2,3,4 (correct!)\n * 1,3,2,4\n *\n * 1,2,4,3\n * 1,4,2,3\n *\n * 2,1,3,4\n * 2,3,1,4\n *\n * 2,1,4,3\n * 2,4,1,3\n *\n *\n * Medium:\n * - start with either a small angle or end with a big angle\n *\n * if (pos[0] = 1 or 2) or (pos[3] = 3 or 4) = difficult\n *\n * 1,3,4,2\n * 1,4,3,2\n *\n * 2,4,3,1\n * 2,4,3,1\n *\n * 4,1,2,3\n * 4,2,1,3\n *\n * 3,1,2,4\n * 3,2,1,4\n *\n * Easy:\n * - combinations which don't include the correct answers in start or end position\n * .. the rest\n *\n * 4,3,2,1\n * 3,4,1,2\n *\n */\n\n var possibleChoices = permutation([0,1,2,3]); // generate all possible choice combinations\n var correct = possibleChoices.splice(0,1); // the correct one is always the first, we simply remove it.\n\n var a;\n var z;\n var cset;\n var difficult = [];\n var easy = [];\n // iterate over the choice combinations and sort them into a difficult and easy list\n for (var i = 0; i < possibleChoices.length; i++) {\n cset = possibleChoices[i];\n a = cset[0];\n z = cset[3];\n if ((a === 0 || a === 1) && (z === 2 || z === 3)) {\n difficult.push(cset);\n } else if ((a === 0 || a === 1) || (z === 2 || z === 3)) {\n easy.push(cset);\n } else {\n easy.push(cset);\n }\n }\n\n difficult = shuffleArray(difficult);\n easy = shuffleArray(easy);\n\n\t\tc[0] = o[0]+' - '+o[1]+' - '+o[2]+' - '+o[3];\n\t\tc[1] = o[difficult[0][0]]+' - '+o[difficult[0][1]]+' - '+o[difficult[0][2]]+' - '+o[difficult[0][3]];\n\t\tc[2] = o[difficult[1][0]]+' - '+o[difficult[1][1]]+' - '+o[difficult[1][2]]+' - '+o[difficult[1][3]];\n\t\tc[3] = o[easy[0][0]]+' - '+o[easy[0][1]]+' - '+o[easy[0][2]]+' - '+o[easy[0][3]];\n\n\t\tright = c[0];\n\t\treturn c;\n\t}\n\tdrawangle(loc);\n});\n\n\nfunction randomInt(min,max)\n{\n return Math.floor(Math.random()*(max-min+1)+min);\n}\nfunction shuffle(o){\n for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);\n return o;\n}\n\n/**\n * Randomize array element order in-place.\n * Using Durstenfeld shuffle algorithm.\n */\nfunction shuffleArray(array) {\n for (var i = array.length - 1; i > 0; i--) {\n var j = Math.floor(Math.random() * (i + 1));\n var temp = array[i];\n array[i] = array[j];\n array[j] = temp;\n }\n return array;\n}\n\nfunction permutation(a){\n var res = [];\n var restA;\n var rest;\n var j;\n var i;\n for(i=0; i $(document).ready(function() {\n var BlankSquare, BlankTriangle, BlankTriangleInv1, BlankTriangleInv2, BlankTriangleInv3, Choice, Coffin, DIMENSION,\n DIMENSION0, DblMarkSquare, DiagonalRect, DieFace, El, ElInv, Face, Fold, FourSquare, HexSection, HexSection10,\n HexSection2, HexSection3, HexSection4, HexSection5, HexSection6, HexSection7, HexSection8, HexSection9, HorizRect,\n HorizRectFour, HorizRectThree, HorseShoe, HorseShoeSideways, InnerRect, InnerTriangle, InnerTriangleInv, Normal, OFFSET,\n OPTIONS, Pattern, Pentagon, PentagonInv, Point, ProtoRect, Queue, SECONDS, SQ3, SoftL, SoftLInv, SoftLInv2, SoftLSide,\n Spin, Square, SquareDiamond, SquareFor12, StripedRect, StripedSquare, Structure1, Structure10, Structure11, Structure12,\n Structure13, Structure14, Structure15, Structure16, Structure17, Structure18, Structure19, Structure2, Structure20,\n Structure21, Structure22, Structure23, Structure24, Structure25, Structure3, Structure4, Structure5, Structure6,\n Structure7, Structure8, Structure9, TippedHexSection, TippedHexSectionInv, TippedRect, Triangle, TriangleSideways,\n TwoPentagon, TwoSquare, VertPentagon, VertPentagonInv, VertRect, VertRectFour, VertRectThree, ZInverted, ZShape,\n addControls, animDir, animOn, animPause, animloop, answerGrades, answerValues, clearCanvas, clearExplication,\n clearGrades, clearRadios, compareFaces, currentPage, erasePage, folder, gameReset, getBounds, getCtx, getScaling,\n getStructure, newPage, pagePosition, pauseAction, prevAction, nextAction, povs, previousPage, radioChangeEvent, randInt, render, restoreCurrentPage,\n revealExplication, reverseAction, sanitizeCanvases, serializedPages, setGrades, setPageNumber, shuffle, startTimer,\n tallyScoreboard, testing, timeChangeEvent, timeLeft, timeOut, timeReset, timer, timerOn, startGenerator,\n __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n __hasProp = {}.hasOwnProperty,\n __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n testing = false;\n\n var rotateCopy, firstCanvas;\n var mouseUp, mouseDown, mouseMove;\n var touchStart, touchMove, touchEnd;\n var dragMode = false;\n\n var posX, posY;\n var cursorX, cursorY, intervalFunction, updateMove;\n\n DIMENSION0 = 260;\n\n DIMENSION = 155;\n\n OFFSET = 8;\n\n OPTIONS = 4;\n\n SECONDS = 60;\n\n SQ3 = Math.sqrt(3);\n\n animOn = false;\n\n animDir = true;\n\n animPause = {};\n\n timerOn = false;\n\n timeLeft = SECONDS;\n\n timer = {};\n\n serializedPages = [];\n\n pagePosition = 0;\n\n currentPage = {};\n\n answerGrades = [\"#grade-A\", \"#grade-B\", \"#grade-C\", \"#grade-D\"];\n\n answerValues = [\"A\", \"B\", \"C\", \"D\"];\n\n povs = [[-80, -70, -200], [80, -70, -200], [80, 70, -200], [-80, 70, -200]];\n\n var questionStartTime = new Date().getTime();\n\tvar totalTime = 0;\n\tvar totalAnswered = 0;\n\n mouseMove = function(event){\n\t\tif (!dragMode){\n\t\t\treturn;\n\t\t}\n\n\t\tcursorX = event.pageX;\n\t\tcursorY = event.pageY;\n updateMove();\n\t}\n\n mouseDown = function(e) {\n\t\tif (dragMode || currentPage.answer == 'z'){\n\t\t\treturn;\n\t\t}\n\n cursorX = e.pageX;\n cursorY = e.pageY;\n\t\tposX = cursorX;\n\t\tposY = cursorY;\n\n\t\tdragMode = true;\n if (!rotateCopy){\n rotateCopy = currentPage.workingCopy.clone();\n }\n\t}\n\n mouseUp = function(e){\n\t\tdragMode = false;\n\t}\n\n touchEnd = function(e){\n\t\tdragMode = false;\n\t}\n\n\ttouchMove = function(e){\n\t\tif (!dragMode){\n\t\t\treturn;\n\t\t}\n\n\t\tconst touch = e.touches[0] || e.changedTouches[0];\n cursorX = touch.pageX;\n cursorY = touch.pageY;\n\n updateMove();\n\t}\n\n\ttouchStart = function(e) {\n if (dragMode || currentPage.answer == 'z'){\n\t\t\treturn;\n\t\t}\n\n const touch = e.touches[0] || e.changedTouches[0];\n posX = touch.pageX;\n posY = touch.pageY;\n\n cursorX = posX;\n cursorY = posY;\n\n\t\tdragMode = true;\n if (!rotateCopy){\n rotateCopy = currentPage.workingCopy.clone();\n }\n\t}\n\n updateMove = function(){\n const xDiff = cursorX - posX;\n\t\tconst yDiff = cursorY - posY;\n\n\t\tposX = cursorX;\n\t\tposY = cursorY;\n\n\t\tif (Math.abs(xDiff) + Math.abs(yDiff) == 0){\n\t\t\treturn;\n\t\t}\n\n let angle;\n angle = -yDiff*Math.PI;\n if (angle){\n rotateCopy.rotate(100, 500, -yDiff*Math.PI);\n }\n\n angle = xDiff*Math.PI;\n if (angle){\n rotateCopy.rotate(200, 500, xDiff*Math.PI);\n }\n\n clearCanvas(0);\n rotateCopy.explicate(0, DIMENSION0, rotateCopy.mainOffset);\n }\n\n sanitizeCanvases = function() {\n var first;\n $('canvas').each(function() {\n $(this)[0].width = DIMENSION;\n return $(this)[0].height = DIMENSION;\n });\n first = $('canvas')[0];\n first.width = DIMENSION0;\n return first.height = DIMENSION0;\n };\n\n clearCanvas = function(n) {\n var ctx, dim;\n dim = DIMENSION;\n if (n === 0) {\n dim = DIMENSION0;\n }\n ctx = getCtx(n);\n return ctx.clearRect(0, 0, dim, dim);\n };\n\n getCtx = function(n) {\n var ctx;\n ctx = $('canvas')[n].getContext(\"2d\");\n return ctx;\n };\n\n getScaling = function(bounds, cDim, cMargin) {\n var biggest, height, scale, size, width, xOff, yOff;\n size = cDim - cMargin * 2;\n width = bounds.maxX - bounds.minX;\n height = bounds.maxY - bounds.minY;\n biggest = width > height ? width : height;\n scale = size / biggest;\n xOff = ((cDim - width * scale) / 2) - (bounds.minX * scale);\n yOff = ((cDim - height * scale) / 2) - (bounds.minY * scale);\n return {\n scale: scale,\n xOff: xOff,\n yOff: yOff\n };\n };\n\n compareFaces = function(array1, array2) {\n var face1, face2, unique, _i, _j, _len, _len1;\n if (array1.length !== array2.length) {\n return false;\n }\n for (_i = 0, _len = array1.length; _i < _len; _i++) {\n face1 = array1[_i];\n unique = true;\n for (_j = 0, _len1 = array2.length; _j < _len1; _j++) {\n face2 = array2[_j];\n if (face1.compare(face2)) {\n unique = false;\n }\n }\n if (unique) {\n return false;\n }\n }\n return true;\n };\n\n startGenerator = function(){\n questionStartTime = new Date().getTime();\n document.getElementById('generator').style.display='block';\n document.getElementById('introduction').style.display='none';\n\n timerOn = true;\n return startTimer();\n }\n\n randInt = function(scale) {\n return Math.floor(Math.random() * scale);\n };\n\n animloop = function() {\n requestAnimationFrame(animloop);\n if (animOn) {\n return render();\n }\n };\n\n window.requestAnimationFrame || (window.requestAnimationFrame = window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(callback, element) {\n return window.setTimeout(function() {\n return callback(+new Date());\n }, 1000 / 60);\n });\n\n render = function() {};\n\n getBounds = function(faces, pov) {\n var face, maxX, maxY, minX, minY, point, scr, _i, _j, _len, _len1, _ref;\n minX = 1000;\n minY = 1000;\n maxX = -1000;\n maxY = -1000;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n face = faces[_i];\n _ref = face.ar;\n for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {\n point = _ref[_j];\n scr = point.screenPoint(pov);\n if (scr[0] < minX) {\n minX = scr[0];\n }\n if (scr[0] > maxX) {\n maxX = scr[0];\n }\n if (scr[1] < minY) {\n minY = scr[1];\n }\n if (scr[1] > maxY) {\n maxY = scr[1];\n }\n }\n }\n return {\n minX: minX,\n maxX: maxX,\n minY: minY,\n maxY: maxY\n };\n };\n\n folder = function(mode, faces, dv, axis) {\n var ax, rad, result;\n rad = Math.PI / dv;\n ax = (function() {\n if (axis.length === 1) {\n switch (mode) {\n case 0:\n return [[axis[0], 0, 0], [axis[0], 10, 0]];\n case 1:\n return [[0, axis[0], 0], [10, axis[0], 0]];\n }\n } else {\n return [[axis[0], axis[1], 0], [axis[0], axis[1], 10]];\n }\n })();\n result = new Fold(faces, rad, ax);\n return result;\n };\n\n shuffle = function(a) {\n var i, j, t;\n i = a.length;\n while (--i > 0) {\n j = ~~(Math.random() * (i + 1));\n t = a[j];\n a[j] = a[i];\n a[i] = t;\n }\n return a;\n };\n\n Queue = (function() {\n function Queue(args) {\n this.ar = args;\n }\n\n return Queue;\n\n })();\n\n Point = (function(_super) {\n __extends(Point, _super);\n\n function Point(args) {\n this.changeAngle = __bind(this.changeAngle, this);\n Point.__super__.constructor.call(this, args);\n if (this.ar.length < 3) {\n this.ar.push(0);\n }\n }\n\n Point.prototype.clone = function() {\n return new Point([this.ar[0], this.ar[1], this.ar[2]]);\n };\n\n Point.prototype.compare = function(point) {\n var cushion, diff, i, _i;\n cushion = 0.001;\n for (i = _i = 0; _i <= 2; i = ++_i) {\n diff = this.ar[i] - point.ar[i];\n diff = Math.abs(diff);\n if (diff > cushion) {\n return false;\n }\n }\n return true;\n };\n\n Point.prototype.line = function(ctx, pov, scaling, mode) {\n var scr, x, y;\n scr = this.screenPoint(pov);\n x = scaling.xOff + scr[0] * scaling.scale;\n y = scaling.yOff + scr[1] * scaling.scale;\n if (mode) {\n return ctx.lineTo(x, y);\n } else {\n return ctx.moveTo(x, y);\n }\n };\n\n Point.prototype.screenPoint = function(pov) {\n var delta, newX, newY;\n delta = this.ar[2] / (this.ar[2] - pov[2]);\n newX = this.ar[0] + (pov[0] - this.ar[0]) * delta;\n newY = this.ar[1] + (pov[1] - this.ar[1]) * delta;\n return [newX, newY];\n };\n\n Point.prototype.translate = function(x, y, z) {\n this.ar[0] += x;\n this.ar[1] += y;\n return this.ar[2] += z;\n };\n\n Point.prototype.describe = function() {\n return $('#log').append('
' + this.ar[0] + \" \" + this.ar[1] + \" \" + this.ar[2] + '
');\n };\n\n Point.prototype.sanitize = function() {\n var i, _i, _len, _ref, _results;\n _ref = [0, 1, 2];\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n i = _ref[_i];\n _results.push(this.ar[i] = Math.round(this.ar[i] * 1000) / 1000);\n }\n return _results;\n };\n\n Point.prototype.changeAngle = function(theta, a, b) {\n var newa, newb;\n newa = this.ar[a] * Math.cos(theta) - this.ar[b] * Math.sin(theta);\n newb = this.ar[b] * Math.cos(theta) + this.ar[a] * Math.sin(theta);\n this.ar[a] = newa;\n return this.ar[b] = newb;\n };\n\n Point.prototype.getAngle = function(a, b) {\n return Math.atan2(this.ar[b], this.ar[a]);\n };\n\n Point.prototype.spin = function(axis, rad) {\n var angles, axle, cusion, deltas, i, _i, _j, _k, _results;\n cusion = 0.00001;\n deltas = [];\n angles = [0, 0];\n for (i = _i = 0; _i <= 2; i = ++_i) {\n deltas[i] = axis[1][i] - axis[0][i];\n }\n axle = new Point(deltas);\n for (i = _j = 0; _j <= 2; i = ++_j) {\n this.ar[i] -= axis[0][i];\n }\n if (Math.abs(axle.ar[1]) > cusion) {\n angles[0] = 0 - axle.getAngle(0, 1);\n axle.changeAngle(angles[0], 0, 1);\n this.changeAngle(angles[0], 0, 1);\n }\n if (Math.abs(axle.ar[0]) > cusion) {\n angles[1] = Math.PI / 2 - axle.getAngle(0, 2);\n this.changeAngle(angles[1], 0, 2);\n }\n this.changeAngle(rad, 0, 1);\n if (Math.abs(angles[1]) > cusion) {\n this.changeAngle(-angles[1], 0, 2);\n }\n if (Math.abs(angles[0]) > cusion) {\n this.changeAngle(-angles[0], 0, 1);\n }\n _results = [];\n for (i = _k = 0; _k <= 2; i = ++_k) {\n _results.push(this.ar[i] += axis[0][i]);\n }\n return _results;\n };\n\n Point.prototype.distance = function(pov) {\n var a, b, c;\n a = this.ar[0] - pov[0];\n b = this.ar[1] - pov[1];\n c = this.ar[2] - pov[2];\n return a * a + b * b + c * c;\n };\n\n return Point;\n\n })(Queue);\n\n Normal = (function(_super) {\n __extends(Normal, _super);\n\n function Normal() {\n return Normal.__super__.constructor.apply(this, arguments);\n }\n\n Normal.prototype.facing = function(pov) {\n return this.ar[0].distance(pov) < this.ar[1].distance(pov);\n };\n\n return Normal;\n\n })(Queue);\n\n Fold = (function() {\n function Fold(faces, degrees, axis) {\n this.faces = faces;\n this.degrees = degrees;\n this.axis = axis;\n }\n\n return Fold;\n\n })();\n\n Spin = (function() {\n function Spin(axis, rad) {\n this.axis = axis;\n this.rad = rad;\n }\n\n return Spin;\n\n })();\n\n Choice = (function(_super) {\n __extends(Choice, _super);\n\n function Choice(args) {\n Choice.__super__.constructor.call(this, args);\n this.pov = [];\n }\n\n return Choice;\n\n })(Queue);\n\n Face = (function(_super) {\n __extends(Face, _super);\n\n function Face(args) {\n var extension;\n Face.__super__.constructor.call(this, args);\n if (args.length > 0) {\n this.marks = [];\n extension = new Point([this.ar[0].ar[0], this.ar[0].ar[1], this.ar[0].ar[2] + 1]);\n this.normal = new Normal([this.ar[0], extension]);\n this.explication = false;\n this.type = 0;\n }\n }\n\n Face.prototype.clone = function() {\n var cln;\n cln = new Face([]);\n this.copyTo(cln);\n return cln;\n };\n\n Face.prototype.copyTo = function(destination) {\n var face, mks, p, points, _i, _j, _len, _len1, _ref, _ref1;\n points = [];\n _ref = this.ar;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n p = _ref[_i];\n points.push(p.clone());\n }\n mks = [];\n _ref1 = this.marks;\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n face = _ref1[_j];\n mks.push(face.clone());\n }\n destination.ar = points;\n destination.marks = mks;\n destination.normal = new Normal([destination.ar[0], this.normal.ar[1].clone()]);\n destination.explication = this.explication;\n return destination.type = this.type;\n };\n\n Face.prototype.compare = function(face) {\n var face1, face2, point1, point2, unique, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref, _ref1, _ref2, _ref3;\n if (this.ar.length !== face.ar.length) {\n return false;\n }\n if (this.marks.length !== face.marks.length) {\n return false;\n }\n _ref = this.ar;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n point1 = _ref[_i];\n unique = true;\n _ref1 = face.ar;\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n point2 = _ref1[_j];\n if (point1.compare(point2)) {\n unique = false;\n }\n }\n if (unique) {\n return false;\n return true;\n }\n }\n _ref2 = this.marks;\n for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {\n face1 = _ref2[_k];\n unique = true;\n _ref3 = face.marks;\n for (_l = 0, _len3 = _ref3.length; _l < _len3; _l++) {\n face2 = _ref3[_l];\n if (face1.compare(face2)) {\n unique = false;\n }\n }\n if (unique) {\n return false;\n }\n }\n return true;\n };\n\n Face.prototype.fill = function(n, pov, scaling, style) {\n var ctx, point, _i, _len, _ref;\n ctx = getCtx(n);\n ctx.fillStyle = style;\n ctx.beginPath();\n this.ar[0].line(ctx, pov, scaling, false);\n _ref = this.ar;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n point = _ref[_i];\n if (point !== this.ar[0]) {\n point.line(ctx, pov, scaling, true);\n }\n }\n ctx.closePath();\n ctx.fill();\n return ctx.stroke();\n };\n\n Face.prototype.printBack = function(n, pov, scaling) {\n if (!this.normal.facing(pov)) {\n return this.fill(n, pov, scaling, \"gray\");\n }\n };\n\n Face.prototype.printFront = function(n, pov, scaling) {\n var mark, _i, _len, _ref, _results;\n if (this.normal.facing(pov)) {\n this.fill(n, pov, scaling, \"white\");\n _ref = this.marks;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n mark = _ref[_i];\n _results.push(mark.fill(n, pov, scaling, \"gray\"));\n }\n return _results;\n }\n };\n\n Face.prototype.accentuate = function(n, pov, scaling) {\n var mark, _i, _len, _ref, _results;\n if (this.normal.facing(pov)) {\n this.fill(n, pov, scaling, \"chartreuse\");\n _ref = this.marks;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n mark = _ref[_i];\n _results.push(mark.fill(n, pov, scaling, \"darkgray\"));\n }\n return _results;\n }\n };\n\n Face.prototype.describe = function() {\n var point, _i, _len, _ref;\n _ref = this.ar;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n point = _ref[_i];\n point.describe();\n }\n return this.normal.ar[1].describe();\n };\n\n Face.prototype.sanitize = function() {\n var f, p, point, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2;\n _ref = this.ar;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n point = _ref[_i];\n point.sanitize();\n }\n _ref1 = this.marks;\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n f = _ref1[_j];\n _ref2 = f.ar;\n for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {\n p = _ref2[_k];\n p.sanitize();\n }\n }\n return this.normal.ar[1].sanitize();\n };\n\n Face.prototype.translate = function(x, y, z) {\n var f, p, point, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2;\n _ref = this.ar;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n point = _ref[_i];\n point.translate(x, y, z);\n }\n _ref1 = this.marks;\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n f = _ref1[_j];\n _ref2 = f.ar;\n for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {\n p = _ref2[_k];\n p.translate(x, y, z);\n }\n }\n return this.normal.ar[1].translate(x, y, z);\n };\n\n Face.prototype.preSpin = function(axis, rad) {\n var p, _i, _len, _ref;\n _ref = this.markVertices;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n p = _ref[_i];\n p.spin(axis, rad);\n }\n return this.normal.ar[1].spin(axis, rad);\n };\n\n Face.prototype.preTranslate = function(x, y, z) {\n var point, _i, _len, _ref;\n _ref = this.markVertices;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n point = _ref[_i];\n point.translate(x, y, z);\n }\n return this.normal.ar[1].translate(x, y, z);\n };\n\n Face.prototype.spin = function(axis, rad) {\n var f, p, _i, _j, _len, _len1, _ref, _ref1, _results;\n _ref = this.ar;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n p = _ref[_i];\n p.spin(axis, rad);\n }\n this.normal.ar[1].spin(axis, rad);\n _ref1 = this.marks;\n _results = [];\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n f = _ref1[_j];\n _results.push(f.spin(axis, rad));\n }\n return _results;\n };\n\n Face.prototype.extremity = function(pov) {\n var dim, ext, point, scr, _i, _j, _len, _len1, _ref;\n ext = 0;\n _ref = this.ar;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n point = _ref[_i];\n scr = point.screenPoint(pov);\n for (_j = 0, _len1 = scr.length; _j < _len1; _j++) {\n dim = scr[_j];\n if (dim > ext) {\n ext = dim;\n }\n }\n }\n return ext;\n };\n\n Face.prototype.getTops = function() {\n var point, topX, topY, topZ, _i, _len, _ref;\n topX = 1000;\n topY = 1000;\n topZ = 1000;\n _ref = this.ar;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n point = _ref[_i];\n if (point.ar[0] < topX) {\n topX = point.ar[0];\n }\n if (point.ar[1] < topY) {\n topY = point.ar[1];\n }\n if (point.ar[2] < topZ) {\n topZ = point.ar[2];\n }\n }\n return [topX, topY, topZ];\n };\n\n Face.prototype.getBoundingCube = function() {\n var point, x0, x1, y0, y1, z0, z1, _i, _len, _ref;\n x0 = 1000;\n y0 = 1000;\n z0 = 1000;\n x1 = -1000;\n y1 = -1000;\n z1 = -1000;\n _ref = this.ar;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n point = _ref[_i];\n if (point.ar[0] < x0) {\n x0 = point.ar[0];\n }\n if (point.ar[1] < y0) {\n y0 = point.ar[1];\n }\n if (point.ar[2] < z0) {\n z0 = point.ar[2];\n }\n if (point.ar[0] > x1) {\n x1 = point.ar[0];\n }\n if (point.ar[1] > y1) {\n y1 = point.ar[1];\n }\n if (point.ar[2] > z1) {\n z1 = point.ar[2];\n }\n }\n return [[x0, y0, z0], [x1, y1, z1]];\n };\n\n Face.prototype.imposter = function() {\n var result;\n result = this.clone();\n result.marks = [];\n result.getMarks();\n return result;\n };\n\n Face.prototype.populateMainMarkVertices = function() {\n var p, _i, _len, _ref, _results;\n _ref = this.ar;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n p = _ref[_i];\n _results.push(this.markVertices.push(p));\n }\n return _results;\n };\n\n Face.prototype.populateMidRectVertices = function() {\n var i, j, l, x, y, z, _i, _ref;\n l = this.ar.length;\n for (i = _i = 0, _ref = l - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n j = i + 1;\n if (j >= l) {\n j = 0;\n }\n x = (this.ar[i].ar[0] + this.ar[j].ar[0]) / 2;\n y = (this.ar[i].ar[1] + this.ar[j].ar[1]) / 2;\n z = (this.ar[i].ar[2] + this.ar[j].ar[2]) / 2;\n this.markVertices.push(new Point([x, y, z]));\n }\n x = (this.ar[0].ar[0] + this.ar[2].ar[0]) / 2;\n y = (this.ar[0].ar[1] + this.ar[2].ar[1]) / 2;\n z = (this.ar[0].ar[2] + this.ar[2].ar[2]) / 2;\n return this.markVertices.push(new Point([x, y, z]));\n };\n\n Face.prototype.addMark = function(list) {\n var l, points, _i, _len;\n points = [];\n for (_i = 0, _len = list.length; _i < _len; _i++) {\n l = list[_i];\n points.push(this.markVertices[l]);\n }\n return this.marks.push(new Face(points));\n };\n\n Face.prototype.getRectMarks = function(index) {\n var rand;\n this.markVertices = [];\n this.populateMainMarkVertices();\n this.populateMidRectVertices();\n rand = Math.random();\n if (rand < 0.1) {\n this.addMark([0, 1, 2]);\n return this.type = 2 + index;\n } else if (rand < 0.2) {\n this.addMark([1, 2, 3]);\n return this.type = 2 + index;\n } else if (rand < 0.3) {\n this.addMark([2, 3, 0]);\n return this.type = 2 + index;\n } else if (rand < 0.4) {\n this.addMark([3, 0, 1]);\n return this.type = 2 + index;\n } else if (rand < 0.5) {\n this.addMark([0, 4, 8, 7]);\n return this.type = 1 + index;\n } else if (rand < 0.6) {\n this.addMark([1, 5, 8, 4]);\n return this.type = 1 + index;\n } else if (rand < 0.7) {\n this.addMark([2, 6, 8, 5]);\n return this.type = 1 + index;\n } else if (rand < 0.8) {\n this.addMark([3, 7, 8, 6]);\n return this.type = 1 + index;\n } else if (rand < 0.9) {\n this.type = 3 + index;\n return this.addMark([0, 1, 1, 2, 3]);\n } else {\n return this.type = 0 + index;\n }\n };\n\n Face.prototype.twist = function(rad) {\n var x, y, z;\n x = this.ar[0].ar[0];\n y = this.ar[0].ar[1];\n z = this.ar[0].ar[2];\n return this.spin([[x, y, z], [x, y, z + 10]], rad);\n };\n\n Face.prototype.getCenter = function() {\n var i, l, x, y, z, _i, _ref;\n x = 0;\n y = 0;\n z = 0;\n l = this.ar.length;\n for (i = _i = 0, _ref = l - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n x += this.ar[i].ar[0];\n y += this.ar[i].ar[1];\n z += this.ar[i].ar[2];\n }\n x = x / l;\n y = y / l;\n z = z / l;\n return [x, y, z];\n };\n\n Face.prototype.populateInnerMarkVertices = function() {\n var center, delta, draw, i, j, l, result, start, _i, _j, _results;\n center = this.getCenter();\n draw = 0.5;\n l = this.ar.length - 1;\n _results = [];\n for (i = _i = 0; 0 <= l ? _i <= l : _i >= l; i = 0 <= l ? ++_i : --_i) {\n result = [];\n for (j = _j = 0; _j <= 2; j = ++_j) {\n start = this.ar[i].ar[j];\n delta = start - center[j];\n result.push(start - delta * draw);\n }\n _results.push(this.markVertices.push(new Point(result)));\n }\n return _results;\n };\n\n return Face;\n\n })(Queue);\n\n ProtoRect = (function(_super) {\n __extends(ProtoRect, _super);\n\n function ProtoRect(x, y, x1, y1) {\n ProtoRect.__super__.constructor.call(this, [new Point([x, y]), new Point([x + x1, y]), new Point([x + x1, y + y1]), new Point([x, y + y1])]);\n this.getMarks();\n }\n\n ProtoRect.prototype.clone = function() {\n var result;\n result = new ProtoRect(0, 0, 1, 1);\n this.copyTo(result);\n return result;\n };\n\n ProtoRect.prototype.getMarks = function() {\n return this.getRectMarks(4);\n };\n\n return ProtoRect;\n\n })(Face);\n\n Square = (function(_super) {\n __extends(Square, _super);\n\n function Square(x, y) {\n Square.__super__.constructor.call(this, x, y, 1, 1);\n }\n\n Square.prototype.getMarks = function() {\n return this.getRectMarks(0);\n };\n\n Square.prototype.clone = function() {\n var result;\n result = new Square(0, 0);\n this.copyTo(result);\n return result;\n };\n\n return Square;\n\n })(ProtoRect);\n\n DblMarkSquare = (function(_super) {\n __extends(DblMarkSquare, _super);\n\n function DblMarkSquare(x, y) {\n DblMarkSquare.__super__.constructor.call(this, x, y, 1, 1);\n }\n\n DblMarkSquare.prototype.getMarks = function() {\n var rand, x, y, z;\n this.markVertices = [];\n this.populateMainMarkVertices();\n this.populateMidRectVertices();\n x = (this.ar[0].ar[0] + this.ar[2].ar[0]) / 2;\n y = (this.ar[0].ar[1] + this.ar[2].ar[1]) / 2;\n z = (this.ar[0].ar[2] + this.ar[2].ar[2]) / 2;\n this.markVertices.push(new Point([x, y, z]));\n rand = Math.random();\n if (rand < 0.2) {\n this.addMark([0, 4, 8, 7]);\n this.addMark([2, 6, 9, 5]);\n return this.type = 34;\n } else if (rand < 0.4) {\n this.addMark([4, 1, 5, 8]);\n this.addMark([6, 3, 7, 9]);\n return this.type = 34;\n } else if (rand < 0.6) {\n this.addMark([0, 1, 8]);\n this.addMark([2, 3, 9]);\n return this.type = 35;\n } else if (rand < 0.8) {\n this.addMark([1, 2, 8]);\n this.addMark([3, 0, 9]);\n return this.type = 35;\n } else if (rand < 0.9) {\n this.type = 3;\n return this.addMark([0, 1, 1, 2, 3]);\n } else {\n return this.type = 0;\n }\n };\n\n DblMarkSquare.prototype.clone = function() {\n var result;\n result = new DblMarkSquare(0, 0);\n this.copyTo(result);\n return result;\n };\n\n return DblMarkSquare;\n\n })(ProtoRect);\n\n SquareDiamond = (function(_super) {\n __extends(SquareDiamond, _super);\n\n function SquareDiamond(x, y) {\n SquareDiamond.__super__.constructor.call(this, x, y, 1, 1);\n }\n\n SquareDiamond.prototype.getMarks = function() {\n var rand;\n this.markVertices = [];\n this.populateMainMarkVertices();\n this.populateMidRectVertices();\n rand = Math.random();\n if (rand < 0.15) {\n this.addMark([0, 1, 8]);\n return this.type = 24;\n } else if (rand < 0.3) {\n this.addMark([1, 2, 8]);\n return this.type = 24;\n } else if (rand < 0.45) {\n this.addMark([2, 3, 8]);\n return this.type = 24;\n } else if (rand < 0.6) {\n this.addMark([3, 0, 8]);\n return this.type = 24;\n } else if (rand < 0.8) {\n this.type = 3;\n return this.addMark([0, 1, 1, 2, 3]);\n } else {\n return this.type = 0;\n }\n };\n\n SquareDiamond.prototype.clone = function() {\n var result;\n result = new SquareDiamond(0, 0);\n this.copyTo(result);\n return result;\n };\n\n return SquareDiamond;\n\n })(ProtoRect);\n\n DieFace = (function(_super) {\n __extends(DieFace, _super);\n\n function DieFace(x, y) {\n DieFace.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 1, y]), new Point([x + 1, y + 1]), new Point([x, y + 1])]);\n }\n\n DieFace.prototype.getMarks = function() {\n return this.addDieSpots(randInt(6) + 1);\n };\n\n DieFace.prototype.clone = function() {\n var result;\n result = new DieFace(0, 0);\n this.copyTo(result);\n return result;\n };\n\n DieFace.prototype.addDieSpots = function(spots) {\n var deltaHX, deltaHY, deltaHZ, deltaVX, deltaVY, deltaVZ, i, j, pushVertexArray, start, vertexArrays, x, y, z, _i, _j, _k, _l;\n this.markVertices = [];\n deltaHX = this.ar[1].ar[0] - this.ar[0].ar[0];\n deltaHY = this.ar[1].ar[1] - this.ar[0].ar[1];\n deltaHZ = this.ar[1].ar[2] - this.ar[0].ar[2];\n deltaVX = this.ar[3].ar[0] - this.ar[0].ar[0];\n deltaVY = this.ar[3].ar[1] - this.ar[0].ar[1];\n deltaVZ = this.ar[3].ar[2] - this.ar[0].ar[2];\n for (i = _i = 0; _i <= 5; i = ++_i) {\n x = this.ar[0].ar[0] + deltaVX / 7 * (i + 1);\n y = this.ar[0].ar[1] + deltaVY / 7 * (i + 1);\n z = this.ar[0].ar[2] + deltaVZ / 7 * (i + 1);\n for (j = _j = 0; _j <= 5; j = ++_j) {\n x += deltaHX / 7;\n y += deltaHY / 7;\n z += deltaHZ / 7;\n this.markVertices.push(new Point([x, y, z]));\n }\n }\n vertexArrays = [];\n for (i = _k = 0; _k <= 2; i = ++_k) {\n for (j = _l = 0; _l <= 2; j = ++_l) {\n start = 12 * i + 2 * j;\n vertexArrays.push([start, start + 1, start + 7, start + 6]);\n }\n }\n pushVertexArray = (function(_this) {\n return function(vertexArray) {\n var n, _len, _m, _results;\n _results = [];\n for (_m = 0, _len = vertexArray.length; _m < _len; _m++) {\n n = vertexArray[_m];\n _results.push(_this.addMark(vertexArrays[n]));\n }\n return _results;\n };\n })(this);\n switch (spots) {\n case 1:\n this.type = 1;\n return pushVertexArray([4]);\n case 2:\n this.type = 2;\n return pushVertexArray([2, 6]);\n case 3:\n this.type = 3;\n return pushVertexArray([0, 4, 8]);\n case 4:\n this.type = 4;\n return pushVertexArray([0, 2, 6, 8]);\n case 5:\n this.type = 5;\n return pushVertexArray([0, 2, 4, 6, 8]);\n case 6:\n this.type = 6;\n return pushVertexArray([0, 2, 3, 5, 6, 8]);\n }\n };\n\n return DieFace;\n\n })(Face);\n\n FourSquare = (function(_super) {\n __extends(FourSquare, _super);\n\n function FourSquare(x, y) {\n FourSquare.__super__.constructor.call(this, x, y, 4, 4);\n }\n\n FourSquare.prototype.getMarks = function() {\n return this.type = 14;\n };\n\n FourSquare.prototype.clone = function() {\n var result;\n result = new FourSquare(0, 0);\n this.copyTo(result);\n return result;\n };\n\n return FourSquare;\n\n })(ProtoRect);\n\n TwoSquare = (function(_super) {\n __extends(TwoSquare, _super);\n\n function TwoSquare(x, y) {\n TwoSquare.__super__.constructor.call(this, x, y, 2, 2);\n }\n\n TwoSquare.prototype.getMarks = function() {\n return this.getRectMarks(0);\n };\n\n return TwoSquare;\n\n })(ProtoRect);\n\n SquareFor12 = (function(_super) {\n __extends(SquareFor12, _super);\n\n function SquareFor12() {\n return SquareFor12.__super__.constructor.apply(this, arguments);\n }\n\n SquareFor12.prototype.clone = function() {\n var result;\n result = new SquareFor12(0, 0);\n this.copyTo(result);\n return result;\n };\n\n SquareFor12.prototype.getMarks = function() {\n var rand;\n this.markVertices = [];\n this.populateMainMarkVertices();\n this.populateMidRectVertices();\n rand = Math.random();\n if (rand < 0.15) {\n this.addMark([0, 1, 2]);\n return this.type = 2;\n } else if (rand < 0.3) {\n this.addMark([1, 2, 3]);\n return this.type = 2;\n } else if (rand < 0.45) {\n this.addMark([2, 3, 0]);\n return this.type = 2;\n } else if (rand < 0.6) {\n this.addMark([3, 0, 1]);\n return this.type = 2;\n } else if (rand < 0.8) {\n this.type = 3;\n return this.addMark([0, 1, 1, 2, 3]);\n } else {\n return this.type = 0;\n }\n };\n\n return SquareFor12;\n\n })(TwoSquare);\n\n BlankSquare = (function(_super) {\n __extends(BlankSquare, _super);\n\n function BlankSquare() {\n return BlankSquare.__super__.constructor.apply(this, arguments);\n }\n\n BlankSquare.prototype.clone = function() {\n var result;\n result = new BlankSquare(0, 0);\n this.copyTo(result);\n return result;\n };\n\n BlankSquare.prototype.getMarks = function() {\n var rand;\n rand = Math.random();\n if (rand < 0.5) {\n this.markVertices = [];\n this.populateMainMarkVertices();\n this.type = 3;\n return this.addMark([0, 1, 1, 2, 3]);\n } else {\n return this.type = 0;\n }\n };\n\n return BlankSquare;\n\n })(Square);\n\n StripedSquare = (function(_super) {\n __extends(StripedSquare, _super);\n\n function StripedSquare() {\n return StripedSquare.__super__.constructor.apply(this, arguments);\n }\n\n StripedSquare.prototype.clone = function() {\n var result;\n result = new StripedSquare(0, 0);\n this.copyTo(result);\n return result;\n };\n\n StripedSquare.prototype.getMarks = function() {\n var rand;\n this.markVertices = [];\n this.populateMainMarkVertices();\n this.populateMidRectVertices();\n rand = Math.random();\n if (rand < 0.15) {\n this.addMark([0, 1, 5, 7]);\n return this.type = 23;\n } else if (rand < 0.3) {\n this.addMark([1, 2, 6, 4]);\n return this.type = 23;\n } else if (rand < 0.45) {\n this.addMark([2, 3, 7, 5]);\n return this.type = 23;\n } else if (rand < 0.6) {\n this.addMark([3, 0, 4, 6]);\n return this.type = 23;\n } else if (rand < 0.8) {\n this.type = 3;\n return this.addMark([0, 1, 1, 2, 3]);\n } else {\n return this.type = 0;\n }\n };\n\n return StripedSquare;\n\n })(Square);\n\n HorizRect = (function(_super) {\n __extends(HorizRect, _super);\n\n function HorizRect(x, y) {\n HorizRect.__super__.constructor.call(this, x, y, 2, 1);\n }\n\n return HorizRect;\n\n })(ProtoRect);\n\n StripedRect = (function(_super) {\n __extends(StripedRect, _super);\n\n function StripedRect() {\n return StripedRect.__super__.constructor.apply(this, arguments);\n }\n\n StripedRect.prototype.clone = function() {\n var result;\n result = new StripedRect(0, 0);\n this.copyTo(result);\n return result;\n };\n\n StripedRect.prototype.getMarks = function() {\n var rand;\n this.markVertices = [];\n this.populateMainMarkVertices();\n rand = Math.random();\n if (rand < 0.15) {\n this.addMark([0, 1, 2]);\n return this.type = 30;\n } else if (rand < 0.3) {\n this.addMark([1, 2, 3]);\n return this.type = 30;\n } else if (rand < 0.45) {\n this.addMark([2, 3, 0]);\n return this.type = 30;\n } else if (rand < 0.6) {\n this.addMark([3, 0, 1]);\n return this.type = 30;\n } else if (rand < 0.8) {\n this.type = 7;\n return this.addMark([0, 1, 1, 2, 3]);\n } else {\n return this.type = 4;\n }\n };\n\n return StripedRect;\n\n })(HorizRect);\n\n TippedRect = (function(_super) {\n __extends(TippedRect, _super);\n\n function TippedRect() {\n return TippedRect.__super__.constructor.apply(this, arguments);\n }\n\n TippedRect.prototype.clone = function() {\n var result;\n result = new TippedRect(0, 0);\n this.copyTo(result);\n return result;\n };\n\n TippedRect.prototype.getMarks = function() {\n var rand;\n this.markVertices = [];\n this.populateMainMarkVertices();\n this.populateMidRectVertices();\n rand = Math.random();\n if (rand < 0.1) {\n this.addMark([0, 1, 2]);\n return this.type = 30;\n } else if (rand < 0.2) {\n this.addMark([1, 2, 3]);\n return this.type = 30;\n } else if (rand < 0.3) {\n this.addMark([2, 3, 0]);\n return this.type = 30;\n } else if (rand < 0.4) {\n this.addMark([3, 0, 1]);\n return this.type = 30;\n } else if (rand < 0.5) {\n this.addMark([0, 4, 7]);\n return this.type = 33;\n } else if (rand < 0.6) {\n this.addMark([1, 5, 4]);\n return this.type = 33;\n } else if (rand < 0.7) {\n this.addMark([2, 6, 5]);\n return this.type = 33;\n } else if (rand < 0.8) {\n this.addMark([3, 7, 6]);\n return this.type = 33;\n } else if (rand < 0.9) {\n this.type = 7;\n return this.addMark([0, 1, 1, 2, 3]);\n } else {\n return this.type = 4;\n }\n };\n\n return TippedRect;\n\n })(HorizRect);\n\n InnerRect = (function(_super) {\n __extends(InnerRect, _super);\n\n function InnerRect() {\n return InnerRect.__super__.constructor.apply(this, arguments);\n }\n\n InnerRect.prototype.clone = function() {\n var result;\n result = new InnerRect(0, 0);\n this.copyTo(result);\n return result;\n };\n\n InnerRect.prototype.getMarks = function() {\n var rand;\n this.markVertices = [];\n this.populateMainMarkVertices();\n this.populateInnerMarkVertices();\n rand = Math.random();\n if (rand < 0.3) {\n this.type = 28;\n return this.addMark([4, 5, 6, 7]);\n } else if (rand < 0.5) {\n this.type = 7;\n return this.addMark([0, 1, 1, 2, 3]);\n } else {\n return this.type = 0;\n }\n };\n\n return InnerRect;\n\n })(HorizRect);\n\n DiagonalRect = (function(_super) {\n __extends(DiagonalRect, _super);\n\n function DiagonalRect(x, y) {\n DiagonalRect.__super__.constructor.call(this, x, y, 1, Math.sqrt(2));\n }\n\n return DiagonalRect;\n\n })(ProtoRect);\n\n HorizRectThree = (function(_super) {\n __extends(HorizRectThree, _super);\n\n function HorizRectThree(x, y) {\n HorizRectThree.__super__.constructor.call(this, x, y, 3, 1);\n }\n\n return HorizRectThree;\n\n })(ProtoRect);\n\n VertRectThree = (function(_super) {\n __extends(VertRectThree, _super);\n\n function VertRectThree(x, y) {\n VertRectThree.__super__.constructor.call(this, x, y, 1, 3);\n }\n\n return VertRectThree;\n\n })(ProtoRect);\n\n HorizRectFour = (function(_super) {\n __extends(HorizRectFour, _super);\n\n function HorizRectFour(x, y) {\n HorizRectFour.__super__.constructor.call(this, x, y, 4, 1);\n }\n\n return HorizRectFour;\n\n })(ProtoRect);\n\n VertRectFour = (function(_super) {\n __extends(VertRectFour, _super);\n\n function VertRectFour(x, y) {\n VertRectFour.__super__.constructor.call(this, x, y, 1, 4);\n }\n\n return VertRectFour;\n\n })(ProtoRect);\n\n VertRect = (function(_super) {\n __extends(VertRect, _super);\n\n function VertRect(x, y) {\n VertRect.__super__.constructor.call(this, x, y, 1, 2);\n }\n\n return VertRect;\n\n })(ProtoRect);\n\n Triangle = (function(_super) {\n __extends(Triangle, _super);\n\n function Triangle(x, y) {\n Triangle.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 2, y + 2]), new Point([x - 2, y + 2])]);\n this.reorient();\n this.getMarks();\n }\n\n Triangle.prototype.reorient = function() {};\n\n Triangle.prototype.getMarks = function() {\n var i, j, rand, x, y, z, _i;\n this.markVertices = [];\n this.populateMainMarkVertices();\n for (i = _i = 0; _i <= 2; i = ++_i) {\n j = i + 1;\n if (i === 2) {\n j = 0;\n }\n x = (this.ar[i].ar[0] + this.ar[j].ar[0]) / 2;\n y = (this.ar[i].ar[1] + this.ar[j].ar[1]) / 2;\n z = (this.ar[i].ar[2] + this.ar[j].ar[2]) / 2;\n this.markVertices.push(new Point([x, y, z]));\n }\n rand = Math.random();\n if (rand < 0.25) {\n this.type = 15;\n return this.addMark([0, 1, 4]);\n } else if (rand < 0.5) {\n this.type = 15;\n return this.addMark([0, 4, 2]);\n } else if (rand < 0.75) {\n this.type = 16;\n return this.addMark([0, 1, 1, 2]);\n } else {\n return this.type = 17;\n }\n };\n\n Triangle.prototype.clone = function() {\n var result;\n result = new Triangle(0, 0);\n this.copyTo(result);\n return result;\n };\n\n return Triangle;\n\n })(Face);\n\n InnerTriangle = (function(_super) {\n __extends(InnerTriangle, _super);\n\n function InnerTriangle(x, y) {\n InnerTriangle.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 2, y]), new Point([x + 1, y + 2])]);\n this.reorient();\n this.getMarks();\n }\n\n InnerTriangle.prototype.reorient = function() {};\n\n InnerTriangle.prototype.getMarks = function() {\n var rand;\n this.markVertices = [];\n this.populateMainMarkVertices();\n this.populateInnerMarkVertices();\n rand = Math.random();\n if (rand < 0.3) {\n this.type = 29;\n return this.addMark([3, 4, 5]);\n } else if (rand < 0.5) {\n this.type = 16;\n return this.addMark([0, 1, 1, 2]);\n } else {\n return this.type = 17;\n }\n };\n\n InnerTriangle.prototype.clone = function() {\n var result;\n result = new InnerTriangle(0, 0);\n this.copyTo(result);\n return result;\n };\n\n return InnerTriangle;\n\n })(Face);\n\n InnerTriangleInv = (function(_super) {\n __extends(InnerTriangleInv, _super);\n\n function InnerTriangleInv() {\n return InnerTriangleInv.__super__.constructor.apply(this, arguments);\n }\n\n InnerTriangleInv.prototype.reorient = function() {\n var x, y, z;\n x = this.ar[0].ar[0];\n y = this.ar[0].ar[1];\n z = this.ar[0].ar[2];\n return this.spin([[x, y, z], [x, y, z + 10]], Math.PI);\n };\n\n return InnerTriangleInv;\n\n })(InnerTriangle);\n\n TriangleSideways = (function(_super) {\n __extends(TriangleSideways, _super);\n\n function TriangleSideways() {\n return TriangleSideways.__super__.constructor.apply(this, arguments);\n }\n\n TriangleSideways.prototype.reorient = function() {\n var x1, y1, z1;\n x1 = this.ar[0].ar[0];\n y1 = this.ar[0].ar[1];\n z1 = this.ar[0].ar[2];\n return this.spin([[x1, y1, z1], [x1, y1, z1 + 10]], Math.PI / 2);\n };\n\n return TriangleSideways;\n\n })(Triangle);\n\n BlankTriangle = (function(_super) {\n __extends(BlankTriangle, _super);\n\n function BlankTriangle() {\n return BlankTriangle.__super__.constructor.apply(this, arguments);\n }\n\n BlankTriangle.prototype.clone = function() {\n var result;\n result = new BlankTriangle(0, 0);\n this.copyTo(result);\n return result;\n };\n\n BlankTriangle.prototype.getMarks = function() {\n var rand;\n rand = Math.random();\n if (rand < 0.5) {\n this.markVertices = [];\n this.populateMainMarkVertices();\n this.type = 16;\n return this.addMark([0, 1, 1, 2]);\n } else {\n return this.type = 17;\n }\n };\n\n return BlankTriangle;\n\n })(Triangle);\n\n BlankTriangleInv1 = (function(_super) {\n __extends(BlankTriangleInv1, _super);\n\n function BlankTriangleInv1() {\n return BlankTriangleInv1.__super__.constructor.apply(this, arguments);\n }\n\n BlankTriangleInv1.prototype.reorient = function() {\n var x1, y1, z1;\n x1 = this.ar[0].ar[0];\n y1 = this.ar[0].ar[1];\n z1 = this.ar[0].ar[2];\n return this.spin([[x1, y1, z1], [x1, y1, z1 + 10]], Math.PI / 2);\n };\n\n return BlankTriangleInv1;\n\n })(BlankTriangle);\n\n BlankTriangleInv2 = (function(_super) {\n __extends(BlankTriangleInv2, _super);\n\n function BlankTriangleInv2() {\n return BlankTriangleInv2.__super__.constructor.apply(this, arguments);\n }\n\n BlankTriangleInv2.prototype.reorient = function() {\n var x1, y1, z1;\n x1 = this.ar[0].ar[0];\n y1 = this.ar[0].ar[1];\n z1 = this.ar[0].ar[2];\n return this.spin([[x1, y1, z1], [x1, y1, z1 + 10]], Math.PI);\n };\n\n return BlankTriangleInv2;\n\n })(BlankTriangle);\n\n BlankTriangleInv3 = (function(_super) {\n __extends(BlankTriangleInv3, _super);\n\n function BlankTriangleInv3() {\n return BlankTriangleInv3.__super__.constructor.apply(this, arguments);\n }\n\n BlankTriangleInv3.prototype.reorient = function() {\n var x1, y1, z1;\n x1 = this.ar[0].ar[0];\n y1 = this.ar[0].ar[1];\n z1 = this.ar[0].ar[2];\n return this.spin([[x1, y1, z1], [x1, y1, z1 + 10]], -Math.PI / 2);\n };\n\n return BlankTriangleInv3;\n\n })(BlankTriangle);\n\n Pentagon = (function(_super) {\n __extends(Pentagon, _super);\n\n function Pentagon(x, y) {\n var i, j, z, _i, _j;\n Pentagon.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 1, y]), new Point([x + 2, y]), new Point([x + 3, y]), new Point([x + 4, y])]);\n for (i = _i = 0; _i <= 2; i = ++_i) {\n x = this.ar[3 - i].ar[0];\n y = this.ar[3 - i].ar[1];\n z = this.ar[3 - i].ar[2];\n for (j = _j = 0; 0 <= i ? _j <= i : _j >= i; j = 0 <= i ? ++_j : --_j) {\n this.ar[4 - j].spin([[x, y, z], [x, y, z + 10]], -Math.PI * 2 / 5);\n }\n }\n this.reorient();\n this.getMarks();\n }\n\n Pentagon.prototype.reorient = function() {};\n\n Pentagon.prototype.getMarks = function() {\n var i, rand, x, y, z, _i, _ref;\n this.markVertices = [];\n this.populateMainMarkVertices();\n x = 0;\n y = 0;\n z = 0;\n for (i = _i = 0, _ref = this.ar.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n x += this.ar[i].ar[0];\n y += this.ar[i].ar[1];\n z += this.ar[i].ar[2];\n }\n x = x / 5;\n y = y / 5;\n z = z / 5;\n this.markVertices.push(new Point([x, y, z]));\n rand = Math.random();\n if (rand < 0.1) {\n this.type = 18;\n return this.addMark([0, 1, 5]);\n } else if (rand < 0.2) {\n this.type = 18;\n return this.addMark([1, 2, 5]);\n } else if (rand < 0.3) {\n this.type = 18;\n return this.addMark([2, 3, 5]);\n } else if (rand < 0.4) {\n this.type = 18;\n return this.addMark([3, 4, 5]);\n } else if (rand < 0.5) {\n this.type = 18;\n return this.addMark([4, 0, 5]);\n } else if (rand < 0.7) {\n this.type = 19;\n return this.addMark([0, 1, 2, 2, 3, 4]);\n } else {\n return this.type = 20;\n }\n };\n\n Pentagon.prototype.clone = function() {\n var result;\n result = new Pentagon(0, 0);\n this.copyTo(result);\n return result;\n };\n\n return Pentagon;\n\n })(Face);\n\n VertPentagon = (function(_super) {\n __extends(VertPentagon, _super);\n\n function VertPentagon(x, y) {\n var i, j, z, _i, _j;\n VertPentagon.__super__.constructor.call(this, [new Point([x, y]), new Point([x, y + 1]), new Point([x, y + 2]), new Point([x, y + 3]), new Point([x, y + 4])]);\n for (i = _i = 0; _i <= 2; i = ++_i) {\n x = this.ar[3 - i].ar[0];\n y = this.ar[3 - i].ar[1];\n z = this.ar[3 - i].ar[2];\n for (j = _j = 0; 0 <= i ? _j <= i : _j >= i; j = 0 <= i ? ++_j : --_j) {\n this.ar[4 - j].spin([[x, y, z], [x, y, z + 10]], -Math.PI * 2 / 5);\n }\n }\n this.reorient();\n this.getMarks();\n }\n\n VertPentagon.prototype.reorient = function() {};\n\n VertPentagon.prototype.getMarks = function() {\n var rand;\n this.markVertices = [];\n this.populateMainMarkVertices();\n this.populateMidRectVertices();\n rand = Math.random();\n if (rand < 0.05) {\n this.type = 31;\n return this.addMark([0, 1, 2, 7]);\n } else if (rand < 0.1) {\n this.type = 31;\n return this.addMark([0, 4, 3, 7]);\n } else if (rand < 0.15) {\n this.type = 31;\n return this.addMark([1, 2, 3, 8]);\n } else if (rand < 0.2) {\n this.type = 31;\n return this.addMark([1, 0, 4, 8]);\n } else if (rand < 0.25) {\n this.type = 31;\n return this.addMark([2, 3, 4, 9]);\n } else if (rand < 0.3) {\n this.type = 31;\n return this.addMark([2, 1, 0, 9]);\n } else if (rand < 0.35) {\n this.type = 31;\n return this.addMark([3, 4, 0, 5]);\n } else if (rand < 0.4) {\n this.type = 31;\n return this.addMark([3, 2, 1, 5]);\n } else if (rand < 0.45) {\n this.type = 31;\n return this.addMark([4, 0, 1, 6]);\n } else if (rand < 0.5) {\n this.type = 31;\n return this.addMark([4, 3, 2, 6]);\n } else if (rand < 0.75) {\n this.type = 19;\n return this.addMark([0, 1, 2, 2, 3, 4]);\n } else {\n return this.type = 20;\n }\n };\n\n VertPentagon.prototype.clone = function() {\n var result;\n result = new VertPentagon(0, 0);\n this.copyTo(result);\n return result;\n };\n\n return VertPentagon;\n\n })(Face);\n\n VertPentagonInv = (function(_super) {\n __extends(VertPentagonInv, _super);\n\n function VertPentagonInv(x, y) {\n VertPentagonInv.__super__.constructor.call(this, x, y);\n }\n\n VertPentagonInv.prototype.reorient = function() {\n var x1, y1, z1;\n x1 = this.ar[0].ar[0];\n y1 = this.ar[0].ar[1];\n z1 = this.ar[0].ar[2];\n return this.spin([[x1, y1, z1], [x1, y1, z1 + 10]], Math.PI);\n };\n\n return VertPentagonInv;\n\n })(VertPentagon);\n\n TwoPentagon = (function(_super) {\n __extends(TwoPentagon, _super);\n\n function TwoPentagon(x, y) {\n var i, j, z, _i, _j;\n TwoPentagon.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 2, y]), new Point([x + 4, y]), new Point([x + 6, y]), new Point([x + 8, y])]);\n for (i = _i = 0; _i <= 2; i = ++_i) {\n x = this.ar[3 - i].ar[0];\n y = this.ar[3 - i].ar[1];\n z = this.ar[3 - i].ar[2];\n for (j = _j = 0; 0 <= i ? _j <= i : _j >= i; j = 0 <= i ? ++_j : --_j) {\n this.ar[4 - j].spin([[x, y, z], [x, y, z + 10]], -Math.PI * 2 / 5);\n }\n }\n this.getMarks();\n }\n\n TwoPentagon.prototype.getMarks = function() {\n return this.type = 26;\n };\n\n TwoPentagon.prototype.clone = function() {\n var result;\n result = new TwoPentagon(0, 0);\n this.copyTo(result);\n return result;\n };\n\n return TwoPentagon;\n\n })(Face);\n\n HexSection = (function(_super) {\n __extends(HexSection, _super);\n\n function HexSection(x, y) {\n var z;\n HexSection.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 1, y]), new Point([x + 2, y])]);\n x = this.ar[1].ar[0];\n y = this.ar[1].ar[1];\n z = this.ar[1].ar[2];\n this.ar[2].spin([[x, y, z], [x, y, z + 10]], -Math.PI * 2 / 3);\n this.reorient();\n this.getMarks();\n }\n\n HexSection.prototype.reorient = function() {};\n\n HexSection.prototype.clone = function() {\n var result;\n result = new HexSection(0, 0);\n this.copyTo(result);\n return result;\n };\n\n HexSection.prototype.getMarks = function() {\n var rand;\n this.markVertices = [];\n this.populateMainMarkVertices();\n rand = Math.random();\n if (rand < 0.5) {\n this.type = 21;\n return this.addMark([0, 1, 1, 2]);\n } else {\n return this.type = 22;\n }\n };\n\n return HexSection;\n\n })(Face);\n\n TippedHexSection = (function(_super) {\n __extends(TippedHexSection, _super);\n\n function TippedHexSection(x, y) {\n var z;\n TippedHexSection.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 2, y]), new Point([x + 4, y])]);\n x = this.ar[1].ar[0];\n y = this.ar[1].ar[1];\n z = this.ar[1].ar[2];\n this.ar[2].spin([[x, y, z], [x, y, z + 10]], -Math.PI * 2 / 3);\n this.reorient();\n this.getMarks();\n }\n\n TippedHexSection.prototype.reorient = function() {};\n\n TippedHexSection.prototype.clone = function() {\n var result;\n result = new TippedHexSection(0, 0);\n this.copyTo(result);\n return result;\n };\n\n TippedHexSection.prototype.getMarks = function() {\n var rand;\n this.markVertices = [];\n this.populateMainMarkVertices();\n this.populateMidRectVertices();\n rand = Math.random();\n if (rand < 0.2) {\n this.type = 32;\n return this.addMark([0, 3, 5]);\n } else if (rand < 0.4) {\n this.type = 32;\n return this.addMark([1, 4, 3]);\n } else if (rand < 0.6) {\n this.type = 32;\n return this.addMark([2, 5, 4]);\n } else if (rand < 0.8) {\n this.type = 21;\n return this.addMark([0, 1, 1, 2]);\n } else {\n return this.type = 22;\n }\n };\n\n return TippedHexSection;\n\n })(Face);\n\n TippedHexSectionInv = (function(_super) {\n __extends(TippedHexSectionInv, _super);\n\n function TippedHexSectionInv() {\n return TippedHexSectionInv.__super__.constructor.apply(this, arguments);\n }\n\n TippedHexSectionInv.prototype.reorient = function() {\n return this.twist(Math.PI);\n };\n\n return TippedHexSectionInv;\n\n })(TippedHexSection);\n\n HexSection2 = (function(_super) {\n __extends(HexSection2, _super);\n\n function HexSection2() {\n return HexSection2.__super__.constructor.apply(this, arguments);\n }\n\n HexSection2.prototype.reorient = function() {\n return this.twist(Math.PI * 1 / 3);\n };\n\n return HexSection2;\n\n })(HexSection);\n\n HexSection3 = (function(_super) {\n __extends(HexSection3, _super);\n\n function HexSection3() {\n return HexSection3.__super__.constructor.apply(this, arguments);\n }\n\n HexSection3.prototype.reorient = function() {\n return this.twist(Math.PI * 2 / 3);\n };\n\n return HexSection3;\n\n })(HexSection);\n\n HexSection4 = (function(_super) {\n __extends(HexSection4, _super);\n\n function HexSection4() {\n return HexSection4.__super__.constructor.apply(this, arguments);\n }\n\n HexSection4.prototype.reorient = function() {\n return this.twist(Math.PI);\n };\n\n return HexSection4;\n\n })(HexSection);\n\n HexSection5 = (function(_super) {\n __extends(HexSection5, _super);\n\n function HexSection5() {\n return HexSection5.__super__.constructor.apply(this, arguments);\n }\n\n HexSection5.prototype.reorient = function() {\n return this.twist(-Math.PI * 1 / 3);\n };\n\n return HexSection5;\n\n })(HexSection);\n\n HexSection6 = (function(_super) {\n __extends(HexSection6, _super);\n\n function HexSection6() {\n return HexSection6.__super__.constructor.apply(this, arguments);\n }\n\n HexSection6.prototype.reorient = function() {\n return this.twist(-Math.PI * 2 / 3);\n };\n\n return HexSection6;\n\n })(HexSection);\n\n HexSection7 = (function(_super) {\n __extends(HexSection7, _super);\n\n function HexSection7() {\n return HexSection7.__super__.constructor.apply(this, arguments);\n }\n\n HexSection7.prototype.reorient = function() {\n return this.twist(Math.PI / 2);\n };\n\n HexSection7.prototype.getMarks = function() {\n var i, j, rand, x, y, z, _i;\n this.markVertices = [];\n this.populateMainMarkVertices();\n for (i = _i = 0; _i <= 2; i = ++_i) {\n j = i + 1;\n if (i === 2) {\n j = 0;\n }\n x = (this.ar[i].ar[0] + this.ar[j].ar[0]) / 2;\n y = (this.ar[i].ar[1] + this.ar[j].ar[1]) / 2;\n z = (this.ar[i].ar[2] + this.ar[j].ar[2]) / 2;\n this.markVertices.push(new Point([x, y, z]));\n }\n rand = Math.random();\n if (rand < 0.1) {\n this.type = 15;\n return this.addMark([0, 1, 4]);\n } else if (rand < 0.2) {\n this.type = 15;\n return this.addMark([0, 4, 2]);\n } else if (rand < 0.3) {\n this.type = 15;\n return this.addMark([0, 3, 2]);\n } else if (rand < 0.4) {\n this.type = 15;\n return this.addMark([3, 1, 2]);\n } else if (rand < 0.5) {\n this.type = 15;\n return this.addMark([1, 2, 5]);\n } else if (rand < 0.6) {\n this.type = 15;\n return this.addMark([0, 1, 5]);\n } else if (rand < 0.8) {\n this.type = 16;\n return this.addMark([0, 1, 1, 2]);\n } else {\n return this.type = 17;\n }\n };\n\n HexSection7.prototype.clone = function() {\n var result;\n result = new HexSection7(0, 0);\n this.copyTo(result);\n return result;\n };\n\n return HexSection7;\n\n })(HexSection);\n\n HexSection8 = (function(_super) {\n __extends(HexSection8, _super);\n\n function HexSection8() {\n return HexSection8.__super__.constructor.apply(this, arguments);\n }\n\n HexSection8.prototype.reorient = function() {\n return this.twist(-Math.PI / 2);\n };\n\n return HexSection8;\n\n })(HexSection7);\n\n HexSection9 = (function(_super) {\n __extends(HexSection9, _super);\n\n function HexSection9() {\n return HexSection9.__super__.constructor.apply(this, arguments);\n }\n\n HexSection9.prototype.reorient = function() {};\n\n return HexSection9;\n\n })(HexSection7);\n\n HexSection10 = (function(_super) {\n __extends(HexSection10, _super);\n\n function HexSection10() {\n return HexSection10.__super__.constructor.apply(this, arguments);\n }\n\n HexSection10.prototype.reorient = function() {\n return this.twist(Math.PI);\n };\n\n return HexSection10;\n\n })(HexSection7);\n\n PentagonInv = (function(_super) {\n __extends(PentagonInv, _super);\n\n function PentagonInv(x, y) {\n PentagonInv.__super__.constructor.call(this, x, y);\n }\n\n PentagonInv.prototype.reorient = function() {\n var x1, y1, z1;\n x1 = this.ar[0].ar[0];\n y1 = this.ar[0].ar[1];\n z1 = this.ar[0].ar[2];\n return this.spin([[x1, y1, z1], [x1, y1, z1 + 10]], Math.PI);\n };\n\n return PentagonInv;\n\n })(Pentagon);\n\n ZShape = (function(_super) {\n __extends(ZShape, _super);\n\n function ZShape(x, y) {\n ZShape.__super__.constructor.call(this, [new Point([x, y]), new Point([2 + x, y]), new Point([2 + x, 1 + y]), new Point([3 + x, 1 + y]), new Point([3 + x, 2 + y]), new Point([1 + x, 2 + y]), new Point([1 + x, 1 + y]), new Point([x, 1 + y])]);\n this.reorient();\n this.getMarks();\n }\n\n ZShape.prototype.reorient = function() {};\n\n ZShape.prototype.getMarks = function() {\n var rand;\n this.markVertices = [];\n this.populateMainMarkVertices();\n rand = Math.random();\n if (rand < 0.5) {\n this.type = 9;\n return this.addMark([0, 1, 2, 2, 3, 4, 5, 6, 7]);\n } else {\n return this.type = 10;\n }\n };\n\n ZShape.prototype.clone = function() {\n var result;\n result = new ZShape(0, 0);\n this.copyTo(result);\n return result;\n };\n\n return ZShape;\n\n })(Face);\n\n ZInverted = (function(_super) {\n __extends(ZInverted, _super);\n\n function ZInverted(x, y) {\n ZInverted.__super__.constructor.call(this, x, y);\n }\n\n ZInverted.prototype.reorient = function() {\n var extension, x1, y1, z1;\n x1 = this.ar[0].ar[0];\n y1 = this.ar[0].ar[1];\n z1 = this.ar[0].ar[2];\n this.spin([[x1, y1, z1], [x1, y1 + 10, z1]], Math.PI);\n extension = new Point([this.ar[0].ar[0], this.ar[0].ar[1], this.ar[0].ar[2] + 1]);\n return this.normal = new Normal([this.ar[0], extension]);\n };\n\n return ZInverted;\n\n })(ZShape);\n\n SoftL = (function(_super) {\n __extends(SoftL, _super);\n\n function SoftL(x, y) {\n SoftL.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 1, y]), new Point([x + 1, y + 3]), new Point([x - 2, y + 3]), new Point([x - 2, y + 2]), new Point([x - 1, 2 + y]), new Point([x, 1 + y])]);\n this.reorient();\n this.getMarks();\n }\n\n SoftL.prototype.reorient = function() {};\n\n SoftL.prototype.getMarks = function() {\n var rand, x, y, z;\n this.markVertices = [];\n this.populateMainMarkVertices();\n x = (this.ar[5].ar[0] + this.ar[6].ar[0]) / 2;\n y = (this.ar[5].ar[1] + this.ar[6].ar[1]) / 2;\n z = (this.ar[5].ar[2] + this.ar[6].ar[2]) / 2;\n this.markVertices.push(new Point([x, y, z]));\n rand = Math.random();\n if (rand < 0.25) {\n this.type = 11;\n return this.addMark([0, 1, 2, 7, 6]);\n } else if (rand < 0.5) {\n this.type = 11;\n return this.addMark([2, 3, 4, 5, 7]);\n } else if (rand < 0.75) {\n this.type = 12;\n return this.addMark([0, 1, 2, 2, 3, 4, 5, 6]);\n } else {\n return this.type = 13;\n }\n };\n\n SoftL.prototype.clone = function() {\n var result;\n result = new SoftL(0, 0);\n this.copyTo(result);\n return result;\n };\n\n return SoftL;\n\n })(Face);\n\n El = (function(_super) {\n __extends(El, _super);\n\n function El(x, y) {\n El.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 1, y]), new Point([x + 1, y + 2]), new Point([x - 1, y + 2]), new Point([x - 1, y + 1]), new Point([x, y + 1])]);\n this.getMarks();\n }\n\n El.prototype.getMarks = function() {\n var rand;\n this.markVertices = [];\n this.populateMainMarkVertices();\n rand = Math.random();\n if (rand < 0.5) {\n this.addMark([0, 1, 1, 2, 3, 4, 5]);\n return this.type = 42;\n } else {\n return this.type = 25;\n }\n };\n\n El.prototype.clone = function() {\n var result;\n result = new El(0, 0);\n this.copyTo(result);\n return result;\n };\n\n return El;\n\n })(Face);\n\n ElInv = (function(_super) {\n __extends(ElInv, _super);\n\n function ElInv(x, y) {\n ElInv.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 1, y]), new Point([x + 1, y + 1]), new Point([x + 2, y + 1]), new Point([x + 2, y + 2]), new Point([x, y + 2])]);\n this.getMarks();\n }\n\n ElInv.prototype.getMarks = function() {\n var rand;\n this.markVertices = [];\n this.populateMainMarkVertices();\n rand = Math.random();\n if (rand < 0.5) {\n this.addMark([0, 1, 1, 2, 3, 4, 5]);\n return this.type = 42;\n } else {\n return this.type = 25;\n }\n };\n\n ElInv.prototype.clone = function() {\n var result;\n result = new ElInv(0, 0);\n this.copyTo(result);\n return result;\n };\n\n return ElInv;\n\n })(Face);\n\n SoftLInv = (function(_super) {\n __extends(SoftLInv, _super);\n\n function SoftLInv(x, y) {\n SoftLInv.__super__.constructor.call(this, x, y);\n }\n\n SoftLInv.prototype.reorient = function() {\n var x1, y1, z1;\n x1 = this.ar[0].ar[0];\n y1 = this.ar[0].ar[1];\n z1 = this.ar[0].ar[2];\n return this.spin([[x1, y1, z1], [x1, y1, z1 + 10]], Math.PI);\n };\n\n return SoftLInv;\n\n })(SoftL);\n\n SoftLInv2 = (function(_super) {\n __extends(SoftLInv2, _super);\n\n function SoftLInv2(x, y) {\n SoftLInv2.__super__.constructor.call(this, x, y);\n }\n\n SoftLInv2.prototype.reorient = function() {\n var x1, y1, z1;\n x1 = this.ar[0].ar[0];\n y1 = this.ar[0].ar[1];\n z1 = this.ar[0].ar[2];\n return this.spin([[x1, y1, z1], [x1, y1, z1 + 10]], -Math.PI / 2);\n };\n\n return SoftLInv2;\n\n })(SoftL);\n\n SoftLSide = (function(_super) {\n __extends(SoftLSide, _super);\n\n function SoftLSide(x, y) {\n SoftLSide.__super__.constructor.call(this, x, y);\n }\n\n SoftLSide.prototype.reorient = function() {\n var x1, y1, z1;\n x1 = this.ar[0].ar[0];\n y1 = this.ar[0].ar[1];\n z1 = this.ar[0].ar[2];\n return this.spin([[x1, y1, z1], [x1, y1, z1 + 10]], -Math.PI / 2);\n };\n\n return SoftLSide;\n\n })(SoftL);\n\n HorseShoe = (function(_super) {\n __extends(HorseShoe, _super);\n\n function HorseShoe(x, y) {\n HorseShoe.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 1, y]), new Point([x + 1, y + 1]), new Point([x + 2, y + 1]), new Point([x + 2, y]), new Point([x + 3, y]), new Point([x + 3, y + 2]), new Point([x, y + 2])]);\n this.reorient();\n this.getMarks();\n }\n\n HorseShoe.prototype.reorient = function() {};\n\n HorseShoe.prototype.getMarks = function() {\n var rand, x, y, z;\n this.markVertices = [];\n this.populateMainMarkVertices();\n x = (this.ar[2].ar[0] + this.ar[3].ar[0]) / 2;\n y = (this.ar[2].ar[1] + this.ar[3].ar[1]) / 2;\n z = (this.ar[2].ar[2] + this.ar[3].ar[2]) / 2;\n this.markVertices.push(new Point([x, y, z]));\n x = (this.ar[6].ar[0] + this.ar[7].ar[0]) / 2;\n y = (this.ar[6].ar[1] + this.ar[7].ar[1]) / 2;\n z = (this.ar[6].ar[2] + this.ar[7].ar[2]) / 2;\n this.markVertices.push(new Point([x, y, z]));\n rand = Math.random();\n if (rand < 0.2) {\n this.type = 36;\n return this.addMark([0, 1, 2, 8, 9, 7]);\n } else if (rand < 0.4) {\n this.type = 36;\n return this.addMark([8, 3, 4, 5, 6, 9]);\n } else if (rand < 0.7) {\n this.type = 37;\n return this.addMark([0, 1, 2, 2, 3, 4, 5, 6, 7]);\n } else {\n return this.type = 38;\n }\n };\n\n HorseShoe.prototype.clone = function() {\n var result;\n result = new HorseShoe(0, 0);\n this.copyTo(result);\n return result;\n };\n\n return HorseShoe;\n\n })(Face);\n\n HorseShoeSideways = (function(_super) {\n __extends(HorseShoeSideways, _super);\n\n function HorseShoeSideways() {\n return HorseShoeSideways.__super__.constructor.apply(this, arguments);\n }\n\n HorseShoeSideways.prototype.reorient = function() {\n var x1, y1, z1;\n x1 = this.ar[0].ar[0];\n y1 = this.ar[0].ar[1];\n z1 = this.ar[0].ar[2];\n return this.spin([[x1, y1, z1], [x1, y1, z1 + 10]], Math.PI / 2);\n };\n\n return HorseShoeSideways;\n\n })(HorseShoe);\n\n Coffin = (function(_super) {\n __extends(Coffin, _super);\n\n function Coffin(x, y) {\n var extension, i, j, z, _i, _j, _k, _ref;\n Coffin.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 2, y]), new Point([x + 4, y]), new Point([x + 6, y]), new Point([x + 8, y]), new Point([x + 10, y]), new Point([x + 12, y]), new Point([x + 12, y + 2])]);\n for (i = _i = 1; _i <= 4; i = ++_i) {\n x = this.ar[i].ar[0];\n y = this.ar[i].ar[1];\n z = this.ar[i].ar[2];\n for (j = _j = 0, _ref = i - 1; 0 <= _ref ? _j <= _ref : _j >= _ref; j = 0 <= _ref ? ++_j : --_j) {\n this.ar[j].spin([[x, y, z], [x, y, z + 10]], -Math.PI * 2 / 6);\n }\n }\n x = this.ar[5].ar[0];\n y = this.ar[5].ar[1];\n z = this.ar[5].ar[2];\n for (j = _k = 0; _k <= 4; j = ++_k) {\n this.ar[j].spin([[x, y, z], [x, y, z + 10]], Math.PI / 6);\n }\n extension = new Point([this.ar[0].ar[0], this.ar[0].ar[1], this.ar[0].ar[2] + 1]);\n this.normal = new Normal([this.ar[0], extension]);\n this.getMarks();\n }\n\n Coffin.prototype.getMarks = function() {\n var rand, x, y, z;\n this.markVertices = [];\n this.populateMainMarkVertices();\n x = (this.ar[2].ar[0] + this.ar[3].ar[0]) / 2;\n y = (this.ar[2].ar[1] + this.ar[3].ar[1]) / 2;\n z = (this.ar[2].ar[2] + this.ar[3].ar[2]) / 2;\n this.markVertices.push(new Point([x, y, z]));\n x = (this.ar[6].ar[0] + this.ar[7].ar[0]) / 2;\n y = (this.ar[6].ar[1] + this.ar[7].ar[1]) / 2;\n z = (this.ar[6].ar[2] + this.ar[7].ar[2]) / 2;\n this.markVertices.push(new Point([x, y, z]));\n rand = Math.random();\n if (rand < 0.2) {\n this.type = 39;\n return this.addMark([7, 0, 1, 2, 8, 9]);\n } else if (rand < 0.4) {\n this.type = 39;\n return this.addMark([8, 3, 4, 5, 6, 9]);\n } else if (rand < 0.7) {\n this.type = 40;\n return this.addMark([0, 1, 2, 2, 3, 4, 5, 6, 7]);\n } else {\n return this.type = 41;\n }\n };\n\n Coffin.prototype.clone = function() {\n var result;\n result = new Coffin(0, 0);\n this.copyTo(result);\n return result;\n };\n\n return Coffin;\n\n })(Face);\n\n Pattern = (function(_super) {\n __extends(Pattern, _super);\n\n function Pattern() {\n this.moveSlide = __bind(this.moveSlide, this);\n var _i, _results;\n Pattern.__super__.constructor.apply(this, arguments);\n this.allowedRotations = (function() {\n _results = [];\n for (_i = 0; _i <= 23; _i++){ _results.push(_i); }\n return _results;\n }).apply(this);\n this.disallowedPairs = [];\n this.folds = [];\n this.currentPace = 10;\n this.stepsExecuted = 0;\n this.choices = [];\n this.correctChoice = randInt(OPTIONS);\n this.answer = \"z\";\n this.boundingCube = [];\n this.workingCopy = {};\n this.mainOffset = OFFSET;\n this.horizPentAxes = [];\n this.vertPentAxes = [];\n this.vertTriangleAxes = [];\n this.horizTriangleAxes = [];\n this.sliding = false;\n this.slidePosition = 0;\n }\n\n Pattern.prototype.clone = function() {\n var cln, f, faces, _i, _len, _ref;\n faces = [];\n _ref = this.ar;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n f = _ref[_i];\n faces.push(f.clone());\n }\n cln = new Pattern(faces);\n cln.folds = this.folds;\n cln.currentPace = this.currentPace;\n cln.rotation = this.rotation;\n cln.totalSteps = this.totalSteps;\n cln.pov = this.pov;\n cln.boundingCube = this.boundingCube;\n cln.screenBounds = this.screenBounds;\n return cln;\n };\n\n Pattern.prototype.toArray = function() {\n var c, f, m, p, result, _i, _j, _k, _l, _len, _len1, _len2, _len3, _len4, _len5, _len6, _m, _n, _o, _ref, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6;\n result = [];\n _ref = this.ar;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n f = _ref[_i];\n _ref1 = f.ar;\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n p = _ref1[_j];\n _ref2 = p.ar;\n for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {\n c = _ref2[_k];\n result.push(c);\n }\n }\n _ref3 = f.marks;\n for (_l = 0, _len3 = _ref3.length; _l < _len3; _l++) {\n m = _ref3[_l];\n _ref4 = m.ar;\n for (_m = 0, _len4 = _ref4.length; _m < _len4; _m++) {\n p = _ref4[_m];\n _ref5 = p.ar;\n for (_n = 0, _len5 = _ref5.length; _n < _len5; _n++) {\n c = _ref5[_n];\n result.push(c);\n }\n }\n }\n _ref6 = f.normal.ar[1].ar;\n for (_o = 0, _len6 = _ref6.length; _o < _len6; _o++) {\n c = _ref6[_o];\n result.push(c);\n }\n }\n return result;\n };\n\n Pattern.prototype.restoreFromArray = function(storage) {\n var c, f, i, m, p, _i, _j, _k, _l, _len, _len1, _len2, _len3, _m, _n, _ref, _ref1, _ref2, _ref3, _results;\n i = 0;\n _ref = this.ar;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n f = _ref[_i];\n _ref1 = f.ar;\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n p = _ref1[_j];\n for (c = _k = 0; _k <= 2; c = ++_k) {\n p.ar[c] = storage[i];\n ++i;\n }\n }\n _ref2 = f.marks;\n for (_l = 0, _len2 = _ref2.length; _l < _len2; _l++) {\n m = _ref2[_l];\n _ref3 = m.ar;\n for (_m = 0, _len3 = _ref3.length; _m < _len3; _m++) {\n p = _ref3[_m];\n for (c = _n = 0; _n <= 2; c = ++_n) {\n p.ar[c] = storage[i];\n ++i;\n }\n }\n }\n _results.push((function() {\n var _o, _results1;\n _results1 = [];\n for (c = _o = 0; _o <= 2; c = ++_o) {\n f.normal.ar[1].ar[c] = storage[i];\n _results1.push(++i);\n }\n return _results1;\n })());\n }\n return _results;\n };\n\n Pattern.prototype.setPov = function() {\n var l, rand;\n l = this.allowedRotations.length;\n rand = randInt(l);\n this.rotation = this.allowedRotations[rand];\n this.povn = this.getPovn();\n return this.pov = povs[this.povn];\n };\n\n Pattern.prototype.getPovn = function() {\n var allowed, pair, povn, _i, _len, _ref;\n povn = 0;\n while (true) {\n allowed = true;\n povn = randInt(4);\n _ref = this.disallowedPairs;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n pair = _ref[_i];\n if (pair[0] === this.rotation && pair[1] === povn) {\n allowed = false;\n break;\n }\n }\n if (allowed) {\n break;\n }\n }\n return povn;\n };\n\n Pattern.prototype.getCorrectAnswer = function() {\n var faces, i, l, result, _i;\n faces = [];\n l = this.workingCopy.ar.length - 1;\n for (i = _i = 0; 0 <= l ? _i <= l : _i >= l; i = 0 <= l ? ++_i : --_i) {\n if (this.workingCopy.ar[i].normal.facing(this.pov)) {\n faces.push(this.workingCopy.ar[i].clone());\n this.workingCopy.ar[i].explication = true;\n }\n }\n result = new Choice(faces);\n result.pov = this.pov;\n return result;\n };\n\n Pattern.prototype.populateChoices = function() {\n var archive, blank, correctPossibilities, face, i, j, perspectives, storePossibility, _i, _j, _k, _l, _len, _m, _n, _ref, _ref1, _ref2, _ref3, _ref4, _ref5;\n perspectives = [];\n for (i = _i = 0, _ref = OPTIONS - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n perspectives[i] = i !== this.correctChoice ? this.getPovn() : this.povn;\n }\n archive = this.workingCopy.toArray();\n correctPossibilities = [];\n storePossibility = (function(_this) {\n return function(n) {\n var correctAnswer, face, _j, _len, _ref1;\n correctAnswer = [];\n _ref1 = _this.workingCopy.ar;\n for (_j = 0, _len = _ref1.length; _j < _len; _j++) {\n face = _ref1[_j];\n if (face.normal.facing(povs[n])) {\n correctAnswer.push(face.clone());\n }\n }\n return correctPossibilities[n].push(correctAnswer);\n };\n })(this);\n for (i = _j = 0, _ref1 = povs.length - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; i = 0 <= _ref1 ? ++_j : --_j) {\n correctPossibilities[i] = [];\n if (__indexOf.call(perspectives, i) >= 0) {\n storePossibility(i);\n }\n }\n for (i = _k = 0, _ref2 = this.allowedRotations.length - 1; 0 <= _ref2 ? _k <= _ref2 : _k >= _ref2; i = 0 <= _ref2 ? ++_k : --_k) {\n if (this.allowedRotations[i] > 0) {\n this.workingCopy.rotate(this.allowedRotations[i], 1);\n this.workingCopy.reposition();\n for (j = _l = 0, _ref3 = povs.length - 1; 0 <= _ref3 ? _l <= _ref3 : _l >= _ref3; j = 0 <= _ref3 ? ++_l : --_l) {\n if (__indexOf.call(perspectives, j) >= 0) {\n storePossibility(j);\n }\n }\n this.workingCopy.restoreFromArray(archive);\n }\n }\n if (this.rotation > 0) {\n this.workingCopy.rotate(this.rotation, 1);\n }\n this.workingCopy.reposition();\n this.choices = [];\n for (i = _m = 0, _ref4 = OPTIONS - 1; 0 <= _ref4 ? _m <= _ref4 : _m >= _ref4; i = 0 <= _ref4 ? ++_m : --_m) {\n if (i === this.correctChoice) {\n this.choices.push(this.getCorrectAnswer());\n } else {\n this.workingCopy.pov = povs[perspectives[i]];\n this.choices.push(this.getFalseCandidate(correctPossibilities[perspectives[i]]));\n }\n }\n blank = true;\n _ref5 = this.choices[this.correctChoice].ar;\n for (_n = 0, _len = _ref5.length; _n < _len; _n++) {\n face = _ref5[_n];\n if (face.marks.length > 0) {\n blank = false;\n }\n }\n if (blank) {\n return this.postInit();\n }\n };\n\n Pattern.prototype.getTypes = function() {\n var face, i, result, _i, _j, _len, _ref;\n result = [];\n for (i = _i = 0; _i <= 42; i = ++_i) {\n result.push(0);\n }\n _ref = this.ar;\n for (_j = 0, _len = _ref.length; _j < _len; _j++) {\n face = _ref[_j];\n result[face.type] += 1;\n }\n return result;\n };\n\n Pattern.prototype.print = function(n, cDim, cMargin) {\n var face, scaling, _i, _j, _len, _len1, _ref, _ref1, _results;\n scaling = getScaling(this.screenBounds, cDim, cMargin);\n _ref = this.ar;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n face = _ref[_i];\n face.printBack(n, this.pov, scaling);\n }\n _ref1 = this.ar;\n _results = [];\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n face = _ref1[_j];\n _results.push(face.printFront(n, this.pov, scaling));\n }\n return _results;\n };\n\n Pattern.prototype.explicate = function(n, cDim, cMargin) {\n var face, scaling, _i, _j, _len, _len1, _ref, _ref1;\n scaling = getScaling(this.screenBounds, cDim, cMargin);\n _ref = this.ar;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n face = _ref[_i];\n face.printBack(n, this.pov, scaling);\n }\n _ref1 = this.ar;\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n face = _ref1[_j];\n if (face.explication) {\n face.accentuate(n, this.pov, scaling);\n } else {\n face.printFront(n, this.pov, scaling);\n }\n }\n if (!this.sliding) {\n return $('#slider').slider(\"value\", this.stepsExecuted);\n }\n };\n\n Pattern.prototype.printFaceArray = function(n, choice, cDim, cMargin) {\n var bounds, face, scaling, _i, _len, _ref, _results;\n bounds = getBounds(choice.ar, choice.pov);\n scaling = getScaling(bounds, cDim, cMargin);\n _ref = choice.ar;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n face = _ref[_i];\n if (n - 1 != currentPage.correctChoice || currentPage.answer == 'z'){\n _results.push(face.printFront(n, choice.pov, scaling));\n }else{\n _results.push(face.accentuate(n, choice.pov, scaling));\n }\n }\n return _results;\n };\n\n Pattern.prototype.display = function() {\n var i, n, _i, _results;\n if (testing) {\n return this.workingCopy.print(0, DIMENSION0, this.offset);\n } else {\n this.print(0, DIMENSION0, this.mainOffset);\n n = this.choices.length - 1;\n _results = [];\n for (i = _i = 0; 0 <= n ? _i <= n : _i >= n; i = 0 <= n ? ++_i : --_i) {\n _results.push(this.printFaceArray(i + 1, this.choices[i], DIMENSION, this.offset));\n }\n return _results;\n }\n };\n\n Pattern.prototype.describe = function() {\n var face, _i, _len, _ref, _results;\n _ref = this.ar;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n face = _ref[_i];\n _results.push(face.describe());\n }\n return _results;\n };\n\n Pattern.prototype.sanitize = function() {\n var face, _i, _len, _ref, _results;\n _ref = this.ar;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n face = _ref[_i];\n _results.push(face.sanitize());\n }\n return _results;\n };\n\n Pattern.prototype.translate = function(x, y, z) {\n var face, _i, _len, _ref, _results;\n _ref = this.ar;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n face = _ref[_i];\n _results.push(face.translate(x, y, z));\n }\n return _results;\n };\n\n Pattern.prototype.reposition = function() {\n var face, topX, topY, topZ, tops, _i, _len, _ref;\n topX = 1000;\n topY = 1000;\n topZ = 1000;\n _ref = this.ar;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n face = _ref[_i];\n tops = face.getTops();\n if (tops[0] < topX) {\n topX = tops[0];\n }\n if (tops[1] < topY) {\n topY = tops[1];\n }\n if (tops[2] < topZ) {\n topZ = tops[2];\n }\n }\n return this.translate(-topX, -topY, -topZ);\n };\n\n Pattern.prototype.fold = function() {\n var f, n, _i, _len, _ref, _results;\n _ref = this.folds;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n f = _ref[_i];\n _results.push((function() {\n var _j, _len1, _ref1, _results1;\n _ref1 = f.faces;\n _results1 = [];\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n n = _ref1[_j];\n _results1.push(this.ar[n].spin(f.axis, f.degrees));\n }\n return _results1;\n }).call(this));\n }\n return _results;\n };\n\n Pattern.prototype.spin = function(axis, rad) {\n var face, _i, _len, _ref, _results;\n _ref = this.ar;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n face = _ref[_i];\n _results.push(face.spin(axis, rad));\n }\n return _results;\n };\n\n Pattern.prototype.animate = function(n) {\n var currentFold, dv, f, fc, rad, thisStep, _i, _len, _ref;\n clearCanvas(n);\n this.explicate(n, DIMENSION0, this.mainOffset);\n\n if (this.stepsExecuted >= this.totalSteps) {\n animDir = false;\n }\n if (this.stepsExecuted <= 0) {\n animDir = true;\n }\n thisStep = this.stepsExecuted;\n thisStep += animDir ? 1 : 0;\n if (thisStep <= (this.currentPace * this.folds.length)) {\n currentFold = Math.floor((thisStep - 1) / this.currentPace);\n f = this.folds[currentFold];\n rad = f.degrees / this.currentPace;\n if (!animDir) {\n rad = -rad;\n }\n _ref = f.faces;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n fc = _ref[_i];\n this.ar[fc].spin(f.axis, rad);\n }\n } else if (thisStep <= this.totalSteps) {\n dv = this.totalSteps - (this.currentPace * this.folds.length);\n if (!animDir) {\n dv = -dv;\n }\n this.rotate(this.rotation, dv);\n }\n this.stepsExecuted += animDir ? 1 : -1;\n if (((this.stepsExecuted >= this.totalSteps) || (this.stepsExecuted <= 0)) && !this.sliding) {\n console.log('Here');\n animPause = setTimeout((function() {\n return animOn = true;\n }), 2000);\n animOn = false;\n animDir = !animDir;\n clearCanvas(n);\n return this.explicate(n, DIMENSION0, this.mainOffset);\n }\n };\n\n Pattern.prototype.moveSlide = function(event, ui) {\n if (ui){\n this.slidePosition = ui.value;\n }\n if (!this.sliding) {\n animOn = false;\n $('#pause').text(\"Play\");\n this.sliding = true;\n return this.slideLoop();\n }\n };\n\n Pattern.prototype.executeStep = function (dir, count) {\n if (count == 0) {\n return;\n }\n\n this.slidePosition = this.stepsExecuted + (dir ? 1: -1);\n this.slidePosition = Math.max(this.slidePosition, 0);\n this.slidePosition = Math.min(this.slidePosition, this.totalSteps);\n this.moveSlide();\n\n setTimeout (() => this.executeStep(dir, count - 1), 30);\n }\n\n Pattern.prototype.slideLoop = function() {\n var _results;\n _results = [];\n while (this.sliding) {\n if (this.stepsExecuted === this.slidePosition) {\n _results.push(this.sliding = false);\n } else {\n animDir = this.stepsExecuted < this.slidePosition;\n _results.push(render());\n }\n }\n return _results;\n };\n\n Pattern.prototype.getFalseCandidate = function(correctPossibilities) {\n var answer, archive, blank, duplicate, endTypes, excessType, face, faces, falseSpot, finalFaces, i, l, result, startTypes, _i, _j, _k, _l, _len, _len1, _len2, _len3, _m, _n, _ref, _ref1, _ref2, _ref3;\n archive = [];\n for (i = _i = 0, _ref = this.workingCopy.ar.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n archive[i] = this.workingCopy.ar[i];\n }\n excessType = -1;\n l = this.workingCopy.ar.length;\n startTypes = this.workingCopy.getTypes();\n while (true) {\n duplicate = false;\n falseSpot = randInt(l);\n if (excessType >= 0) {\n if (this.workingCopy.ar[falseSpot].type !== excessType) {\n continue;\n }\n }\n this.workingCopy.ar[falseSpot] = this.workingCopy.ar[falseSpot].imposter();\n excessType = -1;\n endTypes = this.workingCopy.getTypes();\n for (i = _j = 0, _ref1 = endTypes.length - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; i = 0 <= _ref1 ? ++_j : --_j) {\n if (endTypes[i] > startTypes[i]) {\n excessType = i;\n }\n }\n if (excessType >= 0) {\n continue;\n }\n faces = [];\n blank = true;\n _ref2 = this.workingCopy.ar;\n for (_k = 0, _len = _ref2.length; _k < _len; _k++) {\n face = _ref2[_k];\n if (!(face.normal.facing(this.workingCopy.pov))) {\n continue;\n }\n faces.push(face);\n if (face.marks.length > 0) {\n blank = false;\n }\n }\n if (blank) {\n continue;\n }\n for (_l = 0, _len1 = correctPossibilities.length; _l < _len1; _l++) {\n answer = correctPossibilities[_l];\n if (compareFaces(answer, faces)) {\n duplicate = true;\n }\n }\n _ref3 = this.choices;\n for (_m = 0, _len2 = _ref3.length; _m < _len2; _m++) {\n answer = _ref3[_m];\n if (compareFaces(answer.ar, faces)) {\n duplicate = true;\n }\n }\n if (duplicate === false) {\n break;\n }\n }\n this.workingCopy.ar = archive;\n finalFaces = [];\n\n for (_n = 0, _len3 = faces.length; _n < _len3; _n++) {\n face = faces[_n];\n finalFaces.push(face.clone());\n }\n result = new Choice(finalFaces);\n result.pov = this.workingCopy.pov;\n return result;\n };\n\n Pattern.prototype.getDieFalseCandidate = function(correctPossibilities) {\n var answer, archive, duplicate, face, faces, finalFaces, fs1, fs2, i, result, type1, type2, _i, _j, _k, _l, _len, _len1, _len2, _len3, _m, _ref, _ref1, _ref2;\n archive = [];\n for (i = _i = 0, _ref = this.workingCopy.ar.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n archive[i] = this.workingCopy.ar[i];\n }\n while (true) {\n duplicate = false;\n fs1 = randInt(6);\n fs2 = randInt(6);\n if (fs1 === fs2) {\n continue;\n }\n type1 = this.workingCopy.ar[fs1].type;\n type2 = this.workingCopy.ar[fs2].type;\n this.workingCopy.ar[fs1] = this.workingCopy.ar[fs1].clone();\n this.workingCopy.ar[fs1].marks = [];\n this.workingCopy.ar[fs1].addDieSpots(type2);\n this.workingCopy.ar[fs2] = this.workingCopy.ar[fs2].clone();\n this.workingCopy.ar[fs2].marks = [];\n this.workingCopy.ar[fs2].addDieSpots(type1);\n faces = [];\n _ref1 = this.workingCopy.ar;\n for (_j = 0, _len = _ref1.length; _j < _len; _j++) {\n face = _ref1[_j];\n if (face.normal.facing(this.workingCopy.pov)) {\n faces.push(face);\n }\n }\n for (_k = 0, _len1 = correctPossibilities.length; _k < _len1; _k++) {\n answer = correctPossibilities[_k];\n if (compareFaces(answer, faces)) {\n duplicate = true;\n }\n }\n _ref2 = this.choices;\n for (_l = 0, _len2 = _ref2.length; _l < _len2; _l++) {\n answer = _ref2[_l];\n if (compareFaces(answer.ar, faces)) {\n duplicate = true;\n }\n }\n if (duplicate === false) {\n break;\n }\n }\n this.workingCopy.ar = archive;\n finalFaces = [];\n for (_m = 0, _len3 = faces.length; _m < _len3; _m++) {\n face = faces[_m];\n finalFaces.push(face.clone());\n }\n result = new Choice(finalFaces);\n result.pov = this.workingCopy.pov;\n return result;\n };\n\n Pattern.prototype.getBoundingCube = function() {\n var corners, deltaX, deltaY, deltaZ, dim, face, spacer, x0, x1, y0, y1, z0, z1, _i, _len, _ref;\n x0 = 1000;\n y0 = 1000;\n z0 = 1000;\n x1 = -1000;\n y1 = -1000;\n z1 = -1000;\n _ref = this.ar;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n face = _ref[_i];\n corners = face.getBoundingCube();\n if (corners[0][0] < x0) {\n x0 = corners[0][0];\n }\n if (corners[0][1] < y0) {\n y0 = corners[0][1];\n }\n if (corners[0][2] < z0) {\n z0 = corners[0][2];\n }\n if (corners[1][0] > x1) {\n x1 = corners[1][0];\n }\n if (corners[1][1] > y1) {\n y1 = corners[1][1];\n }\n if (corners[1][2] > z1) {\n z1 = corners[1][2];\n }\n }\n deltaX = x1 - x0;\n deltaY = y1 - y0;\n deltaZ = z1 - z0;\n dim = deltaX;\n if (deltaY > dim) {\n dim = deltaY;\n }\n if (deltaZ > dim) {\n dim = deltaZ;\n }\n spacer = (dim - deltaX) / 2;\n x0 = x0 - spacer;\n x1 = x1 + spacer;\n spacer = (dim - deltaY) / 2;\n y0 = y0 - spacer;\n y1 = y1 + spacer;\n spacer = (dim - deltaZ) / 2;\n z0 = z0 - spacer;\n z1 = z1 + spacer;\n return [[x0, y0, z0], [x1, y1, z1]];\n };\n\n Pattern.prototype.getHorizPentAxes = function(key, boundingCube) {\n var axis, end1, end2, endy, endz, i, j, k, result, start, x, _i;\n x = (boundingCube[0][0] + boundingCube[1][0]) / 2;\n result = [];\n for (i = _i = 0; _i <= 4; i = ++_i) {\n axis = [];\n start = this.ar[key].ar[i].ar;\n j = i + 2;\n if (j > 4) {\n j -= 5;\n }\n k = i + 3;\n if (k > 4) {\n k -= 5;\n }\n end1 = this.ar[key].ar[j].ar;\n end2 = this.ar[key].ar[k].ar;\n endy = (end1[1] + end2[1]) / 2;\n endz = (end1[2] + end2[2]) / 2;\n axis.push([x, start[1], start[2]]);\n axis.push([x, endy, endz]);\n result.push(axis);\n }\n return result;\n };\n\n Pattern.prototype.getVertPentAxes = function(key, boundingCube) {\n var axis, end1, end2, endx, endz, i, j, k, result, start, y, _i;\n y = (boundingCube[0][1] + boundingCube[1][1]) / 2;\n result = [];\n for (i = _i = 0; _i <= 4; i = ++_i) {\n axis = [];\n start = this.ar[key].ar[i].ar;\n j = i + 2;\n if (j > 4) {\n j -= 5;\n }\n k = i + 3;\n if (k > 4) {\n k -= 5;\n }\n end1 = this.ar[key].ar[j].ar;\n end2 = this.ar[key].ar[k].ar;\n endx = (end1[0] + end2[0]) / 2;\n endz = (end1[2] + end2[2]) / 2;\n axis.push([start[0], y, start[2]]);\n axis.push([endx, y, endz]);\n result.push(axis);\n }\n return result;\n };\n\n Pattern.prototype.getVertTriangleAxes = function(key, boundingCube) {\n var axis, end1, end2, endx, endz, i, j, k, result, start, y, _i;\n y = (boundingCube[0][1] + boundingCube[1][1]) / 2;\n result = [];\n for (i = _i = 0; _i <= 2; i = ++_i) {\n axis = [];\n start = this.ar[key].ar[i].ar;\n j = i + 1;\n if (j > 2) {\n j -= 3;\n }\n k = i + 2;\n if (k > 2) {\n k -= 3;\n }\n end1 = this.ar[key].ar[j].ar;\n end2 = this.ar[key].ar[k].ar;\n endx = (end1[0] + end2[0]) / 2;\n endz = (end1[2] + end2[2]) / 2;\n axis.push([start[0], y, start[2]]);\n axis.push([endx, y, endz]);\n result.push(axis);\n }\n return result;\n };\n\n Pattern.prototype.getHorizTriangleAxes = function(key, boundingCube) {\n var axis, end1, end2, endy, endz, i, j, k, result, start, x, _i;\n x = (boundingCube[0][0] + boundingCube[1][0]) / 2;\n result = [];\n for (i = _i = 0; _i <= 2; i = ++_i) {\n axis = [];\n start = this.ar[key].ar[i].ar;\n j = i + 1;\n if (j > 2) {\n j -= 3;\n }\n k = i + 2;\n if (k > 2) {\n k -= 3;\n }\n end1 = this.ar[key].ar[j].ar;\n end2 = this.ar[key].ar[k].ar;\n endy = (end1[1] + end2[1]) / 2;\n endz = (end1[2] + end2[2]) / 2;\n axis.push([x, start[1], start[2]]);\n axis.push([x, endy, endz]);\n result.push(axis);\n }\n return result;\n };\n\n Pattern.prototype.getRadians = function(n) {\n var m;\n m = n - 1;\n switch (m) {\n case -1:\n return 0;\n case 0:\n return Math.PI / 2;\n case 1:\n return Math.PI;\n case 2:\n return -Math.PI / 2;\n case 3:\n return Math.PI / 2;\n case 4:\n return Math.PI;\n case 5:\n return -Math.PI / 2;\n case 6:\n return Math.PI / 2;\n case 7:\n return Math.PI;\n case 8:\n return -Math.PI / 2;\n case 9:\n return Math.PI;\n case 10:\n return Math.PI;\n case 11:\n return Math.PI;\n case 12:\n return Math.PI;\n case 13:\n return Math.PI;\n case 14:\n return Math.PI;\n case 15:\n return Math.PI * 2 / 3;\n case 16:\n return -Math.PI * 2 / 3;\n case 17:\n return Math.PI * 2 / 3;\n case 18:\n return -Math.PI * 2 / 3;\n case 19:\n return Math.PI * 2 / 3;\n case 20:\n return -Math.PI * 2 / 3;\n case 21:\n return Math.PI * 2 / 3;\n case 22:\n return -Math.PI * 2 / 3;\n case 23:\n return Math.PI * 2 / 5;\n case 24:\n return Math.PI * 4 / 5;\n case 25:\n return -Math.PI * 2 / 5;\n case 26:\n return -Math.PI * 4 / 5;\n case 27:\n return Math.PI / 3;\n case 28:\n return Math.PI * 2 / 3;\n case 29:\n return -Math.PI / 3;\n case 30:\n return -Math.PI * 2 / 3;\n case 31:\n return Math.PI / 3;\n case 32:\n return -Math.PI / 3;\n case 33:\n return Math.PI;\n case 34:\n return Math.PI;\n case 35:\n return Math.PI;\n case 36:\n return Math.PI;\n case 37:\n return Math.PI;\n case 38:\n return Math.PI * 2 / 5;\n case 39:\n return Math.PI * 4 / 5;\n case 40:\n return -Math.PI * 2 / 5;\n case 41:\n return -Math.PI * 4 / 5;\n case 42:\n return Math.PI;\n case 43:\n return Math.PI;\n case 44:\n return Math.PI;\n case 45:\n return Math.PI;\n case 46:\n return Math.PI;\n case 47:\n return Math.PI;\n case 48:\n return Math.PI;\n case 49:\n return Math.PI;\n case 50:\n return Math.PI;\n case 51:\n return 2 * Math.PI / 3;\n case 52:\n return -2 * Math.PI / 3;\n case 53:\n return Math.PI;\n case 54:\n return Math.PI;\n case 55:\n return Math.PI;\n case 56:\n return Math.PI;\n case 57:\n return Math.PI;\n case 58:\n return Math.PI;\n case 59:\n return 2 * Math.PI / 3;\n case 60:\n return -2 * Math.PI / 3;\n }\n };\n\n // x-axis spin 4\n // y-axis spin 7\n // z-axis spin 1\n Pattern.prototype.rotate = function(n, dv, angleRad) {\n var m, rad, x0, x1, x5, y0, y1, y5, z0, z1, z5, minX, maxX, minY, maxY;\n if (angleRad){\n rad = angleRad;\n }else{\n rad = this.getRadians(n);\n }\n\n x0 = this.boundingCube[0][0];\n y0 = this.boundingCube[0][1];\n z0 = this.boundingCube[0][2];\n x1 = this.boundingCube[1][0];\n y1 = this.boundingCube[1][1];\n z1 = this.boundingCube[1][2];\n x5 = (x1 + x0) / 2;\n y5 = (y1 + y0) / 2;\n z5 = (z1 + z0) / 2;\n m = n - 1;\n\n minX = Math.min(x1 , x0);\n minY = Math.min(y1, y0);\n maxX = Math.max(x1 , x0);\n maxY = Math.max(y1, y0);\n\n switch (m) {\n case 0:\n return this.spin([[x5, y5, z0], [x5, y5, z1]], rad / dv);\n case 1:\n return this.spin([[x5, y5, z0], [x5, y5, z1]], rad / dv);\n case 2:\n return this.spin([[x5, y5, z0], [x5, y5, z1]], rad / dv);\n case 3:\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\n case 4:\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\n case 5:\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\n case 6:\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\n case 7:\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\n case 8:\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\n case 9:\n return this.spin([[x0, y5, z0], [x1, y5, z1]], rad / dv);\n case 10:\n return this.spin([[x0, y5, z1], [x1, y5, z0]], rad / dv);\n case 11:\n return this.spin([[x5, y0, z0], [x5, y1, z1]], rad / dv);\n case 12:\n return this.spin([[x5, y0, z1], [x5, y1, z0]], rad / dv);\n case 13:\n return this.spin([[x0, y0, z5], [x1, y1, z5]], rad / dv);\n case 14:\n return this.spin([[x0, y1, z5], [x1, y0, z5]], rad / dv);\n case 15:\n return this.spin([[x0, y0, z0], [x1, y1, z1]], rad / dv);\n case 16:\n return this.spin([[x0, y0, z0], [x1, y1, z1]], rad / dv);\n case 17:\n return this.spin([[x1, y0, z0], [x0, y1, z1]], rad / dv);\n case 18:\n return this.spin([[x1, y0, z0], [x0, y1, z1]], rad / dv);\n case 19:\n return this.spin([[x0, y0, z1], [x1, y1, z0]], rad / dv);\n case 20:\n return this.spin([[x0, y0, z1], [x1, y1, z0]], rad / dv);\n case 21:\n return this.spin([[x1, y0, z1], [x0, y1, z0]], rad / dv);\n case 22:\n return this.spin([[x1, y0, z1], [x0, y1, z0]], rad / dv);\n case 23:\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\n case 24:\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\n case 25:\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\n case 26:\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\n case 27:\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\n case 28:\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\n case 29:\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\n case 30:\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\n case 31:\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\n case 32:\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\n case 33:\n return this.spin(this.horizPentAxes[0], rad / dv);\n case 34:\n return this.spin(this.horizPentAxes[1], rad / dv);\n case 35:\n return this.spin(this.horizPentAxes[2], rad / dv);\n case 36:\n return this.spin(this.horizPentAxes[3], rad / dv);\n case 37:\n return this.spin(this.horizPentAxes[4], rad / dv);\n case 38:\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\n case 39:\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\n case 40:\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\n case 41:\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\n case 42:\n return this.spin(this.vertPentAxes[0], rad / dv);\n case 43:\n return this.spin(this.vertPentAxes[1], rad / dv);\n case 44:\n return this.spin(this.vertPentAxes[2], rad / dv);\n case 45:\n return this.spin(this.vertPentAxes[3], rad / dv);\n case 46:\n return this.spin(this.vertPentAxes[4], rad / dv);\n case 47:\n return this.spin([[x5, y5, z5], [x5 + 1, y5, z5 + SQ3]], rad / dv);\n case 48:\n return this.spin([[x5, y5, z5], [x5 + SQ3, y5, z5 + 1]], rad / dv);\n case 49:\n return this.spin([[x5, y5, z5], [x5 - 1, y5, z5 + SQ3]], rad / dv);\n case 50:\n return this.spin([[x5, y5, z5], [x5 - SQ3, y5, z5 + 1]], rad / dv);\n case 51:\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\n case 52:\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\n case 53:\n return this.spin(this.vertTriangleAxes[0], rad / dv);\n case 54:\n return this.spin(this.vertTriangleAxes[1], rad / dv);\n case 55:\n return this.spin(this.vertTriangleAxes[2], rad / dv);\n case 56:\n return this.spin(this.horizTriangleAxes[0], rad / dv);\n case 57:\n return this.spin(this.horizTriangleAxes[1], rad / dv);\n case 58:\n return this.spin(this.horizTriangleAxes[2], rad / dv);\n case 59:\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\n case 60:\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\n case 99:\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\n case 199:\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\n }\n };\n\n Pattern.prototype.postInit = function() {\n this.totalSteps = this.currentPace * this.folds.length;\n this.setPov();\n if (this.rotation > 0) {\n this.totalSteps += Math.round(4 * this.currentPace * Math.abs(this.getRadians(this.rotation)) / Math.PI);\n }\n this.screenBounds = getBounds(this.ar, this.pov);\n this.workingCopy = this.clone();\n this.workingCopy.fold();\n this.boundingCube = this.workingCopy.getBoundingCube();\n if (!testing) {\n this.workingCopy.reposition();\n }\n this.workingCopy.boundingCube = this.workingCopy.getBoundingCube();\n if (!testing) {\n return this.populateChoices();\n }\n };\n\n return Pattern;\n\n })(Queue);\n\n Structure1 = (function(_super) {\n __extends(Structure1, _super);\n\n function Structure1() {\n var faces, square, total, type1, _i, _len;\n faces = [];\n while (true) {\n faces = [new Square(2, 0), new Square(0, 1), new Square(1, 1), new Square(2, 1), new Square(1, 2), new Square(1, 3)];\n total = 0;\n type1 = 0;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n square = faces[_i];\n total += square.marks.length;\n if (square.type === 1) {\n type1 += 1;\n }\n }\n if (total > 1 && type1 < 2) {\n break;\n }\n }\n Structure1.__super__.constructor.call(this, faces);\n this.currentPace = 30;\n this.offset = 42;\n this.folds = [];\n this.folds.push(new Fold([0], -(Math.PI / 2), [[0, 1, 0], [10, 1, 0]]));\n this.folds.push(new Fold([5], Math.PI / 2, [[0, 3, 0], [10, 3, 0]]));\n this.folds.push(new Fold([4, 5], Math.PI / 2, [[0, 2, 0], [10, 2, 0]]));\n this.folds.push(new Fold([1], Math.PI / 2, [[1, 0, 0], [1, 10, 0]]));\n this.folds.push(new Fold([0, 3], -(Math.PI / 2), [[2, 0, 0], [2, 10, 0]]));\n this.postInit();\n }\n\n return Structure1;\n\n })(Pattern);\n\n Structure2 = (function(_super) {\n __extends(Structure2, _super);\n\n function Structure2() {\n var faces, shape, total, _i, _len;\n faces = [];\n while (true) {\n faces = [new BlankSquare(0, 4), new BlankSquare(1, 4), new BlankSquare(4, 6), new BlankSquare(4, 7), new VertRect(0, 0), new Square(0, 2), new ZShape(1, 2), new HorizRect(2, 4), new ZInverted(4, 5), new Square(4, 5)];\n total = 0;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n shape = faces[_i];\n total += shape.marks.length;\n }\n if (total > 1) {\n break;\n }\n }\n Structure2.__super__.constructor.call(this, faces);\n this.currentPace = 30;\n this.offset = 20;\n this.folds = [];\n this.folds.push(new Fold([4, 5, 6], -Math.PI / 2, [[0, 4, 0], [10, 4, 0]]));\n this.folds.push(new Fold([2, 3, 8, 9], Math.PI / 2, [[0, 5, 0], [10, 5, 0]]));\n this.folds.push(new Fold([9, 2, 3], -Math.PI / 2, [[4, 5, 0], [4, 5, 10]]));\n this.folds.push(new Fold([2, 3], -Math.PI / 2, [[4, 0, 1], [4, 10, 1]]));\n this.folds.push(new Fold([3], Math.PI / 2, [[3, 0, 1], [3, 10, 1]]));\n this.folds.push(new Fold([0, 1], Math.PI / 2, [[2, 0, 0], [2, 10, 0]]));\n this.folds.push(new Fold([0], -Math.PI / 2, [[2, 0, 1], [2, 10, 1]]));\n this.folds.push(new Fold([4, 5], -Math.PI / 2, [[1, 4, 0], [1, 4, 10]]));\n this.folds.push(new Fold([4], Math.PI / 2, [[1, 0, 2], [1, 10, 2]]));\n this.postInit();\n }\n\n return Structure2;\n\n })(Pattern);\n\n Structure3 = (function(_super) {\n __extends(Structure3, _super);\n\n function Structure3() {\n var faces, shape, total, _i, _len;\n faces = [];\n while (true) {\n faces = [new BlankSquare(4, 7), new BlankSquare(6, 5), new DiagonalRect(6, 6), new SoftL(2, 0), new HorizRectThree(0, 3), new HorizRectThree(3, 3), new SoftLInv(4, 7), new Square(6, 4), new Square(3, 7)];\n total = 0;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n shape = faces[_i];\n total += shape.marks.length;\n }\n if (total > 1) {\n break;\n }\n }\n Structure3.__super__.constructor.call(this, faces);\n this.disallowedPairs = [[4, 3], [6, 0], [12, 1], [13, 2], [16, 2], [19, 0], [21, 3], [22, 1]];\n this.currentPace = 30;\n this.offset = 20;\n this.folds = [];\n this.folds.push(folder(0, [0], 2, [4]));\n this.folds.push(new Fold([0, 8], -Math.PI / 2, [[0, 7, 0], [10, 7, 0]]));\n this.folds.push(new Fold([1, 2, 7], Math.PI / 2, [[6, 0, 0], [6, 10, 0]]));\n this.folds.push(new Fold([1, 2], Math.PI / 2, [[6, 5, 0], [6, 5, 10]]));\n this.folds.push(new Fold([2], -Math.PI / 4, [[5, 5, 0], [5, 5, 10]]));\n this.folds.push(new Fold([3, 4], -Math.PI / 2, [[3, 0, 0], [3, 10, 0]]));\n this.folds.push(new Fold([3], Math.PI / 2, [[3, 3, 0], [3, 3, 10]]));\n this.folds.push(new Fold([0, 1, 2, 6, 7, 8], -Math.PI / 2, [[0, 4, 0], [10, 4, 0]]));\n this.postInit();\n }\n\n return Structure3;\n\n })(Pattern);\n\n Structure4 = (function(_super) {\n __extends(Structure4, _super);\n\n function Structure4() {\n var faces, shape, total, _i, _len;\n faces = [];\n while (true) {\n faces = [new Triangle(2, 0), new Triangle(6, 0), new HorizRectFour(0, 2), new HorizRectFour(4, 2), new FourSquare(4, 3), new VertRectFour(8, 3), new TriangleSideways(11, 5), new VertRectFour(8, 7), new TriangleSideways(11, 9)];\n total = 0;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n shape = faces[_i];\n total += shape.marks.length;\n }\n if (total > 1) {\n break;\n }\n }\n Structure4.__super__.constructor.call(this, faces);\n this.currentPace = 30;\n this.offset = 20;\n this.folds = [];\n this.folds.push(folder(1, [0, 1], 2, [2]));\n this.folds.push(folder(0, [0, 2], -2, [4]));\n this.folds.push(folder(1, [0, 1, 2, 3], 2, [3]));\n this.folds.push(folder(0, [6, 8], 2, [9]));\n this.folds.push(folder(1, [7, 8], -2, [7]));\n this.folds.push(folder(0, [5, 6, 7, 8], 2, [8]));\n this.postInit();\n }\n\n return Structure4;\n\n })(Pattern);\n\n Structure5 = (function(_super) {\n __extends(Structure5, _super);\n\n function Structure5() {\n var faces, n, shape, total, x, x0, x1, y, y0, y1, z, _i, _j, _len;\n faces = [];\n while (true) {\n faces = [new Pentagon(1, 2), new Square(0, 2), new Square(1, 2), new PentagonInv(2, 3), new Square(2, 3), new Square(2, 4), new Square(2, 5)];\n total = 0;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n shape = faces[_i];\n total += shape.marks.length;\n }\n if (total > 1) {\n break;\n }\n if (testing) {\n break;\n }\n }\n Structure5.__super__.constructor.call(this, faces);\n this.allowedRotations = [0, 24, 25, 26, 27, 43, 44, 45, 46, 47];\n for (n = _j = 4; _j <= 6; n = ++_j) {\n this.ar[n].preSpin([[2, 3, 0], [2, 3, 10]], -Math.PI / 10);\n }\n this.currentPace = 30;\n this.offset = 20;\n this.folds = [];\n x0 = this.ar[3].ar[0].ar[0];\n y0 = this.ar[3].ar[0].ar[1];\n z = this.ar[3].ar[0].ar[2];\n x1 = this.ar[3].ar[4].ar[0];\n y1 = this.ar[3].ar[4].ar[1];\n this.folds.push(new Fold([4, 5, 6], Math.PI / 2, [[x0, y0, z], [x1, y1, z]]));\n x = this.ar[3].ar[4].ar[0];\n y = this.ar[3].ar[4].ar[1];\n this.folds.push(folder(2, [5, 6], 5 / 2, [x, y]));\n x = this.ar[3].ar[3].ar[0];\n y = this.ar[3].ar[3].ar[1];\n this.folds.push(folder(2, [6], 5 / 2, [x, y]));\n this.folds.push(folder(1, [3, 4, 5, 6], -2, [3]));\n this.folds.push(folder(1, [0], 2, [2]));\n this.folds.push(folder(0, [1], -2.5, [1]));\n this.totalSteps = this.currentPace * this.folds.length;\n this.setPov();\n if (this.rotation > 0) {\n this.totalSteps += Math.round(4 * this.currentPace * Math.abs(this.getRadians(this.rotation)) / Math.PI);\n }\n this.screenBounds = getBounds(this.ar, this.pov);\n this.workingCopy = this.clone();\n this.workingCopy.fold();\n this.boundingCube = this.workingCopy.getBoundingCube();\n this.vertPentAxes = this.workingCopy.getVertPentAxes(0, this.boundingCube);\n if (!testing) {\n this.workingCopy.reposition();\n }\n this.workingCopy.boundingCube = this.workingCopy.getBoundingCube();\n this.workingCopy.vertPentAxes = this.workingCopy.getVertPentAxes(0, this.workingCopy.boundingCube);\n if (!testing) {\n this.populateChoices();\n }\n }\n\n return Structure5;\n\n })(Pattern);\n\n Structure6 = (function(_super) {\n __extends(Structure6, _super);\n\n function Structure6() {\n var faces, shape, total, type1, _i, _len;\n faces = [];\n while (true) {\n faces = [new Square(0, 0), new Square(1, 0), new Square(1, 1), new Square(1, 2), new Square(2, 2), new Square(1, 3)];\n total = 0;\n type1 = 0;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n shape = faces[_i];\n total += shape.marks.length;\n if (shape.type === 1) {\n type1 += 1;\n }\n }\n if (total > 1 && type1 < 2) {\n break;\n }\n if (testing) {\n break;\n }\n }\n Structure6.__super__.constructor.call(this, faces);\n this.currentPace = 30;\n this.offset = 20;\n this.folds = [];\n this.folds.push(folder(1, [5], -2, [3]));\n this.folds.push(folder(0, [4], 2, [2]));\n this.folds.push(folder(1, [3, 4, 5], -2, [2]));\n this.folds.push(folder(0, [0], -2, [1]));\n this.folds.push(folder(1, [0, 1], 2, [1]));\n this.postInit();\n }\n\n return Structure6;\n\n })(Pattern);\n\n Structure7 = (function(_super) {\n __extends(Structure7, _super);\n\n function Structure7() {\n var faces, i, order, _i;\n faces = [new DieFace(2, 0), new DieFace(1, 1), new DieFace(2, 1), new DieFace(0, 2), new DieFace(1, 2), new DieFace(1, 3)];\n Structure7.__super__.constructor.call(this, faces);\n order = shuffle([1, 2, 3, 4, 5, 6]);\n for (i = _i = 0; _i <= 5; i = ++_i) {\n this.ar[i].addDieSpots(order[i]);\n }\n this.currentPace = 30;\n this.offset = 20;\n this.folds = [];\n this.folds.push(folder(1, [5], -2, [3]));\n this.folds.push(folder(0, [3], -2, [1]));\n this.folds.push(folder(1, [3, 4, 5], -2, [2]));\n this.folds.push(folder(1, [0], 2, [1]));\n this.folds.push(folder(0, [0, 2], 2, [2]));\n this.postInit();\n }\n\n Structure7.prototype.getFalseCandidate = function(correctPossibilities) {\n return this.getDieFalseCandidate(correctPossibilities);\n };\n\n return Structure7;\n\n })(Pattern);\n\n Structure8 = (function(_super) {\n __extends(Structure8, _super);\n\n function Structure8() {\n var faces, shape, total, _i, _len;\n faces = [];\n while (true) {\n faces = [new BlankTriangle(5, 0), new HorizRectFour(3, 2), new BlankTriangleInv3(0, 5), new VertRectFour(2, 3), new BlankTriangleInv2(5, 5), new BlankTriangleInv3(5, 5), new BlankTriangleInv1(5, 5), new BlankTriangle(5, 5), new VertRectFour(7, 3), new BlankTriangleInv1(10, 5), new HorizRectFour(3, 7), new BlankTriangleInv2(5, 10)];\n total = 0;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n shape = faces[_i];\n total += shape.marks.length;\n }\n if (total > 1) {\n break;\n }\n if (testing) {\n break;\n }\n }\n Structure8.__super__.constructor.call(this, faces);\n this.currentPace = 30;\n this.offset = 20;\n this.folds = [];\n this.folds.push(folder(1, [0], 2, [2]));\n this.folds.push(folder(1, [0, 1], 2, [3]));\n this.folds.push(folder(0, [2], -2, [2]));\n this.folds.push(folder(0, [2, 3], -2, [3]));\n this.folds.push(folder(1, [11], -2, [8]));\n this.folds.push(folder(1, [10, 11], -2, [7]));\n this.folds.push(folder(0, [9], 2, [8]));\n this.folds.push(folder(0, [8, 9], 2, [7]));\n this.postInit();\n }\n\n return Structure8;\n\n })(Pattern);\n\n Structure9 = (function(_super) {\n __extends(Structure9, _super);\n\n function Structure9() {\n var faces, i, shape, total, x, y, _i, _j, _k, _len;\n faces = [];\n while (true) {\n faces = [new HexSection(7, 1), new HexSection2(7, 1), new HexSection3(7, 1), new HexSection4(7, 1), new HexSection5(7, 1), new HexSection6(7, 1), new BlankSquare(1, 2), new BlankSquare(2, 2), new BlankSquare(3, 2), new BlankSquare(4, 2), new BlankSquare(5, 2), new BlankSquare(6, 2), new HexSection(1, 4), new HexSection2(1, 4), new HexSection3(1, 4), new HexSection4(1, 4), new HexSection5(1, 4), new HexSection6(1, 4)];\n total = 0;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n shape = faces[_i];\n total += shape.marks.length;\n }\n if (total > 1) {\n break;\n }\n if (testing) {\n break;\n }\n }\n Structure9.__super__.constructor.call(this, faces);\n this.allowedRotations = [0, 2, 5, 8, 28, 29, 30, 31, 48, 49, 50, 51];\n x = this.ar[11].ar[1].ar[0] - this.ar[1].ar[1].ar[0];\n y = this.ar[11].ar[1].ar[1] - this.ar[1].ar[1].ar[1];\n for (i = _j = 0; _j <= 5; i = ++_j) {\n this.ar[i].preTranslate(x, y, 0);\n }\n x = this.ar[12].ar[2].ar[0] - this.ar[6].ar[3].ar[0];\n y = this.ar[6].ar[3].ar[1] - this.ar[12].ar[2].ar[1];\n for (i = _k = 12; _k <= 17; i = ++_k) {\n this.ar[i].preTranslate(x, y, 0);\n }\n this.currentPace = 30;\n this.offset = 20;\n this.folds = [];\n this.folds.push(folder(1, [12, 13, 14, 15, 16, 17], -2, [3]));\n this.folds.push(folder(0, [6, 12, 13, 14, 15, 16, 17], -3, [2]));\n this.folds.push(folder(0, [6, 7, 12, 13, 14, 15, 16, 17], -3, [3]));\n this.folds.push(folder(0, [6, 7, 8, 12, 13, 14, 15, 16, 17], -3, [4]));\n this.folds.push(folder(1, [0, 1, 2, 3, 4, 5], 2, [2]));\n this.folds.push(folder(0, [0, 1, 2, 3, 4, 5, 11], 3, [6]));\n this.folds.push(folder(0, [0, 1, 2, 3, 4, 5, 10, 11], 3, [5]));\n this.postInit();\n }\n\n return Structure9;\n\n })(Pattern);\n\n Structure10 = (function(_super) {\n __extends(Structure10, _super);\n\n function Structure10() {\n var faces, shape, type15, type23, x0, x1, y0, y1, z, _i, _len;\n faces = [];\n while (true) {\n faces = [new HexSection8(2, 2), new StripedSquare(2, 1), new HexSection7(3, 1), new StripedSquare(1, 2), new StripedSquare(3, 0)];\n if (testing) {\n break;\n }\n type15 = false;\n type23 = false;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n shape = faces[_i];\n if (shape.type === 15) {\n type15 = true;\n }\n if (shape.type === 23) {\n type23 = true;\n }\n }\n if (type15 && type23) {\n break;\n }\n }\n Structure10.__super__.constructor.call(this, faces);\n this.allowedRotations = [0, 57, 58, 59, 60, 61];\n this.ar[3].preSpin([[2, 2, 0], [2, 2, 10]], Math.PI / 6);\n this.ar[4].preSpin([[3, 1, 0], [3, 1, 10]], Math.PI / 6);\n this.currentPace = 30;\n this.offset = 20;\n this.folds = [];\n x0 = this.ar[0].ar[2].ar[0];\n y0 = this.ar[0].ar[2].ar[1];\n z = this.ar[0].ar[2].ar[2];\n x1 = this.ar[0].ar[0].ar[0];\n y1 = this.ar[0].ar[0].ar[1];\n this.folds.push(new Fold([3], Math.PI / 2, [[x0, y0, z], [x1, y1, z]]));\n x0 = this.ar[2].ar[0].ar[0];\n y0 = this.ar[2].ar[0].ar[1];\n z = this.ar[2].ar[0].ar[2];\n x1 = this.ar[2].ar[2].ar[0];\n y1 = this.ar[2].ar[2].ar[1];\n this.folds.push(new Fold([4], -Math.PI / 2, [[x0, y0, z], [x1, y1, z]]));\n this.folds.push(folder(0, [0, 3], 2, [2]));\n this.folds.push(folder(0, [2, 4], -2, [3]));\n this.folds.push(new Fold([0, 1, 2, 3, 4], Math.PI / 3, [[0, 1.5, 0.288675], [10, 1.5, 0.288675]]));\n this.totalSteps = this.currentPace * this.folds.length;\n this.setPov();\n if (this.rotation > 0) {\n this.totalSteps += Math.round(4 * this.currentPace * Math.abs(this.getRadians(this.rotation)) / Math.PI);\n }\n this.screenBounds = getBounds(this.ar, this.pov);\n this.workingCopy = this.clone();\n this.workingCopy.fold();\n this.boundingCube = this.workingCopy.getBoundingCube();\n this.horizTriangleAxes = this.workingCopy.getHorizTriangleAxes(0, this.boundingCube);\n if (!testing) {\n this.workingCopy.reposition();\n }\n this.workingCopy.boundingCube = this.workingCopy.getBoundingCube();\n this.workingCopy.horizTriangleAxes = this.workingCopy.getHorizTriangleAxes(0, this.workingCopy.boundingCube);\n if (!testing) {\n this.populateChoices();\n }\n }\n\n return Structure10;\n\n })(Pattern);\n\n Structure11 = (function(_super) {\n __extends(Structure11, _super);\n\n function Structure11() {\n var faces, shape, type24, _i, _len;\n faces = [];\n while (true) {\n faces = [new SquareDiamond(0, 0), new SquareDiamond(0, 1), new SquareDiamond(1, 1), new SquareDiamond(1, 2), new SquareDiamond(2, 2), new SquareDiamond(2, 3)];\n if (testing) {\n break;\n }\n type24 = 0;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n shape = faces[_i];\n if (shape.type === 24) {\n ++type24;\n }\n }\n if (type24 === 2) {\n break;\n }\n }\n Structure11.__super__.constructor.call(this, faces);\n this.currentPace = 30;\n this.offset = 20;\n this.folds = [];\n this.folds.push(folder(1, [5], -2, [3]));\n this.folds.push(folder(0, [4, 5], 2, [2]));\n this.folds.push(folder(1, [0], 2, [1]));\n this.folds.push(folder(0, [0, 1], -2, [1]));\n this.folds.push(folder(1, [0, 1, 2], 2, [2]));\n this.postInit();\n }\n\n return Structure11;\n\n })(Pattern);\n\n Structure12 = (function(_super) {\n __extends(Structure12, _super);\n\n function Structure12() {\n var faces, shape, type2, type6, _i, _len;\n faces = [];\n while (true) {\n faces = [new HorizRect(4, 0), new HorizRect(0, 2), new HorizRect(4, 1), new HorizRect(0, 3), new El(3, 2), new SquareFor12(4, 2), new ElInv(6, 2), new SquareFor12(2, 4)];\n if (testing) {\n break;\n }\n type6 = 0;\n type2 = 0;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n shape = faces[_i];\n if (shape.type === 5 || shape.type === 6) {\n ++type6;\n }\n if (shape.type === 2) {\n ++type2;\n }\n }\n if (type2 > 0 && type6 > 0) {\n break;\n }\n }\n Structure12.__super__.constructor.call(this, faces);\n this.allowedRotations = [0, 14];\n this.currentPace = 30;\n this.offset = 20;\n this.folds = [];\n this.folds.push(folder(0, [6], 2, [6]));\n this.folds.push(folder(1, [0], 2, [1]));\n this.folds.push(folder(1, [0, 2], 2, [2]));\n this.folds.push(folder(0, [0, 2, 5, 6], 2, [4]));\n this.folds.push(folder(1, [7], -2, [4]));\n this.folds.push(folder(1, [1], 2, [3]));\n this.folds.push(folder(0, [1, 3], -2, [2]));\n this.postInit();\n }\n\n return Structure12;\n\n })(Pattern);\n\n Structure13 = (function(_super) {\n __extends(Structure13, _super);\n\n function Structure13() {\n var DIV1, DIV2, DIV3, faces, ga, i, shape, type0, type16, type17, type28, type29, type7, x, y, _i, _j, _k, _l, _len, _len1, _ref;\n DIV1 = 4.13916062725;\n DIV2 = 0.92729522;\n DIV3 = 3.565368245885;\n faces = [];\n while (true) {\n faces = [new TwoPentagon(4, 4), new InnerRect(5, 0), new InnerTriangleInv(7, 0), new InnerRect(0, 4), new InnerRect(2, 4), new InnerRect(4, 4), new InnerRect(6, 4), new InnerTriangle(0, 5), new InnerTriangle(2, 5), new InnerTriangle(4, 5), new InnerTriangle(6, 5)];\n if (testing) {\n break;\n }\n type0 = 0;\n type7 = 0;\n type16 = 0;\n type17 = 0;\n type28 = 0;\n type29 = 0;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n shape = faces[_i];\n if (shape.type === 0) {\n ++type0;\n }\n if (shape.type === 7) {\n ++type7;\n }\n if (shape.type === 16) {\n ++type16;\n }\n if (shape.type === 17) {\n ++type17;\n }\n if (shape.type === 28) {\n ++type28;\n }\n if (shape.type === 29) {\n ++type29;\n }\n }\n if (type28 > 0 && type7 > 0 && type0 > 0 && type29 > 0 && type17 > 0 && type16 > 0) {\n break;\n }\n }\n Structure13.__super__.constructor.call(this, faces);\n this.allowedRotations = [0, 24, 25, 26, 27];\n this.disallowedPairs = [[0, 0], [0, 1], [24, 0], [24, 1], [25, 0], [25, 1], [26, 0], [26, 1], [27, 0], [27, 1]];\n this.mainOffset = OFFSET - 5;\n this.currentPace = 30;\n this.offset = 20;\n ga = (function(_this) {\n return function(f0, p0, f1, p1) {\n var axis1, axis2, coord, result, _j, _k, _len1, _len2, _ref, _ref1;\n result = [];\n axis1 = [];\n axis2 = [];\n _ref = _this.ar[f0].ar[p0].ar;\n for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {\n coord = _ref[_j];\n axis1.push(coord);\n }\n _ref1 = _this.ar[f1].ar[p1].ar;\n for (_k = 0, _len2 = _ref1.length; _k < _len2; _k++) {\n coord = _ref1[_k];\n axis2.push(coord);\n }\n result.push(axis1);\n result.push(axis2);\n return result;\n };\n })(this);\n x = this.ar[0].ar[3].ar[0] - this.ar[1].ar[3].ar[0];\n y = this.ar[0].ar[3].ar[1] - this.ar[1].ar[3].ar[1];\n for (i = _j = 1; _j <= 2; i = ++_j) {\n this.ar[i].preTranslate(x, y, 0);\n }\n x = this.ar[0].ar[3].ar[0];\n y = this.ar[0].ar[3].ar[1];\n for (i = _k = 1; _k <= 2; i = ++_k) {\n this.ar[i].preSpin([[x, y, 0], [x, y, 10]], Math.PI / 5);\n }\n x = this.ar[9].ar[0].ar[0];\n y = this.ar[9].ar[0].ar[1];\n _ref = [3, 4, 7, 8];\n for (_l = 0, _len1 = _ref.length; _l < _len1; _l++) {\n i = _ref[_l];\n this.ar[i].preSpin([[x, y, 0], [x, y, 10]], -DIV2);\n }\n this.folds = [];\n this.folds.push(new Fold([7], Math.PI / DIV1, ga(3, 2, 3, 3)));\n this.folds.push(new Fold([3, 7], -(2 * Math.PI / 5), ga(3, 1, 3, 2)));\n this.folds.push(new Fold([3, 4, 7], -(Math.PI / DIV1), ga(4, 2, 4, 3)));\n this.folds.push(new Fold([3, 4, 7, 8], -(Math.PI / DIV3), ga(9, 0, 9, 2)));\n this.folds.push(folder(1, [3, 4, 7, 8, 9, 10], -DIV1, [5]));\n this.folds.push(folder(0, [6, 10], 5 / 2, [6]));\n this.folds.push(new Fold([2], -(Math.PI / DIV1), ga(2, 0, 2, 1)));\n this.folds.push(new Fold([1, 2], -(Math.PI / 2), ga(1, 2, 1, 3)));\n this.folds.push(folder(1, [0, 1, 2], 2, [4]));\n this.postInit();\n }\n\n return Structure13;\n\n })(Pattern);\n\n Structure14 = (function(_super) {\n __extends(Structure14, _super);\n\n function Structure14() {\n var faces, square, total, type1, _i, _len;\n faces = [];\n while (true) {\n faces = [new Square(0, 0), new Square(0, 1), new Square(1, 1), new Square(2, 1), new Square(3, 1), new Square(3, 2)];\n total = 0;\n type1 = 0;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n square = faces[_i];\n total += square.marks.length;\n if (square.type === 1) {\n type1 += 1;\n }\n }\n if (total > 1 && type1 < 2) {\n break;\n }\n }\n Structure14.__super__.constructor.call(this, faces);\n this.currentPace = 30;\n this.offset = 42;\n this.folds = [];\n this.folds.push(folder(1, [0], 2, [1]));\n this.folds.push(folder(0, [0, 1], -2, [1]));\n this.folds.push(folder(0, [0, 1, 2], -2, [2]));\n this.folds.push(folder(1, [5], -2, [2]));\n this.folds.push(folder(0, [4, 5], 2, [3]));\n this.postInit();\n }\n\n return Structure14;\n\n })(Pattern);\n\n Structure15 = (function(_super) {\n __extends(Structure15, _super);\n\n function Structure15() {\n var drop, faces, shape, total, _i, _len;\n drop = 2 - Math.sqrt(2);\n faces = [];\n while (true) {\n faces = [new DiagonalRect(0, drop), new BlankSquare(0, 2), new BlankSquare(2, 8), new Square(0, 3), new SoftL(3, 1), new HorizRectThree(1, 4), new SoftLSide(1, 6), new VertRectThree(4, 5), new Square(3, 8)];\n total = 0;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n shape = faces[_i];\n total += shape.marks.length;\n }\n if (total > 1) {\n break;\n }\n }\n Structure15.__super__.constructor.call(this, faces);\n this.disallowedPairs = [[0, 2], [1, 1], [2, 0], [3, 3], [5, 1], [8, 3], [14, 0], [15, 2]];\n this.currentPace = 30;\n this.offset = 20;\n this.folds = [];\n this.folds.push(folder(1, [0], -4, [2]));\n this.folds.push(folder(1, [0, 1], 2, [3]));\n this.folds.push(folder(0, [0, 1, 3], -2, [1]));\n this.folds.push(folder(1, [0, 1, 3, 4], 2, [4]));\n this.folds.push(folder(1, [0, 1, 3, 4, 5], 2, [5]));\n this.folds.push(folder(0, [2], -2, [3]));\n this.folds.push(folder(1, [2, 8], -2, [8]));\n this.folds.push(folder(0, [7], 2, [4]));\n this.postInit();\n }\n\n return Structure15;\n\n })(Pattern);\n\n Structure16 = (function(_super) {\n __extends(Structure16, _super);\n\n function Structure16() {\n var faces, shape, type0, type15, _i, _len;\n faces = [];\n while (true) {\n faces = [new HexSection8(1, 1), new Square(1, 0), new Square(1, 1), new Square(1, 2), new HexSection7(2, 2)];\n if (testing) {\n break;\n }\n type15 = false;\n type0 = false;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n shape = faces[_i];\n if (shape.type === 15) {\n type15 = true;\n }\n if (shape.type === 2) {\n type0 = true;\n }\n if (shape.type === 1) {\n type0 = true;\n }\n }\n if (type15 && type0) {\n break;\n }\n }\n Structure16.__super__.constructor.call(this, faces);\n this.allowedRotations = [0, 57, 58, 59, 60, 61];\n this.currentPace = 30;\n this.offset = 20;\n this.folds = [];\n this.folds.push(folder(0, [0], 2, [1]));\n this.folds.push(folder(1, [0, 1], -3 / 2, [1]));\n this.folds.push(folder(0, [4], -2, [2]));\n this.folds.push(folder(1, [3, 4], 3 / 2, [2]));\n this.folds.push(new Fold([0, 1, 2, 3, 4], Math.PI / 3, [[0, 1.5, 0.288675], [10, 1.5, 0.288675]]));\n this.totalSteps = this.currentPace * this.folds.length;\n this.setPov();\n if (this.rotation > 0) {\n this.totalSteps += Math.round(4 * this.currentPace * Math.abs(this.getRadians(this.rotation)) / Math.PI);\n }\n this.screenBounds = getBounds(this.ar, this.pov);\n this.workingCopy = this.clone();\n this.workingCopy.fold();\n this.boundingCube = this.workingCopy.getBoundingCube();\n this.horizTriangleAxes = this.workingCopy.getHorizTriangleAxes(0, this.boundingCube);\n if (!testing) {\n this.workingCopy.reposition();\n }\n this.workingCopy.boundingCube = this.workingCopy.getBoundingCube();\n this.workingCopy.horizTriangleAxes = this.workingCopy.getHorizTriangleAxes(0, this.workingCopy.boundingCube);\n if (!testing) {\n this.populateChoices();\n }\n }\n\n return Structure16;\n\n })(Pattern);\n\n Structure17 = (function(_super) {\n __extends(Structure17, _super);\n\n function Structure17() {\n var faces, shape, type30, type31, _i, _len;\n faces = [];\n while (true) {\n faces = [new StripedRect(2, 0), new StripedRect(2, 1), new StripedRect(2, 2), new StripedRect(2, 3), new StripedRect(2, 4), new VertPentagonInv(2, 3), new VertPentagon(4, 4)];\n if (testing) {\n break;\n }\n type30 = false;\n type31 = false;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n shape = faces[_i];\n if (shape.type === 30) {\n type30 = true;\n }\n if (shape.type === 31) {\n type31 = true;\n }\n }\n if (type30 && type31) {\n break;\n }\n }\n Structure17.__super__.constructor.call(this, faces);\n this.allowedRotations = [0, 34, 35, 36, 37, 38, 39, 40, 41, 42];\n this.currentPace = 30;\n this.offset = 20;\n this.folds = [];\n this.folds.push(folder(0, [5], -2, [2]));\n this.folds.push(folder(0, [6], 2, [4]));\n this.folds.push(folder(1, [0], 5 / 2, [1]));\n this.folds.push(folder(1, [0, 1], 5 / 2, [2]));\n this.folds.push(folder(1, [4, 6], -5 / 2, [4]));\n this.folds.push(folder(1, [3, 4, 6], -5 / 2, [3]));\n this.totalSteps = this.currentPace * this.folds.length;\n this.setPov();\n if (this.rotation > 0) {\n this.totalSteps += Math.round(4 * this.currentPace * Math.abs(this.getRadians(this.rotation)) / Math.PI);\n }\n this.screenBounds = getBounds(this.ar, this.pov);\n this.workingCopy = this.clone();\n this.workingCopy.fold();\n this.boundingCube = this.workingCopy.getBoundingCube();\n this.horizPentAxes = this.workingCopy.getHorizPentAxes(6, this.boundingCube);\n if (!testing) {\n this.workingCopy.reposition();\n }\n this.workingCopy.boundingCube = this.workingCopy.getBoundingCube();\n this.workingCopy.horizPentAxes = this.workingCopy.getHorizPentAxes(6, this.workingCopy.boundingCube);\n if (!testing) {\n this.populateChoices();\n }\n }\n\n return Structure17;\n\n })(Pattern);\n\n Structure18 = (function(_super) {\n __extends(Structure18, _super);\n\n function Structure18() {\n var faces, shape, type15, type32, type33, x0, x1, y0, y1, z, _i, _len;\n faces = [];\n while (true) {\n faces = [new TippedHexSection(0, 2), new TippedRect(0, 2), new TippedRect(2, 2), new TippedRect(4, 2), new TippedHexSectionInv(4, 3)];\n if (testing) {\n break;\n }\n type15 = false;\n type33 = false;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n shape = faces[_i];\n if (shape.type === 32) {\n type32 = true;\n }\n if (shape.type === 33) {\n type33 = true;\n }\n }\n if (type32 && type33) {\n break;\n }\n }\n Structure18.__super__.constructor.call(this, faces);\n this.allowedRotations = [0, 52, 53, 54, 55, 56];\n this.currentPace = 30;\n this.offset = 20;\n this.ar[3].preSpin([[4, 3, 0], [4, 3, 10]], 2 * Math.PI / 3);\n this.folds = [];\n x0 = this.ar[4].ar[0].ar[0];\n y0 = this.ar[4].ar[0].ar[1];\n z = this.ar[4].ar[0].ar[2];\n x1 = this.ar[4].ar[2].ar[0];\n y1 = this.ar[4].ar[2].ar[1];\n this.folds.push(new Fold([3], Math.PI / 2, [[x0, y0, z], [x1, y1, z]]));\n this.folds.push(folder(1, [3, 4], -2, [3]));\n this.folds.push(folder(1, [0], 2, [2]));\n this.folds.push(folder(0, [0, 1], -3, [2]));\n this.folds.push(folder(0, [2, 3, 4], 3, [2]));\n this.totalSteps = this.currentPace * this.folds.length;\n this.setPov();\n if (this.rotation > 0) {\n this.totalSteps += Math.round(4 * this.currentPace * Math.abs(this.getRadians(this.rotation)) / Math.PI);\n }\n this.screenBounds = getBounds(this.ar, this.pov);\n this.workingCopy = this.clone();\n this.workingCopy.fold();\n this.boundingCube = this.workingCopy.getBoundingCube();\n this.vertTriangleAxes = this.workingCopy.getVertTriangleAxes(0, this.boundingCube);\n if (!testing) {\n this.workingCopy.reposition();\n }\n this.workingCopy.boundingCube = this.workingCopy.getBoundingCube();\n this.workingCopy.vertTriangleAxes = this.workingCopy.getVertTriangleAxes(0, this.workingCopy.boundingCube);\n if (!testing) {\n this.populateChoices();\n }\n }\n\n return Structure18;\n\n })(Pattern);\n\n Structure19 = (function(_super) {\n __extends(Structure19, _super);\n\n function Structure19() {\n var faces, shape, type0, type34, type35, _i, _len;\n faces = [];\n while (true) {\n faces = [new DblMarkSquare(1, 0), new DblMarkSquare(1, 1), new DblMarkSquare(2, 1), new DblMarkSquare(0, 2), new DblMarkSquare(1, 2), new DblMarkSquare(0, 3)];\n if (testing) {\n break;\n }\n type34 = false;\n type35 = false;\n type0 = 0;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n shape = faces[_i];\n if (shape.type === 34) {\n type34 = true;\n }\n if (shape.type === 35) {\n type35 = true;\n }\n if (shape.type === 0) {\n ++type0;\n }\n }\n if (type34 && type35 && type0 === 3) {\n break;\n }\n }\n Structure19.__super__.constructor.call(this, faces);\n this.currentPace = 30;\n this.offset = 20;\n this.folds = [];\n this.folds.push(folder(1, [5], -2, [3]));\n this.folds.push(folder(0, [3, 5], -2, [1]));\n this.folds.push(folder(1, [0], 2, [1]));\n this.folds.push(folder(0, [2], 2, [2]));\n this.folds.push(folder(1, [0, 1, 2], 2, [2]));\n this.postInit();\n }\n\n return Structure19;\n\n })(Pattern);\n\n Structure20 = (function(_super) {\n __extends(Structure20, _super);\n\n function Structure20() {\n var faces, shape, total, _i, _len;\n faces = [];\n while (true) {\n faces = [new BlankSquare(3, 0), new BlankSquare(3, 1), new BlankSquare(3, 2), new Square(3, 3), new HorseShoe(0, 4), new VertRect(3, 4), new VertRectThree(3, 6), new HorseShoeSideways(6, 6), new HorizRect(4, 9), new Square(6, 9)];\n total = 0;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n shape = faces[_i];\n total += shape.marks.length;\n }\n if (total > 1) {\n break;\n }\n if (testing) {\n break;\n }\n }\n Structure20.__super__.constructor.call(this, faces);\n this.currentPace = 30;\n this.mainOffset = OFFSET - 5;\n this.offset = 20;\n this.folds = [];\n this.folds.push(folder(0, [9], 2, [6]));\n this.folds.push(folder(1, [8, 9], -2, [9]));\n this.folds.push(folder(0, [7, 8, 9], 2, [4]));\n this.folds.push(folder(1, [0], -2, [1]));\n this.folds.push(folder(1, [0, 1], -2, [2]));\n this.folds.push(folder(1, [0, 1, 2], 2, [3]));\n this.folds.push(folder(1, [0, 1, 2, 3], 2, [4]));\n this.folds.push(folder(0, [4], -2, [3]));\n this.folds.push(folder(1, [6, 7, 8, 9], -2, [6]));\n this.postInit();\n }\n\n return Structure20;\n\n })(Pattern);\n\n Structure21 = (function(_super) {\n __extends(Structure21, _super);\n\n function Structure21() {\n var faces, ga, i, shape, total, x, y, _i, _j, _k, _len, _len1, _len2, _ref, _ref1;\n faces = [];\n while (true) {\n faces = [new VertRect(12, 2), new VertRect(12, 6), new HorizRect(8, 3), new HorizRect(8, 6), new HorizRect(6, 3), new HorizRect(4, 6), new HorizRect(6, 6), new Coffin(0, 4), new VertRect(12, 4), new Coffin(0, 10)];\n total = 0;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n shape = faces[_i];\n total += shape.marks.length;\n }\n if (total > 1) {\n break;\n }\n if (testing) {\n break;\n }\n }\n Structure21.__super__.constructor.call(this, faces);\n this.allowedRotations = [4, 6, 7, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 22, 23];\n this.mainOffset = OFFSET - 5;\n this.currentPace = 30;\n this.offset = 20;\n ga = (function(_this) {\n return function(f0, p0, f1, p1) {\n var axis1, axis2, coord, result, _j, _k, _len1, _len2, _ref, _ref1;\n result = [];\n axis1 = [];\n axis2 = [];\n _ref = _this.ar[f0].ar[p0].ar;\n for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {\n coord = _ref[_j];\n axis1.push(coord);\n }\n _ref1 = _this.ar[f1].ar[p1].ar;\n for (_k = 0, _len2 = _ref1.length; _k < _len2; _k++) {\n coord = _ref1[_k];\n axis2.push(coord);\n }\n result.push(axis1);\n result.push(axis2);\n return result;\n };\n })(this);\n x = this.ar[7].ar[0].ar[0];\n y = this.ar[7].ar[0].ar[1];\n _ref = [3, 5, 6];\n for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {\n i = _ref[_j];\n this.ar[i].preSpin([[x, y, 0], [x, y, 10]], -Math.PI / 6);\n }\n x = this.ar[7].ar[5].ar[0];\n y = this.ar[7].ar[5].ar[1];\n _ref1 = [2, 4];\n for (_k = 0, _len2 = _ref1.length; _k < _len2; _k++) {\n i = _ref1[_k];\n this.ar[i].preSpin([[x, y, 0], [x, y, 10]], Math.PI / 6);\n }\n x = this.ar[6].ar[2].ar[0] - this.ar[9].ar[4].ar[0];\n y = this.ar[6].ar[2].ar[1] - this.ar[9].ar[4].ar[1];\n this.ar[9].preTranslate(x, y, 0);\n this.folds = [];\n this.folds.push(folder(1, [0], 2, [4]));\n this.folds.push(folder(1, [1], -2, [6]));\n this.folds.push(folder(0, [0, 1, 8], 2, [12]));\n this.folds.push(new Fold([4], -Math.PI / 3, ga(4, 1, 4, 2)));\n this.folds.push(new Fold([4, 2], -Math.PI / 2, ga(2, 2, 2, 3)));\n this.folds.push(new Fold([9], Math.PI / 2, ga(6, 2, 6, 3)));\n this.folds.push(new Fold([5], -Math.PI / 3, ga(5, 1, 5, 2)));\n this.folds.push(new Fold([5, 6, 9], -Math.PI / 3, ga(3, 0, 3, 3)));\n this.folds.push(new Fold([3, 5, 6, 9], -Math.PI / 2, ga(3, 0, 3, 1)));\n this.postInit();\n }\n\n return Structure21;\n\n })(Pattern);\n\n Structure22 = (function(_super) {\n __extends(Structure22, _super);\n\n function Structure22() {\n var faces, i, order, _i;\n faces = [new DieFace(0, 0), new DieFace(0, 1), new DieFace(1, 1), new DieFace(2, 1), new DieFace(2, 2), new DieFace(3, 2)];\n Structure22.__super__.constructor.call(this, faces);\n order = shuffle([1, 2, 3, 4, 5, 6]);\n for (i = _i = 0; _i <= 5; i = ++_i) {\n this.ar[i].addDieSpots(order[i]);\n }\n this.currentPace = 30;\n this.offset = 20;\n this.folds = [];\n this.folds.push(folder(0, [5], 2, [3]));\n this.folds.push(folder(1, [0], 2, [1]));\n this.folds.push(folder(0, [0, 1], -2, [1]));\n this.folds.push(folder(0, [0, 1, 2], -2, [2]));\n this.folds.push(folder(1, [4, 5], -2, [2]));\n this.postInit();\n }\n\n Structure22.prototype.getFalseCandidate = function(correctPossibilities) {\n return this.getDieFalseCandidate(correctPossibilities);\n };\n\n return Structure22;\n\n })(Pattern);\n\n Structure23 = (function(_super) {\n __extends(Structure23, _super);\n\n function Structure23() {\n var faces, i, order, _i;\n faces = [new DieFace(0, 0), new DieFace(0, 1), new DieFace(1, 1), new DieFace(2, 1), new DieFace(1, 2), new DieFace(1, 3)];\n Structure23.__super__.constructor.call(this, faces);\n order = shuffle([1, 2, 3, 4, 5, 6]);\n for (i = _i = 0; _i <= 5; i = ++_i) {\n this.ar[i].addDieSpots(order[i]);\n }\n this.currentPace = 30;\n this.offset = 20;\n this.folds = [];\n this.folds.push(folder(1, [5], -2, [3]));\n this.folds.push(folder(1, [0], 2, [1]));\n this.folds.push(folder(1, [4, 5], -2, [2]));\n this.folds.push(folder(0, [3], 2, [2]));\n this.folds.push(folder(0, [0, 1], -2, [1]));\n this.postInit();\n }\n\n Structure23.prototype.getFalseCandidate = function(correctPossibilities) {\n return this.getDieFalseCandidate(correctPossibilities);\n };\n\n return Structure23;\n\n })(Pattern);\n\n Structure24 = (function(_super) {\n __extends(Structure24, _super);\n\n function Structure24() {\n var faces, shape, total, _i, _len;\n faces = [];\n while (true) {\n faces = [new BlankSquare(3, 7), new BlankSquare(5, 8), new DiagonalRect(1, 1), new SoftL(2, 0), new VertRectThree(3, 0), new VertRectThree(3, 3), new SoftLInv2(4, 7), new Square(3, 6), new Square(5, 9)];\n total = 0;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n shape = faces[_i];\n total += shape.marks.length;\n }\n if (total > 1) {\n break;\n }\n }\n Structure24.__super__.constructor.call(this, faces);\n this.disallowedPairs = [[7, 2], [9, 3], [10, 1], [11, 0], [17, 0], [18, 1], [20, 3], [23, 2]];\n this.currentPace = 30;\n this.offset = 20;\n this.ar[2].preSpin([[2, 1, 0], [2, 1, 10]], Math.PI / 4);\n this.folds = [];\n this.folds.push(folder(1, [8], -2, [9]));\n this.folds.push(folder(0, [1, 8], -2, [6]));\n this.folds.push(folder(1, [0], -2, [7]));\n this.folds.push(folder(0, [1, 6, 8], 2, [4]));\n this.folds.push(folder(1, [0, 1, 6, 7, 8], -2, [6]));\n this.folds.push(new Fold([2], Math.PI / 2, [[1, 2, 0], [2, 1, 0]]));\n this.folds.push(folder(0, [2, 3], -2, [3]));\n this.folds.push(folder(1, [2, 3, 4], 2, [3]));\n this.postInit();\n }\n\n return Structure24;\n\n })(Pattern);\n\n Structure25 = (function(_super) {\n __extends(Structure25, _super);\n\n function Structure25() {\n var faces, shape, type0, type15, x0, x1, y0, y1, z, _i, _len;\n faces = [];\n while (true) {\n faces = [new HexSection9(1, 1), new VertRect(0, 1), new VertRect(1, 1), new HexSection10(2, 3), new HorizRect(2, 3)];\n if (testing) {\n break;\n }\n type15 = false;\n type0 = false;\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\n shape = faces[_i];\n if (shape.type === 15) {\n type15 = true;\n }\n if (shape.type === 6) {\n type0 = true;\n }\n if (shape.type === 5) {\n type0 = true;\n }\n }\n if (type15 && type0) {\n break;\n }\n }\n Structure25.__super__.constructor.call(this, faces);\n this.allowedRotations = [0, 52, 53, 54, 55, 56];\n this.disallowedPairs = [[0, 1], [0, 2], [52, 1], [52, 2], [53, 1], [53, 2], [54, 1], [54, 2], [55, 1], [55, 2], [56, 1], [56, 2]];\n this.ar[4].preSpin([[2, 3, 0], [2, 3, 10]], Math.PI / 6);\n this.currentPace = 30;\n this.offset = 5;\n this.folds = [];\n x0 = this.ar[3].ar[0].ar[0];\n y0 = this.ar[3].ar[0].ar[1];\n z = this.ar[3].ar[0].ar[2];\n x1 = this.ar[3].ar[2].ar[0];\n y1 = this.ar[3].ar[2].ar[1];\n this.folds.push(new Fold([4], Math.PI / 2, [[x0, y0, z], [x1, y1, z]]));\n this.folds.push(folder(1, [3, 4], -2, [3]));\n this.folds.push(folder(1, [0], 2, [1]));\n this.folds.push(folder(0, [1], -6, [1]));\n this.folds.push(folder(0, [0, 2, 3, 4], 2, [1]));\n this.totalSteps = this.currentPace * this.folds.length;\n this.setPov();\n if (this.rotation > 0) {\n this.totalSteps += Math.round(4 * this.currentPace * Math.abs(this.getRadians(this.rotation)) / Math.PI);\n }\n this.screenBounds = getBounds(this.ar, this.pov);\n this.workingCopy = this.clone();\n this.workingCopy.fold();\n this.boundingCube = this.workingCopy.getBoundingCube();\n this.vertTriangleAxes = this.workingCopy.getVertTriangleAxes(0, this.boundingCube);\n if (!testing) {\n this.workingCopy.reposition();\n }\n this.workingCopy.boundingCube = this.workingCopy.getBoundingCube();\n this.workingCopy.vertTriangleAxes = this.workingCopy.getVertTriangleAxes(0, this.workingCopy.boundingCube);\n if (!testing) {\n this.populateChoices();\n }\n }\n\n return Structure25;\n\n })(Pattern);\n\n newPage = function() {\n questionStartTime = new Date().getTime();\n ++pagePosition;\n rotateCopy = null;\n if (pagePosition > serializedPages.length) {\n currentPage = getStructure();\n serializedPages.push(currentPage);\n console.log(currentPage);\n erasePage();\n currentPage.display();\n if (timerOn) {\n return startTimer();\n }\n } else {\n erasePage();\n return restoreCurrentPage();\n }\n };\n\n getStructure = function() {\n var type;\n type = randInt(25);\n switch (type) {\n case 0:\n return new Structure1();\n case 1:\n return new Structure2();\n case 2:\n return new Structure3();\n case 3:\n return new Structure4();\n case 4:\n return new Structure5();\n case 5:\n return new Structure6();\n case 6:\n return new Structure7();\n case 7:\n return new Structure8();\n case 8:\n return new Structure9();\n case 9:\n return new Structure10();\n case 10:\n return new Structure11();\n case 11:\n return new Structure12();\n case 12:\n return new Structure13();\n case 13:\n return new Structure14();\n case 14:\n return new Structure15();\n case 15:\n return new Structure16();\n case 16:\n return new Structure17();\n case 17:\n return new Structure18();\n case 18:\n return new Structure19();\n case 19:\n return new Structure20();\n case 20:\n return new Structure21();\n case 21:\n return new Structure22();\n case 22:\n return new Structure23();\n case 23:\n return new Structure24();\n case 24:\n return new Structure25();\n }\n };\n\n previousPage = function() {\n if (pagePosition > 1) {\n --pagePosition;\n erasePage();\n return restoreCurrentPage();\n }\n };\n\n restoreCurrentPage = function() {\n currentPage = serializedPages[pagePosition - 1];\n if (currentPage.answer === \"z\") {\n if (timerOn) {\n startTimer();\n }\n } else {\n setGrades();\n if (currentPage.answer === answerValues[currentPage.correctChoice]) {\n revealExplication();\n }\n }\n return currentPage.display();\n };\n\n radioChangeEvent = function() {\n clearInterval(timer);\n totalTime += new Date().getTime() - questionStartTime;\n\t ++totalAnswered;\n\n var newAverage = (totalTime / (1000* totalAnswered));\n\t\tnewAverage -= newAverage % 1;\n\n\t\t$('#average-time').text(newAverage);\n currentPage.answer = $(\"input[type=radio]:checked\").val();\n\n clearGrades();\n setGrades();\n const answerCanvas = currentPage.correctChoice + 1;\n clearCanvas(answerCanvas);\n\n currentPage.printFaceArray(answerCanvas, currentPage.choices[answerCanvas - 1], DIMENSION, currentPage.offset);\n\n revealExplication();\n\n if (currentPage.workingCopy.stepsExecuted == 0){\n clearCanvas(0);\n currentPage.workingCopy.explicate(0, DIMENSION0, currentPage.workingCopy.mainOffset);\n }\n\n return tallyScoreboard();\n };\n\n erasePage = function() {\n var i, n, _i;\n clearRadios();\n clearGrades();\n n = OPTIONS;\n for (i = _i = 0; 0 <= n ? _i <= n : _i >= n; i = 0 <= n ? ++_i : --_i) {\n clearCanvas(i);\n }\n clearInterval(timer);\n timeReset();\n setPageNumber();\n return clearExplication();\n };\n\n setGrades = function() {\n var selector;\n $('input[type=radio]').filter(function() {\n return $(this).val() === currentPage.answer;\n }).prop('checked', true);\n $(answerGrades[currentPage.correctChoice]).html('');\n if (answerValues[currentPage.correctChoice] !== currentPage.answer) {\n selector = '#grade-' + currentPage.answer;\n return $(selector).html('');\n }\n };\n\n clearGrades = function() {\n var selector, _i, _len, _results;\n _results = [];\n for (_i = 0, _len = answerGrades.length; _i < _len; _i++) {\n selector = answerGrades[_i];\n _results.push($(selector).html(''));\n }\n return _results;\n };\n\n revealExplication = function() {\n currentPage.workingCopy.restoreFromArray(currentPage.toArray());\n currentPage.workingCopy.pov = currentPage.pov;\n currentPage.workingCopy.boundingCube = currentPage.boundingCube;\n currentPage.workingCopy.stepsExecuted = 0;\n currentPage.workingCopy.horizPentAxes = currentPage.horizPentAxes;\n currentPage.workingCopy.vertPentAxes = currentPage.vertPentAxes;\n currentPage.workingCopy.vertTriangleAxes = currentPage.vertTriangleAxes;\n currentPage.workingCopy.horizTriangleAxes = currentPage.horizTriangleAxes;\n currentPage.workingCopy.mainOffset = currentPage.mainOffset;\n animDir = true;\n render = function() {\n return currentPage.workingCopy.animate(0);\n };\n animOn = true;\n pauseAction();\n return addControls();\n };\n\n clearExplication = function() {\n animOn = false;\n animDir = true;\n render = function() {};\n $('#slider').off(\"slide\");\n document.getElementById('clickToDrag').style.visibility='hidden';\n return $('#animation-controls').hide();\n };\n\n timeChangeEvent = function() {\n timerOn = !timerOn;\n if (timerOn) {\n return startTimer();\n } else {\n clearInterval(timer);\n if (timeLeft === 0) {\n return timeReset;\n }\n }\n };\n\n timeReset = function() {\n timeLeft = SECONDS;\n return $('#time-display').html(timeLeft);\n };\n\n startTimer = function() {\n clearInterval(timer);\n return timer = setInterval((function() {\n --timeLeft;\n $('#time-display').html(timeLeft);\n if (timeLeft < 1) {\n return timeOut();\n }\n }), 1000);\n };\n\n timeOut = function() {\n clearInterval(timer);\n if (currentPage.correctChoice !== 0) {\n $('input[type=radio]:eq(0)').prop('checked', true);\n } else {\n $('input[type=radio]:eq(1)').prop('checked', true);\n }\n return radioChangeEvent();\n };\n\n tallyScoreboard = function() {\n var correct, incorrect, page, _i, _len;\n incorrect = 0;\n correct = 0;\n for (_i = 0, _len = serializedPages.length; _i < _len; _i++) {\n page = serializedPages[_i];\n if (page.answer !== \"z\") {\n if (page.answer === answerValues[page.correctChoice]) {\n ++correct;\n } else {\n ++incorrect;\n }\n }\n }\n $('#incorrect').html(incorrect);\n return $('#correct').html(correct);\n };\n\n setPageNumber = function() {\n $('#location').html(pagePosition);\n return $('#total').html(serializedPages.length);\n };\n\n clearRadios = function() {\n console.log('clearing radios??');\n return $(\"input[type=radio]\").prop('checked', false);\n };\n\n gameReset = function() {\n questionStartTime = new Date().getTime();\n\t totalTime = 0;\n\t totalAnswered = 0;\n clearInterval(timer);\n serializedPages = [];\n pagePosition = 0;\n $('#average-time').text(0);\n newPage();\n if (timerOn) {\n startTimer();\n }\n return tallyScoreboard();\n };\n\n addControls = function() {\n var steps;\n\n $('#animation-controls').show();\n document.getElementById('clickToDrag').style.visibility='initial';\n console.log('attempting to add controls');\n\n steps = currentPage.workingCopy.totalSteps;\n\n $('#slider').slider({\n max: steps\n });\n\n return $('#slider').on(\"slide\", currentPage.workingCopy.moveSlide);\n };\n\n pauseAction = function() {\n clearTimeout(animPause);\n animOn = !animOn;\n if (animOn) {\n return $('#pause').text(\"Pause\");\n } else {\n return $('#pause').text(\"Play\");\n }\n };\n\n reverseAction = function() {\n return animDir = !animDir;\n };\n\n prevAction = function (){\n const pattern = currentPage.workingCopy;\n if (pattern.stepsExecuted > 0){\n rotateCopy = null;\n }\n currentPage.workingCopy.executeStep(false, currentPage.workingCopy.currentPace);\n }\n\n nextAction = function() {\n const pattern = currentPage.workingCopy;\n if (pattern.stepsExecuted < pattern.totalSteps){\n rotateCopy = null;\n }\n currentPage.workingCopy.executeStep(true, currentPage.workingCopy.currentPace);\n }\n\n $(function() {\n sanitizeCanvases();\n $(\"#next\").on(\"click\", newPage);\n $(\"#previous\").on(\"click\", previousPage);\n $(\"#game-reset\").on(\"click\", gameReset);\n $(\"#time-button\").on(\"click\", timeChangeEvent);\n $(\"input[type=radio]\").on(\"click\", radioChangeEvent);\n $(\"#start-generator\").on(\"click\", startGenerator)\n $(\"body\").on(\"click\", \"#pause\", pauseAction);\n $(\"body\").on(\"click\", \"#reverse\", reverseAction);\n $(\"body\").on(\"click\", \"#previousButton\", prevAction);\n $(\"body\").on(\"click\", \"#nextButton\", nextAction);\n firstCanvas = $('canvas')[0];\n firstCanvas.onmousedown = mouseDown;\n\t document.body.onmouseup = mouseUp;\n document.body.onmousemove = mouseMove;\n firstCanvas.ontouchstart = touchStart;\n\t document.body.ontouchmove = touchMove;\n\t document.body.ontouchend = touchEnd;\n newPage();\n return animloop();\n });\n});\n","/* eslint-disable */\n// Generated by CoffeeScript 1.7.1\nmodule.exports = function($) {\n var Bisect, Circle, Cubes, Eyeballer, Holes, MAIN_HEIGHT, MAIN_WIDTH, Midpoint, PADDING, Parallelogram, QUIZZES, Quiz, ROUNDS, RightAngle, THICKNESS, TwoAngles, clearQuiz, createQuiz, dist, erase, gameOver, getAngle, nextQuestion, questionText, randomInt, reset, round, sanitize, scores, screenLine, screenMove, startTimer, step, timeReset, timeUsed, timer,\n __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n __hasProp = {}.hasOwnProperty,\n __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };\n\n MAIN_WIDTH = 500;\n\n MAIN_HEIGHT = 500;\n\n ROUNDS = 3;\n\n QUIZZES = 8;\n\n THICKNESS = 1.7;\n\n step = 0;\n\n round = 1;\n\n scores = [];\n\n timeUsed = 0;\n\n timer = {};\n let layerIds = [\"layer-1\", \"layer-2\", \"layer-3\", \"layer-4\"];\n let questionIds = [\"amount-1\", \"amount-2\", \"amount-3\", \"amount-4\", \"amount-5\"];\n\n PADDING = 10;\n let numberWord = function(n) {\n switch (n) {\n case 1:\n return \"one\";\n case 2:\n return \"two\";\n case 3:\n return \"three\";\n case 4:\n return \"four\";\n case 5:\n return \"five\";\n }\n};\n\n let Page = (function() {\n function Page(structure) {\n this.structure = structure;\n this.answer = \"z\";\n this.options = [];\n this.paintQuery();\n this.sequentialQuestions();\n }\n\n Page.prototype.paintQuery = function() {\n var pq, valid, _i, _len, _ref;\n while (true) {\n valid = true;\n this.sidesQty = randomInt(5) + 1;\n _ref = this.structure.paintQueries;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n pq = _ref[_i];\n if (this.sidesQty === pq) {\n valid = false;\n break;\n }\n }\n if (!valid) {\n continue;\n }\n this.getTally();\n if (this.tally !== 0) {\n break;\n }\n }\n return this.structure.paintQueries.push(this.sidesQty);\n };\n\n Page.prototype.populateQuestions = function() {\n var candidate, history, hst, i, valid, _i, _len, _results;\n this.options.push(this.tally);\n history = [];\n i = 0;\n while (i < questionIds.length) {\n while (true) {\n candidate = randomInt(5) + 1;\n if (Math.random() < 0.5) {\n candidate = -candidate;\n }\n if (candidate + this.tally < 1 || candidate + this.tally > this.structure.cubes.length) {\n continue;\n }\n valid = true;\n for (_i = 0, _len = history.length; _i < _len; _i++) {\n hst = history[_i];\n if (candidate === hst) {\n valid = false;\n break;\n }\n }\n if (!valid) {\n continue;\n }\n history.push(candidate);\n this.options.push(this.tally + candidate);\n break;\n }\n i++;\n }\n this.options.sort(function(a, b) {\n return a - b;\n });\n i = 0;\n _results = [];\n while (i < questionIds.length) {\n if (this.options[i] === this.tally) {\n this.correctOption = i;\n }\n _results.push(i++);\n }\n return _results;\n };\n\n Page.prototype.sequentialQuestions = function() {\n var choices, i, _i, _results;\n choices = this.tally;\n if (choices > 5) {\n choices = 5;\n }\n this.correctOption = randomInt(choices);\n _results = [];\n for (i = _i = 0; _i <= 4; i = ++_i) {\n _results.push(this.options.push(this.tally - this.correctOption + i));\n }\n return _results;\n };\n\n Page.prototype.displayQuestions = function() {\n var i, _results;\n document.getElementById(\"query\").innerHTML = numberWord(this.sidesQty);\n i = 0;\n _results = [];\n while (i < questionIds.length) {\n document.getElementById(questionIds[i]).innerHTML = questionText(this.options[i]);\n _results.push(i++);\n }\n return _results;\n };\n\n Page.prototype.getTally = function() {\n var count, sc, _i, _len, _ref;\n count = 0;\n _ref = this.structure.cubes;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n sc = _ref[_i];\n if (sc.painted === this.sidesQty) {\n count++;\n }\n }\n return this.tally = count;\n };\n\n Page.prototype.display = function() {\n var c, ctx;\n this.displayQuestions();\n c = document.getElementById('puzzle');\n ctx = c.getContext(\"2d\");\n return this.structure.printCubes(ctx);\n };\n\n Page.prototype.explicate = function() {\n var c, color, ctx, i, sc, _i, _len, _ref, _results;\n i = 0;\n _results = [];\n while (i < layerIds.length) {\n c = document.getElementById(layerIds[i]);\n ctx = c.getContext(\"2d\");\n _ref = this.structure.cubes;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n sc = _ref[_i];\n if (sc.y === i) {\n color = \"white\";\n if (sc.painted === this.sidesQty) {\n color = \"#5F5\";\n }\n sc.print(ctx, this.structure.solutionScale, this.structure.perspective, color, this.structure.xOff, this.structure.yOff);\n } else if (sc.y > i) {\n color = \"#EEE\";\n sc.print(ctx, this.structure.solutionScale, this.structure.perspective, color, this.structure.xOff, this.structure.yOff);\n }\n }\n _results.push(i++);\n }\n return _results;\n };\n\n return Page;\n\n })();\n\tlet pe = function (k) {\n\t\tswitch (true) {\n\t\t\tcase (k < 0.1): return 0; break;\n\t\t\tcase (k < 1.3): return 99.6; break;\n\t\t\tcase (k < 1.6): return 99.3; break;\n\t\t\tcase (k < 2.0): return 99.1; break;\n\t\t\tcase (k < 2.4): return 98.7; break;\n\t\t\tcase (k < 2.8): return 98.4; break;\n\t\t\tcase (k < 3.2): return 97.8; break;\n\t\t\tcase (k < 3.6): return 97.4; break;\n\t\t\tcase (k < 4.0): return 96.5; break;\n\t\t\tcase (k < 4.4): return 96.1; break;\n\t\t\tcase (k < 4.8): return 95.7; break;\n\t\t\tcase (k < 5.2): return 94.5; break;\n\t\t\tcase (k < 5.6): return 93.8; break;\n\t\t\tcase (k < 6.0): return 93.3; break;\n\t\t\tcase (k < 6.4): return 92.8; break;\n\t\t\tcase (k < 6.8): return 92.2; break;\n\t\t\tcase (k < 7.2): return 91.7; break;\n\t\t\tcase (k < 12.8): return 86.4; break;\n\t\t\tcase (k < 18.8): return 71.6; break;\n\t\t\tdefault : return 68.7; break;\n\t\t}\n\t};\n\n gameOver = function() {\n var tot;\n tot = 0;\n if (scores.length > 0) {\n tot = (scores.reduce(function(x, y) {\n return x + y;\n })) / scores.length;\n tot = Math.round(tot * 100) / 100;\n }\n\t\t// if (datbootcamp_plugin_obj.logged_in) {\n\t\t// \t$.ajax({\n\t\t// \t\turl: datbootcamp_plugin_obj.ajaxurl,\n\t\t// \t\tmethod: \"POST\",\n\t\t// \t\tdata: {\n\t\t// \t\t\taction: 'submit_leaderboard_record',\n\t\t// \t\t\tscore: tot,\n\t\t// \t\t\tleaderboardTitle: 'PAT Trainer'\n\t\t// \t\t},\n\t\t// \t\tsuccess:function( response ) {\n\t\t// \t\t},\n\t\t// \t});\n\t\t// }\n $('#position').text('Click \"Reset\" to Start New Exam');\n\t\t$(\"#display-area\").html('

Training Complete

');\n\t\t$(\"#display-area\").append('

Average Deviation: ' + tot + ' (lower is better) - ' + pe(tot) + '%

');\n\t\t$(\"#display-area\").append('

Score distribution of last 1000 games:

');\n\t\t\t\t\t$(\"#display-area\").append('

');\n\t\t$(\"#display-area\").append('');\n\t\t// $(\"#fb-share\").click(function(){\n\t\t// \tvar w = 600;\n\t\t// \tvar h = 436;\n\t\t// \tvar l = Number((screen.width / 2) - (w / 2));\n\t\t// \tvar t = Number((screen.height / 2) - (h / 2));\n\t\t// \tvar u = window.location.href;\n\t\t// \tvar s = 'I scored a '+tot+' on the PAT Trainer Game!';\n\t\t// \tif (tot <= 18.8) s = 'I scored better than '+pe(tot)+'% on the PAT Trainer Game!';\n\t\t// \twindow.open( 'https://www.facebook.com/sharer/sharer.php?u='+encodeURIComponent(u)+'&title='+encodeURIComponent(s)+'&description='+encodeURIComponent('Studying for the DAT? Use this PAT Trainer Game to sharpen your perceptual skills.')+'&picture='+encodeURIComponent('https://s3.amazonaws.com/datbootcamp/fb/ptrainerfb.png'),'facebookshare','width='+w+',height='+h+',top='+t+',left='+l);\n\t\t// });\n\t\t$('#display-area').append('

Time Used: ' + timeUsed + '

');\n\t\t// $('#display-area').append('

Did you make the leaderboards? Remember, lower is better!

');\n\t\t// $('#display-area').append('

Show Leaderboards

');\n\t\t// $('.leaderboard-trigger').click(function () {\n // window.displayLeaderboard('today');\n\t\t// \t$('#leaderboard-modal').modal({\n\t\t// \t\tfadeDuration: 250\n\t\t// \t});\n\t\t// });\n\t\t$('#next').hide();\n\t\treturn\n };\n\n nextQuestion = function() {\n\t\tif (scores.length != (step + 1) + ((round - 1) * QUIZZES)) {\n\t\t\treturn\n\t\t}\n clearQuiz();\n ++step;\n if (step >= QUIZZES) {\n step = 0;\n ++round;\n }\n\t\tif (round == ROUNDS + 1 && step == 0) {\n\t\t\t++step;\n\t\t\treturn gameOver();\n\t\t} else if (round > ROUNDS) {\n return\n } else {\n return createQuiz(step);\n }\n };\n\n window.onload = function() {\n $('#next').on(\"click\", nextQuestion);\n $('#game-reset').on(\"click\", reset);\n sanitize();\n return createQuiz(step);\n };\n\n Quiz = (function() {\n function Quiz() {\n this.mouseX = 0;\n this.mouseY = 0;\n this.solutionX = 0;\n this.solutionY = 0;\n startTimer();\n }\n\n Quiz.prototype.getRandomPoint = function(dim) {\n return Math.round(Math.random() * (dim - 40)) + 20;\n };\n\n Quiz.prototype.setTitle = function(text) {\n return $('#position').text(text);\n };\n\n return Quiz;\n\n })();\n\n Holes = (function(_super) {\n var ANS_MULT, Fold, FoldedSet, Line, OptionObject, Polygon, PunchedHoleList, QUES_MULT, TableSpot, Vertex, answerCanvases, clearSteps, createAndDisplayFolds, executeFold, explicateStep, foldLines, folds, freshSheet, freshTable, intersection, listPoints, locateHole, outlineList, pointMatch, populateFoldLines, printList, randomInt, relocateSpots, revealExplication, stepCanvases, tableSpots;\n\n __extends(Holes, _super);\n\n foldLines = [];\n\n answerCanvases = [\"can-A\", \"can-B\", \"can-C\", \"can-D\", \"can-E\"];\n\n stepCanvases = [\"step0\", \"step1\", \"step2\", \"step3\", \"step4\"];\n\n QUES_MULT = 11;\n\n ANS_MULT = 11;\n\n folds = [];\n\n tableSpots = {};\n\n function Holes() {\n this.handleIncorrect = __bind(this.handleIncorrect, this);\n this.handleCorrect = __bind(this.handleCorrect, this);\n var can, dashed, el, elem, elem2, i, smHeight, wrap, _i, _j, _k, _l, _len, _len1, _m, _ref;\n startTimer();\n this.setTitle(\"Click on the correct Pattern\");\n smHeight = 91;\n elem = $('
');\n elem.width(MAIN_WIDTH);\n elem.height(smHeight);\n elem.css({\n margin: \"60px 0 100px\"\n });\n $('#display-area').html(elem);\n for (_i = 0, _len = stepCanvases.length; _i < _len; _i++) {\n el = stepCanvases[_i];\n wrap = $('
');\n wrap.width(smHeight);\n wrap.height(smHeight);\n wrap.css({\n position: \"relative\"\n });\n wrap.css({\n display: \"inline-block\"\n });\n wrap.css({\n marginLeft: \"7px\"\n });\n dashed = $('
');\n dashed.width(smHeight);\n dashed.height(smHeight);\n dashed.css({\n boxSizing: \"border-box\"\n });\n dashed.css({\n position: \"absolute\"\n });\n dashed.css({\n border: \"3px black dashed\"\n });\n can = $('');\n can.width(smHeight);\n can.height(smHeight);\n can.attr(\"width\", \"\" + smHeight);\n can.attr(\"height\", \"\" + smHeight);\n can.css({\n position: \"relative\"\n });\n can.attr(\"id\", el);\n wrap.append(dashed);\n wrap.append(can);\n elem.append(wrap);\n }\n elem2 = $('
');\n elem2.width(MAIN_WIDTH);\n elem2.height(smHeight);\n elem2.css({\n margin: \"60px 0 140px 2px\"\n });\n elem2.attr(\"id\", \"answers\");\n for (_j = 0, _len1 = answerCanvases.length; _j < _len1; _j++) {\n el = answerCanvases[_j];\n can = $('');\n can.width(smHeight);\n can.height(smHeight);\n can.attr(\"width\", \"\" + smHeight);\n can.attr(\"height\", \"\" + smHeight);\n can.attr(\"id\", el);\n can.css({\n border: \"thin solid\"\n });\n can.css({\n marginLeft: \"5px\"\n });\n can.css({\n cursor: \"pointer\"\n });\n elem2.append(can);\n }\n $('#display-area').append(elem2);\n $('#display-area').append('
');\n populateFoldLines();\n this.answer = \"z\";\n for (i = _k = 0; _k <= 2; i = ++_k) {\n folds[i] = false;\n }\n this.correctOption = randomInt(5);\n tableSpots = freshTable();\n this.options = [];\n for (i = _l = 0, _ref = answerCanvases.length - 1; 0 <= _ref ? _l <= _ref : _l >= _ref; i = 0 <= _ref ? ++_l : --_l) {\n this.options[i] = new OptionObject();\n }\n createAndDisplayFolds(this);\n this.generateFalseAnswers();\n this.printAnswerChoices();\n $('#answers > canvas').hover(function() {\n return $(this).css({\n backgroundColor: \"#EEE\"\n });\n }, function() {\n return $(this).css({\n backgroundColor: \"transparent\"\n });\n });\n for (i = _m = 0; _m <= 4; i = ++_m) {\n if (i === this.correctOption) {\n $(\"#\" + answerCanvases[i]).on(\"click\", this.handleCorrect);\n } else {\n $(\"#\" + answerCanvases[i]).on(\"click\", this.handleIncorrect);\n }\n }\n }\n\n Holes.prototype.handleCorrect = function() {\n return this.handleResult(0, \"Correct, 0 points\");\n };\n\n Holes.prototype.handleIncorrect = function() {\n return this.handleResult(5, \"Incorrect, 5 points\");\n };\n\n Holes.prototype.handleResult = function(r, text) {\n var cell, table, tot;\n $('#answers > canvas').unbind();\n $('#answers > canvas').css({\n cursor: \"inherit\"\n });\n revealExplication(this);\n clearInterval(timer);\n $('#single-result').text(text);\n table = $('table')[0];\n cell = table.rows[step].cells[round];\n $(cell).text(r);\n scores.push(r);\n tot = 0;\n if (scores.length > 0) {\n tot = (scores.reduce(function(x, y) {\n return x + y;\n })) / scores.length;\n tot = Math.round(tot * 100) / 100;\n }\n $('#average').text(tot);\n return $('#position').text('Click \"Next\" Button to Continue');\n };\n\n randomInt = function(scale) {\n return Math.floor(Math.random() * scale);\n };\n\n createAndDisplayFolds = function(page) {\n var c, ctx, i, paperStages, _i, _ref;\n paperStages = [];\n paperStages.push(freshSheet());\n for (i = _i = 0, _ref = folds.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n c = document.getElementById(stepCanvases[i]);\n ctx = c.getContext(\"2d\");\n if (i !== 0) {\n printList(ctx, paperStages[i]);\n }\n folds[i] = new Fold();\n folds[i].generate(tableSpots, paperStages[i]);\n paperStages[i + 1] = executeFold(folds[i], paperStages[i]);\n relocateSpots(tableSpots, folds[i]);\n }\n c = document.getElementById(stepCanvases[3]);\n ctx = c.getContext(\"2d\");\n printList(ctx, paperStages[3]);\n locateHole(page);\n c = document.getElementById(stepCanvases[4]);\n ctx = c.getContext(\"2d\");\n return outlineList(ctx, paperStages[3], false, page);\n };\n\n relocateSpots = function(table, fold) {\n var l, lVal, mir, sVal, subject, tmi, tmj, tmk, _i, _len, _results;\n l = foldLines[fold.location];\n lVal = l.v1.mode[l.angle];\n _results = [];\n for (_i = 0, _len = table.length; _i < _len; _i++) {\n tmi = table[_i];\n if (tmi.members.length === 0) {\n continue;\n }\n subject = tmi;\n sVal = subject.mode[l.angle];\n if ((sVal > lVal && fold.orientation) || (sVal < lVal && !fold.orientation)) {\n mir = subject.mirror(fold.location);\n _results.push((function() {\n var _j, _k, _len1, _len2, _ref, _results1;\n _results1 = [];\n for (_j = 0, _len1 = table.length; _j < _len1; _j++) {\n tmj = table[_j];\n if (tmj.identical(mir)) {\n _ref = subject.members;\n for (_k = 0, _len2 = _ref.length; _k < _len2; _k++) {\n tmk = _ref[_k];\n tmj.addSpot(tmk);\n }\n subject.clear();\n break;\n } else {\n _results1.push(void 0);\n }\n }\n return _results1;\n })());\n } else {\n _results.push(void 0);\n }\n }\n return _results;\n };\n\n printList = function(ctx, polyList) {\n var pl, _i, _len, _results;\n ctx.lineWidth = 2;\n ctx.strokeStyle = \"black\";\n _results = [];\n for (_i = 0, _len = polyList.length; _i < _len; _i++) {\n pl = polyList[_i];\n _results.push(pl.print(ctx));\n }\n return _results;\n };\n\n outlineList = function(ctx, polyList, holes, page) {\n var pl, _i, _len, _results;\n _results = [];\n for (_i = 0, _len = polyList.length; _i < _len; _i++) {\n pl = polyList[_i];\n if (pl.queue.length > 2) {\n _results.push(pl.outlineAroundHoles(ctx, holes, page));\n } else {\n _results.push(void 0);\n }\n }\n return _results;\n };\n\n executeFold = function(fld, oldList) {\n var cnt, i, newList, tempSet, _i, _j, _k, _ref, _ref1, _ref2;\n tempSet = [];\n newList = [];\n cnt = oldList.length;\n for (i = _i = 0, _ref = cnt - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n tempSet[i] = new FoldedSet(fld, oldList[i]);\n }\n for (i = _j = 0, _ref1 = cnt - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; i = 0 <= _ref1 ? ++_j : --_j) {\n newList[i] = tempSet[i].base;\n }\n for (i = _k = 0, _ref2 = cnt - 1; 0 <= _ref2 ? _k <= _ref2 : _k >= _ref2; i = 0 <= _ref2 ? ++_k : --_k) {\n newList[i + cnt] = tempSet[cnt - i - 1].flap;\n }\n i = 0;\n while (i < newList.length) {\n if (newList[i].queue.length < 1) {\n newList.splice(i, 1);\n } else {\n i++;\n }\n }\n return newList;\n };\n\n intersection = function(v1, v2, fold) {\n var foldPoints, segPoints, sp, _i, _len;\n segPoints = listPoints(v1, v2);\n foldPoints = listPoints(foldLines[fold].v1, foldLines[fold].v2);\n for (_i = 0, _len = segPoints.length; _i < _len; _i++) {\n sp = segPoints[_i];\n if (pointMatch(sp, foldPoints)) {\n return sp;\n }\n }\n return false;\n };\n\n pointMatch = function(candidate, set) {\n var s, _i, _len;\n for (_i = 0, _len = set.length; _i < _len; _i++) {\n s = set[_i];\n if (candidate.identical(s)) {\n return true;\n }\n }\n return false;\n };\n\n listPoints = function(v1, v2) {\n var deltaX, deltaY, quant, result, xCur, yCur;\n result = new Array();\n quant = 0;\n deltaX = v2.x - v1.x;\n deltaY = v2.y - v1.y;\n if (deltaX !== 0) {\n quant = Math.abs(deltaX);\n } else {\n quant = Math.abs(deltaY);\n }\n result.push(v1);\n while (result.length < quant) {\n xCur = result[result.length - 1].x;\n yCur = result[result.length - 1].y;\n xCur += deltaX < 0 ? -1 : deltaX > 0 ? 1 : 0;\n yCur += deltaY < 0 ? -1 : deltaY > 0 ? 1 : 0;\n result.push(new Vertex(xCur, yCur));\n }\n result.push(v2);\n return result;\n };\n\n revealExplication = function(page) {\n var c, ctx, holeList, i, paperStages, punchedHoles, tableSpots2, _i, _ref;\n clearSteps();\n holeList = [];\n paperStages = [];\n paperStages.push(freshSheet());\n tableSpots2 = freshTable();\n punchedHoles = tableSpots[page.holeSpot].members;\n for (i = _i = 0, _ref = folds.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n c = document.getElementById(stepCanvases[i]);\n ctx = c.getContext(\"2d\");\n holeList = explicateStep(punchedHoles, tableSpots2);\n outlineList(ctx, paperStages[i], holeList, page);\n paperStages[i + 1] = executeFold(folds[i], paperStages[i]);\n relocateSpots(tableSpots2, folds[i]);\n }\n c = document.getElementById(stepCanvases[3]);\n ctx = c.getContext(\"2d\");\n outlineList(ctx, paperStages[3], false, page);\n c = document.getElementById(stepCanvases[4]);\n ctx = c.getContext(\"2d\");\n return outlineList(ctx, paperStages[3], false, page);\n };\n\n clearSteps = function() {\n var arrLength, c, ctx, dimension, i, _i, _ref, _results;\n dimension = ANS_MULT * 8 + 3;\n arrLength = stepCanvases.length;\n _results = [];\n for (i = _i = 0, _ref = arrLength - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n c = document.getElementById(stepCanvases[i]);\n ctx = c.getContext(\"2d\");\n _results.push(ctx.clearRect(0, 0, dimension, dimension));\n }\n return _results;\n };\n\n explicateStep = function(punchedHoles, tSpots) {\n var inThere, result, tb, _i, _len;\n result = [];\n inThere = function(arr, spots) {\n var sp1, sp2, _i, _j, _len, _len1, _ref;\n _ref = arr.members;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n sp1 = _ref[_i];\n for (_j = 0, _len1 = spots.length; _j < _len1; _j++) {\n sp2 = spots[_j];\n if (sp1.identical(sp2)) {\n return true;\n }\n }\n }\n return false;\n };\n for (_i = 0, _len = tSpots.length; _i < _len; _i++) {\n tb = tSpots[_i];\n if (inThere(tb, punchedHoles)) {\n result.push(tb);\n }\n }\n return result;\n };\n\n Fold = (function() {\n function Fold() {\n this.location = 0;\n this.orientation = false;\n }\n\n Fold.prototype.generate = function(table, polyList) {\n var affected, flip, l, lCandidate, lVal, mir, oCandidate, over, sVal, tbl, under, validity, _i, _len;\n lCandidate = 0;\n oCandidate = false;\n while (true) {\n lCandidate = randomInt(20);\n flip = Math.random() * 20;\n oCandidate = flip < 10;\n validity = true;\n affected = false;\n l = foldLines[lCandidate];\n lVal = l.v1.mode[l.angle];\n over = false;\n under = false;\n for (_i = 0, _len = table.length; _i < _len; _i++) {\n tbl = table[_i];\n if (tbl.members.length < 1) {\n continue;\n }\n sVal = tbl.mode[l.angle];\n if (sVal > lVal) {\n over = true;\n if (oCandidate) {\n mir = tbl.mirror(lCandidate);\n if (!mir.valid()) {\n validity = false;\n break;\n }\n if (mir.x !== tbl.x || mir.y !== tbl.y) {\n affected = true;\n }\n }\n }\n if (sVal < lVal) {\n under = true;\n if (!oCandidate) {\n mir = tbl.mirror(lCandidate);\n if (!mir.valid()) {\n validity = false;\n break;\n }\n if (mir.x !== tbl.x || mir.y !== tbl.y) {\n affected = true;\n }\n }\n }\n }\n if (validity && over && under && affected) {\n break;\n }\n }\n this.location = lCandidate;\n return this.orientation = oCandidate;\n };\n\n return Fold;\n\n })();\n\n FoldedSet = (function() {\n function FoldedSet(fld, poly) {\n var cand, flapPoly, i, j, l, lVal, pVal, poly1, poly2, tempPoint, testHist, testLine, tl, topFold, trimmedPoly, _i, _j, _k, _l, _len, _m, _ref, _ref1, _ref2, _ref3;\n if (poly.queue.length === 0) {\n this.base = new Polygon();\n this.flap = new Polygon();\n } else {\n trimmedPoly = {};\n flapPoly = {};\n testLine = [];\n testHist = [];\n for (i = _i = 0, _ref = poly.queue.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n j = i + 1;\n if (j >= poly.queue.length) {\n j = 0;\n }\n tempPoint = intersection(poly.queue[i], poly.queue[j], fld.location);\n if (tempPoint === false) {\n continue;\n }\n for (_j = 0, _len = testLine.length; _j < _len; _j++) {\n tl = testLine[_j];\n if (tl.identical(tempPoint)) {\n tempPoint = false;\n break;\n }\n }\n if (tempPoint === false) {\n continue;\n }\n testLine.push(tempPoint);\n testHist.push(i);\n }\n if (testLine.length !== 2 || poly.edgeCase(fld)) {\n l = foldLines[fld.location];\n lVal = l.v1.mode[l.angle];\n pVal = fld.orientation ? poly.key[l.angle].mode[l.angle] : poly.antiKey[l.angle].mode[l.angle];\n if ((pVal > lVal && fld.orientation) || (pVal < lVal && !fld.orientation)) {\n flapPoly = poly;\n trimmedPoly = new Polygon();\n } else {\n trimmedPoly = poly;\n flapPoly = new Polygon();\n }\n } else {\n poly1 = new Polygon();\n poly2 = new Polygon();\n for (i = _k = 0, _ref1 = poly.queue.length - 1; 0 <= _ref1 ? _k <= _ref1 : _k >= _ref1; i = 0 <= _ref1 ? ++_k : --_k) {\n poly1.addVertex(poly.queue[i]);\n if (i === testHist[0]) {\n break;\n }\n }\n poly1.addVertex(testLine[0]);\n poly1.addVertex(testLine[1]);\n cand = testHist[1] + 1;\n if (cand < poly.queue.length) {\n for (i = _l = cand, _ref2 = poly.queue.length - 1; cand <= _ref2 ? _l <= _ref2 : _l >= _ref2; i = cand <= _ref2 ? ++_l : --_l) {\n poly1.addVertex(poly.queue[i]);\n }\n }\n poly2.addVertex(testLine[0]);\n cand = testHist[0] + 1;\n if (cand <= testHist[1]) {\n for (i = _m = cand, _ref3 = testHist[1]; cand <= _ref3 ? _m <= _ref3 : _m >= _ref3; i = cand <= _ref3 ? ++_m : --_m) {\n poly2.addVertex(poly.queue[i]);\n }\n }\n poly2.addVertex(testLine[1]);\n poly1.sanitize();\n poly2.sanitize();\n if ((fld.orientation && poly2.contains(poly.key[foldLines[fld.location].angle])) || (!fld.orientation && poly1.contains(poly.key[foldLines[fld.location].angle]))) {\n trimmedPoly = poly1;\n flapPoly = poly2;\n } else {\n trimmedPoly = poly2;\n flapPoly = poly1;\n }\n }\n topFold = flapPoly.mirror(fld.location);\n this.base = trimmedPoly;\n this.flap = topFold;\n }\n }\n\n return FoldedSet;\n\n })();\n\n Vertex = (function() {\n function Vertex(x, y) {\n this.x = x;\n this.y = y;\n this.mode = [8 - y, x, x + (8 - y), (8 - x) + (8 - y)];\n }\n\n Vertex.prototype.print = function(ctx, fillColor, multiplier, stroked) {\n var radius;\n ctx.fillStyle = fillColor;\n radius = multiplier / 1.7;\n ctx.beginPath();\n ctx.arc(this.x * multiplier + 1.5, this.y * multiplier + 1.5, radius, 0, 2 * Math.PI);\n ctx.fill();\n if (stroked) {\n ctx.lineWidth = 3;\n return ctx.stroke();\n }\n };\n\n Vertex.prototype.fill = function(ctx, multiplier) {\n var radius;\n radius = multiplier / 1.7;\n ctx.beginPath();\n ctx.arc(this.x * multiplier + 1.5, this.y * multiplier + 1.5, radius, 0, 2 * Math.PI);\n return ctx.fill();\n };\n\n Vertex.prototype.outline = function(ctx, multiplier) {\n var radius;\n radius = multiplier / 1.7;\n ctx.beginPath();\n ctx.arc(this.x * multiplier + 1.5, this.y * multiplier + 1.5, radius, 0, 2 * Math.PI);\n return ctx.stroke();\n };\n\n Vertex.prototype.valid = function() {\n if (this.x >= 0 && this.x <= 8 && this.y >= 0 && this.y <= 8) {\n return true;\n } else {\n return false;\n }\n };\n\n Vertex.prototype.mirror = function(fNum) {\n var delta, l, newX, newY;\n l = foldLines[fNum];\n switch (l.angle) {\n case 0:\n newY = this.y + (2 * (l.v1.y - this.y));\n return new Vertex(this.x, newY);\n case 1:\n newX = this.x + (2 * (l.v1.x - this.x));\n return new Vertex(newX, this.y);\n case 2:\n delta = l.v1.mode[l.angle] - this.mode[l.angle];\n return new Vertex(this.x + delta, this.y - delta);\n case 3:\n delta = l.v1.mode[l.angle] - this.mode[l.angle];\n return new Vertex(this.x - delta, this.y - delta);\n default:\n return false;\n }\n return false;\n };\n\n Vertex.prototype.identical = function(alter) {\n return (this.x === alter.x) && (this.y === alter.y);\n };\n\n return Vertex;\n\n })();\n\n TableSpot = (function(_super1) {\n __extends(TableSpot, _super1);\n\n function TableSpot(spot) {\n TableSpot.__super__.constructor.call(this, spot.x, spot.y);\n this.members = [];\n this.members[0] = spot;\n }\n\n TableSpot.prototype.addSpot = function(spot) {\n return this.members.push(spot);\n };\n\n TableSpot.prototype.clear = function() {\n return this.members = [];\n };\n\n return TableSpot;\n\n })(Vertex);\n\n Line = (function() {\n function Line(v1, v2) {\n this.v1 = v1;\n this.v2 = v2;\n if (v1.y === v2.y) {\n this.angle = 0;\n } else if (v1.x === v2.x) {\n this.angle = 1;\n } else if ((v1.x - v2.x) === (v1.y - v2.y)) {\n this.angle = 2;\n } else {\n this.angle = 3;\n }\n }\n\n return Line;\n\n })();\n\n Polygon = (function() {\n function Polygon() {\n this.queue = [];\n this.key = [];\n this.antiKey = [];\n }\n\n Polygon.prototype.mirror = function(fNum) {\n var qu, result, _i, _len, _ref;\n result = new Polygon();\n _ref = this.queue;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n qu = _ref[_i];\n result.addVertex(qu.mirror(fNum));\n }\n return result;\n };\n\n Polygon.prototype.contains = function(candidate) {\n var qu, _i, _len, _ref;\n _ref = this.queue;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n qu = _ref[_i];\n if (candidate.identical(qu)) {\n return true;\n }\n }\n return false;\n };\n\n Polygon.prototype.print = function(ctx) {\n var canv, nctx;\n if (this.queue.length > 0) {\n canv = document.createElement('canvas');\n canv.width = QUES_MULT * 8 + 3;\n canv.height = QUES_MULT * 8 + 3;\n nctx = canv.getContext('2d');\n nctx.strokeStyle = \"black\";\n nctx.lineWidth = 2;\n nctx.lineCap = \"round\";\n nctx.globalCompositeOperation = \"source-over\";\n this.outline(nctx);\n nctx.fillStyle = \"white\";\n nctx.globalCompositeOperation = \"destination-over\";\n this.fill(nctx);\n return ctx.drawImage(canv, 0, 0);\n }\n };\n\n Polygon.prototype.fill = function(ctx) {\n var OFFSET, qu, _i, _len, _ref;\n OFFSET = 1.5;\n if (this.queue.length > 0) {\n ctx.beginPath();\n ctx.moveTo(this.queue[0].x * QUES_MULT + OFFSET, this.queue[0].y * QUES_MULT + OFFSET);\n _ref = this.queue;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n qu = _ref[_i];\n ctx.lineTo(qu.x * QUES_MULT + OFFSET, qu.y * QUES_MULT + OFFSET);\n }\n ctx.closePath();\n return ctx.fill();\n }\n };\n\n Polygon.prototype.outline = function(ctx) {\n var OFFSET, i, j, _i, _ref, _results;\n OFFSET = 1.5;\n if (this.queue.length > 0) {\n ctx.lineCap = \"round\";\n _results = [];\n for (i = _i = 0, _ref = this.queue.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n j = i + 1;\n if (j >= this.queue.length) {\n j = 0;\n }\n ctx.beginPath();\n ctx.moveTo(this.queue[i].x * QUES_MULT + OFFSET, this.queue[i].y * QUES_MULT + OFFSET);\n ctx.lineTo(this.queue[j].x * QUES_MULT + OFFSET, this.queue[j].y * QUES_MULT + OFFSET);\n _results.push(ctx.stroke());\n }\n return _results;\n }\n };\n\n Polygon.prototype.outlineAroundHoles = function(ctx, holes, currentPage) {\n var canvases, ctxes, hl, i, _i, _j, _len, _len1, _ref;\n if (holes === false) {\n holes = [];\n holes.push(tableSpots[currentPage.holeSpot]);\n }\n canvases = [];\n ctxes = [];\n _ref = [0, 1];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n i = _ref[_i];\n canvases[i] = document.createElement('canvas');\n canvases[i].width = QUES_MULT * 8 + 3;\n canvases[i].height = QUES_MULT * 8 + 3;\n ctxes[i] = canvases[i].getContext('2d');\n ctxes[i].strokeStyle = \"black\";\n ctxes[i].lineCap = \"butt\";\n ctxes[i].lineWidth = 2;\n ctxes[i].globalCompositeOperation = \"source-over\";\n }\n this.outline(ctxes[0]);\n ctxes[0].globalCompositeOperation = \"destination-out\";\n for (_j = 0, _len1 = holes.length; _j < _len1; _j++) {\n hl = holes[_j];\n hl.fill(ctxes[0], QUES_MULT);\n hl.outline(ctxes[1], QUES_MULT);\n }\n ctxes[1].globalCompositeOperation = \"source-in\";\n this.fill(ctxes[1]);\n ctxes[1].fillStyle = \"white\";\n ctxes[1].globalCompositeOperation = \"destination-over\";\n this.fill(ctxes[1]);\n ctx.drawImage(canvases[1], 0, 0);\n return ctx.drawImage(canvases[0], 0, 0);\n };\n\n Polygon.prototype.addVertex = function(vert) {\n var i, _i, _results;\n this.queue.push(vert);\n _results = [];\n for (i = _i = 0; _i <= 3; i = ++_i) {\n if (this.queue.length > 1) {\n if (vert.mode[i] > this.key[i].mode[i]) {\n this.key[i] = vert;\n }\n if (vert.mode[i] < this.antiKey[i].mode[i]) {\n _results.push(this.antiKey[i] = vert);\n } else {\n _results.push(void 0);\n }\n } else {\n this.key[i] = vert;\n _results.push(this.antiKey[i] = vert);\n }\n }\n return _results;\n };\n\n Polygon.prototype.edgeCase = function(fld) {\n var foldPoints, fp, hit1, hit2, i, j, _i, _j, _len, _ref;\n foldPoints = listPoints(foldLines[fld.location].v1, foldLines[fld.location].v2);\n for (i = _i = 0, _ref = this.queue.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n j = i + 1;\n if (j >= this.queue.length) {\n j = 0;\n }\n hit1 = false;\n hit2 = false;\n for (_j = 0, _len = foldPoints.length; _j < _len; _j++) {\n fp = foldPoints[_j];\n if (this.queue[i].identical(fp)) {\n hit1 = true;\n }\n if (this.queue[j].identical(fp)) {\n hit2 = true;\n }\n }\n if (hit1 && hit2) {\n return true;\n }\n }\n return false;\n };\n\n Polygon.prototype.sanitize = function() {\n var i, j, _results;\n i = 0;\n _results = [];\n while (i < this.queue.length) {\n j = i + 1;\n if (j >= this.queue.length) {\n j = 0;\n }\n if (this.queue[i].identical(this.queue[j])) {\n _results.push(this.queue.splice(j, 1));\n } else {\n _results.push(i++);\n }\n }\n return _results;\n };\n\n return Polygon;\n\n })();\n\n PunchedHoleList = (function(_super1) {\n __extends(PunchedHoleList, _super1);\n\n function PunchedHoleList() {\n PunchedHoleList.__super__.constructor.call(this);\n }\n\n PunchedHoleList.prototype.generateOptionObject = function() {\n var i, result, x, y, _i, _len;\n result = new OptionObject();\n for (_i = 0, _len = this.length; _i < _len; _i++) {\n i = this[_i];\n x = (i.x - 1) / 2;\n y = (i.y - 1) / 2;\n result.answerSpots[x][y] = true;\n }\n return result;\n };\n\n PunchedHoleList.prototype.checkValidity = function() {\n var i, _i, _len;\n for (_i = 0, _len = this.length; _i < _len; _i++) {\n i = this[_i];\n if (!i.valid()) {\n return false;\n }\n }\n if (this.length < 2) {\n return false;\n }\n return true;\n };\n\n return PunchedHoleList;\n\n })(Array);\n\n OptionObject = (function() {\n function OptionObject() {\n var i, j, _i, _j, _ref, _ref1;\n this.answerSpots = new Array(4);\n for (i = _i = 0, _ref = this.answerSpots.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n this.answerSpots[i] = new Array(4);\n for (j = _j = 0, _ref1 = this.answerSpots[i].length - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; j = 0 <= _ref1 ? ++_j : --_j) {\n this.answerSpots[i][j] = false;\n }\n }\n }\n\n OptionObject.prototype.checkUniqueness = function(optObj) {\n var i, j, _i, _j, _ref, _ref1;\n for (i = _i = 0, _ref = optObj.answerSpots.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n for (j = _j = 0, _ref1 = optObj.answerSpots[i].length - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; j = 0 <= _ref1 ? ++_j : --_j) {\n if (this.answerSpots[i][j] !== optObj.answerSpots[i][j]) {\n return true;\n }\n }\n }\n return false;\n };\n\n OptionObject.prototype.print = function(ctx, mult) {\n var i, j, radius, x, y, _i, _ref, _results;\n ctx.fillStyle = \"black\";\n _results = [];\n for (i = _i = 0, _ref = this.answerSpots.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n _results.push((function() {\n var _j, _ref1, _results1;\n _results1 = [];\n for (j = _j = 0, _ref1 = this.answerSpots[i].length - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; j = 0 <= _ref1 ? ++_j : --_j) {\n x = mult + i * mult * 2;\n y = mult + j * mult * 2;\n radius = mult / 1.7;\n ctx.beginPath();\n ctx.arc(x, y, radius, 0, 2 * Math.PI);\n if (this.answerSpots[i][j]) {\n ctx.fill();\n }\n ctx.lineWidth = 2;\n _results1.push(ctx.stroke());\n }\n return _results1;\n }).call(this));\n }\n return _results;\n };\n\n return OptionObject;\n\n })();\n\n freshSheet = function() {\n var myPoly, mySet;\n myPoly = new Polygon();\n myPoly.addVertex(new Vertex(0, 0));\n myPoly.addVertex(new Vertex(8, 0));\n myPoly.addVertex(new Vertex(8, 8));\n myPoly.addVertex(new Vertex(0, 8));\n mySet = [];\n mySet[0] = myPoly;\n return mySet;\n };\n\n freshTable = function() {\n var cnt, i, j, tSpots, x, y, _i, _j;\n tSpots = [];\n cnt = 0;\n for (i = _i = 0; _i <= 3; i = ++_i) {\n for (j = _j = 0; _j <= 3; j = ++_j) {\n x = (i * 2) + 1;\n y = (j * 2) + 1;\n tSpots[cnt] = new TableSpot(new Vertex(x, y));\n cnt++;\n }\n }\n return tSpots;\n };\n\n populateFoldLines = function() {\n var i, l, v1, v1x, v1y, v2, v2x, v2y, _i, _results;\n _results = [];\n for (i = _i = 0; _i <= 4; i = ++_i) {\n v1 = new Vertex(i + 2, 0);\n v2 = new Vertex(i + 2, 8);\n l = new Line(v1, v2);\n foldLines[i] = l;\n v1 = new Vertex(0, i + 2);\n v2 = new Vertex(8, i + 2);\n l = new Line(v1, v2);\n foldLines[i + 5] = l;\n v1x = -4 + 2 * i;\n if (v1x < 0) {\n v1x = 0;\n }\n v1y = 4 - 2 * i;\n if (v1y < 0) {\n v1y = 0;\n }\n v2x = 4 + 2 * i;\n if (v2x > 8) {\n v2x = 8;\n }\n v2y = 12 - 2 * i;\n if (v2y > 8) {\n v2y = 8;\n }\n v1 = new Vertex(v1x, v1y);\n v2 = new Vertex(v2x, v2y);\n l = new Line(v1, v2);\n foldLines[i + 10] = l;\n v1x = -4 + 2 * i;\n if (v1x < 0) {\n v1x = 0;\n }\n v1y = 4 + 2 * i;\n if (v1y > 8) {\n v1y = 8;\n }\n v2x = 4 + 2 * i;\n if (v2x > 8) {\n v2x = 8;\n }\n v2y = -4 + 2 * i;\n if (v2y < 0) {\n v2y = 0;\n }\n v1 = new Vertex(v1x, v1y);\n v2 = new Vertex(v2x, v2y);\n l = new Line(v1, v2);\n _results.push(foldLines[i + 15] = l);\n }\n return _results;\n };\n\n locateHole = function(page) {\n var cnt, max, ts, _i, _len, _results;\n max = 2;\n if (Math.random() < 0.4) {\n for (_i = 0, _len = tableSpots.length; _i < _len; _i++) {\n ts = tableSpots[_i];\n cnt = ts.members.length;\n if (cnt > max) {\n max = cnt;\n }\n }\n }\n _results = [];\n while (true) {\n page.holeSpot = randomInt(16);\n if (tableSpots[page.holeSpot].members.length >= max) {\n break;\n } else {\n _results.push(void 0);\n }\n }\n return _results;\n };\n\n Holes.prototype.punchHole = function(ctx) {\n return tableSpots[this.holeSpot].print(ctx, \"white\", QUES_MULT, false);\n };\n\n Holes.prototype.falseMirror = function() {\n var falseFold, falsified, flsPg, fp, j, newFldLine, orientation, _i, _j, _len, _ref, _ref1;\n while (true) {\n flsPg = new Page();\n for (j = _i = 0, _ref = folds.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; j = 0 <= _ref ? ++_i : --_i) {\n flsPg.folds[j] = folds[j];\n }\n flsPg.holeSpot = this.holeSpot;\n falseFold = randomInt(3);\n newFldLine = flsPg.folds[falseFold].location + randomInt(3) - 1;\n orientation = flsPg.folds[falseFold].orientation;\n if (Math.random() < 0.5) {\n orientation = !orientation;\n }\n if (newFldLine < 0) {\n newFldLine = 1;\n }\n if (newFldLine > 19) {\n newFldLine = 18;\n }\n flsPg.folds[falseFold] = new Fold();\n flsPg.folds[falseFold].location = newFldLine;\n flsPg.folds[falseFold].orientation = orientation;\n _ref1 = flsPg.folds;\n for (_j = 0, _len = _ref1.length; _j < _len; _j++) {\n fp = _ref1[_j];\n relocateSpots(flsPg.tableSpots, fp);\n }\n falsified = flsPg.copyOfPunchedHoles();\n if (falsified.checkValidity()) {\n return falsified.generateOptionObject();\n }\n }\n };\n\n Holes.prototype.falseRelocate = function() {\n var deltaX, deltaY, falseCandidate, falsified, mover, newSpot, unmovable;\n falsified = this.copyOfPunchedHoles();\n unmovable = falsified[0].identical(tableSpots[this.holeSpot]) ? 1 : 0;\n while (true) {\n mover = randomInt(falsified.length - unmovable) + unmovable;\n deltaX = 2 * randomInt(3) - 2;\n deltaY = 2 * randomInt(3) - 2;\n if (falsified.length < 3 && Math.random() < 0.5) {\n deltaX = 2 * deltaX;\n deltaY = 2 * deltaY;\n }\n newSpot = new Vertex(falsified[mover].x + deltaX, falsified[mover].y + deltaY);\n if (!newSpot.valid()) {\n continue;\n }\n falseCandidate = this.copyOfPunchedHoles();\n falseCandidate[mover] = newSpot;\n return falseCandidate.generateOptionObject();\n }\n };\n\n Holes.prototype.generateFalseAnswers = function() {\n var i, j, unique, _i, _ref, _results;\n this.options[this.correctOption] = this.copyOfPunchedHoles().generateOptionObject();\n _results = [];\n for (i = _i = 0, _ref = answerCanvases.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n if (i !== this.correctOption) {\n _results.push((function() {\n var _j, _ref1, _results1;\n _results1 = [];\n while (true) {\n unique = true;\n this.options[i] = Math.random() < 0.5 ? this.falseRelocate() : this.falseRelocate();\n for (j = _j = 0, _ref1 = this.options.length - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; j = 0 <= _ref1 ? ++_j : --_j) {\n if (j !== i) {\n if (!this.options[i].checkUniqueness(this.options[j])) {\n unique = false;\n break;\n }\n }\n }\n if (unique) {\n break;\n } else {\n _results1.push(void 0);\n }\n }\n return _results1;\n }).call(this));\n }\n }\n return _results;\n };\n\n Holes.prototype.copyOfPunchedHoles = function() {\n var result, spt, spts, _i, _len;\n result = new PunchedHoleList();\n spts = tableSpots[this.holeSpot].members;\n for (_i = 0, _len = spts.length; _i < _len; _i++) {\n spt = spts[_i];\n result.push(new Vertex(spt.x, spt.y));\n }\n return result;\n };\n\n Holes.prototype.printAnswerChoices = function() {\n var c, ctx, i, _i, _ref, _results;\n _results = [];\n for (i = _i = 0, _ref = answerCanvases.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n c = document.getElementById(answerCanvases[i]);\n ctx = c.getContext(\"2d\");\n _results.push(this.options[i].print(ctx, ANS_MULT));\n }\n return _results;\n };\n\n return Holes;\n\n })(Quiz);\n\n Cubes = (function(_super) {\n var COLUMNS, Cube, HEIGHT, LAYER_X, LAYER_Y, Point, ROWS, Structure;\n\n __extends(Cubes, _super);\n\n COLUMNS = 3;\n\n HEIGHT = 2;\n\n ROWS = 3;\n\n LAYER_X = 100;\n\n LAYER_Y = 100;\n\n function Cubes() {\n this.handleIncorrect = __bind(this.handleIncorrect, this);\n this.handleCorrect = __bind(this.handleCorrect, this);\n var c, ctx, i, opt, pzlHeight, pzlWidth, spt, _i, _len, _ref;\n startTimer();\n this.structure = new Structure();\n this.answer = \"z\";\n this.options = [];\n this.paintQuery();\n this.sequentialQuestions();\n this.setTitle(\"How many cubes have \" + questionText(this.sidesQty) + \" painted?\");\n $('#display-area').html('

1

2

3

4

5

');\n pzlHeight = 3 * MAIN_WIDTH / 4;\n pzlWidth = 3 * MAIN_WIDTH / 4;\n $('#display-area > div').first().css({\n float: \"left\"\n });\n $('#display-area > div').first().width(MAIN_WIDTH - pzlWidth);\n $('#display-area > div').first().height(pzlHeight);\n $('#display-area > div').first().find('canvas').each(function() {\n $(this).width(MAIN_WIDTH - pzlWidth);\n $(this).height(MAIN_WIDTH - pzlHeight);\n $(this).attr(\"width\", \"\" + (MAIN_WIDTH - pzlWidth));\n return $(this).attr(\"height\", \"\" + (MAIN_WIDTH - pzlHeight));\n });\n $('#puzzle').height(pzlHeight);\n $('#puzzle').width(pzlWidth);\n $('#puzzle + div').width(MAIN_WIDTH);\n $('#puzzle + div').height(MAIN_WIDTH - pzlHeight);\n $('#puzzle + div > h1').width(MAIN_WIDTH / 5 - 10);\n $('#puzzle + div > h1').css({\n display: \"inline-block\"\n });\n $('#puzzle + div > h1').css({\n textAlign: \"center\"\n });\n $('#puzzle + div > h1').css({\n border: \"thin solid #EEE\"\n });\n $('#puzzle + div > h1').css({\n marginLeft: \"6px\"\n });\n $('#puzzle + div > h1').css({\n borderRadius: \"6px\"\n });\n $('#puzzle + div > h1').css({\n cursor: \"pointer\"\n });\n $('#puzzle + div > h1').hover(function() {\n return $(this).css({\n backgroundColor: \"#EEE\"\n });\n }, function() {\n return $(this).css({\n backgroundColor: \"transparent\"\n });\n });\n _ref = this.options;\n for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {\n opt = _ref[i];\n spt = $('#puzzle + div > h1').eq(\"\" + i);\n spt.text(opt);\n if (opt === this.tally) {\n spt.on(\"click\", this.handleCorrect);\n } else {\n spt.on(\"click\", this.handleIncorrect);\n }\n }\n c = document.getElementById(\"puzzle\");\n c.width = pzlWidth;\n c.height = pzlHeight;\n ctx = c.getContext(\"2d\");\n this.structure.printCubes(ctx);\n }\n\n Cubes.prototype.paintQuery = function() {\n var pq, valid, _i, _len, _ref;\n while (true) {\n valid = true;\n this.sidesQty = randomInt(5) + 1;\n _ref = this.structure.paintQueries;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n pq = _ref[_i];\n if (this.sidesQty === pq) {\n valid = false;\n break;\n }\n }\n if (!valid) {\n continue;\n }\n this.getTally();\n if (this.tally !== 0) {\n break;\n }\n }\n return this.structure.paintQueries.push(this.sidesQty);\n };\n\n Cubes.prototype.populateQuestions = function() {\n var candidate, history, hst, i, valid, _i, _len, _results;\n this.options.push(this.tally);\n history = [];\n i = 0;\n while (i < questionIds.length) {\n while (true) {\n candidate = randomInt(5) + 1;\n if (Math.random() < 0.5) {\n candidate = -candidate;\n }\n if (candidate + this.tally < 1 || candidate + this.tally > this.structure.cubes.length) {\n continue;\n }\n valid = true;\n for (_i = 0, _len = history.length; _i < _len; _i++) {\n hst = history[_i];\n if (candidate === hst) {\n valid = false;\n break;\n }\n }\n if (!valid) {\n continue;\n }\n history.push(candidate);\n this.options.push(this.tally + candidate);\n break;\n }\n i++;\n }\n this.options.sort(function(a, b) {\n return a - b;\n });\n i = 0;\n _results = [];\n while (i < questionIds.length) {\n if (this.options[i] === this.tally) {\n this.correctOption = i;\n }\n _results.push(i++);\n }\n return _results;\n };\n\n Cubes.prototype.sequentialQuestions = function() {\n var choices, i, _i, _results;\n choices = this.tally;\n if (choices > 5) {\n choices = 5;\n }\n this.correctOption = randomInt(choices);\n _results = [];\n for (i = _i = 0; _i <= 4; i = ++_i) {\n _results.push(this.options.push(this.tally - this.correctOption + i));\n }\n return _results;\n };\n\n Cubes.prototype.displayQuestions = function() {\n var i, _results;\n document.getElementById(\"query\").innerHTML = numberWord(this.sidesQty);\n i = 0;\n _results = [];\n while (i < questionIds.length) {\n document.getElementById(questionIds[i]).innerHTML = questionText(this.options[i]);\n _results.push(i++);\n }\n return _results;\n };\n\n Cubes.prototype.getTally = function() {\n var count, sc, _i, _len, _ref;\n count = 0;\n _ref = this.structure.cubes;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n sc = _ref[_i];\n if (sc.painted === this.sidesQty) {\n count++;\n }\n }\n return this.tally = count;\n };\n\n Cubes.prototype.display = function() {\n var c, ctx;\n this.displayQuestions();\n c = document.getElementById('puzzle');\n ctx = c.getContext(\"2d\");\n return this.structure.printCubes(ctx);\n };\n\n Cubes.prototype.explicate = function() {\n return $('#display-area > div').first().find('canvas').each((function(_this) {\n return function(index, element) {\n var c, color, ctx, sc, _i, _len, _ref, _results;\n c = element;\n ctx = c.getContext(\"2d\");\n _ref = _this.structure.cubes;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n sc = _ref[_i];\n if (sc.y === index) {\n color = \"white\";\n if (sc.painted === _this.sidesQty) {\n color = \"#5F5\";\n }\n _results.push(sc.print(ctx, _this.structure.solutionScale, _this.structure.perspective, color, _this.structure.xOff, _this.structure.yOff));\n } else if (sc.y > index) {\n color = \"#EEE\";\n _results.push(sc.print(ctx, _this.structure.solutionScale, _this.structure.perspective, color, _this.structure.xOff, _this.structure.yOff));\n } else {\n _results.push(void 0);\n }\n }\n return _results;\n };\n })(this));\n };\n\n Cubes.prototype.handleResult = function(r, text) {\n var cell, table, tot;\n $('#puzzle + div > h1').unbind();\n $('#puzzle + div > h1').css({\n cursor: \"inherit\"\n });\n this.explicate();\n clearInterval(timer);\n $('#single-result').text(text);\n table = $('table')[0];\n cell = table.rows[step].cells[round];\n $(cell).text(r);\n scores.push(r);\n tot = 0;\n if (scores.length > 0) {\n tot = (scores.reduce(function(x, y) {\n return x + y;\n })) / scores.length;\n tot = Math.round(tot * 100) / 100;\n }\n $('#average').text(tot);\n return $('#position').text('Click \"Next\" Button to Continue');\n };\n\n Cubes.prototype.handleCorrect = function() {\n return this.handleResult(0, \"Correct, 0 points\");\n };\n\n Cubes.prototype.handleIncorrect = function() {\n return this.handleResult(5, \"Incorrect: The correct answer is \" + this.tally + \", 5 points\");\n };\n\n Point = (function() {\n function Point(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n\n Point.prototype.screenPoint = function(view, xOff, yOff) {\n var deltaX, result;\n result = [];\n deltaX = this.z * 0.42;\n if (view >= 1) {\n deltaX = -deltaX + COLUMNS / 2;\n }\n result[0] = this.x - deltaX + xOff;\n result[1] = this.y - this.z * 0.38 + yOff;\n return result;\n };\n\n return Point;\n\n })();\n\n Cube = (function() {\n function Cube(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.painted = 5;\n }\n\n Cube.prototype.print = function(ctx, mult, view, color, xOff, yOff) {\n ctx.fillStyle = color;\n this.fill(ctx, mult, view, xOff, yOff);\n return this.outline(ctx, mult, view, xOff, yOff);\n };\n\n Cube.prototype.fill = function(ctx, mult, view, xOff, yOff) {\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.closePath();\n ctx.fill();\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n ctx.closePath();\n ctx.fill();\n if (view === 0) {\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y + 1, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.closePath();\n return ctx.fill();\n } else {\n ctx.beginPath();\n screenMove(ctx, new Point(this.x + 1, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y + 1, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.closePath();\n return ctx.fill();\n }\n };\n\n Cube.prototype.outline = function(ctx, mult, view, xOff, yOff) {\n ctx.lineCap = \"round\";\n ctx.lineWidth = 1;\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n ctx.beginPath();\n screenMove(ctx, new Point(this.x + 1, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n ctx.beginPath();\n screenMove(ctx, new Point(this.x + 1, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n ctx.beginPath();\n screenMove(ctx, new Point(this.x + 1, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n if (view === 0) {\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y + 1, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n } else {\n ctx.beginPath();\n screenMove(ctx, new Point(this.x + 1, this.y + 1, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n }\n ctx.beginPath();\n screenMove(ctx, new Point(this.x + 1, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n if (view === 0) {\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y + 1, this.z + 1).screenPoint(view, xOff, yOff), mult);\n return ctx.stroke();\n } else {\n ctx.beginPath();\n screenMove(ctx, new Point(this.x + 1, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y + 1, this.z + 1).screenPoint(view, xOff, yOff), mult);\n return ctx.stroke();\n }\n };\n\n return Cube;\n\n })();\n\n Structure = (function() {\n function Structure() {\n this.xOff = 0;\n this.yOff = 0;\n this.perspective = randomInt(2);\n this.paintQueries = [];\n while (true) {\n this.cubes = [];\n this.seed();\n this.createPattern();\n if (this.visible()) {\n break;\n }\n }\n this.scale();\n this.tallySides();\n this.order();\n }\n\n Structure.prototype.visible = function() {\n var cb, front, h, i, j, lip, obstuctColumn, side, wall, _i, _j, _k, _len, _ref, _ref1, _ref2;\n for (i = _i = 0, _ref = COLUMNS - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n for (j = _j = 0, _ref1 = ROWS - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; j = 0 <= _ref1 ? ++_j : --_j) {\n h = this.height(i, j);\n if (h < HEIGHT) {\n _ref2 = this.cubes;\n for (_k = 0, _len = _ref2.length; _k < _len; _k++) {\n cb = _ref2[_k];\n if (cb.y < h && cb.z <= j) {\n if (this.perspective === 0 && i - cb.x === 1) {\n return false;\n }\n if (this.perspective === 1 && cb.x - i === 1) {\n return false;\n }\n }\n }\n }\n front = this.height(i, j - 1);\n if (front <= h && front < HEIGHT) {\n side = this.perspective === 0 ? this.height(i - 1, j) : this.height(i + 1, j);\n if (side <= h && side < HEIGHT) {\n lip = side > front ? side : front;\n wall = this.height(i, j + 1);\n if (wall <= lip) {\n if (this.height(i, j - 1) < lip || this.height(i, j - 2) < lip) {\n obstuctColumn = this.perspective === 0 ? i - 1 : i + 1;\n if (this.height(obstuctColumn, j - 1) >= lip && this.height(obstuctColumn, j - 2) >= lip) {\n return false;\n }\n }\n }\n }\n }\n }\n }\n return true;\n };\n\n Structure.prototype.height = function(x, z) {\n var cb, h, _i, _len, _ref;\n h = HEIGHT;\n _ref = this.cubes;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n cb = _ref[_i];\n if ((cb.x === x && cb.z === z) && (cb.y < h)) {\n h = cb.y;\n }\n }\n return h;\n };\n\n Structure.prototype.tallySides = function() {\n var cb1, cb2, div, _i, _len, _ref, _results;\n _ref = this.cubes;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n cb1 = _ref[_i];\n _results.push((function() {\n var _j, _len1, _ref1, _results1;\n _ref1 = this.cubes;\n _results1 = [];\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n cb2 = _ref1[_j];\n if (cb2 !== cb1) {\n if (cb1.x === cb2.x && cb1.y === cb2.y) {\n div = cb1.z - cb2.z;\n if (div === 1) {\n _results1.push(cb1.painted--);\n } else if (div === -1) {\n _results1.push(cb1.painted--);\n } else {\n _results1.push(void 0);\n }\n } else if (cb1.x === cb2.x && cb1.z === cb2.z) {\n div = cb1.y - cb2.y;\n if (div === 1) {\n _results1.push(cb1.painted--);\n } else {\n _results1.push(void 0);\n }\n } else if (cb1.z === cb2.z && cb1.y === cb2.y) {\n div = cb1.x - cb2.x;\n if (div === 1) {\n _results1.push(cb1.painted--);\n } else if (div === -1) {\n _results1.push(cb1.painted--);\n } else {\n _results1.push(void 0);\n }\n } else {\n _results1.push(void 0);\n }\n }\n }\n return _results1;\n }).call(this));\n }\n return _results;\n };\n\n Structure.prototype.push = function(cube) {\n return this.cubes.push(cube);\n };\n\n Structure.prototype.printCubes = function(ctx) {\n var cb, _i, _len, _ref, _results;\n _ref = this.cubes;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n cb = _ref[_i];\n _results.push(cb.print(ctx, this.multiplier, this.perspective, \"white\", this.xOff + 2, this.yOff + 2));\n }\n return _results;\n };\n\n Structure.prototype.order = function() {\n var cb, hldr, holder, holder2, i, j, result, _i, _j, _k, _l, _len, _len1, _ref, _ref1, _ref2, _ref3;\n result = [];\n holder = [];\n for (i = _i = 0, _ref = HEIGHT - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n holder.push([]);\n }\n _ref1 = this.cubes;\n for (_j = 0, _len = _ref1.length; _j < _len; _j++) {\n cb = _ref1[_j];\n holder[cb.y].push(cb);\n }\n i = HEIGHT - 1;\n while (i >= 0) {\n holder2 = [];\n for (j = _k = 0, _ref2 = ROWS - 1; 0 <= _ref2 ? _k <= _ref2 : _k >= _ref2; j = 0 <= _ref2 ? ++_k : --_k) {\n holder2.push([]);\n }\n _ref3 = holder[i];\n for (_l = 0, _len1 = _ref3.length; _l < _len1; _l++) {\n hldr = _ref3[_l];\n holder2[hldr.z].push(hldr);\n }\n j = ROWS - 1;\n while (j >= 0) {\n if (this.perspective === 0) {\n holder2[j].sort(function(a, b) {\n return b.x - a.x;\n });\n } else {\n holder2[j].sort(function(a, b) {\n return a.x - b.x;\n });\n }\n result = result.concat(holder2[j]);\n j--;\n }\n i--;\n }\n return this.cubes = result;\n };\n\n Structure.prototype.seed = function() {\n var x, z;\n x = randomInt(COLUMNS);\n z = randomInt(ROWS);\n return this.push(new Cube(x, HEIGHT - 1, z));\n };\n\n Structure.prototype.scale = function() {\n var b, bottom, cube, l, left, r, right, t, top, xScale, yScale, _i, _len, _ref;\n top = 10000;\n bottom = -10000;\n right = -10000;\n left = 10000;\n _ref = this.cubes;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n cube = _ref[_i];\n t = new Point(cube.x, cube.y, cube.z + 1).screenPoint(this.perspective, this.xOff, this.yOff)[1];\n if (t < top) {\n top = t;\n }\n b = new Point(cube.x, cube.y + 1, cube.z).screenPoint(this.perspective, this.xOff, this.yOff)[1];\n if (b > bottom) {\n bottom = b;\n }\n if (this.perspective === 0) {\n r = new Point(cube.x + 1, cube.y, cube.z).screenPoint(this.perspective, this.xOff, this.yOff)[0];\n if (r > right) {\n right = r;\n }\n l = new Point(cube.x, cube.y, cube.z + 1).screenPoint(this.perspective, this.xOff, this.yOff)[0];\n if (l < left) {\n left = l;\n }\n } else {\n r = new Point(cube.x + 1, cube.y, cube.z + 1).screenPoint(this.perspective, this.xOff, this.yOff)[0];\n if (r > right) {\n right = r;\n }\n l = new Point(cube.x, cube.y, cube.z).screenPoint(this.perspective, this.xOff, this.yOff)[0];\n if (l < left) {\n left = l;\n }\n }\n }\n xScale = LAYER_X / (right - left);\n yScale = LAYER_Y / (bottom - top);\n if (xScale > yScale) {\n this.solutionScale = LAYER_Y / (bottom - top);\n } else {\n this.solutionScale = LAYER_X / (right - left);\n }\n this.multiplier = 40;\n this.xOff = 0 - left;\n return this.yOff = 0 - top;\n };\n\n Structure.prototype.createPattern = function() {\n var a, cb, iter, j, upperCubes, valid, x, z, _i, _j, _len, _len1, _ref, _ref1;\n upperCubes = [];\n while (true) {\n a = randomInt(this.cubes.length);\n x = this.cubes[a].x;\n z = this.cubes[a].z;\n switch (randomInt(4)) {\n case 0:\n x--;\n break;\n case 1:\n x++;\n break;\n case 2:\n z++;\n break;\n default:\n z--;\n }\n if (x >= COLUMNS || x < 0 || z >= ROWS || z < 0) {\n continue;\n }\n valid = true;\n _ref = this.cubes;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n cb = _ref[_i];\n if (x === cb.x && z === cb.z) {\n valid = false;\n break;\n }\n }\n if (valid) {\n this.push(new Cube(x, HEIGHT - 1, z));\n }\n if (this.cubes.length > 6) {\n break;\n }\n if (!(this.cubes.length < (2 + randomInt(3) + randomInt(3) + randomInt(3) + randomInt(3)))) {\n break;\n }\n }\n while (true) {\n upperCubes = [];\n _ref1 = this.cubes;\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n cb = _ref1[_j];\n iter = randomInt(HEIGHT);\n x = cb.x;\n z = cb.z;\n j = 0;\n while (j < iter) {\n upperCubes.push(new Cube(x, HEIGHT - (2 + j), z));\n j++;\n }\n }\n if (!(upperCubes.length + this.cubes.length < 4 || upperCubes.length + this.cubes.length > 15)) {\n break;\n }\n }\n return this.cubes = this.cubes.concat(upperCubes);\n };\n\n Structure.prototype.testStructure = function() {\n var i, j, k, _i, _ref, _results;\n this.cubes = [];\n _results = [];\n for (i = _i = 0, _ref = COLUMNS - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n _results.push((function() {\n var _j, _ref1, _results1;\n _results1 = [];\n for (j = _j = 0, _ref1 = HEIGHT - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; j = 0 <= _ref1 ? ++_j : --_j) {\n _results1.push((function() {\n var _k, _ref2, _results2;\n _results2 = [];\n for (k = _k = 0, _ref2 = ROWS - 1; 0 <= _ref2 ? _k <= _ref2 : _k >= _ref2; k = 0 <= _ref2 ? ++_k : --_k) {\n _results2.push(this.push(new Cube(i, j, k)));\n }\n return _results2;\n }).call(this));\n }\n return _results1;\n }).call(this));\n }\n return _results;\n };\n\n return Structure;\n\n })();\n\n return Cubes;\n\n })(Quiz);\n\n TwoAngles = (function(_super) {\n __extends(TwoAngles, _super);\n\n function TwoAngles() {\n this.handleIncorrect = __bind(this.handleIncorrect, this);\n this.handleCorrect = __bind(this.handleCorrect, this);\n var c, i, wdth, _i;\n startTimer();\n wdth = MAIN_WIDTH / 2;\n this.setTitle(\"Click on the Largest Angle\");\n $('#display-area').html('
');\n for (i = _i = 1; _i <= 2; i = ++_i) {\n c = document.getElementById(\"screen-\" + i);\n c.width = wdth;\n c.height = MAIN_HEIGHT;\n }\n $('#screen-1').add('#screen-2').hover(function() {\n return $(this).css({\n \"background-color\": \"#F9F9F9\"\n });\n }, function() {\n return $(this).css({\n \"background-color\": \"transparent\"\n });\n });\n this.getBaseStructure();\n this.initialDisplay();\n }\n\n TwoAngles.prototype.getBaseStructure = function() {\n var angle, l, newangle, originangle, rand;\n angle = 0;\n while (true) {\n this.x0 = this.getRandomPoint(MAIN_WIDTH / 2);\n this.y0 = this.getRandomPoint(MAIN_HEIGHT);\n this.x1 = this.getRandomPoint(MAIN_WIDTH / 2);\n this.y1 = this.getRandomPoint(MAIN_HEIGHT);\n this.x2 = this.getRandomPoint(MAIN_WIDTH / 2);\n this.y2 = this.getRandomPoint(MAIN_HEIGHT);\n if (dist(this.x0, this.y0, this.x1, this.y1) < 20000) {\n continue;\n }\n if (dist(this.x2, this.y2, this.x1, this.y1) < 20000) {\n continue;\n }\n angle = getAngle(this.x0, this.y0, this.x1, this.y1, this.x2, this.y2);\n if (angle < 0.2 * Math.PI) {\n continue;\n }\n if (angle > 0.8 * Math.PI) {\n continue;\n }\n break;\n }\n while (true) {\n this.x3 = this.getRandomPoint(MAIN_WIDTH / 2);\n this.y3 = this.getRandomPoint(MAIN_HEIGHT);\n this.x4 = this.getRandomPoint(MAIN_WIDTH / 2);\n this.y4 = this.getRandomPoint(MAIN_HEIGHT);\n if (dist(this.x3, this.y3, this.x4, this.y4) < 20000) {\n continue;\n }\n l = this.getRandomPoint(MAIN_HEIGHT - 140) + 120;\n originangle = Math.atan2(this.y3 - this.y4, this.x3 - this.x4);\n if (originangle < 0) {\n originangle = 2 * Math.PI + originangle;\n }\n newangle = originangle + angle - 0.0175;\n if (newangle > (2 * Math.PI)) {\n newangle -= 2 * Math.PI;\n }\n this.x5 = l * Math.cos(newangle) + this.x4;\n this.y5 = l * Math.sin(newangle) + this.y4;\n if (this.x5 < 5 || this.x5 > MAIN_WIDTH / 2 - 5) {\n continue;\n }\n if (this.y5 < 5 || this.y5 > MAIN_HEIGHT - 5) {\n continue;\n }\n break;\n }\n rand = Math.random();\n if (rand < 0.5) {\n this.correctOnRight = true;\n } else {\n this.correctOnRight = false;\n }\n if (this.correctOnRight) {\n $('#screen-2').on(\"click\", this.handleCorrect);\n return $('#screen-1').on(\"click\", this.handleIncorrect);\n } else {\n $('#screen-1').on(\"click\", this.handleCorrect);\n return $('#screen-2').on(\"click\", this.handleIncorrect);\n }\n };\n\n TwoAngles.prototype.handleCorrect = function() {\n return this.handleResult(0, \"Correct, 0 points\");\n };\n\n TwoAngles.prototype.handleIncorrect = function() {\n return this.handleResult(5, \"Incorrect: The selected angle is smaller, 5 points\");\n };\n\n TwoAngles.prototype.handleResult = function(r, text) {\n var cell, table, tot;\n $('#screen-1').add('#screen-2').unbind();\n clearInterval(timer);\n $('#single-result').text(text);\n table = $('table')[0];\n cell = table.rows[step].cells[round];\n $(cell).text(r);\n scores.push(r);\n tot = 0;\n if (scores.length > 0) {\n tot = (scores.reduce(function(x, y) {\n return x + y;\n })) / scores.length;\n tot = Math.round(tot * 100) / 100;\n }\n $('#average').text(tot);\n return $('#position').text('Click \"Next\" Button to Continue');\n };\n\n TwoAngles.prototype.initialDisplay = function() {\n var c, ctx;\n c = document.getElementById(this.correctOnRight ? \"screen-2\" : \"screen-1\");\n ctx = c.getContext(\"2d\");\n ctx.strokeStyle = \"black\";\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.moveTo(this.x0, this.y0);\n ctx.lineTo(this.x1, this.y1);\n ctx.lineTo(this.x2, this.y2);\n ctx.stroke();\n c = document.getElementById(this.correctOnRight ? \"screen-1\" : \"screen-2\");\n ctx = c.getContext(\"2d\");\n ctx.strokeStyle = \"black\";\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.moveTo(this.x3, this.y3);\n ctx.lineTo(this.x4, this.y4);\n ctx.lineTo(this.x5, this.y5);\n return ctx.stroke();\n };\n\n return TwoAngles;\n\n })(Quiz);\n\n Eyeballer = (function(_super) {\n __extends(Eyeballer, _super);\n\n function Eyeballer() {\n this.mouseUp = __bind(this.mouseUp, this);\n this.mouseMove = __bind(this.mouseMove, this);\n this.mouseDown = __bind(this.mouseDown, this);\n Eyeballer.__super__.constructor.apply(this, arguments);\n $('#display-area').html('
');\n sanitize();\n this.getBaseStructure();\n this.initialDisplay();\n $(\"#screen\").on(\"mousedown\", this.mouseDown);\n }\n\n Eyeballer.prototype.getCursor = function(e) {\n var c, rect;\n c = document.getElementById(\"screen\");\n rect = c.getBoundingClientRect();\n this.mouseX = Math.round(e.clientX - rect.left);\n return this.mouseY = Math.round(e.clientY - rect.top);\n };\n\n Eyeballer.prototype.mouseDown = function(e) {\n this.getCursor(e);\n $(\"#screen\").unbind(\"mousedown\");\n $('#screen').css('cursor', 'none');\n this.drawDynamic();\n $('#screen').on(\"mousemove\", this.mouseMove);\n return $('#screen').on(\"mouseup\", this.mouseUp);\n };\n\n Eyeballer.prototype.mouseMove = function(e) {\n this.getCursor(e);\n return this.drawDynamic();\n };\n\n Eyeballer.prototype.mouseUp = function(e) {\n this.getCursor(e);\n $('#screen').css('cursor', 'default');\n $('#screen').unbind();\n this.drawFinal();\n return this.handleResult(this.getResult());\n };\n\n Eyeballer.prototype.squarePointer = function(xa, ya, ctx, color) {\n var SIZE, startX, startY;\n SIZE = 16;\n startX = xa - SIZE / 2 + 0.5;\n startY = ya - SIZE / 2 + 0.5;\n ctx.strokeStyle = color;\n ctx.lineWidth = 1;\n return ctx.strokeRect(startX, startY, SIZE, SIZE);\n };\n\n Eyeballer.prototype.crosshairPointer = function(xa, ya, ctx, color) {\n var SIZE, startX, startY;\n SIZE = 10;\n startX = xa - SIZE / 2 + 0.5;\n startY = ya - SIZE / 2 + 0.5;\n ctx.strokeStyle = color;\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.moveTo(startX, ya + 0.5);\n ctx.lineTo(startX + SIZE, ya + 0.5);\n ctx.moveTo(xa + 0.5, startY);\n ctx.lineTo(xa + 0.5, startY + SIZE);\n return ctx.stroke();\n };\n\n Eyeballer.prototype.dotPointer = function(xa, ya, ctx, color) {\n ctx.fillStyle = color;\n ctx.beginPath();\n ctx.arc(xa, ya, 5, 0, 2 * Math.PI);\n return ctx.fill();\n };\n\n Eyeballer.prototype.drawDynamic = function() {\n var c, ctx;\n c = document.getElementById(\"screen\");\n ctx = c.getContext(\"2d\");\n return this.drawBase(ctx);\n };\n\n Eyeballer.prototype.initialDisplay = function() {\n var c, ctx;\n c = document.getElementById(\"screen\");\n ctx = c.getContext(\"2d\");\n this.mouseX = Math.round(this.solutionX - 15);\n this.mouseY = Math.round(this.solutionY - 15);\n return this.drawBase(ctx);\n };\n\n Eyeballer.prototype.getResult = function() {\n return Math.sqrt(dist(this.solutionX, this.solutionY, this.mouseX, this.mouseY));\n };\n\n Eyeballer.prototype.handleResult = function(r) {\n var cell, sane, table, text, tot;\n clearInterval(timer);\n sane = Math.round(r * 100) / 100;\n text = \"Accurate to \" + sane + \" units\";\n $('#single-result').text(text);\n table = $('table')[0];\n cell = table.rows[step].cells[round];\n $(cell).text(sane);\n scores.push(sane);\n tot = 0;\n if (scores.length > 0) {\n tot = (scores.reduce(function(x, y) {\n return x + y;\n })) / scores.length;\n tot = Math.round(tot * 100) / 100;\n }\n $('#average').text(tot);\n return $('#position').text('Click \"Next\" Button to Continue');\n };\n\n return Eyeballer;\n\n })(Quiz);\n\n Circle = (function(_super) {\n __extends(Circle, _super);\n\n function Circle() {\n Circle.__super__.constructor.apply(this, arguments);\n this.setTitle(\"Find Center of Circle\");\n }\n\n Circle.prototype.getBaseStructure = function() {\n var _results;\n _results = [];\n while (true) {\n this.solutionX = this.getRandomPoint(MAIN_WIDTH);\n this.solutionY = this.getRandomPoint(MAIN_HEIGHT);\n this.radius = Math.random() * MAIN_HEIGHT / 2;\n if (this.radius < 40) {\n continue;\n }\n if (this.solutionX - this.radius < 20) {\n continue;\n }\n if (this.solutionY - this.radius < 20) {\n continue;\n }\n if (this.solutionX + this.radius > MAIN_WIDTH) {\n continue;\n }\n if (this.solutionY + this.radius > MAIN_HEIGHT) {\n continue;\n }\n break;\n }\n return _results;\n };\n\n Circle.prototype.drawBase = function(ctx) {\n erase(ctx);\n ctx.strokeStyle = \"black\";\n ctx.lineWidth = THICKNESS;\n ctx.beginPath();\n ctx.arc(this.solutionX, this.solutionY, this.radius, 0, 2 * Math.PI);\n ctx.stroke();\n this.crosshairPointer(this.mouseX, this.mouseY, ctx, \"blue\");\n return this.squarePointer(this.mouseX, this.mouseY, ctx, \"blue\");\n };\n\n Circle.prototype.drawFinal = function() {\n var c, ctx;\n c = document.getElementById(\"screen\");\n ctx = c.getContext(\"2d\");\n erase(ctx);\n this.drawBase(ctx);\n this.crosshairPointer(this.solutionX, this.solutionY, ctx, \"green\");\n return this.squarePointer(this.solutionX, this.solutionY, ctx, \"green\");\n };\n\n return Circle;\n\n })(Eyeballer);\n\n Bisect = (function(_super) {\n __extends(Bisect, _super);\n\n function Bisect() {\n Bisect.__super__.constructor.apply(this, arguments);\n this.setTitle(\"Bisect Angle\");\n }\n\n Bisect.prototype.getBaseStructure = function() {\n var angle, deltaX, deltaY, ghostX, ghostY, ratio, segment1, segment2, _results;\n _results = [];\n while (true) {\n this.x0 = this.getRandomPoint(MAIN_WIDTH);\n this.y0 = this.getRandomPoint(MAIN_HEIGHT);\n this.x1 = this.getRandomPoint(MAIN_WIDTH);\n this.y1 = this.getRandomPoint(MAIN_HEIGHT);\n this.x2 = this.getRandomPoint(MAIN_WIDTH);\n this.y2 = this.getRandomPoint(MAIN_HEIGHT);\n if (dist(this.x0, this.y0, this.x1, this.y1) < 20000) {\n continue;\n }\n if (dist(this.x2, this.y2, this.x1, this.y1) < 20000) {\n continue;\n }\n angle = getAngle(this.x0, this.y0, this.x1, this.y1, this.x2, this.y2) / Math.PI;\n if (angle < .2) {\n continue;\n }\n if (angle > .8) {\n continue;\n }\n segment1 = Math.sqrt(dist(this.x0, this.y0, this.x1, this.y1));\n segment2 = Math.sqrt(dist(this.x2, this.y2, this.x1, this.y1));\n ratio = segment1 / segment2;\n deltaX = (this.x2 - this.x1) * ratio;\n deltaY = (this.y2 - this.y1) * ratio;\n ghostX = this.x1 + deltaX;\n ghostY = this.y1 + deltaY;\n this.solutionX = Math.round((this.x0 + ghostX) / 2);\n this.solutionY = Math.round((this.y0 + ghostY) / 2);\n break;\n }\n return _results;\n };\n\n Bisect.prototype.drawBase = function(ctx) {\n erase(ctx);\n ctx.strokeStyle = \"black\";\n ctx.lineWidth = THICKNESS;\n ctx.beginPath();\n ctx.moveTo(this.x0, this.y0);\n ctx.lineTo(this.x1, this.y1);\n ctx.lineTo(this.x2, this.y2);\n ctx.stroke();\n ctx.strokeStyle = \"blue\";\n ctx.beginPath();\n ctx.moveTo(this.x1, this.y1);\n ctx.lineTo(this.mouseX, this.mouseY);\n ctx.stroke();\n return this.squarePointer(this.mouseX, this.mouseY, ctx, \"blue\");\n };\n\n Bisect.prototype.drawFinal = function() {\n var c, ctx;\n c = document.getElementById(\"screen\");\n ctx = c.getContext(\"2d\");\n erase(ctx);\n this.drawBase(ctx);\n ctx.lineWidth = THICKNESS;\n ctx.beginPath();\n ctx.moveTo(this.x1, this.y1);\n ctx.lineTo(this.solutionX, this.solutionY);\n ctx.strokeStyle = \"green\";\n ctx.stroke();\n return this.squarePointer(this.solutionX, this.solutionY, ctx, \"green\");\n };\n\n Bisect.prototype.getResult = function() {\n var angChos, angCorr;\n angCorr = getAngle(this.x0, this.y0, this.x1, this.y1, this.x2, this.y2) * 100;\n angChos = getAngle(this.x0, this.y0, this.x1, this.y1, this.mouseX, this.mouseY) * 200;\n return Math.abs(angCorr - angChos);\n };\n\n return Bisect;\n\n })(Eyeballer);\n\n Midpoint = (function(_super) {\n __extends(Midpoint, _super);\n\n function Midpoint() {\n Midpoint.__super__.constructor.apply(this, arguments);\n this.setTitle(\"Locate Midpoint of Line Segment\");\n }\n\n Midpoint.prototype.getBaseStructure = function() {\n var deltaX, deltaY, _results;\n _results = [];\n while (true) {\n this.x0 = this.getRandomPoint(MAIN_WIDTH);\n this.y0 = this.getRandomPoint(MAIN_HEIGHT);\n this.x1 = this.getRandomPoint(MAIN_WIDTH);\n this.y1 = this.getRandomPoint(MAIN_HEIGHT);\n if (dist(this.x0, this.y0, this.x1, this.y1) < 20000) {\n continue;\n }\n deltaX = this.x1 - this.x0;\n deltaY = this.y1 - this.y0;\n if (deltaX % 2 !== 0) {\n continue;\n }\n if (deltaY % 2 !== 0) {\n continue;\n }\n this.solutionX = this.x0 + deltaX / 2;\n this.solutionY = this.y0 + deltaY / 2;\n break;\n }\n return _results;\n };\n\n Midpoint.prototype.drawBase = function(ctx) {\n erase(ctx);\n this.dotPointer(this.x0, this.y0, ctx, \"black\");\n this.dotPointer(this.x1, this.y1, ctx, \"black\");\n ctx.strokeStyle = \"blue\";\n ctx.lineWidth = THICKNESS;\n ctx.beginPath();\n ctx.moveTo(this.x0, this.y0);\n ctx.lineTo(this.mouseX, this.mouseY);\n ctx.lineTo(this.x1, this.y1);\n ctx.stroke();\n this.crosshairPointer(this.mouseX, this.mouseY, ctx, \"blue\");\n return this.squarePointer(this.mouseX, this.mouseY, ctx, \"blue\");\n };\n\n Midpoint.prototype.drawFinal = function() {\n var c, ctx;\n c = document.getElementById(\"screen\");\n ctx = c.getContext(\"2d\");\n erase(ctx);\n this.drawBase(ctx);\n ctx.lineWidth = THICKNESS;\n ctx.beginPath();\n ctx.moveTo(this.x1, this.y1);\n ctx.lineTo(this.solutionX, this.solutionY);\n ctx.lineTo(this.x0, this.y0);\n ctx.strokeStyle = \"green\";\n ctx.stroke();\n this.crosshairPointer(this.solutionX, this.solutionY, ctx, \"green\");\n return this.squarePointer(this.solutionX, this.solutionY, ctx, \"green\");\n };\n\n return Midpoint;\n\n })(Eyeballer);\n\n Parallelogram = (function(_super) {\n __extends(Parallelogram, _super);\n\n function Parallelogram() {\n Parallelogram.__super__.constructor.apply(this, arguments);\n this.setTitle(\"Create a Parallelogram\");\n }\n\n Parallelogram.prototype.getBaseStructure = function() {\n var angle, deltaX, deltaY, _results;\n _results = [];\n while (true) {\n this.x0 = this.getRandomPoint(MAIN_WIDTH);\n this.y0 = this.getRandomPoint(MAIN_HEIGHT);\n this.x1 = this.getRandomPoint(MAIN_WIDTH);\n this.y1 = this.getRandomPoint(MAIN_HEIGHT);\n this.x2 = this.getRandomPoint(MAIN_WIDTH);\n this.y2 = this.getRandomPoint(MAIN_HEIGHT);\n if (dist(this.x0, this.y0, this.x1, this.y1) < 20000) {\n continue;\n }\n if (dist(this.x2, this.y2, this.x1, this.y1) < 20000) {\n continue;\n }\n deltaX = this.x1 - this.x0;\n deltaY = this.y1 - this.y0;\n this.solutionX = this.x2 - deltaX;\n this.solutionY = this.y2 - deltaY;\n if (this.solutionX < 50 || this.solutionX > MAIN_WIDTH - 50 || this.solutionY < 50 || this.solutionY > MAIN_HEIGHT - 50) {\n continue;\n }\n angle = getAngle(this.x0, this.y0, this.x1, this.y1, this.x2, this.y2) / Math.PI;\n if (angle < .25) {\n continue;\n }\n if (angle > .75 && angle < 1.25) {\n continue;\n }\n if (angle > 1.75) {\n continue;\n }\n break;\n }\n return _results;\n };\n\n Parallelogram.prototype.drawBase = function(ctx) {\n erase(ctx);\n ctx.strokeStyle = \"black\";\n ctx.lineWidth = THICKNESS;\n ctx.beginPath();\n ctx.moveTo(this.x0, this.y0);\n ctx.lineTo(this.x1, this.y1);\n ctx.lineTo(this.x2, this.y2);\n ctx.stroke();\n ctx.strokeStyle = \"blue\";\n ctx.beginPath();\n ctx.moveTo(this.x2, this.y2);\n ctx.lineTo(this.mouseX, this.mouseY);\n ctx.lineTo(this.x0, this.y0);\n ctx.stroke();\n return this.squarePointer(this.mouseX, this.mouseY, ctx, \"blue\");\n };\n\n Parallelogram.prototype.drawFinal = function() {\n var c, ctx;\n c = document.getElementById(\"screen\");\n ctx = c.getContext(\"2d\");\n erase(ctx);\n this.drawBase(ctx);\n ctx.lineWidth = THICKNESS;\n ctx.beginPath();\n ctx.moveTo(this.x2, this.y2);\n ctx.lineTo(this.solutionX, this.solutionY);\n ctx.lineTo(this.x0, this.y0);\n ctx.strokeStyle = \"green\";\n ctx.stroke();\n return this.squarePointer(this.solutionX, this.solutionY, ctx, \"green\");\n };\n\n return Parallelogram;\n\n })(Eyeballer);\n\n RightAngle = (function(_super) {\n __extends(RightAngle, _super);\n\n function RightAngle() {\n RightAngle.__super__.constructor.apply(this, arguments);\n this.setTitle(\"Create a Right Angle\");\n }\n\n RightAngle.prototype.getBaseStructure = function() {\n var deltaX, deltaY, _results;\n _results = [];\n while (true) {\n this.x0 = this.getRandomPoint(MAIN_WIDTH);\n this.y0 = this.getRandomPoint(MAIN_HEIGHT);\n this.x1 = this.getRandomPoint(MAIN_WIDTH);\n this.y1 = this.getRandomPoint(MAIN_HEIGHT);\n if (dist(this.x0, this.y0, this.x1, this.y1) < 20000) {\n continue;\n }\n deltaX = this.x1 - this.x0;\n deltaY = this.y1 - this.y0;\n this.solutionX = this.x0 - deltaY;\n this.solutionY = this.y0 + deltaX;\n if (this.solutionX < 20) {\n continue;\n }\n if (this.solutionX > MAIN_WIDTH - 20) {\n continue;\n }\n if (this.solutionY < 20) {\n continue;\n }\n if (this.solutionY > MAIN_HEIGHT - 20) {\n continue;\n }\n break;\n }\n return _results;\n };\n\n RightAngle.prototype.drawBase = function(ctx) {\n erase(ctx);\n ctx.strokeStyle = \"black\";\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.moveTo(this.x0, this.y0);\n ctx.lineTo(this.x1, this.y1);\n ctx.stroke();\n ctx.strokeStyle = \"blue\";\n ctx.beginPath();\n ctx.moveTo(this.x0, this.y0);\n ctx.lineTo(this.mouseX, this.mouseY);\n ctx.stroke();\n return this.squarePointer(this.mouseX, this.mouseY, ctx, \"blue\");\n };\n\n RightAngle.prototype.drawFinal = function() {\n var c, ctx;\n c = document.getElementById(\"screen\");\n ctx = c.getContext(\"2d\");\n erase(ctx);\n this.drawBase(ctx);\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.moveTo(this.x0, this.y0);\n ctx.lineTo(this.solutionX, this.solutionY);\n ctx.strokeStyle = \"green\";\n ctx.stroke();\n return this.squarePointer(this.solutionX, this.solutionY, ctx, \"green\");\n };\n\n RightAngle.prototype.getResult = function() {\n var angChos;\n angChos = getAngle(this.x1, this.y1, this.x0, this.y0, this.mouseX, this.mouseY);\n if (angChos > Math.PI) {\n angChos = 2 * Math.PI - angChos;\n }\n return Math.abs(Math.PI / 2 - angChos) * 100;\n };\n\n return RightAngle;\n\n })(Eyeballer);\n\n createQuiz = function(n) {\n switch (n) {\n case 0:\n return new Parallelogram();\n case 1:\n return new Midpoint();\n case 2:\n return new Bisect();\n case 3:\n return new Circle();\n case 4:\n return new RightAngle();\n case 5:\n return new TwoAngles();\n case 6:\n return new Cubes();\n case 7:\n return new Holes();\n }\n };\n\n getAngle = function(a, b, c, d, e, f) {\n var angle1, angle2, angle3, p1x, p1y, p2x, p2y;\n p1x = a - c;\n p1y = b - d;\n p2x = e - c;\n p2y = f - d;\n angle1 = Math.atan2(p1y, p1x);\n angle2 = Math.atan2(p2y, p2x);\n angle3 = Math.abs(angle1 - angle2);\n if (angle3 > Math.PI) {\n angle3 = 2 * Math.PI - angle3;\n }\n return angle3;\n };\n\n dist = function(xa, ya, xb, yb) {\n var deltaX, deltaY;\n deltaX = xb - xa;\n deltaY = yb - ya;\n return deltaX * deltaX + deltaY * deltaY;\n };\n\n randomInt = function(scale) {\n return Math.floor(Math.random() * scale);\n };\n\n screenMove = function(ctx, p, mult) {\n var x, y;\n x = Math.floor(p[0] * mult) + PADDING;\n y = Math.floor(p[1] * mult) + PADDING;\n return ctx.moveTo(x, y);\n };\n\n screenLine = function(ctx, p, mult) {\n var x, y;\n x = Math.floor(p[0] * mult) + PADDING;\n y = Math.floor(p[1] * mult) + PADDING;\n return ctx.lineTo(x, y);\n };\n\n questionText = function(n) {\n if (n === 1) {\n return \"1 side\";\n } else {\n return \"\" + n + \" sides\";\n }\n };\n\n sanitize = function() {\n var c;\n c = document.getElementById(\"screen\");\n c.width = MAIN_WIDTH;\n return c.height = MAIN_HEIGHT;\n };\n\n clearQuiz = function() {\n clearInterval(timer);\n $('#screen').unbind();\n return $('#single-result').text(\"\");\n };\n\n erase = function(ctx) {\n return ctx.clearRect(0, 0, MAIN_WIDTH, MAIN_HEIGHT);\n };\n\n reset = function() {\n\t\t$('#next').show();\n var cell, i, j, table, _i, _j, _ref;\n step = 0;\n round = 1;\n scores = [];\n clearQuiz();\n timeReset();\n table = $('table')[0];\n for (j = _i = 0, _ref = QUIZZES - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; j = 0 <= _ref ? ++_i : --_i) {\n for (i = _j = 1; 1 <= ROUNDS ? _j <= ROUNDS : _j >= ROUNDS; i = 1 <= ROUNDS ? ++_j : --_j) {\n cell = table.rows[j].cells[i];\n $(cell).text(\"---\");\n }\n }\n $('#average').text(\"0\");\n return createQuiz(step);\n };\n\n startTimer = function() {\n clearInterval(timer);\n return timer = setInterval((function() {\n ++timeUsed;\n return $('#time-display').html(timeUsed);\n }), 1000);\n };\n\n timeReset = function() {\n timeUsed = 0;\n return $('#time-display').html(timeUsed);\n };\n\n}\n","export default __webpack_public_path__ + \"static/media/adam.9116c3bd.gif\";","export default __webpack_public_path__ + \"static/media/akmal_shahzad.730dc19f.png\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/alexa_turpin.a8f7ed8e.jpeg\";","export default __webpack_public_path__ + \"static/media/alexus_foster.ec801f47.jpeg\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/anvin_thomas.c691d531.jpeg\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/aubrey_leaser.b484eac0.jpeg\";","export default __webpack_public_path__ + \"static/media/chris.36cbdde3.jpeg\";","export default __webpack_public_path__ + \"static/media/cortney_olejniczak.7b54104f.png\";","export default __webpack_public_path__ + \"static/media/crysta_bliss.a080824a.png\";","export default __webpack_public_path__ + \"static/media/david_nauheim.af3d7972.png\";","export default __webpack_public_path__ + \"static/media/elaine_chen.32b4308e.jpg\";","export default __webpack_public_path__ + \"static/media/emily_gagne.c0c9f81f.jpeg\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/gabriella_alagha.441a4633.png\";","export default __webpack_public_path__ + \"static/media/garrett_schick.b1529a6c.png\";","export default __webpack_public_path__ + \"static/media/hannah_riga.0252de05.png\";","export default __webpack_public_path__ + \"static/media/jamie_larmie.97dd154e.png\";","export default __webpack_public_path__ + \"static/media/joel.fe986a7b.gif\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/john.c3d1cd80.gif\";","export default __webpack_public_path__ + \"static/media/lance.bc155573.gif\";","export default __webpack_public_path__ + \"static/media/lauren_james.90df6933.png\";","export default __webpack_public_path__ + \"static/media/lera_osullivan.e5b1b3d5.png\";","export default __webpack_public_path__ + \"static/media/livianna_gallone.ae2cc9e9.png\";","export default __webpack_public_path__ + \"static/media/lucas_garmo.bd976144.jpeg\";","export default __webpack_public_path__ + \"static/media/mallory_decampos.66972110.png\";","export default __webpack_public_path__ + \"static/media/margaret.ac39656e.gif\";","export default __webpack_public_path__ + \"static/media/michael_cassidy.21024210.png\";","export default __webpack_public_path__ + \"static/media/monica.28435645.gif\";","export default __webpack_public_path__ + \"static/media/nick_rochester.f0c7bb39.jpeg\";","export default __webpack_public_path__ + \"static/media/sam_komrower.c7be577a.png\";","export default __webpack_public_path__ + \"static/media/sepehr_saberian.70f95de2.jpeg\";","export default __webpack_public_path__ + \"static/media/stephen.7532d6df.gif\";","export default __webpack_public_path__ + \"static/media/whitney.cab0d0ac.png\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/Proxima-Nova-Bold-It.fadb7d76.ttf\";","export default __webpack_public_path__ + \"static/media/Proxima-Nova-Bold.d18f36dc.ttf\";","export default __webpack_public_path__ + \"static/media/Proxima-Nova-Light-It.de4b7901.ttf\";","export default __webpack_public_path__ + \"static/media/Proxima-Nova-Light.a5d2f114.ttf\";","export default __webpack_public_path__ + \"static/media/Proxima-Nova-Reg-It.01cb8264.ttf\";","export default __webpack_public_path__ + \"static/media/Proxima-Nova-Reg.08d45952.ttf\";","export default __webpack_public_path__ + \"static/media/proximanova-black.a9ea80c3.WOFF\";","export default __webpack_public_path__ + \"static/media/proximanova-bold.d7454c98.WOFF\";","export default __webpack_public_path__ + \"static/media/proximanova-extrabold.79686030.WOFF\";","export default __webpack_public_path__ + \"static/media/proximanova-light.14028f7a.WOFF\";","export default __webpack_public_path__ + \"static/media/proximanova-medium.908fc77d.WOFF\";","export default __webpack_public_path__ + \"static/media/proximanova-regular.a6d66dc8.WOFF\";","export default __webpack_public_path__ + \"static/media/proximanova-regular.08d45952.ttf\";","export default __webpack_public_path__ + \"static/media/proximanova-semibold.596875d3.WOFF\";","export default __webpack_public_path__ + \"static/media/proximanova-thin.645107fe.WOFF\";","export default __webpack_public_path__ + \"static/media/Calendar-gold.54a328be.svg\";","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADgAAAA4CAYAAACohjseAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAOlSURBVHgB7ZqBcdswDEWhXgdou0CdDdwNnAV6yQTRdYFkgtqZIJ6gdhdouoHSBdINomaBpBMYBSIwpmCSImXJqXL6dzjLsgTikRRMSAIYNWrUqNciRHxHNid7JLsjOyObwNClwLRKsqtBgnrACrKZWKFgV4MAleDXKvgnMHUc29Rx7P8JGhiVWcN5bJOYTnkRSXA2GE/JBU/RRD82qD2tb190RAXG1hm0lEDytbtUkAtoobfQj3IK6D7LspvYExiMxCN+TnYh23vrDXSrS7JjslOyE6zS/2MoaZgRo805WUm2gAruRnxdwh7qGhB41Mj+kvEo3EMVbE5W2qDmeqPNJTjA6Pxj2d5LnQPaoiA5+COy77IrBwGlzwIqMJ6SNbCUqd2kXgFZFOwfshx2QWeyvSb71DWYUV9JZkcMClXyWUA1cpxVPvB0hh7V+whqCajZ7hWOdXDAQ2sEHLpGwKGrK0CzbvwI3SqDjtakreSp/8qmakKO2wR+9/kuDlIfOhrnBfW1wDWC+gAFLI/wfYd7lGQhMG78t2r8ubDFqljNXaBoFb82IG7rvznW679n37gthC86B21qHMKdoUHnEugToMc3H3fu843bUd4BxZSqH/13xJJ6zBEMqo6yfc8S/Po6cRUFivWpyNt83UEb4TZpuO6L3uIeiUN8HyvfdzEnliqQQhxlsaDSeCbnFejXqg0k+rPtJgXwB9mDAs1DoAEw7uWl9X2Nu53YeAl4wExeSAaciPHJfDFvZH9pg1rG309V4w9Yz7Yofkx2XGJEdkT/34jJtlkKoLkG36n9uQf0COtpfKPBLB+1ICxQX3aMyuSpgFfSU77fNShaYLw/lOq9QaA7O9oqfb5TAU0Dk4bj7GB41GOuocYgHKCN2bYXQDnWXNwLiFBsEAIZ7dsFOJZLQ9erAJSpPAVH7Xiw+6I9iwtjflTwS/8wTlEWtlxk9y3cPpn6SvaZ7FEfEwPIj7WOMGGR7QpEPp9WJLKb/a0wpYZz64TsPdkXsqn+MQT4E6rnBzkZlx/fIBFUejiT8+zHZEY5qMdqLXQjn/zEynTeOupMrNaH3Li9HOPvNVD9Z4z1amKNdRVYVQITbHi7wvdHj13flPKAFritD5+DQHeZtJHzp8ovYODtCg2I/jJphV28pGCB6mrCNHiNgTIp4NcGLRWoz3erNzlSQC/QXU1EgwVAFxi+j9MPmCeo3AJ96Kpx3K0mDgvmCGjWR+O4XYaNGjVqgPoHOYYfYN7zaoUAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAONSURBVHgB7ZwxbNNAFIZfKAJEgQnCiNq5XRhgpwNb9y5MZaas7VxYydzu3cucTgwFiQGlAwuNGOmIGiQQVfgfeW6jyPazfffS2H2f9HRJfPbl/pzv3rs7h8hxHMdxnIbSKpN5OBzOI1mCzZMN92C/xSwYwI5ardag6AmFBYI4a0hWyU4c5gnsDPaZbNmDSHtFMhYSCOJ0kCzI2x7shGx4KekO2dCGLcvrY4i0QaFwy4Htw3ZhS2SIlLNPhuD6bdiOlLWm5b+mXIxvp+Qim1D8iGoO6sCtvyNvV6WOmeQKRBfNsScXbgTyQ3NXkQw6mWgC3Za0MeKMkdTpTl4mTaArj4lA3JnDVqgBXCcbtmh0f3ep5ljdYpbO5FTxPkjBBVJwgRSCOmkJPdoph+7L8WcpxwZw1D5StfKeUvn+7SQkAggdxd5kfL4oaWowiIqul/XMJSTYovLw1IYac2URKtA7ughHxkkEShvm+1XCFp7DgUhZ5eURFD8GCYQvfYDkYPLzxEnE8Q5FJKs8S7yTVnCBFFwgBSuBCk+KzzpWwWqhCfE6YCIQRhvTeeVp4n2Qgguk4AIpuEAKWid9E/YYtjilOWZeeibrxUOB48W7sLm8TFoLOhNrKnOkCKS1oL+wL7Bu7MAzjaTloKxVMgZlvULCd8WfvHzeBym4QAoukIILpOACKbhACi6QQvB0B29po9HyzyH8l92MPLzswj7HNvL0qSJ1XBdjePaQv/T/7WyTDqWIU3ldauw6tVwXS9arNmnUilbw+ny5Z0KcTkjrkXK4hS6UPLVymUyUGUWu+KRINNriNi5O8F6hy5ipjNZJS+tgkbhJv5DXTBRxLouoo5iI9AH2EPYA9r3O4jBRBZI+5znsK4222T6SqLm2RFvVmOiQ38KOKaXjDiyDR7JSw3zo/u4oAqWMVl35PHV0q1gGC8Pnt0uex37QOlUkhqPIw27qaJUyuh1W3TwlnHKRVI4fFEAMP6gvM4G9tMqPicSedJAfRBkbsiyJ5QftKsdZmNw8s4oHqwoukIIm0C9JS40cs46EQkmdTvPyagKxs8ed47L104bTQsRhTz/ZDJo7FZIrkIwcSYC4IXM/MwdXuqDxM7oszLacuqc9AV30oV7efpts7W3KQ73fIM5r7YSyj4UHT3wp8D4Adj0+kQ18f3GLeR/1sfDzq9v/scAt2A3YT7Kh9B8LOI7jOI7TWP4ByeRs8+jgJBkAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAADAFBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8HPQsIAAAA/3RSTlMAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1O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\"","export default __webpack_public_path__ + \"static/media/embryo.cbcfbb9d.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAC5VBMVEUAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VfA0nAAAA9nRSTlMAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNTY3ODk6PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiZGVmZ2hpamts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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAC8VBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+uQeGaAAAA+nRSTlMAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0fICEiIyUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9g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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAC/VBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+G1NxwAAAA/nRSTlMAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BR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\"","export default __webpack_public_path__ + \"static/media/bookmark-icon.e8f1c1dc.svg\";","export default __webpack_public_path__ + \"static/media/learning.8d80887d.svg\";","export default __webpack_public_path__ + \"static/media/mastered.e6a3cb6c.svg\";","export default __webpack_public_path__ + \"static/media/reviewing.66a9b106.svg\";","export default __webpack_public_path__ + \"static/media/learning.b96b2d10.svg\";","export default __webpack_public_path__ + \"static/media/mastered.0c493ae2.svg\";","export default __webpack_public_path__ + \"static/media/reviewing.8311503d.svg\";","export default __webpack_public_path__ + \"static/media/untagged-selected.9bfe4353.svg\";","export default __webpack_public_path__ + \"static/media/untagged.7882aa1b.svg\";","export default __webpack_public_path__ + \"static/media/Sun-gold.78c6f11e.svg\";","export default __webpack_public_path__ + \"static/media/Sun.9a3fec4d.svg\";","export default __webpack_public_path__ + \"static/media/angleranking-icon-grayscale.6bfbfe69.svg\";","export default __webpack_public_path__ + \"static/media/arm.896f701e.svg\";","export default __webpack_public_path__ + \"static/media/bio.603a222f.svg\";","export default __webpack_public_path__ + \"static/media/cardio.cde19126.svg\";","export default __webpack_public_path__ + \"static/media/checkmark-outline.d8580aea.svg\";","export default __webpack_public_path__ + \"static/media/checkmark.986500bf.svg\";","export default __webpack_public_path__ + \"static/media/cubecounting-icon-grayscale.b98b297a.svg\";","export default __webpack_public_path__ + \"static/media/Cards.cf4c1f38.svg\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/embryo.7bab89c9.svg\";","export default __webpack_public_path__ + \"static/media/gc-logo.10d67f96.svg\";","export default __webpack_public_path__ + \"static/media/grid-icon.e275445a.svg\";","export default __webpack_public_path__ + \"static/media/histo.59f054d3.svg\";","export default __webpack_public_path__ + \"static/media/holepunching-icon-grayscale.a87d3fce.svg\";","export default __webpack_public_path__ + \"static/media/home.fd7aad62.svg\";","export default __webpack_public_path__ + \"static/media/biology-and-biopathology.ceffa59d.svg\";","export default __webpack_public_path__ + \"static/media/biomaterials.d22a839a.svg\";","export default __webpack_public_path__ + \"static/media/case-sets.db2ff993.svg\";","export default __webpack_public_path__ + \"static/media/development-structure-function.47409b24.svg\";","export default __webpack_public_path__ + \"static/media/ethics-and-behavioral-sciences.67da492a.svg\";","export default __webpack_public_path__ + \"static/media/genetic-and-developmental-diseases.79c189c3.svg\";","export default __webpack_public_path__ + \"static/media/immunology-and-oral-health.f6382c88.svg\";","export default __webpack_public_path__ + \"static/media/microbiology-and-micropathology.138847ab.svg\";","export default __webpack_public_path__ + \"static/media/pharmacology.ee7d57cd.svg\";","export default __webpack_public_path__ + \"static/media/research.16d3c0b6.svg\";","export default __webpack_public_path__ + \"static/media/systemic-pathology.9dc399f6.svg\";","export default __webpack_public_path__ + \"static/media/keyholes.effa2432.png\";","export default __webpack_public_path__ + \"static/media/muscle.53663d5e.png\";","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/neck.53cb4753.svg\";","export default __webpack_public_path__ + \"static/media/neuro.ee457c91.svg\";","export default __webpack_public_path__ + \"static/media/oc-logo.e62adc55.svg\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/pat-icon.6383fa7e.svg\";","export default __webpack_public_path__ + \"static/media/patternfolding-icon-grayscale.e507c0e2.svg\";","export default __webpack_public_path__ + \"static/media/pelvis.b1663dc7.svg\";","export default __webpack_public_path__ + \"static/media/phys-logo.0b656d0c.svg\";","export default __webpack_public_path__ + \"static/media/qr.61a18aa7.svg\";","export default __webpack_public_path__ + \"static/media/rc.87698878.svg\";","export default __webpack_public_path__ + \"static/media/reviews.846d5d80.svg\";","export default __webpack_public_path__ + \"static/media/select-arrows.10d4da91.svg\";","export default __webpack_public_path__ + \"static/media/tfevisualizer-icon-grayscale.13449517.svg\";","export default __webpack_public_path__ + \"static/media/tooth.af91761a.svg\";","export default __webpack_public_path__ + \"static/media/uterus.c2965ecb.png\";","export default __webpack_public_path__ + \"static/media/albert_chen.2f18a378.png\";","export default __webpack_public_path__ + \"static/media/aleksandra_dagunts.2867786a.png\";","export default __webpack_public_path__ + \"static/media/alex_bergsman.df927ed0.gif\";","export default \"data:image/jpeg;base64,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\"","export default __webpack_public_path__ + \"static/media/angela.897c2c27.png\";","export default \"data:image/jpeg;base64,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\"","export default __webpack_public_path__ + \"static/media/ariel_mayer.412d3b80.jpg\";","export default __webpack_public_path__ + \"static/media/ariella.d05f7570.jpeg\";","export default __webpack_public_path__ + \"static/media/brandonmuncan.f1552a43.gif\";","export default __webpack_public_path__ + \"static/media/brianna.70eeea48.gif\";","export default __webpack_public_path__ + \"static/media/brooke_nelson.e94fd7ec.gif\";","export default __webpack_public_path__ + \"static/media/caitlin_tran.10234a98.jpeg\";","export default __webpack_public_path__ + \"static/media/carly.22f85e12.png\";","export default __webpack_public_path__ + \"static/media/chris_durland.c0ff7bf8.png\";","export default __webpack_public_path__ + \"static/media/christian_drkulec.1fd27407.gif\";","export default __webpack_public_path__ + \"static/media/colin_berger.380fdf89.png\";","export default __webpack_public_path__ + \"static/media/daniel.9ee24f30.jpeg\";","export default __webpack_public_path__ + \"static/media/david_cornwell.471e8e77.gif\";","export default __webpack_public_path__ + \"static/media/david_gallacher.662fa1ed.gif\";","export default __webpack_public_path__ + \"static/media/emma.c98f60d3.gif\";","export default __webpack_public_path__ + \"static/media/flora.dec47be2.png\";","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAIRlWElmTU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAECgAwAEAAAAAQAAAEAAAAAAtWsvswAAAAlwSFlzAAALEwAACxMBAJqcGAAAAVlpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDYuMC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KGV7hBwAAFEtJREFUeAHlmw2MXcV1gN97u2tsA/4pJkQC2UK2wYaorPkz+AdDcUSrVo2cYuKqwYBTVYppmhAobhtS/itoCKFKIZKrmGAjkWIilCpJS2OEMTZgA/biBHvxD6qRI9XBwcYGDN6f1+8b37OZfft2960NpVJHuu/OnTnnzDlnzjlzZu595dJHVKrVahlSTeVyuTMn+eKLL06m71zaz+GaQt9pXJ/iGsc1gstyiGsv16+5dnNtA3YTeJumT5++jeeeQlszD130V3saj6Ei08dUFPyVV15pPv/88zuC0PPPPz+nUqnMg8m5tE094YQTKk1NTaWurq50dXZ2pnt3d3dCAbZkf3Nzc7r7bN97773XDf2t0FkF4JMXXnjhszHGyy+/3HLeeed1HqsijkkBMhGCUx+HgItg+LoRI0ZMGTZsWOnDDz9MF0x30l6CWfn3h2q5pPJSA7NpP8WfVC9gm4877riS1+HDh6XVTucPUNb3GVeLKeU8+DzUclQKePzxx5vmz5/fDZPV5557biwM3gxji0ePHj3qgw8+kNEuGHF6m7gcw3qYbIU6k1wJhShxmvEC7ohZHMETVjzpVRinafjw4aV33nnnAM/fQyn3zp49ex/45ZUrV1auuuoq4YZUhqyAXOP49/Uo4U4EH/vuu+9q1rqBccApTcwgaJrFlpaWJKgzyaVpHwIsuQ31FuojsJqKlkO91NHRkawHV4iYojKTMqDZcuKJJ5b279+/j/otuMZDSp3z5nMjpWEFqOXVq1c3XXbZZZ34+CTM8BEEn5EJbnCyyHDL8ccf7zSXDh48aIB7FaHWc2+Dzk7ue8A/iMIOU9fvh1E/keopwE1E6FbuF/LciqAjinigAvV5FWHpBK+F+KJFPE/8uIaYsOOZZ55pvvTSSxsOkg0p4LbbbqvceuutVQavvvTSS1fD7MMM3ESQ6pAhGKvInLPtzCA0j9WnYPIxzPbp1tbWXyWWh/iDok9FyMsZYwH0fn/UqFHlQuEqoplLS+pC2S20K/QiVo3ltJVvv/32MnyHO/U78qAKgFjFgaSwfv36+xHwBpmg3ZlOSxL3MsxVDhw48AGwS7keuuCCC14Xx6IC58yZoz+X3nrrrSrxowqDJZVqm8xSL+HH5ZNPPjnx9Oyzz3bnAjD2GYypy/0FYw1nrIgrWkRSiMqn/Tso4evSzXn3uV4ZUAE5gQ0bNjyByf8JfudgzrgCdTDDLRIm+D3M7e8vuuii3T4bKBWmVhD7Gi2hOExa60sxpa2t7VSC7B2Mu0g61I0jxhCtoXvMmDHN+/bt+xF8XGl/LoPPtaVfBTh4zADB7mdjx479A4TXZ4dxpWDETDSj8R08a3rPSdxAhC9qjoOan/CNFgUh32jKlt1ZuOIyeJgMD1qjlqA8h1HCMHj9GTz9ofRzWXzOS10FMFhqR4hqNvNJ+BAMc9Pkl+/atWuRy8/HJXjOrPVcEVrZhAkTlsHLQtwyKdx+wEIJT6CE+bk8tfQicvdqj2ivzxdmHzOvmVVIdAx0N0H82yIaeWNmehH6GB6KCeh2TFckhriGSdpMfnDfoUMuOCnn0AJUwpXKAM7XhadP+F6ljwXEWgriQjT7CIKKFBHXZER/vxofe1Six+LjvTg5igdN2+CqInDTL6KEFcQE84g0UZDsRIZmZLiGyVoesuVD9VKAJqU542uTyNfNwdWaxKiWqwxQUXgSj0eBHQZsWsdzgp9EPXhRCSNHjlwBjz08w0+FPKKLRGyKeULIGHz2UkAIyuyvY22dwTqfZh/gpEn87CaE/3YMGETq3XUVXCktfURx0+YhBcWh4gdPuMON5Cj3heXKO7I0I8vzWMHMkDF47okBmgdMdqDF683wyK7S8gJgB5G2xYCnzxe+1+/Mq+EtW7ZoMgrcI7TmetZZZ5UHy9ePFl9rlDcniAn8XXheCM9JBhM2ZUI5i+HrodwVkgIKrXRs3rx5LIHkThMdAM3wulznUcaON998M627+nxor/ZeKCcFmhdeeGEqNM4QBjrbLr744q3Wcxif85L3wewFmO5n7CfD/CWCvWQ9h/E5L8GbK9P48eNn4LKT3JgpS5G83cXm7TECdtpA0X5kuQuNoLl70NSSbPa73aCwebmE2X9uoMER0k1QFzTOp/4ATM90tbAU0Xkd1RsUJGBTZ/ETtLHAWdB5AJguaGy3G0VM5uZkfZXguzZg7ast0Qcfs5m8NSjACdMVtQIt+R54+NuQ2V0b45WrNLif38mgoxjQRKezMP1lCP+lQKgd0OcYlH3CH5O7/9gdHWaXkqUCvgk/LLsTZIzPkSb/W+Dk+Ai/AF7+ibYvMeZPCtx0Q6A/ovJ9+FUJP8zxczjrwSv0TJSuIx7oCs3wVmb8d6hPhP5vkuz8uMR1YrJLyPbuKWbfNpXzAddkBtzNvWdP4CBRon3jxo0T2MLuYFfWzAoS8SPAvHfQ1UJfJxF50rnnnrtLXDsYqrtYedbSPX3mzJn2NRFEU5COVHjdunUToLGea5YRPcaWRl6iHQWcBu3tXMNpyyd1CQr4R5qaFSr5LPdrWT6kkzYXrJ/67lKFV6P01/X9iPQwvgQTU3gDZNof5EzZZp8wKGqJfeIGPjNzJ033Kzy7wBGM1+X67mXdNvuEKWATvnRqi7zKs7xTX6osFOVsMk9ArutsoK8zaZiAMwd/WY0C3HA4K7arsSloahsIdWef/lToL0OjHdM/w8MOGtPMFt35LWLKNvxwCgw4RnIhXGQ97jePAPWm9KIvkKMNwcbjok/iYtNVTvTX3oPntWvXnonFGYBDpm6Co4qYAw9rgtF5+i3FBKIbZqw/pfAuSzBTd/ZlSkB2aKO5ncTM+JjarNQp+qDNJxU4CQTfPJlKJ8p7ywbGS+35T7QVMB6GiONs9gWmXZ7lfdasWW7Ln1ImZaPuJBhYP0/9yEzRMVfToChslZmw/pg/sT+33l8hyot8SDzx+4PLaB8iT0/+JiwMvQcPul5aNqj3IRFtCD4S5pvF6QNU0xC8A//DjLfkBvAyV/AK0dW1emqhgDKA5s6HmKmnBYi11XptUSAZnzFjhruQzWqW57rWIq59wlBePf300w2wTc4SvnoAWge5ZtrpMbv3vEQbMDPg8YA4hXX21VaBGLyzHK9SJmWjq1zIOpUgOdk8eZrn9nToT91udihtCPWrgfbRAuUFxr6rlikyVI+p1C4MsP8cuJwOpSrKeIjZvdsHd5avvfbaMAX0sp7tNu8G/0HhAtd6vQL/nipViiO5tkI2J6hTmSnTDG6tMgUDXtXi9HaDBOMYqx7xaAO/SyYJKP9BkvHguHHjYgVwKVSpXtZL9pGRPShsMXtmaQmfeLOS4duwyFXCnn322YdNm72s22afMOQRTwS+7QOVkIFxNhSyKWY6sAWv1fX+TKygJ/AUnW0DEa3t8x2BbZjlX7Ia7IPmLSZR0rWoYJRT2rt3790IeottgZPX6VuIkN/l2gmNf6XvZWjolufB1xd49pTnKzmO9UYKdF5VNugm8IK3M/WJ07LonbI1AHcK5QFmgh7kB6KgpKWrxOx+E99aTkKlbZ9VoG7h7unMNu4C9wqWgS8s9a+w1C2FwWuAu1qGub/BNQ8Fb+aeJBBH+MFKyAD8DjNRin5aLWQ+TQV8igTFDgmb9ztte2xglhoaRNhgyBQVRrfT9A+25yXSV4WqLTk+/v4L+m+qhREfuMRsbV9/z5kMewh+yqMCupUZJZ+iAtwDJNOQMRoPEYwOStCj66EWkxNmqSfDC/xLj5wJDMp84IMnjYQOrnfPFAbFTwjZT8igTMj5Pu50PPyll7PQO6mMv5mZJLMAyERlP8+TMNcjm4UGTS0b8/9UVZehVJHzJBjbgYxjkFFL0Ay7Ffz/ddEFTBA0C4taaUFLKVvxjQ3PDceB0KRrbyw/0WZS4roczwPdjxU/px0yKBMz34KMKV5pFrj7+7rAf7E+upWVubTpAWiqEZv7gJugfKCoR6CL5/w+UF/ADQQzUF/g195DBuQ8g752rmT6yGzA36UF/Jr9tQpwptNujWh5CvVtvqvj3lBhoLLaNoiZYoK0EMvybtmOtpe7Oghng37pPUrW3skObjw8fR6Ys4v+Lczgj2KnaFstftCpvWcynEImaBrsRFehX2Il2GMM2A1x8UIBEp9oQ2wmrDdSNHE0fS+w/8nlJvwnCP5T7ifYZl8/jNNcTkIB83fMzk7ODb7DPv7PvUiq7ofZN+j7hvjCUhqanJABBU8q9iFJAYXMu33J+TozFamwTLgUtjpCowUaaRdJFriU+ky0ewaz/TWSoke5r+B+g23Qm4EQ/6IQ4gR90tq0CmE595Euux/wnWOHR9te1sFpou8uxriP/mqBEyQGvSOjH2n1yKnMlNebYaQNgZPgNJRxBet+nDDgTtB+i4IA3wXzn6M+C4FT9ucGhmPwtPnnmLypyOdno4AtwoLz41CC+Ah2OXv2G8nc/M7AiYk9RRoHmG76urGIG4H9d5T6dIydAPr5iR0hsNML2bScqjJT2gxyG9mg+GQ8qBRbxVaOoE7VpI3IQg5WoPNXwHxDOGZnmAIrmJd12woamrGwvQoMfjUaqPcZM2/LYQOn3l3elcFX6vSfUxz5SbtZmSmbKgYmGrYWW0U141ugEfjI5RKtXc5siwIjyFLuImidSH0M7WvsI/3sCJi4Z21rhBVHXC+i+3DgWlW+sx84tXf7YoLEEVceauHiOXgHZ64yAWsmWS1k3arsaTAIrSoaE8HCPP5UQrGZCKL17pyxubnuNNW0H3p9wKJNGGEZw8CYCvHBkyBPenSpvsgFnH0FbyMLnKKn/i3jfUFG25c98vhzsZICiLBPxk6JjgoHjvZdwSyd6X6cgevOSggF7F6uZgQz3UyBxnteoJEeYXwclWZeYoqTCud2ntW/na1GRU+fW7WAebvAqatsseRZ3pWBxyuUSdmohxU9KVwSjNOfZznXa0czRmY59X1gmWVjsUAcR/VEbJ+zUjU58bSGAd9gALfAJTYx6Vgpg+tpA+5KZuMNccT1As+NzmosSZSBNjydwkBjtTjiAt8rn4gxg2eW1OuVhXbdUvP3THArQXSNsK5HaYtJdL6Ztffeo30xwoBTsaRnoHcOvrWnYM4xUjFBInp/mv42rOAyXmxspZ4mQGE4A5iIe2zHijRzme21CvDcQZ+HLFrBZBS4U3xxj4zw299oZ7XxxcgOruNoU1GdyOi7ziVkukdejNCYliqILqPjgINICnitwCm5w+fQqPW8yIDCKhD1v+HyWOv3FDi/bIPmJmGEzWY+4SsQdL9gssIhpjwomNbg1W2bfeAvEDbw6etTgldkuYPgp/ApKCOjwh9Q1gKpKwUc36JokjDZ5+UoJqPPDPpyVIaKNPizEPfTGU96U+7N3WO3UbTdiHX8PGALJtINJiOfmAX8A1jJeYVL+EWKaesrMP41+FwbsDl+1IM2stR9OcqnM/fAw29fjooIQcY88t0vWnbP/Dsw7EuS5DMw4OvxKQaVWFtjwPweg9uGuV/C7TOQ0aR/aZyxPYfxOS95H3nINGbQAOaXpK9zELrJeg7jc16CNxXE+Ma0eD3uuWIFF3sb+SZOmzZtf8jcg68V+IDfLG5vb/cA4TBXum/dutX7I/bLgPf+ioNLvLbfNvtq22ufSZj6xbevFj5/Dt7kteC5RwZlQilfFj5ktd4jjC6gBjGPhyDwZ6Sl8YmM79R9Vb4Q5fyC/vvM6rCGdMIokbxgSSmmyGxsRFyPi/bUl8PX1rUy24aKL0+44GF4vAm/9+sQY4eT6icyyrCOyP89ZVRWx7D0KMAHP2HxjqlcQ6rYjtXYrys0sSnpZu3+Flr8bwgN+pFUCCK9oylDwY8JgbcvEiy/VaT2xhQDqWlvF254rXyEjNYtfUw1AiKavJpZX+5uDLi0VqOI9JkcSVP6UkyTG8pJTxrxI/xxNk13Db4Kj3+vMFVWcHllqPRxF0nQQmLIipAtZ6GPAuyMQIMr3M9LzBuyT2TVaAVL8AuQv9Ydcnjr/1sleHQ8hL+RFSP/UFLh42vR9PF0Dp/zWFcBaC+1o0mD30q/uAwlFGZV8t0a1uFe/zraPpFPZXVNhD+mT2VTJpZrxLqCF4eJJTKm+Qj/U5TgdvawpqWCdA1c5GoYaEdJsw0sKkczE6aW5rE+S1PajuFYjsnVbnCWF3kqxo2Z9zVaSs2VhVI3Za5rAcGsBB3Q58wS/GRFJShkz+fyxIWHCTQf++fyxCbT29tZ4xfJFz6f0mb5hKf0uTwTlj6Stj+XwefaMqACBM4JoIT0hwl3VgibgiMgLlvxhwk/lFjK6vEgQed16qlEsPLBJdHXVczKUf9hgmVuOLPuxDir5gZOSvq3CsvdR/eHCQinogDxlxlXBwZbxtrq56fprE4lcfX8ZQYmxHuK6zHanyZY7k6EhvjjqRRZ4FzQFnBdgbnremmfwnNyB+inv8zAi+MvMtrTVtbs4TtZ70DDDmoBgSxRtrlD/tMUyvBvNG1c67Ea/zy1A5p1/zRFvv9pBJ5IvweYDf9pyiQHvGv9dM5oz7tET5rq+nzIE/eGFRAI+VpKAFyMUHcRIIf0tzn8VuY8PYqMzIxtJH7tGYRBuKG/zbGze5uJ+abZq/zlvPncSBmyAiRqmoofe4iR/jjJocPN1L/MXnu0OzcENC5ofvqnY4S/Uk2HMFjrR/fHSV20kQ+xHby2HJUCgkiucQKkx2FG5utISqY6k2ZlXhSXqTSz1B0TfQ39r7OeWkHnByj8k/3rrBJFMTZwANHrLzO4xiX0z+OaS/9ZxQdJrhzpvTy+nu4+W7QGfLjPn6eLnN6DllXgPBlbanFUPj5v9G/I18WpV47JAnKCKoJnNyAujz2FVWMyAk5DWD/Gcn9/GnX/IarFjCwA3wf/N/T7ZYorxjY2ZAbOjfj39gIm3YBzg9ZwkMtx69X/B6BVTBV/NCLtAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAIRlWElmTU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAECgAwAEAAAAAQAAAEAAAAAAtWsvswAAAAlwSFlzAAALEwAACxMBAJqcGAAAAVlpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDYuMC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KGV7hBwAAEUFJREFUeAHVm3mMVdUdx999yyCLIBGpRrsYB0VpgBYUVCrQUK2Nsdoo1BpRUYx/aExroq0WQbHa2mLVahvFnWgF2hgS07o1aloVERVosShqa6whKrI7wCzv9fM53jO5TB/De+M4Q3/Jfefes/5+399ylntfkusmqlQqybPPPluYNGlSW5IkldjtCy+8cDDPI7lGcQ0n/4vUHcL9IO77pvWaSDdzred6l2sNdVY2Nzf//YQTTljHc6A5c+bkJ06cmO84RizvSlrsSqNsGwV/5ZVXigjUQn6rZUuXLh2Tz+dPpewkHkf269evb6lUypXL5XC1tbXlvCi3eo664SoUCjkvqaWlJUefnyxbtmwl7Z7gfsm4ceNWUlS2fPny5aUxY8a0kt8Otvn1UlJvg2z9Z555pjh58uQg9OrVqwd88skn5yDUBcVicUz//v1zaDC3c+dOhW4jvwKzCk0Shu04tlUUOgqUAEyhT58+uYaGhty2bdsEbSnj3z106NCHDj300B3ykuUhy1ut9x2ZqKkdjOatCLNlTLwvAl+GkD8cNGjQUDW3fft2hRAY63mptSBYCkBeFCCyKUBwLqlMXjsAFMW2ti/27ds30ZK2bNnyPs/zsJbbx44d27Jo0aLCmWeeKbLBOiirmeoGQNNzUEd46aWXppP8HMEPQvu51tZW87NCy1Bpn332CVrk3jrBKtBmKwJrwmaXALGgpkkDIAK5Y8cO761jpXYwAKGEW+U2b978LkVXHHPMMYvspCvWUBcAUfgVK1YcDHP3I/gUtK2/KrjxxP7UfAEGE4VBW4LwD67lMKs/v4Xm1nG/hftm8gWlD+Y+iLwDEXgY6WiuMdyPGDhwYJKxqjaqG2/KlLUBWEkX2bp16xL6vBDFrI882m8tVBMADGY9xk3KBKXv8bxgwIAB/fBLBTdqqR0FL8JwTmtAw3+l3kLynhw/fvxa0rrp5ZdfPoJ+TqbhNIQdryUhrP2EsUgFosyYRfI3Ufes44477vHUJbLuZJuqtEcAGEB/Db6F8NcR3GapdQZT+BKXWsntu+++BQCRofup/xvMcoX5KSWYZwjvTGGVxYsX5/TZa6+9NhTPnj07R15ywAEHtPMTg2vsgLGPpu/L6PtsAywCO91aX/BbsDY9w/hzJbPFTdRN6D9h6gy8x346pu0DdizwOSs8/v7AfvvtN33jxo27DKwZOnXhEgsx6VlR27ZlXZBHYDXRKRPVxo7jd+yDKfYoym7EAk91hknjTlREAo95YsMdKOAS+wCAfGcg7BYAEYRCREb4xXR8xqZNm1rIC2sHylvReglNvMc4M0H9CQfUB995553y1KlTg2WY1x2kWWsh0TLg6TT6vRMghqauKAhh9oHXEoq6D2XMUA7Hj7J4n6XdAZCkAJQZ6EE6PAfhDVgNXA6i3xUIcH/AFabjd9uNwJ9F21mmOrvPAgHYgxj/YXj5DlrXMnUHkqSZAN0QLcE2u1NIVQDidILwP0P4q+ioGUAa6FgfT/DBpKmp6RrMbK7M1ht5OxOw1rLsmPD5C6zxCqxRV1MmrxYtAcWFmJCtnx3jfwCIFQk6UxF0YRpsDGDBHVyM4O8XIfz8NNp2aQGSZaKr9yhDjatyLfVH8DuPGSiCYFEFfvO4yMnODlGxFkTaBYBoKs8///yXiapvMDf3IbAZxHSJCgPkGUB/vzsFyukoABM77OlUiyRQFowNgoAlzMM1dQeV1oYcBQLlRgL14a4TBE3AIp8Bwfjw+uuvB2Fo9ADCKrxTXZ5GrfiZwv80I7xlvSq8fKsbhG9Tu/B2M8L/Ev9XePlT+BZAGUysuNv6TremkdofENIVViumPxNh78Lv4zxvByXM6BHM/izqFVIEe134KIQpfCkLrCVlpso/wfPJmdmhhdlCGaYC0uKsKwQLsDHUSsOB3N/gSo7nYELO88SBf2MR5zoQiwsF36uEly/4becJCz4LYT8idWrU3AvuTKGbdF3dJQUsrKJy7uctxecvx3yGaDZUCFMKeaI7Y8SIEc4Exc4WFfbRmwQI5TQ2ebhykfsEeBaYPAC0INtXcIVL5THKHOf7yqpVqwazjHybYKG/2K4NVyjiUwtYUEyPs4ON93aKJo5FL8EVTsUa3FHmsQiBeB85G7GCHciYuFzV1F1Dnw9CCq/vaw1uMJp5nuUzpy91rezsvDsveaiVPvroo+AOyHCV7gwV4SXvrhUZDyYe/MBMZc/rDz5AM9x/QwLiMle/mn/88ce/q/Y1LwtrJeobWLrtqnVc67nq0woI2qsR/CFlgZRTENzIzTTjueeeKwffx1Qm4C8j2FzERUQJ0/co6w4r1qt9miQckfUH/QEMWBdwjteRWNE1EYO2dczv7DlaAcLehmLPRhkhpmHpFdx8PDKPxLVXBQAoPN2AAQA6fx4TKcD8k8cee+w/XRxRXpP5a/JQBYvZH797Bgb/hd/1SRkNZtkZ01XKbNNAX/0BdIogxDGq1N0lSytwJ8gKcBkLpKWsCMcjvHKUsQiXyN/lvh2Ab6XTRJjjjfxo//f2mN2j+1wrweiR1H0YlG9cu3Ztn8bGxlbPAWolzgusWmFxVgSAP8NwP57rsgKP0Gnj/mUhZwUCoDUaCHXvb3M/t8ihZiMVjkr9Xw0a+XeQPk2F4Cem9RLttxFwbmBh1TRs2LBb4zK73n7grZWToTCJ19vW3altUObjyPRrbsOW2XMEaBS8HZjHH76myZNhkCh77ATzK9Dcf/Z0mGAv1YidYlhhGkdYQN3iGj0GJgRqX31Wa5vJi/WcTcKCLVNW0y1yBABwgzU0WK2bQxUAacMl+pOOtOPR6WInLBo8VqLhS9ZMTcjbrhDdJOHoCp+bJwjOOHHaraHDEDPqcZtqfTobpPnLWdV6KyjlVM5RbnSGg4RCh4tnK2XP83zuEqV9Ju7TBeHFF18MIGSY6lK/XWy0Un4gBdSqvB+uBRzCVBE3EyFAUPi2pXEq8f4zkKMGEIgJvQnCWpb4yqnSE5VO+iX3xkMtIJXRfLoW+ECBPbk17QbqNRCiEhF2XRr9ldnFkDIP0QKGpA/hBSXP2ynYotDx2Nr7bqBeASEqEY1vRtGuAwIfWgC0nwD0S80BuS3LNVMxTDuc13eXBdiv1OMgRCWyIHPu81Q7MJIC0C+YQ8jpuZ8eByGKhhuEQB+fSRMDwnanQZDhNijcF5VhvvDNSqZyd972GAi+dZKQUZlKqeYDEMjbpAt8zGLIiOiKybp9ScP2KTY283OgHgEhngG6E0axLvjUshsiQdgkAB9QoHwWlFktUVYYakZs7P3nRLsFAYV0i/WlewqFPdCVIP26NwhfopC3XgDeFw0oAOBqCQs4zIyuboRsWwdVBaGOFWOnQ9FPABIXaIyK1t11e+R8T9V7/h9cwJ4oNBnlTw9SGNQVo4slls05j7jdQHWXEtD6KDWfyue+3fs1HhWt0PfTgiRdLY1T+EnpbqqHgGgHId07BBDcSm/YsKHLLLD/iGcZYz0NgsJRnXIi96o8N6+x39b8tYa822IsYjSHGgcBStkdoa26QGBrt58GnRrTMAy7yDZ2qPPYrl7GVjrsXUNBnT+ML+8VTn+GkX413fK7Ay6wY91O+ar8hAkT3uBmTWar2MrgbhW/6Xhd2RHS3qZFYwtgOmBSxxUY9DCTU+lbYP4nKGInu7e6FYH/xzYn+mYLnjQBA738rWKb/H4I/wzwNJlHeiRGQdgpAcr3uX8INwhqtEWtxFulCt8IbcLkNGsHDeZda/u0XoV+dM25KghQ6zoNso/owvQxTZOHBMGtsBbwpBmfzn+VyqNsFHxhYAXfplp2Mm5wGI3fhoFdXihaWI2oG8DitHXDKaecMhpA8xw81A2gfXN8laCUcjxcISiG8+04RrXxs3nxLBM38rzjG/QjH8rhq32rLvEnaAYBEyrqBoenu0FfingyfDMDX+6xePw0zkb/DxR5Zka5B1lmYE3hczsUUgDcV5BrrHK7FPalKEnlfo/DIN3Ag0jvLzYYKny9wdDOu/OSmVqJcfPynAa/8zyaMxTRPp4E3WNfrjU0+TBNsCW+B5S2UtGDQ6eIFpBzpzjHZ0w6rJa8r4UEtTuvWsaMdWLwY/zrmVKV0ZehfoRZQsYPCbALrEuMaNMnPMcv8QboQ/J+RwPLjBi+FS7T6CLM6FgR7aWjLPmpmZTFs0d4Pglzn4oMwaLpoJUDWoPqrZRvs15QkD1rqj7QaH8efUHqx0cGDU+JC8SFNUcfffRR1ol1bbe3EbyFYO33y8jwJsv6QwjuYYfnNMqstI78RpTZFOXQPEQlWAGB4WPur0nnca2gwOLBDySGEyTnW1e/Md0LKYmbN4R8EJ4V3ik4uDnWIMs/VngtWZnN2GV+jqgQPJZiLuOYLgTBqdKXpQbGy3jheBuvqRr8XsAO9hbSpHVTFDULXq8j8Cm88Sx8HYIrPMW7jhOjlUS+gwXEBxAMzyB4rq+RQEmkNKECHVSYJm/laHuawgtCbNfLaRKFh7eZLMAUXp4VvowsfhrjxD+jGp+7AODbGzvD398g+l8Iks4GdgYOSYVYkCMmPBJB0JS0mmod90SeU7MaVfPErwux2ruI8Jp24JcyP5Mzxk33TVca+EJMiPxVZV7B0kh6G6+mL818JapV5LEE3yQHd7CjWD922hMpQoWPuhwL4a9G+OsVXkVBBsPwtSifzF6P8LOilXTkrSoAdBDy7YzOH2WPfhrzpz6v2QeLwDp82XEPMWGm9Rzgscce85X0Lgh3HPCzPisc3/cU1LpuCA8Pwt+01Ozl26sZxTWguAcJ7OemgFTlqyoAMql5RWEA4XEGOSkDgmYWviGCAf/hNYOBXrSdQPhBBaBUHdA6XaGs4LZnnMlM1feiiK/AQ/iImzoM2675P6L5M6yb5oeo73OWdguAlRw0CqIlgOppmFQrq8Xge1RpwR1K1NMl5rNomo1m1qVtC0yZiZ+hRCDNr4dUgttx3+4Yn2ybfsU6l1h0juEpnepCwIOPyuDBgwtofgEKmW79rAw+d6ROAbBytgNAuI3l8aUgbn6cIsP/B9BEHjM02t6JZn7LXvutOJh9xOWpwvi2xhcW8cWLx++eQDuPxyOwjsChcV/iXkJfMxlL09fC1KrrkhaX8P6PiIh/A8Jf7dhZ3n2uRnsEwEZqQmaxBk9Xzmewu4muedYJzrWuE+wnMOEiCiDU1uMw8AhW8ZdoFeTVRYx1CGNNoZ+zaOihRvjLDEC4swtTNGVtBMASAXAnedOJSYsUnPqB3z0NWBMAdkKn7R8lp//l8R8k49w1ovEIhFW1jJJAwJAMN5G+Rvtl5K9AoLep/yHpVg4pwmKKFE/q4ybkC9RrJPVPU8eYou19NHUE5DEcroQzDO5b3dyodWLTs/R5nl+0pTOSCqjq83aSpZoBiI0MckZgn3EJD1HmEiAH6RYwar4mab/BZxG06DYbZgUx/plS89VdrG9dNyZ9WbvnPZYXOA8wPcOjTfislX6MOyH4urgRYARfz5hX8THXfPro0v8W6gbAgTxtwY9dE4QNFHxdyf3F4LCvTBMQ4z9FNUXH8GWEJmlz85QnCGqGcqllyJ/w4oK6Vg6mTCqY/os0L5gIvpHi22nzKyL9FtrnjR8xUFK3ZuoSALH3rDW8+uqrB2DKF8DMeTB5hJp05egF6RaRHDPIJyZm8sBtsFh/wr3ycxUROvzpMu3LDx/vw+zvHTly5Ebb8ty+IPK5XvpMADgYDIQ/T0e3ICthqTwRMz2dsikIMZwgFTSulvHV8O9R01TrmkNwEdqEV1Y+W0Z8cYZ5nX6e4noUbf8tCij4vf7n6ciMqUCQ+J1hVtvGicMp+zpCjST17/OHcA3lGsIV9qjkGyj9N4fB8T3y3+T+NUB6LTudkh+W3Z7kUL+mIGebzui/jOql/duHlSQAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/george_geng.3c777dcc.gif\";","export default __webpack_public_path__ + \"static/media/haley.6c5ec56b.png\";","export default \"data:image/gif;base64,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\"","export default __webpack_public_path__ + \"static/media/audra_boehm.5473e88c.gif\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/christopher_naglieri.8f7071d7.gif\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/feifei_huang.bbaf5293.gif\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/jason_berglund.e81b34a8.gif\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAxCAYAAACcXioiAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAABHDSURBVHgBrVppkBzleX76mGNnZneOvVda7WoREpIQSCECxClISFymFEw5lTgVp5AhNq5KxVCUsZU4VYikXP6RKkOlyjEYQ1CIHWKSIAUTl0WBIBZHEEYrJCRLWjG70q72nPs+utvP93X3zKy0gAR8qtnunuPr93je5z1aCj6jNTeX2ujxqDfX6+ZKVVWGFAXDfDvifDwu/hiGdUjX1Ti/c6i7O/oqPoOl4FOs+fnUVlVV7wKsL6Ap7IWuNG+/2zTNXZ9GmYtWIJVKUVD1PtO07keL0LVyAZVcBvVSGaZhwKzXUc9nUa/XoKgKatUyvIEA9GA7OnqWw9+xSN9xGmJnNNqxCxe5LkqBhYXUFxRFeYSnw+K6VCzivXfegJGaQ1fQj7ZQByzVC5Xbin9mrQoTllSoTgWrxQJKpRzy2QTg8cLbvQJrt9yKaFfPJ1bkghQQVjdN5V94KqCCYjGHn/3kKbzx2msY6uvFTb+7Ef09PfAHOqD522lxnagCzHKRuK/DoBd4iWo2jQo9kc4kkU0vYHphFgeOx7H51tux/S+/Tp38rlhPq6r5cDQaHf842fQLEH4jhX+ep8OmWUciMY10aha5TAqhtjYKV0EkEoFpmahbCorZPKqmRS8AXppH0xSpjEEv5Aivw2MnEB+PI1/IIhoOwuv14IXdz2HLTZsRi/aiu3u5UGQ777mV977l45T4SAUEZBzLRyqVIs6eHUOdsAApxqRlC/kcYu1BeHQP4VTC6LF3UCiL97NQaPX+nj709vaip7MTs7NTePfQISwkF9Db1YWh3i4sZDLoCNVROjOLYj4PTVFRLGSwfMVl8PuDNJhykDJ8pasruvvDZFQ/SnjiXVg+kqLFJyaOokbhBRTEq1wqwefzQff4bYVo6L7OGIa7wuiNReD3qPAZRfh9OryMjWI+jXohDSXSg3jewFwijYHOMKId7Qj4PKhXK3LfSq2CU2OjSNLT4t5ChlQqe9dFKSBgwx8Ky0vILCxMymBpfQ0P9EM3TbmDQg+EySphvxeJbBmTZeI/FKM1yzKgxU1KtLACjQp2YsPwIAYZOxpDvD3QhmXhDmGRZkDSINMzceaW0/KSVPuoyDNLyaovIfywg/mIsEIyNd3Y1HK/xJNL2gKw1q/DTNG+saaqiHR2Y0MwjJFMDpmFOeixIXrCiyqDNuTxoSsSRISeCfg0KG0x5CuMF8JwMBJGKBKTlhHsZVn2nebmJxlDHnR29kcYS88vFRPnKWBZ0vLDgu5ahecHUlDLuezrHkDnilX4xasvkSKrDEYduu5Dmz8IXfEiEuuCh0EOg3lA0dDdtxyJ+Rl0h2MItoVQp/WNDIOd1GqIvT0eWFJ4syGLuJ/whN8fQDAYHnZku6VV3kUQIu63c6+t9XoVs3Sf1fqhojQ2lW6lZZUyIVI3kUim5Faa7ieVRhAMd9mKaASQQbFUDYH2KONEQ51W15nYPBRYxJDc0KNB8/ps8yjnM/vk1JikYyFbIpG6f0kFBHSI+4fEeTI5TcNVHbwr5ykhVj0cglIjhoNBJDJpWDphQaWgWLBogPzsGeRmZpiRDaiMEdUnvBNgDkijUMuB9RI0KmFyf39ff9MylnWeAjUG9hQZ0BHiIbsasFcLhGRNQ+jkkculYCmOfi0b2hCy/5odIejZAtasWYOTU2dQoaDeWpmWAjJzk2QTQscTxPzEBEKk0Vq1gKmZWZQoTM40sKy/AkXTUK7V0bd8UO5uid0VJwZaYCtWLptEgRRLKEVYpQgv7FykAGub7dITyemmuHIjYVR7c6mLEwgWLV0b6ESA1k4lE5hPJqF1qTBZD00l55EplFCtjKNCdgkzlvw+P6owUCJdjk1OYCa1gEvJRkkG/JobRpr7nuNpwIk72EG9kiRB791HLzzKgE5LCAnswwncEmsWS+5kLQXHxk2EpUxNhzrYjyxzwvzcHBNTFhbxPJuitWbm0KeGsK5zBCNdQ4jWvRjyRBCCFx2Gl/j3IMvgF7+JxGKLvKy4UHKYzxVDJDnhBa4IHby94QFqdJf4voBO605WC3BaT+XBgZaq0wa+NpylAoJtQiMr4OGNY1398A0NYcWGK+BtC7J0SKJ65CCy+99GrD+KRL2E4/HTCJGt/GQrC9YSxrIh1XS9kDEpYETGU+7g5aO6Xahhq/hQatcqpGvyFhjJ/RyuVpwQX75iEIffGSXreNDDTBxhdh1ZfSWqcwXMHvkNCzwVldk5WGcXEGPCU4JeZKZTmE6mcdPV10lLK5bVAhfFCQHHhDIubGSl0/Po6Rmk0XVRK0VUBp0UXgSv5eBDao3zcdg4WovZae2ll7Kk0DHDWFhIpVFmMZdmiR1cRs5nblBnM6yN6O4YAbQsihIDfnJ6ju7z4LLL1zYtrLgmsRpgcsnbhbMoCkulonNn7WZVcKs4LQvsW7YjLalHc5MmETk3UBqXfKnoYGJaRbjkixWcOTuN+VQGM7PTrA6yUKM66r1BxMtJwiZH/tdZRieRzhfxO9deQziEXNA3xLXrLQcGixSyvVAoyjhgs2TcojNFXykErFZLDXe1QLDxo1ZXyC2d93zkdlOvYfPl61GuVsnXU0xWZZ7X0RFLopOZt06qVCV+82SnHCaTGfja27H5hi3O5q2h6pQTLQqdu6qVoivXsKjHImKPukz5jgVa+RJNK1hWww7yWhRrs/MV3HjtZpz6VRLXbNiAdxnUx0+eQnxyCnnW/8tZTussDyqkz5nEAgok8Sytf/sX70SAwd0wOVoplMJbqkyKDbgqLhIsQqjgGvtK3ZkeyFL53LVYocXeERvv3vMybt/2RYRjnRi6+kbU3nwNm1avQQdhceTkGCbnFpBhFSo8UqHgBZYeGn86smoEqy5b00y+rZTRuJdtKKZMuDnJNavBROisiPCsTMtMZIsEVxScc918Txzfeus97H/rGE7Q2mJ19g9g3a1/iPaODoz09+H6Kzdgw6WXsNnRUDVMab2Q34/1I4NY1ttDGNQb3nU543zAiM9UJ9YcQMlmqqmAkkikpeTx+OEmbS6xWi1z5P0xPPn0i8gTCoLDf/bTH2LZQK/8vMxG/zf79yFxegwm650KrS+6uEq1xqaGZTYzdfe6q/DB1Axu+4Ob4WZGO9NbDcpsiKJY56hk+2Ht2mvktXqulRvMs4hqmp9PTJzF08/8LxNTWd40T4h87x9/QLfaN/JzdHLlbbcTUltpKYWlc5DNTpTW98Gv6wh2dKJnaDUmTk/hyOGjTaJxrd00WQsLKS41wTqnB9N27NixXbgiz5ZPNO2usHAKK9VRam52Af/9/C8p/M/JMAYs02zkhInxcTb1Cq7Z3Gyaogxe0S+cPT2BajrFfYh+jlwu2Xo7IWXg7OQZ/NszPxX9B/r7+tAmegelhfYasFWaijgNj4fNUSzWJ94c1x58cMd2fqevXCnIslVVNds1zrFcrmDv3l/h8R8/i2PHT6POALItpTQzJq8OHhzFluu2oK+ns/Ge19+G/kvXI10xWI0aiK27Gm2RqJwn5XM57Ht5H06dimPfq/tR4xBgZGSIPYWngQEXBYrVEh+WoG52dpFuAbVR7Vvf+vYWarlRTB2qlVIDZwKPBw6M4vEnnsXbB44QKjlyv9YUflG+sIjzGuITU/j8536PdYomP88RXvteeQWnTk8jo3Xh3cPHcOjgIfT1xqB7vXjppb2yAxO/PfTeUbzx+tukVj8GRL/NPRY1UQ2IW+hgcxQKRcR992jf/OaOYRZznxMpuljMc85j4sSJOJ586j+w96XX2YAUIOBd5/zH7uA1KbD0kNUMPDbemGG9383mZP1lq3Dy1DgOHz7CtrSMkhFALbeAamEK6cRpVrwV1jN92LfvNVka2MUhGFdFHBp9H2++eYDNj48zoi74qKjiZGrXcOyRWc22sV/WHtPZFHHAikcCgXYcPXYCL774Co6fGJfZ05Tcq8qhlZ3EyMk8l+9bHsBxs+xj6RlRjT72wydY0EUxHo+T/y2svPxa9NbyOBNP0iMe9skdWLZ8mPAKYvngEOMnzv1qjBE4hjIZbwn8+Imf4IX/2Yubbr4O199wNYWOuQiSPbJYtZpxSBVdPpUaFxZ9+eUDeP/YB6hSeIPBVRcTNSGkA2oRcCp7ABFEBjO3oEcZzHypDoOQlrFnz4u46uot6BlYQUXOIOA10cdhlcLqPcJKtJODrTYmu01XXUNPimZek62l9KpUxCKrgR6dx38+93N8+8G/xzP/+hyvWSAGQvL+IoB7eqKj8q6c2+8Sx9+/7RaZ0MSPhdUlREwnnauq1F9MmYWldd0rA84uulR5NBngQohX9v0fJs+cxpq1q6BZZY4ST3EyN4+BwUF4fO1yktcebMPKVasQ5NBLsg3UcyjSLl0ENCuVKl7a+yq+8zffRTZrVwyUcw/g5AHS86PieOP1W1gdBqU1JO06HZHbqyqKJZvxCitXyFrFVkp1jpZl2AorOl544UXppU1Xrec+XmbfMOETIW65u2qy/PYyPwTojR5JDFaDulVntKI06FR4Xhg2Gu3E5euvQKvMUgHRW/J7+0KhILZv/3NHf0V+3OAaVYWbVMTAtlorSW5XVb3BRMIDpmVIen37/99B/NSYHC3G+lZyYBvm6DFAeTyYn5mWBgl3hDE8MiKJAfL3phTWFstNbKpbCuHer3/VEUZ52h1wNXxWr1sPiOOf/vEdGGAtozibwM2OIkhVzalbVBnQNTb0AjJOknQgJ6OG1S3w/H/tYZeXR1d3FHmDM1S+wuEA554JWc9EolH0MImpmkfeQmN8afIeWoN17BKDyY7Uum3bNseW5sMNu7onIiDoJumWv9txv52FVccKIngVe2Mx+7ezoyohI2iwtRAT2dw0atKDB379Ls5MjKPK8tfHyV0txHpJi6KQSRDLaemBHlKloujNGoj7CqOYzkhFkeym4kc/euw86y9SwMGV0Cy+aeMG3EMoCS+IUkIEsNjU9oCrjL25YdhMJL6ryPrdkNa1ZMmry2wr6/dSAmGPhfZuwonzohPvH+Q40osoJ9liPmTTsBu+9l9TYkfBvV+7RyY3yCc4Teufp4CIBXrhbnF+9/YvyawqdZZ/3B7VxadmRwlvLEaRNhvpdltq0QtmTf5w/+tvYur0OJNXBumFs/BZFfjCy5Hl6CWfzyDGhyORcETu1+xcnTjgXtu2fR5fpQK2d62vnDvcPW+8Lp4Y8otSy2/81T1YzebDjaKGS6XgbrFle8dwOzqZM0wnoEUnZuCFPXuQKfJ5QYAKmhmbGjxd+ODkUXogii4+nnJrLzhmEnutXr0KDzzwDVf4h5d6mrnk8wF+caf4gWClf3rku7jpxmvh0ppNr407AQ2KhVNiOONIEcym6IVVliYncfz9d1hSeGX/oKtZ+JiMJs/MCa+zLPBK7zkTMxk/d/zRHcT9P6OdvbMj/M6lZP3QJzStSnzvH/6WkPqzJqU6N1FcSMnoU6XlIZpGKiHiQgSzYdlZ/dSxX6OYnkUiZ9ijeFXUWH4OkQ0Wd90O89hGuPdrd2Pnzu98rPAfqUCrEmLfe6iAUGSgvxetzwosBc2+wUlCNp7J6SKYLUO6avTIGGNgCuGAwgcbKqcgRfiUEpLpLIaGL5FEsWzZAJ54/AdSAbE+TnhpS1zAcp6XfZ+nK8X1k7v+Hb/45T5Mi+GUU3rbL9M+ikdPLNDEw26VJYfgefHZhrUjuIvslkklMLuQRjU3j76Vm2Shdvzoe/jSn9wprc4lyOTOC3mCf0EKiCWeH9CgD1GRu8TvpllYHRw9gqd2PcunKLMyaJvJzJQCm/WyhJum+6R3vJqF+/76AWbnMhY4YvGQPtexNNi4cVPrEGG3qkq2SV+IXBesQIsiGw1D+T5vuNX9/cmxON4dfQ+v7X8LM9OzOMuXyQ6LIOCRXZ7mFWmW3VoPvvwXX8YVa1fT6kFCtLexL/V+ld57+GL/38RFK+Au8dSQsL2PHhFT4si5e01TCXdML8wrypMlloDKLh53f9L/8PGJFWhd4n+t8HCHmJRRVtHZRz5k/3Hqw5d1iOe7mflHLxQqH7Y+EwWWWtPTqeHWa8600p9W2KXWbwGc9ZD2oTUrRQAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/lucia_santos.3631853b.gif\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/ryan_gross.a46c105c.gif\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/scott_noh.2eb61215.gif\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/victoria_lansdale.c9da85e5.gif\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/jacobgarcia.deb27c0f.gif\";","export default __webpack_public_path__ + \"static/media/james_faul.870ca352.gif\";","export default __webpack_public_path__ + \"static/media/jason_budzi.72c4924c.png\";","export default __webpack_public_path__ + \"static/media/jia.ce517ca6.gif\";","export default __webpack_public_path__ + \"static/media/jim.d4d025cd.gif\";","export default \"data:image/jpeg;base64,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\"","export default __webpack_public_path__ + \"static/media/jonathanhunter.32909d20.gif\";","export default __webpack_public_path__ + \"static/media/joshc.3df81156.gif\";","export default __webpack_public_path__ + \"static/media/kathak.c0abedf0.gif\";","export default __webpack_public_path__ + \"static/media/katheriner.fab7dc8c.gif\";","export default __webpack_public_path__ + \"static/media/katie.7bc5a064.png\";","export default __webpack_public_path__ + \"static/media/katie_buerk.2d3b9257.gif\";","export default __webpack_public_path__ + \"static/media/kelton.7a1a2488.png\";","export default __webpack_public_path__ + \"static/media/kenneth_li.88d0bc76.png\";","export default __webpack_public_path__ + \"static/media/kenneth_pham.0d531445.png\";","export default __webpack_public_path__ + \"static/media/kiara.7328e16e.gif\";","export default __webpack_public_path__ + \"static/media/kristen_clark.6099835f.gif\";","export default __webpack_public_path__ + \"static/media/lauren.cec856eb.gif\";","export default __webpack_public_path__ + \"static/media/marenda_biggs.5a5550d9.jpg\";","export default __webpack_public_path__ + \"static/media/masood_mohammed.f91917a1.png\";","export default __webpack_public_path__ + \"static/media/matthew_wang.23c6a65a.gif\";","export default __webpack_public_path__ + \"static/media/medkinza.904f53bb.jpeg\";","export default __webpack_public_path__ + \"static/media/mike.2245a809.png\";","export default __webpack_public_path__ + \"static/media/mikechen.66da4c00.gif\";","export default __webpack_public_path__ + \"static/media/mikhail_budovich.66182864.png\";","export default __webpack_public_path__ + \"static/media/myles_melamed.0b7e46c1.gif\";","export default __webpack_public_path__ + \"static/media/olivia_fuson.8966449a.gif\";","export default __webpack_public_path__ + \"static/media/paige_adams.edd33686.png\";","export default __webpack_public_path__ + \"static/media/parker.8d6cd6c0.gif\";","export default __webpack_public_path__ + \"static/media/raheelh.c43661e5.gif\";","export default \"data:image/jpeg;base64,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\"","export default __webpack_public_path__ + \"static/media/sarah_feltz.44188576.png\";","export default __webpack_public_path__ + \"static/media/selena.eda24b67.gif\";","export default \"data:image/gif;base64,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\"","export default \"data:image/jpeg;base64,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\"","export default __webpack_public_path__ + \"static/media/toby_mathew.f5e3131c.gif\";","export default __webpack_public_path__ + \"static/media/tyler.c7f088e1.gif\";","export default __webpack_public_path__ + \"static/media/tyler_nelson.c7f088e1.gif\";","export default __webpack_public_path__ + \"static/media/tylerh.e6b72cc5.gif\";","export default __webpack_public_path__ + \"static/media/wesson.d010e5e2.gif\";","export default __webpack_public_path__ + \"static/media/william_adili.dc2e179e.jpg\";","export default __webpack_public_path__ + \"static/media/winstonc.49a78bf6.gif\";","export default __webpack_public_path__ + \"static/media/BootcampLogo.12fca1a6.svg\";","export default __webpack_public_path__ + \"static/media/anatomy-background.322dd395.svg\";","export default __webpack_public_path__ + \"static/media/anatomy-logo.2b7647a7.svg\";","export default __webpack_public_path__ + \"static/media/badge.1c075186.svg\";","export default __webpack_public_path__ + \"static/media/bootcamp_white_text_logo.c3ec9cf3.svg\";","export default __webpack_public_path__ + \"static/media/caret-down.c4afc73d.svg\";","export default __webpack_public_path__ + \"static/media/chemistry-background.44c50bd1.svg\";","export default __webpack_public_path__ + \"static/media/chemistry-logo.0f75441c.svg\";","export default __webpack_public_path__ + \"static/media/coffee.9367b990.svg\";","export default __webpack_public_path__ + \"static/media/dailywarmup.c4d8c5c7.svg\";","export default __webpack_public_path__ + \"static/media/feature-questions.fdc216ef.svg\";","export default __webpack_public_path__ + \"static/media/feature-schedule.c8435005.svg\";","export default __webpack_public_path__ + \"static/media/feature-tests.e7cf553b.svg\";","export default __webpack_public_path__ + \"static/media/feature-videos.602ea0f5.svg\";","export default __webpack_public_path__ + \"static/media/oat-logo.b97ef7c0.svg\";","export default __webpack_public_path__ + \"static/media/rocket.05f73787.svg\";","export default __webpack_public_path__ + \"static/media/signature.fb23a839.svg\";","export default __webpack_public_path__ + \"static/media/teambootcamp.d9e091fa.svg\";","export default __webpack_public_path__ + \"static/media/warning.855150af.svg\";","export default __webpack_public_path__ + \"static/media/wave-anatomy.49cc314a.svg\";","/* eslint-disable */\nmodule.exports = jQuery => jQuery(document).ready(function(jQuery) {\n\n var COLUMNS, Cube, HEIGHT, LAYER_X, LAYER_Y, PADDING, PUZZLE_X, PUZZLE_Y, Page, Point, ROWS, Structure, answerGrades, answerValues, clearGrades, clearLayers, clearPuzzle, clearRadios, currentPage, erasePage, gameReset, init, layerIds, newPage, numberWord, pagePosition, previousPage, questionIds, questionText, radioChangeEvent, randomInt, restoreCurrentPage, revealExplication, sanitize, sanitizeCanvases, screenLine, screenMove, serializedPages, setPageNumber, startTimer, tallyScoreboard, timeChangeEvent, timeLeft, timeOut, timeReset, timer, timerOn;\n\n timerOn = false;\n\n timeLeft = 60;\n\n timer = {};\n\n serializedPages = [];\n\n pagePosition = 0;\n\n currentPage = {};\n\n answerGrades = [\"grade-A\", \"grade-B\", \"grade-C\", \"grade-D\", \"grade-E\"];\n\n answerValues = [\"A\", \"B\", \"C\", \"D\", \"E\"];\n\n layerIds = [\"layer-1\", \"layer-2\", \"layer-3\", \"layer-4\"];\n\n questionIds = [\"amount-1\", \"amount-2\", \"amount-3\", \"amount-4\", \"amount-5\"];\n\n PADDING = 3;\n\n PUZZLE_X = 284;\n\n PUZZLE_Y = 236;\n\n LAYER_X = 140;\n\n LAYER_Y = 100;\n\n ROWS = 5;\n\n COLUMNS = 5;\n\n HEIGHT = 4;\n\n var difficulty = 0;\n\n init = function() {\n var rad, rd, _i, _len, _results;\n console.log(\"init...\");\n jQuery('#setdifficulty').change(function() {\n difficulty = (parseInt(jQuery(this).val()));\n console.log(\"Changed difficulty to: \" + difficulty);\n setDifficulty();\n gameReset();\n // $('#next').click();\n });\n sanitizeCanvases();\n newPage();\n document.getElementById(\"next\").onclick = newPage;\n document.getElementById(\"previous\").onclick = previousPage;\n document.getElementById(\"time-button\").onclick = timeChangeEvent;\n document.getElementById(\"game-reset\").onclick = gameReset;\n rad = document.getElementsByName(\"answer\");\n _results = [];\n for (_i = 0, _len = rad.length; _i < _len; _i++) {\n rd = rad[_i];\n _results.push(rd.onclick = radioChangeEvent);\n }\n return _results;\n };\n\n window.onload = init;\n\n/*\n * Change difficulty controls\n */\nfunction setDifficulty() {\n if (difficulty === 0) {\n ROWS = 5;\n COLUMNS = 5;\n HEIGHT = 4;\n } else {\n ROWS = 3;\n COLUMNS = 3;\n HEIGHT = 3;\n }\n}\n\n newPage = function() {\n setDifficulty();\n pagePosition++;\n if (pagePosition > serializedPages.length) {\n if (pagePosition === 1 || serializedPages[pagePosition - 2].structure.paintQueries.length >= 3) {\n currentPage = new Page(new Structure());\n } else {\n currentPage = new Page(serializedPages[pagePosition - 2].structure);\n }\n serializedPages.push(currentPage);\n erasePage();\n currentPage.display();\n if (timerOn) {\n return startTimer();\n }\n } else {\n erasePage();\n return restoreCurrentPage();\n }\n };\n\n previousPage = function() {\n if (pagePosition > 1) {\n pagePosition--;\n erasePage();\n return restoreCurrentPage();\n }\n };\n\n revealExplication = function() {\n document.getElementById(\"solution\").innerHTML = \"Solution:\";\n return currentPage.explicate();\n };\n\n timeChangeEvent = function() {\n timerOn = !timerOn;\n if (timerOn) {\n return startTimer();\n } else {\n clearInterval(timer);\n if (timeLeft === 0) {\n return timeReset();\n }\n }\n };\n\n startTimer = function() {\n clearInterval(timer);\n return timer = setInterval(function() {\n timeLeft--;\n document.getElementById(\"time-display\").innerHTML = timeLeft;\n if (timeLeft < 1) {\n return timeOut();\n }\n }, 1000);\n };\n\n timeOut = function() {\n var rad;\n clearInterval(timer);\n rad = document.getElementsByName(\"answer\");\n rad[currentPage.correctOption !== 0 ? 0 : 1].checked = true;\n return radioChangeEvent();\n };\n\n radioChangeEvent = function() {\n var radios, rd, _i, _len;\n clearInterval(timer);\n radios = document.getElementsByName('answer');\n for (_i = 0, _len = radios.length; _i < _len; _i++) {\n rd = radios[_i];\n if (rd.checked) {\n currentPage.answer = rd.value;\n break;\n }\n }\n clearGrades();\n document.getElementById(answerGrades[currentPage.correctOption]).innerHTML = '';\n if (answerValues[currentPage.correctOption] !== currentPage.answer) {\n document.getElementById('grade-' + currentPage.answer).innerHTML = '';\n }\n revealExplication();\n return tallyScoreboard();\n };\n\n tallyScoreboard = function() {\n var correct, incorrect, sp, _i, _len;\n incorrect = 0;\n correct = 0;\n for (_i = 0, _len = serializedPages.length; _i < _len; _i++) {\n sp = serializedPages[_i];\n if (sp.answer !== \"z\") {\n if (sp.answer === answerValues[sp.correctOption]) {\n correct++;\n } else {\n incorrect++;\n }\n }\n }\n document.getElementById('incorrect').innerHTML = incorrect;\n return document.getElementById('correct').innerHTML = correct;\n };\n\n setPageNumber = function() {\n document.getElementById(\"location\").innerHTML = pagePosition;\n return document.getElementById(\"total\").innerHTML = serializedPages.length;\n };\n\n restoreCurrentPage = function() {\n var radios, rd, _i, _len;\n currentPage = serializedPages[pagePosition - 1];\n if (timerOn && currentPage.answer === \"z\") {\n startTimer();\n }\n currentPage.display();\n if (currentPage.answer !== \"z\") {\n radios = document.getElementsByName('answer');\n for (_i = 0, _len = radios.length; _i < _len; _i++) {\n rd = radios[_i];\n if (rd.value === currentPage.answer) {\n rd.checked = true;\n break;\n }\n }\n document.getElementById(answerGrades[currentPage.correctOption]).innerHTML = '';\n if (answerValues[currentPage.correctOption] !== currentPage.answer) {\n return document.getElementById('grade-' + currentPage.answer).innerHTML = '';\n } else {\n return revealExplication();\n }\n }\n };\n\n randomInt = function(scale) {\n return Math.floor(Math.random() * scale);\n };\n\n numberWord = function(n) {\n switch (n) {\n case 1:\n return \"one\";\n case 2:\n return \"two\";\n case 3:\n return \"three\";\n case 4:\n return \"four\";\n case 5:\n return \"five\";\n }\n };\n\n questionText = function(n) {\n if (n === 1) {\n return \"1 cube\";\n } else {\n return n + \" cubes\";\n }\n };\n\n screenLine = function(ctx, p, mult) {\n var x, y;\n x = Math.floor(p[0] * mult) + PADDING;\n y = Math.floor(p[1] * mult) + PADDING;\n return ctx.lineTo(x, y);\n };\n\n screenMove = function(ctx, p, mult) {\n var x, y;\n x = Math.floor(p[0] * mult) + PADDING;\n y = Math.floor(p[1] * mult) + PADDING;\n return ctx.moveTo(x, y);\n };\n\n Point = (function() {\n function Point(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n\n Point.prototype.screenPoint = function(view, xOff, yOff) {\n var deltaX, result;\n result = [];\n deltaX = this.z * 0.42;\n if (view >= 1) {\n deltaX = -deltaX + COLUMNS / 2;\n }\n result[0] = this.x - deltaX + xOff;\n result[1] = this.y - this.z * 0.38 + yOff;\n return result;\n };\n\n return Point;\n\n })();\n\n Cube = (function() {\n function Cube(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.painted = 5;\n }\n\n Cube.prototype.print = function(ctx, mult, view, color, xOff, yOff) {\n ctx.fillStyle = color;\n this.fill(ctx, mult, view, xOff, yOff);\n return this.outline(ctx, mult, view, xOff, yOff);\n };\n\n Cube.prototype.fill = function(ctx, mult, view, xOff, yOff) {\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.closePath();\n ctx.fill();\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n ctx.closePath();\n ctx.fill();\n if (view === 0) {\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y + 1, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.closePath();\n return ctx.fill();\n } else {\n ctx.beginPath();\n screenMove(ctx, new Point(this.x + 1, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y + 1, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.closePath();\n return ctx.fill();\n }\n };\n\n Cube.prototype.outline = function(ctx, mult, view, xOff, yOff) {\n ctx.lineCap = \"round\";\n ctx.lineWidth = 1;\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n ctx.beginPath();\n screenMove(ctx, new Point(this.x + 1, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n ctx.beginPath();\n screenMove(ctx, new Point(this.x + 1, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n ctx.beginPath();\n screenMove(ctx, new Point(this.x + 1, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n if (view === 0) {\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y + 1, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n } else {\n ctx.beginPath();\n screenMove(ctx, new Point(this.x + 1, this.y + 1, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n }\n ctx.beginPath();\n screenMove(ctx, new Point(this.x + 1, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n if (view === 0) {\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y + 1, this.z + 1).screenPoint(view, xOff, yOff), mult);\n return ctx.stroke();\n } else {\n ctx.beginPath();\n screenMove(ctx, new Point(this.x + 1, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y + 1, this.z + 1).screenPoint(view, xOff, yOff), mult);\n return ctx.stroke();\n }\n };\n\n return Cube;\n\n })();\n\n Structure = (function() {\n function Structure() {\n this.xOff = 0;\n this.yOff = 0;\n this.perspective = randomInt(2);\n this.paintQueries = [];\n while (true) {\n this.cubes = [];\n this.seed();\n this.createPattern();\n if (this.visible()) {\n break;\n }\n }\n this.scale();\n this.tallySides();\n this.order();\n }\n\n Structure.prototype.visible = function() {\n var cb, front, h, i, j, lip, obstuctColumn, side, wall, _i, _j, _k, _len, _ref, _ref1, _ref2;\n for (i = _i = 0, _ref = COLUMNS - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n for (j = _j = 0, _ref1 = ROWS - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; j = 0 <= _ref1 ? ++_j : --_j) {\n h = this.height(i, j);\n if (h < HEIGHT) {\n _ref2 = this.cubes;\n for (_k = 0, _len = _ref2.length; _k < _len; _k++) {\n cb = _ref2[_k];\n if (cb.y < h && cb.z <= j) {\n if (this.perspective === 0 && i - cb.x === 1) {\n return false;\n }\n if (this.perspective === 1 && cb.x - i === 1) {\n return false;\n }\n }\n }\n }\n front = this.height(i, j - 1);\n if (front <= h && front < HEIGHT) {\n side = this.perspective === 0 ? this.height(i - 1, j) : this.height(i + 1, j);\n if (side <= h && side < HEIGHT) {\n lip = side > front ? side : front;\n wall = this.height(i, j + 1);\n if (wall <= lip) {\n if (this.height(i, j - 1) < lip || this.height(i, j - 2) < lip) {\n obstuctColumn = this.perspective === 0 ? i - 1 : i + 1;\n if (this.height(obstuctColumn, j - 1) >= lip && this.height(obstuctColumn, j - 2) >= lip) {\n return false;\n }\n }\n }\n }\n }\n }\n }\n return true;\n };\n\n Structure.prototype.height = function(x, z) {\n var cb, h, _i, _len, _ref;\n h = HEIGHT;\n _ref = this.cubes;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n cb = _ref[_i];\n if ((cb.x === x && cb.z === z) && (cb.y < h)) {\n h = cb.y;\n }\n }\n return h;\n };\n\n Structure.prototype.tallySides = function() {\n var cb1, cb2, div, _i, _len, _ref, _results;\n _ref = this.cubes;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n cb1 = _ref[_i];\n _results.push((function() {\n var _j, _len1, _ref1, _results1;\n _ref1 = this.cubes;\n _results1 = [];\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n cb2 = _ref1[_j];\n if (cb2 !== cb1) {\n if (cb1.x === cb2.x && cb1.y === cb2.y) {\n div = cb1.z - cb2.z;\n if (div === 1) {\n _results1.push(cb1.painted--);\n } else if (div === -1) {\n _results1.push(cb1.painted--);\n } else {\n _results1.push(void 0);\n }\n } else if (cb1.x === cb2.x && cb1.z === cb2.z) {\n div = cb1.y - cb2.y;\n if (div === 1) {\n _results1.push(cb1.painted--);\n } else {\n _results1.push(void 0);\n }\n } else if (cb1.z === cb2.z && cb1.y === cb2.y) {\n div = cb1.x - cb2.x;\n if (div === 1) {\n _results1.push(cb1.painted--);\n } else if (div === -1) {\n _results1.push(cb1.painted--);\n } else {\n _results1.push(void 0);\n }\n } else {\n _results1.push(void 0);\n }\n }\n }\n return _results1;\n }).call(this));\n }\n return _results;\n };\n\n Structure.prototype.push = function(cube) {\n return this.cubes.push(cube);\n };\n\n Structure.prototype.printCubes = function(ctx) {\n var cb, _i, _len, _ref, _results;\n _ref = this.cubes;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n cb = _ref[_i];\n _results.push(cb.print(ctx, this.multiplier, this.perspective, \"white\", this.xOff, this.yOff));\n }\n return _results;\n };\n\n Structure.prototype.order = function() {\n var cb, hldr, holder, holder2, i, j, result, _i, _j, _k, _l, _len, _len1, _ref, _ref1, _ref2, _ref3;\n result = [];\n holder = [];\n for (i = _i = 0, _ref = HEIGHT - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n holder.push([]);\n }\n _ref1 = this.cubes;\n for (_j = 0, _len = _ref1.length; _j < _len; _j++) {\n cb = _ref1[_j];\n holder[cb.y].push(cb);\n }\n i = HEIGHT - 1;\n while (i >= 0) {\n holder2 = [];\n for (j = _k = 0, _ref2 = ROWS - 1; 0 <= _ref2 ? _k <= _ref2 : _k >= _ref2; j = 0 <= _ref2 ? ++_k : --_k) {\n holder2.push([]);\n }\n _ref3 = holder[i];\n for (_l = 0, _len1 = _ref3.length; _l < _len1; _l++) {\n hldr = _ref3[_l];\n holder2[hldr.z].push(hldr);\n }\n j = ROWS - 1;\n while (j >= 0) {\n if (this.perspective === 0) {\n holder2[j].sort(function(a, b) {\n return b.x - a.x;\n });\n } else {\n holder2[j].sort(function(a, b) {\n return a.x - b.x;\n });\n }\n result = result.concat(holder2[j]);\n j--;\n }\n i--;\n }\n return this.cubes = result;\n };\n\n Structure.prototype.seed = function() {\n var x, z;\n x = randomInt(COLUMNS);\n z = randomInt(ROWS);\n return this.push(new Cube(x, HEIGHT - 1, z));\n };\n\n Structure.prototype.scale = function() {\n var b, bottom, cube, l, left, r, right, t, top, xScale, yScale, _i, _len, _ref;\n top = 10000;\n bottom = -10000;\n right = -10000;\n left = 10000;\n _ref = this.cubes;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n cube = _ref[_i];\n t = new Point(cube.x, cube.y, cube.z + 1).screenPoint(this.perspective, this.xOff, this.yOff)[1];\n if (t < top) {\n top = t;\n }\n b = new Point(cube.x, cube.y + 1, cube.z).screenPoint(this.perspective, this.xOff, this.yOff)[1];\n if (b > bottom) {\n bottom = b;\n }\n if (this.perspective === 0) {\n r = new Point(cube.x + 1, cube.y, cube.z).screenPoint(this.perspective, this.xOff, this.yOff)[0];\n if (r > right) {\n right = r;\n }\n l = new Point(cube.x, cube.y, cube.z + 1).screenPoint(this.perspective, this.xOff, this.yOff)[0];\n if (l < left) {\n left = l;\n }\n } else {\n r = new Point(cube.x + 1, cube.y, cube.z + 1).screenPoint(this.perspective, this.xOff, this.yOff)[0];\n if (r > right) {\n right = r;\n }\n l = new Point(cube.x, cube.y, cube.z).screenPoint(this.perspective, this.xOff, this.yOff)[0];\n if (l < left) {\n left = l;\n }\n }\n }\n xScale = LAYER_X / (right - left);\n yScale = LAYER_Y / (bottom - top);\n if (xScale > yScale) {\n this.solutionScale = LAYER_Y / (bottom - top);\n } else {\n this.solutionScale = LAYER_X / (right - left);\n }\n this.multiplier = 40;\n this.xOff = 0 - left;\n return this.yOff = 0 - top;\n };\n\n Structure.prototype.createPattern = function() {\n var a, cb, iter, j, upperCubes, valid, x, z, _i, _j, _len, _len1, _ref, _ref1;\n upperCubes = [];\n while (true) {\n a = randomInt(this.cubes.length);\n x = this.cubes[a].x;\n z = this.cubes[a].z;\n switch (randomInt(4)) {\n case 0:\n x--;\n break;\n case 1:\n x++;\n break;\n case 2:\n z++;\n break;\n default:\n z--;\n }\n if (x >= COLUMNS || x < 0 || z >= ROWS || z < 0) {\n continue;\n }\n valid = true;\n _ref = this.cubes;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n cb = _ref[_i];\n if (x === cb.x && z === cb.z) {\n valid = false;\n break;\n }\n }\n if (valid) {\n this.push(new Cube(x, HEIGHT - 1, z));\n }\n if (!(this.cubes.length < (5 + randomInt(4) + randomInt(4) + randomInt(4) + randomInt(4)))) {\n break;\n }\n }\n while (true) {\n upperCubes = [];\n _ref1 = this.cubes;\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n cb = _ref1[_j];\n iter = randomInt(HEIGHT);\n x = cb.x;\n z = cb.z;\n j = 0;\n while (j < iter) {\n upperCubes.push(new Cube(x, HEIGHT - (2 + j), z));\n j++;\n }\n }\n if (!(upperCubes.length + this.cubes.length < 15 || upperCubes.length + this.cubes.length > 20)) {\n break;\n }\n }\n return this.cubes = this.cubes.concat(upperCubes);\n };\n\n Structure.prototype.testStructure = function() {\n var i, j, k, _i, _ref, _results;\n this.cubes = [];\n _results = [];\n for (i = _i = 0, _ref = COLUMNS - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n _results.push((function() {\n var _j, _ref1, _results1;\n _results1 = [];\n for (j = _j = 0, _ref1 = HEIGHT - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; j = 0 <= _ref1 ? ++_j : --_j) {\n _results1.push((function() {\n var _k, _ref2, _results2;\n _results2 = [];\n for (k = _k = 0, _ref2 = ROWS - 1; 0 <= _ref2 ? _k <= _ref2 : _k >= _ref2; k = 0 <= _ref2 ? ++_k : --_k) {\n _results2.push(this.push(new Cube(i, j, k)));\n }\n return _results2;\n }).call(this));\n }\n return _results1;\n }).call(this));\n }\n return _results;\n };\n\n return Structure;\n\n })();\n\n Page = (function() {\n function Page(structure) {\n this.structure = structure;\n this.answer = \"z\";\n this.options = [];\n this.paintQuery();\n this.sequentialQuestions();\n }\n\n Page.prototype.paintQuery = function() {\n var pq, valid, _i, _len, _ref;\n while (true) {\n valid = true;\n this.sidesQty = randomInt(5) + 1;\n _ref = this.structure.paintQueries;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n pq = _ref[_i];\n if (this.sidesQty === pq) {\n valid = false;\n break;\n }\n }\n if (!valid) {\n continue;\n }\n this.getTally();\n if (this.tally !== 0) {\n break;\n }\n }\n return this.structure.paintQueries.push(this.sidesQty);\n };\n\n Page.prototype.populateQuestions = function() {\n var candidate, history, hst, i, valid, _i, _len, _results;\n this.options.push(this.tally);\n history = [];\n i = 0;\n while (i < questionIds.length) {\n while (true) {\n candidate = randomInt(5) + 1;\n if (Math.random() < 0.5) {\n candidate = -candidate;\n }\n if (candidate + this.tally < 1 || candidate + this.tally > this.structure.cubes.length) {\n continue;\n }\n valid = true;\n for (_i = 0, _len = history.length; _i < _len; _i++) {\n hst = history[_i];\n if (candidate === hst) {\n valid = false;\n break;\n }\n }\n if (!valid) {\n continue;\n }\n history.push(candidate);\n this.options.push(this.tally + candidate);\n break;\n }\n i++;\n }\n this.options.sort(function(a, b) {\n return a - b;\n });\n i = 0;\n _results = [];\n while (i < questionIds.length) {\n if (this.options[i] === this.tally) {\n this.correctOption = i;\n }\n _results.push(i++);\n }\n return _results;\n };\n\n Page.prototype.sequentialQuestions = function() {\n var choices, i, _i, _results;\n choices = this.tally;\n if (choices > 5) {\n choices = 5;\n }\n this.correctOption = randomInt(choices);\n _results = [];\n for (i = _i = 0; _i <= 4; i = ++_i) {\n _results.push(this.options.push(this.tally - this.correctOption + i));\n }\n return _results;\n };\n\n Page.prototype.displayQuestions = function() {\n var i, _results;\n document.getElementById(\"query\").innerHTML = numberWord(this.sidesQty);\n i = 0;\n _results = [];\n while (i < questionIds.length) {\n document.getElementById(questionIds[i]).innerHTML = questionText(this.options[i]);\n _results.push(i++);\n }\n return _results;\n };\n\n Page.prototype.getTally = function() {\n var count, sc, _i, _len, _ref;\n count = 0;\n _ref = this.structure.cubes;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n sc = _ref[_i];\n if (sc.painted === this.sidesQty) {\n count++;\n }\n }\n return this.tally = count;\n };\n\n Page.prototype.display = function() {\n var c, ctx;\n this.displayQuestions();\n c = document.getElementById('puzzle');\n ctx = c.getContext(\"2d\");\n return this.structure.printCubes(ctx);\n };\n\n Page.prototype.explicate = function() {\n var c, color, ctx, i, sc, _i, _len, _ref, _results;\n i = 0;\n _results = [];\n while (i < layerIds.length) {\n c = document.getElementById(layerIds[i]);\n ctx = c.getContext(\"2d\");\n _ref = this.structure.cubes;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n sc = _ref[_i];\n if (sc.y === i) {\n color = \"white\";\n if (sc.painted === this.sidesQty) {\n color = \"#5F5\";\n }\n sc.print(ctx, this.structure.solutionScale, this.structure.perspective, color, this.structure.xOff, this.structure.yOff);\n } else if (sc.y > i) {\n color = \"#EEE\";\n sc.print(ctx, this.structure.solutionScale, this.structure.perspective, color, this.structure.xOff, this.structure.yOff);\n }\n }\n _results.push(i++);\n }\n return _results;\n };\n\n return Page;\n\n })();\n\n gameReset = function() {\n timerOn = false;\n clearInterval(timer);\n serializedPages = [];\n pagePosition = 0;\n newPage();\n return tallyScoreboard();\n };\n\n timeReset = function() {\n timeLeft = 60;\n return document.getElementById(\"time-display\").innerHTML = timeLeft;\n };\n\n erasePage = function() {\n document.getElementById(\"solution\").innerHTML = \"\";\n clearGrades();\n clearLayers();\n clearPuzzle();\n clearRadios();\n clearInterval(timer);\n timeReset();\n return setPageNumber();\n };\n\n clearGrades = function() {\n var ag, _i, _len, _results;\n _results = [];\n for (_i = 0, _len = answerGrades.length; _i < _len; _i++) {\n ag = answerGrades[_i];\n _results.push(document.getElementById(ag).innerHTML = '');\n }\n return _results;\n };\n\n clearLayers = function() {\n var c, ctx, li, x, y, _i, _len, _results;\n x = LAYER_X + PADDING * 2;\n y = LAYER_Y + PADDING * 2;\n _results = [];\n for (_i = 0, _len = layerIds.length; _i < _len; _i++) {\n li = layerIds[_i];\n c = document.getElementById(li);\n ctx = c.getContext(\"2d\");\n _results.push(ctx.clearRect(0, 0, x, y));\n }\n return _results;\n };\n\n clearPuzzle = function() {\n var c, ctx, x, y;\n x = PUZZLE_X + PADDING * 2;\n y = PUZZLE_Y + PADDING * 2;\n c = document.getElementById('puzzle');\n ctx = c.getContext(\"2d\");\n return ctx.clearRect(0, 0, x, y);\n };\n\n clearRadios = function() {\n var el, ele, _i, _len, _results;\n ele = document.getElementsByName(\"answer\");\n _results = [];\n for (_i = 0, _len = ele.length; _i < _len; _i++) {\n el = ele[_i];\n _results.push(el.checked = false);\n }\n return _results;\n };\n\n sanitizeCanvases = function() {\n var c, li, x, y, _i, _len;\n x = LAYER_X + PADDING * 2;\n y = LAYER_Y + PADDING * 2;\n for (_i = 0, _len = layerIds.length; _i < _len; _i++) {\n li = layerIds[_i];\n c = document.getElementById(li);\n sanitize(c, x, y);\n }\n x = PUZZLE_X + PADDING * 2;\n y = PUZZLE_Y + PADDING * 2;\n c = document.getElementById('puzzle');\n return sanitize(c, x, y);\n };\n\n sanitize = function(can, x, y) {\n can.width = x;\n return can.height = y;\n };\n\n});\n","/* eslint-disable */\r\nmodule.exports = function($) {\r\n var BlankSquare, BlankTriangle, BlankTriangleInv1, BlankTriangleInv2, BlankTriangleInv3, Choice, Coffin, DIMENSION, DIMENSION0, DblMarkSquare, DiagonalRect, DieFace, El, ElInv, Face, Fold, FourSquare, HexSection, HexSection10, HexSection2, HexSection3, HexSection4, HexSection5, HexSection6, HexSection7, HexSection8, HexSection9, HorizRect, HorizRectFour, HorizRectThree, HorseShoe, HorseShoeSideways, InnerRect, InnerTriangle, InnerTriangleInv, Normal, OFFSET, OPTIONS, Pattern, Pentagon, PentagonInv, Point, ProtoRect, Queue, SECONDS, SQ3, SoftL, SoftLInv, SoftLInv2, SoftLSide, Spin, Square, SquareDiamond, SquareFor12, StripedRect, StripedSquare, Structure1, Structure10, Structure11, Structure12, Structure13, Structure14, Structure15, Structure16, Structure17, Structure18, Structure19, Structure2, Structure20, Structure21, Structure22, Structure23, Structure24, Structure25, Structure3, Structure4, Structure5, Structure6, Structure7, Structure8, Structure9, TippedHexSection, TippedHexSectionInv, TippedRect, Triangle, TriangleSideways, TwoPentagon, TwoSquare, VertPentagon, VertPentagonInv, VertRect, VertRectFour, VertRectThree, ZInverted, ZShape, addControls, animDir, animOn, animPause, animloop, answerGrades, answerValues, clearCanvas, clearExplication, clearGrades, clearRadios, compareFaces, currentPage, erasePage, folder, gameReset, getBounds, getCtx, getScaling, getStructure, newPage, pagePosition, pauseAction, povs, previousPage, radioChangeEvent, randInt, render, restoreCurrentPage, revealExplication, reverseAction, sanitizeCanvases, serializedPages, setGrades, setPageNumber, shuffle, startTimer, tallyScoreboard, testing, timeChangeEvent, timeLeft, timeOut, timeReset, timer, timerOn,\r\n __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\r\n __hasProp = {}.hasOwnProperty,\r\n __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\r\n __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\r\n\r\n testing = false;\r\n\r\n DIMENSION0 = 260;\r\n\r\n DIMENSION = 155;\r\n\r\n OFFSET = 8;\r\n\r\n OPTIONS = 4;\r\n\r\n SECONDS = 60;\r\n\r\n SQ3 = Math.sqrt(3);\r\n\r\n animOn = false;\r\n\r\n animDir = true;\r\n\r\n animPause = {};\r\n\r\n timerOn = false;\r\n\r\n timeLeft = SECONDS;\r\n\r\n timer = {};\r\n\r\n serializedPages = [];\r\n\r\n pagePosition = 0;\r\n\r\n currentPage = {};\r\n\r\n answerGrades = [\"#grade-A\", \"#grade-B\", \"#grade-C\", \"#grade-D\"];\r\n\r\n answerValues = [\"A\", \"B\", \"C\", \"D\"];\r\n\r\n povs = [[-80, -70, -200], [80, -70, -200], [80, 70, -200], [-80, 70, -200]];\r\n\r\n sanitizeCanvases = function() {\r\n var first;\r\n $('canvas').each(function() {\r\n $(this)[0].width = DIMENSION;\r\n return $(this)[0].height = DIMENSION;\r\n });\r\n first = $('canvas')[0];\r\n first.width = DIMENSION0;\r\n return first.height = DIMENSION0;\r\n };\r\n\r\n clearCanvas = function(n) {\r\n var ctx, dim;\r\n dim = DIMENSION;\r\n if (n === 0) {\r\n dim = DIMENSION0;\r\n }\r\n ctx = getCtx(n);\r\n return ctx.clearRect(0, 0, dim, dim);\r\n };\r\n\r\n getCtx = function(n) {\r\n var ctx;\r\n ctx = $('canvas')[n].getContext(\"2d\");\r\n return ctx;\r\n };\r\n\r\n getScaling = function(bounds, cDim, cMargin) {\r\n var biggest, height, scale, size, width, xOff, yOff;\r\n size = cDim - cMargin * 2;\r\n width = bounds.maxX - bounds.minX;\r\n height = bounds.maxY - bounds.minY;\r\n biggest = width > height ? width : height;\r\n scale = size / biggest;\r\n xOff = ((cDim - width * scale) / 2) - (bounds.minX * scale);\r\n yOff = ((cDim - height * scale) / 2) - (bounds.minY * scale);\r\n return {\r\n scale: scale,\r\n xOff: xOff,\r\n yOff: yOff\r\n };\r\n };\r\n\r\n compareFaces = function(array1, array2) {\r\n var face1, face2, unique, _i, _j, _len, _len1;\r\n if (array1.length !== array2.length) {\r\n return false;\r\n }\r\n for (_i = 0, _len = array1.length; _i < _len; _i++) {\r\n face1 = array1[_i];\r\n unique = true;\r\n for (_j = 0, _len1 = array2.length; _j < _len1; _j++) {\r\n face2 = array2[_j];\r\n if (face1.compare(face2)) {\r\n unique = false;\r\n }\r\n }\r\n if (unique) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n\r\n randInt = function(scale) {\r\n return Math.floor(Math.random() * scale);\r\n };\r\n\r\n animloop = function() {\r\n requestAnimationFrame(animloop);\r\n if (animOn) {\r\n return render();\r\n }\r\n };\r\n\r\n window.requestAnimationFrame || (window.requestAnimationFrame = window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(callback, element) {\r\n return window.setTimeout(function() {\r\n return callback(+new Date());\r\n }, 1000 / 60);\r\n });\r\n\r\n render = function() {};\r\n\r\n getBounds = function(faces, pov) {\r\n var face, maxX, maxY, minX, minY, point, scr, _i, _j, _len, _len1, _ref;\r\n minX = 1000;\r\n minY = 1000;\r\n maxX = -1000;\r\n maxY = -1000;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n face = faces[_i];\r\n _ref = face.ar;\r\n for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {\r\n point = _ref[_j];\r\n scr = point.screenPoint(pov);\r\n if (scr[0] < minX) {\r\n minX = scr[0];\r\n }\r\n if (scr[0] > maxX) {\r\n maxX = scr[0];\r\n }\r\n if (scr[1] < minY) {\r\n minY = scr[1];\r\n }\r\n if (scr[1] > maxY) {\r\n maxY = scr[1];\r\n }\r\n }\r\n }\r\n return {\r\n minX: minX,\r\n maxX: maxX,\r\n minY: minY,\r\n maxY: maxY\r\n };\r\n };\r\n\r\n folder = function(mode, faces, dv, axis) {\r\n var ax, rad, result;\r\n rad = Math.PI / dv;\r\n ax = (function() {\r\n if (axis.length === 1) {\r\n switch (mode) {\r\n case 0:\r\n return [[axis[0], 0, 0], [axis[0], 10, 0]];\r\n case 1:\r\n return [[0, axis[0], 0], [10, axis[0], 0]];\r\n }\r\n } else {\r\n return [[axis[0], axis[1], 0], [axis[0], axis[1], 10]];\r\n }\r\n })();\r\n result = new Fold(faces, rad, ax);\r\n return result;\r\n };\r\n\r\n shuffle = function(a) {\r\n var i, j, t;\r\n i = a.length;\r\n while (--i > 0) {\r\n j = ~~(Math.random() * (i + 1));\r\n t = a[j];\r\n a[j] = a[i];\r\n a[i] = t;\r\n }\r\n return a;\r\n };\r\n\r\n Queue = (function() {\r\n function Queue(args) {\r\n this.ar = args;\r\n }\r\n\r\n return Queue;\r\n\r\n })();\r\n\r\n Point = (function(_super) {\r\n __extends(Point, _super);\r\n\r\n function Point(args) {\r\n this.changeAngle = __bind(this.changeAngle, this);\r\n Point.__super__.constructor.call(this, args);\r\n if (this.ar.length < 3) {\r\n this.ar.push(0);\r\n }\r\n }\r\n\r\n Point.prototype.clone = function() {\r\n return new Point([this.ar[0], this.ar[1], this.ar[2]]);\r\n };\r\n\r\n Point.prototype.compare = function(point) {\r\n var cushion, diff, i, _i;\r\n cushion = 0.001;\r\n for (i = _i = 0; _i <= 2; i = ++_i) {\r\n diff = this.ar[i] - point.ar[i];\r\n diff = Math.abs(diff);\r\n if (diff > cushion) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n\r\n Point.prototype.line = function(ctx, pov, scaling, mode) {\r\n var scr, x, y;\r\n scr = this.screenPoint(pov);\r\n x = scaling.xOff + scr[0] * scaling.scale;\r\n y = scaling.yOff + scr[1] * scaling.scale;\r\n if (mode) {\r\n return ctx.lineTo(x, y);\r\n } else {\r\n return ctx.moveTo(x, y);\r\n }\r\n };\r\n\r\n Point.prototype.screenPoint = function(pov) {\r\n var delta, newX, newY;\r\n delta = this.ar[2] / (this.ar[2] - pov[2]);\r\n newX = this.ar[0] + (pov[0] - this.ar[0]) * delta;\r\n newY = this.ar[1] + (pov[1] - this.ar[1]) * delta;\r\n return [newX, newY];\r\n };\r\n\r\n Point.prototype.translate = function(x, y, z) {\r\n this.ar[0] += x;\r\n this.ar[1] += y;\r\n return this.ar[2] += z;\r\n };\r\n\r\n Point.prototype.describe = function() {\r\n return $('#log').append('
' + this.ar[0] + \" \" + this.ar[1] + \" \" + this.ar[2] + '
');\r\n };\r\n\r\n Point.prototype.sanitize = function() {\r\n var i, _i, _len, _ref, _results;\r\n _ref = [0, 1, 2];\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n i = _ref[_i];\r\n _results.push(this.ar[i] = Math.round(this.ar[i] * 1000) / 1000);\r\n }\r\n return _results;\r\n };\r\n\r\n Point.prototype.changeAngle = function(theta, a, b) {\r\n var newa, newb;\r\n newa = this.ar[a] * Math.cos(theta) - this.ar[b] * Math.sin(theta);\r\n newb = this.ar[b] * Math.cos(theta) + this.ar[a] * Math.sin(theta);\r\n this.ar[a] = newa;\r\n return this.ar[b] = newb;\r\n };\r\n\r\n Point.prototype.getAngle = function(a, b) {\r\n return Math.atan2(this.ar[b], this.ar[a]);\r\n };\r\n\r\n Point.prototype.spin = function(axis, rad) {\r\n var angles, axle, cusion, deltas, i, _i, _j, _k, _results;\r\n cusion = 0.00001;\r\n deltas = [];\r\n angles = [0, 0];\r\n for (i = _i = 0; _i <= 2; i = ++_i) {\r\n deltas[i] = axis[1][i] - axis[0][i];\r\n }\r\n axle = new Point(deltas);\r\n for (i = _j = 0; _j <= 2; i = ++_j) {\r\n this.ar[i] -= axis[0][i];\r\n }\r\n if (Math.abs(axle.ar[1]) > cusion) {\r\n angles[0] = 0 - axle.getAngle(0, 1);\r\n axle.changeAngle(angles[0], 0, 1);\r\n this.changeAngle(angles[0], 0, 1);\r\n }\r\n if (Math.abs(axle.ar[0]) > cusion) {\r\n angles[1] = Math.PI / 2 - axle.getAngle(0, 2);\r\n this.changeAngle(angles[1], 0, 2);\r\n }\r\n this.changeAngle(rad, 0, 1);\r\n if (Math.abs(angles[1]) > cusion) {\r\n this.changeAngle(-angles[1], 0, 2);\r\n }\r\n if (Math.abs(angles[0]) > cusion) {\r\n this.changeAngle(-angles[0], 0, 1);\r\n }\r\n _results = [];\r\n for (i = _k = 0; _k <= 2; i = ++_k) {\r\n _results.push(this.ar[i] += axis[0][i]);\r\n }\r\n return _results;\r\n };\r\n\r\n Point.prototype.distance = function(pov) {\r\n var a, b, c;\r\n a = this.ar[0] - pov[0];\r\n b = this.ar[1] - pov[1];\r\n c = this.ar[2] - pov[2];\r\n return a * a + b * b + c * c;\r\n };\r\n\r\n return Point;\r\n\r\n })(Queue);\r\n\r\n Normal = (function(_super) {\r\n __extends(Normal, _super);\r\n\r\n function Normal() {\r\n return Normal.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n Normal.prototype.facing = function(pov) {\r\n return this.ar[0].distance(pov) < this.ar[1].distance(pov);\r\n };\r\n\r\n return Normal;\r\n\r\n })(Queue);\r\n\r\n Fold = (function() {\r\n function Fold(faces, degrees, axis) {\r\n this.faces = faces;\r\n this.degrees = degrees;\r\n this.axis = axis;\r\n }\r\n\r\n return Fold;\r\n\r\n })();\r\n\r\n Spin = (function() {\r\n function Spin(axis, rad) {\r\n this.axis = axis;\r\n this.rad = rad;\r\n }\r\n\r\n return Spin;\r\n\r\n })();\r\n\r\n Choice = (function(_super) {\r\n __extends(Choice, _super);\r\n\r\n function Choice(args) {\r\n Choice.__super__.constructor.call(this, args);\r\n this.pov = [];\r\n }\r\n\r\n return Choice;\r\n\r\n })(Queue);\r\n\r\n Face = (function(_super) {\r\n __extends(Face, _super);\r\n\r\n function Face(args) {\r\n var extension;\r\n Face.__super__.constructor.call(this, args);\r\n if (args.length > 0) {\r\n this.marks = [];\r\n extension = new Point([this.ar[0].ar[0], this.ar[0].ar[1], this.ar[0].ar[2] + 1]);\r\n this.normal = new Normal([this.ar[0], extension]);\r\n this.explication = false;\r\n this.type = 0;\r\n }\r\n }\r\n\r\n Face.prototype.clone = function() {\r\n var cln;\r\n cln = new Face([]);\r\n this.copyTo(cln);\r\n return cln;\r\n };\r\n\r\n Face.prototype.copyTo = function(destination) {\r\n var face, mks, p, points, _i, _j, _len, _len1, _ref, _ref1;\r\n points = [];\r\n _ref = this.ar;\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n p = _ref[_i];\r\n points.push(p.clone());\r\n }\r\n mks = [];\r\n _ref1 = this.marks;\r\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\r\n face = _ref1[_j];\r\n mks.push(face.clone());\r\n }\r\n destination.ar = points;\r\n destination.marks = mks;\r\n destination.normal = new Normal([destination.ar[0], this.normal.ar[1].clone()]);\r\n destination.explication = this.explication;\r\n return destination.type = this.type;\r\n };\r\n\r\n Face.prototype.compare = function(face) {\r\n var face1, face2, point1, point2, unique, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref, _ref1, _ref2, _ref3;\r\n if (this.ar.length !== face.ar.length) {\r\n return false;\r\n }\r\n if (this.marks.length !== face.marks.length) {\r\n return false;\r\n }\r\n _ref = this.ar;\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n point1 = _ref[_i];\r\n unique = true;\r\n _ref1 = face.ar;\r\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\r\n point2 = _ref1[_j];\r\n if (point1.compare(point2)) {\r\n unique = false;\r\n }\r\n }\r\n if (unique) {\r\n return false;\r\n return true;\r\n }\r\n }\r\n _ref2 = this.marks;\r\n for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {\r\n face1 = _ref2[_k];\r\n unique = true;\r\n _ref3 = face.marks;\r\n for (_l = 0, _len3 = _ref3.length; _l < _len3; _l++) {\r\n face2 = _ref3[_l];\r\n if (face1.compare(face2)) {\r\n unique = false;\r\n }\r\n }\r\n if (unique) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n\r\n Face.prototype.fill = function(n, pov, scaling, style) {\r\n var ctx, point, _i, _len, _ref;\r\n ctx = getCtx(n);\r\n ctx.fillStyle = style;\r\n ctx.beginPath();\r\n this.ar[0].line(ctx, pov, scaling, false);\r\n _ref = this.ar;\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n point = _ref[_i];\r\n if (point !== this.ar[0]) {\r\n point.line(ctx, pov, scaling, true);\r\n }\r\n }\r\n ctx.closePath();\r\n ctx.fill();\r\n return ctx.stroke();\r\n };\r\n\r\n Face.prototype.printBack = function(n, pov, scaling) {\r\n if (!this.normal.facing(pov)) {\r\n return this.fill(n, pov, scaling, \"gray\");\r\n }\r\n };\r\n\r\n Face.prototype.printFront = function(n, pov, scaling) {\r\n var mark, _i, _len, _ref, _results;\r\n if (this.normal.facing(pov)) {\r\n this.fill(n, pov, scaling, \"white\");\r\n _ref = this.marks;\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n mark = _ref[_i];\r\n _results.push(mark.fill(n, pov, scaling, \"gray\"));\r\n }\r\n return _results;\r\n }\r\n };\r\n\r\n Face.prototype.accentuate = function(n, pov, scaling) {\r\n var mark, _i, _len, _ref, _results;\r\n if (this.normal.facing(pov)) {\r\n this.fill(n, pov, scaling, \"chartreuse\");\r\n _ref = this.marks;\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n mark = _ref[_i];\r\n _results.push(mark.fill(n, pov, scaling, \"darkgray\"));\r\n }\r\n return _results;\r\n }\r\n };\r\n\r\n Face.prototype.describe = function() {\r\n var point, _i, _len, _ref;\r\n _ref = this.ar;\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n point = _ref[_i];\r\n point.describe();\r\n }\r\n return this.normal.ar[1].describe();\r\n };\r\n\r\n Face.prototype.sanitize = function() {\r\n var f, p, point, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2;\r\n _ref = this.ar;\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n point = _ref[_i];\r\n point.sanitize();\r\n }\r\n _ref1 = this.marks;\r\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\r\n f = _ref1[_j];\r\n _ref2 = f.ar;\r\n for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {\r\n p = _ref2[_k];\r\n p.sanitize();\r\n }\r\n }\r\n return this.normal.ar[1].sanitize();\r\n };\r\n\r\n Face.prototype.translate = function(x, y, z) {\r\n var f, p, point, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2;\r\n _ref = this.ar;\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n point = _ref[_i];\r\n point.translate(x, y, z);\r\n }\r\n _ref1 = this.marks;\r\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\r\n f = _ref1[_j];\r\n _ref2 = f.ar;\r\n for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {\r\n p = _ref2[_k];\r\n p.translate(x, y, z);\r\n }\r\n }\r\n return this.normal.ar[1].translate(x, y, z);\r\n };\r\n\r\n Face.prototype.preSpin = function(axis, rad) {\r\n var p, _i, _len, _ref;\r\n _ref = this.markVertices;\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n p = _ref[_i];\r\n p.spin(axis, rad);\r\n }\r\n return this.normal.ar[1].spin(axis, rad);\r\n };\r\n\r\n Face.prototype.preTranslate = function(x, y, z) {\r\n var point, _i, _len, _ref;\r\n _ref = this.markVertices;\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n point = _ref[_i];\r\n point.translate(x, y, z);\r\n }\r\n return this.normal.ar[1].translate(x, y, z);\r\n };\r\n\r\n Face.prototype.spin = function(axis, rad) {\r\n var f, p, _i, _j, _len, _len1, _ref, _ref1, _results;\r\n _ref = this.ar;\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n p = _ref[_i];\r\n p.spin(axis, rad);\r\n }\r\n this.normal.ar[1].spin(axis, rad);\r\n _ref1 = this.marks;\r\n _results = [];\r\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\r\n f = _ref1[_j];\r\n _results.push(f.spin(axis, rad));\r\n }\r\n return _results;\r\n };\r\n\r\n Face.prototype.extremity = function(pov) {\r\n var dim, ext, point, scr, _i, _j, _len, _len1, _ref;\r\n ext = 0;\r\n _ref = this.ar;\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n point = _ref[_i];\r\n scr = point.screenPoint(pov);\r\n for (_j = 0, _len1 = scr.length; _j < _len1; _j++) {\r\n dim = scr[_j];\r\n if (dim > ext) {\r\n ext = dim;\r\n }\r\n }\r\n }\r\n return ext;\r\n };\r\n\r\n Face.prototype.getTops = function() {\r\n var point, topX, topY, topZ, _i, _len, _ref;\r\n topX = 1000;\r\n topY = 1000;\r\n topZ = 1000;\r\n _ref = this.ar;\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n point = _ref[_i];\r\n if (point.ar[0] < topX) {\r\n topX = point.ar[0];\r\n }\r\n if (point.ar[1] < topY) {\r\n topY = point.ar[1];\r\n }\r\n if (point.ar[2] < topZ) {\r\n topZ = point.ar[2];\r\n }\r\n }\r\n return [topX, topY, topZ];\r\n };\r\n\r\n Face.prototype.getBoundingCube = function() {\r\n var point, x0, x1, y0, y1, z0, z1, _i, _len, _ref;\r\n x0 = 1000;\r\n y0 = 1000;\r\n z0 = 1000;\r\n x1 = -1000;\r\n y1 = -1000;\r\n z1 = -1000;\r\n _ref = this.ar;\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n point = _ref[_i];\r\n if (point.ar[0] < x0) {\r\n x0 = point.ar[0];\r\n }\r\n if (point.ar[1] < y0) {\r\n y0 = point.ar[1];\r\n }\r\n if (point.ar[2] < z0) {\r\n z0 = point.ar[2];\r\n }\r\n if (point.ar[0] > x1) {\r\n x1 = point.ar[0];\r\n }\r\n if (point.ar[1] > y1) {\r\n y1 = point.ar[1];\r\n }\r\n if (point.ar[2] > z1) {\r\n z1 = point.ar[2];\r\n }\r\n }\r\n return [[x0, y0, z0], [x1, y1, z1]];\r\n };\r\n\r\n Face.prototype.imposter = function() {\r\n var result;\r\n result = this.clone();\r\n result.marks = [];\r\n result.getMarks();\r\n return result;\r\n };\r\n\r\n Face.prototype.populateMainMarkVertices = function() {\r\n var p, _i, _len, _ref, _results;\r\n _ref = this.ar;\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n p = _ref[_i];\r\n _results.push(this.markVertices.push(p));\r\n }\r\n return _results;\r\n };\r\n\r\n Face.prototype.populateMidRectVertices = function() {\r\n var i, j, l, x, y, z, _i, _ref;\r\n l = this.ar.length;\r\n for (i = _i = 0, _ref = l - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\r\n j = i + 1;\r\n if (j >= l) {\r\n j = 0;\r\n }\r\n x = (this.ar[i].ar[0] + this.ar[j].ar[0]) / 2;\r\n y = (this.ar[i].ar[1] + this.ar[j].ar[1]) / 2;\r\n z = (this.ar[i].ar[2] + this.ar[j].ar[2]) / 2;\r\n this.markVertices.push(new Point([x, y, z]));\r\n }\r\n x = (this.ar[0].ar[0] + this.ar[2].ar[0]) / 2;\r\n y = (this.ar[0].ar[1] + this.ar[2].ar[1]) / 2;\r\n z = (this.ar[0].ar[2] + this.ar[2].ar[2]) / 2;\r\n return this.markVertices.push(new Point([x, y, z]));\r\n };\r\n\r\n Face.prototype.addMark = function(list) {\r\n var l, points, _i, _len;\r\n points = [];\r\n for (_i = 0, _len = list.length; _i < _len; _i++) {\r\n l = list[_i];\r\n points.push(this.markVertices[l]);\r\n }\r\n return this.marks.push(new Face(points));\r\n };\r\n\r\n Face.prototype.getRectMarks = function(index) {\r\n var rand;\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n this.populateMidRectVertices();\r\n rand = Math.random();\r\n if (rand < 0.1) {\r\n this.addMark([0, 1, 2]);\r\n return this.type = 2 + index;\r\n } else if (rand < 0.2) {\r\n this.addMark([1, 2, 3]);\r\n return this.type = 2 + index;\r\n } else if (rand < 0.3) {\r\n this.addMark([2, 3, 0]);\r\n return this.type = 2 + index;\r\n } else if (rand < 0.4) {\r\n this.addMark([3, 0, 1]);\r\n return this.type = 2 + index;\r\n } else if (rand < 0.5) {\r\n this.addMark([0, 4, 8, 7]);\r\n return this.type = 1 + index;\r\n } else if (rand < 0.6) {\r\n this.addMark([1, 5, 8, 4]);\r\n return this.type = 1 + index;\r\n } else if (rand < 0.7) {\r\n this.addMark([2, 6, 8, 5]);\r\n return this.type = 1 + index;\r\n } else if (rand < 0.8) {\r\n this.addMark([3, 7, 8, 6]);\r\n return this.type = 1 + index;\r\n } else if (rand < 0.9) {\r\n this.type = 3 + index;\r\n return this.addMark([0, 1, 1, 2, 3]);\r\n } else {\r\n return this.type = 0 + index;\r\n }\r\n };\r\n\r\n Face.prototype.twist = function(rad) {\r\n var x, y, z;\r\n x = this.ar[0].ar[0];\r\n y = this.ar[0].ar[1];\r\n z = this.ar[0].ar[2];\r\n return this.spin([[x, y, z], [x, y, z + 10]], rad);\r\n };\r\n\r\n Face.prototype.getCenter = function() {\r\n var i, l, x, y, z, _i, _ref;\r\n x = 0;\r\n y = 0;\r\n z = 0;\r\n l = this.ar.length;\r\n for (i = _i = 0, _ref = l - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\r\n x += this.ar[i].ar[0];\r\n y += this.ar[i].ar[1];\r\n z += this.ar[i].ar[2];\r\n }\r\n x = x / l;\r\n y = y / l;\r\n z = z / l;\r\n return [x, y, z];\r\n };\r\n\r\n Face.prototype.populateInnerMarkVertices = function() {\r\n var center, delta, draw, i, j, l, result, start, _i, _j, _results;\r\n center = this.getCenter();\r\n draw = 0.5;\r\n l = this.ar.length - 1;\r\n _results = [];\r\n for (i = _i = 0; 0 <= l ? _i <= l : _i >= l; i = 0 <= l ? ++_i : --_i) {\r\n result = [];\r\n for (j = _j = 0; _j <= 2; j = ++_j) {\r\n start = this.ar[i].ar[j];\r\n delta = start - center[j];\r\n result.push(start - delta * draw);\r\n }\r\n _results.push(this.markVertices.push(new Point(result)));\r\n }\r\n return _results;\r\n };\r\n\r\n return Face;\r\n\r\n })(Queue);\r\n\r\n ProtoRect = (function(_super) {\r\n __extends(ProtoRect, _super);\r\n\r\n function ProtoRect(x, y, x1, y1) {\r\n ProtoRect.__super__.constructor.call(this, [new Point([x, y]), new Point([x + x1, y]), new Point([x + x1, y + y1]), new Point([x, y + y1])]);\r\n this.getMarks();\r\n }\r\n\r\n ProtoRect.prototype.clone = function() {\r\n var result;\r\n result = new ProtoRect(0, 0, 1, 1);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n ProtoRect.prototype.getMarks = function() {\r\n return this.getRectMarks(4);\r\n };\r\n\r\n return ProtoRect;\r\n\r\n })(Face);\r\n\r\n Square = (function(_super) {\r\n __extends(Square, _super);\r\n\r\n function Square(x, y) {\r\n Square.__super__.constructor.call(this, x, y, 1, 1);\r\n }\r\n\r\n Square.prototype.getMarks = function() {\r\n return this.getRectMarks(0);\r\n };\r\n\r\n Square.prototype.clone = function() {\r\n var result;\r\n result = new Square(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n return Square;\r\n\r\n })(ProtoRect);\r\n\r\n DblMarkSquare = (function(_super) {\r\n __extends(DblMarkSquare, _super);\r\n\r\n function DblMarkSquare(x, y) {\r\n DblMarkSquare.__super__.constructor.call(this, x, y, 1, 1);\r\n }\r\n\r\n DblMarkSquare.prototype.getMarks = function() {\r\n var rand, x, y, z;\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n this.populateMidRectVertices();\r\n x = (this.ar[0].ar[0] + this.ar[2].ar[0]) / 2;\r\n y = (this.ar[0].ar[1] + this.ar[2].ar[1]) / 2;\r\n z = (this.ar[0].ar[2] + this.ar[2].ar[2]) / 2;\r\n this.markVertices.push(new Point([x, y, z]));\r\n rand = Math.random();\r\n if (rand < 0.2) {\r\n this.addMark([0, 4, 8, 7]);\r\n this.addMark([2, 6, 9, 5]);\r\n return this.type = 34;\r\n } else if (rand < 0.4) {\r\n this.addMark([4, 1, 5, 8]);\r\n this.addMark([6, 3, 7, 9]);\r\n return this.type = 34;\r\n } else if (rand < 0.6) {\r\n this.addMark([0, 1, 8]);\r\n this.addMark([2, 3, 9]);\r\n return this.type = 35;\r\n } else if (rand < 0.8) {\r\n this.addMark([1, 2, 8]);\r\n this.addMark([3, 0, 9]);\r\n return this.type = 35;\r\n } else if (rand < 0.9) {\r\n this.type = 3;\r\n return this.addMark([0, 1, 1, 2, 3]);\r\n } else {\r\n return this.type = 0;\r\n }\r\n };\r\n\r\n DblMarkSquare.prototype.clone = function() {\r\n var result;\r\n result = new DblMarkSquare(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n return DblMarkSquare;\r\n\r\n })(ProtoRect);\r\n\r\n SquareDiamond = (function(_super) {\r\n __extends(SquareDiamond, _super);\r\n\r\n function SquareDiamond(x, y) {\r\n SquareDiamond.__super__.constructor.call(this, x, y, 1, 1);\r\n }\r\n\r\n SquareDiamond.prototype.getMarks = function() {\r\n var rand;\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n this.populateMidRectVertices();\r\n rand = Math.random();\r\n if (rand < 0.15) {\r\n this.addMark([0, 1, 8]);\r\n return this.type = 24;\r\n } else if (rand < 0.3) {\r\n this.addMark([1, 2, 8]);\r\n return this.type = 24;\r\n } else if (rand < 0.45) {\r\n this.addMark([2, 3, 8]);\r\n return this.type = 24;\r\n } else if (rand < 0.6) {\r\n this.addMark([3, 0, 8]);\r\n return this.type = 24;\r\n } else if (rand < 0.8) {\r\n this.type = 3;\r\n return this.addMark([0, 1, 1, 2, 3]);\r\n } else {\r\n return this.type = 0;\r\n }\r\n };\r\n\r\n SquareDiamond.prototype.clone = function() {\r\n var result;\r\n result = new SquareDiamond(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n return SquareDiamond;\r\n\r\n })(ProtoRect);\r\n\r\n DieFace = (function(_super) {\r\n __extends(DieFace, _super);\r\n\r\n function DieFace(x, y) {\r\n DieFace.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 1, y]), new Point([x + 1, y + 1]), new Point([x, y + 1])]);\r\n }\r\n\r\n DieFace.prototype.getMarks = function() {\r\n return this.addDieSpots(randInt(6) + 1);\r\n };\r\n\r\n DieFace.prototype.clone = function() {\r\n var result;\r\n result = new DieFace(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n DieFace.prototype.addDieSpots = function(spots) {\r\n var deltaHX, deltaHY, deltaHZ, deltaVX, deltaVY, deltaVZ, i, j, pushVertexArray, start, vertexArrays, x, y, z, _i, _j, _k, _l;\r\n this.markVertices = [];\r\n deltaHX = this.ar[1].ar[0] - this.ar[0].ar[0];\r\n deltaHY = this.ar[1].ar[1] - this.ar[0].ar[1];\r\n deltaHZ = this.ar[1].ar[2] - this.ar[0].ar[2];\r\n deltaVX = this.ar[3].ar[0] - this.ar[0].ar[0];\r\n deltaVY = this.ar[3].ar[1] - this.ar[0].ar[1];\r\n deltaVZ = this.ar[3].ar[2] - this.ar[0].ar[2];\r\n for (i = _i = 0; _i <= 5; i = ++_i) {\r\n x = this.ar[0].ar[0] + deltaVX / 7 * (i + 1);\r\n y = this.ar[0].ar[1] + deltaVY / 7 * (i + 1);\r\n z = this.ar[0].ar[2] + deltaVZ / 7 * (i + 1);\r\n for (j = _j = 0; _j <= 5; j = ++_j) {\r\n x += deltaHX / 7;\r\n y += deltaHY / 7;\r\n z += deltaHZ / 7;\r\n this.markVertices.push(new Point([x, y, z]));\r\n }\r\n }\r\n vertexArrays = [];\r\n for (i = _k = 0; _k <= 2; i = ++_k) {\r\n for (j = _l = 0; _l <= 2; j = ++_l) {\r\n start = 12 * i + 2 * j;\r\n vertexArrays.push([start, start + 1, start + 7, start + 6]);\r\n }\r\n }\r\n pushVertexArray = (function(_this) {\r\n return function(vertexArray) {\r\n var n, _len, _m, _results;\r\n _results = [];\r\n for (_m = 0, _len = vertexArray.length; _m < _len; _m++) {\r\n n = vertexArray[_m];\r\n _results.push(_this.addMark(vertexArrays[n]));\r\n }\r\n return _results;\r\n };\r\n })(this);\r\n switch (spots) {\r\n case 1:\r\n this.type = 1;\r\n return pushVertexArray([4]);\r\n case 2:\r\n this.type = 2;\r\n return pushVertexArray([2, 6]);\r\n case 3:\r\n this.type = 3;\r\n return pushVertexArray([0, 4, 8]);\r\n case 4:\r\n this.type = 4;\r\n return pushVertexArray([0, 2, 6, 8]);\r\n case 5:\r\n this.type = 5;\r\n return pushVertexArray([0, 2, 4, 6, 8]);\r\n case 6:\r\n this.type = 6;\r\n return pushVertexArray([0, 2, 3, 5, 6, 8]);\r\n }\r\n };\r\n\r\n return DieFace;\r\n\r\n })(Face);\r\n\r\n FourSquare = (function(_super) {\r\n __extends(FourSquare, _super);\r\n\r\n function FourSquare(x, y) {\r\n FourSquare.__super__.constructor.call(this, x, y, 4, 4);\r\n }\r\n\r\n FourSquare.prototype.getMarks = function() {\r\n return this.type = 14;\r\n };\r\n\r\n FourSquare.prototype.clone = function() {\r\n var result;\r\n result = new FourSquare(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n return FourSquare;\r\n\r\n })(ProtoRect);\r\n\r\n TwoSquare = (function(_super) {\r\n __extends(TwoSquare, _super);\r\n\r\n function TwoSquare(x, y) {\r\n TwoSquare.__super__.constructor.call(this, x, y, 2, 2);\r\n }\r\n\r\n TwoSquare.prototype.getMarks = function() {\r\n return this.getRectMarks(0);\r\n };\r\n\r\n return TwoSquare;\r\n\r\n })(ProtoRect);\r\n\r\n SquareFor12 = (function(_super) {\r\n __extends(SquareFor12, _super);\r\n\r\n function SquareFor12() {\r\n return SquareFor12.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n SquareFor12.prototype.clone = function() {\r\n var result;\r\n result = new SquareFor12(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n SquareFor12.prototype.getMarks = function() {\r\n var rand;\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n this.populateMidRectVertices();\r\n rand = Math.random();\r\n if (rand < 0.15) {\r\n this.addMark([0, 1, 2]);\r\n return this.type = 2;\r\n } else if (rand < 0.3) {\r\n this.addMark([1, 2, 3]);\r\n return this.type = 2;\r\n } else if (rand < 0.45) {\r\n this.addMark([2, 3, 0]);\r\n return this.type = 2;\r\n } else if (rand < 0.6) {\r\n this.addMark([3, 0, 1]);\r\n return this.type = 2;\r\n } else if (rand < 0.8) {\r\n this.type = 3;\r\n return this.addMark([0, 1, 1, 2, 3]);\r\n } else {\r\n return this.type = 0;\r\n }\r\n };\r\n\r\n return SquareFor12;\r\n\r\n })(TwoSquare);\r\n\r\n BlankSquare = (function(_super) {\r\n __extends(BlankSquare, _super);\r\n\r\n function BlankSquare() {\r\n return BlankSquare.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n BlankSquare.prototype.clone = function() {\r\n var result;\r\n result = new BlankSquare(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n BlankSquare.prototype.getMarks = function() {\r\n var rand;\r\n rand = Math.random();\r\n if (rand < 0.5) {\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n this.type = 3;\r\n return this.addMark([0, 1, 1, 2, 3]);\r\n } else {\r\n return this.type = 0;\r\n }\r\n };\r\n\r\n return BlankSquare;\r\n\r\n })(Square);\r\n\r\n StripedSquare = (function(_super) {\r\n __extends(StripedSquare, _super);\r\n\r\n function StripedSquare() {\r\n return StripedSquare.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n StripedSquare.prototype.clone = function() {\r\n var result;\r\n result = new StripedSquare(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n StripedSquare.prototype.getMarks = function() {\r\n var rand;\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n this.populateMidRectVertices();\r\n rand = Math.random();\r\n if (rand < 0.15) {\r\n this.addMark([0, 1, 5, 7]);\r\n return this.type = 23;\r\n } else if (rand < 0.3) {\r\n this.addMark([1, 2, 6, 4]);\r\n return this.type = 23;\r\n } else if (rand < 0.45) {\r\n this.addMark([2, 3, 7, 5]);\r\n return this.type = 23;\r\n } else if (rand < 0.6) {\r\n this.addMark([3, 0, 4, 6]);\r\n return this.type = 23;\r\n } else if (rand < 0.8) {\r\n this.type = 3;\r\n return this.addMark([0, 1, 1, 2, 3]);\r\n } else {\r\n return this.type = 0;\r\n }\r\n };\r\n\r\n return StripedSquare;\r\n\r\n })(Square);\r\n\r\n HorizRect = (function(_super) {\r\n __extends(HorizRect, _super);\r\n\r\n function HorizRect(x, y) {\r\n HorizRect.__super__.constructor.call(this, x, y, 2, 1);\r\n }\r\n\r\n return HorizRect;\r\n\r\n })(ProtoRect);\r\n\r\n StripedRect = (function(_super) {\r\n __extends(StripedRect, _super);\r\n\r\n function StripedRect() {\r\n return StripedRect.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n StripedRect.prototype.clone = function() {\r\n var result;\r\n result = new StripedRect(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n StripedRect.prototype.getMarks = function() {\r\n var rand;\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n rand = Math.random();\r\n if (rand < 0.15) {\r\n this.addMark([0, 1, 2]);\r\n return this.type = 30;\r\n } else if (rand < 0.3) {\r\n this.addMark([1, 2, 3]);\r\n return this.type = 30;\r\n } else if (rand < 0.45) {\r\n this.addMark([2, 3, 0]);\r\n return this.type = 30;\r\n } else if (rand < 0.6) {\r\n this.addMark([3, 0, 1]);\r\n return this.type = 30;\r\n } else if (rand < 0.8) {\r\n this.type = 7;\r\n return this.addMark([0, 1, 1, 2, 3]);\r\n } else {\r\n return this.type = 4;\r\n }\r\n };\r\n\r\n return StripedRect;\r\n\r\n })(HorizRect);\r\n\r\n TippedRect = (function(_super) {\r\n __extends(TippedRect, _super);\r\n\r\n function TippedRect() {\r\n return TippedRect.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n TippedRect.prototype.clone = function() {\r\n var result;\r\n result = new TippedRect(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n TippedRect.prototype.getMarks = function() {\r\n var rand;\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n this.populateMidRectVertices();\r\n rand = Math.random();\r\n if (rand < 0.1) {\r\n this.addMark([0, 1, 2]);\r\n return this.type = 30;\r\n } else if (rand < 0.2) {\r\n this.addMark([1, 2, 3]);\r\n return this.type = 30;\r\n } else if (rand < 0.3) {\r\n this.addMark([2, 3, 0]);\r\n return this.type = 30;\r\n } else if (rand < 0.4) {\r\n this.addMark([3, 0, 1]);\r\n return this.type = 30;\r\n } else if (rand < 0.5) {\r\n this.addMark([0, 4, 7]);\r\n return this.type = 33;\r\n } else if (rand < 0.6) {\r\n this.addMark([1, 5, 4]);\r\n return this.type = 33;\r\n } else if (rand < 0.7) {\r\n this.addMark([2, 6, 5]);\r\n return this.type = 33;\r\n } else if (rand < 0.8) {\r\n this.addMark([3, 7, 6]);\r\n return this.type = 33;\r\n } else if (rand < 0.9) {\r\n this.type = 7;\r\n return this.addMark([0, 1, 1, 2, 3]);\r\n } else {\r\n return this.type = 4;\r\n }\r\n };\r\n\r\n return TippedRect;\r\n\r\n })(HorizRect);\r\n\r\n InnerRect = (function(_super) {\r\n __extends(InnerRect, _super);\r\n\r\n function InnerRect() {\r\n return InnerRect.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n InnerRect.prototype.clone = function() {\r\n var result;\r\n result = new InnerRect(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n InnerRect.prototype.getMarks = function() {\r\n var rand;\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n this.populateInnerMarkVertices();\r\n rand = Math.random();\r\n if (rand < 0.3) {\r\n this.type = 28;\r\n return this.addMark([4, 5, 6, 7]);\r\n } else if (rand < 0.5) {\r\n this.type = 7;\r\n return this.addMark([0, 1, 1, 2, 3]);\r\n } else {\r\n return this.type = 0;\r\n }\r\n };\r\n\r\n return InnerRect;\r\n\r\n })(HorizRect);\r\n\r\n DiagonalRect = (function(_super) {\r\n __extends(DiagonalRect, _super);\r\n\r\n function DiagonalRect(x, y) {\r\n DiagonalRect.__super__.constructor.call(this, x, y, 1, Math.sqrt(2));\r\n }\r\n\r\n return DiagonalRect;\r\n\r\n })(ProtoRect);\r\n\r\n HorizRectThree = (function(_super) {\r\n __extends(HorizRectThree, _super);\r\n\r\n function HorizRectThree(x, y) {\r\n HorizRectThree.__super__.constructor.call(this, x, y, 3, 1);\r\n }\r\n\r\n return HorizRectThree;\r\n\r\n })(ProtoRect);\r\n\r\n VertRectThree = (function(_super) {\r\n __extends(VertRectThree, _super);\r\n\r\n function VertRectThree(x, y) {\r\n VertRectThree.__super__.constructor.call(this, x, y, 1, 3);\r\n }\r\n\r\n return VertRectThree;\r\n\r\n })(ProtoRect);\r\n\r\n HorizRectFour = (function(_super) {\r\n __extends(HorizRectFour, _super);\r\n\r\n function HorizRectFour(x, y) {\r\n HorizRectFour.__super__.constructor.call(this, x, y, 4, 1);\r\n }\r\n\r\n return HorizRectFour;\r\n\r\n })(ProtoRect);\r\n\r\n VertRectFour = (function(_super) {\r\n __extends(VertRectFour, _super);\r\n\r\n function VertRectFour(x, y) {\r\n VertRectFour.__super__.constructor.call(this, x, y, 1, 4);\r\n }\r\n\r\n return VertRectFour;\r\n\r\n })(ProtoRect);\r\n\r\n VertRect = (function(_super) {\r\n __extends(VertRect, _super);\r\n\r\n function VertRect(x, y) {\r\n VertRect.__super__.constructor.call(this, x, y, 1, 2);\r\n }\r\n\r\n return VertRect;\r\n\r\n })(ProtoRect);\r\n\r\n Triangle = (function(_super) {\r\n __extends(Triangle, _super);\r\n\r\n function Triangle(x, y) {\r\n Triangle.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 2, y + 2]), new Point([x - 2, y + 2])]);\r\n this.reorient();\r\n this.getMarks();\r\n }\r\n\r\n Triangle.prototype.reorient = function() {};\r\n\r\n Triangle.prototype.getMarks = function() {\r\n var i, j, rand, x, y, z, _i;\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n for (i = _i = 0; _i <= 2; i = ++_i) {\r\n j = i + 1;\r\n if (i === 2) {\r\n j = 0;\r\n }\r\n x = (this.ar[i].ar[0] + this.ar[j].ar[0]) / 2;\r\n y = (this.ar[i].ar[1] + this.ar[j].ar[1]) / 2;\r\n z = (this.ar[i].ar[2] + this.ar[j].ar[2]) / 2;\r\n this.markVertices.push(new Point([x, y, z]));\r\n }\r\n rand = Math.random();\r\n if (rand < 0.25) {\r\n this.type = 15;\r\n return this.addMark([0, 1, 4]);\r\n } else if (rand < 0.5) {\r\n this.type = 15;\r\n return this.addMark([0, 4, 2]);\r\n } else if (rand < 0.75) {\r\n this.type = 16;\r\n return this.addMark([0, 1, 1, 2]);\r\n } else {\r\n return this.type = 17;\r\n }\r\n };\r\n\r\n Triangle.prototype.clone = function() {\r\n var result;\r\n result = new Triangle(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n return Triangle;\r\n\r\n })(Face);\r\n\r\n InnerTriangle = (function(_super) {\r\n __extends(InnerTriangle, _super);\r\n\r\n function InnerTriangle(x, y) {\r\n InnerTriangle.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 2, y]), new Point([x + 1, y + 2])]);\r\n this.reorient();\r\n this.getMarks();\r\n }\r\n\r\n InnerTriangle.prototype.reorient = function() {};\r\n\r\n InnerTriangle.prototype.getMarks = function() {\r\n var rand;\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n this.populateInnerMarkVertices();\r\n rand = Math.random();\r\n if (rand < 0.3) {\r\n this.type = 29;\r\n return this.addMark([3, 4, 5]);\r\n } else if (rand < 0.5) {\r\n this.type = 16;\r\n return this.addMark([0, 1, 1, 2]);\r\n } else {\r\n return this.type = 17;\r\n }\r\n };\r\n\r\n InnerTriangle.prototype.clone = function() {\r\n var result;\r\n result = new InnerTriangle(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n return InnerTriangle;\r\n\r\n })(Face);\r\n\r\n InnerTriangleInv = (function(_super) {\r\n __extends(InnerTriangleInv, _super);\r\n\r\n function InnerTriangleInv() {\r\n return InnerTriangleInv.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n InnerTriangleInv.prototype.reorient = function() {\r\n var x, y, z;\r\n x = this.ar[0].ar[0];\r\n y = this.ar[0].ar[1];\r\n z = this.ar[0].ar[2];\r\n return this.spin([[x, y, z], [x, y, z + 10]], Math.PI);\r\n };\r\n\r\n return InnerTriangleInv;\r\n\r\n })(InnerTriangle);\r\n\r\n TriangleSideways = (function(_super) {\r\n __extends(TriangleSideways, _super);\r\n\r\n function TriangleSideways() {\r\n return TriangleSideways.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n TriangleSideways.prototype.reorient = function() {\r\n var x1, y1, z1;\r\n x1 = this.ar[0].ar[0];\r\n y1 = this.ar[0].ar[1];\r\n z1 = this.ar[0].ar[2];\r\n return this.spin([[x1, y1, z1], [x1, y1, z1 + 10]], Math.PI / 2);\r\n };\r\n\r\n return TriangleSideways;\r\n\r\n })(Triangle);\r\n\r\n BlankTriangle = (function(_super) {\r\n __extends(BlankTriangle, _super);\r\n\r\n function BlankTriangle() {\r\n return BlankTriangle.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n BlankTriangle.prototype.clone = function() {\r\n var result;\r\n result = new BlankTriangle(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n BlankTriangle.prototype.getMarks = function() {\r\n var rand;\r\n rand = Math.random();\r\n if (rand < 0.5) {\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n this.type = 16;\r\n return this.addMark([0, 1, 1, 2]);\r\n } else {\r\n return this.type = 17;\r\n }\r\n };\r\n\r\n return BlankTriangle;\r\n\r\n })(Triangle);\r\n\r\n BlankTriangleInv1 = (function(_super) {\r\n __extends(BlankTriangleInv1, _super);\r\n\r\n function BlankTriangleInv1() {\r\n return BlankTriangleInv1.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n BlankTriangleInv1.prototype.reorient = function() {\r\n var x1, y1, z1;\r\n x1 = this.ar[0].ar[0];\r\n y1 = this.ar[0].ar[1];\r\n z1 = this.ar[0].ar[2];\r\n return this.spin([[x1, y1, z1], [x1, y1, z1 + 10]], Math.PI / 2);\r\n };\r\n\r\n return BlankTriangleInv1;\r\n\r\n })(BlankTriangle);\r\n\r\n BlankTriangleInv2 = (function(_super) {\r\n __extends(BlankTriangleInv2, _super);\r\n\r\n function BlankTriangleInv2() {\r\n return BlankTriangleInv2.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n BlankTriangleInv2.prototype.reorient = function() {\r\n var x1, y1, z1;\r\n x1 = this.ar[0].ar[0];\r\n y1 = this.ar[0].ar[1];\r\n z1 = this.ar[0].ar[2];\r\n return this.spin([[x1, y1, z1], [x1, y1, z1 + 10]], Math.PI);\r\n };\r\n\r\n return BlankTriangleInv2;\r\n\r\n })(BlankTriangle);\r\n\r\n BlankTriangleInv3 = (function(_super) {\r\n __extends(BlankTriangleInv3, _super);\r\n\r\n function BlankTriangleInv3() {\r\n return BlankTriangleInv3.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n BlankTriangleInv3.prototype.reorient = function() {\r\n var x1, y1, z1;\r\n x1 = this.ar[0].ar[0];\r\n y1 = this.ar[0].ar[1];\r\n z1 = this.ar[0].ar[2];\r\n return this.spin([[x1, y1, z1], [x1, y1, z1 + 10]], -Math.PI / 2);\r\n };\r\n\r\n return BlankTriangleInv3;\r\n\r\n })(BlankTriangle);\r\n\r\n Pentagon = (function(_super) {\r\n __extends(Pentagon, _super);\r\n\r\n function Pentagon(x, y) {\r\n var i, j, z, _i, _j;\r\n Pentagon.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 1, y]), new Point([x + 2, y]), new Point([x + 3, y]), new Point([x + 4, y])]);\r\n for (i = _i = 0; _i <= 2; i = ++_i) {\r\n x = this.ar[3 - i].ar[0];\r\n y = this.ar[3 - i].ar[1];\r\n z = this.ar[3 - i].ar[2];\r\n for (j = _j = 0; 0 <= i ? _j <= i : _j >= i; j = 0 <= i ? ++_j : --_j) {\r\n this.ar[4 - j].spin([[x, y, z], [x, y, z + 10]], -Math.PI * 2 / 5);\r\n }\r\n }\r\n this.reorient();\r\n this.getMarks();\r\n }\r\n\r\n Pentagon.prototype.reorient = function() {};\r\n\r\n Pentagon.prototype.getMarks = function() {\r\n var i, rand, x, y, z, _i, _ref;\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n x = 0;\r\n y = 0;\r\n z = 0;\r\n for (i = _i = 0, _ref = this.ar.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\r\n x += this.ar[i].ar[0];\r\n y += this.ar[i].ar[1];\r\n z += this.ar[i].ar[2];\r\n }\r\n x = x / 5;\r\n y = y / 5;\r\n z = z / 5;\r\n this.markVertices.push(new Point([x, y, z]));\r\n rand = Math.random();\r\n if (rand < 0.1) {\r\n this.type = 18;\r\n return this.addMark([0, 1, 5]);\r\n } else if (rand < 0.2) {\r\n this.type = 18;\r\n return this.addMark([1, 2, 5]);\r\n } else if (rand < 0.3) {\r\n this.type = 18;\r\n return this.addMark([2, 3, 5]);\r\n } else if (rand < 0.4) {\r\n this.type = 18;\r\n return this.addMark([3, 4, 5]);\r\n } else if (rand < 0.5) {\r\n this.type = 18;\r\n return this.addMark([4, 0, 5]);\r\n } else if (rand < 0.7) {\r\n this.type = 19;\r\n return this.addMark([0, 1, 2, 2, 3, 4]);\r\n } else {\r\n return this.type = 20;\r\n }\r\n };\r\n\r\n Pentagon.prototype.clone = function() {\r\n var result;\r\n result = new Pentagon(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n return Pentagon;\r\n\r\n })(Face);\r\n\r\n VertPentagon = (function(_super) {\r\n __extends(VertPentagon, _super);\r\n\r\n function VertPentagon(x, y) {\r\n var i, j, z, _i, _j;\r\n VertPentagon.__super__.constructor.call(this, [new Point([x, y]), new Point([x, y + 1]), new Point([x, y + 2]), new Point([x, y + 3]), new Point([x, y + 4])]);\r\n for (i = _i = 0; _i <= 2; i = ++_i) {\r\n x = this.ar[3 - i].ar[0];\r\n y = this.ar[3 - i].ar[1];\r\n z = this.ar[3 - i].ar[2];\r\n for (j = _j = 0; 0 <= i ? _j <= i : _j >= i; j = 0 <= i ? ++_j : --_j) {\r\n this.ar[4 - j].spin([[x, y, z], [x, y, z + 10]], -Math.PI * 2 / 5);\r\n }\r\n }\r\n this.reorient();\r\n this.getMarks();\r\n }\r\n\r\n VertPentagon.prototype.reorient = function() {};\r\n\r\n VertPentagon.prototype.getMarks = function() {\r\n var rand;\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n this.populateMidRectVertices();\r\n rand = Math.random();\r\n if (rand < 0.05) {\r\n this.type = 31;\r\n return this.addMark([0, 1, 2, 7]);\r\n } else if (rand < 0.1) {\r\n this.type = 31;\r\n return this.addMark([0, 4, 3, 7]);\r\n } else if (rand < 0.15) {\r\n this.type = 31;\r\n return this.addMark([1, 2, 3, 8]);\r\n } else if (rand < 0.2) {\r\n this.type = 31;\r\n return this.addMark([1, 0, 4, 8]);\r\n } else if (rand < 0.25) {\r\n this.type = 31;\r\n return this.addMark([2, 3, 4, 9]);\r\n } else if (rand < 0.3) {\r\n this.type = 31;\r\n return this.addMark([2, 1, 0, 9]);\r\n } else if (rand < 0.35) {\r\n this.type = 31;\r\n return this.addMark([3, 4, 0, 5]);\r\n } else if (rand < 0.4) {\r\n this.type = 31;\r\n return this.addMark([3, 2, 1, 5]);\r\n } else if (rand < 0.45) {\r\n this.type = 31;\r\n return this.addMark([4, 0, 1, 6]);\r\n } else if (rand < 0.5) {\r\n this.type = 31;\r\n return this.addMark([4, 3, 2, 6]);\r\n } else if (rand < 0.75) {\r\n this.type = 19;\r\n return this.addMark([0, 1, 2, 2, 3, 4]);\r\n } else {\r\n return this.type = 20;\r\n }\r\n };\r\n\r\n VertPentagon.prototype.clone = function() {\r\n var result;\r\n result = new VertPentagon(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n return VertPentagon;\r\n\r\n })(Face);\r\n\r\n VertPentagonInv = (function(_super) {\r\n __extends(VertPentagonInv, _super);\r\n\r\n function VertPentagonInv(x, y) {\r\n VertPentagonInv.__super__.constructor.call(this, x, y);\r\n }\r\n\r\n VertPentagonInv.prototype.reorient = function() {\r\n var x1, y1, z1;\r\n x1 = this.ar[0].ar[0];\r\n y1 = this.ar[0].ar[1];\r\n z1 = this.ar[0].ar[2];\r\n return this.spin([[x1, y1, z1], [x1, y1, z1 + 10]], Math.PI);\r\n };\r\n\r\n return VertPentagonInv;\r\n\r\n })(VertPentagon);\r\n\r\n TwoPentagon = (function(_super) {\r\n __extends(TwoPentagon, _super);\r\n\r\n function TwoPentagon(x, y) {\r\n var i, j, z, _i, _j;\r\n TwoPentagon.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 2, y]), new Point([x + 4, y]), new Point([x + 6, y]), new Point([x + 8, y])]);\r\n for (i = _i = 0; _i <= 2; i = ++_i) {\r\n x = this.ar[3 - i].ar[0];\r\n y = this.ar[3 - i].ar[1];\r\n z = this.ar[3 - i].ar[2];\r\n for (j = _j = 0; 0 <= i ? _j <= i : _j >= i; j = 0 <= i ? ++_j : --_j) {\r\n this.ar[4 - j].spin([[x, y, z], [x, y, z + 10]], -Math.PI * 2 / 5);\r\n }\r\n }\r\n this.getMarks();\r\n }\r\n\r\n TwoPentagon.prototype.getMarks = function() {\r\n return this.type = 26;\r\n };\r\n\r\n TwoPentagon.prototype.clone = function() {\r\n var result;\r\n result = new TwoPentagon(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n return TwoPentagon;\r\n\r\n })(Face);\r\n\r\n HexSection = (function(_super) {\r\n __extends(HexSection, _super);\r\n\r\n function HexSection(x, y) {\r\n var z;\r\n HexSection.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 1, y]), new Point([x + 2, y])]);\r\n x = this.ar[1].ar[0];\r\n y = this.ar[1].ar[1];\r\n z = this.ar[1].ar[2];\r\n this.ar[2].spin([[x, y, z], [x, y, z + 10]], -Math.PI * 2 / 3);\r\n this.reorient();\r\n this.getMarks();\r\n }\r\n\r\n HexSection.prototype.reorient = function() {};\r\n\r\n HexSection.prototype.clone = function() {\r\n var result;\r\n result = new HexSection(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n HexSection.prototype.getMarks = function() {\r\n var rand;\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n rand = Math.random();\r\n if (rand < 0.5) {\r\n this.type = 21;\r\n return this.addMark([0, 1, 1, 2]);\r\n } else {\r\n return this.type = 22;\r\n }\r\n };\r\n\r\n return HexSection;\r\n\r\n })(Face);\r\n\r\n TippedHexSection = (function(_super) {\r\n __extends(TippedHexSection, _super);\r\n\r\n function TippedHexSection(x, y) {\r\n var z;\r\n TippedHexSection.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 2, y]), new Point([x + 4, y])]);\r\n x = this.ar[1].ar[0];\r\n y = this.ar[1].ar[1];\r\n z = this.ar[1].ar[2];\r\n this.ar[2].spin([[x, y, z], [x, y, z + 10]], -Math.PI * 2 / 3);\r\n this.reorient();\r\n this.getMarks();\r\n }\r\n\r\n TippedHexSection.prototype.reorient = function() {};\r\n\r\n TippedHexSection.prototype.clone = function() {\r\n var result;\r\n result = new TippedHexSection(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n TippedHexSection.prototype.getMarks = function() {\r\n var rand;\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n this.populateMidRectVertices();\r\n rand = Math.random();\r\n if (rand < 0.2) {\r\n this.type = 32;\r\n return this.addMark([0, 3, 5]);\r\n } else if (rand < 0.4) {\r\n this.type = 32;\r\n return this.addMark([1, 4, 3]);\r\n } else if (rand < 0.6) {\r\n this.type = 32;\r\n return this.addMark([2, 5, 4]);\r\n } else if (rand < 0.8) {\r\n this.type = 21;\r\n return this.addMark([0, 1, 1, 2]);\r\n } else {\r\n return this.type = 22;\r\n }\r\n };\r\n\r\n return TippedHexSection;\r\n\r\n })(Face);\r\n\r\n TippedHexSectionInv = (function(_super) {\r\n __extends(TippedHexSectionInv, _super);\r\n\r\n function TippedHexSectionInv() {\r\n return TippedHexSectionInv.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n TippedHexSectionInv.prototype.reorient = function() {\r\n return this.twist(Math.PI);\r\n };\r\n\r\n return TippedHexSectionInv;\r\n\r\n })(TippedHexSection);\r\n\r\n HexSection2 = (function(_super) {\r\n __extends(HexSection2, _super);\r\n\r\n function HexSection2() {\r\n return HexSection2.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n HexSection2.prototype.reorient = function() {\r\n return this.twist(Math.PI * 1 / 3);\r\n };\r\n\r\n return HexSection2;\r\n\r\n })(HexSection);\r\n\r\n HexSection3 = (function(_super) {\r\n __extends(HexSection3, _super);\r\n\r\n function HexSection3() {\r\n return HexSection3.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n HexSection3.prototype.reorient = function() {\r\n return this.twist(Math.PI * 2 / 3);\r\n };\r\n\r\n return HexSection3;\r\n\r\n })(HexSection);\r\n\r\n HexSection4 = (function(_super) {\r\n __extends(HexSection4, _super);\r\n\r\n function HexSection4() {\r\n return HexSection4.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n HexSection4.prototype.reorient = function() {\r\n return this.twist(Math.PI);\r\n };\r\n\r\n return HexSection4;\r\n\r\n })(HexSection);\r\n\r\n HexSection5 = (function(_super) {\r\n __extends(HexSection5, _super);\r\n\r\n function HexSection5() {\r\n return HexSection5.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n HexSection5.prototype.reorient = function() {\r\n return this.twist(-Math.PI * 1 / 3);\r\n };\r\n\r\n return HexSection5;\r\n\r\n })(HexSection);\r\n\r\n HexSection6 = (function(_super) {\r\n __extends(HexSection6, _super);\r\n\r\n function HexSection6() {\r\n return HexSection6.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n HexSection6.prototype.reorient = function() {\r\n return this.twist(-Math.PI * 2 / 3);\r\n };\r\n\r\n return HexSection6;\r\n\r\n })(HexSection);\r\n\r\n HexSection7 = (function(_super) {\r\n __extends(HexSection7, _super);\r\n\r\n function HexSection7() {\r\n return HexSection7.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n HexSection7.prototype.reorient = function() {\r\n return this.twist(Math.PI / 2);\r\n };\r\n\r\n HexSection7.prototype.getMarks = function() {\r\n var i, j, rand, x, y, z, _i;\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n for (i = _i = 0; _i <= 2; i = ++_i) {\r\n j = i + 1;\r\n if (i === 2) {\r\n j = 0;\r\n }\r\n x = (this.ar[i].ar[0] + this.ar[j].ar[0]) / 2;\r\n y = (this.ar[i].ar[1] + this.ar[j].ar[1]) / 2;\r\n z = (this.ar[i].ar[2] + this.ar[j].ar[2]) / 2;\r\n this.markVertices.push(new Point([x, y, z]));\r\n }\r\n rand = Math.random();\r\n if (rand < 0.1) {\r\n this.type = 15;\r\n return this.addMark([0, 1, 4]);\r\n } else if (rand < 0.2) {\r\n this.type = 15;\r\n return this.addMark([0, 4, 2]);\r\n } else if (rand < 0.3) {\r\n this.type = 15;\r\n return this.addMark([0, 3, 2]);\r\n } else if (rand < 0.4) {\r\n this.type = 15;\r\n return this.addMark([3, 1, 2]);\r\n } else if (rand < 0.5) {\r\n this.type = 15;\r\n return this.addMark([1, 2, 5]);\r\n } else if (rand < 0.6) {\r\n this.type = 15;\r\n return this.addMark([0, 1, 5]);\r\n } else if (rand < 0.8) {\r\n this.type = 16;\r\n return this.addMark([0, 1, 1, 2]);\r\n } else {\r\n return this.type = 17;\r\n }\r\n };\r\n\r\n HexSection7.prototype.clone = function() {\r\n var result;\r\n result = new HexSection7(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n return HexSection7;\r\n\r\n })(HexSection);\r\n\r\n HexSection8 = (function(_super) {\r\n __extends(HexSection8, _super);\r\n\r\n function HexSection8() {\r\n return HexSection8.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n HexSection8.prototype.reorient = function() {\r\n return this.twist(-Math.PI / 2);\r\n };\r\n\r\n return HexSection8;\r\n\r\n })(HexSection7);\r\n\r\n HexSection9 = (function(_super) {\r\n __extends(HexSection9, _super);\r\n\r\n function HexSection9() {\r\n return HexSection9.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n HexSection9.prototype.reorient = function() {};\r\n\r\n return HexSection9;\r\n\r\n })(HexSection7);\r\n\r\n HexSection10 = (function(_super) {\r\n __extends(HexSection10, _super);\r\n\r\n function HexSection10() {\r\n return HexSection10.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n HexSection10.prototype.reorient = function() {\r\n return this.twist(Math.PI);\r\n };\r\n\r\n return HexSection10;\r\n\r\n })(HexSection7);\r\n\r\n PentagonInv = (function(_super) {\r\n __extends(PentagonInv, _super);\r\n\r\n function PentagonInv(x, y) {\r\n PentagonInv.__super__.constructor.call(this, x, y);\r\n }\r\n\r\n PentagonInv.prototype.reorient = function() {\r\n var x1, y1, z1;\r\n x1 = this.ar[0].ar[0];\r\n y1 = this.ar[0].ar[1];\r\n z1 = this.ar[0].ar[2];\r\n return this.spin([[x1, y1, z1], [x1, y1, z1 + 10]], Math.PI);\r\n };\r\n\r\n return PentagonInv;\r\n\r\n })(Pentagon);\r\n\r\n ZShape = (function(_super) {\r\n __extends(ZShape, _super);\r\n\r\n function ZShape(x, y) {\r\n ZShape.__super__.constructor.call(this, [new Point([x, y]), new Point([2 + x, y]), new Point([2 + x, 1 + y]), new Point([3 + x, 1 + y]), new Point([3 + x, 2 + y]), new Point([1 + x, 2 + y]), new Point([1 + x, 1 + y]), new Point([x, 1 + y])]);\r\n this.reorient();\r\n this.getMarks();\r\n }\r\n\r\n ZShape.prototype.reorient = function() {};\r\n\r\n ZShape.prototype.getMarks = function() {\r\n var rand;\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n rand = Math.random();\r\n if (rand < 0.5) {\r\n this.type = 9;\r\n return this.addMark([0, 1, 2, 2, 3, 4, 5, 6, 7]);\r\n } else {\r\n return this.type = 10;\r\n }\r\n };\r\n\r\n ZShape.prototype.clone = function() {\r\n var result;\r\n result = new ZShape(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n return ZShape;\r\n\r\n })(Face);\r\n\r\n ZInverted = (function(_super) {\r\n __extends(ZInverted, _super);\r\n\r\n function ZInverted(x, y) {\r\n ZInverted.__super__.constructor.call(this, x, y);\r\n }\r\n\r\n ZInverted.prototype.reorient = function() {\r\n var extension, x1, y1, z1;\r\n x1 = this.ar[0].ar[0];\r\n y1 = this.ar[0].ar[1];\r\n z1 = this.ar[0].ar[2];\r\n this.spin([[x1, y1, z1], [x1, y1 + 10, z1]], Math.PI);\r\n extension = new Point([this.ar[0].ar[0], this.ar[0].ar[1], this.ar[0].ar[2] + 1]);\r\n return this.normal = new Normal([this.ar[0], extension]);\r\n };\r\n\r\n return ZInverted;\r\n\r\n })(ZShape);\r\n\r\n SoftL = (function(_super) {\r\n __extends(SoftL, _super);\r\n\r\n function SoftL(x, y) {\r\n SoftL.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 1, y]), new Point([x + 1, y + 3]), new Point([x - 2, y + 3]), new Point([x - 2, y + 2]), new Point([x - 1, 2 + y]), new Point([x, 1 + y])]);\r\n this.reorient();\r\n this.getMarks();\r\n }\r\n\r\n SoftL.prototype.reorient = function() {};\r\n\r\n SoftL.prototype.getMarks = function() {\r\n var rand, x, y, z;\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n x = (this.ar[5].ar[0] + this.ar[6].ar[0]) / 2;\r\n y = (this.ar[5].ar[1] + this.ar[6].ar[1]) / 2;\r\n z = (this.ar[5].ar[2] + this.ar[6].ar[2]) / 2;\r\n this.markVertices.push(new Point([x, y, z]));\r\n rand = Math.random();\r\n if (rand < 0.25) {\r\n this.type = 11;\r\n return this.addMark([0, 1, 2, 7, 6]);\r\n } else if (rand < 0.5) {\r\n this.type = 11;\r\n return this.addMark([2, 3, 4, 5, 7]);\r\n } else if (rand < 0.75) {\r\n this.type = 12;\r\n return this.addMark([0, 1, 2, 2, 3, 4, 5, 6]);\r\n } else {\r\n return this.type = 13;\r\n }\r\n };\r\n\r\n SoftL.prototype.clone = function() {\r\n var result;\r\n result = new SoftL(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n return SoftL;\r\n\r\n })(Face);\r\n\r\n El = (function(_super) {\r\n __extends(El, _super);\r\n\r\n function El(x, y) {\r\n El.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 1, y]), new Point([x + 1, y + 2]), new Point([x - 1, y + 2]), new Point([x - 1, y + 1]), new Point([x, y + 1])]);\r\n this.getMarks();\r\n }\r\n\r\n El.prototype.getMarks = function() {\r\n var rand;\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n rand = Math.random();\r\n if (rand < 0.5) {\r\n this.addMark([0, 1, 1, 2, 3, 4, 5]);\r\n return this.type = 42;\r\n } else {\r\n return this.type = 25;\r\n }\r\n };\r\n\r\n El.prototype.clone = function() {\r\n var result;\r\n result = new El(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n return El;\r\n\r\n })(Face);\r\n\r\n ElInv = (function(_super) {\r\n __extends(ElInv, _super);\r\n\r\n function ElInv(x, y) {\r\n ElInv.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 1, y]), new Point([x + 1, y + 1]), new Point([x + 2, y + 1]), new Point([x + 2, y + 2]), new Point([x, y + 2])]);\r\n this.getMarks();\r\n }\r\n\r\n ElInv.prototype.getMarks = function() {\r\n var rand;\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n rand = Math.random();\r\n if (rand < 0.5) {\r\n this.addMark([0, 1, 1, 2, 3, 4, 5]);\r\n return this.type = 42;\r\n } else {\r\n return this.type = 25;\r\n }\r\n };\r\n\r\n ElInv.prototype.clone = function() {\r\n var result;\r\n result = new ElInv(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n return ElInv;\r\n\r\n })(Face);\r\n\r\n SoftLInv = (function(_super) {\r\n __extends(SoftLInv, _super);\r\n\r\n function SoftLInv(x, y) {\r\n SoftLInv.__super__.constructor.call(this, x, y);\r\n }\r\n\r\n SoftLInv.prototype.reorient = function() {\r\n var x1, y1, z1;\r\n x1 = this.ar[0].ar[0];\r\n y1 = this.ar[0].ar[1];\r\n z1 = this.ar[0].ar[2];\r\n return this.spin([[x1, y1, z1], [x1, y1, z1 + 10]], Math.PI);\r\n };\r\n\r\n return SoftLInv;\r\n\r\n })(SoftL);\r\n\r\n SoftLInv2 = (function(_super) {\r\n __extends(SoftLInv2, _super);\r\n\r\n function SoftLInv2(x, y) {\r\n SoftLInv2.__super__.constructor.call(this, x, y);\r\n }\r\n\r\n SoftLInv2.prototype.reorient = function() {\r\n var x1, y1, z1;\r\n x1 = this.ar[0].ar[0];\r\n y1 = this.ar[0].ar[1];\r\n z1 = this.ar[0].ar[2];\r\n return this.spin([[x1, y1, z1], [x1, y1, z1 + 10]], -Math.PI / 2);\r\n };\r\n\r\n return SoftLInv2;\r\n\r\n })(SoftL);\r\n\r\n SoftLSide = (function(_super) {\r\n __extends(SoftLSide, _super);\r\n\r\n function SoftLSide(x, y) {\r\n SoftLSide.__super__.constructor.call(this, x, y);\r\n }\r\n\r\n SoftLSide.prototype.reorient = function() {\r\n var x1, y1, z1;\r\n x1 = this.ar[0].ar[0];\r\n y1 = this.ar[0].ar[1];\r\n z1 = this.ar[0].ar[2];\r\n return this.spin([[x1, y1, z1], [x1, y1, z1 + 10]], -Math.PI / 2);\r\n };\r\n\r\n return SoftLSide;\r\n\r\n })(SoftL);\r\n\r\n HorseShoe = (function(_super) {\r\n __extends(HorseShoe, _super);\r\n\r\n function HorseShoe(x, y) {\r\n HorseShoe.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 1, y]), new Point([x + 1, y + 1]), new Point([x + 2, y + 1]), new Point([x + 2, y]), new Point([x + 3, y]), new Point([x + 3, y + 2]), new Point([x, y + 2])]);\r\n this.reorient();\r\n this.getMarks();\r\n }\r\n\r\n HorseShoe.prototype.reorient = function() {};\r\n\r\n HorseShoe.prototype.getMarks = function() {\r\n var rand, x, y, z;\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n x = (this.ar[2].ar[0] + this.ar[3].ar[0]) / 2;\r\n y = (this.ar[2].ar[1] + this.ar[3].ar[1]) / 2;\r\n z = (this.ar[2].ar[2] + this.ar[3].ar[2]) / 2;\r\n this.markVertices.push(new Point([x, y, z]));\r\n x = (this.ar[6].ar[0] + this.ar[7].ar[0]) / 2;\r\n y = (this.ar[6].ar[1] + this.ar[7].ar[1]) / 2;\r\n z = (this.ar[6].ar[2] + this.ar[7].ar[2]) / 2;\r\n this.markVertices.push(new Point([x, y, z]));\r\n rand = Math.random();\r\n if (rand < 0.2) {\r\n this.type = 36;\r\n return this.addMark([0, 1, 2, 8, 9, 7]);\r\n } else if (rand < 0.4) {\r\n this.type = 36;\r\n return this.addMark([8, 3, 4, 5, 6, 9]);\r\n } else if (rand < 0.7) {\r\n this.type = 37;\r\n return this.addMark([0, 1, 2, 2, 3, 4, 5, 6, 7]);\r\n } else {\r\n return this.type = 38;\r\n }\r\n };\r\n\r\n HorseShoe.prototype.clone = function() {\r\n var result;\r\n result = new HorseShoe(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n return HorseShoe;\r\n\r\n })(Face);\r\n\r\n HorseShoeSideways = (function(_super) {\r\n __extends(HorseShoeSideways, _super);\r\n\r\n function HorseShoeSideways() {\r\n return HorseShoeSideways.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n HorseShoeSideways.prototype.reorient = function() {\r\n var x1, y1, z1;\r\n x1 = this.ar[0].ar[0];\r\n y1 = this.ar[0].ar[1];\r\n z1 = this.ar[0].ar[2];\r\n return this.spin([[x1, y1, z1], [x1, y1, z1 + 10]], Math.PI / 2);\r\n };\r\n\r\n return HorseShoeSideways;\r\n\r\n })(HorseShoe);\r\n\r\n Coffin = (function(_super) {\r\n __extends(Coffin, _super);\r\n\r\n function Coffin(x, y) {\r\n var extension, i, j, z, _i, _j, _k, _ref;\r\n Coffin.__super__.constructor.call(this, [new Point([x, y]), new Point([x + 2, y]), new Point([x + 4, y]), new Point([x + 6, y]), new Point([x + 8, y]), new Point([x + 10, y]), new Point([x + 12, y]), new Point([x + 12, y + 2])]);\r\n for (i = _i = 1; _i <= 4; i = ++_i) {\r\n x = this.ar[i].ar[0];\r\n y = this.ar[i].ar[1];\r\n z = this.ar[i].ar[2];\r\n for (j = _j = 0, _ref = i - 1; 0 <= _ref ? _j <= _ref : _j >= _ref; j = 0 <= _ref ? ++_j : --_j) {\r\n this.ar[j].spin([[x, y, z], [x, y, z + 10]], -Math.PI * 2 / 6);\r\n }\r\n }\r\n x = this.ar[5].ar[0];\r\n y = this.ar[5].ar[1];\r\n z = this.ar[5].ar[2];\r\n for (j = _k = 0; _k <= 4; j = ++_k) {\r\n this.ar[j].spin([[x, y, z], [x, y, z + 10]], Math.PI / 6);\r\n }\r\n extension = new Point([this.ar[0].ar[0], this.ar[0].ar[1], this.ar[0].ar[2] + 1]);\r\n this.normal = new Normal([this.ar[0], extension]);\r\n this.getMarks();\r\n }\r\n\r\n Coffin.prototype.getMarks = function() {\r\n var rand, x, y, z;\r\n this.markVertices = [];\r\n this.populateMainMarkVertices();\r\n x = (this.ar[2].ar[0] + this.ar[3].ar[0]) / 2;\r\n y = (this.ar[2].ar[1] + this.ar[3].ar[1]) / 2;\r\n z = (this.ar[2].ar[2] + this.ar[3].ar[2]) / 2;\r\n this.markVertices.push(new Point([x, y, z]));\r\n x = (this.ar[6].ar[0] + this.ar[7].ar[0]) / 2;\r\n y = (this.ar[6].ar[1] + this.ar[7].ar[1]) / 2;\r\n z = (this.ar[6].ar[2] + this.ar[7].ar[2]) / 2;\r\n this.markVertices.push(new Point([x, y, z]));\r\n rand = Math.random();\r\n if (rand < 0.2) {\r\n this.type = 39;\r\n return this.addMark([7, 0, 1, 2, 8, 9]);\r\n } else if (rand < 0.4) {\r\n this.type = 39;\r\n return this.addMark([8, 3, 4, 5, 6, 9]);\r\n } else if (rand < 0.7) {\r\n this.type = 40;\r\n return this.addMark([0, 1, 2, 2, 3, 4, 5, 6, 7]);\r\n } else {\r\n return this.type = 41;\r\n }\r\n };\r\n\r\n Coffin.prototype.clone = function() {\r\n var result;\r\n result = new Coffin(0, 0);\r\n this.copyTo(result);\r\n return result;\r\n };\r\n\r\n return Coffin;\r\n\r\n })(Face);\r\n\r\n Pattern = (function(_super) {\r\n __extends(Pattern, _super);\r\n\r\n function Pattern() {\r\n this.moveSlide = __bind(this.moveSlide, this);\r\n var _i, _results;\r\n Pattern.__super__.constructor.apply(this, arguments);\r\n this.allowedRotations = (function() {\r\n _results = [];\r\n for (_i = 0; _i <= 23; _i++){ _results.push(_i); }\r\n return _results;\r\n }).apply(this);\r\n this.disallowedPairs = [];\r\n this.folds = [];\r\n this.currentPace = 10;\r\n this.stepsExecuted = 0;\r\n this.choices = [];\r\n this.correctChoice = randInt(OPTIONS);\r\n this.answer = \"z\";\r\n this.boundingCube = [];\r\n this.workingCopy = {};\r\n this.mainOffset = OFFSET;\r\n this.horizPentAxes = [];\r\n this.vertPentAxes = [];\r\n this.vertTriangleAxes = [];\r\n this.horizTriangleAxes = [];\r\n this.sliding = false;\r\n this.slidePosition = 0;\r\n }\r\n\r\n Pattern.prototype.clone = function() {\r\n var cln, f, faces, _i, _len, _ref;\r\n faces = [];\r\n _ref = this.ar;\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n f = _ref[_i];\r\n faces.push(f.clone());\r\n }\r\n cln = new Pattern(faces);\r\n cln.folds = this.folds;\r\n cln.currentPace = this.currentPace;\r\n cln.rotation = this.rotation;\r\n cln.totalSteps = this.totalSteps;\r\n cln.pov = this.pov;\r\n cln.boundingCube = this.boundingCube;\r\n cln.screenBounds = this.screenBounds;\r\n return cln;\r\n };\r\n\r\n Pattern.prototype.toArray = function() {\r\n var c, f, m, p, result, _i, _j, _k, _l, _len, _len1, _len2, _len3, _len4, _len5, _len6, _m, _n, _o, _ref, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6;\r\n result = [];\r\n _ref = this.ar;\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n f = _ref[_i];\r\n _ref1 = f.ar;\r\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\r\n p = _ref1[_j];\r\n _ref2 = p.ar;\r\n for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {\r\n c = _ref2[_k];\r\n result.push(c);\r\n }\r\n }\r\n _ref3 = f.marks;\r\n for (_l = 0, _len3 = _ref3.length; _l < _len3; _l++) {\r\n m = _ref3[_l];\r\n _ref4 = m.ar;\r\n for (_m = 0, _len4 = _ref4.length; _m < _len4; _m++) {\r\n p = _ref4[_m];\r\n _ref5 = p.ar;\r\n for (_n = 0, _len5 = _ref5.length; _n < _len5; _n++) {\r\n c = _ref5[_n];\r\n result.push(c);\r\n }\r\n }\r\n }\r\n _ref6 = f.normal.ar[1].ar;\r\n for (_o = 0, _len6 = _ref6.length; _o < _len6; _o++) {\r\n c = _ref6[_o];\r\n result.push(c);\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n Pattern.prototype.restoreFromArray = function(storage) {\r\n var c, f, i, m, p, _i, _j, _k, _l, _len, _len1, _len2, _len3, _m, _n, _ref, _ref1, _ref2, _ref3, _results;\r\n i = 0;\r\n _ref = this.ar;\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n f = _ref[_i];\r\n _ref1 = f.ar;\r\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\r\n p = _ref1[_j];\r\n for (c = _k = 0; _k <= 2; c = ++_k) {\r\n p.ar[c] = storage[i];\r\n ++i;\r\n }\r\n }\r\n _ref2 = f.marks;\r\n for (_l = 0, _len2 = _ref2.length; _l < _len2; _l++) {\r\n m = _ref2[_l];\r\n _ref3 = m.ar;\r\n for (_m = 0, _len3 = _ref3.length; _m < _len3; _m++) {\r\n p = _ref3[_m];\r\n for (c = _n = 0; _n <= 2; c = ++_n) {\r\n p.ar[c] = storage[i];\r\n ++i;\r\n }\r\n }\r\n }\r\n _results.push((function() {\r\n var _o, _results1;\r\n _results1 = [];\r\n for (c = _o = 0; _o <= 2; c = ++_o) {\r\n f.normal.ar[1].ar[c] = storage[i];\r\n _results1.push(++i);\r\n }\r\n return _results1;\r\n })());\r\n }\r\n return _results;\r\n };\r\n\r\n Pattern.prototype.setPov = function() {\r\n var l, rand;\r\n l = this.allowedRotations.length;\r\n rand = randInt(l);\r\n this.rotation = this.allowedRotations[rand];\r\n this.povn = this.getPovn();\r\n return this.pov = povs[this.povn];\r\n };\r\n\r\n Pattern.prototype.getPovn = function() {\r\n var allowed, pair, povn, _i, _len, _ref;\r\n povn = 0;\r\n while (true) {\r\n allowed = true;\r\n povn = randInt(4);\r\n _ref = this.disallowedPairs;\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n pair = _ref[_i];\r\n if (pair[0] === this.rotation && pair[1] === povn) {\r\n allowed = false;\r\n break;\r\n }\r\n }\r\n if (allowed) {\r\n break;\r\n }\r\n }\r\n return povn;\r\n };\r\n\r\n Pattern.prototype.getCorrectAnswer = function() {\r\n var faces, i, l, result, _i;\r\n faces = [];\r\n l = this.workingCopy.ar.length - 1;\r\n for (i = _i = 0; 0 <= l ? _i <= l : _i >= l; i = 0 <= l ? ++_i : --_i) {\r\n if (this.workingCopy.ar[i].normal.facing(this.pov)) {\r\n faces.push(this.workingCopy.ar[i].clone());\r\n this.workingCopy.ar[i].explication = true;\r\n }\r\n }\r\n result = new Choice(faces);\r\n result.pov = this.pov;\r\n return result;\r\n };\r\n\r\n Pattern.prototype.populateChoices = function() {\r\n var archive, blank, correctPossibilities, face, i, j, perspectives, storePossibility, _i, _j, _k, _l, _len, _m, _n, _ref, _ref1, _ref2, _ref3, _ref4, _ref5;\r\n perspectives = [];\r\n for (i = _i = 0, _ref = OPTIONS - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\r\n perspectives[i] = i !== this.correctChoice ? this.getPovn() : this.povn;\r\n }\r\n archive = this.workingCopy.toArray();\r\n correctPossibilities = [];\r\n storePossibility = (function(_this) {\r\n return function(n) {\r\n var correctAnswer, face, _j, _len, _ref1;\r\n correctAnswer = [];\r\n _ref1 = _this.workingCopy.ar;\r\n for (_j = 0, _len = _ref1.length; _j < _len; _j++) {\r\n face = _ref1[_j];\r\n if (face.normal.facing(povs[n])) {\r\n correctAnswer.push(face.clone());\r\n }\r\n }\r\n return correctPossibilities[n].push(correctAnswer);\r\n };\r\n })(this);\r\n for (i = _j = 0, _ref1 = povs.length - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; i = 0 <= _ref1 ? ++_j : --_j) {\r\n correctPossibilities[i] = [];\r\n if (__indexOf.call(perspectives, i) >= 0) {\r\n storePossibility(i);\r\n }\r\n }\r\n for (i = _k = 0, _ref2 = this.allowedRotations.length - 1; 0 <= _ref2 ? _k <= _ref2 : _k >= _ref2; i = 0 <= _ref2 ? ++_k : --_k) {\r\n if (this.allowedRotations[i] > 0) {\r\n this.workingCopy.rotate(this.allowedRotations[i], 1);\r\n this.workingCopy.reposition();\r\n for (j = _l = 0, _ref3 = povs.length - 1; 0 <= _ref3 ? _l <= _ref3 : _l >= _ref3; j = 0 <= _ref3 ? ++_l : --_l) {\r\n if (__indexOf.call(perspectives, j) >= 0) {\r\n storePossibility(j);\r\n }\r\n }\r\n this.workingCopy.restoreFromArray(archive);\r\n }\r\n }\r\n if (this.rotation > 0) {\r\n this.workingCopy.rotate(this.rotation, 1);\r\n }\r\n this.workingCopy.reposition();\r\n this.choices = [];\r\n for (i = _m = 0, _ref4 = OPTIONS - 1; 0 <= _ref4 ? _m <= _ref4 : _m >= _ref4; i = 0 <= _ref4 ? ++_m : --_m) {\r\n if (i === this.correctChoice) {\r\n this.choices.push(this.getCorrectAnswer());\r\n } else {\r\n this.workingCopy.pov = povs[perspectives[i]];\r\n this.choices.push(this.getFalseCandidate(correctPossibilities[perspectives[i]]));\r\n }\r\n }\r\n blank = true;\r\n _ref5 = this.choices[this.correctChoice].ar;\r\n for (_n = 0, _len = _ref5.length; _n < _len; _n++) {\r\n face = _ref5[_n];\r\n if (face.marks.length > 0) {\r\n blank = false;\r\n }\r\n }\r\n if (blank) {\r\n return this.postInit();\r\n }\r\n };\r\n\r\n Pattern.prototype.getTypes = function() {\r\n var face, i, result, _i, _j, _len, _ref;\r\n result = [];\r\n for (i = _i = 0; _i <= 42; i = ++_i) {\r\n result.push(0);\r\n }\r\n _ref = this.ar;\r\n for (_j = 0, _len = _ref.length; _j < _len; _j++) {\r\n face = _ref[_j];\r\n result[face.type] += 1;\r\n }\r\n return result;\r\n };\r\n\r\n Pattern.prototype.print = function(n, cDim, cMargin) {\r\n var face, scaling, _i, _j, _len, _len1, _ref, _ref1, _results;\r\n scaling = getScaling(this.screenBounds, cDim, cMargin);\r\n _ref = this.ar;\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n face = _ref[_i];\r\n face.printBack(n, this.pov, scaling);\r\n }\r\n _ref1 = this.ar;\r\n _results = [];\r\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\r\n face = _ref1[_j];\r\n _results.push(face.printFront(n, this.pov, scaling));\r\n }\r\n return _results;\r\n };\r\n\r\n Pattern.prototype.explicate = function(n, cDim, cMargin) {\r\n var face, scaling, _i, _j, _len, _len1, _ref, _ref1;\r\n scaling = getScaling(this.screenBounds, cDim, cMargin);\r\n _ref = this.ar;\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n face = _ref[_i];\r\n face.printBack(n, this.pov, scaling);\r\n }\r\n _ref1 = this.ar;\r\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\r\n face = _ref1[_j];\r\n if (face.explication) {\r\n face.accentuate(n, this.pov, scaling);\r\n } else {\r\n face.printFront(n, this.pov, scaling);\r\n }\r\n }\r\n if (!this.sliding) {\r\n return $('#slider').slider(\"value\", this.stepsExecuted);\r\n }\r\n };\r\n\r\n Pattern.prototype.printFaceArray = function(n, choice, cDim, cMargin) {\r\n var bounds, face, scaling, _i, _len, _ref, _results;\r\n bounds = getBounds(choice.ar, choice.pov);\r\n scaling = getScaling(bounds, cDim, cMargin);\r\n _ref = choice.ar;\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n face = _ref[_i];\r\n _results.push(face.printFront(n, choice.pov, scaling));\r\n }\r\n return _results;\r\n };\r\n\r\n Pattern.prototype.display = function() {\r\n var i, n, _i, _results;\r\n if (testing) {\r\n return this.workingCopy.print(0, DIMENSION0, this.offset);\r\n } else {\r\n this.print(0, DIMENSION0, this.mainOffset);\r\n n = this.choices.length - 1;\r\n _results = [];\r\n for (i = _i = 0; 0 <= n ? _i <= n : _i >= n; i = 0 <= n ? ++_i : --_i) {\r\n _results.push(this.printFaceArray(i + 1, this.choices[i], DIMENSION, this.offset));\r\n }\r\n return _results;\r\n }\r\n };\r\n\r\n Pattern.prototype.describe = function() {\r\n var face, _i, _len, _ref, _results;\r\n _ref = this.ar;\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n face = _ref[_i];\r\n _results.push(face.describe());\r\n }\r\n return _results;\r\n };\r\n\r\n Pattern.prototype.sanitize = function() {\r\n var face, _i, _len, _ref, _results;\r\n _ref = this.ar;\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n face = _ref[_i];\r\n _results.push(face.sanitize());\r\n }\r\n return _results;\r\n };\r\n\r\n Pattern.prototype.translate = function(x, y, z) {\r\n var face, _i, _len, _ref, _results;\r\n _ref = this.ar;\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n face = _ref[_i];\r\n _results.push(face.translate(x, y, z));\r\n }\r\n return _results;\r\n };\r\n\r\n Pattern.prototype.reposition = function() {\r\n var face, topX, topY, topZ, tops, _i, _len, _ref;\r\n topX = 1000;\r\n topY = 1000;\r\n topZ = 1000;\r\n _ref = this.ar;\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n face = _ref[_i];\r\n tops = face.getTops();\r\n if (tops[0] < topX) {\r\n topX = tops[0];\r\n }\r\n if (tops[1] < topY) {\r\n topY = tops[1];\r\n }\r\n if (tops[2] < topZ) {\r\n topZ = tops[2];\r\n }\r\n }\r\n return this.translate(-topX, -topY, -topZ);\r\n };\r\n\r\n Pattern.prototype.fold = function() {\r\n var f, n, _i, _len, _ref, _results;\r\n _ref = this.folds;\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n f = _ref[_i];\r\n _results.push((function() {\r\n var _j, _len1, _ref1, _results1;\r\n _ref1 = f.faces;\r\n _results1 = [];\r\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\r\n n = _ref1[_j];\r\n _results1.push(this.ar[n].spin(f.axis, f.degrees));\r\n }\r\n return _results1;\r\n }).call(this));\r\n }\r\n return _results;\r\n };\r\n\r\n Pattern.prototype.spin = function(axis, rad) {\r\n var face, _i, _len, _ref, _results;\r\n _ref = this.ar;\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n face = _ref[_i];\r\n _results.push(face.spin(axis, rad));\r\n }\r\n return _results;\r\n };\r\n\r\n Pattern.prototype.animate = function(n) {\r\n var currentFold, dv, f, fc, rad, thisStep, _i, _len, _ref;\r\n clearCanvas(n);\r\n this.explicate(n, DIMENSION0, this.mainOffset);\r\n if (this.stepsExecuted >= this.totalSteps) {\r\n animDir = false;\r\n }\r\n if (this.stepsExecuted <= 0) {\r\n animDir = true;\r\n }\r\n thisStep = this.stepsExecuted;\r\n thisStep += animDir ? 1 : 0;\r\n if (thisStep <= (this.currentPace * this.folds.length)) {\r\n currentFold = Math.floor((thisStep - 1) / this.currentPace);\r\n f = this.folds[currentFold];\r\n rad = f.degrees / this.currentPace;\r\n if (!animDir) {\r\n rad = -rad;\r\n }\r\n _ref = f.faces;\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n fc = _ref[_i];\r\n this.ar[fc].spin(f.axis, rad);\r\n }\r\n } else if (thisStep <= this.totalSteps) {\r\n dv = this.totalSteps - (this.currentPace * this.folds.length);\r\n if (!animDir) {\r\n dv = -dv;\r\n }\r\n this.rotate(this.rotation, dv);\r\n }\r\n this.stepsExecuted += animDir ? 1 : -1;\r\n if (((this.stepsExecuted >= this.totalSteps) || (this.stepsExecuted <= 0)) && !this.sliding) {\r\n animPause = setTimeout((function() {\r\n return animOn = true;\r\n }), 2000);\r\n animOn = false;\r\n animDir = !animDir;\r\n clearCanvas(n);\r\n return this.explicate(n, DIMENSION0, this.mainOffset);\r\n }\r\n };\r\n\r\n Pattern.prototype.moveSlide = function(event, ui) {\r\n this.slidePosition = ui.value;\r\n if (!this.sliding) {\r\n animOn = false;\r\n $('#pause').text(\"Play\");\r\n this.sliding = true;\r\n return this.slideLoop();\r\n }\r\n };\r\n\r\n Pattern.prototype.slideLoop = function() {\r\n var _results;\r\n _results = [];\r\n while (this.sliding) {\r\n if (this.stepsExecuted === this.slidePosition) {\r\n _results.push(this.sliding = false);\r\n } else {\r\n animDir = this.stepsExecuted < this.slidePosition;\r\n _results.push(render());\r\n }\r\n }\r\n return _results;\r\n };\r\n\r\n Pattern.prototype.getFalseCandidate = function(correctPossibilities) {\r\n var answer, archive, blank, duplicate, endTypes, excessType, face, faces, falseSpot, finalFaces, i, l, result, startTypes, _i, _j, _k, _l, _len, _len1, _len2, _len3, _m, _n, _ref, _ref1, _ref2, _ref3;\r\n archive = [];\r\n for (i = _i = 0, _ref = this.workingCopy.ar.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\r\n archive[i] = this.workingCopy.ar[i];\r\n }\r\n excessType = -1;\r\n l = this.workingCopy.ar.length;\r\n startTypes = this.workingCopy.getTypes();\r\n while (true) {\r\n duplicate = false;\r\n falseSpot = randInt(l);\r\n if (excessType >= 0) {\r\n if (this.workingCopy.ar[falseSpot].type !== excessType) {\r\n continue;\r\n }\r\n }\r\n this.workingCopy.ar[falseSpot] = this.workingCopy.ar[falseSpot].imposter();\r\n excessType = -1;\r\n endTypes = this.workingCopy.getTypes();\r\n for (i = _j = 0, _ref1 = endTypes.length - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; i = 0 <= _ref1 ? ++_j : --_j) {\r\n if (endTypes[i] > startTypes[i]) {\r\n excessType = i;\r\n }\r\n }\r\n if (excessType >= 0) {\r\n continue;\r\n }\r\n faces = [];\r\n blank = true;\r\n _ref2 = this.workingCopy.ar;\r\n for (_k = 0, _len = _ref2.length; _k < _len; _k++) {\r\n face = _ref2[_k];\r\n if (!(face.normal.facing(this.workingCopy.pov))) {\r\n continue;\r\n }\r\n faces.push(face);\r\n if (face.marks.length > 0) {\r\n blank = false;\r\n }\r\n }\r\n if (blank) {\r\n continue;\r\n }\r\n for (_l = 0, _len1 = correctPossibilities.length; _l < _len1; _l++) {\r\n answer = correctPossibilities[_l];\r\n if (compareFaces(answer, faces)) {\r\n duplicate = true;\r\n }\r\n }\r\n _ref3 = this.choices;\r\n for (_m = 0, _len2 = _ref3.length; _m < _len2; _m++) {\r\n answer = _ref3[_m];\r\n if (compareFaces(answer.ar, faces)) {\r\n duplicate = true;\r\n }\r\n }\r\n if (duplicate === false) {\r\n break;\r\n }\r\n }\r\n this.workingCopy.ar = archive;\r\n finalFaces = [];\r\n for (_n = 0, _len3 = faces.length; _n < _len3; _n++) {\r\n face = faces[_n];\r\n finalFaces.push(face.clone());\r\n }\r\n result = new Choice(finalFaces);\r\n result.pov = this.workingCopy.pov;\r\n return result;\r\n };\r\n\r\n Pattern.prototype.getDieFalseCandidate = function(correctPossibilities) {\r\n var answer, archive, duplicate, face, faces, finalFaces, fs1, fs2, i, result, type1, type2, _i, _j, _k, _l, _len, _len1, _len2, _len3, _m, _ref, _ref1, _ref2;\r\n archive = [];\r\n for (i = _i = 0, _ref = this.workingCopy.ar.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\r\n archive[i] = this.workingCopy.ar[i];\r\n }\r\n while (true) {\r\n duplicate = false;\r\n fs1 = randInt(6);\r\n fs2 = randInt(6);\r\n if (fs1 === fs2) {\r\n continue;\r\n }\r\n type1 = this.workingCopy.ar[fs1].type;\r\n type2 = this.workingCopy.ar[fs2].type;\r\n this.workingCopy.ar[fs1] = this.workingCopy.ar[fs1].clone();\r\n this.workingCopy.ar[fs1].marks = [];\r\n this.workingCopy.ar[fs1].addDieSpots(type2);\r\n this.workingCopy.ar[fs2] = this.workingCopy.ar[fs2].clone();\r\n this.workingCopy.ar[fs2].marks = [];\r\n this.workingCopy.ar[fs2].addDieSpots(type1);\r\n faces = [];\r\n _ref1 = this.workingCopy.ar;\r\n for (_j = 0, _len = _ref1.length; _j < _len; _j++) {\r\n face = _ref1[_j];\r\n if (face.normal.facing(this.workingCopy.pov)) {\r\n faces.push(face);\r\n }\r\n }\r\n for (_k = 0, _len1 = correctPossibilities.length; _k < _len1; _k++) {\r\n answer = correctPossibilities[_k];\r\n if (compareFaces(answer, faces)) {\r\n duplicate = true;\r\n }\r\n }\r\n _ref2 = this.choices;\r\n for (_l = 0, _len2 = _ref2.length; _l < _len2; _l++) {\r\n answer = _ref2[_l];\r\n if (compareFaces(answer.ar, faces)) {\r\n duplicate = true;\r\n }\r\n }\r\n if (duplicate === false) {\r\n break;\r\n }\r\n }\r\n this.workingCopy.ar = archive;\r\n finalFaces = [];\r\n for (_m = 0, _len3 = faces.length; _m < _len3; _m++) {\r\n face = faces[_m];\r\n finalFaces.push(face.clone());\r\n }\r\n result = new Choice(finalFaces);\r\n result.pov = this.workingCopy.pov;\r\n return result;\r\n };\r\n\r\n Pattern.prototype.getBoundingCube = function() {\r\n var corners, deltaX, deltaY, deltaZ, dim, face, spacer, x0, x1, y0, y1, z0, z1, _i, _len, _ref;\r\n x0 = 1000;\r\n y0 = 1000;\r\n z0 = 1000;\r\n x1 = -1000;\r\n y1 = -1000;\r\n z1 = -1000;\r\n _ref = this.ar;\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n face = _ref[_i];\r\n corners = face.getBoundingCube();\r\n if (corners[0][0] < x0) {\r\n x0 = corners[0][0];\r\n }\r\n if (corners[0][1] < y0) {\r\n y0 = corners[0][1];\r\n }\r\n if (corners[0][2] < z0) {\r\n z0 = corners[0][2];\r\n }\r\n if (corners[1][0] > x1) {\r\n x1 = corners[1][0];\r\n }\r\n if (corners[1][1] > y1) {\r\n y1 = corners[1][1];\r\n }\r\n if (corners[1][2] > z1) {\r\n z1 = corners[1][2];\r\n }\r\n }\r\n deltaX = x1 - x0;\r\n deltaY = y1 - y0;\r\n deltaZ = z1 - z0;\r\n dim = deltaX;\r\n if (deltaY > dim) {\r\n dim = deltaY;\r\n }\r\n if (deltaZ > dim) {\r\n dim = deltaZ;\r\n }\r\n spacer = (dim - deltaX) / 2;\r\n x0 = x0 - spacer;\r\n x1 = x1 + spacer;\r\n spacer = (dim - deltaY) / 2;\r\n y0 = y0 - spacer;\r\n y1 = y1 + spacer;\r\n spacer = (dim - deltaZ) / 2;\r\n z0 = z0 - spacer;\r\n z1 = z1 + spacer;\r\n return [[x0, y0, z0], [x1, y1, z1]];\r\n };\r\n\r\n Pattern.prototype.getHorizPentAxes = function(key, boundingCube) {\r\n var axis, end1, end2, endy, endz, i, j, k, result, start, x, _i;\r\n x = (boundingCube[0][0] + boundingCube[1][0]) / 2;\r\n result = [];\r\n for (i = _i = 0; _i <= 4; i = ++_i) {\r\n axis = [];\r\n start = this.ar[key].ar[i].ar;\r\n j = i + 2;\r\n if (j > 4) {\r\n j -= 5;\r\n }\r\n k = i + 3;\r\n if (k > 4) {\r\n k -= 5;\r\n }\r\n end1 = this.ar[key].ar[j].ar;\r\n end2 = this.ar[key].ar[k].ar;\r\n endy = (end1[1] + end2[1]) / 2;\r\n endz = (end1[2] + end2[2]) / 2;\r\n axis.push([x, start[1], start[2]]);\r\n axis.push([x, endy, endz]);\r\n result.push(axis);\r\n }\r\n return result;\r\n };\r\n\r\n Pattern.prototype.getVertPentAxes = function(key, boundingCube) {\r\n var axis, end1, end2, endx, endz, i, j, k, result, start, y, _i;\r\n y = (boundingCube[0][1] + boundingCube[1][1]) / 2;\r\n result = [];\r\n for (i = _i = 0; _i <= 4; i = ++_i) {\r\n axis = [];\r\n start = this.ar[key].ar[i].ar;\r\n j = i + 2;\r\n if (j > 4) {\r\n j -= 5;\r\n }\r\n k = i + 3;\r\n if (k > 4) {\r\n k -= 5;\r\n }\r\n end1 = this.ar[key].ar[j].ar;\r\n end2 = this.ar[key].ar[k].ar;\r\n endx = (end1[0] + end2[0]) / 2;\r\n endz = (end1[2] + end2[2]) / 2;\r\n axis.push([start[0], y, start[2]]);\r\n axis.push([endx, y, endz]);\r\n result.push(axis);\r\n }\r\n return result;\r\n };\r\n\r\n Pattern.prototype.getVertTriangleAxes = function(key, boundingCube) {\r\n var axis, end1, end2, endx, endz, i, j, k, result, start, y, _i;\r\n y = (boundingCube[0][1] + boundingCube[1][1]) / 2;\r\n result = [];\r\n for (i = _i = 0; _i <= 2; i = ++_i) {\r\n axis = [];\r\n start = this.ar[key].ar[i].ar;\r\n j = i + 1;\r\n if (j > 2) {\r\n j -= 3;\r\n }\r\n k = i + 2;\r\n if (k > 2) {\r\n k -= 3;\r\n }\r\n end1 = this.ar[key].ar[j].ar;\r\n end2 = this.ar[key].ar[k].ar;\r\n endx = (end1[0] + end2[0]) / 2;\r\n endz = (end1[2] + end2[2]) / 2;\r\n axis.push([start[0], y, start[2]]);\r\n axis.push([endx, y, endz]);\r\n result.push(axis);\r\n }\r\n return result;\r\n };\r\n\r\n Pattern.prototype.getHorizTriangleAxes = function(key, boundingCube) {\r\n var axis, end1, end2, endy, endz, i, j, k, result, start, x, _i;\r\n x = (boundingCube[0][0] + boundingCube[1][0]) / 2;\r\n result = [];\r\n for (i = _i = 0; _i <= 2; i = ++_i) {\r\n axis = [];\r\n start = this.ar[key].ar[i].ar;\r\n j = i + 1;\r\n if (j > 2) {\r\n j -= 3;\r\n }\r\n k = i + 2;\r\n if (k > 2) {\r\n k -= 3;\r\n }\r\n end1 = this.ar[key].ar[j].ar;\r\n end2 = this.ar[key].ar[k].ar;\r\n endy = (end1[1] + end2[1]) / 2;\r\n endz = (end1[2] + end2[2]) / 2;\r\n axis.push([x, start[1], start[2]]);\r\n axis.push([x, endy, endz]);\r\n result.push(axis);\r\n }\r\n return result;\r\n };\r\n\r\n Pattern.prototype.getRadians = function(n) {\r\n var m;\r\n m = n - 1;\r\n switch (m) {\r\n case -1:\r\n return 0;\r\n case 0:\r\n return Math.PI / 2;\r\n case 1:\r\n return Math.PI;\r\n case 2:\r\n return -Math.PI / 2;\r\n case 3:\r\n return Math.PI / 2;\r\n case 4:\r\n return Math.PI;\r\n case 5:\r\n return -Math.PI / 2;\r\n case 6:\r\n return Math.PI / 2;\r\n case 7:\r\n return Math.PI;\r\n case 8:\r\n return -Math.PI / 2;\r\n case 9:\r\n return Math.PI;\r\n case 10:\r\n return Math.PI;\r\n case 11:\r\n return Math.PI;\r\n case 12:\r\n return Math.PI;\r\n case 13:\r\n return Math.PI;\r\n case 14:\r\n return Math.PI;\r\n case 15:\r\n return Math.PI * 2 / 3;\r\n case 16:\r\n return -Math.PI * 2 / 3;\r\n case 17:\r\n return Math.PI * 2 / 3;\r\n case 18:\r\n return -Math.PI * 2 / 3;\r\n case 19:\r\n return Math.PI * 2 / 3;\r\n case 20:\r\n return -Math.PI * 2 / 3;\r\n case 21:\r\n return Math.PI * 2 / 3;\r\n case 22:\r\n return -Math.PI * 2 / 3;\r\n case 23:\r\n return Math.PI * 2 / 5;\r\n case 24:\r\n return Math.PI * 4 / 5;\r\n case 25:\r\n return -Math.PI * 2 / 5;\r\n case 26:\r\n return -Math.PI * 4 / 5;\r\n case 27:\r\n return Math.PI / 3;\r\n case 28:\r\n return Math.PI * 2 / 3;\r\n case 29:\r\n return -Math.PI / 3;\r\n case 30:\r\n return -Math.PI * 2 / 3;\r\n case 31:\r\n return Math.PI / 3;\r\n case 32:\r\n return -Math.PI / 3;\r\n case 33:\r\n return Math.PI;\r\n case 34:\r\n return Math.PI;\r\n case 35:\r\n return Math.PI;\r\n case 36:\r\n return Math.PI;\r\n case 37:\r\n return Math.PI;\r\n case 38:\r\n return Math.PI * 2 / 5;\r\n case 39:\r\n return Math.PI * 4 / 5;\r\n case 40:\r\n return -Math.PI * 2 / 5;\r\n case 41:\r\n return -Math.PI * 4 / 5;\r\n case 42:\r\n return Math.PI;\r\n case 43:\r\n return Math.PI;\r\n case 44:\r\n return Math.PI;\r\n case 45:\r\n return Math.PI;\r\n case 46:\r\n return Math.PI;\r\n case 47:\r\n return Math.PI;\r\n case 48:\r\n return Math.PI;\r\n case 49:\r\n return Math.PI;\r\n case 50:\r\n return Math.PI;\r\n case 51:\r\n return 2 * Math.PI / 3;\r\n case 52:\r\n return -2 * Math.PI / 3;\r\n case 53:\r\n return Math.PI;\r\n case 54:\r\n return Math.PI;\r\n case 55:\r\n return Math.PI;\r\n case 56:\r\n return Math.PI;\r\n case 57:\r\n return Math.PI;\r\n case 58:\r\n return Math.PI;\r\n case 59:\r\n return 2 * Math.PI / 3;\r\n case 60:\r\n return -2 * Math.PI / 3;\r\n }\r\n };\r\n\r\n Pattern.prototype.rotate = function(n, dv) {\r\n var m, rad, x0, x1, x5, y0, y1, y5, z0, z1, z5;\r\n rad = this.getRadians(n);\r\n x0 = this.boundingCube[0][0];\r\n y0 = this.boundingCube[0][1];\r\n z0 = this.boundingCube[0][2];\r\n x1 = this.boundingCube[1][0];\r\n y1 = this.boundingCube[1][1];\r\n z1 = this.boundingCube[1][2];\r\n x5 = (x1 + x0) / 2;\r\n y5 = (y1 + y0) / 2;\r\n z5 = (z1 + z0) / 2;\r\n m = n - 1;\r\n switch (m) {\r\n case 0:\r\n return this.spin([[x5, y5, z0], [x5, y5, z1]], rad / dv);\r\n case 1:\r\n return this.spin([[x5, y5, z0], [x5, y5, z1]], rad / dv);\r\n case 2:\r\n return this.spin([[x5, y5, z0], [x5, y5, z1]], rad / dv);\r\n case 3:\r\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\r\n case 4:\r\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\r\n case 5:\r\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\r\n case 6:\r\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\r\n case 7:\r\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\r\n case 8:\r\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\r\n case 9:\r\n return this.spin([[x0, y5, z0], [x1, y5, z1]], rad / dv);\r\n case 10:\r\n return this.spin([[x0, y5, z1], [x1, y5, z0]], rad / dv);\r\n case 11:\r\n return this.spin([[x5, y0, z0], [x5, y1, z1]], rad / dv);\r\n case 12:\r\n return this.spin([[x5, y0, z1], [x5, y1, z0]], rad / dv);\r\n case 13:\r\n return this.spin([[x0, y0, z5], [x1, y1, z5]], rad / dv);\r\n case 14:\r\n return this.spin([[x0, y1, z5], [x1, y0, z5]], rad / dv);\r\n case 15:\r\n return this.spin([[x0, y0, z0], [x1, y1, z1]], rad / dv);\r\n case 16:\r\n return this.spin([[x0, y0, z0], [x1, y1, z1]], rad / dv);\r\n case 17:\r\n return this.spin([[x1, y0, z0], [x0, y1, z1]], rad / dv);\r\n case 18:\r\n return this.spin([[x1, y0, z0], [x0, y1, z1]], rad / dv);\r\n case 19:\r\n return this.spin([[x0, y0, z1], [x1, y1, z0]], rad / dv);\r\n case 20:\r\n return this.spin([[x0, y0, z1], [x1, y1, z0]], rad / dv);\r\n case 21:\r\n return this.spin([[x1, y0, z1], [x0, y1, z0]], rad / dv);\r\n case 22:\r\n return this.spin([[x1, y0, z1], [x0, y1, z0]], rad / dv);\r\n case 23:\r\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\r\n case 24:\r\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\r\n case 25:\r\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\r\n case 26:\r\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\r\n case 27:\r\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\r\n case 28:\r\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\r\n case 29:\r\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\r\n case 30:\r\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\r\n case 31:\r\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\r\n case 32:\r\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\r\n case 33:\r\n return this.spin(this.horizPentAxes[0], rad / dv);\r\n case 34:\r\n return this.spin(this.horizPentAxes[1], rad / dv);\r\n case 35:\r\n return this.spin(this.horizPentAxes[2], rad / dv);\r\n case 36:\r\n return this.spin(this.horizPentAxes[3], rad / dv);\r\n case 37:\r\n return this.spin(this.horizPentAxes[4], rad / dv);\r\n case 38:\r\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\r\n case 39:\r\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\r\n case 40:\r\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\r\n case 41:\r\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\r\n case 42:\r\n return this.spin(this.vertPentAxes[0], rad / dv);\r\n case 43:\r\n return this.spin(this.vertPentAxes[1], rad / dv);\r\n case 44:\r\n return this.spin(this.vertPentAxes[2], rad / dv);\r\n case 45:\r\n return this.spin(this.vertPentAxes[3], rad / dv);\r\n case 46:\r\n return this.spin(this.vertPentAxes[4], rad / dv);\r\n case 47:\r\n return this.spin([[x5, y5, z5], [x5 + 1, y5, z5 + SQ3]], rad / dv);\r\n case 48:\r\n return this.spin([[x5, y5, z5], [x5 + SQ3, y5, z5 + 1]], rad / dv);\r\n case 49:\r\n return this.spin([[x5, y5, z5], [x5 - 1, y5, z5 + SQ3]], rad / dv);\r\n case 50:\r\n return this.spin([[x5, y5, z5], [x5 - SQ3, y5, z5 + 1]], rad / dv);\r\n case 51:\r\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\r\n case 52:\r\n return this.spin([[x5, y0, z5], [x5, y1, z5]], rad / dv);\r\n case 53:\r\n return this.spin(this.vertTriangleAxes[0], rad / dv);\r\n case 54:\r\n return this.spin(this.vertTriangleAxes[1], rad / dv);\r\n case 55:\r\n return this.spin(this.vertTriangleAxes[2], rad / dv);\r\n case 56:\r\n return this.spin(this.horizTriangleAxes[0], rad / dv);\r\n case 57:\r\n return this.spin(this.horizTriangleAxes[1], rad / dv);\r\n case 58:\r\n return this.spin(this.horizTriangleAxes[2], rad / dv);\r\n case 59:\r\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\r\n case 60:\r\n return this.spin([[x0, y5, z5], [x1, y5, z5]], rad / dv);\r\n }\r\n };\r\n\r\n Pattern.prototype.postInit = function() {\r\n this.totalSteps = this.currentPace * this.folds.length;\r\n this.setPov();\r\n if (this.rotation > 0) {\r\n this.totalSteps += Math.round(4 * this.currentPace * Math.abs(this.getRadians(this.rotation)) / Math.PI);\r\n }\r\n this.screenBounds = getBounds(this.ar, this.pov);\r\n this.workingCopy = this.clone();\r\n this.workingCopy.fold();\r\n this.boundingCube = this.workingCopy.getBoundingCube();\r\n if (!testing) {\r\n this.workingCopy.reposition();\r\n }\r\n this.workingCopy.boundingCube = this.workingCopy.getBoundingCube();\r\n if (!testing) {\r\n return this.populateChoices();\r\n }\r\n };\r\n\r\n return Pattern;\r\n\r\n })(Queue);\r\n\r\n Structure1 = (function(_super) {\r\n __extends(Structure1, _super);\r\n\r\n function Structure1() {\r\n var faces, square, total, type1, _i, _len;\r\n faces = [];\r\n while (true) {\r\n faces = [new Square(2, 0), new Square(0, 1), new Square(1, 1), new Square(2, 1), new Square(1, 2), new Square(1, 3)];\r\n total = 0;\r\n type1 = 0;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n square = faces[_i];\r\n total += square.marks.length;\r\n if (square.type === 1) {\r\n type1 += 1;\r\n }\r\n }\r\n if (total > 1 && type1 < 2) {\r\n break;\r\n }\r\n }\r\n Structure1.__super__.constructor.call(this, faces);\r\n this.currentPace = 30;\r\n this.offset = 42;\r\n this.folds = [];\r\n this.folds.push(new Fold([0], -(Math.PI / 2), [[0, 1, 0], [10, 1, 0]]));\r\n this.folds.push(new Fold([5], Math.PI / 2, [[0, 3, 0], [10, 3, 0]]));\r\n this.folds.push(new Fold([4, 5], Math.PI / 2, [[0, 2, 0], [10, 2, 0]]));\r\n this.folds.push(new Fold([1], Math.PI / 2, [[1, 0, 0], [1, 10, 0]]));\r\n this.folds.push(new Fold([0, 3], -(Math.PI / 2), [[2, 0, 0], [2, 10, 0]]));\r\n this.postInit();\r\n }\r\n\r\n return Structure1;\r\n\r\n })(Pattern);\r\n\r\n Structure2 = (function(_super) {\r\n __extends(Structure2, _super);\r\n\r\n function Structure2() {\r\n var faces, shape, total, _i, _len;\r\n faces = [];\r\n while (true) {\r\n faces = [new BlankSquare(0, 4), new BlankSquare(1, 4), new BlankSquare(4, 6), new BlankSquare(4, 7), new VertRect(0, 0), new Square(0, 2), new ZShape(1, 2), new HorizRect(2, 4), new ZInverted(4, 5), new Square(4, 5)];\r\n total = 0;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n shape = faces[_i];\r\n total += shape.marks.length;\r\n }\r\n if (total > 1) {\r\n break;\r\n }\r\n }\r\n Structure2.__super__.constructor.call(this, faces);\r\n this.currentPace = 30;\r\n this.offset = 20;\r\n this.folds = [];\r\n this.folds.push(new Fold([4, 5, 6], -Math.PI / 2, [[0, 4, 0], [10, 4, 0]]));\r\n this.folds.push(new Fold([2, 3, 8, 9], Math.PI / 2, [[0, 5, 0], [10, 5, 0]]));\r\n this.folds.push(new Fold([9, 2, 3], -Math.PI / 2, [[4, 5, 0], [4, 5, 10]]));\r\n this.folds.push(new Fold([2, 3], -Math.PI / 2, [[4, 0, 1], [4, 10, 1]]));\r\n this.folds.push(new Fold([3], Math.PI / 2, [[3, 0, 1], [3, 10, 1]]));\r\n this.folds.push(new Fold([0, 1], Math.PI / 2, [[2, 0, 0], [2, 10, 0]]));\r\n this.folds.push(new Fold([0], -Math.PI / 2, [[2, 0, 1], [2, 10, 1]]));\r\n this.folds.push(new Fold([4, 5], -Math.PI / 2, [[1, 4, 0], [1, 4, 10]]));\r\n this.folds.push(new Fold([4], Math.PI / 2, [[1, 0, 2], [1, 10, 2]]));\r\n this.postInit();\r\n }\r\n\r\n return Structure2;\r\n\r\n })(Pattern);\r\n\r\n Structure3 = (function(_super) {\r\n __extends(Structure3, _super);\r\n\r\n function Structure3() {\r\n var faces, shape, total, _i, _len;\r\n faces = [];\r\n while (true) {\r\n faces = [new BlankSquare(4, 7), new BlankSquare(6, 5), new DiagonalRect(6, 6), new SoftL(2, 0), new HorizRectThree(0, 3), new HorizRectThree(3, 3), new SoftLInv(4, 7), new Square(6, 4), new Square(3, 7)];\r\n total = 0;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n shape = faces[_i];\r\n total += shape.marks.length;\r\n }\r\n if (total > 1) {\r\n break;\r\n }\r\n }\r\n Structure3.__super__.constructor.call(this, faces);\r\n this.disallowedPairs = [[4, 3], [6, 0], [12, 1], [13, 2], [16, 2], [19, 0], [21, 3], [22, 1]];\r\n this.currentPace = 30;\r\n this.offset = 20;\r\n this.folds = [];\r\n this.folds.push(folder(0, [0], 2, [4]));\r\n this.folds.push(new Fold([0, 8], -Math.PI / 2, [[0, 7, 0], [10, 7, 0]]));\r\n this.folds.push(new Fold([1, 2, 7], Math.PI / 2, [[6, 0, 0], [6, 10, 0]]));\r\n this.folds.push(new Fold([1, 2], Math.PI / 2, [[6, 5, 0], [6, 5, 10]]));\r\n this.folds.push(new Fold([2], -Math.PI / 4, [[5, 5, 0], [5, 5, 10]]));\r\n this.folds.push(new Fold([3, 4], -Math.PI / 2, [[3, 0, 0], [3, 10, 0]]));\r\n this.folds.push(new Fold([3], Math.PI / 2, [[3, 3, 0], [3, 3, 10]]));\r\n this.folds.push(new Fold([0, 1, 2, 6, 7, 8], -Math.PI / 2, [[0, 4, 0], [10, 4, 0]]));\r\n this.postInit();\r\n }\r\n\r\n return Structure3;\r\n\r\n })(Pattern);\r\n\r\n Structure4 = (function(_super) {\r\n __extends(Structure4, _super);\r\n\r\n function Structure4() {\r\n var faces, shape, total, _i, _len;\r\n faces = [];\r\n while (true) {\r\n faces = [new Triangle(2, 0), new Triangle(6, 0), new HorizRectFour(0, 2), new HorizRectFour(4, 2), new FourSquare(4, 3), new VertRectFour(8, 3), new TriangleSideways(11, 5), new VertRectFour(8, 7), new TriangleSideways(11, 9)];\r\n total = 0;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n shape = faces[_i];\r\n total += shape.marks.length;\r\n }\r\n if (total > 1) {\r\n break;\r\n }\r\n }\r\n Structure4.__super__.constructor.call(this, faces);\r\n this.currentPace = 30;\r\n this.offset = 20;\r\n this.folds = [];\r\n this.folds.push(folder(1, [0, 1], 2, [2]));\r\n this.folds.push(folder(0, [0, 2], -2, [4]));\r\n this.folds.push(folder(1, [0, 1, 2, 3], 2, [3]));\r\n this.folds.push(folder(0, [6, 8], 2, [9]));\r\n this.folds.push(folder(1, [7, 8], -2, [7]));\r\n this.folds.push(folder(0, [5, 6, 7, 8], 2, [8]));\r\n this.postInit();\r\n }\r\n\r\n return Structure4;\r\n\r\n })(Pattern);\r\n\r\n Structure5 = (function(_super) {\r\n __extends(Structure5, _super);\r\n\r\n function Structure5() {\r\n var faces, n, shape, total, x, x0, x1, y, y0, y1, z, _i, _j, _len;\r\n faces = [];\r\n while (true) {\r\n faces = [new Pentagon(1, 2), new Square(0, 2), new Square(1, 2), new PentagonInv(2, 3), new Square(2, 3), new Square(2, 4), new Square(2, 5)];\r\n total = 0;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n shape = faces[_i];\r\n total += shape.marks.length;\r\n }\r\n if (total > 1) {\r\n break;\r\n }\r\n if (testing) {\r\n break;\r\n }\r\n }\r\n Structure5.__super__.constructor.call(this, faces);\r\n this.allowedRotations = [0, 24, 25, 26, 27, 43, 44, 45, 46, 47];\r\n for (n = _j = 4; _j <= 6; n = ++_j) {\r\n this.ar[n].preSpin([[2, 3, 0], [2, 3, 10]], -Math.PI / 10);\r\n }\r\n this.currentPace = 30;\r\n this.offset = 20;\r\n this.folds = [];\r\n x0 = this.ar[3].ar[0].ar[0];\r\n y0 = this.ar[3].ar[0].ar[1];\r\n z = this.ar[3].ar[0].ar[2];\r\n x1 = this.ar[3].ar[4].ar[0];\r\n y1 = this.ar[3].ar[4].ar[1];\r\n this.folds.push(new Fold([4, 5, 6], Math.PI / 2, [[x0, y0, z], [x1, y1, z]]));\r\n x = this.ar[3].ar[4].ar[0];\r\n y = this.ar[3].ar[4].ar[1];\r\n this.folds.push(folder(2, [5, 6], 5 / 2, [x, y]));\r\n x = this.ar[3].ar[3].ar[0];\r\n y = this.ar[3].ar[3].ar[1];\r\n this.folds.push(folder(2, [6], 5 / 2, [x, y]));\r\n this.folds.push(folder(1, [3, 4, 5, 6], -2, [3]));\r\n this.folds.push(folder(1, [0], 2, [2]));\r\n this.folds.push(folder(0, [1], -2.5, [1]));\r\n this.totalSteps = this.currentPace * this.folds.length;\r\n this.setPov();\r\n if (this.rotation > 0) {\r\n this.totalSteps += Math.round(4 * this.currentPace * Math.abs(this.getRadians(this.rotation)) / Math.PI);\r\n }\r\n this.screenBounds = getBounds(this.ar, this.pov);\r\n this.workingCopy = this.clone();\r\n this.workingCopy.fold();\r\n this.boundingCube = this.workingCopy.getBoundingCube();\r\n this.vertPentAxes = this.workingCopy.getVertPentAxes(0, this.boundingCube);\r\n if (!testing) {\r\n this.workingCopy.reposition();\r\n }\r\n this.workingCopy.boundingCube = this.workingCopy.getBoundingCube();\r\n this.workingCopy.vertPentAxes = this.workingCopy.getVertPentAxes(0, this.workingCopy.boundingCube);\r\n if (!testing) {\r\n this.populateChoices();\r\n }\r\n }\r\n\r\n return Structure5;\r\n\r\n })(Pattern);\r\n\r\n Structure6 = (function(_super) {\r\n __extends(Structure6, _super);\r\n\r\n function Structure6() {\r\n var faces, shape, total, type1, _i, _len;\r\n faces = [];\r\n while (true) {\r\n faces = [new Square(0, 0), new Square(1, 0), new Square(1, 1), new Square(1, 2), new Square(2, 2), new Square(1, 3)];\r\n total = 0;\r\n type1 = 0;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n shape = faces[_i];\r\n total += shape.marks.length;\r\n if (shape.type === 1) {\r\n type1 += 1;\r\n }\r\n }\r\n if (total > 1 && type1 < 2) {\r\n break;\r\n }\r\n if (testing) {\r\n break;\r\n }\r\n }\r\n Structure6.__super__.constructor.call(this, faces);\r\n this.currentPace = 30;\r\n this.offset = 20;\r\n this.folds = [];\r\n this.folds.push(folder(1, [5], -2, [3]));\r\n this.folds.push(folder(0, [4], 2, [2]));\r\n this.folds.push(folder(1, [3, 4, 5], -2, [2]));\r\n this.folds.push(folder(0, [0], -2, [1]));\r\n this.folds.push(folder(1, [0, 1], 2, [1]));\r\n this.postInit();\r\n }\r\n\r\n return Structure6;\r\n\r\n })(Pattern);\r\n\r\n Structure7 = (function(_super) {\r\n __extends(Structure7, _super);\r\n\r\n function Structure7() {\r\n var faces, i, order, _i;\r\n faces = [new DieFace(2, 0), new DieFace(1, 1), new DieFace(2, 1), new DieFace(0, 2), new DieFace(1, 2), new DieFace(1, 3)];\r\n Structure7.__super__.constructor.call(this, faces);\r\n order = shuffle([1, 2, 3, 4, 5, 6]);\r\n for (i = _i = 0; _i <= 5; i = ++_i) {\r\n this.ar[i].addDieSpots(order[i]);\r\n }\r\n this.currentPace = 30;\r\n this.offset = 20;\r\n this.folds = [];\r\n this.folds.push(folder(1, [5], -2, [3]));\r\n this.folds.push(folder(0, [3], -2, [1]));\r\n this.folds.push(folder(1, [3, 4, 5], -2, [2]));\r\n this.folds.push(folder(1, [0], 2, [1]));\r\n this.folds.push(folder(0, [0, 2], 2, [2]));\r\n this.postInit();\r\n }\r\n\r\n Structure7.prototype.getFalseCandidate = function(correctPossibilities) {\r\n return this.getDieFalseCandidate(correctPossibilities);\r\n };\r\n\r\n return Structure7;\r\n\r\n })(Pattern);\r\n\r\n Structure8 = (function(_super) {\r\n __extends(Structure8, _super);\r\n\r\n function Structure8() {\r\n var faces, shape, total, _i, _len;\r\n faces = [];\r\n while (true) {\r\n faces = [new BlankTriangle(5, 0), new HorizRectFour(3, 2), new BlankTriangleInv3(0, 5), new VertRectFour(2, 3), new BlankTriangleInv2(5, 5), new BlankTriangleInv3(5, 5), new BlankTriangleInv1(5, 5), new BlankTriangle(5, 5), new VertRectFour(7, 3), new BlankTriangleInv1(10, 5), new HorizRectFour(3, 7), new BlankTriangleInv2(5, 10)];\r\n total = 0;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n shape = faces[_i];\r\n total += shape.marks.length;\r\n }\r\n if (total > 1) {\r\n break;\r\n }\r\n if (testing) {\r\n break;\r\n }\r\n }\r\n Structure8.__super__.constructor.call(this, faces);\r\n this.currentPace = 30;\r\n this.offset = 20;\r\n this.folds = [];\r\n this.folds.push(folder(1, [0], 2, [2]));\r\n this.folds.push(folder(1, [0, 1], 2, [3]));\r\n this.folds.push(folder(0, [2], -2, [2]));\r\n this.folds.push(folder(0, [2, 3], -2, [3]));\r\n this.folds.push(folder(1, [11], -2, [8]));\r\n this.folds.push(folder(1, [10, 11], -2, [7]));\r\n this.folds.push(folder(0, [9], 2, [8]));\r\n this.folds.push(folder(0, [8, 9], 2, [7]));\r\n this.postInit();\r\n }\r\n\r\n return Structure8;\r\n\r\n })(Pattern);\r\n\r\n Structure9 = (function(_super) {\r\n __extends(Structure9, _super);\r\n\r\n function Structure9() {\r\n var faces, i, shape, total, x, y, _i, _j, _k, _len;\r\n faces = [];\r\n while (true) {\r\n faces = [new HexSection(7, 1), new HexSection2(7, 1), new HexSection3(7, 1), new HexSection4(7, 1), new HexSection5(7, 1), new HexSection6(7, 1), new BlankSquare(1, 2), new BlankSquare(2, 2), new BlankSquare(3, 2), new BlankSquare(4, 2), new BlankSquare(5, 2), new BlankSquare(6, 2), new HexSection(1, 4), new HexSection2(1, 4), new HexSection3(1, 4), new HexSection4(1, 4), new HexSection5(1, 4), new HexSection6(1, 4)];\r\n total = 0;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n shape = faces[_i];\r\n total += shape.marks.length;\r\n }\r\n if (total > 1) {\r\n break;\r\n }\r\n if (testing) {\r\n break;\r\n }\r\n }\r\n Structure9.__super__.constructor.call(this, faces);\r\n this.allowedRotations = [0, 2, 5, 8, 28, 29, 30, 31, 48, 49, 50, 51];\r\n x = this.ar[11].ar[1].ar[0] - this.ar[1].ar[1].ar[0];\r\n y = this.ar[11].ar[1].ar[1] - this.ar[1].ar[1].ar[1];\r\n for (i = _j = 0; _j <= 5; i = ++_j) {\r\n this.ar[i].preTranslate(x, y, 0);\r\n }\r\n x = this.ar[12].ar[2].ar[0] - this.ar[6].ar[3].ar[0];\r\n y = this.ar[6].ar[3].ar[1] - this.ar[12].ar[2].ar[1];\r\n for (i = _k = 12; _k <= 17; i = ++_k) {\r\n this.ar[i].preTranslate(x, y, 0);\r\n }\r\n this.currentPace = 30;\r\n this.offset = 20;\r\n this.folds = [];\r\n this.folds.push(folder(1, [12, 13, 14, 15, 16, 17], -2, [3]));\r\n this.folds.push(folder(0, [6, 12, 13, 14, 15, 16, 17], -3, [2]));\r\n this.folds.push(folder(0, [6, 7, 12, 13, 14, 15, 16, 17], -3, [3]));\r\n this.folds.push(folder(0, [6, 7, 8, 12, 13, 14, 15, 16, 17], -3, [4]));\r\n this.folds.push(folder(1, [0, 1, 2, 3, 4, 5], 2, [2]));\r\n this.folds.push(folder(0, [0, 1, 2, 3, 4, 5, 11], 3, [6]));\r\n this.folds.push(folder(0, [0, 1, 2, 3, 4, 5, 10, 11], 3, [5]));\r\n this.postInit();\r\n }\r\n\r\n return Structure9;\r\n\r\n })(Pattern);\r\n\r\n Structure10 = (function(_super) {\r\n __extends(Structure10, _super);\r\n\r\n function Structure10() {\r\n var faces, shape, type15, type23, x0, x1, y0, y1, z, _i, _len;\r\n faces = [];\r\n while (true) {\r\n faces = [new HexSection8(2, 2), new StripedSquare(2, 1), new HexSection7(3, 1), new StripedSquare(1, 2), new StripedSquare(3, 0)];\r\n if (testing) {\r\n break;\r\n }\r\n type15 = false;\r\n type23 = false;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n shape = faces[_i];\r\n if (shape.type === 15) {\r\n type15 = true;\r\n }\r\n if (shape.type === 23) {\r\n type23 = true;\r\n }\r\n }\r\n if (type15 && type23) {\r\n break;\r\n }\r\n }\r\n Structure10.__super__.constructor.call(this, faces);\r\n this.allowedRotations = [0, 57, 58, 59, 60, 61];\r\n this.ar[3].preSpin([[2, 2, 0], [2, 2, 10]], Math.PI / 6);\r\n this.ar[4].preSpin([[3, 1, 0], [3, 1, 10]], Math.PI / 6);\r\n this.currentPace = 30;\r\n this.offset = 20;\r\n this.folds = [];\r\n x0 = this.ar[0].ar[2].ar[0];\r\n y0 = this.ar[0].ar[2].ar[1];\r\n z = this.ar[0].ar[2].ar[2];\r\n x1 = this.ar[0].ar[0].ar[0];\r\n y1 = this.ar[0].ar[0].ar[1];\r\n this.folds.push(new Fold([3], Math.PI / 2, [[x0, y0, z], [x1, y1, z]]));\r\n x0 = this.ar[2].ar[0].ar[0];\r\n y0 = this.ar[2].ar[0].ar[1];\r\n z = this.ar[2].ar[0].ar[2];\r\n x1 = this.ar[2].ar[2].ar[0];\r\n y1 = this.ar[2].ar[2].ar[1];\r\n this.folds.push(new Fold([4], -Math.PI / 2, [[x0, y0, z], [x1, y1, z]]));\r\n this.folds.push(folder(0, [0, 3], 2, [2]));\r\n this.folds.push(folder(0, [2, 4], -2, [3]));\r\n this.folds.push(new Fold([0, 1, 2, 3, 4], Math.PI / 3, [[0, 1.5, 0.288675], [10, 1.5, 0.288675]]));\r\n this.totalSteps = this.currentPace * this.folds.length;\r\n this.setPov();\r\n if (this.rotation > 0) {\r\n this.totalSteps += Math.round(4 * this.currentPace * Math.abs(this.getRadians(this.rotation)) / Math.PI);\r\n }\r\n this.screenBounds = getBounds(this.ar, this.pov);\r\n this.workingCopy = this.clone();\r\n this.workingCopy.fold();\r\n this.boundingCube = this.workingCopy.getBoundingCube();\r\n this.horizTriangleAxes = this.workingCopy.getHorizTriangleAxes(0, this.boundingCube);\r\n if (!testing) {\r\n this.workingCopy.reposition();\r\n }\r\n this.workingCopy.boundingCube = this.workingCopy.getBoundingCube();\r\n this.workingCopy.horizTriangleAxes = this.workingCopy.getHorizTriangleAxes(0, this.workingCopy.boundingCube);\r\n if (!testing) {\r\n this.populateChoices();\r\n }\r\n }\r\n\r\n return Structure10;\r\n\r\n })(Pattern);\r\n\r\n Structure11 = (function(_super) {\r\n __extends(Structure11, _super);\r\n\r\n function Structure11() {\r\n var faces, shape, type24, _i, _len;\r\n faces = [];\r\n while (true) {\r\n faces = [new SquareDiamond(0, 0), new SquareDiamond(0, 1), new SquareDiamond(1, 1), new SquareDiamond(1, 2), new SquareDiamond(2, 2), new SquareDiamond(2, 3)];\r\n if (testing) {\r\n break;\r\n }\r\n type24 = 0;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n shape = faces[_i];\r\n if (shape.type === 24) {\r\n ++type24;\r\n }\r\n }\r\n if (type24 === 2) {\r\n break;\r\n }\r\n }\r\n Structure11.__super__.constructor.call(this, faces);\r\n this.currentPace = 30;\r\n this.offset = 20;\r\n this.folds = [];\r\n this.folds.push(folder(1, [5], -2, [3]));\r\n this.folds.push(folder(0, [4, 5], 2, [2]));\r\n this.folds.push(folder(1, [0], 2, [1]));\r\n this.folds.push(folder(0, [0, 1], -2, [1]));\r\n this.folds.push(folder(1, [0, 1, 2], 2, [2]));\r\n this.postInit();\r\n }\r\n\r\n return Structure11;\r\n\r\n })(Pattern);\r\n\r\n Structure12 = (function(_super) {\r\n __extends(Structure12, _super);\r\n\r\n function Structure12() {\r\n var faces, shape, type2, type6, _i, _len;\r\n faces = [];\r\n while (true) {\r\n faces = [new HorizRect(4, 0), new HorizRect(0, 2), new HorizRect(4, 1), new HorizRect(0, 3), new El(3, 2), new SquareFor12(4, 2), new ElInv(6, 2), new SquareFor12(2, 4)];\r\n if (testing) {\r\n break;\r\n }\r\n type6 = 0;\r\n type2 = 0;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n shape = faces[_i];\r\n if (shape.type === 5 || shape.type === 6) {\r\n ++type6;\r\n }\r\n if (shape.type === 2) {\r\n ++type2;\r\n }\r\n }\r\n if (type2 > 0 && type6 > 0) {\r\n break;\r\n }\r\n }\r\n Structure12.__super__.constructor.call(this, faces);\r\n this.allowedRotations = [0, 14];\r\n this.currentPace = 30;\r\n this.offset = 20;\r\n this.folds = [];\r\n this.folds.push(folder(0, [6], 2, [6]));\r\n this.folds.push(folder(1, [0], 2, [1]));\r\n this.folds.push(folder(1, [0, 2], 2, [2]));\r\n this.folds.push(folder(0, [0, 2, 5, 6], 2, [4]));\r\n this.folds.push(folder(1, [7], -2, [4]));\r\n this.folds.push(folder(1, [1], 2, [3]));\r\n this.folds.push(folder(0, [1, 3], -2, [2]));\r\n this.postInit();\r\n }\r\n\r\n return Structure12;\r\n\r\n })(Pattern);\r\n\r\n Structure13 = (function(_super) {\r\n __extends(Structure13, _super);\r\n\r\n function Structure13() {\r\n var DIV1, DIV2, DIV3, faces, ga, i, shape, type0, type16, type17, type28, type29, type7, x, y, _i, _j, _k, _l, _len, _len1, _ref;\r\n DIV1 = 4.13916062725;\r\n DIV2 = 0.92729522;\r\n DIV3 = 3.565368245885;\r\n faces = [];\r\n while (true) {\r\n faces = [new TwoPentagon(4, 4), new InnerRect(5, 0), new InnerTriangleInv(7, 0), new InnerRect(0, 4), new InnerRect(2, 4), new InnerRect(4, 4), new InnerRect(6, 4), new InnerTriangle(0, 5), new InnerTriangle(2, 5), new InnerTriangle(4, 5), new InnerTriangle(6, 5)];\r\n if (testing) {\r\n break;\r\n }\r\n type0 = 0;\r\n type7 = 0;\r\n type16 = 0;\r\n type17 = 0;\r\n type28 = 0;\r\n type29 = 0;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n shape = faces[_i];\r\n if (shape.type === 0) {\r\n ++type0;\r\n }\r\n if (shape.type === 7) {\r\n ++type7;\r\n }\r\n if (shape.type === 16) {\r\n ++type16;\r\n }\r\n if (shape.type === 17) {\r\n ++type17;\r\n }\r\n if (shape.type === 28) {\r\n ++type28;\r\n }\r\n if (shape.type === 29) {\r\n ++type29;\r\n }\r\n }\r\n if (type28 > 0 && type7 > 0 && type0 > 0 && type29 > 0 && type17 > 0 && type16 > 0) {\r\n break;\r\n }\r\n }\r\n Structure13.__super__.constructor.call(this, faces);\r\n this.allowedRotations = [0, 24, 25, 26, 27];\r\n this.disallowedPairs = [[0, 0], [0, 1], [24, 0], [24, 1], [25, 0], [25, 1], [26, 0], [26, 1], [27, 0], [27, 1]];\r\n this.mainOffset = OFFSET - 5;\r\n this.currentPace = 30;\r\n this.offset = 20;\r\n ga = (function(_this) {\r\n return function(f0, p0, f1, p1) {\r\n var axis1, axis2, coord, result, _j, _k, _len1, _len2, _ref, _ref1;\r\n result = [];\r\n axis1 = [];\r\n axis2 = [];\r\n _ref = _this.ar[f0].ar[p0].ar;\r\n for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {\r\n coord = _ref[_j];\r\n axis1.push(coord);\r\n }\r\n _ref1 = _this.ar[f1].ar[p1].ar;\r\n for (_k = 0, _len2 = _ref1.length; _k < _len2; _k++) {\r\n coord = _ref1[_k];\r\n axis2.push(coord);\r\n }\r\n result.push(axis1);\r\n result.push(axis2);\r\n return result;\r\n };\r\n })(this);\r\n x = this.ar[0].ar[3].ar[0] - this.ar[1].ar[3].ar[0];\r\n y = this.ar[0].ar[3].ar[1] - this.ar[1].ar[3].ar[1];\r\n for (i = _j = 1; _j <= 2; i = ++_j) {\r\n this.ar[i].preTranslate(x, y, 0);\r\n }\r\n x = this.ar[0].ar[3].ar[0];\r\n y = this.ar[0].ar[3].ar[1];\r\n for (i = _k = 1; _k <= 2; i = ++_k) {\r\n this.ar[i].preSpin([[x, y, 0], [x, y, 10]], Math.PI / 5);\r\n }\r\n x = this.ar[9].ar[0].ar[0];\r\n y = this.ar[9].ar[0].ar[1];\r\n _ref = [3, 4, 7, 8];\r\n for (_l = 0, _len1 = _ref.length; _l < _len1; _l++) {\r\n i = _ref[_l];\r\n this.ar[i].preSpin([[x, y, 0], [x, y, 10]], -DIV2);\r\n }\r\n this.folds = [];\r\n this.folds.push(new Fold([7], Math.PI / DIV1, ga(3, 2, 3, 3)));\r\n this.folds.push(new Fold([3, 7], -(2 * Math.PI / 5), ga(3, 1, 3, 2)));\r\n this.folds.push(new Fold([3, 4, 7], -(Math.PI / DIV1), ga(4, 2, 4, 3)));\r\n this.folds.push(new Fold([3, 4, 7, 8], -(Math.PI / DIV3), ga(9, 0, 9, 2)));\r\n this.folds.push(folder(1, [3, 4, 7, 8, 9, 10], -DIV1, [5]));\r\n this.folds.push(folder(0, [6, 10], 5 / 2, [6]));\r\n this.folds.push(new Fold([2], -(Math.PI / DIV1), ga(2, 0, 2, 1)));\r\n this.folds.push(new Fold([1, 2], -(Math.PI / 2), ga(1, 2, 1, 3)));\r\n this.folds.push(folder(1, [0, 1, 2], 2, [4]));\r\n this.postInit();\r\n }\r\n\r\n return Structure13;\r\n\r\n })(Pattern);\r\n\r\n Structure14 = (function(_super) {\r\n __extends(Structure14, _super);\r\n\r\n function Structure14() {\r\n var faces, square, total, type1, _i, _len;\r\n faces = [];\r\n while (true) {\r\n faces = [new Square(0, 0), new Square(0, 1), new Square(1, 1), new Square(2, 1), new Square(3, 1), new Square(3, 2)];\r\n total = 0;\r\n type1 = 0;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n square = faces[_i];\r\n total += square.marks.length;\r\n if (square.type === 1) {\r\n type1 += 1;\r\n }\r\n }\r\n if (total > 1 && type1 < 2) {\r\n break;\r\n }\r\n }\r\n Structure14.__super__.constructor.call(this, faces);\r\n this.currentPace = 30;\r\n this.offset = 42;\r\n this.folds = [];\r\n this.folds.push(folder(1, [0], 2, [1]));\r\n this.folds.push(folder(0, [0, 1], -2, [1]));\r\n this.folds.push(folder(0, [0, 1, 2], -2, [2]));\r\n this.folds.push(folder(1, [5], -2, [2]));\r\n this.folds.push(folder(0, [4, 5], 2, [3]));\r\n this.postInit();\r\n }\r\n\r\n return Structure14;\r\n\r\n })(Pattern);\r\n\r\n Structure15 = (function(_super) {\r\n __extends(Structure15, _super);\r\n\r\n function Structure15() {\r\n var drop, faces, shape, total, _i, _len;\r\n drop = 2 - Math.sqrt(2);\r\n faces = [];\r\n while (true) {\r\n faces = [new DiagonalRect(0, drop), new BlankSquare(0, 2), new BlankSquare(2, 8), new Square(0, 3), new SoftL(3, 1), new HorizRectThree(1, 4), new SoftLSide(1, 6), new VertRectThree(4, 5), new Square(3, 8)];\r\n total = 0;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n shape = faces[_i];\r\n total += shape.marks.length;\r\n }\r\n if (total > 1) {\r\n break;\r\n }\r\n }\r\n Structure15.__super__.constructor.call(this, faces);\r\n this.disallowedPairs = [[0, 2], [1, 1], [2, 0], [3, 3], [5, 1], [8, 3], [14, 0], [15, 2]];\r\n this.currentPace = 30;\r\n this.offset = 20;\r\n this.folds = [];\r\n this.folds.push(folder(1, [0], -4, [2]));\r\n this.folds.push(folder(1, [0, 1], 2, [3]));\r\n this.folds.push(folder(0, [0, 1, 3], -2, [1]));\r\n this.folds.push(folder(1, [0, 1, 3, 4], 2, [4]));\r\n this.folds.push(folder(1, [0, 1, 3, 4, 5], 2, [5]));\r\n this.folds.push(folder(0, [2], -2, [3]));\r\n this.folds.push(folder(1, [2, 8], -2, [8]));\r\n this.folds.push(folder(0, [7], 2, [4]));\r\n this.postInit();\r\n }\r\n\r\n return Structure15;\r\n\r\n })(Pattern);\r\n\r\n Structure16 = (function(_super) {\r\n __extends(Structure16, _super);\r\n\r\n function Structure16() {\r\n var faces, shape, type0, type15, _i, _len;\r\n faces = [];\r\n while (true) {\r\n faces = [new HexSection8(1, 1), new Square(1, 0), new Square(1, 1), new Square(1, 2), new HexSection7(2, 2)];\r\n if (testing) {\r\n break;\r\n }\r\n type15 = false;\r\n type0 = false;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n shape = faces[_i];\r\n if (shape.type === 15) {\r\n type15 = true;\r\n }\r\n if (shape.type === 2) {\r\n type0 = true;\r\n }\r\n if (shape.type === 1) {\r\n type0 = true;\r\n }\r\n }\r\n if (type15 && type0) {\r\n break;\r\n }\r\n }\r\n Structure16.__super__.constructor.call(this, faces);\r\n this.allowedRotations = [0, 57, 58, 59, 60, 61];\r\n this.currentPace = 30;\r\n this.offset = 20;\r\n this.folds = [];\r\n this.folds.push(folder(0, [0], 2, [1]));\r\n this.folds.push(folder(1, [0, 1], -3 / 2, [1]));\r\n this.folds.push(folder(0, [4], -2, [2]));\r\n this.folds.push(folder(1, [3, 4], 3 / 2, [2]));\r\n this.folds.push(new Fold([0, 1, 2, 3, 4], Math.PI / 3, [[0, 1.5, 0.288675], [10, 1.5, 0.288675]]));\r\n this.totalSteps = this.currentPace * this.folds.length;\r\n this.setPov();\r\n if (this.rotation > 0) {\r\n this.totalSteps += Math.round(4 * this.currentPace * Math.abs(this.getRadians(this.rotation)) / Math.PI);\r\n }\r\n this.screenBounds = getBounds(this.ar, this.pov);\r\n this.workingCopy = this.clone();\r\n this.workingCopy.fold();\r\n this.boundingCube = this.workingCopy.getBoundingCube();\r\n this.horizTriangleAxes = this.workingCopy.getHorizTriangleAxes(0, this.boundingCube);\r\n if (!testing) {\r\n this.workingCopy.reposition();\r\n }\r\n this.workingCopy.boundingCube = this.workingCopy.getBoundingCube();\r\n this.workingCopy.horizTriangleAxes = this.workingCopy.getHorizTriangleAxes(0, this.workingCopy.boundingCube);\r\n if (!testing) {\r\n this.populateChoices();\r\n }\r\n }\r\n\r\n return Structure16;\r\n\r\n })(Pattern);\r\n\r\n Structure17 = (function(_super) {\r\n __extends(Structure17, _super);\r\n\r\n function Structure17() {\r\n var faces, shape, type30, type31, _i, _len;\r\n faces = [];\r\n while (true) {\r\n faces = [new StripedRect(2, 0), new StripedRect(2, 1), new StripedRect(2, 2), new StripedRect(2, 3), new StripedRect(2, 4), new VertPentagonInv(2, 3), new VertPentagon(4, 4)];\r\n if (testing) {\r\n break;\r\n }\r\n type30 = false;\r\n type31 = false;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n shape = faces[_i];\r\n if (shape.type === 30) {\r\n type30 = true;\r\n }\r\n if (shape.type === 31) {\r\n type31 = true;\r\n }\r\n }\r\n if (type30 && type31) {\r\n break;\r\n }\r\n }\r\n Structure17.__super__.constructor.call(this, faces);\r\n this.allowedRotations = [0, 34, 35, 36, 37, 38, 39, 40, 41, 42];\r\n this.currentPace = 30;\r\n this.offset = 20;\r\n this.folds = [];\r\n this.folds.push(folder(0, [5], -2, [2]));\r\n this.folds.push(folder(0, [6], 2, [4]));\r\n this.folds.push(folder(1, [0], 5 / 2, [1]));\r\n this.folds.push(folder(1, [0, 1], 5 / 2, [2]));\r\n this.folds.push(folder(1, [4, 6], -5 / 2, [4]));\r\n this.folds.push(folder(1, [3, 4, 6], -5 / 2, [3]));\r\n this.totalSteps = this.currentPace * this.folds.length;\r\n this.setPov();\r\n if (this.rotation > 0) {\r\n this.totalSteps += Math.round(4 * this.currentPace * Math.abs(this.getRadians(this.rotation)) / Math.PI);\r\n }\r\n this.screenBounds = getBounds(this.ar, this.pov);\r\n this.workingCopy = this.clone();\r\n this.workingCopy.fold();\r\n this.boundingCube = this.workingCopy.getBoundingCube();\r\n this.horizPentAxes = this.workingCopy.getHorizPentAxes(6, this.boundingCube);\r\n if (!testing) {\r\n this.workingCopy.reposition();\r\n }\r\n this.workingCopy.boundingCube = this.workingCopy.getBoundingCube();\r\n this.workingCopy.horizPentAxes = this.workingCopy.getHorizPentAxes(6, this.workingCopy.boundingCube);\r\n if (!testing) {\r\n this.populateChoices();\r\n }\r\n }\r\n\r\n return Structure17;\r\n\r\n })(Pattern);\r\n\r\n Structure18 = (function(_super) {\r\n __extends(Structure18, _super);\r\n\r\n function Structure18() {\r\n var faces, shape, type15, type32, type33, x0, x1, y0, y1, z, _i, _len;\r\n faces = [];\r\n while (true) {\r\n faces = [new TippedHexSection(0, 2), new TippedRect(0, 2), new TippedRect(2, 2), new TippedRect(4, 2), new TippedHexSectionInv(4, 3)];\r\n if (testing) {\r\n break;\r\n }\r\n type15 = false;\r\n type33 = false;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n shape = faces[_i];\r\n if (shape.type === 32) {\r\n type32 = true;\r\n }\r\n if (shape.type === 33) {\r\n type33 = true;\r\n }\r\n }\r\n if (type32 && type33) {\r\n break;\r\n }\r\n }\r\n Structure18.__super__.constructor.call(this, faces);\r\n this.allowedRotations = [0, 52, 53, 54, 55, 56];\r\n this.currentPace = 30;\r\n this.offset = 20;\r\n this.ar[3].preSpin([[4, 3, 0], [4, 3, 10]], 2 * Math.PI / 3);\r\n this.folds = [];\r\n x0 = this.ar[4].ar[0].ar[0];\r\n y0 = this.ar[4].ar[0].ar[1];\r\n z = this.ar[4].ar[0].ar[2];\r\n x1 = this.ar[4].ar[2].ar[0];\r\n y1 = this.ar[4].ar[2].ar[1];\r\n this.folds.push(new Fold([3], Math.PI / 2, [[x0, y0, z], [x1, y1, z]]));\r\n this.folds.push(folder(1, [3, 4], -2, [3]));\r\n this.folds.push(folder(1, [0], 2, [2]));\r\n this.folds.push(folder(0, [0, 1], -3, [2]));\r\n this.folds.push(folder(0, [2, 3, 4], 3, [2]));\r\n this.totalSteps = this.currentPace * this.folds.length;\r\n this.setPov();\r\n if (this.rotation > 0) {\r\n this.totalSteps += Math.round(4 * this.currentPace * Math.abs(this.getRadians(this.rotation)) / Math.PI);\r\n }\r\n this.screenBounds = getBounds(this.ar, this.pov);\r\n this.workingCopy = this.clone();\r\n this.workingCopy.fold();\r\n this.boundingCube = this.workingCopy.getBoundingCube();\r\n this.vertTriangleAxes = this.workingCopy.getVertTriangleAxes(0, this.boundingCube);\r\n if (!testing) {\r\n this.workingCopy.reposition();\r\n }\r\n this.workingCopy.boundingCube = this.workingCopy.getBoundingCube();\r\n this.workingCopy.vertTriangleAxes = this.workingCopy.getVertTriangleAxes(0, this.workingCopy.boundingCube);\r\n if (!testing) {\r\n this.populateChoices();\r\n }\r\n }\r\n\r\n return Structure18;\r\n\r\n })(Pattern);\r\n\r\n Structure19 = (function(_super) {\r\n __extends(Structure19, _super);\r\n\r\n function Structure19() {\r\n var faces, shape, type0, type34, type35, _i, _len;\r\n faces = [];\r\n while (true) {\r\n faces = [new DblMarkSquare(1, 0), new DblMarkSquare(1, 1), new DblMarkSquare(2, 1), new DblMarkSquare(0, 2), new DblMarkSquare(1, 2), new DblMarkSquare(0, 3)];\r\n if (testing) {\r\n break;\r\n }\r\n type34 = false;\r\n type35 = false;\r\n type0 = 0;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n shape = faces[_i];\r\n if (shape.type === 34) {\r\n type34 = true;\r\n }\r\n if (shape.type === 35) {\r\n type35 = true;\r\n }\r\n if (shape.type === 0) {\r\n ++type0;\r\n }\r\n }\r\n if (type34 && type35 && type0 === 3) {\r\n break;\r\n }\r\n }\r\n Structure19.__super__.constructor.call(this, faces);\r\n this.currentPace = 30;\r\n this.offset = 20;\r\n this.folds = [];\r\n this.folds.push(folder(1, [5], -2, [3]));\r\n this.folds.push(folder(0, [3, 5], -2, [1]));\r\n this.folds.push(folder(1, [0], 2, [1]));\r\n this.folds.push(folder(0, [2], 2, [2]));\r\n this.folds.push(folder(1, [0, 1, 2], 2, [2]));\r\n this.postInit();\r\n }\r\n\r\n return Structure19;\r\n\r\n })(Pattern);\r\n\r\n Structure20 = (function(_super) {\r\n __extends(Structure20, _super);\r\n\r\n function Structure20() {\r\n var faces, shape, total, _i, _len;\r\n faces = [];\r\n while (true) {\r\n faces = [new BlankSquare(3, 0), new BlankSquare(3, 1), new BlankSquare(3, 2), new Square(3, 3), new HorseShoe(0, 4), new VertRect(3, 4), new VertRectThree(3, 6), new HorseShoeSideways(6, 6), new HorizRect(4, 9), new Square(6, 9)];\r\n total = 0;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n shape = faces[_i];\r\n total += shape.marks.length;\r\n }\r\n if (total > 1) {\r\n break;\r\n }\r\n if (testing) {\r\n break;\r\n }\r\n }\r\n Structure20.__super__.constructor.call(this, faces);\r\n this.currentPace = 30;\r\n this.mainOffset = OFFSET - 5;\r\n this.offset = 20;\r\n this.folds = [];\r\n this.folds.push(folder(0, [9], 2, [6]));\r\n this.folds.push(folder(1, [8, 9], -2, [9]));\r\n this.folds.push(folder(0, [7, 8, 9], 2, [4]));\r\n this.folds.push(folder(1, [0], -2, [1]));\r\n this.folds.push(folder(1, [0, 1], -2, [2]));\r\n this.folds.push(folder(1, [0, 1, 2], 2, [3]));\r\n this.folds.push(folder(1, [0, 1, 2, 3], 2, [4]));\r\n this.folds.push(folder(0, [4], -2, [3]));\r\n this.folds.push(folder(1, [6, 7, 8, 9], -2, [6]));\r\n this.postInit();\r\n }\r\n\r\n return Structure20;\r\n\r\n })(Pattern);\r\n\r\n Structure21 = (function(_super) {\r\n __extends(Structure21, _super);\r\n\r\n function Structure21() {\r\n var faces, ga, i, shape, total, x, y, _i, _j, _k, _len, _len1, _len2, _ref, _ref1;\r\n faces = [];\r\n while (true) {\r\n faces = [new VertRect(12, 2), new VertRect(12, 6), new HorizRect(8, 3), new HorizRect(8, 6), new HorizRect(6, 3), new HorizRect(4, 6), new HorizRect(6, 6), new Coffin(0, 4), new VertRect(12, 4), new Coffin(0, 10)];\r\n total = 0;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n shape = faces[_i];\r\n total += shape.marks.length;\r\n }\r\n if (total > 1) {\r\n break;\r\n }\r\n if (testing) {\r\n break;\r\n }\r\n }\r\n Structure21.__super__.constructor.call(this, faces);\r\n this.allowedRotations = [4, 6, 7, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 22, 23];\r\n this.mainOffset = OFFSET - 5;\r\n this.currentPace = 30;\r\n this.offset = 20;\r\n ga = (function(_this) {\r\n return function(f0, p0, f1, p1) {\r\n var axis1, axis2, coord, result, _j, _k, _len1, _len2, _ref, _ref1;\r\n result = [];\r\n axis1 = [];\r\n axis2 = [];\r\n _ref = _this.ar[f0].ar[p0].ar;\r\n for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {\r\n coord = _ref[_j];\r\n axis1.push(coord);\r\n }\r\n _ref1 = _this.ar[f1].ar[p1].ar;\r\n for (_k = 0, _len2 = _ref1.length; _k < _len2; _k++) {\r\n coord = _ref1[_k];\r\n axis2.push(coord);\r\n }\r\n result.push(axis1);\r\n result.push(axis2);\r\n return result;\r\n };\r\n })(this);\r\n x = this.ar[7].ar[0].ar[0];\r\n y = this.ar[7].ar[0].ar[1];\r\n _ref = [3, 5, 6];\r\n for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {\r\n i = _ref[_j];\r\n this.ar[i].preSpin([[x, y, 0], [x, y, 10]], -Math.PI / 6);\r\n }\r\n x = this.ar[7].ar[5].ar[0];\r\n y = this.ar[7].ar[5].ar[1];\r\n _ref1 = [2, 4];\r\n for (_k = 0, _len2 = _ref1.length; _k < _len2; _k++) {\r\n i = _ref1[_k];\r\n this.ar[i].preSpin([[x, y, 0], [x, y, 10]], Math.PI / 6);\r\n }\r\n x = this.ar[6].ar[2].ar[0] - this.ar[9].ar[4].ar[0];\r\n y = this.ar[6].ar[2].ar[1] - this.ar[9].ar[4].ar[1];\r\n this.ar[9].preTranslate(x, y, 0);\r\n this.folds = [];\r\n this.folds.push(folder(1, [0], 2, [4]));\r\n this.folds.push(folder(1, [1], -2, [6]));\r\n this.folds.push(folder(0, [0, 1, 8], 2, [12]));\r\n this.folds.push(new Fold([4], -Math.PI / 3, ga(4, 1, 4, 2)));\r\n this.folds.push(new Fold([4, 2], -Math.PI / 2, ga(2, 2, 2, 3)));\r\n this.folds.push(new Fold([9], Math.PI / 2, ga(6, 2, 6, 3)));\r\n this.folds.push(new Fold([5], -Math.PI / 3, ga(5, 1, 5, 2)));\r\n this.folds.push(new Fold([5, 6, 9], -Math.PI / 3, ga(3, 0, 3, 3)));\r\n this.folds.push(new Fold([3, 5, 6, 9], -Math.PI / 2, ga(3, 0, 3, 1)));\r\n this.postInit();\r\n }\r\n\r\n return Structure21;\r\n\r\n })(Pattern);\r\n\r\n Structure22 = (function(_super) {\r\n __extends(Structure22, _super);\r\n\r\n function Structure22() {\r\n var faces, i, order, _i;\r\n faces = [new DieFace(0, 0), new DieFace(0, 1), new DieFace(1, 1), new DieFace(2, 1), new DieFace(2, 2), new DieFace(3, 2)];\r\n Structure22.__super__.constructor.call(this, faces);\r\n order = shuffle([1, 2, 3, 4, 5, 6]);\r\n for (i = _i = 0; _i <= 5; i = ++_i) {\r\n this.ar[i].addDieSpots(order[i]);\r\n }\r\n this.currentPace = 30;\r\n this.offset = 20;\r\n this.folds = [];\r\n this.folds.push(folder(0, [5], 2, [3]));\r\n this.folds.push(folder(1, [0], 2, [1]));\r\n this.folds.push(folder(0, [0, 1], -2, [1]));\r\n this.folds.push(folder(0, [0, 1, 2], -2, [2]));\r\n this.folds.push(folder(1, [4, 5], -2, [2]));\r\n this.postInit();\r\n }\r\n\r\n Structure22.prototype.getFalseCandidate = function(correctPossibilities) {\r\n return this.getDieFalseCandidate(correctPossibilities);\r\n };\r\n\r\n return Structure22;\r\n\r\n })(Pattern);\r\n\r\n Structure23 = (function(_super) {\r\n __extends(Structure23, _super);\r\n\r\n function Structure23() {\r\n var faces, i, order, _i;\r\n faces = [new DieFace(0, 0), new DieFace(0, 1), new DieFace(1, 1), new DieFace(2, 1), new DieFace(1, 2), new DieFace(1, 3)];\r\n Structure23.__super__.constructor.call(this, faces);\r\n order = shuffle([1, 2, 3, 4, 5, 6]);\r\n for (i = _i = 0; _i <= 5; i = ++_i) {\r\n this.ar[i].addDieSpots(order[i]);\r\n }\r\n this.currentPace = 30;\r\n this.offset = 20;\r\n this.folds = [];\r\n this.folds.push(folder(1, [5], -2, [3]));\r\n this.folds.push(folder(1, [0], 2, [1]));\r\n this.folds.push(folder(1, [4, 5], -2, [2]));\r\n this.folds.push(folder(0, [3], 2, [2]));\r\n this.folds.push(folder(0, [0, 1], -2, [1]));\r\n this.postInit();\r\n }\r\n\r\n Structure23.prototype.getFalseCandidate = function(correctPossibilities) {\r\n return this.getDieFalseCandidate(correctPossibilities);\r\n };\r\n\r\n return Structure23;\r\n\r\n })(Pattern);\r\n\r\n Structure24 = (function(_super) {\r\n __extends(Structure24, _super);\r\n\r\n function Structure24() {\r\n var faces, shape, total, _i, _len;\r\n faces = [];\r\n while (true) {\r\n faces = [new BlankSquare(3, 7), new BlankSquare(5, 8), new DiagonalRect(1, 1), new SoftL(2, 0), new VertRectThree(3, 0), new VertRectThree(3, 3), new SoftLInv2(4, 7), new Square(3, 6), new Square(5, 9)];\r\n total = 0;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n shape = faces[_i];\r\n total += shape.marks.length;\r\n }\r\n if (total > 1) {\r\n break;\r\n }\r\n }\r\n Structure24.__super__.constructor.call(this, faces);\r\n this.disallowedPairs = [[7, 2], [9, 3], [10, 1], [11, 0], [17, 0], [18, 1], [20, 3], [23, 2]];\r\n this.currentPace = 30;\r\n this.offset = 20;\r\n this.ar[2].preSpin([[2, 1, 0], [2, 1, 10]], Math.PI / 4);\r\n this.folds = [];\r\n this.folds.push(folder(1, [8], -2, [9]));\r\n this.folds.push(folder(0, [1, 8], -2, [6]));\r\n this.folds.push(folder(1, [0], -2, [7]));\r\n this.folds.push(folder(0, [1, 6, 8], 2, [4]));\r\n this.folds.push(folder(1, [0, 1, 6, 7, 8], -2, [6]));\r\n this.folds.push(new Fold([2], Math.PI / 2, [[1, 2, 0], [2, 1, 0]]));\r\n this.folds.push(folder(0, [2, 3], -2, [3]));\r\n this.folds.push(folder(1, [2, 3, 4], 2, [3]));\r\n this.postInit();\r\n }\r\n\r\n return Structure24;\r\n\r\n })(Pattern);\r\n\r\n Structure25 = (function(_super) {\r\n __extends(Structure25, _super);\r\n\r\n function Structure25() {\r\n var faces, shape, type0, type15, x0, x1, y0, y1, z, _i, _len;\r\n faces = [];\r\n while (true) {\r\n faces = [new HexSection9(1, 1), new VertRect(0, 1), new VertRect(1, 1), new HexSection10(2, 3), new HorizRect(2, 3)];\r\n if (testing) {\r\n break;\r\n }\r\n type15 = false;\r\n type0 = false;\r\n for (_i = 0, _len = faces.length; _i < _len; _i++) {\r\n shape = faces[_i];\r\n if (shape.type === 15) {\r\n type15 = true;\r\n }\r\n if (shape.type === 6) {\r\n type0 = true;\r\n }\r\n if (shape.type === 5) {\r\n type0 = true;\r\n }\r\n }\r\n if (type15 && type0) {\r\n break;\r\n }\r\n }\r\n Structure25.__super__.constructor.call(this, faces);\r\n this.allowedRotations = [0, 52, 53, 54, 55, 56];\r\n this.disallowedPairs = [[0, 1], [0, 2], [52, 1], [52, 2], [53, 1], [53, 2], [54, 1], [54, 2], [55, 1], [55, 2], [56, 1], [56, 2]];\r\n this.ar[4].preSpin([[2, 3, 0], [2, 3, 10]], Math.PI / 6);\r\n this.currentPace = 30;\r\n this.offset = 5;\r\n this.folds = [];\r\n x0 = this.ar[3].ar[0].ar[0];\r\n y0 = this.ar[3].ar[0].ar[1];\r\n z = this.ar[3].ar[0].ar[2];\r\n x1 = this.ar[3].ar[2].ar[0];\r\n y1 = this.ar[3].ar[2].ar[1];\r\n this.folds.push(new Fold([4], Math.PI / 2, [[x0, y0, z], [x1, y1, z]]));\r\n this.folds.push(folder(1, [3, 4], -2, [3]));\r\n this.folds.push(folder(1, [0], 2, [1]));\r\n this.folds.push(folder(0, [1], -6, [1]));\r\n this.folds.push(folder(0, [0, 2, 3, 4], 2, [1]));\r\n this.totalSteps = this.currentPace * this.folds.length;\r\n this.setPov();\r\n if (this.rotation > 0) {\r\n this.totalSteps += Math.round(4 * this.currentPace * Math.abs(this.getRadians(this.rotation)) / Math.PI);\r\n }\r\n this.screenBounds = getBounds(this.ar, this.pov);\r\n this.workingCopy = this.clone();\r\n this.workingCopy.fold();\r\n this.boundingCube = this.workingCopy.getBoundingCube();\r\n this.vertTriangleAxes = this.workingCopy.getVertTriangleAxes(0, this.boundingCube);\r\n if (!testing) {\r\n this.workingCopy.reposition();\r\n }\r\n this.workingCopy.boundingCube = this.workingCopy.getBoundingCube();\r\n this.workingCopy.vertTriangleAxes = this.workingCopy.getVertTriangleAxes(0, this.workingCopy.boundingCube);\r\n if (!testing) {\r\n this.populateChoices();\r\n }\r\n }\r\n\r\n return Structure25;\r\n\r\n })(Pattern);\r\n\r\n newPage = function() {\r\n ++pagePosition;\r\n if (pagePosition > serializedPages.length) {\r\n currentPage = getStructure();\r\n serializedPages.push(currentPage);\r\n erasePage();\r\n currentPage.display();\r\n if (timerOn) {\r\n return startTimer();\r\n }\r\n } else {\r\n erasePage();\r\n return restoreCurrentPage();\r\n }\r\n };\r\n\r\n getStructure = function() {\r\n var type;\r\n type = randInt(25);\r\n switch (type) {\r\n case 0:\r\n return new Structure1();\r\n case 1:\r\n return new Structure2();\r\n case 2:\r\n return new Structure3();\r\n case 3:\r\n return new Structure4();\r\n case 4:\r\n return new Structure5();\r\n case 5:\r\n return new Structure6();\r\n case 6:\r\n return new Structure7();\r\n case 7:\r\n return new Structure8();\r\n case 8:\r\n return new Structure9();\r\n case 9:\r\n return new Structure10();\r\n case 10:\r\n return new Structure11();\r\n case 11:\r\n return new Structure12();\r\n case 12:\r\n return new Structure13();\r\n case 13:\r\n return new Structure14();\r\n case 14:\r\n return new Structure15();\r\n case 15:\r\n return new Structure16();\r\n case 16:\r\n return new Structure17();\r\n case 17:\r\n return new Structure18();\r\n case 18:\r\n return new Structure19();\r\n case 19:\r\n return new Structure20();\r\n case 20:\r\n return new Structure21();\r\n case 21:\r\n return new Structure22();\r\n case 22:\r\n return new Structure23();\r\n case 23:\r\n return new Structure24();\r\n case 24:\r\n return new Structure25();\r\n }\r\n };\r\n\r\n previousPage = function() {\r\n if (pagePosition > 1) {\r\n --pagePosition;\r\n erasePage();\r\n return restoreCurrentPage();\r\n }\r\n };\r\n\r\n restoreCurrentPage = function() {\r\n currentPage = serializedPages[pagePosition - 1];\r\n if (currentPage.answer === \"z\") {\r\n if (timerOn) {\r\n startTimer();\r\n }\r\n } else {\r\n setGrades();\r\n if (currentPage.answer === answerValues[currentPage.correctChoice]) {\r\n revealExplication();\r\n }\r\n }\r\n return currentPage.display();\r\n };\r\n\r\n radioChangeEvent = function() {\r\n clearInterval(timer);\r\n currentPage.answer = $(\"input[type=radio]:checked\").val();\r\n clearGrades();\r\n setGrades();\r\n revealExplication();\r\n return tallyScoreboard();\r\n };\r\n\r\n erasePage = function() {\r\n var i, n, _i;\r\n clearRadios();\r\n clearGrades();\r\n n = OPTIONS;\r\n for (i = _i = 0; 0 <= n ? _i <= n : _i >= n; i = 0 <= n ? ++_i : --_i) {\r\n clearCanvas(i);\r\n }\r\n clearInterval(timer);\r\n timeReset();\r\n setPageNumber();\r\n return clearExplication();\r\n };\r\n\r\n setGrades = function() {\r\n var selector;\r\n $('input[type=radio]').filter(function() {\r\n return $(this).val() === currentPage.answer;\r\n }).prop('checked', true);\r\n $(answerGrades[currentPage.correctChoice]).html('');\r\n if (answerValues[currentPage.correctChoice] !== currentPage.answer) {\r\n selector = '#grade-' + currentPage.answer;\r\n return $(selector).html('');\r\n }\r\n };\r\n\r\n clearGrades = function() {\r\n var selector, _i, _len, _results;\r\n _results = [];\r\n for (_i = 0, _len = answerGrades.length; _i < _len; _i++) {\r\n selector = answerGrades[_i];\r\n _results.push($(selector).html(''));\r\n }\r\n return _results;\r\n };\r\n\r\n revealExplication = function() {\r\n currentPage.workingCopy.restoreFromArray(currentPage.toArray());\r\n currentPage.workingCopy.pov = currentPage.pov;\r\n currentPage.workingCopy.boundingCube = currentPage.boundingCube;\r\n currentPage.workingCopy.stepsExecuted = 0;\r\n currentPage.workingCopy.horizPentAxes = currentPage.horizPentAxes;\r\n currentPage.workingCopy.vertPentAxes = currentPage.vertPentAxes;\r\n currentPage.workingCopy.vertTriangleAxes = currentPage.vertTriangleAxes;\r\n currentPage.workingCopy.horizTriangleAxes = currentPage.horizTriangleAxes;\r\n currentPage.workingCopy.mainOffset = currentPage.mainOffset;\r\n animDir = true;\r\n render = function() {\r\n return currentPage.workingCopy.animate(0);\r\n };\r\n animOn = true;\r\n return addControls();\r\n };\r\n\r\n clearExplication = function() {\r\n animOn = false;\r\n animDir = true;\r\n render = function() {};\r\n $('#slider').off(\"slide\");\r\n return $('#animation-controls').hide();\r\n };\r\n\r\n timeChangeEvent = function() {\r\n timerOn = !timerOn;\r\n if (timerOn) {\r\n return startTimer();\r\n } else {\r\n clearInterval(timer);\r\n if (timeLeft === 0) {\r\n return timeReset;\r\n }\r\n }\r\n };\r\n\r\n timeReset = function() {\r\n timeLeft = SECONDS;\r\n return $('#time-display').html(timeLeft);\r\n };\r\n\r\n startTimer = function() {\r\n clearInterval(timer);\r\n return timer = setInterval((function() {\r\n --timeLeft;\r\n $('#time-display').html(timeLeft);\r\n if (timeLeft < 1) {\r\n return timeOut();\r\n }\r\n }), 1000);\r\n };\r\n\r\n timeOut = function() {\r\n clearInterval(timer);\r\n if (currentPage.correctChoice !== 0) {\r\n $('input[type=radio]:eq(0)').prop('checked', true);\r\n } else {\r\n $('input[type=radio]:eq(1)').prop('checked', true);\r\n }\r\n return radioChangeEvent();\r\n };\r\n\r\n tallyScoreboard = function() {\r\n var correct, incorrect, page, _i, _len;\r\n incorrect = 0;\r\n correct = 0;\r\n for (_i = 0, _len = serializedPages.length; _i < _len; _i++) {\r\n page = serializedPages[_i];\r\n if (page.answer !== \"z\") {\r\n if (page.answer === answerValues[page.correctChoice]) {\r\n ++correct;\r\n } else {\r\n ++incorrect;\r\n }\r\n }\r\n }\r\n $('#incorrect').html(incorrect);\r\n return $('#correct').html(correct);\r\n };\r\n\r\n setPageNumber = function() {\r\n $('#location').html(pagePosition);\r\n return $('#total').html(serializedPages.length);\r\n };\r\n\r\n clearRadios = function() {\r\n console.log('clearing radios??');\r\n return $(\"input[type=radio]\").prop('checked', false);\r\n };\r\n\r\n gameReset = function() {\r\n timerOn = false;\r\n clearInterval(timer);\r\n serializedPages = [];\r\n pagePosition = 0;\r\n newPage();\r\n return tallyScoreboard();\r\n };\r\n\r\n addControls = function() {\r\n var steps;\r\n\r\n $('#animation-controls').show();\r\n console.log('attempting to add controls');\r\n\r\n steps = currentPage.workingCopy.totalSteps;\r\n\r\n $('#slider').slider({\r\n max: steps\r\n });\r\n\r\n return $('#slider').on(\"slide\", currentPage.workingCopy.moveSlide);\r\n };\r\n\r\n pauseAction = function() {\r\n clearTimeout(animPause);\r\n animOn = !animOn;\r\n if (animOn) {\r\n return $('#pause').text(\"Pause\");\r\n } else {\r\n return $('#pause').text(\"Play\");\r\n }\r\n };\r\n\r\n reverseAction = function() {\r\n return animDir = !animDir;\r\n };\r\n\r\n $(function() {\r\n sanitizeCanvases();\r\n $(\"#next\").on(\"click\", newPage);\r\n $(\"#previous\").on(\"click\", previousPage);\r\n $(\"#game-reset\").on(\"click\", gameReset);\r\n $(\"#time-button\").on(\"click\", timeChangeEvent);\r\n $(\"input[type=radio]\").on(\"click\", radioChangeEvent);\r\n $(\"body\").on(\"click\", \"#pause\", pauseAction);\r\n $(\"body\").on(\"click\", \"#reverse\", reverseAction);\r\n newPage();\r\n return animloop();\r\n });\r\n};\r\n","var map = {\n\t\"./Trainer.css\": [\n\t\t1462,\n\t\t3\n\t],\n\t\"./angleRanking.css\": [\n\t\t1463,\n\t\t4\n\t],\n\t\"./cubeCounting.css\": [\n\t\t1464,\n\t\t5\n\t],\n\t\"./holePunching.css\": [\n\t\t1465,\n\t\t6\n\t],\n\t\"./newCubeCounting.css\": [\n\t\t1466,\n\t\t7\n\t],\n\t\"./newPatternFolding.css\": [\n\t\t1467,\n\t\t8\n\t],\n\t\"./patternFolding.css\": [\n\t\t1468,\n\t\t9\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 1438;\nmodule.exports = webpackAsyncContext;","import styled from 'styled-components';\n\nexport const FlexBox = styled.div`\n width: 100%;\n height: 100%;\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n`;\n\nexport const Column = styled(FlexBox)`\n flex-direction: column;\n`;\n\nexport const Row = styled(FlexBox)`\n flex-direction: row;\n`;\n","import React from 'react';\nimport styled, {css} from 'styled-components';\nimport {Column, Row} from '../Grid';\n\nconst GutterContainer = styled(Column)`\n justify-content: center;\n ${({background}) => {\n switch (background) {\n case 'white':\n return css`\n background-color: white;\n `\n case 'blue':\n return css`\n background-color: #0F6292;\n `\n case 'grey':\n return css`\n background-color: #F5F8FA;\n `\n default:\n return\n }\n }}\n`;\n\nconst GutterInner = styled.div`\n max-width: 1000px;\n width: 90%;\n height: 100%;\n margin: 0 auto;\n position: relative;\n`;\n\nconst GutterWrapper = ({children, ...props}) => (\n \n \n {children}\n \n \n);\n\nconst GutterRow = ({children, ...props}) => (\n \n \n {children}\n \n \n);\n\nconst GutterColumn = ({children, ...props}) => (\n \n \n {children}\n \n \n);\n\nconst SpacedGutterRow = styled(GutterRow)`\n ${GutterInner} > ${Row} {\n align-items: center;\n justify-content: space-between;\n ${({rowStyles}) => rowStyles}\n }\n`;\n\nconst titleBarPadding = {\n small: 1.5,\n medium: 2,\n large: 3\n};\n\nconst TitleBar = styled(Row)`\n align-self: center;\n justify-content: space-between;\n padding: ${({titleSize}) => titleSize ? titleBarPadding[titleSize] : titleBarPadding['large']}em 0px;\n width: 100%;\n padding-top: ${({titleSize}) => titleSize ? titleBarPadding[titleSize] * 2 : titleBarPadding['large']}em;\n /* Consecutive TitleBars with titleSize will have padding-top doubled */\n &:first-child {\n padding-top: ${({titleSize}) => titleSize ? titleBarPadding[titleSize] : titleBarPadding['large']}em;\n }\n`;\n\nexport {\n GutterInner,\n GutterContainer,\n GutterWrapper,\n TitleBar,\n SpacedGutterRow,\n GutterColumn,\n GutterRow\n}\n","import React from 'react';\nimport styled, {css} from 'styled-components';\nimport {Link as SiteLink} from 'react-router-dom';\nimport PropTypes from 'prop-types';\n\nimport {GutterContainer, GutterInner} from '../../Spacing';\n// import {PurpleButton} from '../../Branding';\nimport svgTitle from '@bootcamp/shared/src/assets/svg/title.svg';\n// import Menu, {MenuIcon, MenuButton} from '../components/Menu';\n// import {Close} from '../components/Buttons';\n\n// import {PatchQuestion} from '@styled-icons/bootstrap/PatchQuestion';\n// import {DocumentText} from '@styled-icons/heroicons-outline/DocumentText';\n\n// import {colors} from '@bootcamp/shared/src/styles/theme';\n\nconst NavBarContainer = styled(GutterContainer)`\n background-color: ${({theme}) => theme.brandPurple};\n box-shadow: 0px 1px 0px ${({theme}) => theme.purpleBorderColor};\n height: auto;\n`;\n\nconst NavBarInner = styled(GutterInner)`\n display: flex;\n min-height: 70px;\n flex: 1;\n align-items: center;\n justify-content: space-between;\n`;\n\nconst Links = styled.div`\n width: 100%;\n ${({theme}) => theme.mediaQueries.laptop} {\n display: none;\n }\n`;\n\nconst RightLinks = styled(Links)`\n display: flex;\n justify-content: flex-end;\n`;\n\nconst Link = styled(SiteLink)`\n width: 100px;\n display: inline-block;\n text-align: center;\n padding: 10px;\n text-shadow: ${({isActive, theme}) => isActive ? `-0.02ex 0 ${theme.brandPurple}, 0.02ex 0 ${theme.brandPurple}` : 'none'};\n color: ${({isActive, theme}) => isActive ? 'white' : '#FFFFFFE6'};\n font-weight: ${({isActive}) => isActive ? '700' : 'normal'};\n text-decoration: none;\n font-size: 16px;\n font-weight: bold;\n ${({isActive}) => isActive && css`\n background: rgba(0, 0, 0, 0.1);\n border-radius: 10px;\n `}\n\n margin: 0px 8px;\n\n &:first-child {\n margin-left: 0px;\n }\n &:last-child {\n margin-right: 0px;\n }\n\n &:hover {\n color: ${({theme, isActive}) => !isActive && 'white'};\n }\n`;\n// const MenuLink = styled(Link)`\n// color: ${({theme}) => theme.brandPurple};\n// text-align: left;\n// margin: 0;\n\n// &:hover {\n// color: ${({theme}) => theme.brandPurple};\n// font-weight: bold;\n// }\n// `;\n\nconst Title = styled.img`\n color: ${({theme}) => theme.lightTextColor};\n height: 22px;\n`;\n\n// const StyledMenuButton = styled(MenuButton)`\n// display: none;\n// ${({theme}) => theme.mediaQueries.laptop} {\n// display: block;\n// }\n// `;\n\n// const config = [\n// {\n// route: '/questions',\n// name: 'Questions',\n// },\n// {\n// route: '/test',\n// name: 'Tests',\n// },\n// ];\n\n// function renderMenuItems(onClick, history, config, bootcamp) {\n// return config.map(({route, name, themePalette, icon}) => (\n// {name}\n// ))\n// }\n\nconst NavBar = ({activeRoute}) => {\n // const [menuOpen, setMenuOpen] = useState(false);\n\n return (\n \n \n {/* { : }\n onClick={() => setMenuOpen(!menuOpen)}\n />\n } */}\n \n Questions\n Tests\n \n \n \n </SiteLink>\n <RightLinks>\n <Link to={'/revisions'} isActive={activeRoute === '/revisions'}>Revisions</Link>\n <Link to={'/login'} isActive={activeRoute === '/login'} as={Link}>Account</Link>\n </RightLinks>\n </NavBarInner>\n </NavBarContainer>\n )\n}\n\n\nNavBar.propTypes = {\n className: PropTypes.string,\n activeRoute: PropTypes.string,\n};\n\nexport default NavBar;\n","import {useEffect, useCallback} from 'react'\n\nconst useBeforeUnload = preventReload => {\n\n const handleBeforeunload = useCallback((beforeunloadEvent) => {\n let returnValue\n if (typeof preventReload === 'function') {\n returnValue = preventReload(beforeunloadEvent)\n } else {\n returnValue = preventReload\n }\n if (returnValue) {\n beforeunloadEvent.preventDefault()\n beforeunloadEvent.returnValue = returnValue\n }\n return beforeunloadEvent\n }, [preventReload]);\n\n useEffect(() => {\n window.addEventListener('beforeunload', handleBeforeunload)\n return () => window.removeEventListener('beforeunload', handleBeforeunload)\n }, [preventReload])\n}\n\nexport default useBeforeUnload\n","import useBeforeUnload from './useBeforeUnload';\nimport {useRef, useState, useCallback, useEffect} from 'react';\nimport debounce from \"debounce\";\n\nimport {getAllQuestionMastery, getTestProgressByUserIdHashTestId} from '@bootcamp/shared/src/requests';\nimport {VIMEO_ACCESS_TOKEN} from '@bootcamp/shared/src/util/keys';\n\nexport const useDocumentTitle = (title) => {\n useEffect(() => {\n document.title = title;\n }, [title]);\n};\n\nexport const useVimeoVideoUrl = (videoId) => {\n const requestUrl = `https://api.vimeo.com/videos/${videoId}`;\n const fetchRequest = useCallback(async () => {\n const response = await fetch(requestUrl, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json; charset=UTF-8',\n Authorization: `Bearer ${VIMEO_ACCESS_TOKEN}`,\n },\n });\n\n const videoMeta = await response.json();\n const videoFile = videoMeta.play.hls;\n\n return {\n url: videoFile && videoFile.link,\n aspectRatio: 9/16,\n };\n }, [requestUrl]);\n const {value} = useAsync(fetchRequest);\n return value || {}\n}\n\nexport const useDebouncedState = (initialState, durationInMs = 250) => {\n const [internalState, setInternalState] = useState(initialState);\n const debouncedFunction = useCallback(debounce(setInternalState, durationInMs), []);\n return [internalState, debouncedFunction];\n};\n\nexport const useAsync = (asyncFunction, immediate = true) => {\n const [pending, setPending] = useState(immediate);\n const [value, setValue] = useState(null);\n const [error, setError] = useState(null);\n\n // The execute function wraps asyncFunction and\n // handles setting state for pending, value, and error.\n // useCallback ensures the below useEffect is not called\n // on every render, but only if asyncFunction changes.\n const execute = useCallback(() => {\n setPending(true);\n setValue(null);\n setError(null);\n return asyncFunction()\n .then(response => setValue(response))\n .catch(error => setError(error))\n .finally(() => setPending(false));\n }, [asyncFunction]);\n\n // Call execute if we want to fire it right away.\n // Otherwise execute can be called later, such as\n // in an onClick handler.\n useEffect(() => {\n if (immediate) {\n execute();\n }\n }, [execute, immediate]);\n\n return { execute, pending, value, error };\n};\n\nexport const useTestProgress = (testId, formatter, userId) => {\n const ready = !!userId;\n\n const fetchTestProgress = useCallback(async () => !ready ? [] : getTestProgressByUserIdHashTestId(`${userId}#${testId}`, true), [ready]);\n const {pending, value: progress} = useAsync(fetchTestProgress);\n const returnValue = pending ? [] : progress;\n return formatter(returnValue);\n}\n\nexport const useTestProgressArray = (testIds, formatter, userId) => {\n const ready = testIds?.length > 0 && userId != 0;\n const fetchTestProgresses = useCallback(async () => !ready ? [] : await Promise.all(testIds.map(testId => getTestProgressByUserIdHashTestId(`${userId}#${testId}`, true))), [ready]);\n const {pending, value: progresses} = useAsync(fetchTestProgresses);\n const returnValue = pending ? [] : progresses;\n return [formatter(returnValue)];\n};\n\nexport const useMastery = (contentId, contentType, formatter, userId) => {\n const ready = !!userId;\n\n const hashKey = {\n subject: 'userIdHashSubjectTagId',\n subjectWithQuestionBaseId: 'userIdHashSubjectTagId',\n topic: 'userIdHashTopicTagId',\n test: 'userIdHashTestId',\n testSmall: 'userIdHashTestId'\n }[contentType];\n\n const fetchMastery = useCallback(async () => !ready ? [] : getAllQuestionMastery({[hashKey]: `${userId}#${contentId}`}, contentType), [ready]);\n const {pending, value: progress} = useAsync(fetchMastery);\n const returnValue = pending ? [] : progress;\n return [formatter(returnValue)]\n}\n\nexport const useMasteryArray = (contentIds, contentType, formatter, type, callback, DEFAULT_USER_ID, loading) => {\n const [progresses, setProgresses] = useState({});\n\n const hashKey = {\n subject: 'userIdHashSubjectTagId',\n subjectWithQuestionBaseId: 'userIdHashSubjectTagId',\n subjectWithQuestionTags: 'userIdHashSubjectTagId',\n topic: 'userIdHashTopicTagId',\n test: 'userIdHashTestId',\n testSmall: 'userIdHashTestId'\n }[contentType];\n const userId = DEFAULT_USER_ID;\n\n async function fetchProgress() {\n if (!userId) return setProgresses({});\n\n const results = await contentIds.reduce(async (acc, contentId) => {\n const data = await getAllQuestionMastery({\n [hashKey]: `${userId}#${contentId}`,\n limit: 1000\n }, contentType);\n return {...(await acc), [contentId]: formatter ? formatter(data) : data}\n }, {});\n\n const update = type ? {...progresses, [type]: results} : results;\n\n setProgresses(update);\n\n // hooking in for componennt loading states\n if (typeof callback === 'function') {\n callback();\n }\n }\n\n useEffect(() => {\n if (loading || !contentIds || progresses[type]) return;\n\n fetchProgress();\n }, [userId, loading, type]);\n\n return progresses;\n}\nexport function useLocalStorage(key, initialValue) {\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState(() => {\n try {\n // Get from local storage by key\n const item = window.localStorage.getItem(key);\n // Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : initialValue;\n } catch (error) {\n // If error also return initialValue\n console.log(error);\n return initialValue;\n }\n });\n\n // Return a wrapped version of useState's setter function that ...\n // ... persists the new value to localStorage.\n const setValue = value => {\n try {\n // Allow value to be a function so we have same API as useState\n const valueToStore =\n value instanceof Function ? value(storedValue) : value;\n // Save state\n setStoredValue(valueToStore);\n // Save to local storage\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n } catch (error) {\n // A more advanced implementation would handle the error case\n console.log(error);\n }\n };\n\n return [storedValue, setValue];\n};\n\nexport const usePrevious = value => {\n const ref = useRef();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n};\n\nexport {\n useBeforeUnload\n}\n\nexport function useDebounce(value, delay) {\n // State and setters for debounced value\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(\n () => {\n // Set debouncedValue to value (passed in) after the specified delay\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n // Return a cleanup function that will be called every time ...\n // ... useEffect is re-called. useEffect will only be re-called ...\n // ... if value changes (see the inputs array below).\n // This is how we prevent debouncedValue from changing if value is ...\n // ... changed within the delay period. Timeout gets cleared and restarted.\n // To put it in context, if the user is typing within our app's ...\n // ... search box, we don't want the debouncedValue to update until ...\n // ... they've stopped typing for more than 500ms.\n return () => {\n clearTimeout(handler);\n };\n },\n // Only re-call effect if value changes\n // You could also add the \"delay\" var to inputs array if you ...\n // ... need to be able to change that dynamically.\n [value]\n );\n\n return debouncedValue;\n}\n","import React, {useState, createContext, useEffect, useContext, useCallback} from 'react';\n\nimport Auth from '@aws-amplify/auth';\nimport {Hub} from '@aws-amplify/core';\nimport {IntercomAPI} from 'react-intercom';\n\nimport {\n createWordPressUserData,\n getQuestionMasteryByWpUserId,\n getQuestionMasteryWithQuestionTagsByWpUserId,\n getQuestionMasteryWithQuestionsByWpUserId,\n getTestProgress,\n createUser,\n getUser,\n updateUser,\n getIntercomUserAttributes,\n // getQuestionBaseTagsOnly,\n // updateQuestionMastery,\n} from '@bootcamp/shared/src/requests';\n\nimport {createUserInteraction, updateUserInteraction, listUserInteractions} from '@bootcamp/shared/src/requests/User';\nimport {\n getInObj,\n getUnixTimestamp,\n findStartAndEndDates,\n // getTagType\n} from '@bootcamp/shared/src/util';\nimport {useAsync} from '@bootcamp/shared/src/util/hooks';\n\nimport moment from 'moment';\n\nconst VALID_BOOTCAMPS = [\n 'oat',\n 'inbde',\n 'anatomy',\n 'chemistry',\n 'step-1',\n 'dental-school',\n 'med-school',\n 'dat',\n 'nclex',\n 'mcat'\n]\n\nconst BOOTCAMP_MEMBERSHIP_GROUPS = {\n 'dat' : 'DATBootcamp',\n 'oat' : 'OATBootcamp',\n 'chemistry': 'ChemistryBootcamp',\n 'inbde': 'INBDEBootcamp',\n 'anatomy': 'AnatomyBootcamp',\n 'step-1': 'Step1Bootcamp',\n 'med-school': 'MedSchoolBootcamp',\n 'nclex': 'NCLEXBootcamp',\n 'dental-school': 'DentalSchoolBootcamp',\n 'mcat': 'MCATBootcamp'\n}\n\nfunction determineBootcamp() {\n const validSubdomains = [\n 'anatomy',\n 'chemistry',\n 'app',\n 'app-staging',\n 'app-monorepo-merge', // TODO remove this after app-monorepo-merge is merged\n 'monorepo',\n 'monorepo-staging'\n ];\n\n const subdomain = window.location.host.split('.')[0];\n const isValidSubdomain = validSubdomains.includes(subdomain);\n const isAppSubdomain = subdomain.includes('app');\n\n let bootcamp;\n\n if (!isValidSubdomain) {\n // deriving bootcamp from legacy domain bootcamps [bootcamp]bootcamp.com eg. anatomybootcamp.com\n bootcamp = subdomain.split('bootcamp')[0];\n } else if (isAppSubdomain || subdomain === 'monorepo-staging') {\n // deriving bootcamp from path on app.bootcamp subdomain app.bootcamp.com/[bootcamp] eg. app.bootcamp.com/oat\n bootcamp = window.location.pathname?.split('/')?.slice(1, 2)[0];\n } else {\n // deriving bootcamp from legacy subdomain bootcamps [bootcamp].bootcamp.com eg. anatomy.bootcamp.com\n bootcamp = subdomain; // bootcamp subdomain anatomy || chemistry\n }\n\n return VALID_BOOTCAMPS.includes(bootcamp) ? bootcamp : '';\n}\n\nconst useUserData = (setDarkMode, darkModeEnabled, getDarkModeTheme) => {\n const [cognitoUser, setCognitoUser] = useState({getUsername: () => ''});\n const [userModel, setUserModel] = useState({});\n const [userQuestionMastery, setUserQuestionMastery] = useState([]);\n const [testProgress, setTestProgress] = useState(null);\n const [loadedUserData, setLoadedUserData] = useState(false);\n const [interactions, setInteractions] = useState([]);\n const [DEFAULT_USER_ID, setUserId] = useState(0);\n const [loading, setLoading] = useState(true);\n const [intercomUserAttributes, setIntercomUserAttributes] = useState(null);\n\n const [bootcamp, setBootcamp] = useState(determineBootcamp());\n const [bootcampLoading, setBootcampLoading] = useState(true);\n\n const bootcampMembershipGroup = BOOTCAMP_MEMBERSHIP_GROUPS[bootcamp];\n\n const groups = getInObj(['signInUserSession', 'accessToken', 'payload', 'cognito:groups'], cognitoUser, []);\n if (['med-school', 'dental-school', 'anatomy', 'chemistry'].includes(bootcamp) && userModel?.createdAt && moment().diff(moment(userModel?.createdAt), 'hours', true) <= 72 && !groups.includes('FreeTrial')) groups.push('FreeTrial');\n\n // async function updateQuestionMasteryRecords (questionMastery) {\n // if (!questionMastery) return;\n //\n // const promises = questionMastery.map(async mastery => {\n // const {data: {getQuestionBase: question}} = await getQuestionBaseTagsOnly(mastery.userIdHashQuestionBaseId.replace(`${DEFAULT_USER_ID}#`, ''));\n //\n // const tagIds = question.tags.items.reduce((acc, {tag}) => ({[getTagType(tag)]: tag.id, ...acc}), {});\n //\n // const updateInput = {\n // wordPressUserDataQuestionMasteryId: DEFAULT_USER_ID,\n // userIdHashQuestionBaseId: `${DEFAULT_USER_ID}#${question.id}`,\n // userIdHashTestTagId: `${DEFAULT_USER_ID}#${tagIds.bootcamp}`,\n // userIdHashSubjectTagId: `${DEFAULT_USER_ID}#${tagIds.subject}`,\n // userIdHashTopicTagId: `${DEFAULT_USER_ID}#${tagIds.topic}`,\n // wpUserId: DEFAULT_USER_ID,\n // questionMasteryQuestionId: question.id\n // };\n //\n // await updateQuestionMastery(updateInput, false);\n // });\n // return await Promise.all(promises);\n // }\n\n async function fetchTestProgress(testProgressId) {\n\n if (!DEFAULT_USER_ID) return;\n\n const {data: {getTestProgress: testProgressResult}} = await getTestProgress(testProgressId);\n\n setTestProgress(testProgressResult);\n }\n\n async function getCognitoUser() {\n try {\n return await Auth.currentAuthenticatedUser({bypassCache: true});\n } catch (e) {\n console.log('Error fetching current authenticated user', e);\n }\n }\n\n async function getIntercomVerificationHash(email) {\n try {\n const fetchResult = await fetch('https://gfp4txa2e7.execute-api.us-east-1.amazonaws.com/default/IntercomVerificationFunction', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n email\n })\n });\n const {hash} = await fetchResult.json();\n return hash\n } catch (e) {\n console.log(e);\n }\n }\n\n async function runMasteryUpdater(DEFAULT_USER_ID, isUpgraded) {\n if (!isUpgraded) return;\n try {\n const fetchResult = await fetch('https://6apt3jemyrkpwneqkqzxjtndfy0rtorz.lambda-url.us-east-1.on.aws', {\n method: 'POST',\n body: JSON.stringify({\n request: 'masteryUpdate',\n DEFAULT_USER_ID,\n bootcamp\n })\n });\n return fetchResult.json();\n } catch (e) {\n console.log(e);\n }\n }\n\n async function getUserModel(username) {\n try {\n const [{data: {getUser: user}}, cognitoUser] = await Promise.all([getUser(username), getCognitoUser()]);\n const email = cognitoUser && cognitoUser.attributes && cognitoUser.attributes.email;\n\n if (user) {\n if (!user.email && email) {\n await updateUser({id: username, email});\n user.email = email;\n }\n return user;\n } else {\n const {data: {createUser: newUser}} = await createUser(username, null, email);\n return newUser;\n }\n\n } catch (e) {\n console.log('Error fetching tbc user model', e);\n }\n }\n\n async function saveUserInteraction(key, value, force=false) {\n const trackInIntercom = ['splitScreenSolutions', 'darkModeEnabled', 'sidebarGridView', 'showKeyboardShortcuts'].includes(key);\n const interactionId = `${userModel.id}-${key}`;\n\n if (!interactions || !userModel.id) return;\n\n const existingInteraction = interactions.find(({id}) => id === interactionId);\n\n if (existingInteraction) {\n try {\n if (existingInteraction.value === value && !force) return; // don't update interaction if nothing changed\n await updateUserInteraction({id: interactionId, value});\n setInteractions(interactions => [...(interactions || []).filter(({id}) => id !== interactionId), {id: interactionId, value}])\n } catch (error) {\n console.log('error updating user interaction', error);\n }\n } else {\n try {\n await createUserInteraction({id: interactionId, userId: userModel.id, value});\n setInteractions(interactions => [...interactions, {id: interactionId, value}]);\n } catch (error) {\n console.log('error saving user interaction', error);\n }\n }\n\n if (trackInIntercom) {\n try {\n await IntercomAPI('update', {[key]: value});\n } catch (error) {\n console.log('error updating intercom user attribute', error);\n }\n }\n }\n\n async function getUserInteractions(userId) {\n const data = await listUserInteractions(userId);\n return getInObj(['data', 'UserId', 'items'], data, []);\n }\n\n async function loginLimitCheck(cognitoUser, userInteractions, onSignIn) {\n const username = cognitoUser.getUsername();\n\n const loginsInteractionId = `${username}-login-limit`;\n const loginsInteraction = userInteractions.find(({id}) => id === loginsInteractionId);\n let logins = JSON.parse((loginsInteraction || {}).value || '[]');\n\n const currentAuthTime = cognitoUser.signInUserSession?.accessToken?.payload?.auth_time;\n\n if (onSignIn) {\n const LOGIN_LIMIT = 3;\n\n if (logins.length >= LOGIN_LIMIT) {\n // remove oldest auth_time in logins array\n logins = logins.sort().reverse().slice(0, LOGIN_LIMIT - 1)\n }\n\n logins = [...logins, currentAuthTime];\n\n if (userInteractions.find(({id}) => id === loginsInteractionId)) {\n try {\n await updateUserInteraction({id: loginsInteractionId, value: JSON.stringify(logins)});\n setInteractions(interactions => [...interactions.filter(({id}) => id !== loginsInteractionId), {id: loginsInteractionId, value: JSON.stringify(logins)}])\n } catch (error) {\n console.log('error updating user interaction', error);\n }\n } else {\n try {\n await createUserInteraction({id: loginsInteractionId, userId: username, value: JSON.stringify(logins)});\n setInteractions(interactions => [...interactions, {id: loginsInteractionId, value: JSON.stringify(logins)}]);\n } catch (error) {\n console.log('error saving user interaction', error);\n }\n }\n } else {\n await handleLoginProtection(logins, cognitoUser);\n }\n }\n\n async function refreshIntercomUserAttributes() {\n const email = cognitoUser && cognitoUser.attributes && cognitoUser.attributes.email;\n const intercomUser = await getIntercomUserAttributes(email);\n setIntercomUserAttributes(intercomUser?.custom_attributes);\n }\n\n async function initializeTbcUser(onSignIn=false) {\n setLoading(true);\n try {\n const cognitoUser = await getCognitoUser();\n\n if (!cognitoUser) { // logged out\n setLoading(false);\n return;\n };\n\n const username = cognitoUser.getUsername();\n const [userModel, interactions] = await Promise.all([getUserModel(username), getUserInteractions(username)]);\n const {endDate, latestEnd} = findStartAndEndDates(userModel?.memberships, bootcampMembershipGroup);\n\n userModel && setUserModel({...userModel, activeMembership: latestEnd, membershipExpirationDate: getUnixTimestamp(endDate)});\n setCognitoUser(cognitoUser);\n setInteractions(interactions);\n\n if (userModel?.idOverride) {\n setUserId(userModel.idOverride);\n } else {\n setUserId(username);\n }\n\n const email = cognitoUser && cognitoUser.attributes && cognitoUser.attributes.email;\n const user_hash = cognitoUser.signInUserSession.idToken.payload['custom:IntercomHash'] || await getIntercomVerificationHash(email);\n\n let intercomParams = {\n name: username,\n email,\n user_hash,\n bootcamp: bootcamp || (interactions.find(interaction => interaction.id === `${username}-recent-bootcamp`) || {}).value\n }\n\n if (window?.location?.search) {\n const urlParams = new URLSearchParams(window.location.search);\n const verificationCode = urlParams.get('verificationCode');\n\n if (cognitoUser?.attributes?.sub?.includes(verificationCode)) {\n intercomParams.optInVerified = true;\n }\n }\n\n IntercomAPI('update', intercomParams);\n\n const streakDetails = JSON.parse((interactions.find(interaction => interaction.id === `${cognitoUser.username}-Streak-DWU-${bootcamp}`) || {}).value || '{}');\n dailyUpdate(streakDetails, userModel, cognitoUser);\n\n await loginLimitCheck(cognitoUser, interactions, onSignIn);\n\n if (!bootcamp) {\n const recentBootcamp = (interactions.find(interaction => interaction.id === `${username}-recent-bootcamp`) || {}).value;\n\n if (recentBootcamp) setBootcamp(recentBootcamp);\n\n setBootcampLoading(false);\n }\n\n } catch (e) {\n console.error(e);\n setLoading(false);\n setBootcampLoading(false);\n throw e;\n }\n }\n\n async function handleLoginProtection (logins, cognitoUser) {\n const currentAuthTime = cognitoUser?.signInUserSession?.accessToken?.payload?.auth_time;\n const recognizedUser = logins?.includes(currentAuthTime);\n // if recognized, no action currently required\n // otherwise, clear out!\n\n if (!recognizedUser && cognitoUser.getUsername() !== 'bootcamp-admin') {\n await IntercomAPI('trackEvent', 'login-limit-exceeded');\n await Auth.signOut();\n clearCurrentUser();\n window.location.href = logins.length === 0 ? '/auth#/signin' : '/auth#/signin?limit=true'\n }\n }\n\n async function dailyUpdate (streakDetails, userModel, cognitoUser) {\n try {\n const {streak, longestStreak} = streakDetails;\n const lastIntercomUpdate = localStorage.getItem('lastIntercomUpdate');\n const currentTime = (new Date()).getTime();\n const MINIMUM_UPDATE_DELAY = 1000 * 60 * 60 * 24 // 24 hrs\n const {earliestStart, endDate} = findStartAndEndDates(userModel.memberships, bootcampMembershipGroup);\n const {startDate, duration} = earliestStart || {};\n const membershipActive = !!getUserGroups(cognitoUser).find(group => group === bootcampMembershipGroup || group === 'Admin');\n\n if (!lastIntercomUpdate || ((currentTime - lastIntercomUpdate) > MINIMUM_UPDATE_DELAY)) {\n const username = cognitoUser.getUsername();\n const masteryUpdate = await runMasteryUpdater(userModel?.idOverride || username, membershipActive);\n\n const intercomUserAttributes = {\n [`${bootcampMembershipGroup}_membership_Status`]: membershipActive ? 'active' : 'inactive',\n [`${bootcampMembershipGroup}_membership_Duration`]: duration,\n [`${bootcampMembershipGroup}_Start_at`]: startDate ? getUnixTimestamp(startDate) : null,\n [`${bootcampMembershipGroup}_Expiration_at`]: endDate ? getUnixTimestamp(endDate) : null,\n dwuStreak: streak,\n longestDWUStreak: longestStreak || 1,\n bootcamp,\n totalTaggedQuestions: masteryUpdate?.tagCount\n };\n\n IntercomAPI('update', intercomUserAttributes);\n\n localStorage.setItem('lastIntercomUpdate', currentTime);\n }\n } catch (error) {\n console.log(error)\n }\n }\n\n async function refreshSession(bypassCache=true) {\n try {\n setLoading(true);\n const refreshedCognitoUser = await Auth.currentAuthenticatedUser({bypassCache});\n const session = await Auth.currentSession();\n\n await refreshedCognitoUser.refreshSession(session.refreshToken, () => true);\n\n const username = refreshedCognitoUser.getUsername();\n const refreshUserModel = await getUserModel(username);\n const refreshInteractions = await getUserInteractions(username);\n\n const {latestEnd, endDate} = findStartAndEndDates(refreshUserModel?.memberships, bootcampMembershipGroup);\n\n refreshUserModel && setUserModel({...refreshUserModel, activeMembership: latestEnd, membershipExpirationDate: getUnixTimestamp(endDate)});\n setCognitoUser(refreshedCognitoUser);\n setInteractions(refreshInteractions);\n\n const logins = JSON.parse((refreshInteractions.find(interaction => interaction.id === `${username}-login-limit`) || {}).value || '[]');\n\n await handleLoginProtection(logins, refreshedCognitoUser)\n\n if (refreshUserModel?.idOverride) {\n setUserId(refreshUserModel.idOverride);\n } else {\n setUserId(username);\n }\n\n const streakDetails = JSON.parse((refreshInteractions.find(interaction => interaction.id === `${cognitoUser.username}-Streak-DWU-${bootcamp}`) || {}).value || '{}');\n dailyUpdate(streakDetails, refreshUserModel, refreshedCognitoUser);\n\n setLoading(false);\n\n return refreshedCognitoUser;\n } catch (error) {\n setLoading(false);\n await Auth.signOut();\n window.location.href = '/auth#/signin';\n // user isn't logged in\n return false;\n }\n }\n\n function clearCurrentUser() {\n setCognitoUser({});\n setUserModel({});\n setUserId(null);\n setInteractions(null);\n IntercomAPI('shutdown');\n setBootcamp(determineBootcamp());\n setBootcampLoading(true);\n setLoading(false);\n }\n\n async function handleAuthEvent(data) {\n switch (data.payload.event) {\n case 'signIn':\n await initializeTbcUser(true);\n break;\n case 'signOut':\n clearCurrentUser();\n break;\n default:\n break;\n }\n }\n\n function getUserGroups(user) {\n const callWithUser = user || cognitoUser;\n return getInObj(['signInUserSession', 'accessToken', 'payload', 'cognito:groups'], callWithUser, []);\n }\n\n // TODO make sure this works!\n function searchUserInteractions(key, defaultValue={}) {\n try {\n const interaction = interactions?.find(interaction => interaction.id === `${cognitoUser.username}-${key}`);\n\n return interaction\n ? JSON.parse(interaction.value)\n : defaultValue\n\n } catch (error) {\n // console.log('error parsing user interaction', error, interactions);\n }\n }\n async function refreshAndSearchUserInteractions(key) {\n try {\n const interactions = await getUserInteractions(cognitoUser.getUsername());\n setInteractions(interactions);\n return JSON.parse((interactions?.find(interaction => interaction.id === `${cognitoUser.username}-${key}`) || {}).value || '{}');\n } catch (error) {\n // console.log('error parsing user interaction', error, interactions);\n }\n }\n\n async function toggleDarkMode(value) {\n setDarkMode(value);\n await saveUserInteraction('darkModeEnabled', value);\n }\n\n useEffect(() => {\n Hub.listen('auth', handleAuthEvent);\n initializeTbcUser();\n }, [])\n\n useEffect(() => {\n const finishedLoading = !!DEFAULT_USER_ID && !!cognitoUser && !!userModel && !!interactions && !bootcampLoading\n\n if (finishedLoading) {\n setLoading(false);\n }\n\n }, [DEFAULT_USER_ID, cognitoUser, userModel, interactions, bootcampLoading]);\n\n useEffect(() => {\n if (bootcamp && DEFAULT_USER_ID) {\n setBootcampLoading(false);\n saveUserInteraction('recent-bootcamp', bootcamp);\n }\n }, [bootcamp, DEFAULT_USER_ID]);\n\n const isAdmin = groups.find(group => group === 'Admin');\n const isFreeTrial = groups.find(group => group === 'FreeTrial');\n const isBootcampPlusStudent = groups.find(group => group === 'PlusPackAccess') || isAdmin;\n const isUpgraded = isAdmin || isFreeTrial || groups.find(group => group === bootcampMembershipGroup) || (userModel && userModel.memberships && userModel.memberships.items.find(membership => membership.groups.includes(bootcampMembershipGroup) && (membership.status === 'active' || membership.status === 'cancelAtEndOfPeriod')));\n const isAwaitingPayment = userModel && userModel.memberships && userModel.memberships.items.find(membership => membership.groups.includes(bootcampMembershipGroup) && (membership.status === 'awaitingPayment'));\n const upgradedMembership = userModel && userModel.memberships && userModel.memberships.items && userModel.memberships.items.find(membership => membership.productId !== 'trial' && (membership.status === 'active' || membership.status === 'cancelAtEndOfPeriod'));\n const trialMembership = !isAdmin && !upgradedMembership && (isFreeTrial || userModel?.memberships?.items?.find(membership => membership.productId === 'trial' && membership.status === 'active'));\n const loggedIn = !!cognitoUser.username;\n\n const USER_ID = cognitoUser?.attributes?.sub;\n const fetchProfilePicture = useCallback(async () => {\n if (!USER_ID) return;\n const personalProfilePictureUrl = `https://testtube6dca237224ff44ca973cd2a6dfb779e3-tbc.s3.us-east-1.amazonaws.com/public/users/${USER_ID}/profile/profilePicture`;\n const personalProfilePicture = await fetch(personalProfilePictureUrl, {method: 'HEAD', cache: 'no-cache'});\n if (personalProfilePicture.status !== 200) throw new Error();\n return personalProfilePictureUrl;\n }, [USER_ID]);\n\n const {value: profPicUrl, error: fetchError, pending: fetching} = useAsync(fetchProfilePicture);\n\n return {\n isAdmin,\n refreshSession,\n getUserGroups,\n cognitoUser,\n setBootcamp,\n userModel,\n userQuestionMastery,\n loadedUserData,\n testProgress,\n fetchTestProgress,\n loading,\n setLoading,\n DEFAULT_USER_ID,\n saveUserInteraction,\n interactions,\n isUpgraded,\n isAwaitingPayment,\n bootcampMembershipGroup,\n trialMembership,\n loggedIn,\n bootcamp,\n intercomUserAttributes,\n searchUserInteractions,\n refreshAndSearchUserInteractions,\n validBootcamps: VALID_BOOTCAMPS,\n setTestProgress,\n HAS_EDIT_CAPABILITY: isAdmin,\n isBootcampPlusStudent,\n refreshIntercomUserAttributes,\n profPicUrl: fetching ? null : fetchError ? 'error' : profPicUrl,\n toggleDarkMode,\n darkModeEnabled,\n getDarkModeTheme,\n }\n}\n\nconst UserDataContext = createContext();\n\nconst UserDataProvider = ({children, toggleDarkMode, darkModeEnabled, getDarkModeTheme}) => {\n const value = useUserData(toggleDarkMode, darkModeEnabled, getDarkModeTheme);\n\n return (\n <UserDataContext.Provider value={value}>\n {children}\n </UserDataContext.Provider>\n );\n}\n\nconst useUserDataContext = () => useContext(UserDataContext);\n\nexport {useUserDataContext, UserDataProvider};\n","var _path, _path2, _path3, _path4, _path5;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgReviews(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.8255 9.72206C17.528 5.33294 13.124 3.00013 10.8176 4.42948C10.5636 4.5913 10.343 4.79209 10.1655 5.02279C10.1655 5.03965 4.82633 14.8158 4.82633 14.8158L1.8456 16.6429C1.388 16.924 0.996105 17.2838 0.692275 17.7019C0.388429 18.1201 0.178628 18.5882 0.0748304 19.0798C-0.0289837 19.5712 -0.0247394 20.0763 0.0873105 20.5664C0.199343 21.0565 0.416993 21.5217 0.727812 21.9355L0.861941 22.1143C1.49022 22.9423 2.45396 23.5128 3.54416 23.7021C4.63436 23.8915 5.7631 23.6843 6.68557 23.1255L11.4734 29.507C12.1776 30.2924 13.53 31.0746 15.1992 30.1542C15.495 29.9808 15.7473 29.7531 15.9398 29.486C16.1323 29.219 16.2608 28.9184 16.317 28.6036C16.3846 28.2904 16.3827 27.9685 16.3116 27.6559C16.2407 27.3434 16.102 27.0469 15.9036 26.7832L11.6858 21.1535C11.6858 21.1535 21.6563 20.4354 21.6935 20.4219C22.0049 20.363 22.3 20.2484 22.5617 20.0849C23.7466 19.3566 24.1713 17.8296 23.7615 15.7833C23.3925 13.8988 22.3456 11.765 20.8255 9.72206ZM1.9462 21.4501L1.81207 21.2715C1.59762 20.9858 1.44754 20.6647 1.37042 20.3266C1.2933 19.9883 1.29066 19.6396 1.36264 19.3006C1.43462 18.9615 1.57982 18.6385 1.78992 18.3502C2.00002 18.062 2.27091 17.8139 2.58705 17.6206L5.16165 16.0361L8.55978 20.5635L5.98509 22.148C5.66931 22.3422 5.31429 22.4783 4.94037 22.5484C4.56642 22.6184 4.18089 22.6211 3.80581 22.5563C3.43072 22.4916 3.07341 22.3605 2.75433 22.1707C2.43524 21.9808 2.16063 21.7361 1.9462 21.4501ZM14.8304 27.4473C15.034 27.7214 15.1091 28.0574 15.0394 28.3817C14.9695 28.7058 14.7603 28.9918 14.4579 29.1767C14.1542 29.3611 13.7823 29.4292 13.4232 29.3659C13.0643 29.3029 12.7477 29.1134 12.5427 28.8396L7.76972 22.4783L9.6887 21.2984L10.1953 21.2614L14.8304 27.4473ZM9.79295 20.105L6.08941 15.1698L9.62167 8.65341C9.9644 10.484 10.9667 12.6583 12.5689 14.7922C14.1709 16.9262 16.0339 18.5713 17.7852 19.5354L9.79295 20.105ZM20.7844 19.3196C19.0035 19.2151 16.1047 17.3981 13.6493 14.1248C11.1939 10.8513 10.3966 7.75345 10.9443 6.21272C11.0431 5.92361 11.2405 5.67011 11.5083 5.48849C11.7759 5.30686 12.1001 5.2064 12.4346 5.20146C14.2007 5.20146 17.2076 7.02857 19.7338 10.3963C21.1571 12.2909 22.1929 14.2731 22.476 16.0058C23.0311 19.3196 20.7844 19.3196 20.7844 19.3196Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.1676 9.84685C15.7112 9.76578 15.2415 9.76792 14.7861 9.85295C14.3305 9.93797 13.8984 10.1044 13.5149 10.3424C13.4441 10.3867 13.3837 10.4431 13.3372 10.5085C13.2905 10.5739 13.2587 10.647 13.2432 10.7235C13.2279 10.8 13.2292 10.8786 13.2474 10.9547C13.2656 11.0307 13.3001 11.1028 13.349 11.1666C13.398 11.2306 13.4603 11.2853 13.5325 11.3274C13.6048 11.3696 13.6856 11.3984 13.7702 11.4124C13.8547 11.4263 13.9415 11.4251 14.0255 11.4086C14.1096 11.3921 14.1892 11.3609 14.26 11.3167C14.503 11.1675 14.776 11.063 15.0635 11.0094C15.351 10.9556 15.6474 10.9537 15.9359 11.0036C16.2242 11.0536 16.4989 11.1544 16.7441 11.3004C16.9895 11.4462 17.2006 11.6346 17.3656 11.8543C17.5305 12.0742 17.6459 12.3212 17.7052 12.5813C17.7646 12.8416 17.7668 13.1098 17.7116 13.3707C17.6565 13.6315 17.545 13.8801 17.3836 14.1021C17.2223 14.324 17.0141 14.515 16.7713 14.6642C16.6567 14.7357 16.5705 14.8385 16.5252 14.9577C16.4799 15.0769 16.4779 15.2059 16.5196 15.3262C16.5612 15.4462 16.6443 15.5512 16.7566 15.6256C16.8689 15.7001 17.0047 15.74 17.1438 15.7396C17.2767 15.7419 17.4069 15.7065 17.5165 15.6384C18.0959 15.2832 18.5459 14.7805 18.8093 14.1937C19.0727 13.6069 19.1377 12.9626 18.9961 12.3424C18.8544 11.7222 18.5126 11.154 18.0137 10.7096C17.5148 10.2654 16.8814 9.9651 16.1938 9.84685H16.1676Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.6299 5.61952H21.6932C21.8544 5.61946 22.01 5.56533 22.1297 5.46758C22.2495 5.36983 22.3249 5.23539 22.3414 5.09025L22.8445 0.66738C22.8559 0.589178 22.8499 0.509681 22.8268 0.433612C22.8037 0.357543 22.764 0.286442 22.7099 0.224499C22.6559 0.162571 22.5887 0.111067 22.5124 0.0730475C22.4359 0.0350132 22.3519 0.011242 22.2651 0.00313535C22.1784 -0.00498655 22.0908 0.00270892 22.0074 0.0257794C21.9239 0.0488499 21.8466 0.086823 21.7797 0.137444C21.7129 0.18805 21.6578 0.250297 21.6181 0.320469C21.5781 0.390655 21.5542 0.467348 21.5478 0.546023L21.0485 4.97226C21.0308 5.12783 21.0821 5.28338 21.1911 5.40475C21.3001 5.52611 21.4579 5.60336 21.6299 5.61952Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.0581 4.70935C29.9624 4.57877 29.8135 4.48777 29.6439 4.45618C29.4742 4.42461 29.2977 4.45502 29.1528 4.54078L24.6109 7.23764C24.493 7.30819 24.4036 7.41135 24.3561 7.53173C24.3086 7.65227 24.3055 7.78331 24.3476 7.90537C24.3896 8.02758 24.4745 8.13394 24.589 8.20861C24.7037 8.28343 24.8421 8.32244 24.9834 8.31985C25.1153 8.32259 25.245 8.28967 25.356 8.22537L29.8979 5.52852C30.0389 5.43883 30.1347 5.30232 30.1649 5.14883C30.1948 4.99534 30.1564 4.83733 30.0581 4.70935Z\",\n fill: \"white\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.4481 11.9101L26.1647 11.0504C25.9943 11.0228 25.8186 11.0574 25.6765 11.1468C25.5343 11.2363 25.4372 11.3733 25.4065 11.5275C25.3759 11.6817 25.4143 11.8406 25.5131 11.9692C25.612 12.0978 25.7632 12.1858 25.9338 12.2135L31.2135 13.0731H31.3288C31.4951 13.0775 31.6567 13.0243 31.781 12.9245C31.9052 12.8245 31.9826 12.6856 31.9975 12.5358C32.0121 12.386 31.9631 12.2368 31.8604 12.1186C31.7576 12.0005 31.6087 11.9221 31.4444 11.8999L31.4481 11.9101Z\",\n fill: \"white\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgReviews);\nexport default __webpack_public_path__ + \"static/media/reviews.846d5d80.svg\";\nexport { ForwardRef as ReactComponent };","import styled from 'styled-components';\nimport '@bootcamp/shared/src/assets/fonts/proxima-nova/proxima-nova.css';\n\nexport const Hero = styled.h1`\n font-family: proxima-nova;\n font-weight: ${({theme}) => theme.font.weight.bold};\n font-size: 64px;\n line-height: 72px;\n margin: 0;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: 56px;\n line-height: 64px;\n }\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n font-size: 48px;\n line-height: 56px;\n }\n`;\n\nexport const H1 = styled.h1`\n font-family: proxima-nova;\n font-weight: ${({theme}) => theme.font.weight.bold};\n font-size: ${({theme}) => theme.font.size.xsuper};\n line-height: ${({theme}) => theme.font.size.xsuper.split('px')[0] * theme.font.multipliers.small}px;\n margin: 0;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: ${({theme}) => theme.font.size.super};\n line-height: ${({theme}) => theme.font.size.super.split('px')[0] * theme.font.multipliers.small}px;\n }\n`;\n\nexport const H2 = styled.h2`\n font-family: proxima-nova;\n font-weight: ${({theme}) => theme.font.weight.bold};\n font-size: ${({theme}) => theme.font.size.xxlarge};\n line-height: ${({theme}) => theme.font.size.xxlarge.split('px')[0] * theme.font.multipliers.small}px;\n margin: 0;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: ${({theme}) => theme.font.size.xlarge};\n line-height: ${({theme}) => theme.font.size.xlarge.split('px')[0] * theme.font.multipliers.small}px;\n }\n`;\n\nexport const H3 = styled.h3`\n font-family: ${() => window.location.pathname.includes('inbde/custom-test') ? 'Arial' : 'proxima-nova'};\n font-weight: ${({theme}) => theme.font.weight.bold};\n font-size: ${({theme}) => theme.font.size.regular};\n line-height: ${({theme}) => theme.font.size.large.split('px')[0] * theme.font.multipliers.small}px;\n margin: 0;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: ${({theme}) => theme.font.size.medium};\n line-height: ${({theme}) => theme.font.size.regular.split('px')[0] * theme.font.multipliers.small}px;\n }\n`;\n\nexport const H4 = styled.h4`\n font-family: proxima-nova;\n font-weight: ${({theme}) => theme.font.weight.bold};\n font-size: ${({theme}) => theme.font.size.medium};\n line-height: ${({theme}) => theme.font.size.medium.split('px')[0] * theme.font.multipliers.small}px;\n margin: 0;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: ${({theme}) => theme.font.size.small};\n line-height: ${({theme}) => theme.font.size.small.split('px')[0] * theme.font.multipliers.small}px;\n }\n`;\n\nexport const H5 = styled.h5`\n font-family: proxima-nova;\n font-weight: ${({theme}) => theme.font.weight.regular};\n font-size: ${({theme}) => theme.font.size.small};\n line-height: ${({theme}) => theme.font.size.small.split('px')[0] * theme.font.multipliers.small}px;\n margin: 0;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: ${({theme}) => theme.font.size.smaller};\n line-height: ${({theme}) => theme.font.size.smaller.split('px')[0] * theme.font.multipliers.small}px;\n }\n`;\n\nexport const H6 = styled.h6`\n font-family: proxima-nova;\n font-weight: ${({theme}) => theme.font.weight.regular};\n font-size: ${({theme}) => theme.font.size.smaller};\n line-height: ${({theme}) => theme.font.size.smaller.split('px')[0] * theme.font.multipliers.small}px;\n margin: 0;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: ${({theme}) => theme.font.size.smallest};\n line-height: ${({theme}) => theme.font.size.smallest.split('px')[0] * theme.font.multipliers.small}px;\n }\n`;\n\nexport const Body1 = styled.p`\n font-family: proxima-nova;\n font-size: ${({theme}) => theme.font.size.xlarge};\n line-height: ${({theme}) => theme.font.size.xlarge.split('px')[0] * theme.font.multipliers.large}px;\n margin: 0;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: ${({theme}) => theme.font.size.regular};\n line-height: ${({theme}) => theme.font.size.regular.split('px')[0] * theme.font.multipliers.large}px};\n }\n`;\n\nexport const Body2 = styled.p`\n font-family: ${() => window.location.pathname.includes('inbde/custom-test') ? 'Arial' : 'proxima-nova'};\n font-size: ${({theme}) => theme.font.size.regular};\n line-height: ${({theme}) => theme.font.size.regular.split('px')[0] * theme.font.multipliers.large}px;\n margin: 0;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: ${({theme}) => theme.font.size.medium};\n line-height: ${({theme}) => theme.font.size.medium.split('px')[0] * theme.font.multipliers.large}px;\n }\n`;\nexport const Body3 = styled.p`\n font-family: ${() => window.location.pathname.includes('inbde/custom-test') ? 'Arial' : 'proxima-nova'};\n font-size: ${({theme}) => theme.font.size.medium};\n line-height: ${({theme}) => theme.font.size.medium.split('px')[0] * theme.font.multipliers.large}px};\n margin: 0;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: ${({theme}) => theme.font.size.small};\n line-height: ${({theme}) => theme.font.size.small.split('px')[0] * theme.font.multipliers.large}px};\n }\n`;\nexport const Body3Mobile = styled(Body3)`\n font-size: ${({theme}) => theme.font.size.small};\n line-height: ${({theme}) => theme.font.size.small.split('px')[0] * theme.font.multipliers.large}px};\n`;\nexport const Body4 = styled.p`\n font-family: proxima-nova;\n font-size: ${({theme}) => theme.font.size.small};\n line-height: ${({theme}) => theme.font.size.small.split('px')[0] * theme.font.multipliers.large}px};\n margin: 0;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n\n\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: ${({theme}) => theme.font.size.smaller};\n line-height: ${({theme}) => theme.font.size.smaller.split('px')[0] * theme.font.multipliers.large}px};\n }\n`;\n\n\nexport const Label1 = styled.div`\n font-family: proxima-nova;\n font-size: ${({theme}) => theme.font.size.larger};\n line-height: ${({theme}) => theme.font.size.larger.split('px')[0] * theme.font.multipliers.none}px;\n margin: 0;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n text-transform: uppercase;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: ${({theme}) => theme.font.size.regular};\n line-height: ${({theme}) => theme.font.size.regular.split('px')[0] * theme.font.multipliers.none}px;\n }\n`;\n\nexport const Label2 = styled.p`\n font-family: proxima-nova;\n font-size: ${({theme}) => theme.font.size.regular};\n line-height: ${({theme}) => theme.font.size.regular.split('px')[0] * theme.font.multipliers.none}px;\n margin: 0;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n text-transform: uppercase;\n letter-spacing: 1.5px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: ${({theme}) => theme.font.size.small};\n line-height: ${({theme}) => theme.font.size.small.split('px')[0] * theme.font.multipliers.none}px;\n }\n`;\n\nexport const Label3 = styled.p`\n font-family: proxima-nova;\n font-size: ${({theme}) => theme.font.size.small};\n line-height: ${({theme}) => theme.font.size.small.split('px')[0] * theme.font.multipliers.none}px;\n margin: 0;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n text-transform: uppercase;\n letter-spacing: 1px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: ${({theme}) => theme.font.size.smaller};\n line-height: ${({theme}) => theme.font.size.smaller.split('px')[0] * theme.font.multipliers.none}px\n }\n`;\n\nexport const KeyboardShortcutLabel = styled.div`\n width: 18px;\n height: 18px;\n background: #F6F6F6;\n border-radius: 4px;\n font-family: proxima-nova;\n font-style: normal;\n font-weight: 700;\n font-size: 14px;\n line-height: 14px;\n color: #85868E;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-left: 12px;\n ${({theme}) => theme.mediaQueries.laptop} {\n display: none;\n }\n`\n","var _path, _path2;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgHome(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.5 7.50008L10 1.66675L17.5 7.50008V16.6667C17.5 17.1088 17.3244 17.5327 17.0118 17.8453C16.6993 18.1578 16.2754 18.3334 15.8333 18.3334H4.16667C3.72464 18.3334 3.30072 18.1578 2.98816 17.8453C2.67559 17.5327 2.5 17.1088 2.5 16.6667V7.50008Z\",\n stroke: \"white\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.5 18.3333V10H12.5V18.3333\",\n stroke: \"white\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgHome);\nexport default __webpack_public_path__ + \"static/media/home.fd7aad62.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport styled from 'styled-components';\n\nimport {ReactComponent as Reviews} from './assets/reviews.svg';\nimport {ReactComponent as Home} from './assets/home.svg';\nimport {Star} from '@styled-icons/heroicons-solid/Star';\nimport {MagnifyingGlass} from '@styled-icons/heroicons-outline/MagnifyingGlass';\n\nimport {FlexBox} from '../../Grid';\n\nconst Circle = styled(FlexBox)`\n width: auto;\n border-radius: 100px;\n align-items: center;\n justify-content: center;\n`;\n\nconst Icon = styled(Circle)`\n svg {\n width: 64px;\n height: 64px;\n }\n`;\n\nexport const HomeIcon = ({className}) => (\n <Icon className={className} children={<Home/>}/>\n);\n\nexport const StudentReviewsIcon = ({className}) => (\n <Icon className={className} children={<Reviews/>}/>\n);\n\nexport const StarIcon = ({className}) => (\n <Icon className={className} children={<Star/>}/>\n);\nexport const SearchIcon = ({className}) => (\n <Icon className={className} children={<MagnifyingGlass/>}/>\n);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nconst hoverTransitionTime = '.5s';\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 100%;\n transition: ${hoverTransitionTime};\n cursor: pointer;\n line-height: 0;\n\n ${({size, theme}) => {\n switch (size) {\n case 'small':\n return `\n width: 48px;\n height: 48px;\n padding: 12px;\n ${theme.mediaQueries.tablet} {\n width: 32px;\n height: 32px;\n padding: 5px;\n }\n `;\n case 'large':\n return `\n width: 64px;\n height: 64px;\n padding: 16px;\n ${theme.mediaQueries.tablet} {\n width: 48px;\n height: 48px;\n padding: 10px;\n }\n `;\n default:\n return `\n width: 48px;\n height: 48px;\n padding: 12px;\n ${theme.mediaQueries.tablet} {\n width: 32px;\n height: 32px;\n padding: 5px;\n }\n `;\n }\n }}\n ${({type, theme}) => {\n switch (type) {\n case 'primary':\n return `\n transition: all 50ms ease;\n background: ${theme.darkModeEnabled ? theme.colors.darkModePalette.surfaceSecondary : theme.colors.neutralsPalette.white};\n box-shadow: ${theme.elevation.shadow.low};\n\n &:hover {\n transform: scale(1.02);\n ${theme.elevation.shadow.medium};\n }\n\n\n `\n case 'secondary':\n return `\n background: ${theme.darkModeEnabled ? theme.colors.darkModePalette.surfaceSecondary : theme.overlays.opacity.light._100};\n border: .5px solid ${theme.overlays.opacity.light._50};\n `\n default:\n return `\n background: ${theme.darkModeEnabled ? theme.colors.darkModePalette.surfaceSecondary : theme.colors.neutralsPalette.white};\n box-shadow: ${theme.elevation.shadow.medium};\n `\n }\n }}\n ${({disabled, type, theme}) => disabled && `\n opacity: .5;\n background: ${() => {\n switch (type) {\n case 'primary':\n return theme.colors.neutralsPalette.light;\n case 'secondary':\n return theme.overlays.opacity.light._100;\n default:\n return theme.colors.neutralsPalette.light;\n }\n }};\n cursor: not-allowed;\n `}\n\n &:hover {\n ${({type, theme}) => {\n switch (type) {\n case 'primary':\n return `\n background: ${theme.darkModeEnabled ? theme.colors.darkModePalette.surfaceTertiary : theme.colors.neutralsPalette.white};\n box-shadow: ${theme.elevation.shadow.high};\n `\n case 'secondary':\n return `\n background: ${theme.darkModeEnabled ? theme.colors.darkModePalette.surfaceTertiary : theme.overlays.opacity.light._200};\n `\n default:\n return `\n background: ${theme.colors.neutralsPalette.white};\n box-shadow: ${theme.elevation.shadow.high};\n `\n }\n }}\n transition: ${hoverTransitionTime};\n }\n`;\n\nconst IconButton = ({children, ...props}) => (\n <Container {...props}>\n {children}\n </Container>\n);\n\nIconButton.propTypes = {\n type: PropTypes.oneOf(['primary', 'secondary']),\n size: PropTypes.oneOf(['small', 'large']),\n disabled: PropTypes.bool\n};\n\nIconButton.defaultProps = {\n type: 'primary',\n size: 'large',\n disabled: false\n};\n\n\nexport default IconButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styled from 'styled-components';\n\n\nfunction getButtonTypeStyles(buttonType, color, theme) {\n const {colors: {neutralsPalette}} = theme;\n\n switch (buttonType) {\n case 'primary':\n return `\n transition: all 100ms ease;\n color: ${theme.colors.brandPalette[color].default};\n\n &:hover {\n color: ${theme.colors.brandPalette[color].hover};\n }\n\n &:disabled {\n color: ${neutralsPalette.light};\n }\n `;\n default:\n return '';\n }\n}\n\nconst Container = styled.button.attrs({type: 'button'})`\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n cursor: pointer;\n text-decoration: none;\n user-select: none;\n border: none;\n background: none;\n font-family: proxima-nova;\n\n width: ${({fixed}) => fixed ? '100%' : 'auto'};\n font-weight: ${({theme}) => theme.font.weight.semibold};\n font-size: ${({theme}) => theme.font.size.regular};\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n\n padding: 0px 8px;\n &:focus {\n outline: none;\n }\n\n ${({buttonType, color, theme}) => getButtonTypeStyles(buttonType, color, theme)}\n\n a:-webkit-any-link {\n color: inherit;\n text-decoration: none;\n }\n`;\n\nconst TextButton = ({className, type, color, fixed, children, iconConfig, disabled, onClick}) => {\n return (\n <Container className={className} buttonType={type} color={color} fixed={fixed} disabled={disabled} onClick={onClick}>\n {children}\n </Container>\n );\n}\n\n\nTextButton.propTypes = {\n type: PropTypes.oneOf(['primary']),\n color: PropTypes.oneOf(['purple', 'blue', 'green', 'orange', 'red', 'pink', 'indigo']),\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n fixed: PropTypes.bool,\n\n};\n\nTextButton.defaultProps = {\n type: 'primary',\n color: 'indigo',\n disabled: false,\n onClick: () => true,\n fixed: true,\n};\n\nexport default TextButton;\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgBadge(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M11.996 6.62227e-05C11.9291 -0.000158031 11.8628 0.0108495 11.8008 0.0324677L0.320144 4.15357C0.215838 4.19092 0.128465 4.25677 0.0713157 4.34109C0.0141661 4.42542 -0.00963227 4.52363 0.00354109 4.62075C0.692581 9.61612 2.16812 14.0322 4.20433 17.4145C6.24053 20.7968 8.84459 23.171 11.8473 23.98C11.9468 24.0067 12.0533 24.0067 12.1528 23.98C15.1555 23.171 17.7544 20.7968 19.7907 17.4145C21.8268 14.0322 23.3075 9.61612 23.9965 4.62075C24.0096 4.52352 23.9857 4.42523 23.9283 4.34089C23.871 4.25655 23.7834 4.19077 23.6789 4.15357L12.1983 0.0324677C12.134 0.0100573 12.0652 -0.000965015 11.996 6.62227e-05ZM8.28739 16.5L11.9824 14.463L15.7126 16.5L15.0088 12.1667L18 9.09259L13.8475 8.46296L11.9824 4.5L10.1525 8.46296L6 9.09259L8.9912 12.1667L8.28739 16.5Z\",\n fill: \"#F49400\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBadge);\nexport default __webpack_public_path__ + \"static/media/badge.1c075186.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport styled, {css, keyframes} from 'styled-components';\nimport {Link} from 'react-router-dom';\nimport {Spinner2} from '@styled-icons/icomoon/Spinner2';\nimport DATBootcampLogo from '@bootcamp/shared/src/assets/images/logo.svg';\nimport BootcampLogoSVG from '@bootcamp/shared/src/assets/svg/bootcamp_dark_text_logo.png';\nimport {ChevronDown} from '@styled-icons/heroicons-outline/ChevronDown';\nimport baseTheme from '@bootcamp/shared/src/styles/theme';\n\nexport const OpenIndicator = styled(ChevronDown)`\n color: #C8C9CE;\n margin-left: auto;\n margin-right: 0;\n transition: .2s transform;\n transform: rotate(${({open}) => open ? '0deg' : '-90deg'});\n`;\n\nconst Button = styled(Link)`\n display: flex;\n white-space: nowrap;\n justify-content: center;\n align-items: center;\n padding: 1.25em;\n background: ${({theme}) => theme.brandPurple};\n border-radius: 10px;\n color: white;\n cursor: pointer;\n text-align: center;\n font-size: 14px;\n text-decoration: none;\n user-select: none;\n border: none;\n transition: all 200ms ease;\n font-family: proxima-nova,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;\n &:hover {\n transition: all 200ms ease;\n }\n &:focus {\n outline: none;\n }\n ${({disabled}) => disabled && ({\n cursor: 'not-allowed',\n opacity: '.5'\n })}\n`;\n\nconst RaisedButton = styled(Button).attrs(props => ({as: 'button', type: 'button'}))`\n letter-spacing: 1px;\n ${({color}) => {\n switch (color) {\n case 'blue':\n return css`\n background: #5096E4;\n box-shadow: 0px 5px 0px #3c82d0;\n &:hover {\n background: rgb(78, 148, 226);\n box-shadow: rgb(55, 125, 203) 0px 5px 0px;\n }\n `;\n case 'red':\n return css`\n background: #fa4d4d;\n box-shadow: 0px 5px 0px #ad3636;\n &:hover {\n background: #fa4d4d;\n box-shadow: 0px 5px 0px #ad3636;\n }\n `;\n case 'salmon':\n return css`\n background: #FF7E73;\n box-shadow: 0px 5px 0px #EB6A5F;\n &:hover {\n background: #FF7E73;\n box-shadow: 0px 5px 0px #EB6A5F;\n }\n `;\n case 'yellow':\n return css`\n background: #fbc531;\n box-shadow: 0px 5px 0px rgb(231, 177, 29);\n &:hover {\n background: #fbc531;\n box-shadow: 0px 5px 0px rgb(231, 177, 29);\n }\n `;\n case 'green':\n return css`\n background: #44bd32;\n box-shadow: 0px 5px 0px rgb(40,169,30);\n &:hover {\n background: #44bd32;\n box-shadow: 0px 5px 0px rgb(40,169,30);\n }\n `;\n case 'grey':\n return css`\n color: rgb(110, 117, 119);\n background: rgb(237, 240, 242);\n box-shadow: 0px 5px 0px rgb(204, 204, 204);\n &:hover {\n background: rgb(237, 240, 242);\n box-shadow: 0px 5px 0px rgb(204, 204, 204);\n }\n `;\n case 'gold':\n return css`\n color: white;\n background: #FCD742;\n box-shadow: 0px 5px 0px #f1c40f;\n &:hover {\n background: #FCD742;\n box-shadow: 0px 5px 0px #f1c40f;\n }\n `;\n default:\n return css`\n background: white;\n box-shadow: rgba(221, 221, 221, 1);\n &:hover {\n background: rgba(221, 221, 221, 1);\n box-shadow: rgba(172, 172, 172, 1) 0px 5px 0px;\n }\n `;\n }\n }\n }\n`;\n\nconst PurpleButton = styled(Button)`\n &:hover {\n background: rgb(110, 81, 199);\n }\n`;\n\nconst GreyButton = styled(Button)`\n background: ${({theme}) => theme.lightGrey};\n color: ${({theme}) => theme.lightTextColor};\n &:hover {\n background: ${({theme}) => theme.greyButtonHover};\n }\n`;\n\nconst BlueButton = styled(Button)`\n background: ${({theme}) => theme.brandBlue};\n`;\n\nconst LoadingSpinner = styled(Spinner2).attrs(props => ({size: props.size || '14'}))`\n animation: ${keyframes`${baseTheme.animation.spin}`} 2s infinite linear;\n fill: ${({color}) => (baseTheme.colors.brandPalette[color] && baseTheme.colors.brandPalette[color].default) || baseTheme.colors.neutralsPalette.white};\n`;\n\nconst Loader = styled(Spinner2).attrs(props => ({size: props.size || '14'}))`\n opacity: ${({active}) => active ? 1 : 0};\n animation: ${({theme}) => keyframes`${theme.animation.spin}`} 2s infinite linear;\n fill: ${({theme: {colors: {brandPalette, neutralsPalette}}, color}) => (brandPalette[color] && brandPalette[color].default) || neutralsPalette.white};\n`;\n\nconst FullPageSpinnerContainer = styled.div`\n position: fixed;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: -1;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n width: 100vw;\n height: 100vh;\n background: rgba(0,0,0,.15);\n opacity: 0;\n transition: opacity ease 250ms;\n ${({active}) => {\n if (active) {\n return css`\n z-index: 200;\n opacity: 1;\n `\n }\n }}\n`;\nconst FullContainerSpinnerContainer = styled.div`\n position: fixed;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: -1;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: rgba(0,0,0,.15);\n opacity: 0;\n transition: opacity ease 250ms;\n ${({active}) => {\n if (active) {\n return css`\n z-index: 3;\n opacity: 1;\n `\n }\n }}\n`;\n\nconst FullPageSpinner = ({className, ...props}) => (\n <FullPageSpinnerContainer className={className} {...props}>\n <LoadingSpinner size={24} {...props}/>\n </FullPageSpinnerContainer>\n)\nconst FullContainerSpinner = ({className, ...props}) => (\n <FullContainerSpinnerContainer className={className} {...props}>\n <LoadingSpinner size={24} {...props}/>\n </FullContainerSpinnerContainer>\n)\n\n// TODO make this responsive\nconst FixedBar = styled.div`\n position: fixed;\n z-index: 10;\n width: 100%;\n left: 0;\n ${({position}) => {\n switch (position) {\n case 'top':\n return css`\n box-shadow: 0px 1px 0px #3c82d0;\n top: 0;\n `\n case 'bottom':\n return css`\n box-shadow: 0px -1px 0px #d4d8d9;\n bottom: 0;\n `\n default:\n return;\n }\n }}\n ${({size, barHeight}) => css`\n height: ${barHeight*size}px;\n `}\n ${({background}) => css`\n background: ${background};\n `}\n`;\n\nconst DBCLogo = styled.img.attrs(props => ({src: DATBootcampLogo}))`\n cursor: pointer;\n max-width: 175px;\n`;\nconst BootcampLogo = styled.img.attrs(props => ({src: BootcampLogoSVG}))`\n cursor: pointer;\n max-width: 175px;\n`;\n\n\nexport {\n Button,\n PurpleButton,\n GreyButton,\n BlueButton,\n RaisedButton,\n LoadingSpinner,\n Loader,\n FullPageSpinner,\n FullContainerSpinner,\n FixedBar,\n DBCLogo,\n BootcampLogo,\n}\n","import React from 'react';\nimport {Link} from 'react-router-dom';\nimport PropTypes from 'prop-types';\n\nimport IconButton from './IconButton';\nimport TextButton from './TextButton';\nimport styled from 'styled-components';\n\nimport { LoadingSpinner } from '..';\n\nimport {ReactComponent as Badge} from '@bootcamp/shared/src/assets/svg/badge.svg';\n\nimport baseTheme from '@bootcamp/shared/src/styles/theme';\n\n\nfunction getButtonSizeStyles(size, theme) {\n const {font} = theme;\n\n switch (size) {\n case 'small':\n return `\n padding: 12px 16px;\n font-size: ${font.size.medium};\n line-height: ${font.height.small2};\n `;\n case 'medium':\n return `\n padding: 15px 16px;\n font-size: ${font.size.medium};\n line-height: ${font.height.smaller};\n `;\n case 'large':\n return `\n padding: 19px 16px;\n font-size: ${font.size.regular};\n line-height: ${font.height.smaller};\n height: 56px;\n min-width: 64px;\n `;\n default:\n return '';\n }\n}\n\nfunction getButtonTypeStyles(type, color, colorConfig, theme) {\n const {colors: {brandPalette, neutralsPalette}, overlays: {opacity}} = theme;\n\n const primaryColor = colorConfig.default || brandPalette[color].default;\n const primaryDark = colorConfig.dark || brandPalette[color].dark;\n const primaryHover = colorConfig.hover || brandPalette[color].hover;\n const ghostHover = colorConfig.light || brandPalette[color].light;\n\n switch (type) {\n case 'primary':\n return `\n transition: all 100ms ease;\n background: ${primaryColor};\n box-shadow: 0px 2px 0px ${primaryDark};\n\n &:hover {\n transform: translateY(-1px);\n background: ${primaryHover};\n }\n\n &:disabled {\n transform: none;\n cursor: not-allowed;\n box-shadow: none;\n background: ${theme.darkModeEnabled ? theme.colors.darkModePalette.surfaceSecondary : neutralsPalette.lightGrey};\n opacity: ${theme.darkModeEnabled ? 0.5 : 1};\n\n &:hover {\n background: ${theme.darkModeEnabled ? theme.colors.darkModePalette.surfaceTertiary : neutralsPalette.lightGrey};\n\n }\n box-shadow: none;\n }\n\n svg > path {\n fill: ${baseTheme.colors.neutralsPalette.white};\n }\n `;\n case 'secondary':\n return `\n transition: all 100ms ease;\n background: ${theme.overlays.opacity.light._100};\n border: .5px solid ${theme.overlays.opacity.light._50};\n\n &:hover {\n background: ${opacity.light._200};\n }\n\n &:disabled {\n transform: none;\n cursor: not-allowed;\n opacity: 0.5;\n box-shadow: none;\n }\n `;\n case 'ghost':\n return `\n transition: all 100ms ease;\n border: 1px solid ${primaryColor};\n color: ${primaryColor};\n background: transparent;\n\n &:hover {\n background: ${ghostHover};\n }\n\n &:disabled {\n transform: none;\n cursor: not-allowed;\n box-shadow: none;\n border: 1px solid ${neutralsPalette.extraLight};\n color: ${neutralsPalette.light};\n }\n `;\n case 'ghostWhite':\n return `\n transition: all 100ms ease;\n border: 1px solid white;\n color: white;\n background: transparent;\n\n &:hover {\n background: ${opacity.light._100};\n }\n\n &:disabled {\n transform: none;\n cursor: not-allowed;\n box-shadow: none;\n border: 1px solid ${opacity.light._300};\n color: ${opacity.light._300};\n }\n `;\n default:\n return `\n transition: all 100ms ease;\n background: ${primaryColor};\n box-shadow: 0px 2px 0px ${primaryDark};\n\n &:hover {\n transform: translateY(-1px);\n box-shadow: ${theme.elevation.shadow.medium};\n background: ${primaryHover};\n }\n\n &:disabled {\n transform: none;\n cursor: not-allowed;\n box-shadow: none;\n background: ${neutralsPalette.light};\n }\n\n svg > path {\n fill: ${baseTheme.colors.neutralsPalette.white};\n }\n `;\n }\n}\n\nconst Container = styled.button`\n display: flex;\n flex-direction: ${({iconPosition}) => (iconPosition === 'top' || iconPosition === 'bottom') ? 'column' : 'row'};\n align-items: center;\n justify-content: center;\n border-radius: ${({round}) => round ? '64px' : '8px'};\n cursor: pointer;\n text-decoration: none;\n user-select: none;\n border: none;\n\n font-family: 'proxima-nova';\n\n width: ${({fixed}) => fixed ? '100%' : 'auto'};\n font-weight: ${({theme}) => theme.font.weight.semibold};\n color: ${baseTheme.colors.neutralsPalette.white};\n\n &:focus {\n outline: none;\n }\n\n ${({size, theme}) => getButtonSizeStyles(size, theme)}\n ${({buttonType, color, theme, colorConfig}) => getButtonTypeStyles(buttonType, color, colorConfig, theme)}\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n font-size: ${({theme}) => theme.font.size.small};\n line-height: ${({theme}) => theme.font.weight.small2};\n }\n`;\n\nconst Wrapper = styled.span`\n`;\nconst IconWrapper = styled.span`\n display: flex;\n\n ${({position, addSpacing, theme: {layouts: {spacing}}}) => addSpacing && `\n ${position === 'left'\n ? `margin-right: ${spacing.s};`\n : position === 'right'\n ? `margin-left: ${spacing.s};`\n : position === 'top'\n ? `margin-bottom: 3px;`\n : position === 'bottom'\n ? `margin-top: 3px;`\n : ''\n }\n `}\n`;\nconst LinkWrapper = styled(Link)`\n text-decoration: none;\n width: 100%;\n margin: 0;\n`;\n\nconst renderIcon = (icon, size, position, addSpacing) => {\n const Icon = icon;\n\n return (\n <IconWrapper position={position} addSpacing={addSpacing}>\n <Icon size={size} width={size} height={size}/>\n </IconWrapper>\n );\n};\n\nconst Button = ({className, size, type, color, colorConfig, fixed, children, iconConfig, disabled, onClick, buttonProps, loading, round}) => {\n const {position: iconPosition, size: iconSize, icon} = iconConfig;\n const addIconSpacing = children && children.length > 0;\n\n return (\n <Container className={className} iconPosition={iconPosition} size={size} buttonType={type} color={color} colorConfig={colorConfig} fixed={fixed} disabled={disabled} onClick={onClick} round={round} {...buttonProps}>\n {icon && (iconPosition === 'left' || iconPosition === 'top') && renderIcon(icon, iconSize, iconPosition, addIconSpacing)}\n <Wrapper>\n {loading ? <LoadingSpinner size={14} active/> : children}\n </Wrapper>\n {icon && (iconPosition === 'right' || iconPosition === 'bottom') && renderIcon(icon, iconSize, iconPosition, addIconSpacing)}\n </Container>\n );\n}\n\nexport const UpgradeButton = styled((props) => <Button iconConfig={{position: 'left', icon: Badge, size: 16}} {...props}/>)`\n background: ${({theme}) => theme.colors.neutralsPalette.light};\n box-shadow: none;\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n\n svg > path {\n fill: ${({theme}) => theme.colors.neutralsPalette.grey};\n }\n\n &:hover {\n background: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n }\n`;\n\n\nButton.propTypes = {\n type: PropTypes.oneOf(['primary', 'secondary', 'ghost', 'ghostWhite']),\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n color: PropTypes.oneOf(['purple', 'blue', 'green', 'orange', 'red', 'pink', 'indigo']),\n colorConfig: PropTypes.shape({\n default: PropTypes.string,\n hover: PropTypes.string,\n }),\n iconConfig: PropTypes.shape({\n position: PropTypes.oneOf(['left', 'right']),\n icon: PropTypes.object,\n size: PropTypes.number,\n }),\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n fixed: PropTypes.bool,\n round: PropTypes.bool,\n};\n\nButton.defaultProps = {\n type: 'primary',\n size: 'large',\n color: 'royal',\n fixed: false,\n iconConfig: {\n position: 'left',\n icon: null,\n size: 16\n },\n disabled: false,\n colorConfig: {},\n onClick: () => true,\n buttonProps: {},\n round: false,\n};\n\nconst linkButtonTypes = {\n text: TextButton,\n icon: IconButton,\n default: Button,\n};\n\n// purposfully not passing onClick handler to button if using LinkButton to prevent\n// unintended behavior\nconst LinkButton = ({className, to, buttonType, onClick, ...buttonProps}) => {\n const ButtonComponent = linkButtonTypes[buttonType];\n\n return (\n <LinkWrapper className={className} to={to}>\n <ButtonComponent {...buttonProps}/>\n </LinkWrapper>\n );\n}\n\nLinkButton.propTypes = {\n to: PropTypes.string.isRequired,\n buttonType: PropTypes.oneOf(['text', 'icon', 'default']),\n ...Button.propTypes,\n};\n\nLinkButton.defaultProps = {\n buttonType: 'default',\n};\n\nexport {Button, LinkButton, IconButton, TextButton};\n","import {useRef, useState, useCallback, useEffect} from 'react';\nimport debounce from \"debounce\";\nimport { useHistory } from \"react-router-dom\";\n\nimport {useUserDataContext} from '../contexts/UserData';\nimport {getAllQuestionMastery, getTestProgressByUserIdHashTestId} from '@bootcamp/shared/src/requests';\n\nexport const useDebouncedState = (initialState, durationInMs = 250) => {\n const [internalState, setInternalState] = useState(initialState);\n const debouncedFunction = useCallback(debounce(setInternalState, durationInMs), []);\n return [internalState, debouncedFunction];\n};\n\nexport const useTestProgress = (testId, formatter) => {\n const [progress, setProgress] = useState(null);\n const {DEFAULT_USER_ID, loading} = useUserDataContext();\n\n async function fetchTestProgress() {\n if (!DEFAULT_USER_ID) return setProgress([]);\n\n const data = await getTestProgressByUserIdHashTestId(`${DEFAULT_USER_ID}#${testId}`, true);\n\n setProgress(formatter(data));\n }\n\n useEffect(() => {\n if (loading || !testId) return;\n\n fetchTestProgress();\n }, [DEFAULT_USER_ID, loading]);\n\n return [progress];\n\n}\n\nexport const useTestProgressArray = (testIds, formatter) => {\n const [progresses, setProgresses] = useState(null);\n const {DEFAULT_USER_ID, loading} = useUserDataContext();\n\n async function fetchTestProgress(testId) {\n if (!DEFAULT_USER_ID) return setProgresses([]);\n\n const data = await getTestProgressByUserIdHashTestId(`${DEFAULT_USER_ID}#${testId}`, true);\n\n return data;\n }\n\n async function fetchTestProgresses() {\n const data = await Promise.all(testIds.map(fetchTestProgress));\n\n setProgresses(formatter(data));\n }\n\n useEffect(() => {\n if (loading || !testIds?.length) return;\n\n fetchTestProgresses();\n }, [DEFAULT_USER_ID, loading]);\n\n return [progresses];\n\n};\n\nexport const useMastery = (contentId, contentType, formatter) => {\n const [progress, setProgress] = useState(null);\n const {DEFAULT_USER_ID, loading} = useUserDataContext();\n\n const hashKey = {\n subject: 'userIdHashSubjectTagId',\n subjectWithQuestionBaseId: 'userIdHashSubjectTagId',\n subjectWithQuestionTags: 'userIdHashSubjectTagId',\n topic: 'userIdHashTopicTagId',\n test: 'userIdHashTestId',\n testSmall: 'userIdHashTestId',\n }[contentType];\n\n async function fetchProgress() {\n if (!DEFAULT_USER_ID) return setProgress([]);\n\n const data = await getAllQuestionMastery({\n [hashKey]: `${DEFAULT_USER_ID}#${contentId}`\n }, contentType);\n\n setProgress(formatter ? formatter(data) : data);\n }\n\n useEffect(() => {\n if (loading || !contentId) return;\n\n fetchProgress();\n }, [DEFAULT_USER_ID, loading, contentId]);\n\n return [progress];\n}\n\nexport const useMasteryArray = (contentIds, contentType, formatter, type, callback, userIdOverride=null) => {\n const [progresses, setProgresses] = useState({});\n const {DEFAULT_USER_ID, loading} = useUserDataContext();\n\n const hashKey = {\n subject: 'userIdHashSubjectTagId',\n subjectWithQuestionBaseId: 'userIdHashSubjectTagId',\n subjectWithQuestionTags: 'userIdHashSubjectTagId',\n topic: 'userIdHashTopicTagId',\n test: 'userIdHashTestId',\n testSmall: 'userIdHashTestId',\n }[contentType];\n const userId = userIdOverride || DEFAULT_USER_ID;\n\n async function fetchProgress() {\n if (!userId) return setProgresses({});\n\n const results = await contentIds.reduce(async (acc, contentId) => {\n const data = await getAllQuestionMastery({\n [hashKey]: `${userId}#${contentId}`,\n limit: 1000\n }, contentType);\n return {...(await acc), [contentId]: formatter ? formatter(data) : data}\n }, {});\n\n const update = type ? {...progresses, [type]: results} : results;\n\n setProgresses(update);\n\n // hooking in for componennt loading states\n if (typeof callback === 'function') {\n callback();\n }\n }\n\n useEffect(() => {\n if (loading || !contentIds || progresses[type]) return;\n\n fetchProgress();\n }, [userId, loading, type]);\n\n return progresses;\n}\n\n\nexport const useAsync = (asyncFunction, immediate = true) => {\n const [pending, setPending] = useState(false);\n const [value, setValue] = useState(null);\n const [error, setError] = useState(null);\n\n // The execute function wraps asyncFunction and\n // handles setting state for pending, value, and error.\n // useCallback ensures the below useEffect is not called\n // on every render, but only if asyncFunction changes.\n const execute = useCallback(() => {\n setPending(true);\n setValue(null);\n setError(null);\n return asyncFunction()\n .then(response => setValue(response))\n .catch(error => setError(error))\n .finally(() => setPending(false));\n }, [asyncFunction]);\n\n // Call execute if we want to fire it right away.\n // Otherwise execute can be called later, such as\n // in an onClick handler.\n useEffect(() => {\n if (immediate) {\n execute();\n }\n }, [execute, immediate]);\n\n return { execute, pending, value, error };\n};\n\nexport function useLocalStorage(key, initialValue) {\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState(() => {\n try {\n // Get from local storage by key\n const item = window.localStorage.getItem(key);\n // Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : initialValue;\n } catch (error) {\n // If error also return initialValue\n console.log(error);\n return initialValue;\n }\n });\n\n // Return a wrapped version of useState's setter function that ...\n // ... persists the new value to localStorage.\n const setValue = value => {\n try {\n // Allow value to be a function so we have same API as useState\n const valueToStore =\n value instanceof Function ? value(storedValue) : value;\n // Save state\n setStoredValue(valueToStore);\n // Save to local storage\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n } catch (error) {\n // A more advanced implementation would handle the error case\n console.log(error);\n }\n };\n\n return [storedValue, setValue];\n};\n\nexport const usePrevious = value => {\n const ref = useRef();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n};\n\nexport function useHistoryState(key, initialValue) {\n const history = useHistory();\n const [rawState, rawSetState] = useState(() => {\n const value = history.location.state?.[key];\n return value ?? initialValue;\n });\n function setState(value) {\n history.replace({\n ...history.location,\n state: {\n ...history.location.state,\n [key]: value\n }\n });\n rawSetState(value);\n }\n return [rawState, setState];\n}\n","import React, {Fragment} from 'react';\n\nimport {Link} from 'react-router-dom';\n\nimport {Account, LogIn, SignUp, Upgrade} from './Buttons';\n\nimport {Row} from '../../Grid';\nimport {LoadingSpinner} from '../../Branding';\n\nimport styled from 'styled-components';\n\nconst barHeight = 72;\nconst barHeightMobile = 56;\n\nconst ContainerBackground = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: ${({color}) => color || 'rgba(108, 92, 231, .9)'};\n opacity: 1;\n`;\n\nconst Container = styled.div`\n height: ${barHeight}px;\n width: 100%;\n top: 0;\n left: 0;\n position: fixed;\n z-index: 12;\n padding: 0 ${({theme}) => theme.layouts.spacing.xxl};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n height: ${barHeightMobile}px;\n padding: 0 ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst Content = styled(Row)`\n max-width: 1152px;\n justify-content: space-between;\n align-items: center;\n margin: auto;\n position: relative;\n`;\nconst Left = styled(Row)`\n flex: 1;\n align-items: center;\n justify-content: flex-start;\n`;\nconst Center = styled(Row)`\n flex: 1;\n align-items: center;\n justify-content: center;\n`;\nconst Right = styled(Row)`\n flex: 0;\n align-items: center;\n justify-content: flex-end;\n`;\n\nconst LoadingWrapper = styled.div`\n flex: 0;\n text-align: right;\n`;\nconst StyledLink = styled(Link)`\n display: flex;\n`;\n\nconst Loader = () => (\n <LoadingWrapper>\n <LoadingSpinner/>\n </LoadingWrapper>\n);\n\nconst LoggedIn = () => (\n <Fragment>\n <Upgrade/>\n <Account/>\n </Fragment>\n);\nconst LoggedOut = () => (\n <Fragment>\n <LogIn/>\n <SignUp/>\n </Fragment>\n);\n\nexport {\n ContainerBackground,\n Container,\n Content,\n Left,\n Center,\n Right,\n LoadingWrapper,\n StyledLink,\n LoggedIn,\n LoggedOut,\n Loader,\n barHeight,\n barHeightMobile,\n};\n","import React, {useContext, createContext, useReducer, useEffect} from 'react';\nimport ReactDOM from 'react-dom';\nimport {withRouter} from 'react-router-dom';\nimport styled from 'styled-components';\n\nconst Container = styled.div`\n visibility: ${({open, customOpen}) => (open || customOpen) ? 'visible' : 'hidden'};\n display: flex;\n justify-content: center;\n align-items: center;\n position: fixed;\n background: rgba(21, 26, 30, 0.4);\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 10000000001;\n opacity: ${({open, customOpen}) => (open || customOpen) ? 1 : 0};\n transition: opacity 0.2s;\n overflow: auto;\n ${({modalContainerStyle, theme}) => modalContainerStyle(theme)};\n`;\n\nconst ModalContext = createContext();\nconst useModalContext = () => useContext(ModalContext);\n\nconst initialState = {\n open: false,\n component: null,\n componentProps: {},\n enableClickClose: false,\n modalContainerStyle: () => true,\n navModal: false\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case 'custom':\n return {\n [`custom-${action.key}`]: true,\n component: action.component,\n componentProps: action.componentProps,\n enableClickClose: action.enableClickClose,\n modalContainerStyle: action.modalContainerStyle || initialState.modalContainerStyle,\n navModal: action.navModal || initialState.navModal,\n renderInContainer: action.renderInContainer,\n }\n case 'open':\n return {\n open: true,\n component: action.component,\n componentProps: action.componentProps,\n enableClickClose: action.enableClickClose,\n modalContainerStyle: action.modalContainerStyle || initialState.modalContainerStyle,\n navModal: action.navModal || initialState.navModal,\n renderInContainer: action.renderInContainer,\n };\n case 'close':\n return initialState;\n case 'style':\n return {...state, modalContainerStyle: action.modalContainerStyle};\n default:\n return state;\n }\n}\n\nconst ModalProvider = ({children}) => {\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return (\n <ModalContext.Provider value={{modalState: state, modalDispatch: dispatch}}>\n {children}\n </ModalContext.Provider>\n );\n};\n\nconst Modal = withRouter(({history, location}) => {\n const {modalState: {open, stayOpen, enableClickClose, renderInContainer, component: Component, componentProps, modalContainerStyle, navModal, ...rest}, modalDispatch: dispatch} = useModalContext();\n const customOpen = Object.entries(rest).some(([key, value]) => key.match('open') && value);\n\n const close = () => {\n dispatch({type: 'close'});\n navModal && history.push(location.pathname);\n };\n\n useEffect(() => {\n if (open && !navModal) close();\n }, [location.pathname]);\n\n const modalComponent = (\n <Container open={open} customOpen={customOpen} onClick={enableClickClose ? close : () => {}} modalContainerStyle={modalContainerStyle}>\n {Component && <Component {...componentProps} history={history} close={close}/>}\n </Container>\n );\n\n return renderInContainer\n ? ReactDOM.createPortal(modalComponent, renderInContainer)\n : modalComponent;\n\n});\n\nModalProvider.displayName = 'ModalProvider';\nModalProvider.propTypes = {};\n\n\nexport default ModalProvider;\nexport {ModalContext, Modal, useModalContext}\n","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgSmile(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 48,\n height: 48,\n viewBox: \"0 0 48 48\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M3 5.08633H45C45.7957 5.08633 46.5587 5.39581 47.1213 5.94667C47.6839 6.49753 48 7.24467 48 8.0237V34.7819V34.9496V37.2297C48 38.0087 47.6839 38.7558 47.1213 39.3067C46.5587 39.8576 45.7957 40.167 45 40.167H29.36C29.2686 40.1671 29.179 40.1916 29.1009 40.238C29.0227 40.2844 28.9591 40.3509 28.9168 40.4302C28.8746 40.5095 28.8553 40.5987 28.8612 40.6879C28.867 40.7772 28.8977 40.8632 28.95 40.9366L32.898 46.4589C33.003 46.6055 33.0649 46.7776 33.077 46.9563C33.089 47.135 33.0508 47.3135 32.9665 47.4724C32.8821 47.6313 32.7549 47.7645 32.5986 47.8576C32.4423 47.9506 32.2629 47.9999 32.08 48H15.92C15.7371 47.9999 15.5577 47.9506 15.4014 47.8576C15.2451 47.7645 15.1179 47.6313 15.0335 47.4724C14.9492 47.3135 14.911 47.135 14.923 46.9563C14.9351 46.7776 14.997 46.6055 15.102 46.4589L19.05 40.9366C19.1023 40.8632 19.133 40.7772 19.1388 40.6879C19.1447 40.5987 19.1254 40.5095 19.0832 40.4302C19.0409 40.3509 18.9773 40.2844 18.8991 40.238C18.821 40.1916 18.7314 40.1671 18.64 40.167H3C2.20435 40.167 1.44129 39.8576 0.87868 39.3067C0.31607 38.7558 0 38.0087 0 37.2297V34.9496V34.7819V8.0237C0 7.24467 0.31607 6.49753 0.87868 5.94667C1.44129 5.39581 2.20435 5.08633 3 5.08633Z\",\n fill: \"#4053AF\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.6468 43.1483C30.8325 44.3595 29.8953 45.4515 28.6699 45.4515H19.33C18.1046 45.4515 17.1674 44.3595 17.3531 43.1483L18.1398 38.0175C18.2894 37.0414 19.1291 36.3206 20.1167 36.3206H27.8832C28.8707 36.3206 29.7105 37.0414 29.8601 38.0175L30.6468 43.1483Z\",\n fill: \"#D5DCFF\",\n stroke: \"#2F3037\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.9999 46.466H35.0007H12.9999Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.9999 46.466H35.0007\",\n stroke: \"#2F3037\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.99994 4.84076C4.99994 3.73619 5.89537 2.84076 6.99994 2.84076H40.9999C42.1045 2.84076 42.9999 3.73619 42.9999 4.84076V32.2915C42.9999 33.3961 42.1045 34.2915 40.9999 34.2915H6.99994C5.89537 34.2915 4.99994 33.3961 4.99994 32.2915V4.84076Z\",\n fill: \"white\",\n stroke: \"#2F3037\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.9015 20.1018C18.8423 21.9483 21.374 22.9719 24.0004 22.9719C26.6268 22.9719 29.1585 21.9483 31.0993 20.1018\",\n fill: \"white\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.9015 20.1018C18.8423 21.9483 21.374 22.9719 24.0004 22.9719C26.6268 22.9719 29.1585 21.9483 31.0993 20.1018\",\n stroke: \"#2F3037\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.5004 10.0574V12.9272V10.0574Z\",\n fill: \"white\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.5004 10.0574V12.9272\",\n stroke: \"#2F3037\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29.5002 10.0574V12.9272V10.0574Z\",\n fill: \"white\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29.5002 10.0574V12.9272\",\n stroke: \"#2F3037\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSmile);\nexport default __webpack_public_path__ + \"static/media/smile.eed375ef.svg\";\nexport { ForwardRef as ReactComponent };","import React, {useState, useRef, useLayoutEffect, useEffect} from 'react';\nimport styled from 'styled-components';\n\nimport debounce from 'debounce';\n\nimport {Column, Row} from '../Grid';\nimport {IconButton} from '../Branding/Buttons'\nimport {ChevronLeft} from '@styled-icons/feather/ChevronLeft';\nimport {ChevronRight} from '@styled-icons/feather/ChevronRight';\n\n\nconst Container = styled(Column)`\n justify-content: center;\n overflow: auto;\n`;\n\nexport const CarouselContainer = styled(Row)`\n height: ${({maxCardHeight}) => maxCardHeight ? maxCardHeight + 'px' : '100%'};\n position: relative;\n overflow: auto;\n overflow-x: hidden;\n`;\n\nconst CarouselSlide = styled.div`\n width: 100%;\n transition: transform .3s, opacity .5s;\n overflow: hidden;\n\n ${({slideIndex, activeIndex}) => {\n const isActive = slideIndex === activeIndex;\n return `\n transform: translateX(\n ${((activeIndex - slideIndex) * -10)}%\n );\n position: ${(isActive ? 'relative' : 'absolute')};\n opacity: ${(isActive ? 1 : 0)};\n z-index: ${isActive ? 1 : 0};\n `}\n }\n`;\n\nconst ControlContainer = styled(Row)`\n align-items: center;\n position: relative;\n flex: 0 0 0;\n z-index: 1;\n user-select: none;\n margin-top: ${({theme}) => theme.layouts.spacing.m};\n`;\n\nconst ControlDots = styled(Row)`\n align-items: center;\n justify-content: center;\n height: 48px;\n`;\n\nconst ControlDot = styled.div`\n width: 12px;\n height: 12px;\n margin: 4px;\n border-radius: 100%;\n transition: background .5s, border .25s;\n cursor: pointer;\n ${({isActive, theme}) => `\n background: ${isActive ? 'transparent' : theme.overlays.opacity.light._200};\n border: ${isActive ? `1px solid ${theme.colors.neutralsPalette.white}` : 'none'};\n `}\n`;\n\nconst ControlButtons = styled(Row)`\n position: absolute;\n right: 0;\n bottom: 0;\n flex: 0;\n width: auto;\n > div {\n margin-left: 8px;\n }\n`;\n\nconst LeftArrow = styled(ChevronLeft).attrs(props => ({size: 24}))`\n stroke-width: 1.5px;\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n`;\n\nconst RightArrow = styled(ChevronRight).attrs(props => ({size: 24}))`\n stroke-width: 1.5px;\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n`;\n\nconst Slide = ({slideIndex, activeIndex, slide, setHeight}) => {\n const ref = useRef();\n\n useEffect(() => {\n window.addEventListener('resize', debounce(() => {\n const height = ref && ref.current && ref.current.getBoundingClientRect().height;\n ref && ref.current && setHeight(height);\n }, 250));\n\n return () => window.removeEventListener('resize', setHeight);\n }, []);\n\n useLayoutEffect(() => {\n const height = ref && ref.current && ref.current.getBoundingClientRect().height;\n return setHeight(height);\n }, [ref.current]);\n\n return <CarouselSlide ref={ref} slideIndex={slideIndex} activeIndex={activeIndex} children={slide} />\n}\n\nconst Carousel = ({className, children}) => {\n const [activeIndex, setActiveIndex] = useState(0);\n const [slideHeights, setSlideHeights] = useState(children.map(() => 0))\n\n const updateHeightByIndex = index => {\n return height => {\n slideHeights[index] = height;\n setSlideHeights(slideHeights);\n }\n }\n\n const tallestCard = Math.max(...slideHeights);\n\n return (\n <Container className={className}>\n <CarouselContainer maxCardHeight={tallestCard}>\n {children?.map((slide, index) => (\n <Slide key={`carousel-slide-${index}`} slideIndex={index} activeIndex={activeIndex} slide={slide} setHeight={updateHeightByIndex(index)}/>\n ))}\n </CarouselContainer>\n {children?.length > 1 &&\n <ControlContainer>\n <ControlDots>\n {children?.map((child, index) => <ControlDot key={`dot-${index}`} isActive={index === activeIndex} onClick={() => setActiveIndex(index)} />)}\n </ControlDots>\n <ControlButtons>\n <IconButton type={'secondary'} size={'small'} onClick={() => setActiveIndex(activeIndex => activeIndex === 0 ? children.length - 1 : activeIndex - 1)}>\n <LeftArrow />\n </IconButton>\n <IconButton type={'secondary'} size={'small'} onClick={() => setActiveIndex(activeIndex => (activeIndex + 1) % children.length)}>\n <RightArrow />\n </IconButton>\n </ControlButtons>\n </ControlContainer>\n }\n </Container>\n );\n}\n\nexport default Carousel;\n","export const preventDefault = event => {\n event.preventDefault();\n event.stopPropagation();\n};\n","import styled from 'styled-components';\nimport {Column, Row} from '../../../../Grid';\nimport {H1, H3, H5, Body2, Body3} from '../../../../Typography';\n\nimport {ReactComponent as badge} from '@bootcamp/shared/src/assets/svg/badge.svg';\n\nimport {Star} from '@styled-icons/fluentui-system-filled/Star';\n\nconst Container = styled(Column)`\n position: relative;\n\n ${({theme}) => `\n padding: ${theme.layouts.spacing.xl} 0;\n background: ${theme.overlays.opacity.light._100};\n border-radius: ${theme.layouts.spacing.s};\n `}\n\n ${({theme}) => theme.mediaQueries.tablet} {\n width: auto;\n min-height: 0;\n margin: 0 ${({theme}) => theme.layouts.spacing.l};\n padding: ${({theme}) => theme.layouts.spacing.l} 0;\n background: none;\n border-radius: 0px;\n border-top: 1px solid ${({theme}) => theme.colors.neutralsPalette.light+'4C'};\n }\n`;\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: row;\n padding: 0 ${({theme}) => theme.layouts.spacing.l};\n`;\n\nconst Heading = styled.div`\n align-self: center;\n`;\n\nconst HeadingName = styled(H3)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n }\n`;\n\nconst HeadingSchool = styled(H5)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n }\n`;\n\nconst HeadingResultContainer = styled(Row)`\n flex-flow: row wrap;\n align-items: center;\n height: auto;\n`;\n\nconst HeadingResultScore = styled(H1)`\n color: ${({theme}) => theme.overlays.opacity.light._400};\n margin-right: ${({theme}) => theme.layouts.spacing.s};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n }\n`;\n\nconst HeadingResultPercentile = styled(H3)`\n color: ${({theme}) => theme.overlays.opacity.light._400};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n }\n`;\n\nconst Comment = styled(Body2)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n padding: ${({theme}) => `${theme.layouts.spacing.m} ${theme.layouts.spacing.l}`};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n padding: ${({theme}) => theme.layouts.spacing.l} 0;\n }\n`;\n\nconst StudentImageContainer = styled.div`\n position: relative;\n border-radius: 100%;\n width: 120px;\n min-width: 120px;\n height: 120px;\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n min-width: auto;\n width: auto;\n width: 64px;\n height: 64px;\n }\n`;\n\nconst StudentImage = styled.img`\n width: 100%;\n`;\n\nconst StudentImageIconContainer = styled.div`\n display: flex;\n position: absolute;\n bottom: 0;\n right: 0;\n padding: 12px;\n width: 48px;\n height: 48px;\n border-radius: 100%;\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n svg {\n fill: ${({theme}) => theme.colors.brandPalette.orange.default};\n }\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 6px;\n width: 24px;\n height: 24px;\n }\n`;\n\nconst StudentImageIcon = styled(badge)`\n width: 100%;\n height: 100%;\n`;\n\nconst UpdatedStudentImage = styled(StudentImage)`\n border-radius: 100px;\n border: 3px solid rgba(255, 255, 255, .1);\n`;\n\n\nconst RatingContainer = styled.div`\n display: flex;\n padding: 8px 12px;\n background: ${({theme}) => theme.overlays.opacity.light._100};\n border-radius: 100px;\n margin-left: 24px;\n`;\nconst StarIcon = styled(Star)`\n width: 13px;\n fill: ${({theme}) => theme.colors.interfacePalette.yellow.hover};\n stroke: ${({theme}) => theme.colors.interfacePalette.yellow.hover};\n`;\n\nconst Rating = () => (\n <RatingContainer>\n <StarIcon />\n <StarIcon />\n <StarIcon />\n <StarIcon />\n <StarIcon />\n </RatingContainer>\n);\n\nconst Name = styled(H3)`\n color: white;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n }\n`;\n\nconst SubHeader = styled(Body3)`\n color: white;\n font-style: normal;\n text-transform: none;\n letter-spacing: 0px;\n\n\n ${({theme}) => theme.mediaQueries.tablet} {\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n }\n`;\n\nexport {\n Container,\n Wrapper,\n Heading,\n HeadingName,\n HeadingSchool,\n HeadingResultContainer,\n HeadingResultScore,\n HeadingResultPercentile,\n Comment,\n StudentImageContainer,\n StudentImage,\n StudentImageIconContainer,\n StudentImageIcon,\n UpdatedStudentImage,\n Name,\n SubHeader,\n Rating,\n};\n","export default __webpack_public_path__ + \"static/media/abdullahali.e30e212a.png\";","import React from 'react';\n\nimport {\n Container,\n Wrapper,\n Heading,\n HeadingName,\n HeadingSchool,\n HeadingResultContainer,\n HeadingResultScore,\n HeadingResultPercentile,\n Comment,\n StudentImageContainer,\n StudentImage,\n StudentImageIconContainer,\n StudentImageIcon,\n} from './shared';\n\nimport abby from '../assets/abbypuckett.png';\nimport alli from '../assets/allijepsen.png';\nimport ali from '../assets/abdullahali.png';\n\nconst outcome1 = (\n <Container>\n <Wrapper>\n <StudentImageContainer>\n <StudentImage src={abby} />\n <StudentImageIconContainer>\n <StudentImageIcon />\n </StudentImageIconContainer>\n </StudentImageContainer>\n <Heading>\n <HeadingName>\n Abby Puckett\n </HeadingName>\n <HeadingResultContainer>\n <HeadingResultScore>\n 29 AA\n </HeadingResultScore>\n <HeadingResultPercentile>\n (99.9%)\n </HeadingResultPercentile>\n </HeadingResultContainer>\n </Heading>\n </Wrapper>\n <Comment>\n \"By far the most useful study tool that DAT Bootcamp provided were the <strong>full-length practice tests</strong>. Each week I would take a practice test and focus on the weakest subject areas in the following week. This strategy really helped me bring up my scores in my weaker subjects.”\n </Comment>\n </Container>\n);\n\nconst outcome2 = (\n <Container>\n <Wrapper>\n <StudentImageContainer>\n <StudentImage src={alli} />\n <StudentImageIconContainer>\n <StudentImageIcon />\n </StudentImageIconContainer>\n </StudentImageContainer>\n <Heading>\n <HeadingName>\n Alli Jepsen\n </HeadingName>\n <HeadingResultContainer>\n <HeadingResultScore>\n 26 AA\n </HeadingResultScore>\n <HeadingResultPercentile>\n (98.8%)\n </HeadingResultPercentile>\n </HeadingResultContainer>\n </Heading>\n </Wrapper>\n <Comment>\n \"I studied for 8 weeks following <strong>Ari’s study schedule</strong>, and I could not have been happier with the pacing; it allowed me enough time to take advantage of all of the excellent resources on DAT Bootcamp, without dragging out the timeline beyond what was necessary.\"\n </Comment>\n </Container>\n);\n\nconst outcome3 = (\n <Container>\n <Wrapper>\n <StudentImageContainer>\n <StudentImage src={ali} />\n <StudentImageIconContainer>\n <StudentImageIcon />\n </StudentImageIconContainer>\n </StudentImageContainer>\n <Heading>\n <HeadingName>\n Abdullah Ali\n </HeadingName>\n <HeadingResultContainer>\n <HeadingResultScore>\n 23 AA\n </HeadingResultScore>\n <HeadingResultPercentile>\n (94.7%)\n </HeadingResultPercentile>\n </HeadingResultContainer>\n </Heading>\n </Wrapper>\n <Comment>\n \"The <strong>only resource</strong> that I used was DAT Bootcamp which prepared for all sections on the DAT, and the main thing I would say that prepared me were the practice tests.”\n </Comment>\n </Container>\n);\n\nexport const datOutcomes = [\n outcome1,\n outcome2,\n outcome3,\n];","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import React from 'react';\n\nimport {\n Container,\n Wrapper,\n Heading,\n HeadingName,\n HeadingSchool,\n HeadingResultContainer,\n HeadingResultScore,\n HeadingResultPercentile,\n Comment,\n StudentImageContainer,\n StudentImage,\n StudentImageIconContainer,\n StudentImageIcon,\n} from './shared';\n\nimport deepali from '../assets/deepalimittal.png';\nimport jaden from '../assets/jadenborders.png';\n\nconst outcome1 = (\n <Container>\n <Wrapper>\n <StudentImageContainer>\n <StudentImage src={deepali} />\n <StudentImageIconContainer>\n <StudentImageIcon />\n </StudentImageIconContainer>\n </StudentImageContainer>\n <Heading>\n <HeadingName>\n Deepali Mittal\n </HeadingName>\n <HeadingResultContainer>\n <HeadingResultScore>\n 360 AA\n </HeadingResultScore>\n <HeadingResultPercentile>\n (91%)\n </HeadingResultPercentile>\n </HeadingResultContainer>\n </Heading>\n </Wrapper>\n <Comment>\n “I would recommend OAT Bootcamp to every student who plans on taking the OAT because I do not think I would have done as well without it. <strong>It prepared me for the worst and I am so thankful for that.</strong>”\n </Comment>\n </Container>\n);\n\nconst outcome2 = (\n <Container>\n <Wrapper>\n <StudentImageContainer>\n <StudentImage src={jaden} />\n <StudentImageIconContainer>\n <StudentImageIcon />\n </StudentImageIconContainer>\n </StudentImageContainer>\n <Heading>\n <HeadingName>\n Jaden Borders\n </HeadingName>\n <HeadingResultContainer>\n <HeadingResultScore>\n 360 AA\n </HeadingResultScore>\n <HeadingResultPercentile>\n (91%)\n </HeadingResultPercentile>\n </HeadingResultContainer>\n </Heading>\n </Wrapper>\n <Comment>\n “The schedule given by Bootcamp to get through all of the material was <strong>extremely helpful.</strong> I followed the schedule for the majority of my study time.”\n </Comment>\n </Container>\n);\n\nexport const oatOutcomes = [\n outcome1,\n outcome2,\n];","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/tehaum.73e04613.png\";","export default __webpack_public_path__ + \"static/media/sara.f5ba4124.png\";","export default __webpack_public_path__ + \"static/media/julie.82303916.png\";","import React from 'react';\n\nimport {\n Container,\n Wrapper,\n Heading,\n HeadingName,\n HeadingSchool,\n HeadingResultContainer,\n HeadingResultScore,\n HeadingResultPercentile,\n Comment,\n StudentImageContainer,\n StudentImage,\n StudentImageIconContainer,\n StudentImageIcon,\n Rating,\n UpdatedStudentImage,\n Name,\n SubHeader,\n} from './shared';\n\nimport tehaum from '../assets/tehaum.png';\nimport sara from '../assets/sara.png';\nimport julie from '../assets/julie.png';\n\nconst outcome1 = (\n <Container>\n <Rating/>\n <Comment>\n \"Bootcamp is the best resource out there in my honest opinion. <strong>I got some similar questions on my actual board that I saw on Bootcamp.</strong>\"\n </Comment>\n <Wrapper>\n <StudentImageContainer>\n <UpdatedStudentImage src={tehaum} />\n </StudentImageContainer>\n <Heading>\n <Name>\n Tehaum Saood\n </Name>\n <HeadingResultContainer>\n <SubHeader>Pass - 1st Attempt</SubHeader>\n </HeadingResultContainer>\n </Heading>\n </Wrapper>\n </Container>\n);\n\nconst outcome2 = (\n <Container>\n <Rating/>\n <Comment>\n \"There were <strong>less than 5 questions on the whole exam that I felt like I hadn't seen the answers on Bootcamp,</strong> I really felt as prepared as I could have been.\"\n </Comment>\n <Wrapper>\n <StudentImageContainer>\n <UpdatedStudentImage src={sara} />\n </StudentImageContainer>\n <Heading>\n <Name>\n Sara Henry\n </Name>\n <HeadingResultContainer>\n <SubHeader>Pass - 1st Attempt</SubHeader>\n </HeadingResultContainer>\n </Heading>\n </Wrapper>\n </Container>\n);\n\nconst outcome3 = (\n <Container>\n <Rating/>\n <Comment>\n \"I can’t thank Bootcamp and Dr. Ryan enough for helping me get through the study process. <strong>There were even some questions on my exam that were similar to the ones I had done in Bootcamp.</strong>\"\n </Comment>\n <Wrapper>\n <StudentImageContainer>\n <UpdatedStudentImage src={julie} />\n </StudentImageContainer>\n <Heading>\n <Name>\n Julie Suarez\n </Name>\n <HeadingResultContainer>\n <SubHeader>Pass - 1st Attempt</SubHeader>\n </HeadingResultContainer>\n </Heading>\n </Wrapper>\n </Container>\n);\n\nexport const inbdeOutcomes = [\n outcome1,\n outcome2,\n outcome3,\n];","export default __webpack_public_path__ + \"static/media/samanthacooper.c35171d5.png\";","export default __webpack_public_path__ + \"static/media/barandataylor.19b114f0.png\";","import React from 'react';\n\nimport {\n Container,\n Wrapper,\n Heading,\n HeadingName,\n HeadingSchool,\n HeadingResultContainer,\n Comment,\n StudentImageContainer,\n StudentImage,\n StudentImageIconContainer,\n StudentImageIcon,\n} from './shared';\n\nimport samantha from '../assets/samanthacooper.png';\nimport baranda from '../assets/barandataylor.png';\n\nconst outcome1 = (\n <Container>\n <Wrapper>\n <StudentImageContainer>\n <StudentImage src={samantha} />\n <StudentImageIconContainer>\n <StudentImageIcon />\n </StudentImageIconContainer>\n </StudentImageContainer>\n <Heading>\n <HeadingName>\n Samantha Cooper\n </HeadingName>\n <HeadingSchool>\n <strong>OMS-1</strong> at Philadelphia College of Osteopathic Medicine\n </HeadingSchool>\n <HeadingResultContainer>\n ⭐️ ⭐️ ⭐️ ⭐️ ⭐️\n </HeadingResultContainer>\n </Heading>\n </Wrapper>\n <Comment>\n \"Anatomy Bootcamp has completely extinguished my fear of anatomy and physiology. As a current OMS-1, Anatomy Bootcamp’s cadaveric identification images have aided in my understanding of the different organ and muscle groups, as well as aided in my ability to get a 95% or higher on every practical I have taken so far!\"\n </Comment>\n </Container>\n);\n\nconst outcome2 = (\n <Container>\n <Wrapper>\n <StudentImageContainer>\n <StudentImage src={baranda} />\n <StudentImageIconContainer>\n <StudentImageIcon />\n </StudentImageIconContainer>\n </StudentImageContainer>\n <Heading>\n <HeadingName>\n Baranda Taylor\n </HeadingName>\n <HeadingSchool>\n <strong>Nursing</strong> at Brenau University\n </HeadingSchool>\n <HeadingResultContainer>\n ⭐️ ⭐️ ⭐️ ⭐️ ⭐️\n </HeadingResultContainer>\n </Heading>\n </Wrapper>\n <Comment>\n \"Anatomy Bootcamp is great supplemental material to lecture and lab. It keeps the information in your mind and helps close gaps in your studies.\"\n </Comment>\n </Container>\n);\n\n\nexport const anatomyOutcomes = [\n outcome1,\n outcome2,\n];\n","import styled from 'styled-components';\n\nimport baseTheme from '@bootcamp/shared/src/styles/theme';\n\n\nexport const Hero = styled.span`\n font-family: proxima-nova;\n font-size: 42px;\n font-style: normal;\n font-weight: 700;\n line-height: 125%;\n letter-spacing: -1px;\n`;\nexport const H1 = styled.h1`\n font-family: proxima-nova;\n font-size: ${({theme}) => theme.font.size.xsuper};\n font-style: normal;\n font-weight: 700;\n line-height: 125%;\n margin: 0;\n`;\nexport const H2 = styled.h2`\n font-family: proxima-nova;\n font-size: ${({theme}) => theme.font.size.xlarge};\n font-style: normal;\n font-weight: 700;\n line-height: 125%;\n margin: 0;\n`;\nexport const H3 = styled.h3`\n font-family: proxima-nova;\n font-size: ${({theme}) => theme.font.size.large};\n font-style: normal;\n font-weight: 700;\n line-height: 125%;\n margin: 0;\n`;\n\nexport const H4 = styled.h4`\n font-family: proxima-nova;\n font-size: ${({theme}) => theme.font.size.regular};\n font-style: normal;\n font-weight: 700;\n line-height: 125%;\n margin: 0;\n`;\nexport const H5 = styled.h5`\n font-family: proxima-nova;\n font-size: ${({theme}) => theme.font.size.medium};\n font-style: normal;\n font-weight: 700;\n line-height: 125%;\n margin: 0;\n`;\n\nexport const Label1 = styled.p`\n font-family: proxima-nova;\n font-size: ${({theme}) => theme.font.size.regular};\n font-style: normal;\n font-weight: 700;\n line-height: 100%;\n margin: 0;\n color: ${baseTheme.colors.neutralsPalette.extraDark};\n`;\n\nexport const Label2 = styled.p`\n font-family: proxima-nova;\n font-size: ${({theme}) => theme.font.size.medium};\n font-style: normal;\n font-weight: 400;\n line-height: 100%;\n margin: 0;\n color: ${baseTheme.colors.neutralsPalette.white};\n`;\n\nexport const Label3 = styled.p`\n font-family: proxima-nova;\n font-size: ${({theme}) => theme.font.size.small};\n font-style: normal;\n font-weight: 600;\n line-height: 100%;\n margin: 0;\n color: ${baseTheme.colors.neutralsPalette.white};\n`;\nexport const Label4 = styled.p`\n font-family: proxima-nova;\n font-size: ${({theme}) => theme.font.size.smaller};\n font-style: normal;\n font-weight: 400;\n line-height: 100%;\n margin: 0;\n color: ${baseTheme.colors.neutralsPalette.white};\n`;\n\nexport const Body2 = styled.p`\n font-family: proxima-nova;\n font-size: ${({theme}) => theme.font.size.regular};\n font-style: normal;\n font-weight: 400;\n line-height: 150%;\n margin: 0;\n`;\n\nexport const Body3 = styled.p`\n font-family: proxima-nova;\n font-size: ${({theme}) => theme.font.size.medium};\n font-style: normal;\n font-weight: 400;\n line-height: 150%;\n margin: 0;\n`;\nexport const Body4 = styled.p`\n font-family: proxima-nova;\n font-size: ${({theme}) => theme.font.size.small};\n font-style: normal;\n font-weight: 400;\n line-height: 150%;\n margin: 0;\n`;","export default __webpack_public_path__ + \"static/media/tiffanie_hilson.76956445.jpeg\";","export default __webpack_public_path__ + \"static/media/alex_mendez.8347b31a.jpeg\";","export default __webpack_public_path__ + \"static/media/caroline_jetel.6beab5d7.jpeg\";","export default __webpack_public_path__ + \"static/media/brittany_prude.11f72777.jpeg\";","export default __webpack_public_path__ + \"static/media/isabella_trybula.aca36a96.jpeg\";","export default __webpack_public_path__ + \"static/media/octavio_ordaz.44e6879d.jpeg\";","export default __webpack_public_path__ + \"static/media/raksha_pampliega.e3a2cc14.jpeg\";","export default __webpack_public_path__ + \"static/media/kelley_campbell.493f65f8.jpeg\";","import React from 'react';\nimport styled from 'styled-components';\n\nimport {\n Container,\n Wrapper,\n Heading,\n HeadingResultContainer,\n Comment,\n StudentImageContainer,\n Rating,\n UpdatedStudentImage,\n Name,\n SubHeader,\n} from './shared';\n\nimport {H3, Body3} from '../../../../Typography/next';\n\nimport tiffanie from '../assets/tiffanie_hilson.jpeg';\nimport alex from '../assets/alex_mendez.jpeg';\nimport caroline from '../assets/caroline_jetel.jpeg';\nimport brittany_prude from '../assets/brittany_prude.jpeg';\nimport isabella_trybula from '../assets/isabella_trybula.jpeg';\nimport octavio_ordaz from '../assets/octavio_ordaz.jpeg';\nimport raksha_pampliega from '../assets/raksha_pampliega.jpeg';\nimport kelley_campbell from '../assets/kelley_campbell.jpeg';\n\n\nconst outcome1 = (\n <Container>\n <Rating/>\n <Comment>\n \"I took the NCLEX and saw a few questions that had the <strong>exact topics that I practiced on Bootcamp.</strong> The case studies are almost identical to the real NCLEX.\"\n </Comment>\n <Wrapper>\n <StudentImageContainer>\n <UpdatedStudentImage src={tiffanie} />\n </StudentImageContainer>\n <Heading>\n <Name>\n Tiffanie Hilson, RN\n </Name>\n <HeadingResultContainer>\n <SubHeader>Passed - Next Gen NCLEX®</SubHeader>\n </HeadingResultContainer>\n </Heading>\n </Wrapper>\n </Container>\n);\nconst outcome2 = (\n <Container>\n <Rating/>\n <Comment>\n \"I am a repeat test taker, and I would not have passed my NCLEX this time around if it weren’t for Bootcamp. <strong>Bootcamp looked almost identical to the actual exam.</strong>\"\n </Comment>\n <Wrapper>\n <StudentImageContainer>\n <UpdatedStudentImage src={alex} />\n </StudentImageContainer>\n <Heading>\n <Name>\n Alex Mendez, RN\n </Name>\n <HeadingResultContainer>\n <SubHeader>Passed - Next Gen NCLEX®</SubHeader>\n </HeadingResultContainer>\n </Heading>\n </Wrapper>\n </Container>\n);\n\nconst outcome3 = (\n <Container>\n <Rating/>\n <Comment>\n \"When I found Bootcamp I felt like I had found heaven. <strong>It is so well organized and simplified and even has study schedules available</strong> which I found to be one of my favorite parts of the entire site!\"\n </Comment>\n <Wrapper>\n <StudentImageContainer>\n <UpdatedStudentImage src={caroline} />\n </StudentImageContainer>\n <Heading>\n <Name>\n Caroline Jetel, RN\n </Name>\n <HeadingResultContainer>\n <SubHeader>Passed - Next Gen NCLEX®</SubHeader>\n </HeadingResultContainer>\n </Heading>\n </Wrapper>\n </Container>\n);\n\nconst outcome4 = (\n <Container>\n <Rating/>\n <Comment>\n \"I passed on the first try with 85 questions. I printed the study calendar and did that for 30 days. To me, the NCLEX felt like I was working the Bootcamp case studies.\"\n </Comment>\n <Wrapper>\n <StudentImageContainer>\n <UpdatedStudentImage src={brittany_prude} />\n </StudentImageContainer>\n <Heading>\n <Name>\n Brittany Prude, RN\n </Name>\n <HeadingResultContainer>\n <SubHeader>Passed - Next Gen NCLEX®</SubHeader>\n </HeadingResultContainer>\n </Heading>\n </Wrapper>\n </Container>\n);\n\nconst outcome5 = (\n <Container>\n <Rating/>\n <Comment>\n \"NCLEX Bootcamp's questions resembled the NCLEX almost identically. Bootcamp is what I now recommend to my friends who are also preparing for the NCLEX.\"\n </Comment>\n <Wrapper>\n <StudentImageContainer>\n <UpdatedStudentImage src={isabella_trybula} />\n </StudentImageContainer>\n <Heading>\n <Name>\n Isabella Trybula, RN\n </Name>\n <HeadingResultContainer>\n <SubHeader>Passed - Next Gen NCLEX®</SubHeader>\n </HeadingResultContainer>\n </Heading>\n </Wrapper>\n </Container>\n);\n\nconst outcome6 = (\n <Container>\n <Rating/>\n <Comment>\n \"Bootcamp's questions are exactly like the real NCLEX. I was surprised to see the similarity in the topics and the wording of the questions between Bootcamp and the real thing.\"\n </Comment>\n <Wrapper>\n <StudentImageContainer>\n <UpdatedStudentImage src={octavio_ordaz} />\n </StudentImageContainer>\n <Heading>\n <Name>\n Octavio Ordaz, RN\n </Name>\n <HeadingResultContainer>\n <SubHeader>Passed - Next Gen NCLEX®</SubHeader>\n </HeadingResultContainer>\n </Heading>\n </Wrapper>\n </Container>\n);\n\nconst outcome7 = (\n <Container>\n <Rating/>\n <Comment>\n \"When I sat down to take the actual NCLEX, it honestly felt like I was just answering my daily Bootcamp questions. I was so amazed at how Bootcamp made it easy for me.\"\n </Comment>\n <Wrapper>\n <StudentImageContainer>\n <UpdatedStudentImage src={raksha_pampliega} />\n </StudentImageContainer>\n <Heading>\n <Name>\n Raksha Pampliega, RN\n </Name>\n <HeadingResultContainer>\n <SubHeader>Passed - Next Gen NCLEX®</SubHeader>\n </HeadingResultContainer>\n </Heading>\n </Wrapper>\n </Container>\n);\n\nconst outcome8 = (\n <Container>\n <Rating/>\n <Comment>\n \"NCLEX Bootcamp literally saved my life. Their questions were so similar to the actual NCLEX, I felt so at ease when I took my exam. I don’t think I would’ve passed if it wasn’t for Bootcamp.\"\n </Comment>\n <Wrapper>\n <StudentImageContainer>\n <UpdatedStudentImage src={kelley_campbell} />\n </StudentImageContainer>\n <Heading>\n <Name>\n Kelley Campbell, RN\n </Name>\n <HeadingResultContainer>\n <SubHeader>Passed - Next Gen NCLEX®</SubHeader>\n </HeadingResultContainer>\n </Heading>\n </Wrapper>\n </Container>\n);\n\nexport const nclexOutcomes = [\n outcome1,\n outcome2,\n outcome3,\n outcome8,\n outcome7,\n outcome6,\n outcome5,\n outcome4,\n];","var _path, _path2, _path3, _path4;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgClick(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 48,\n height: 48,\n viewBox: \"0 0 48 48\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.2506 41.0081C16.7162 40.5406 12.5252 38.379 9.51519 34.9553C6.50514 31.5317 4.89771 27.0982 5.01414 22.5408C5.19469 17.9511 7.09864 13.5982 10.3462 10.3503C13.5938 7.10237 17.9463 5.19823 22.5355 5.01766C27.0926 4.90075 31.5259 6.50817 34.9493 9.51862C38.3727 12.5291 40.5339 16.7207 41.001 21.2558C41.0541 21.7848 41.3153 22.271 41.7269 22.6075C42.1385 22.944 42.6669 23.1032 43.1959 23.05C43.7249 22.9968 44.2111 22.7357 44.5475 22.324C44.884 21.9123 45.0431 21.3839 44.9899 20.8548C44.4287 15.3085 41.7903 10.1799 37.6045 6.49857C33.4186 2.81728 27.9953 0.855907 22.4233 1.00825C16.814 1.2303 11.4945 3.55841 7.52527 7.52843C3.55602 11.4984 1.22864 16.8187 1.00714 22.4285C0.865669 27.9982 2.83065 33.4163 6.5095 37.6002C10.1883 41.7841 15.3102 44.4258 20.8517 44.9975C20.9199 44.9975 20.986 44.9975 21.0522 44.9975C21.5838 45.0241 22.1042 44.8384 22.4989 44.4812C22.8936 44.1241 23.1303 43.6247 23.1569 43.093C23.1835 42.5613 22.9978 42.0409 22.6407 41.6461C22.2835 41.2514 21.7842 41.0147 21.2526 40.9881L21.2506 41.0081Z\",\n fill: \"#45BCBA\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.5279 23.2736L26.054 38.3567C26.1236 38.5891 26.2522 38.7995 26.4275 38.9673C26.6027 39.1351 26.8185 39.2545 27.0537 39.3139C27.2889 39.3733 27.5355 39.3707 27.7694 39.3062C28.0033 39.2417 28.2164 39.1177 28.388 38.9461L30.6933 36.6409L36.6414 42.589C36.7716 42.7192 36.9261 42.8225 37.0962 42.893C37.2663 42.9634 37.4486 42.9997 37.6328 42.9997C37.8169 42.9997 37.9992 42.9634 38.1693 42.893C38.3394 42.8225 38.4939 42.7192 38.6241 42.589L42.5895 38.6236C42.7197 38.4934 42.823 38.3388 42.8935 38.1687C42.964 37.9986 43.0003 37.8163 43.0003 37.6322C43.0003 37.4481 42.964 37.2658 42.8935 37.0957C42.823 36.9256 42.7197 36.771 42.5895 36.6409L36.6414 30.6927L38.9467 28.3942C39.1182 28.2228 39.2424 28.0097 39.3069 27.776C39.3715 27.5422 39.3743 27.2956 39.3151 27.0604C39.2559 26.8253 39.1366 26.6094 38.9691 26.4341C38.8015 26.2588 38.5912 26.13 38.359 26.0602L23.2742 21.5341C23.0323 21.4623 22.7756 21.4571 22.5311 21.5189C22.2865 21.5807 22.0631 21.7072 21.8844 21.8852C21.7057 22.0633 21.5783 22.2862 21.5155 22.5305C21.4528 22.7748 21.4571 23.0315 21.5279 23.2736Z\",\n fill: \"#E3F2F1\",\n stroke: \"#2F3037\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40 21.8095C39.7676 18.5546 38.6045 15.4351 36.6493 12.8225C34.694 10.21 32.029 8.21454 28.9717 7.07385C25.9144 5.93317 22.5937 5.69532 19.405 6.38865C16.2164 7.08198 13.2942 8.67726 10.9866 10.9845C8.67898 13.2917 7.08319 16.2136 6.38929 19.4021C5.6954 22.5907 5.93265 25.9115 7.07279 28.969C8.21292 32.0266 10.2079 34.6919 12.8201 36.6476C15.4322 38.6034 18.5515 39.767 21.8063 40\",\n stroke: \"#2F3037\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.1288 18.9367C31.5014 17.3851 30.4996 16.0131 29.2127 14.9432C27.9259 13.8733 26.394 13.1387 24.7541 12.8052C23.1141 12.4716 21.417 12.5494 19.8145 13.0317C18.2119 13.514 16.7537 14.3856 15.5702 15.5689C14.3867 16.7521 13.5146 18.21 13.032 19.8125C12.5493 21.4149 12.471 23.112 12.8042 24.752C13.1373 26.3921 13.8715 27.9241 14.9411 29.2112C16.0107 30.4984 17.3824 31.5006 18.9338 32.1283\",\n stroke: \"#2F3037\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgClick);\nexport default __webpack_public_path__ + \"static/media/click.be231778.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _g, _defs;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgVideos(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 48,\n height: 48,\n viewBox: \"0 0 48 48\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.1667 43C11.7964 43 10.4822 42.641 9.51328 42.002C8.54434 41.363 8 40.4963 8 39.5926V20C8 20.6778 8.40826 21.3278 9.13496 21.807C9.86166 22.2863 10.8473 22.5556 11.875 22.5556H37.7083C38.0509 22.5556 38.3794 22.6453 38.6217 22.8051C38.8639 22.9648 39 23.1815 39 23.4074V42.1481C39 42.3741 38.8639 42.5907 38.6217 42.7505C38.3794 42.9103 38.0509 43 37.7083 43H13.1667Z\",\n fill: \"white\",\n stroke: \"#DC517C\",\n strokeWidth: 5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_1006_68646)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.375 41.8437H14.0937C13.1738 41.8437 12.2915 41.4783 11.641 40.8278C10.9905 40.1773 10.625 39.295 10.625 38.375\",\n stroke: \"black\",\n strokeWidth: 2.7,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.25 7.15625C14.0234 7.15625 12.847 7.64353 11.9796 8.51088C11.1123 9.37824 10.625 10.5546 10.625 11.7812V38.375C10.625 37.455 10.9905 36.5727 11.641 35.9222C12.2915 35.2717 13.1738 34.9062 14.0938 34.9062H37.2188C37.5254 34.9062 37.8195 34.7844 38.0363 34.5676C38.2532 34.3508 38.375 34.0567 38.375 33.75V8.3125C38.375 8.00584 38.2532 7.71175 38.0363 7.49491C37.8195 7.27807 37.5254 7.15625 37.2188 7.15625H15.25Z\",\n fill: \"white\",\n stroke: \"black\",\n strokeWidth: 2.7,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.0625 41.8437V34.9062\",\n stroke: \"black\",\n strokeWidth: 2.7,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.5625 16.9844V26.0987C17.5623 26.2958 17.6126 26.4896 17.7085 26.6617C17.8045 26.8339 17.9428 26.9786 18.1105 27.0821C18.2782 27.1856 18.4696 27.2445 18.6664 27.2532C18.8633 27.2619 19.0591 27.22 19.2352 27.1316L31.4375 21.0313L19.1628 15.9175C18.9871 15.8441 18.7961 15.8152 18.6066 15.8334C18.4171 15.8517 18.2351 15.9165 18.0767 16.0221C17.9183 16.1277 17.7885 16.2708 17.6988 16.4387C17.6091 16.6066 17.5622 16.794 17.5625 16.9844Z\",\n fill: \"#F9E5EC\",\n stroke: \"black\",\n strokeWidth: 2.7,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_1006_68646\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 37,\n height: 37,\n fill: \"white\",\n transform: \"translate(6 6)\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgVideos);\nexport default __webpack_public_path__ + \"static/media/videos.ce107153.svg\";\nexport { ForwardRef as ReactComponent };","import styled from 'styled-components';\n\nimport {Column, Row} from '../../../../Grid';\nimport {H1, Body2} from '../../../../Typography/next';\n\n\nexport const UpgradeCallout = styled(Column)`\n height: auto;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n background: ${({theme}) => theme.colors.brandPalette.blue.gradient};\n padding: ${({theme}) => theme.layouts.spacing.l};\n }\n`;\n\nexport const UpgradeHeader = styled(H1)`\n margin: 0 auto ${({theme}) => theme.layouts.spacing.s};\n white-space: pre-wrap;\n text-align: center;\n\n ${({theme}) => theme.mediaQueries.laptopL} {\n font-size: ${({theme}) => theme.font.size.super};\n line-height: ${({theme}) => theme.font.height.super};\n }\n\n ${({theme}) => theme.mediaQueries.laptop} {\n font-size: ${({theme}) => theme.font.size.xsuper};\n line-height: ${({theme}) => theme.font.height.xsuper};\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n font-size: ${({theme}) => theme.font.size.super};\n line-height: ${({theme}) => theme.font.height.super};\n }\n`;\n\nexport const UpgradeSubHeader = styled(Body2)`\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n text-align: center;\n margin: 0 auto;\n\n ${({theme}) => theme.mediaQueries.laptopL} {\n font-size: ${({theme}) => theme.font.size.medium};\n line-height: ${({theme}) => theme.font.height.medium};\n }\n\n ${({theme}) => theme.mediaQueries.laptop} {\n font-size: ${({theme}) => theme.font.size.regular};\n line-height: ${({theme}) => theme.font.height.regular};\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: ${({theme}) => theme.font.size.small};\n line-height: ${({theme}) => theme.font.height.small};\n color: white;\n }\n`;\nexport const UpgradeFeaturesTable = styled(Column)`\n height: auto;\n padding: ${({theme}) => theme.layouts.spacing.l} ${({theme}) => theme.layouts.spacing.none};\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: ${({theme}) => theme.layouts.spacing.xl} ${({theme}) => theme.layouts.spacing.l};\n }\n`;\n\nexport const UpgradeFeaturesTableRow = styled(Row)`\n height: auto;\n align-items: center;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n &:last-child {\n margin-bottom: 0;\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n }\n`;\n\nexport const UpgradeFeaturesTableRowIconContainer = styled.div`\n margin-right: ${({theme}) => theme.layouts.spacing.l};\n font-size: 0px;\n ${({theme}) => theme.mediaQueries.tablet} {\n svg {\n width: 32px;\n height: 32px;\n }\n }\n`;\n\nexport const UpgradeFeaturesTableRowText = styled(Body2)`\n\n ${({theme}) => theme.mediaQueries.laptopL} {\n font-size: ${({theme}) => theme.font.size.medium};\n line-height: ${({theme}) => theme.font.height.medium};\n }\n\n ${({theme}) => theme.mediaQueries.laptop} {\n font-size: ${({theme}) => theme.font.size.regular};\n line-height: ${({theme}) => theme.font.height.regular};\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: ${({theme}) => theme.font.size.medium};\n line-height: ${({theme}) => theme.font.height.medium};\n }\n`;","import React from 'react';\n\nimport {ReactComponent as Smile} from '../assets/smile.svg';\nimport {ReactComponent as Click} from '../assets/click.svg';\nimport {ReactComponent as Videos} from '../assets/videos.svg';\n\nimport {\n UpgradeCallout,\n UpgradeHeader,\n UpgradeSubHeader,\n UpgradeFeaturesTable,\n UpgradeFeaturesTableRow,\n UpgradeFeaturesTableRowIconContainer,\n UpgradeFeaturesTableRowText,\n} from './shared';\n\n\nexport const datFeatures = (\n <>\n <UpgradeCallout>\n <UpgradeHeader>\n Get everything you need to ace the DAT <u>in one place</u>\n </UpgradeHeader>\n <UpgradeSubHeader>\n Used by more than 90% of pre-dental students for 8+ years 👇\n </UpgradeSubHeader>\n </UpgradeCallout>\n <UpgradeFeaturesTable>\n <UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRowIconContainer>\n <Smile/>\n </UpgradeFeaturesTableRowIconContainer>\n <UpgradeFeaturesTableRowText>\n <strong>Largest set of study materials</strong> with more practice tests, question banks, and video lessons than anyone else.\n </UpgradeFeaturesTableRowText>\n </UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRowIconContainer>\n <Click />\n </UpgradeFeaturesTableRowIconContainer>\n <UpgradeFeaturesTableRowText>\n <strong>Proven DAT study schedule</strong> to help you stay on track and study only what you absolutely need to know.\n </UpgradeFeaturesTableRowText>\n </UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRowIconContainer>\n <Videos />\n </UpgradeFeaturesTableRowIconContainer>\n <UpgradeFeaturesTableRowText>\n <strong>Premium mobile app</strong> to study on the go. Watch videos, answer questions from wherever.\n </UpgradeFeaturesTableRowText>\n </UpgradeFeaturesTableRow>\n </UpgradeFeaturesTable>\n </>\n);\n","import React from 'react';\n\nimport {ReactComponent as Smile} from '../assets/smile.svg';\nimport {ReactComponent as Click} from '../assets/click.svg';\nimport {ReactComponent as Videos} from '../assets/videos.svg';\n\nimport {\n UpgradeCallout,\n UpgradeHeader,\n UpgradeSubHeader,\n UpgradeFeaturesTable,\n UpgradeFeaturesTableRow,\n UpgradeFeaturesTableRowIconContainer,\n UpgradeFeaturesTableRowText,\n} from './shared';\n\n\nexport const oatFeatures = (\n <>\n <UpgradeCallout>\n <UpgradeHeader>\n Get everything you need to ace the OAT <u>in one place</u>\n </UpgradeHeader>\n <UpgradeSubHeader>\n Get instant access to everything below and more 👇\n </UpgradeSubHeader>\n </UpgradeCallout>\n <UpgradeFeaturesTable>\n <UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRowIconContainer>\n <Smile/>\n </UpgradeFeaturesTableRowIconContainer>\n <UpgradeFeaturesTableRowText>\n <strong>Largest set of study materials</strong> with more practice tests, question banks, and video lessons than anyone else.\n </UpgradeFeaturesTableRowText>\n </UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRowIconContainer>\n <Click />\n </UpgradeFeaturesTableRowIconContainer>\n <UpgradeFeaturesTableRowText>\n <strong>Proven OAT study schedule</strong> to help you stay on track and study only what you absolutely need to know.\n </UpgradeFeaturesTableRowText>\n </UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRowIconContainer>\n <Videos />\n </UpgradeFeaturesTableRowIconContainer>\n <UpgradeFeaturesTableRowText>\n <strong>Premium mobile app</strong> to study on the go. Watch videos, answer questions from wherever.\n </UpgradeFeaturesTableRowText>\n </UpgradeFeaturesTableRow>\n </UpgradeFeaturesTable>\n </>\n);\n\n","import React from 'react';\n\nimport {ReactComponent as Smile} from '../assets/smile.svg';\nimport {ReactComponent as Click} from '../assets/click.svg';\nimport {ReactComponent as Videos} from '../assets/videos.svg';\n\nimport {\n UpgradeCallout,\n UpgradeHeader,\n UpgradeSubHeader,\n UpgradeFeaturesTable,\n UpgradeFeaturesTableRow,\n UpgradeFeaturesTableRowIconContainer,\n UpgradeFeaturesTableRowText,\n} from './shared';\n\n\nexport const inbdeFeatures = (\n <>\n <UpgradeCallout>\n <UpgradeHeader>\n Pass the INBDE. Guaranteed.\n </UpgradeHeader>\n <UpgradeSubHeader>\n Get instant access to everything below and more 👇\n </UpgradeSubHeader>\n </UpgradeCallout>\n <UpgradeFeaturesTable>\n <UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRowIconContainer>\n <Smile/>\n </UpgradeFeaturesTableRowIconContainer>\n <UpgradeFeaturesTableRowText>\n You’ll get <strong>2,500+ of the most representative practice questions available that cover everything you need to know</strong> and nothing you don’t.\n </UpgradeFeaturesTableRowText>\n </UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRowIconContainer>\n <Click />\n </UpgradeFeaturesTableRowIconContainer>\n <UpgradeFeaturesTableRowText>\n You’ll get our <strong>full simulation exam that simulates the look, feel, and content of the actual INBDE.</strong>\n </UpgradeFeaturesTableRowText>\n </UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRowIconContainer>\n <Videos />\n </UpgradeFeaturesTableRowIconContainer>\n <UpgradeFeaturesTableRowText>\n You’ll get our <strong>premium mobile app to study on the go.</strong> Watch videos, answer questions from wherever.\n </UpgradeFeaturesTableRowText>\n </UpgradeFeaturesTableRow>\n </UpgradeFeaturesTable>\n </>\n);\n\n","import React from 'react';\n\nimport {ReactComponent as Smile} from '../assets/smile.svg';\nimport {ReactComponent as Click} from '../assets/click.svg';\nimport {ReactComponent as Videos} from '../assets/videos.svg';\n\nimport {\n UpgradeCallout,\n UpgradeHeader,\n UpgradeSubHeader,\n UpgradeFeaturesTable,\n UpgradeFeaturesTableRow,\n UpgradeFeaturesTableRowIconContainer,\n UpgradeFeaturesTableRowText,\n} from './shared';\n\n\nexport const anatomyFeatures = (\n <>\n <UpgradeCallout>\n <UpgradeHeader>\n Get everything you need to ace anatomy in one place\n </UpgradeHeader>\n <UpgradeSubHeader>\n Get instant access to everything below and more 👇\n </UpgradeSubHeader>\n </UpgradeCallout>\n <UpgradeFeaturesTable>\n <UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRowIconContainer>\n <Smile/>\n </UpgradeFeaturesTableRowIconContainer>\n <UpgradeFeaturesTableRowText>\n <strong>Thousands of practice questions</strong> and <strong>practical exams</strong> you need to ace your exam.\n </UpgradeFeaturesTableRowText>\n </UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRowIconContainer>\n <Click />\n </UpgradeFeaturesTableRowIconContainer>\n <UpgradeFeaturesTableRowText>\n <strong>Hundreds of high-yield review videos</strong>, detailed lesson notes, and atlases.\n </UpgradeFeaturesTableRowText>\n </UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRowIconContainer>\n <Videos />\n </UpgradeFeaturesTableRowIconContainer>\n <UpgradeFeaturesTableRowText>\n <strong>iOS and Android mobile app</strong> to study on the go. Watch videos, answer questions from wherever.\n </UpgradeFeaturesTableRowText>\n </UpgradeFeaturesTableRow>\n </UpgradeFeaturesTable>\n </>\n);\nexport const anatomyTrialFeatures = (\n <>\n <UpgradeCallout>\n <UpgradeHeader>\n Your free trial ends soon\n </UpgradeHeader>\n <UpgradeSubHeader>\n Continue using Anatomy Bootcamp after your free trial period by upgrading your membership. Imagine having to go back to the old way of studying... 👇\n </UpgradeSubHeader>\n </UpgradeCallout>\n <UpgradeFeaturesTable>\n <UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRowIconContainer>\n <Smile/>\n </UpgradeFeaturesTableRowIconContainer>\n <UpgradeFeaturesTableRowText>\n You'd miss out on the <strong>thousands of practice questions</strong> and <strong>practical exams</strong> you need to ace your exam.\n </UpgradeFeaturesTableRowText>\n </UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRowIconContainer>\n <Click />\n </UpgradeFeaturesTableRowIconContainer>\n <UpgradeFeaturesTableRowText>\n You'd have to go back to disjointed YouTube searches instead of using <strong>our hundreds of high-yield review videos</strong>.\n </UpgradeFeaturesTableRowText>\n </UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRowIconContainer>\n <Videos />\n </UpgradeFeaturesTableRowIconContainer>\n <UpgradeFeaturesTableRowText>\n and you'd only be able to get your questions answered during class instead of using <strong>our 24-hour TA support chat</strong>.\n </UpgradeFeaturesTableRowText>\n </UpgradeFeaturesTableRow>\n </UpgradeFeaturesTable>\n </>\n);\n","import React from 'react';\nimport styled from 'styled-components';\n\n\nimport {CheckmarkCircle} from '@styled-icons/fluentui-system-filled/CheckmarkCircle';\n\nimport {\n UpgradeCallout,\n UpgradeHeader,\n UpgradeSubHeader,\n UpgradeFeaturesTable,\n UpgradeFeaturesTableRow,\n UpgradeFeaturesTableRowIconContainer,\n UpgradeFeaturesTableRowText,\n} from './shared';\n\n\nconst Checkmark = styled(CheckmarkCircle)`\n width: 20px;\n min-width: 20px;\n height: 20px;\n color: ${({theme}) => theme.colors.brandPalette.royal.default};\n margin-right: 8px;\n`;\n\n\nexport const nclexFeatures = (\n <>\n <UpgradeCallout>\n <UpgradeHeader>\n Pass the NCLEX®. Guaranteed.\n </UpgradeHeader>\n <UpgradeSubHeader>\n Upgrade your membership and get instant access to all content and features 👇\n </UpgradeSubHeader>\n </UpgradeCallout>\n <UpgradeFeaturesTable>\n <UpgradeFeaturesTableRow>\n <Checkmark/>\n <UpgradeFeaturesTableRowText>\n <strong>1,500+ high-yield questions</strong> based on the real NCLEX®\n </UpgradeFeaturesTableRowText>\n </UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRow>\n <Checkmark/>\n <UpgradeFeaturesTableRowText>\n <strong>250+ NGN case study questions</strong> with video explanations\n </UpgradeFeaturesTableRowText>\n </UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRow>\n <Checkmark/>\n <UpgradeFeaturesTableRowText>\n <strong>4 readiness exams</strong> that predict your chances of passing\n </UpgradeFeaturesTableRowText>\n </UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRow>\n <Checkmark/>\n <UpgradeFeaturesTableRowText>\n <strong>Bootcamp AI</strong> to instantly clarify any concept\n </UpgradeFeaturesTableRowText>\n </UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRow>\n <Checkmark/>\n <UpgradeFeaturesTableRowText>\n Access to our <strong>4.9+ rated mobile app</strong>\n </UpgradeFeaturesTableRowText>\n </UpgradeFeaturesTableRow>\n <UpgradeFeaturesTableRow>\n <Checkmark/>\n <UpgradeFeaturesTableRowText>\n Feel confident in our <strong>Pass Guarantee</strong>\n </UpgradeFeaturesTableRowText>\n </UpgradeFeaturesTableRow>\n </UpgradeFeaturesTable>\n </>\n);\n\n","import React, {useState, useEffect} from 'react';\nimport styled from 'styled-components';\nimport Carousel from '../../../Carousel';\nimport {preventDefault} from '../../helpers';\nimport {Column, Row} from '../../../Grid';\n\nimport {Button, IconButton} from '../../../Branding/Buttons';\n\nimport {useModalContext} from '../../../../contexts/Modal';\nimport {useUserDataContext} from '../../../../contexts/UserData';\n\nimport {ReactComponent as Badge} from '@bootcamp/shared/src/assets/svg/badge.svg';\n\nimport {CloseOutline as X} from '@styled-icons/evaicons-outline/CloseOutline';\n\nimport {datOutcomes} from './outcomes/dat';\nimport {oatOutcomes} from './outcomes/oat';\nimport {inbdeOutcomes} from './outcomes/inbde';\nimport {anatomyOutcomes} from './outcomes/anatomy';\nimport {nclexOutcomes} from './outcomes/nclex';\n\nimport {datFeatures} from './features/dat';\nimport {oatFeatures} from './features/oat';\nimport {inbdeFeatures} from './features/inbde';\nimport {anatomyFeatures, anatomyTrialFeatures} from './features/anatomy';\nimport {nclexFeatures} from './features/nclex';\n\n\nconst SuperContainer = styled(Column)`\n position: relative;\n max-width: 1152px;\n min-height: 640px;\n border-radius: 10px;\n line-height: normal;\n overflow: hidden;\n\n ${({theme}) => theme.mediaQueries.laptop} {\n height: auto;\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n overflow-y: auto;\n height: 100%;\n }\n`;\nconst UpgradeContainer = styled(Row)`\n position: relative;\n background: white;\n border-radius: 10px;\n\n ${({theme}) => theme.mediaQueries.laptop} {\n flex-direction: column;\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-top: ${({theme}) => theme.layouts.spacing.xxl};\n }\n`;\n\nconst UpgradeSection = styled(Column)`\n justify-content: center;\n padding: ${({theme}) => theme.layouts.spacing.xl};\n flex-grow: 0;\n flex-shrink: 0;\n flex-basis: 50%;\n\n ${({theme}) => theme.mediaQueries.laptop} {\n border-radius: 10px 10px 0px 0px;\n justify-content: flex-start;\n height: auto;\n padding: ${({theme}) => theme.layouts.spacing.xxl};\n flex-basis: auto;\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 0;\n height: auto;\n }\n`;\n\nexport const FeatureSection = styled(UpgradeSection)`\n overflow: auto;\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n order: 2;\n border-radius: 0px 10px 10px 0px;\n\n ${({theme}) => theme.mediaQueries.laptop} {\n overflow-y: initial;\n order: 0;\n border-radius: 0px 0px 10px 10px;\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n overflow: auto;\n order: 1;\n padding-bottom: 130px;\n }\n`;\n\nconst GradientWrapper = styled.div`\n background: ${({theme}) => theme.colors.brandPalette.royal.gradient};\n width: 100%;\n height: 100%;\n border-radius: 10px 0px 0px 10px;\n\n ${({theme}) => theme.mediaQueries.laptop} {\n border-radius: 10px 10px 0px 0px;\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n display: flex;\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n align-items: center;\n height: auto;\n }\n`;\n\nconst OutcomeSection = styled(UpgradeSection)`\n background: linear-gradient(121.4deg, rgba(14, 20, 24, 0) 0%, rgba(14, 20, 23, 0.6) 100%);\n order: 1;\n border-radius: 10px 0px 0px 10px;\n\n ${({theme}) => theme.mediaQueries.laptop} {\n border-radius: 10px 10px 0px 0px;\n overflow: initial;\n gap: 8px;\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n display: none;\n border-radius: 10px 10px 0px 0px;\n order: 2;\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n }\n`;\n\nconst ButtonContainer = styled(Row)`\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: auto;\n\n ${({theme}) => theme.mediaQueries.laptop} {\n border-radius: 0px 0px 10px 10px;\n padding: ${({theme}) => theme.layouts.spacing.l};\n z-index: 2;\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n position: fixed;\n bottom: 10%;\n left: 10%;\n width: 100%;\n bottom: 0;\n left: 0;\n border-radius: 0px;\n padding-bottom: ${({theme}) => theme.layouts.spacing.m};\n padding-top: ${({theme}) => theme.layouts.spacing.xxl};\n background: ${({theme}) => theme.colors.fade.white};\n }\n`;\n\nconst CloseButton = styled(IconButton)`\n visibility: hidden;\n z-index: 2;\n position: absolute;\n top: -32px;\n right: -32px;\n opacity: 0;\n transition: none;\n\n ${({visible}) => visible && `\n opacity: 1;\n `}\n\n ${({theme}) => theme.mediaQueries.tablet} {\n visibility: initial;\n color: white;\n top: 14px;\n right: -32px;\n ${({visible}) => visible && `\n right: 16px;\n `}\n }\n`;\nconst CancelButton = styled(Button)`\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n`;\n\nconst upgradeDisplayConfig = {\n dat: {\n features: datFeatures,\n outcomes: datOutcomes,\n },\n oat: {\n features: oatFeatures,\n outcomes: oatOutcomes,\n },\n inbde: {\n features: inbdeFeatures,\n outcomes: inbdeOutcomes,\n },\n anatomy: {\n features: anatomyFeatures,\n outcomes: anatomyOutcomes,\n trialFeatures: anatomyTrialFeatures\n },\n nclex: {\n features: nclexFeatures,\n outcomes: nclexOutcomes,\n },\n};\n\nconst Upgrade = () => {\n const {bootcamp, trialMembership} = useUserDataContext();\n const [visible, setVisible] = useState(false);\n const [{isLaptop, isTablet}, setBreakpoints] = useState({isLaptop: document.documentElement.clientWidth < 1024, isTablet: document.documentElement.clientWidth < 768});\n\n const updateBreakpoints = () => setBreakpoints({isLaptop: document.documentElement.clientWidth < 1024, isTablet: document.documentElement.clientWidth < 768});\n const {outcomes, features, trialFeatures} = upgradeDisplayConfig[bootcamp];\n\n useEffect(() => {\n setVisible(true);\n window.addEventListener('resize', updateBreakpoints);\n return () => window.removeEventListener('resize', updateBreakpoints);\n }, []);\n\n const {modalDispatch} = useModalContext();\n\n return (\n <SuperContainer>\n <CloseButton\n type={isTablet ? 'secondary' : 'primary'}\n size={isTablet ? 'small' : 'large'}\n onClick={() => modalDispatch({type: 'close'})} visible={visible}\n >\n <X size={32}/>\n </CloseButton>\n <UpgradeContainer onClick={preventDefault} visible={visible}>\n <GradientWrapper>\n <OutcomeSection>\n <Carousel children={outcomes} />\n\n </OutcomeSection>\n </GradientWrapper>\n <FeatureSection>\n {trialMembership && trialFeatures ? trialFeatures : features}\n <ButtonContainer>\n <CancelButton\n children={\"I'm Not Ready, Yet\"}\n size={'large'}\n type={'ghost'}\n fixed={true}\n onClick={() => modalDispatch({type: 'close'})}\n round\n />\n <Button\n children={'Upgrade Your Membership'}\n color={'royal'}\n size={'large'}\n fixed={true}\n onClick={() => window.open(`https://bootcamp.com/${bootcamp}/upgrade`, '_blank')}\n round\n iconConfig={{\n position: 'left',\n icon: Badge,\n size: 12,\n }}\n />\n </ButtonContainer>\n </FeatureSection>\n </UpgradeContainer>\n\n </SuperContainer>\n );\n}\n\nexport default Upgrade;\n","import React, {useCallback} from 'react';\nimport styled, {css} from 'styled-components';\nimport moment from 'moment';\n\nimport {LinkButton, Button} from '../../../Branding/Buttons';\n\nimport {useUserDataContext} from '../../../../contexts/UserData';\nimport {useAsync} from '../../../../hooks';\n\nimport {User} from '@styled-icons/fa-solid/User';\nimport {CloseOutline as X} from '@styled-icons/evaicons-outline/CloseOutline';\n\nimport {Loader} from '../';\nimport {ReactComponent as Badge} from '@bootcamp/shared/src/assets/svg/badge.svg';\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\nimport UpgradeModal from '@bootcamp/web/src/components/Modal/components/Upgrade';\nimport Avvvatars from 'avvvatars-react'\n\nconst UserIconContainer = styled(LinkButton)`\n display: inline-block;\n width: auto;\n height: auto;\n\n margin-left: ${({theme}) => theme.layouts.spacing.s};\n\n button {\n padding: 0;\n border-radius: 100%;\n height: 42px;\n width: 42px;\n position: relative;\n ${({theme}) => theme.mediaQueries.mobileL} {\n height: 40px;\n width: 40px;\n }\n }\n`;\nconst ExpirationNotificationContainer = styled(LinkButton)`\n button {\n border-radius: 24px;\n }\n\n span {\n white-space: nowrap;\n }\n`;\nconst UserIcon = styled(User)`\n width: 20px;\n height: 20px;\n`;\nconst UpgradeBadge = styled(Badge)`\n height: 12px;\n width: 12px;\n path {\n fill: ${({theme}) => theme.colors.neutralsPalette.white};\n }\n`;\n\nexport const Close = styled(X)`\n width: 20px;\n height: 20px;\n color: white;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n width: 16px;\n height: 16px;\n }\n`;\n\nconst LogInButton = styled(LinkButton)`\n margin-right: ${({theme}) => theme.layouts.spacing.l};\n width: auto;\n\n button {\n color: ${({theme}) => theme.overlays.opacity.light._400};\n font-size: ${({theme}) => theme.font.size.medium};\n line-height: ${({theme}) => theme.font.height.small2};\n padding: 0;\n\n &:hover {\n color: ${({theme}) => theme.overlays.opacity.light._200};\n }\n }\n`;\nconst SignUpButton = styled(LinkButton)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n width: auto;\n`;\nconst UpgradeButton = styled(LinkButton)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n border-radius: 24px;\n width: auto;\n white-space: nowrap;\n ${({white}) => white && css`\n button {\n background: white;\n color: ${({theme}) => theme.colors.brandPalette.indigo.default};\n &:hover {\n background: white;\n }\n }\n ${UpgradeBadge} {\n path {\n fill: ${({theme}) => theme.colors.brandPalette.indigo.default};\n }\n }\n `}\n\n`;\n\nexport const LogIn = ({className}) => (\n <LogInButton\n className={className}\n buttonType={'text'}\n size={'small'}\n to={'/auth#/signin'}>\n Log In\n </LogInButton>\n);\nexport const SignUp = ({className, children='Sign Up', to='/auth'}) => (\n <SignUpButton\n className={className}\n type={'secondary'}\n size={'small'}\n to={to}>\n {children}\n </SignUpButton>\n);\nexport const LogInMobile = ({className}) => (\n <LinkButton\n className={className}\n fixed\n type={'ghost'}\n to={'/auth#/signin'}>\n Log In\n </LinkButton>\n);\nexport const SignUpMobile = ({className}) => (\n <LinkButton\n className={className}\n fixed\n to={'/auth'}>Sign Up\n </LinkButton>\n);\n\nfunction getTrialMessage (trialMembership, userModel) {\n if (!trialMembership) return;\n const trialExpiration = moment(userModel?.createdAt).add(3, 'days');\n return `Free Trial ends ${moment().to(trialExpiration)}`\n}\n\nexport const Upgrade = ({className, type='secondary', size='small', color='indigo', fixed=false, children='Upgrade'}) => {\n const {isUpgraded, trialMembership, bootcamp, userModel} = useUserDataContext();\n const {modalDispatch} = useModalContext();\n\n if ((isUpgraded && !trialMembership) || window.location.pathname.includes('/thank-you')) return null;\n\n const sharedProps = {\n className,\n type,\n size,\n color,\n fixed,\n to: '/upgrade',\n children: getTrialMessage(trialMembership, userModel) || children\n }\n\n if (trialMembership && bootcamp === 'anatomy') {\n sharedProps.onClick = () => modalDispatch({\n type: 'open',\n component: UpgradeModal,\n enableClickClose: true,\n modalContainerStyle: theme => `\n background: ${theme.overlays.opacity.dark._300};\n padding: 10vh 10vw;\n align-items: flex-start;\n ${theme.mediaQueries.tablet} {\n background: ${theme.overlays.opacity.dark._400};\n padding: 0;\n }\n `\n })\n }\n\n if (userModel?.memberships?.items?.some(membership => {\n const endDate = moment(membership.startDate).add(membership.duration, 'days');\n return moment().isAfter(endDate) && moment().isBefore(moment(endDate).add(7, 'days'))\n })) {\n sharedProps.children = \"Extend Membership\"\n sharedProps.onClick = () => window.location = `https://app.bootcamp.com/${bootcamp}/account/memberships`;\n sharedProps.href = `https://app.bootcamp.com/${bootcamp}/account/memberships`;\n }\n\n\n return (\n <UpgradeButton\n as={Button}\n iconConfig={{position: 'left', color, icon: UpgradeBadge}}\n onClick={() => window.open(`https://bootcamp.com/${bootcamp}/upgrade`, '_blank')}\n href={`https://bootcamp.com/${bootcamp}/upgrade`}\n {...sharedProps}\n />\n\n );\n}\n\nconst DefaultProfilePictureContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n border-radius: 100%;\n padding: 3px;\n position: relative;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 0px;\n }\n`;\n\nconst ProfilePictureImage = styled.img`\n width: 100%;\n height: 100%;\n border-radius: 100%;\n object-fit: cover;\n`;\nconst StyledDefaultProfilePicture = styled.div`\n border-radius: 100%;\n height: 38px;\n width: 38px;\n ${({theme, loading}) => theme.animation.loadingBackground({loading})};\n`;\n\nexport const DefaultProfilePicture = ({children, className, size=36}) => {\n const {userModel, cognitoUser} = useUserDataContext();\n return (\n <DefaultProfilePictureContainer className={className}>\n {children || <Avvvatars size={size} value={(cognitoUser?.attributes?.name || userModel?.id || 'User').slice(0,1)}/>}\n </DefaultProfilePictureContainer>\n )\n};\n\nexport const ExpirationNotification = () => {\n const {bootcamp, userModel} = useUserDataContext();\n const activeMembershipType = userModel?.activeMembership?.type;\n\n function getDaysLeft () {\n try {\n\n const expirationDate = moment.unix(userModel?.membershipExpirationDate);\n const now = moment();\n\n return moment.duration(expirationDate.diff(now)).asDays();\n\n } catch (error) {\n // console.log('error getting days', error);\n }\n }\n\n const daysLeft = getDaysLeft();\n\n // if we have more than 7 days remaining in membership, don't show this notification\n if (activeMembershipType === 'subscription' || !daysLeft || daysLeft < 0 || daysLeft > 14) return null;\n\n const roundedDaysLeft = Math.round(daysLeft);\n const expirationText = daysLeft > 0 && daysLeft <= 1\n ? 'Membership expires in < 24hrs'\n : `Membership expires in ${roundedDaysLeft} day${roundedDaysLeft === 1 ? '' : 's'}`\n\n return (\n <ExpirationNotificationContainer\n type={'secondary'}\n size={'small'}\n buttonType={'default'}\n to={`/${bootcamp}/account/memberships`}\n children={expirationText}\n />\n );\n}\n\nexport const Account = ({className, onClick=()=>{}, buttonType='default', type='secondary', size='small'}) => {\n const {bootcamp, profPicUrl} = useUserDataContext();\n\n\n\n return (\n <>\n <ExpirationNotification/>\n <UserIconContainer\n onClick={onClick}\n className={className}\n type={type}\n size={size}\n buttonType={buttonType}\n to={`/${bootcamp}/account`}\n children={profPicUrl === 'error' ? <DefaultProfilePicture /> : <StyledDefaultProfilePicture loading={!profPicUrl} children={(!profPicUrl || (profPicUrl === 'error')) ? null : <ProfilePictureImage src={profPicUrl} />} />}\n />\n </>\n );\n}\n","import Storage from '@aws-amplify/storage';\nimport {insertAtIndex} from '@bootcamp/shared/src/util';\nimport {updateQuestionProgress as updateQbQuestionProgress} from '@bootcamp/shared/src/requests';\n\nexport const handleGoBack = (history) => {\n const {action, push, replace, goBack, location} = history;\n\n const searchParams = new URLSearchParams(location?.search);\n const testStorageKey = searchParams.get('key');\n\n const canGoBack = action !== 'POP';\n const urlParts = window.location.pathname.split('/');\n const previousPath = urlParts\n .slice(0,2)\n .join('/');\n\n if (urlParts[2] === 'self-assessment') {\n replace(`${previousPath}/self-assessment/review?id=b21f76dd-8a20-4a71-9bf6-839e7b4d7faa&testRoute=med-school/self-assessment/assessment`)\n } else if (urlParts[2] === 'custom-test') {\n push(`${previousPath}/previous-tests/review?key=${encodeURIComponent(testStorageKey)}`);\n } else if (canGoBack) {\n goBack();\n } else {\n push(previousPath);\n }\n};\n\nexport function resolveIconPath(iconPath) {\n try {\n return require(`@bootcamp/shared/src/assets/${iconPath}`).default;\n } catch (error) {\n return null;\n }\n}\n\nexport function updateQuestionProgressState(updater, questionProgresses, questionIndex, params) {\n const updatedQuestionProgress = {...questionProgresses[questionIndex], ...params};\n\n updater({\n questions: insertAtIndex(\n questionProgresses,\n questionIndex,\n updatedQuestionProgress\n )\n });\n\n return updatedQuestionProgress;\n};\n\nexport async function updateQuestionProgressData(updater, startTime, questionProgresses, questionIndex) {\n const timeElapsed = new Date(new Date() - startTime);\n const time = (parseFloat(questionProgresses?.[questionIndex]?.time) + (timeElapsed.getTime() / 1000)).toFixed(2);\n\n const {\n blockArrayIndex,\n questionProgressId,\n questionBaseId,\n questionRevisionId,\n current,\n crossedAnswerIndexes,\n indexes,\n bookmarked,\n originalTestId,\n questionIndex: currentQuestionIndex,\n subject,\n topic,\n subjectTopic,\n question,\n isSequentialStart,\n isSequentialEnd,\n isSequentialSet,\n answerState,\n seen,\n fullCredit,\n partialCredit,\n noCredit,\n // highlights, // not saving these for now b/c there's an issue with restoration from the new object format they're being saved in\n ...questionProgress\n } = updateQuestionProgressState(updater, questionProgresses, questionIndex, {time});\n\n const updatedProgress = await updateQbQuestionProgress(questionProgressId, questionProgress);\n\n return updatedProgress;\n}\n\nexport function normalizeHighlights(highlights) {\n try {\n const parsedHighlights = JSON.parse(highlights);\n return parsedHighlights;\n } catch (error) {\n return highlights;\n }\n}","import React, {Fragment, useEffect, useRef} from 'react';\nimport styled from 'styled-components';\nimport {Link, withRouter} from 'react-router-dom';\nimport SVG from 'react-inlinesvg';\n\nimport {Row, FlexBox} from '../../../Grid';\nimport {H5} from '../../../Typography';\nimport {HomeIcon, StudentReviewsIcon} from '../../../Branding/Classroom/Icons';\nimport {Account, Upgrade, Close, LogInMobile, SignUpMobile} from '../Buttons';\nimport {IconButton} from '../../../Branding/Buttons';\nimport {useUserDataContext} from '../../../../contexts/UserData';\nimport {resolveIconPath} from '@bootcamp/web/src/helpers';\n\nimport {ArrowForwardOutline} from '@styled-icons/evaicons-outline/ArrowForwardOutline';\nimport {Menu as MenuIconImport} from '@styled-icons/evaicons-solid/Menu';\n\nimport {colors} from '@bootcamp/shared/src/styles/theme';\n\n\nconst Container = styled.div`\n position: absolute;\n top: ${({barHeight}) => barHeight}px;\n z-index: 10000000;\n opacity: ${({active}) => active ? 1 : 0};\n transition: opacity .45s;\n height: ${({active}) => active ? 'auto' : 0};\n width: ${({active}) => active ? 'auto' : 0};\n overflow: hidden;\n${({theme}) => theme.mediaQueries.tablet} {\n top: 0;\n right: 0;\n position: fixed;\n width: ${({active}) => active ? '100%' : 0};\n height: ${({active}) => active ? '100vh' : 0};\n background: rgba(94, 110, 141, 0.9);\n }\n`;\nconst Wrapper = styled.div`\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n padding: ${({theme}) => theme.layouts.spacing.m};\n box-shadow: ${({theme}) => theme.elevation.shadow.high};\n width: 400px;\n border-radius: 8px;\n ${({theme}) => theme.mediaQueries.tablet} {\n border-radius: 0;\n width: 100%;\n padding: ${({theme}) => theme.layouts.spacing.s};\n }\n`;\nconst MenuIcon = styled(MenuIconImport)`\n width: 20px;\n height: 20px;\n color: white;\n ${({theme}) => theme.mediaQueries.tablet} {\n width: 16px;\n height: 16px;\n }\n`;\nconst MenuButton = styled(IconButton)`\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n padding: 10px;\n height: auto;\n width: auto;\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 8px;\n }\n`;\nconst List = styled(FlexBox)`\n flex-direction: column;\n`;\nconst Arrow = styled(ArrowForwardOutline)`\n width: 16px;\n height: 16px;\n margin-left: auto;\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n`;\nconst Locked = styled.span`\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n font-size: ${({theme}) => theme.font.size.smaller};\n line-height: 15px;\n`;\nconst ListItem = styled(FlexBox)`\n padding: ${({theme}) => theme.layouts.spacing.s};\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n align-items: center;\n border-radius: 100px;\n background: ${({active, theme}) => active ? theme.colors.neutralsPalette.extraLight : theme.colors.neutralsPalette.white};\n min-height: 50px;\n &:hover {\n background: ${({hoverColor, theme, locked}) => hoverColor || theme.colors.brandPalette.indigo.light};\n ${Arrow} {\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n }\n }\n &:last-child {\n margin-bottom: 0;\n }\n`;\nconst ItemLink = styled(H5)`\n display: flex;\n width: 100%;\n align-items: center;\n text-decoration: none;\n`;\nconst Current = styled.span`\n display: ${({active}) => active ? 'inline-block' : 'none'};\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n font-size: ${({theme}) => theme.font.size.smaller};\n line-height: 15px;\n`;\nconst IconWrapper = styled.span`\n background: ${({color, theme}) => color || theme.colors.brandPalette.indigo.dark};\n border-radius: 25px;\n padding: 6px;\n width: 32px;\n height: 32px;\n margin-right: ${({theme}) => theme.layouts.spacing.s};\n svg {\n width: 20px;\n height: 20px;\n }\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 10px;\n svg {\n width: 25px;\n height: 25px;\n }\n }\n`;\nconst ItemNameWrapper = styled.div`\n`;\n\nconst MobileTop = styled(Row)`\n display: none;\n ${({theme}) => theme.mediaQueries.tablet} {\n justify-content: space-between;\n display: flex;\n margin-bottom: 12px;\n }\n`;\nconst MobileBottom = styled(Row)`\n display: none;\n ${({theme}) => theme.mediaQueries.tablet} {\n display: flex;\n }\n`;\nconst AccountButtonWrapper = styled.span`\n`;\n\n\nfunction isRouteActive(history, route) {\n const pathname = history.location.pathname.split('/').slice(-1)[0];\n\n return pathname === route;\n}\n\nfunction getMenuItems(onMenuItemClick, history, config, includeStudentReviewLink) {\n const listItemConfig = [\n {route: 'home', name: 'Home', icon: <HomeIcon/>, themePalette: {}},\n ...config,\n ...(includeStudentReviewLink ? [{href: 'https://blog.anatomybootcamp.com/student-reviews', name: 'Student Reviews', icon: <StudentReviewsIcon/>, themePalette: colors.brandPalette.purple}] : []),\n ];\n\n return listItemConfig.map(({route, href, themePalette, icon, name, locked, releaseDate, directRoute}, index) => {\n const active = !href && isRouteActive(history, route);\n const elementProps = locked\n ? {as: 'div', onClick: () => {}}\n : href\n ? {as: 'a', href, target: '_blank', onClick: onMenuItemClick}\n : directRoute\n ? {as: Link, to: index === 0 ? `/${route}` : route, onClick: onMenuItemClick}\n : {as: Link, to: index === 0 ? `/${route}` : `/home/${route}`, onClick: onMenuItemClick}\n\n return (\n <ListItem key={`jump-menu-item-${route}`} hoverColor={themePalette.light} active={active}>\n <ItemLink\n {...elementProps}\n children={\n <Fragment>\n <IconWrapper\n color={themePalette.default}\n children={typeof icon === 'string' ? <SVG src={resolveIconPath(icon)}/> : icon}\n />\n <ItemNameWrapper>\n <div>{name}</div>\n {locked\n ? <Locked children={releaseDate}/>\n : <Current active={active} children={'Current'}/>\n }\n </ItemNameWrapper>\n {!locked && <Arrow/>}\n </Fragment>\n }\n />\n </ListItem>\n )});\n}\n\nconst CloseButton = styled(Close)`\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n margin-left: ${({theme}) => theme.layouts.spacing.s};\n cursor: pointer;\n ${({theme}) => theme.mediaQueries.tablet} {\n width: 32px;\n height: 32px;\n }\n`;\nconst AccountButton = styled(Account)`\n svg {\n color: ${({theme}) => theme.colors.brandPalette.indigo.default};\n }\n`;\nconst UpgradeButton = styled(Upgrade)`\n margin: ${({theme}) => `${theme.layouts.spacing.m} ${theme.layouts.spacing.s}`};\n`;\nconst LogInButton = styled(LogInMobile)`\n margin: ${({theme}) => `${theme.layouts.spacing.m} ${theme.layouts.spacing.s}`};\n margin-right: 4px;\n`;\nconst SignUpButton = styled(SignUpMobile)`\n margin: ${({theme}) => `${theme.layouts.spacing.m} ${theme.layouts.spacing.s}`};\n margin-left: 4px;\n`;\n\nconst BottomLoggedIn = () => (\n <UpgradeButton\n type={'primary'}\n size={'large'}\n color={'indigo'}\n fixed={true}\n children={'Upgrade Membership'}\n />\n);\n\nconst BottomLoggedOut = () => (\n <Fragment>\n <LogInButton/>\n <SignUpButton/>\n </Fragment>\n);\n\nconst Menu = withRouter(({history, setMenuOpen, menuOpen, barHeight, barHeightMobile, config}) => {\n const {isUpgraded, loggedIn, bootcamp} = useUserDataContext();\n const ref = useRef();\n\n function handleClick(event) {\n if (!menuOpen) return;\n\n const canDoWork = ref && ref.current && ref.current.contains && event && event.target;\n const isInside = canDoWork && ref.current.contains(event.target);\n\n if (!isInside) setMenuOpen(false);\n }\n\n useEffect(() => {\n window.addEventListener('click', handleClick);\n return () => window.removeEventListener('click', handleClick);\n }, [menuOpen]);\n\n return (\n <Container barHeight={barHeight} barHeightMobile={barHeightMobile} active={menuOpen}>\n <Wrapper ref={ref} active={menuOpen}>\n <MobileTop>\n <CloseButton onClick={() => setMenuOpen(false)}/>\n <AccountButtonWrapper onClick={() => setMenuOpen(false)}>\n <AccountButton buttonType={'icon'} type={'primary'} size={'large'}/>\n </AccountButtonWrapper>\n </MobileTop>\n <List children={getMenuItems(() => setMenuOpen(false), history, config, bootcamp === 'anatomy')}/>\n <MobileBottom>\n {loggedIn\n ? !isUpgraded && <BottomLoggedIn/>\n : <BottomLoggedOut/>\n }\n </MobileBottom>\n </Wrapper>\n </Container>\n );\n});\n\n\n\nexport default Menu;\nexport {MenuIcon, MenuButton};","import React from 'react';\n\nimport {Row, FlexBox} from '../../../Grid';\nimport {LinkButton} from '../../../Branding/Buttons';\n\nimport {ChevronRight} from '@styled-icons/feather/ChevronRight';\n\nimport {deSlugify} from '@bootcamp/shared/src/util';\n\nimport styled from 'styled-components';\n\n\nconst Container = styled(FlexBox)`\n align-items: center;\n overflow: hidden;\n height: auto;\n`;\nconst Breadcrumb = styled(LinkButton)`\n width: auto;\n overflow: hidden;\n white-space: nowrap;\n\n button {\n display: inline-block;\n color: ${({theme, active}) => active ? theme.overlays.opacity.light._300 : theme.colors.neutralsPalette.white};\n width: 100%;\n padding: 0;\n text-overflow: ellipsis;\n overflow: hidden;\n border-radius: 0;\n\n &:hover {\n color: ${({theme}) => theme.overlays.opacity.light._400};\n }\n\n &:disabled {\n color: ${({theme, active}) => theme.overlays.opacity.light._300};\n }\n\n ${({active}) => active && `\n cursor: default;\n `}\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: ${({theme}) => theme.font.size.medium};\n line-height: ${({theme}) => theme.font.height.small2};\n }\n`;\nconst Wrapper = styled(Row)`\n align-items: center;\n width: auto;\n overflow: hidden;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n &:first-child {\n display: ${({index, activeDepth}) => activeDepth === 1 && index === 0 ? 'flex' : 'none'};\n }\n }\n`;\nconst Separator = styled(ChevronRight)`\n display: flex;\n width: 10px;\n height: 10px;\n color: ${({theme}) => theme.overlays.opacity.light._300};\n stroke-width: 4px;\n margin: 0px 8px;\n ${({theme, index, activeDepth}) => `${theme.mediaQueries.tablet} {${index === 1 && activeDepth > 1 && `display: none;`}}`}\n`;\n\nconst slugOverrides = {\n 'faqs': 'FAQs',\n 'upper-and-lower-limbs-back': 'Upper & Lower Limbs, Back',\n 'gluteal-region-posterior-thigh-popliteal-fossa': 'Gluteal Region, Posterior Thigh, Popliteal Fossa',\n 'thorax-abdomen-and-pelvis': 'Thorax, Abdomen & Pelvis',\n 'anatomy-and-physiology': 'Anatomy & Physiology',\n 'self-assessment': 'Self-Assessment',\n 'cars-passages': 'CARS Passages',\n 'cars-practice-tests': 'CARS Practice Tests',\n 'aamc-explanations': 'AAMC Explanations',\n}\n\nconst getCrumbText = (crumb) => slugOverrides[crumb] || deSlugify(crumb);\n\nconst Breadcrumbs = ({className, history, lockAtDepth, customActiveTitle}) => {\n const basePaths = history.location.pathname.split('/').slice(1);\n const paths = basePaths.slice(0, lockAtDepth || basePaths.length);\n\n const activeDepth = paths.filter(path => !!path).length - 1;\n\n const crumbs = paths.map((crumb, index) => {\n if (!crumb) return null;\n\n let text = getCrumbText(crumb);\n\n if (history.location.pathname.includes('inbde') && text === 'Anatomy & Physiology') {\n text = 'Anatomy and Physiology';\n }\n\n const link = crumb === 'account' ? 'account' : paths.slice(0, index + 1).join('/');\n const active = index === activeDepth;\n\n return (\n <Wrapper key={`crumb-${link}`} index={index} activeDepth={activeDepth}>\n {index > 0 && <Separator index={index} activeDepth={activeDepth}/>}\n <Breadcrumb\n to={`/${link}`}\n buttonType={'text'}\n children={active && customActiveTitle ? customActiveTitle : index === 0 ? 'Home' : text}\n active={active}\n disabled={active}\n />\n </Wrapper>\n );\n });\n\n return (\n <Container className={className}>\n {crumbs}\n </Container>\n );\n}\n\nexport default Breadcrumbs;\n","import React from 'react';\nimport {useHistory} from 'react-router-dom';\n\nimport {Button, LinkButton, IconButton} from '../Branding/Buttons';\n\nimport {ArrowForwardOutline} from '@styled-icons/evaicons-outline/ArrowForwardOutline';\nimport {ArrowBackOutline} from '@styled-icons/evaicons-outline/ArrowBackOutline';\nimport {RefreshOutline} from '@styled-icons/evaicons-outline/RefreshOutline';\nimport {CheckmarkOutline} from '@styled-icons/evaicons-outline/CheckmarkOutline';\nimport {Bookmark} from '@styled-icons/heroicons-outline/Bookmark';\nimport {Calculator} from '@styled-icons/heroicons-outline/Calculator';\nimport {RectangleGroup as Template} from '@styled-icons/heroicons-outline/RectangleGroup';\nimport {Home} from '@styled-icons/heroicons-outline/Home';\nimport {CloseOutline as X} from '@styled-icons/evaicons-outline/CloseOutline';\n\nimport styled, {css} from 'styled-components';\nimport useHotkeys from \"@reecelucas/react-use-hotkeys\";\nimport {useHotkeys as oldUseHotkeys} from \"react-hotkeys-hook\";\n\nexport const backButtonWidth = 56;\n\n\nexport const StyledBackButton = styled(Button)`\n align-self: flex-start;\n width: auto;\n z-index: 1;\n border: 1px solid ${({theme}) => theme.overlays.opacity.light._400};\n color: ${({theme}) => theme.overlays.opacity.light._400};\n\n button {\n font-weight: 500;\n width: ${backButtonWidth}px;\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n padding: ${({theme}) => theme.layouts.spacing.m};\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n justify-content: flex-start;\n\n svg {\n fill: ${({theme, inMenu}) => !inMenu ? theme.colors.neutralsPalette.grey : theme.colors.neutralsPalette.white};\n width: 24px;\n height: 24px;\n }\n }\n }\n`;\n\nexport const BackButton = ({\n inMenu,\n className,\n onClick\n}) => {\n\n const {goBack} = useHistory();\n\n return(\n <StyledBackButton\n className={className}\n onClick={onClick ? onClick : goBack ? goBack : null}\n type={'ghostWhite'}\n children={'Exit'}\n inMenu={inMenu}\n iconConfig={{\n position: 'left',\n icon: ArrowBackOutline,\n size: 16,\n }}\n />\n );\n}\n\n\nconst StyledStartButton = styled(Button)`\n background: ${({themeColor}) => themeColor};\n\n &:hover {\n background: ${({themeColor}) => themeColor};\n }\n`;\n\nexport const StartButton = ({color, onClick, children='Begin Attempt', disabled}) => (\n <StyledStartButton\n onClick={onClick}\n themeColor={color}\n children={children}\n disabled={disabled}\n iconConfig={{\n position: 'right',\n icon: ArrowForwardOutline,\n size: 16\n }}\n fixed\n />\n);\n\nconst StyledStartReviewButton = styled(StyledStartButton)`\n width: ${({fullWidth}) => fullWidth ? '100%' : '50%'} ;\n`;\n\nexport const StartReviewButton = ({color, onClick, fullWidth}) => (\n <StyledStartReviewButton\n onClick={onClick}\n themeColor={color}\n fullWidth={fullWidth}\n children={'Begin Review'}\n iconConfig={{\n position: 'right',\n icon: ArrowForwardOutline,\n size: 16\n }}\n />\n);\n\nconst StyledLinkButton = styled(LinkButton)`\n width: 50%;\n margin-right: 12px;\n\n button {\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n border: 1px solid ${({themeColor}) => themeColor};\n color: ${({themeColor}) => themeColor};\n }\n`;\n\nexport const RetakeQuizButton = ({color}) => (\n <StyledLinkButton\n to={(location) => location.pathname}\n themeColor={color}\n type={'ghost'}\n children={'Retake Quiz'}\n iconConfig={{\n position: 'left',\n icon: RefreshOutline,\n size: 16,\n }}\n fixed\n />\n);\n\n\nconst CloseButton = styled(IconButton)`\n height: 56px;\n width: 56px;\n padding: 15px;\n background: rgba(255, 255, 255, 0.1);\n align-self: flex-start;\n z-index: 1;\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n padding: ${({theme}) => theme.layouts.spacing.m};\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n justify-content: flex-start;\n\n svg {\n stroke: ${({theme}) => theme.colors.neutralsPalette.grey};\n width: 24px;\n height: 24px;\n }\n }\n`;\n\nconst CloseIcon = styled(X).attrs(props => ({size: 28, color: 'white'}))``;\n\nexport const ExitQuizButton = ({className, onClick}) => {\n const {goBack} = useHistory();\n\n return (\n <CloseButton\n className={className}\n onClick={onClick || goBack}\n type={'secondary'}\n size={'large'}\n children={<CloseIcon />}\n />\n );\n\n}\n\nconst HomeIcon = styled(Home).attrs(props => ({size: 28, color: 'white'}))``;\n\nexport const HomeButton = ({className, destination='/'}) => {\n const {push} = useHistory();\n\n return (\n <CloseButton\n className={className}\n onClick={() => push(destination)}\n type={'secondary'}\n size={'large'}\n children={<HomeIcon />}\n />\n );\n\n}\n\nconst StyledExhibitButton = styled(Button)`\n box-shadow: none;\n background: ${({theme, themePalette, active}) => active ? themePalette.default : theme.overlays.opacity.light._100};\n margin-left: ${({theme}) => theme.layouts.spacing.s};\n\n &:hover {\n transform: none;\n background: ${({theme, themePalette, active}) => active ? themePalette.hover : theme.overlays.opacity.light._200};\n }\n &:disabled {\n background: ${({theme}) => theme.overlays.opacity.light._100};\n }\n`;\nconst StyledPreviousButton = styled(Button)`\n box-shadow: none;\n background: ${({theme}) => theme.overlays.opacity.light._100};\n margin-right: ${({theme}) => theme.layouts.spacing.s};\n\n &:hover {\n transform: none;\n background: ${({theme}) => theme.overlays.opacity.light._200};\n }\n &:disabled {\n background: ${({theme}) => theme.overlays.opacity.light._100};\n }\n`;\nconst StyledNavButton = styled(Button)`\n box-shadow: none;\n background: ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.surfaceSecondary : theme.colors.neutralsPalette.white};\n margin-right: ${({theme}) => theme.layouts.spacing.s};\n color: ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.neutralsPalette.extraDark : theme.colors.neutralsPalette.dark};\n border: 1px solid ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.borderPrimary : theme.colors.neutralsPalette.light};\n box-shadow: ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.borderPrimary : 'rgb(200 201 206)'} 0px 2px 0px;\n\n &:hover {\n transform: none;\n background: ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.surfaceTertiary : theme.overlays.opacity.light._200};\n }\n &:disabled {\n background: ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.surfacePrimary : theme.overlays.opacity.light._200};\n color: ${({theme}) => theme.colors.neutralsPalette.light};\n ${({theme}) => theme.darkModeEnabled && css`\n opacity: 0.5;\n `}\n &:hover {\n background: ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.surfacePrimary : theme.overlays.opacity.light._200};\n }\n }\n &:last-child {\n margin-right: 0;\n }\n`;\nconst StyledCheckButton = styled(Button)`\n &:disabled {\n background: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n transition: none;\n box-shadow: none;\n }\n`;\nconst StyledUpdatedCheckButton = styled(Button)`\n margin-right: ${({theme}) => theme.layouts.spacing.s};\n`;\nconst StyledBookmarkButton = styled(Button)`\n box-shadow: #c8c9ce 0px 2px 0px;\n background: ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.surfaceSecondary : theme.colors.neutralsPalette.white};\n margin-right: ${({theme}) => theme.layouts.spacing.s};\n color: ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.neutralsPalette.extraDark : theme.colors.neutralsPalette.dark};\n border: 1px solid ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.borderPrimary : theme.colors.neutralsPalette.light};\n box-shadow: ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.borderPrimary : 'rgb(200 201 206)'} 0px 2px 0px;\n\n &:hover {\n background: ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.surfaceTertiary : theme.overlays.opacity.light._200};\n }\n\n svg > path {\n fill: ${({theme, bookmarked}) => bookmarked ? theme.colors.neutralsPalette.dark : 'none'};\n }\n &:last-child {\n margin-right: 0;\n }\n`;\nexport const ExhibitButton = (props) => {\n return (\n <StyledExhibitButton\n {...props}\n />\n );\n}\nexport const PreviousButton = (props) => {\n return (\n <StyledPreviousButton\n {...props}\n iconConfig={{\n position: 'left',\n icon: ArrowBackOutline,\n size: 16,\n }}\n />\n );\n}\nexport const UpdatedPreviousButton = (props) => {\n oldUseHotkeys('left', !props.disabled ? props.onClick : () => true, [props.onClick]);\n\n return (\n <StyledNavButton\n {...props}\n iconConfig={{\n position: 'left',\n icon: ArrowBackOutline,\n size: 20,\n }}\n />\n );\n}\nexport const CheckButton = (props) => {\n useHotkeys(['c', 'enter'], !props.disabled ? props.onClick : () => true, [props.onClick]);\n\n return (\n <StyledCheckButton\n {...props}\n iconConfig={{\n position: 'right',\n icon: CheckmarkOutline,\n size: 16,\n }}\n />\n );\n}\nexport const UpdatedCheckButton = (props) => {\n useHotkeys(['c', 'enter'], !props.disabled && !props.hotkeyDisabled ? props.onClick : () => true, [props.onClick]);\n\n return (\n <StyledUpdatedCheckButton\n {...props}\n />\n );\n}\nexport const NextButton = (props) => {\n return (\n <StyledCheckButton\n {...props}\n iconConfig={{\n position: 'right',\n icon: ArrowForwardOutline,\n size: 16\n }}\n />\n );\n}\nexport const UpdatedNextButton = (props) => {\n oldUseHotkeys('right', !props.disabled ? props.onClick : () => true, [props.onClick]);\n\n return (\n <StyledNavButton\n {...props}\n iconConfig={{\n position: 'right',\n icon: ArrowForwardOutline,\n size: 20\n }}\n />\n );\n}\n\nexport const BookmarkButton = (props) => {\n useHotkeys('b', props.onClick, [props.onClick]);\n\n return (\n <StyledBookmarkButton\n {...props}\n iconConfig={{\n position: 'left',\n icon: Bookmark,\n size: 16\n }}\n />\n );\n}\n\nexport const UpdatedExhibitButton = ({exhibitType, ...props}) => {\n useHotkeys('e', props.onClick, [props.onClick]);\n const icon = exhibitType === 'calculator' ? Calculator : Template;\n\n return (\n <StyledNavButton\n {...props}\n as={Button}\n iconConfig={{\n position: 'left',\n size: 16,\n addSpacing: false,\n icon,\n }}\n />\n );\n}\n","import React, {Fragment, useState} from 'react';\nimport styled from 'styled-components';\nimport {Link, withRouter} from 'react-router-dom';\nimport {useHotkeys} from 'react-hotkeys-hook';\n\nimport {useUserDataContext} from '../../../contexts/UserData';\n\n\nimport {H5} from '../../Typography';\nimport Menu, {MenuIcon, MenuButton} from '../components/Menu/legacy';\nimport {Close} from '../components/Buttons';\nimport Breadcrumbs from '../components/Breadcrumbs';\n\nimport {FlexBox} from '../../Grid';\nimport {ArrowForwardOutline} from '@styled-icons/evaicons-outline/ArrowForwardOutline';\n\nimport {HomeIcon, StudentReviewsIcon} from '../../Branding/Classroom/Icons';\nimport {colors} from '@bootcamp/shared/src/styles/theme';\n\nimport {\n barHeight,\n barHeightMobile,\n Container,\n ContainerBackground,\n Content,\n Left,\n Center,\n Right,\n LoggedIn,\n LoggedOut,\n StyledLink,\n Loader,\n} from '../components';\n\nimport {HomeButton} from '../../QuestionBank/Buttons';\n\nconst TitleWrapper = styled.span`\n display: flex;\n svg {\n width: 180px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n height: 24px;\n }\n\n }\n`;\nconst Locked = styled.span`\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n font-size: ${({theme}) => theme.font.size.smaller};\n line-height: 15px;\n`;\nconst Arrow = styled(ArrowForwardOutline)`\n width: 16px;\n height: 16px;\n margin-left: auto;\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n`;\nconst ListItem = styled(FlexBox)`\n padding: ${({theme}) => theme.layouts.spacing.s};\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n align-items: center;\n border-radius: 100px;\n background: ${({active, theme}) => active ? theme.colors.neutralsPalette.extraLight : theme.colors.neutralsPalette.white};\n min-height: 50px;\n\n &:hover {\n background: ${({hoverColor, theme, locked}) => hoverColor || theme.colors.brandPalette.indigo.light};\n\n ${Arrow} {\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n }\n }\n\n &:last-child {\n margin-bottom: 0;\n }\n`;\nconst ItemLink = styled(H5)`\n display: flex;\n width: 100%;\n align-items: center;\n text-decoration: none;\n`;\nconst Current = styled.span`\n display: ${({active}) => active ? 'inline-block' : 'none'};\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n font-size: ${({theme}) => theme.font.size.smaller};\n line-height: 15px;\n`;\nconst IconWrapper = styled.span`\n background: ${({color, theme}) => color || theme.colors.brandPalette.indigo.dark};\n border-radius: 25px;\n padding: 6px;\n margin-right: ${({theme}) => theme.layouts.spacing.s};\n\n svg {\n width: 20px;\n height: 20px;\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 10px;\n\n svg {\n width: 25px;\n height: 25px;\n }\n }\n`;\nconst ItemNameWrapper = styled.div`\n`;\nconst StyledHomeButton = styled(HomeButton)`\n margin: 0 12px 0;\n align-self: center;\n width: 40px;\n height: 40px;\n padding: 10px;\n`;\nconst StyledRight = styled(Right)`\n flex: 1;\n`;\n\n\nfunction isRouteActive(history, route) {\n const pathname = history.location.pathname.split('/').slice(-1)[0];\n\n return pathname === route;\n}\n\nfunction renderMenuItems(onMenuItemClick, history, config, bootcamp) {\n const includeStudentReviewLink = bootcamp === 'anatomy';\n const listItemConfig = [\n {route: 'home', name: 'Home', icon: <HomeIcon/>, themePalette: {}},\n ...config,\n ...(includeStudentReviewLink ? [{href: 'https://blog.anatomybootcamp.com/student-reviews', name: 'Student Reviews', icon: <StudentReviewsIcon/>, themePalette: colors.brandPalette.purple}] : []),\n ];\n\n return listItemConfig.map(({route, href, themePalette, icon, name, locked, releaseDate}, index) => {\n const active = !href && isRouteActive(history, route);\n const elementProps = locked\n ? {as: 'div', onClick: () => {}}\n : href\n ? {as: 'a', href, target: '_blank', onClick: onMenuItemClick}\n : {as: Link, to: index === 0 ? `/${route}` : `/home/${route}`, onClick: onMenuItemClick}\n\n return (\n <ListItem key={`jump-menu-item-${route}`} hoverColor={themePalette.light} active={active}>\n <ItemLink\n {...elementProps}\n children={\n <Fragment>\n <IconWrapper\n color={themePalette.default}\n children={icon}\n />\n <ItemNameWrapper>\n <div>{name}</div>\n {locked\n ? <Locked children={releaseDate}/>\n : <Current active={active} children={'Current'}/>\n }\n </ItemNameWrapper>\n {!locked && <Arrow/>}\n </Fragment>\n }\n />\n </ListItem>\n )});\n}\n\nconst NavBar = withRouter(({history, themePalette, config, withoutMobileBorder, titleComponent, lockAtDepth, hideMenu=false, withHomeButton=false}) => {\n const {cognitoUser, loading, isUpgraded, trialMembership} = useUserDataContext();\n const [menuOpen, setMenuOpen] = useState(false);\n\n const showLogo = history.location.pathname.split('/').length < 3;\n const loggedIn = !!cognitoUser.username;\n\n useHotkeys('cmd+j', () => setMenuOpen(!menuOpen), [menuOpen]);\n\n return (\n <Container withoutMobileBorder={withoutMobileBorder}>\n <ContainerBackground color={themePalette.dark} />\n <Content>\n <Left>\n {!hideMenu &&\n <MenuButton\n type={'secondary'} size={'small'}\n children={menuOpen ? <Close /> : <MenuIcon />}\n onClick={() => loggedIn && setMenuOpen(!menuOpen)}\n disabled={!loggedIn}\n />\n }\n {!hideMenu &&\n <Menu\n loggedIn={loggedIn}\n isUpgraded={isUpgraded}\n menuOpen={menuOpen}\n setMenuOpen={setMenuOpen}\n barHeight={barHeight}\n barHeightMobile={barHeightMobile}\n renderMenuItems={renderMenuItems}\n themePalette={themePalette}\n config={config}\n />\n }\n {withHomeButton &&\n <StyledHomeButton/>\n }\n <Breadcrumbs history={history} lockAtDepth={lockAtDepth}/>\n </Left>\n {showLogo &&\n <Center>\n <StyledLink to={'/home'}>\n <TitleWrapper>\n {titleComponent}\n </TitleWrapper>\n </StyledLink>\n </Center>\n }\n {loading\n ? <Loader/>\n : <StyledRight showLogo={showLogo} loggedIn={loggedIn}>\n {loggedIn ? <LoggedIn showUpgradeButton={(!isUpgraded || !!trialMembership) && !window.location.pathname.includes('checkout')}/> : <LoggedOut/>}\n </StyledRight>\n }\n </Content>\n </Container>\n )\n});\n\nexport default NavBar;\n","import React from 'react';\nimport styled from 'styled-components';\nimport {GutterRow, GutterInner} from '../Spacing';\nimport {Row} from '../Grid';\n\nconst FooterContainer = styled(GutterRow)`\n height: auto;\n ${GutterInner} {\n border-top: 2px solid ${({theme}) => theme.lightBorderColor};\n padding: 2em 0;\n margin-top: 65px;\n }\n ${GutterInner} > ${Row} {\n justify-content: space-between;\n }\n`\nconst BrandNote = styled.div`\n\n`\nconst GuidesLink = styled.a`\n color: ${({theme}) => theme.lightTextColor};\n`\n\nconst Footer = () => {\n return (\n <FooterContainer>\n <BrandNote>🙂 Create an amazing study experience with Team Bootcamp</BrandNote>\n <GuidesLink href={'https://3.basecamp.com/3951843/buckets/6618722/vaults/2098990294'}>Guides</GuidesLink>\n </FooterContainer>\n );\n}\n\nexport default Footer;\n","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgAnatomyLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 197,\n height: 27,\n viewBox: \"0 0 197 27\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.99428 13.288C2.54628 12.488 2.32228 11.84 2.32228 11.344C2.32228 10.832 2.45828 10.504 2.73028 10.36C3.64228 9.96001 4.89028 9.76001 6.47428 9.76001C8.07428 9.76001 9.20228 10.136 9.85828 10.888C10.5143 11.624 10.8423 12.72 10.8423 14.176V17.968H11.6583C11.9303 17.968 12.1383 18.128 12.2823 18.448C12.4423 18.768 12.5223 19.208 12.5223 19.768C12.5223 20.328 12.3783 20.88 12.0903 21.424C11.8183 21.968 11.4423 22.24 10.9623 22.24C10.0983 22.24 9.40228 22.008 8.87428 21.544C8.63428 21.352 8.45028 21.12 8.32228 20.848C7.58628 21.776 6.44228 22.24 4.89028 22.24C3.72228 22.24 2.73828 21.824 1.93828 20.992C1.13828 20.16 0.738281 19.176 0.738281 18.04C0.738281 15.432 2.29828 14.128 5.41828 14.128H6.73828V13.888C6.73828 13.472 6.66628 13.208 6.52228 13.096C6.39428 12.968 6.08228 12.904 5.58628 12.904C4.97828 12.904 4.11428 13.032 2.99428 13.288ZM4.91428 17.704C4.91428 18.056 5.01028 18.328 5.20228 18.52C5.39428 18.696 5.63428 18.784 5.92228 18.784C6.22628 18.784 6.49828 18.664 6.73828 18.424V16.576H6.06628C5.29828 16.576 4.91428 16.952 4.91428 17.704Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.8967 21.856C18.8967 21.968 18.3207 22.024 17.1687 22.024C15.5687 21.976 14.7687 21.888 14.7687 21.76V13.984H14.1447C13.7287 13.984 13.4567 13.632 13.3287 12.928C13.2967 12.72 13.2807 12.512 13.2807 12.304C13.2807 11.808 13.3767 11.312 13.5687 10.816C13.8567 10.112 14.3047 9.76001 14.9127 9.76001C15.5207 9.76001 16.0647 9.90401 16.5447 10.192C17.0247 10.48 17.3447 10.768 17.5047 11.056C18.5127 10.192 19.7127 9.76001 21.1047 9.76001C22.4967 9.76001 23.5047 10.136 24.1287 10.888C24.7527 11.64 25.0647 12.872 25.0647 14.584V21.784C25.0647 21.976 24.3767 22.072 23.0007 22.072C21.6407 22.072 20.9607 21.976 20.9607 21.784V14.848C20.9607 14.048 20.6807 13.648 20.1207 13.648C19.9607 13.648 19.7367 13.72 19.4487 13.864C19.1607 13.992 18.9767 14.088 18.8967 14.152V21.856Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.6115 13.288C28.1635 12.488 27.9395 11.84 27.9395 11.344C27.9395 10.832 28.0755 10.504 28.3475 10.36C29.2595 9.96001 30.5075 9.76001 32.0915 9.76001C33.6915 9.76001 34.8195 10.136 35.4755 10.888C36.1315 11.624 36.4595 12.72 36.4595 14.176V17.968H37.2755C37.5475 17.968 37.7555 18.128 37.8995 18.448C38.0595 18.768 38.1395 19.208 38.1395 19.768C38.1395 20.328 37.9955 20.88 37.7075 21.424C37.4355 21.968 37.0595 22.24 36.5795 22.24C35.7155 22.24 35.0195 22.008 34.4915 21.544C34.2515 21.352 34.0675 21.12 33.9395 20.848C33.2035 21.776 32.0595 22.24 30.5075 22.24C29.3395 22.24 28.3555 21.824 27.5555 20.992C26.7555 20.16 26.3555 19.176 26.3555 18.04C26.3555 15.432 27.9155 14.128 31.0355 14.128H32.3555V13.888C32.3555 13.472 32.2835 13.208 32.1395 13.096C32.0115 12.968 31.6995 12.904 31.2035 12.904C30.5955 12.904 29.7315 13.032 28.6115 13.288ZM30.5315 17.704C30.5315 18.056 30.6275 18.328 30.8195 18.52C31.0115 18.696 31.2515 18.784 31.5395 18.784C31.8435 18.784 32.1155 18.664 32.3555 18.424V16.576H31.6835C30.9155 16.576 30.5315 16.952 30.5315 17.704Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.0179 21.856C45.0179 22.048 44.3459 22.144 43.0019 22.144C41.4019 22.08 40.6019 21.976 40.6019 21.832V13.336H39.3779C39.0579 13.336 38.8979 12.784 38.8979 11.68C38.8979 11.392 38.9219 11.04 38.9699 10.624C39.0339 10.208 39.1539 10 39.3299 10H40.6019V7.88801C40.6019 7.56801 41.2739 7.40801 42.6179 7.40801C43.9779 7.40801 44.6579 7.53601 44.6579 7.79201V9.32801L44.6819 10H46.7219C46.9939 10 47.1299 10.56 47.1299 11.68C47.1299 12.8 46.9939 13.36 46.7219 13.36H45.0179V21.856Z\",\n fill: \"white\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M49.3658 20.584C48.3738 19.48 47.8778 17.952 47.8778 16C47.8778 14.048 48.3738 12.52 49.3658 11.416C50.3738 10.312 51.7258 9.76001 53.4218 9.76001C55.1178 9.76001 56.4618 10.312 57.4538 11.416C58.4458 12.52 58.9418 14.048 58.9418 16C58.9418 17.952 58.4458 19.48 57.4538 20.584C56.4618 21.688 55.1178 22.24 53.4218 22.24C51.7258 22.24 50.3738 21.688 49.3658 20.584ZM53.4218 13.768C52.5258 13.768 52.0778 14.504 52.0778 15.976C52.0778 17.448 52.5258 18.184 53.4218 18.184C54.3338 18.184 54.7898 17.448 54.7898 15.976C54.7898 14.504 54.3338 13.768 53.4218 13.768Z\",\n fill: \"white\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M71.5105 21.88C71.5105 21.992 70.8225 22.048 69.4465 22.048C68.0865 22.048 67.4065 21.976 67.4065 21.832V14.848C67.4065 14.048 67.1425 13.648 66.6145 13.648C66.3425 13.648 65.9825 13.824 65.5345 14.176V21.856C65.5345 22.016 64.8465 22.096 63.4705 22.096C62.1105 22.096 61.4305 22.008 61.4305 21.832V13.984H60.8305C60.3025 13.984 60.0385 13.432 60.0385 12.328C60.0385 11.832 60.1345 11.328 60.3265 10.816C60.5825 10.112 60.9985 9.76001 61.5745 9.76001C62.1505 9.76001 62.7025 9.91201 63.2305 10.216C63.7745 10.52 64.1025 10.808 64.2145 11.08C65.2065 10.2 66.3025 9.76001 67.5025 9.76001C68.7185 9.76001 69.6945 10.136 70.4305 10.888C71.2945 10.136 72.3345 9.76001 73.5505 9.76001C76.1905 9.76001 77.5105 11.368 77.5105 14.584V21.88C77.5105 21.992 76.8225 22.048 75.4465 22.048C74.0865 22.048 73.4065 21.976 73.4065 21.832V14.848C73.4065 14.048 73.1425 13.648 72.6145 13.648C72.3265 13.648 71.9585 13.824 71.5105 14.176V21.88Z\",\n fill: \"white\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M78.7126 10.12C78.7126 9.94401 79.4406 9.85601 80.8966 9.85601C82.3686 9.85601 83.1286 9.93601 83.1766 10.096L84.9046 15.76L86.5606 10.048C86.6246 9.92001 87.1206 9.85601 88.0486 9.85601C90.1766 9.85601 91.1926 9.96001 91.0966 10.168L85.4566 26.224C85.4406 26.32 85.0006 26.368 84.1366 26.368C83.2886 26.368 82.4966 26.336 81.7606 26.272C81.0246 26.224 80.6726 26.16 80.7046 26.08L82.7926 21.04L78.7126 10.12Z\",\n fill: \"white\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M97.0867 5.27201C97.0867 5.08001 97.7747 4.98401 99.1507 4.98401C100.543 4.98401 101.239 5.08801 101.239 5.29601V9.95201C101.927 9.82401 102.415 9.76001 102.703 9.76001C106.063 9.76001 107.743 11.688 107.743 15.544C107.743 17.688 107.223 19.344 106.183 20.512C105.159 21.664 103.695 22.24 101.791 22.24C99.9027 22.24 98.3347 21.816 97.0867 20.968V5.27201ZM102.031 13.504C101.759 13.504 101.495 13.592 101.239 13.768V18.352C101.463 18.448 101.695 18.496 101.935 18.496C102.191 18.496 102.447 18.4 102.703 18.208C103.151 17.888 103.375 17.144 103.375 15.976C103.375 14.328 102.927 13.504 102.031 13.504Z\",\n fill: \"white\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.467 20.584C109.475 19.48 108.979 17.952 108.979 16C108.979 14.048 109.475 12.52 110.467 11.416C111.475 10.312 112.827 9.76001 114.523 9.76001C116.219 9.76001 117.563 10.312 118.555 11.416C119.547 12.52 120.043 14.048 120.043 16C120.043 17.952 119.547 19.48 118.555 20.584C117.563 21.688 116.219 22.24 114.523 22.24C112.827 22.24 111.475 21.688 110.467 20.584ZM114.523 13.768C113.627 13.768 113.179 14.504 113.179 15.976C113.179 17.448 113.627 18.184 114.523 18.184C115.435 18.184 115.891 17.448 115.891 15.976C115.891 14.504 115.435 13.768 114.523 13.768Z\",\n fill: \"white\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M122.772 20.584C121.78 19.48 121.284 17.952 121.284 16C121.284 14.048 121.78 12.52 122.772 11.416C123.78 10.312 125.132 9.76001 126.828 9.76001C128.524 9.76001 129.868 10.312 130.86 11.416C131.852 12.52 132.348 14.048 132.348 16C132.348 17.952 131.852 19.48 130.86 20.584C129.868 21.688 128.524 22.24 126.828 22.24C125.132 22.24 123.78 21.688 122.772 20.584ZM126.828 13.768C125.932 13.768 125.484 14.504 125.484 15.976C125.484 17.448 125.932 18.184 126.828 18.184C127.74 18.184 128.196 17.448 128.196 15.976C128.196 14.504 127.74 13.768 126.828 13.768Z\",\n fill: \"white\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M139.565 21.856C139.565 22.048 138.893 22.144 137.549 22.144C135.949 22.08 135.149 21.976 135.149 21.832V13.336H133.925C133.605 13.336 133.445 12.784 133.445 11.68C133.445 11.392 133.469 11.04 133.517 10.624C133.581 10.208 133.701 10 133.877 10H135.149V7.88801C135.149 7.56801 135.821 7.40801 137.165 7.40801C138.525 7.40801 139.205 7.53601 139.205 7.79201V9.32801L139.229 10H141.269C141.541 10 141.677 10.56 141.677 11.68C141.677 12.8 141.541 13.36 141.269 13.36H139.565V21.856Z\",\n fill: \"white\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M146.817 16.048C146.817 17.616 147.409 18.4 148.593 18.4C149.361 18.4 150.001 18.248 150.513 17.944C150.753 17.944 150.945 18.36 151.089 19.192C151.249 20.008 151.329 20.568 151.329 20.872C151.329 21.16 151.289 21.352 151.209 21.448C150.361 21.976 149.201 22.24 147.729 22.24C146.257 22.24 145.001 21.696 143.961 20.608C142.937 19.504 142.425 18.008 142.425 16.12C142.425 14.216 142.929 12.68 143.937 11.512C144.961 10.344 146.313 9.76001 147.993 9.76001C149.689 9.76001 150.865 10.168 151.521 10.984C151.665 11.16 151.737 11.424 151.737 11.776C151.737 12.112 151.673 12.528 151.545 13.024C151.257 14.048 150.881 14.64 150.417 14.8C150.353 14.816 150.257 14.824 150.129 14.824C150.017 14.824 149.873 14.728 149.697 14.536C149.073 13.912 148.569 13.6 148.185 13.6C147.817 13.6 147.497 13.792 147.225 14.176C146.953 14.56 146.817 15.184 146.817 16.048Z\",\n fill: \"white\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M154.565 13.288C154.117 12.488 153.893 11.84 153.893 11.344C153.893 10.832 154.029 10.504 154.301 10.36C155.213 9.96001 156.461 9.76001 158.045 9.76001C159.645 9.76001 160.773 10.136 161.429 10.888C162.085 11.624 162.413 12.72 162.413 14.176V17.968H163.229C163.501 17.968 163.709 18.128 163.853 18.448C164.013 18.768 164.093 19.208 164.093 19.768C164.093 20.328 163.949 20.88 163.661 21.424C163.389 21.968 163.013 22.24 162.533 22.24C161.669 22.24 160.973 22.008 160.445 21.544C160.205 21.352 160.021 21.12 159.893 20.848C159.157 21.776 158.013 22.24 156.461 22.24C155.293 22.24 154.309 21.824 153.509 20.992C152.709 20.16 152.309 19.176 152.309 18.04C152.309 15.432 153.869 14.128 156.989 14.128H158.309V13.888C158.309 13.472 158.237 13.208 158.093 13.096C157.965 12.968 157.653 12.904 157.157 12.904C156.549 12.904 155.685 13.032 154.565 13.288ZM156.485 17.704C156.485 18.056 156.581 18.328 156.773 18.52C156.965 18.696 157.205 18.784 157.493 18.784C157.797 18.784 158.069 18.664 158.309 18.424V16.576H157.637C156.869 16.576 156.485 16.952 156.485 17.704Z\",\n fill: \"white\"\n })), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M176.323 21.88C176.323 21.992 175.635 22.048 174.259 22.048C172.899 22.048 172.219 21.976 172.219 21.832V14.848C172.219 14.048 171.955 13.648 171.427 13.648C171.155 13.648 170.795 13.824 170.347 14.176V21.856C170.347 22.016 169.659 22.096 168.283 22.096C166.923 22.096 166.243 22.008 166.243 21.832V13.984H165.643C165.115 13.984 164.851 13.432 164.851 12.328C164.851 11.832 164.947 11.328 165.139 10.816C165.395 10.112 165.811 9.76001 166.387 9.76001C166.963 9.76001 167.515 9.91201 168.043 10.216C168.587 10.52 168.915 10.808 169.027 11.08C170.019 10.2 171.115 9.76001 172.315 9.76001C173.531 9.76001 174.507 10.136 175.243 10.888C176.107 10.136 177.147 9.76001 178.363 9.76001C181.003 9.76001 182.323 11.368 182.323 14.584V21.88C182.323 21.992 181.635 22.048 180.259 22.048C178.899 22.048 178.219 21.976 178.219 21.832V14.848C178.219 14.048 177.955 13.648 177.427 13.648C177.139 13.648 176.771 13.824 176.323 14.176V21.88Z\",\n fill: \"white\"\n })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M189.525 26.368C189.525 26.48 188.837 26.536 187.461 26.536C186.101 26.536 185.421 26.48 185.421 26.368V14.008H184.605C184.221 14.008 183.957 13.656 183.813 12.952C183.765 12.728 183.741 12.44 183.741 12.088C183.741 11.736 183.853 11.32 184.077 10.84C184.397 10.136 184.909 9.78401 185.613 9.78401C186.077 9.78401 186.501 9.89601 186.885 10.12C187.285 10.328 187.557 10.528 187.701 10.72C187.861 10.896 187.941 11 187.941 11.032C189.013 10.2 190.173 9.78401 191.421 9.78401C192.669 9.78401 193.741 10.272 194.637 11.248C195.533 12.208 195.981 13.704 195.981 15.736C195.981 17.752 195.533 19.32 194.637 20.44C193.741 21.544 192.605 22.096 191.229 22.096C190.605 22.096 190.037 22.064 189.525 22V26.368ZM190.509 13.984C190.237 13.984 189.973 14.072 189.717 14.248V18.496C189.989 18.528 190.205 18.544 190.365 18.544C190.541 18.544 190.677 18.544 190.773 18.544C191.429 18.48 191.757 17.64 191.757 16.024C191.757 14.664 191.341 13.984 190.509 13.984Z\",\n fill: \"white\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgAnatomyLogo);\nexport default __webpack_public_path__ + \"static/media/anatomy-logo.2b7647a7.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgChemistryLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 206,\n height: 22,\n viewBox: \"0 0 206 22\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.392 11.088C4.392 12.656 4.984 13.44 6.168 13.44C6.936 13.44 7.576 13.288 8.088 12.984C8.328 12.984 8.52 13.4 8.664 14.232C8.824 15.048 8.904 15.608 8.904 15.912C8.904 16.2 8.864 16.392 8.784 16.488C7.936 17.016 6.776 17.28 5.304 17.28C3.832 17.28 2.576 16.736 1.536 15.648C0.512 14.544 0 13.048 0 11.16C0 9.256 0.504 7.72 1.512 6.552C2.536 5.384 3.888 4.8 5.568 4.8C7.264 4.8 8.44 5.208 9.096 6.024C9.24 6.2 9.312 6.464 9.312 6.816C9.312 7.152 9.248 7.568 9.12 8.064C8.832 9.088 8.456 9.68 7.992 9.84C7.928 9.856 7.832 9.864 7.704 9.864C7.592 9.864 7.448 9.768 7.272 9.576C6.648 8.952 6.144 8.64 5.76 8.64C5.392 8.64 5.072 8.832 4.8 9.216C4.528 9.6 4.392 10.224 4.392 11.088Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.6359 16.872C14.6359 17.016 13.9639 17.088 12.6199 17.088C11.2919 17.088 10.6279 16.976 10.6279 16.752V0.312C10.6279 0.2 10.8759 0.12 11.3719 0.0720005C11.8679 0.0240002 12.2839 0 12.6199 0C13.9639 0 14.6359 0.144 14.6359 0.432V5.232C15.5319 4.96 16.2119 4.824 16.6759 4.824C17.8919 4.824 18.8519 5.152 19.5559 5.808C20.2599 6.448 20.6119 7.648 20.6119 9.408V16.848C20.6119 16.992 19.9879 17.064 18.7399 17.064C17.3319 17.016 16.6279 16.936 16.6279 16.824V9.768C16.6279 8.984 16.3719 8.592 15.8599 8.592C15.5079 8.592 15.0999 8.76 14.6359 9.096V16.872Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.7233 16.392C30.7153 16.984 29.4193 17.28 27.8353 17.28C26.2513 17.28 24.9153 16.744 23.8273 15.672C22.7393 14.584 22.1953 13.088 22.1953 11.184C22.1953 9.264 22.7153 7.72 23.7553 6.552C24.8113 5.384 26.1393 4.8 27.7393 4.8C29.3393 4.8 30.5713 5.208 31.4353 6.024C32.3153 6.84 32.7553 7.832 32.7553 9C32.7553 11.592 31.2673 12.888 28.2913 12.888H26.6353C26.6353 13.368 26.7633 13.704 27.0193 13.896C27.2913 14.072 27.6833 14.16 28.1953 14.16C29.3153 14.16 30.3793 13.904 31.3873 13.392C31.4033 13.376 31.4753 13.488 31.6033 13.728C31.9873 14.416 32.1793 15 32.1793 15.48C32.1793 15.944 32.0273 16.248 31.7233 16.392ZM28.7233 9.456C28.7233 8.784 28.3953 8.448 27.7393 8.448C27.4353 8.448 27.1713 8.544 26.9473 8.736C26.7393 8.912 26.6353 9.176 26.6353 9.528V10.272H27.9313C28.4593 10.272 28.7233 10 28.7233 9.456Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.1952 16.92C45.1952 17.032 44.5072 17.088 43.1312 17.088C41.7712 17.088 41.0912 17.016 41.0912 16.872V9.888C41.0912 9.088 40.8272 8.688 40.2992 8.688C40.0272 8.688 39.6672 8.864 39.2192 9.216V16.896C39.2192 17.056 38.5312 17.136 37.1552 17.136C35.7952 17.136 35.1152 17.048 35.1152 16.872V9.024H34.5152C33.9872 9.024 33.7232 8.472 33.7232 7.368C33.7232 6.872 33.8192 6.368 34.0112 5.856C34.2672 5.152 34.6832 4.8 35.2592 4.8C35.8352 4.8 36.3872 4.952 36.9152 5.256C37.4592 5.56 37.7872 5.848 37.8992 6.12C38.8912 5.24 39.9872 4.8 41.1872 4.8C42.4032 4.8 43.3792 5.176 44.1152 5.928C44.9792 5.176 46.0192 4.8 47.2352 4.8C49.8752 4.8 51.1952 6.408 51.1952 9.624V16.92C51.1952 17.032 50.5072 17.088 49.1312 17.088C47.7712 17.088 47.0912 17.016 47.0912 16.872V9.888C47.0912 9.088 46.8272 8.688 46.2992 8.688C46.0112 8.688 45.6432 8.864 45.1952 9.216V16.92Z\",\n fill: \"white\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M57.6292 16.896C57.6292 17.024 56.8932 17.088 55.4212 17.088C53.9652 17.088 53.2373 17.032 53.2373 16.92V5.136C53.2373 5.024 53.9652 4.968 55.4212 4.968C56.8932 4.968 57.6292 5.016 57.6292 5.112V16.896ZM57.6292 3.696C57.6292 3.808 56.8932 3.864 55.4212 3.864C53.9652 3.864 53.2373 3.816 53.2373 3.72V0.263999C53.2373 0.104 53.9652 0.0239997 55.4212 0.0239997C56.8932 0.0239997 57.6292 0.072 57.6292 0.168001V3.696Z\",\n fill: \"white\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M60.3037 12.72C61.5998 13.504 62.6237 13.896 63.3757 13.896C63.8557 13.896 64.0957 13.728 64.0957 13.392C64.0957 13.152 63.6797 12.84 62.8477 12.456C60.8477 11.64 59.8477 10.304 59.8477 8.448C59.8477 7.264 60.2798 6.36 61.1437 5.736C62.0077 5.112 63.0397 4.8 64.2397 4.8C65.4557 4.8 66.4798 4.928 67.3118 5.184C68.1598 5.44 68.5837 5.776 68.5837 6.192C68.5837 6.544 68.4077 7.008 68.0557 7.584C67.7197 8.16 67.4877 8.472 67.3597 8.52C66.6717 8.136 65.9277 7.944 65.1277 7.944C64.6957 7.944 64.4798 8.096 64.4798 8.4C64.4798 8.592 64.5598 8.76 64.7197 8.904C64.8958 9.032 65.2077 9.2 65.6557 9.408C66.1037 9.6 66.4717 9.776 66.7598 9.936C67.0638 10.096 67.3997 10.32 67.7677 10.608C68.5357 11.216 68.9197 12.008 68.9197 12.984C68.9197 14.264 68.4958 15.304 67.6478 16.104C66.7998 16.888 65.5197 17.28 63.8077 17.28C62.6717 17.28 61.6398 17.088 60.7118 16.704C59.7837 16.32 59.3197 15.792 59.3197 15.12C59.3197 14.672 59.4237 14.2 59.6317 13.704C59.8557 13.208 60.0798 12.88 60.3037 12.72Z\",\n fill: \"white\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M76.1244 16.896C76.1244 17.088 75.4524 17.184 74.1084 17.184C72.5084 17.12 71.7084 17.016 71.7084 16.872V8.376H70.4844C70.1644 8.376 70.0044 7.824 70.0044 6.72C70.0044 6.432 70.0284 6.08 70.0764 5.664C70.1404 5.248 70.2604 5.04 70.4364 5.04H71.7084V2.928C71.7084 2.608 72.3804 2.448 73.7244 2.448C75.0844 2.448 75.7644 2.576 75.7644 2.832V4.368L75.7884 5.04H77.8284C78.1004 5.04 78.2364 5.6 78.2364 6.72C78.2364 7.84 78.1004 8.4 77.8284 8.4H76.1244V16.896Z\",\n fill: \"white\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M84.6964 17.016C84.6964 17.128 83.9684 17.184 82.5124 17.184C81.0564 17.152 80.3284 17.088 80.3284 16.992V9.024H79.6804C79.4244 9.024 79.2164 8.872 79.0564 8.568C78.9124 8.248 78.8404 7.856 78.8404 7.392C78.8404 5.664 79.3524 4.8 80.3764 4.8C81.0964 4.8 81.6964 5.024 82.1764 5.472C82.6564 5.904 82.8964 6.4 82.8964 6.96C83.2324 6.304 83.6804 5.784 84.2404 5.4C84.8164 5 85.4004 4.8 85.9924 4.8C86.9204 4.8 87.4804 5.04 87.6724 5.52C87.7204 5.648 87.7444 5.84 87.7444 6.096C87.7444 6.336 87.6644 6.776 87.5044 7.416C87.3604 8.056 87.2084 8.52 87.0484 8.808C86.8884 9.096 86.7924 9.24 86.7604 9.24C86.7284 9.24 86.5764 9.184 86.3044 9.072C86.0484 8.944 85.8164 8.88 85.6084 8.88C85.0004 8.88 84.6964 9.36 84.6964 10.32V17.016Z\",\n fill: \"white\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M88.116 5.16C88.116 4.984 88.844 4.896 90.3 4.896C91.772 4.896 92.532 4.976 92.58 5.136L94.308 10.8L95.964 5.088C96.028 4.96 96.524 4.896 97.452 4.896C99.58 4.896 100.596 5 100.5 5.208L94.86 21.264C94.844 21.36 94.404 21.408 93.54 21.408C92.692 21.408 91.9 21.376 91.164 21.312C90.428 21.264 90.076 21.2 90.108 21.12L92.196 16.08L88.116 5.16Z\",\n fill: \"white\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M106.49 0.312C106.49 0.12 107.178 0.0239997 108.554 0.0239997C109.946 0.0239997 110.642 0.128 110.642 0.336V4.992C111.33 4.864 111.818 4.8 112.106 4.8C115.466 4.8 117.146 6.728 117.146 10.584C117.146 12.728 116.626 14.384 115.586 15.552C114.562 16.704 113.098 17.28 111.194 17.28C109.306 17.28 107.738 16.856 106.49 16.008V0.312ZM111.434 8.544C111.162 8.544 110.898 8.632 110.642 8.808V13.392C110.866 13.488 111.098 13.536 111.338 13.536C111.594 13.536 111.85 13.44 112.106 13.248C112.554 12.928 112.778 12.184 112.778 11.016C112.778 9.368 112.33 8.544 111.434 8.544Z\",\n fill: \"white\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M119.871 15.624C118.879 14.52 118.383 12.992 118.383 11.04C118.383 9.088 118.879 7.56 119.871 6.456C120.879 5.352 122.231 4.8 123.927 4.8C125.623 4.8 126.967 5.352 127.959 6.456C128.951 7.56 129.447 9.088 129.447 11.04C129.447 12.992 128.951 14.52 127.959 15.624C126.967 16.728 125.623 17.28 123.927 17.28C122.231 17.28 120.879 16.728 119.871 15.624ZM123.927 8.808C123.031 8.808 122.583 9.544 122.583 11.016C122.583 12.488 123.031 13.224 123.927 13.224C124.839 13.224 125.295 12.488 125.295 11.016C125.295 9.544 124.839 8.808 123.927 8.808Z\",\n fill: \"white\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M132.176 15.624C131.184 14.52 130.688 12.992 130.688 11.04C130.688 9.088 131.184 7.56 132.176 6.456C133.184 5.352 134.536 4.8 136.232 4.8C137.928 4.8 139.271 5.352 140.264 6.456C141.256 7.56 141.752 9.088 141.752 11.04C141.752 12.992 141.256 14.52 140.264 15.624C139.271 16.728 137.928 17.28 136.232 17.28C134.536 17.28 133.184 16.728 132.176 15.624ZM136.232 8.808C135.336 8.808 134.888 9.544 134.888 11.016C134.888 12.488 135.336 13.224 136.232 13.224C137.144 13.224 137.6 12.488 137.6 11.016C137.6 9.544 137.144 8.808 136.232 8.808Z\",\n fill: \"white\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M148.968 16.896C148.968 17.088 148.296 17.184 146.952 17.184C145.352 17.12 144.552 17.016 144.552 16.872V8.376H143.328C143.008 8.376 142.848 7.824 142.848 6.72C142.848 6.432 142.872 6.08 142.92 5.664C142.984 5.248 143.104 5.04 143.28 5.04H144.552V2.928C144.552 2.608 145.224 2.448 146.568 2.448C147.928 2.448 148.608 2.576 148.608 2.832V4.368L148.632 5.04H150.672C150.944 5.04 151.08 5.6 151.08 6.72C151.08 7.84 150.944 8.4 150.672 8.4H148.968V16.896Z\",\n fill: \"white\"\n })), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M156.22 11.088C156.22 12.656 156.812 13.44 157.996 13.44C158.764 13.44 159.404 13.288 159.916 12.984C160.156 12.984 160.348 13.4 160.492 14.232C160.652 15.048 160.732 15.608 160.732 15.912C160.732 16.2 160.692 16.392 160.612 16.488C159.764 17.016 158.604 17.28 157.132 17.28C155.66 17.28 154.404 16.736 153.364 15.648C152.34 14.544 151.828 13.048 151.828 11.16C151.828 9.256 152.332 7.72 153.34 6.552C154.364 5.384 155.716 4.8 157.396 4.8C159.092 4.8 160.268 5.208 160.924 6.024C161.068 6.2 161.14 6.464 161.14 6.816C161.14 7.152 161.076 7.568 160.948 8.064C160.66 9.088 160.284 9.68 159.82 9.84C159.756 9.856 159.66 9.864 159.532 9.864C159.42 9.864 159.276 9.768 159.1 9.576C158.476 8.952 157.972 8.64 157.588 8.64C157.22 8.64 156.9 8.832 156.628 9.216C156.356 9.6 156.22 10.224 156.22 11.088Z\",\n fill: \"white\"\n })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M163.968 8.328C163.52 7.528 163.296 6.88 163.296 6.384C163.296 5.872 163.432 5.544 163.704 5.4C164.616 5 165.864 4.8 167.448 4.8C169.048 4.8 170.176 5.176 170.832 5.928C171.488 6.664 171.816 7.76 171.816 9.216V13.008H172.632C172.904 13.008 173.112 13.168 173.256 13.488C173.416 13.808 173.496 14.248 173.496 14.808C173.496 15.368 173.352 15.92 173.064 16.464C172.792 17.008 172.416 17.28 171.936 17.28C171.072 17.28 170.376 17.048 169.848 16.584C169.608 16.392 169.424 16.16 169.296 15.888C168.56 16.816 167.416 17.28 165.864 17.28C164.696 17.28 163.712 16.864 162.912 16.032C162.112 15.2 161.712 14.216 161.712 13.08C161.712 10.472 163.272 9.168 166.392 9.168H167.712V8.928C167.712 8.512 167.64 8.248 167.496 8.136C167.368 8.008 167.056 7.944 166.56 7.944C165.952 7.944 165.088 8.072 163.968 8.328ZM165.888 12.744C165.888 13.096 165.984 13.368 166.176 13.56C166.368 13.736 166.608 13.824 166.896 13.824C167.2 13.824 167.472 13.704 167.712 13.464V11.616H167.04C166.272 11.616 165.888 11.992 165.888 12.744Z\",\n fill: \"white\"\n })), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M185.726 16.92C185.726 17.032 185.038 17.088 183.662 17.088C182.302 17.088 181.622 17.016 181.622 16.872V9.888C181.622 9.088 181.358 8.688 180.83 8.688C180.558 8.688 180.198 8.864 179.75 9.216V16.896C179.75 17.056 179.062 17.136 177.686 17.136C176.326 17.136 175.646 17.048 175.646 16.872V9.024H175.046C174.518 9.024 174.254 8.472 174.254 7.368C174.254 6.872 174.35 6.368 174.542 5.856C174.798 5.152 175.214 4.8 175.79 4.8C176.366 4.8 176.918 4.952 177.446 5.256C177.99 5.56 178.318 5.848 178.43 6.12C179.422 5.24 180.518 4.8 181.718 4.8C182.934 4.8 183.91 5.176 184.646 5.928C185.51 5.176 186.55 4.8 187.766 4.8C190.406 4.8 191.726 6.408 191.726 9.624V16.92C191.726 17.032 191.038 17.088 189.662 17.088C188.302 17.088 187.622 17.016 187.622 16.872V9.888C187.622 9.088 187.358 8.688 186.83 8.688C186.542 8.688 186.174 8.864 185.726 9.216V16.92Z\",\n fill: \"white\"\n })), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M198.929 21.408C198.929 21.52 198.241 21.576 196.865 21.576C195.505 21.576 194.825 21.52 194.825 21.408V9.048H194.009C193.625 9.048 193.361 8.696 193.217 7.992C193.169 7.768 193.145 7.48 193.145 7.128C193.145 6.776 193.257 6.36 193.481 5.88C193.801 5.176 194.313 4.824 195.017 4.824C195.481 4.824 195.905 4.936 196.289 5.16C196.689 5.368 196.961 5.568 197.105 5.76C197.265 5.936 197.345 6.04 197.345 6.072C198.417 5.24 199.577 4.824 200.825 4.824C202.073 4.824 203.145 5.312 204.041 6.288C204.937 7.248 205.385 8.744 205.385 10.776C205.385 12.792 204.937 14.36 204.041 15.48C203.145 16.584 202.009 17.136 200.633 17.136C200.009 17.136 199.441 17.104 198.929 17.04V21.408ZM199.913 9.024C199.641 9.024 199.377 9.112 199.121 9.288V13.536C199.393 13.568 199.609 13.584 199.769 13.584C199.945 13.584 200.081 13.584 200.177 13.584C200.833 13.52 201.161 12.68 201.161 11.064C201.161 9.704 200.745 9.024 199.913 9.024Z\",\n fill: \"white\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgChemistryLogo);\nexport default __webpack_public_path__ + \"static/media/chemistry-logo.0f75441c.svg\";\nexport { ForwardRef as ReactComponent };","import React, {useState, useEffect} from 'react';\nimport {Route, Redirect} from 'react-router-dom';\n\nimport NavBar from '../../../components/NavBar/Admin';\nimport TbcNavBar from '../../../components/NavBar/Tbc';\n\nimport Footer from '../../../components/Footer';\nimport {FullPageSpinner} from '../../../components/Branding';\n\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nimport {colors} from '@bootcamp/shared/src/styles/theme';\n\nimport styled from 'styled-components';\n\nimport chemistryConfig, {getChemistryConfigObject} from '@bootcamp/shared/src/config/chemistry';\nimport anatomyConfig, {getAnatomyConfigObject} from '@bootcamp/shared/src/config/anatomy';\n\nimport {ReactComponent as AnatomyTitle} from '@bootcamp/shared/src/assets/svg/anatomy-logo.svg';\nimport {ReactComponent as ChemistryTitle} from '@bootcamp/shared/src/assets/svg/chemistry-logo.svg';\nimport moment from 'moment';\nimport {getStreakDetails} from '@bootcamp/shared/src/util'\nconst anatomyRouteStyles = [];\n\nconst Fade = styled.div`\n width: 100%;\n height: 50vh;\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.17) 100%);\n`;\nconst RouteContainer = styled.div`\n width: 100%;\n min-height: calc(100% - 224px); // this was making my life easier but may not need it\n`;\n\nconst NavBarRouteContainer = styled.div`\n width: 100%;\n min-height: 100vh;\n background: ${({theme, color}) => color || theme.colors.brandPalette.indigo.default};\n padding: ${({withoutPadding}) => withoutPadding ? '72px' : '136px'} ${({theme}) => theme.layouts.spacing.xxl} ${({theme}) => theme.layouts.spacing.xxl};\n\n ${({theme: {mediaQueries}}) => mediaQueries.tablet} {\n padding: ${({withoutPadding, theme}) => withoutPadding ? '56px' : '88px'} ${({theme}) => theme.layouts.spacing.m} 0px;\n }\n`;\n\nconst UpgradeRouteContainer = styled.div`\n width: 100%;\n min-height: ${({fullHeight}) => fullHeight ? '100vh' : 'auto'};\n height: ${({fullHeight}) => fullHeight ? 'auto' : '100%;'};\n background: ${({theme, color}) => color || theme.colors.brandPalette.indigo.default};\n padding: ${({fullHeight}) => fullHeight ? '144px' : '0px'} 0px ${({theme, fullHeight}) => fullHeight ? theme.layouts.spacing.xxl : '0px'};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n padding: ${({fullHeight}) => fullHeight ? '80px' : '0px'} 0px ${({theme, fullHeight}) => fullHeight ? theme.layouts.spacing.xl : '0px'};\n }\n`;\n\nconst RouteBackground = styled.div`\n position: relative;\n width: 100%;\n height: 100%;\n background: ${({theme, color}) => color || theme.colors.brandPalette.indigo.dark};\n ${({theme}) => theme.mediaQueries.tablet} {\n height: auto;\n }\n`;\n\nconst Loader = styled(FullPageSpinner)`\n background: ${({background}) => background};\n`;\n\nfunction checkRoutePermissions(user, allow, bootcamp, userModel) {\n try {\n const groups = user.signInUserSession.accessToken.payload[\"cognito:groups\"];\n const isFreeTrial = ['med-school', 'dental-school'].includes(bootcamp) && userModel?.createdAt && moment().diff(moment(userModel?.createdAt), 'hours', true) <= 72\n const authenticated = !!allow.find(group => groups.includes(group)) || groups.includes('Admin') || isFreeTrial || window.location.pathname.includes('generators/angle-ranking');\n\n if (bootcamp === 'anatomy' && groups.includes('MedSchoolBootcamp') && !groups.includes('AnatomyBootcamp')) {\n const pathArgs = window.location.pathname.split('/');\n pathArgs[1] = 'med-school';\n window.location.pathname = pathArgs.join('/')\n }\n return {authenticated, redirectTo: {pathname: `/${bootcamp}/upgrade`}}\n } catch (error) {\n return {authenticated: false}\n }\n}\n\nconst ProtectedRoute = ({allow, routeProps, color}) => {\n // TODO update this to use cognitoUser from state and make sure that anytime we update the user (logout / checkout / membership expiry)\n // we call refreshSession\n const {refreshSession, loading, cognitoUser, bootcamp, setBootcamp, userModel, searchUserInteractions, saveUserInteraction} = useUserDataContext();\n\n const defaultAuthState = {\n authenticated: null,\n redirectTo: {\n pathname: '/auth',\n search: `#/signin?redirectTo=${routeProps.location.pathname}${routeProps.location.search}`,\n },\n };\n\n const [{authenticated, redirectTo}, setAuthState] = useState(defaultAuthState);\n const {location, computedMatch} = routeProps;\n const routeBootcamp = computedMatch?.params?.bootcamp;\n\n const authenticate = async () => {\n const user = cognitoUser;\n\n if (!user) return setAuthState(prevState => ({...prevState, authenticated: false}));\n\n const {streak, longestStreak, date: streakDate} = searchUserInteractions(`Streak-DWU-${bootcamp}`)\n const {today, streakCompletedToday, streakActive} = getStreakDetails(streak, streakDate);\n if (!streakCompletedToday) {\n const streakData = {\n streak: streak > 0 && streakActive ? streak + 1 : 1,\n date: today.format('M/D/YYYY'),\n longestStreak: streak + 1 > longestStreak && streakActive ? streak + 1 : (longestStreak || streak + 1)\n }\n saveUserInteraction(`Streak-DWU-${bootcamp}`, JSON.stringify(streakData))\n }\n\n const permissionProps = checkRoutePermissions(user, allow, bootcamp, userModel);\n setAuthState(prevState => ({...prevState, ...permissionProps}));\n };\n\n useEffect(() => {\n // authenticate after loading UserData\n !loading && authenticate();\n }, [loading]);\n\n useEffect(() => {\n if (!routeBootcamp) return;\n\n setBootcamp(routeBootcamp);\n }, [routeBootcamp]);\n\n useEffect(() => {\n // refresh session when path changes IFF we're not currently loading UserData,\n // i.e. on initial page load\n !loading && authenticated && refreshSession();\n }, [location.pathname]);\n\n if (!allow) return <Route {...routeProps} />;\n\n\n if ((!!bootcamp && !!routeBootcamp) && bootcamp !== routeBootcamp) return null;\n\n return authenticated !== false\n ? <Route {...routeProps}/>\n : <Redirect to={redirectTo} />\n};\n\nconst TBCRoute = ({allow, color, ...routeProps}) => {\n const isProtected = !!allow || (Array.isArray(allow) && !!allow.length);\n\n // if we aren't enforcing any auth on this via the allow prop, return the route\n // TLDR; if a TBCRoute isn't passed an allow prop, it is a public route\n return isProtected\n ? <ProtectedRoute allow={allow} routeProps={routeProps} color={color}/>\n : <Route {...routeProps}/>\n};\n\nconst AnatomyRoute = (props) => {\n const routeBlacklist = [];\n const freeRoutes = ['bank-1', 'lesson-1', 'lesson-2', 'lecture-1', 'practical-1'];\n const {themePalette} = anatomyRouteStyles.find(({route}) => props.computedMatch.url.match(route)) || {themePalette: colors.brandPalette.indigo};\n\n const {classroom, chapter, lesson} = props.computedMatch.params;\n const depth = props.location.pathname.split('/').length;\n\n const isContentRoute = props.path.match('home');\n const isValidRoute = (depth < 5 && props.path.match('home/review')) || (depth < 6 && getAnatomyConfigObject(classroom, chapter, lesson)) || (lesson && lesson.match('lesson-1'));\n const isLockedRoute = !!routeBlacklist.find(route => route === classroom);\n\n if (isContentRoute && props.path !== '/home' && (isLockedRoute || !isValidRoute)) return <Redirect to={'/not-found'}/>;\n if (chapter === 'practicals' && !lesson) return <Redirect to={`/home/${classroom}`} />\n\n const allow = classroom === 'physiology' ? ['Free'] : !!freeRoutes.find(route => route === lesson) ? ['Free'] : props.allow;\n\n return (\n <RouteBackground color={themePalette.dark}>\n <TBCRoute {...props} allow={allow} color={themePalette.dark}/>\n {!lesson && <Fade/>}\n </RouteBackground>\n );\n};\n\nconst TbcRootRoute = ({themePalette, ...props}) => {\n const {DEFAULT_USER_ID, loading} = useUserDataContext();\n\n if (!loading && DEFAULT_USER_ID) return <Redirect to={'/home'}/>;\n\n return loading\n ? <Loader active={true} background={colors.brandPalette.indigo.dark}/>\n : <Route themePalette={themePalette} {...props}/>\n};\n\nconst OCRoute = ({themePalette, noFade, ...props}) => {\n const freeRoutes = ['bank-1', 'lesson-1', 'lesson-2'];\n\n const {classroom, chapter, contentSlug} = props.computedMatch.params;\n const isContentRoute = props.path.match('home');\n const depth = props.location.pathname.split('/').length;\n const isValidRoute = (depth < 5 && props.path.match('home/review')) || (depth < 6 && getChemistryConfigObject(classroom, chapter, contentSlug));\n\n if (isContentRoute && props.path !== '/home' && !isValidRoute) return <Redirect to={'/not-found'}/>;\n\n const allow = !!freeRoutes.find(route => route === contentSlug) ? ['Free'] : props.allow;\n\n return (\n <RouteBackground color={themePalette.dark}>\n <TBCRoute {...props} allow={allow} color={themePalette.dark}/>\n {noFade ? null : <Fade/>}\n </RouteBackground>\n );\n};\n\nconst AdminRoute = props => <TBCRoute allow={['Admin']} {...props}/>;\n\nconst AdminNavBarRoute = (props) => ([\n <NavBar key={'nav-bar'} activeRoute={props.path}/>,\n <RouteContainer key={'route-container'}>\n <AdminRoute {...props}/>\n </RouteContainer>,\n <Footer key={'footer'}/>\n]);\n\nconst OCNavBarRoute = ({location, match, themePalette, ...props}) => {\n return ([\n <TbcNavBar key={'nav-bar'} themePalette={themePalette} config={chemistryConfig} titleComponent={<ChemistryTitle/>}/>,\n <NavBarRouteContainer key={'route-container'} color={themePalette.dark}>\n <OCRoute themePalette={themePalette} location={location} match={match} {...props}/>\n </NavBarRouteContainer>\n ]);\n};\n\nconst AnatomyNavBarRoute = ({location, match, ...props}) => {\n const {themePalette} = anatomyRouteStyles.find(({route}) => location.pathname.match(route)) || {themePalette: colors.brandPalette.indigo};\n\n return ([\n <TbcNavBar key={'nav-bar'} themePalette={themePalette} config={anatomyConfig} titleComponent={<AnatomyTitle/>}/>,\n <NavBarRouteContainer key={'route-container'} color={themePalette.dark}>\n <AnatomyRoute location={location} match={match} {...props}/>\n </NavBarRouteContainer>\n ]);\n};\n\nconst UpgradeRoute = ({location, match, hideMenu, withHomeButton, fullHeight=true, ...props}) => {\n const {themePalette} = anatomyRouteStyles.find(({route}) => location.pathname.match(route)) || {themePalette: colors.brandPalette.royal};\n\n return ([\n <TbcNavBar key={'nav-bar'} themePalette={themePalette} config={anatomyConfig} hideMenu={hideMenu} withHomeButton={withHomeButton}/>,\n <UpgradeRouteContainer key={'route-container'} color={themePalette.dark} fullHeight={fullHeight}>\n <TBCRoute location={location} match={match} {...props}/>\n </UpgradeRouteContainer>\n ]);\n};\n\nexport {AdminRoute, AdminNavBarRoute, TbcRootRoute, TBCRoute, AnatomyRoute, RouteBackground, AnatomyNavBarRoute, OCNavBarRoute, OCRoute, UpgradeRoute, Fade, ProtectedRoute};\n","var _path, _path2;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgBootcampWhiteTextLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 380,\n height: 66,\n viewBox: \"0 0 380 66\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M33 0C14.7746 0 0 14.7746 0 33C0 51.2254 14.7746 66 33 66C51.2254 66 66 51.2254 66 33C66 14.7746 51.2254 0 33 0ZM33 6.6C18.4197 6.6 6.6 18.4197 6.6 33C6.6 47.5803 18.4197 59.4 33 59.4C47.5803 59.4 59.4 47.5803 59.4 33C59.4 18.4197 47.5803 6.6 33 6.6ZM52.8 33C52.8 43.9352 43.9352 52.8 33 52.8C22.0648 52.8 13.2 43.9352 13.2 33C13.2 22.0648 22.0648 13.2 33 13.2C43.9352 13.2 52.8 22.0648 52.8 33ZM33.0352 41.6852L41.7815 46.2139L40.1313 36.5802L47.1448 29.7461L37.4083 28.3463L33.0352 19.536L28.7445 28.3463L19.008 29.7461L26.0216 36.5802L24.3713 46.2139L33.0352 41.6852Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M94.9321 48C101.028 48 104.244 44.16 104.244 39.36C104.244 35.328 101.508 32.016 98.1001 31.488C101.124 30.864 103.62 28.176 103.62 24.144C103.62 19.872 100.5 15.984 94.4041 15.984H77.5561V48H94.9321ZM92.9161 28.8H84.3721V21.84H92.9161C95.2201 21.84 96.6601 23.328 96.6601 25.344C96.6601 27.36 95.2201 28.8 92.9161 28.8ZM93.1561 42.096H84.3721V34.656H93.1561C95.8441 34.656 97.2841 36.384 97.2841 38.4C97.2841 40.704 95.7481 42.096 93.1561 42.096ZM118.072 48.576C125.752 48.576 130.36 43.008 130.36 36.384C130.36 29.808 125.752 24.24 118.072 24.24C110.44 24.24 105.832 29.808 105.832 36.384C105.832 43.008 110.44 48.576 118.072 48.576ZM118.072 43.152C114.28 43.152 112.168 40.032 112.168 36.384C112.168 32.784 114.28 29.664 118.072 29.664C121.864 29.664 124.024 32.784 124.024 36.384C124.024 40.032 121.864 43.152 118.072 43.152ZM143.715 48.576C151.395 48.576 156.003 43.008 156.003 36.384C156.003 29.808 151.395 24.24 143.715 24.24C136.083 24.24 131.475 29.808 131.475 36.384C131.475 43.008 136.083 48.576 143.715 48.576ZM143.715 43.152C139.923 43.152 137.811 40.032 137.811 36.384C137.811 32.784 139.923 29.664 143.715 29.664C147.507 29.664 149.667 32.784 149.667 36.384C149.667 40.032 147.507 43.152 143.715 43.152ZM166.381 48.576C168.925 48.576 170.557 47.904 171.469 47.088L170.173 42.48C169.837 42.816 168.973 43.152 168.061 43.152C166.717 43.152 165.949 42.048 165.949 40.608V30.144H170.653V24.816H165.949V18.48H159.805V24.816H155.965V30.144H159.805V42.24C159.805 46.368 162.109 48.576 166.381 48.576ZM183.704 48.576C188.456 48.576 191.336 46.512 192.872 44.352L188.888 40.656C187.784 42.192 186.104 43.152 183.992 43.152C180.296 43.152 177.704 40.416 177.704 36.384C177.704 32.352 180.296 29.664 183.992 29.664C186.104 29.664 187.784 30.528 188.888 32.16L192.872 28.416C191.336 26.304 188.456 24.24 183.704 24.24C176.552 24.24 171.416 29.28 171.416 36.384C171.416 43.536 176.552 48.576 183.704 48.576ZM214.953 48V33.024C214.953 26.352 210.105 24.24 204.825 24.24C201.177 24.24 197.529 25.392 194.697 27.888L197.001 31.968C198.969 30.144 201.273 29.232 203.769 29.232C206.841 29.232 208.857 30.768 208.857 33.12V36.24C207.321 34.416 204.585 33.408 201.513 33.408C197.817 33.408 193.449 35.472 193.449 40.896C193.449 46.08 197.817 48.576 201.513 48.576C204.537 48.576 207.273 47.472 208.857 45.6V48H214.953ZM203.961 44.448C201.561 44.448 199.593 43.2 199.593 41.04C199.593 38.784 201.561 37.536 203.961 37.536C205.929 37.536 207.849 38.208 208.857 39.552V42.432C207.849 43.776 205.929 44.448 203.961 44.448ZM253.976 48V31.248C253.976 26.496 251.432 24.24 247.16 24.24C243.608 24.24 240.536 26.352 239.192 28.464C238.328 25.824 236.168 24.24 232.76 24.24C229.208 24.24 226.136 26.448 225.176 27.84V24.816H219.08V48H225.176V32.4C226.088 31.104 227.864 29.664 229.976 29.664C232.472 29.664 233.432 31.2 233.432 33.36V48H239.576V32.352C240.44 31.104 242.216 29.664 244.376 29.664C246.872 29.664 247.832 31.2 247.832 33.36V48H253.976ZM271.283 48.576C277.235 48.576 281.555 44.112 281.555 36.384C281.555 28.656 277.235 24.24 271.283 24.24C268.451 24.24 265.907 25.488 264.131 27.744V24.816H258.035V56.832H264.131V45.024C266.003 47.424 268.547 48.576 271.283 48.576ZM269.363 43.152C267.395 43.152 265.139 41.952 264.131 40.512V32.304C265.139 30.816 267.395 29.664 269.363 29.664C272.867 29.664 275.219 32.4 275.219 36.384C275.219 40.416 272.867 43.152 269.363 43.152ZM287.031 48.528C289.143 48.528 290.919 46.752 290.919 44.64C290.919 42.528 289.143 40.752 287.031 40.752C284.919 40.752 283.143 42.528 283.143 44.64C283.143 46.752 284.919 48.528 287.031 48.528ZM304.885 48.576C309.637 48.576 312.517 46.512 314.053 44.352L310.069 40.656C308.965 42.192 307.285 43.152 305.173 43.152C301.477 43.152 298.885 40.416 298.885 36.384C298.885 32.352 301.477 29.664 305.173 29.664C307.285 29.664 308.965 30.528 310.069 32.16L314.053 28.416C312.517 26.304 309.637 24.24 304.885 24.24C297.733 24.24 292.597 29.28 292.597 36.384C292.597 43.536 297.733 48.576 304.885 48.576ZM326.87 48.576C334.55 48.576 339.158 43.008 339.158 36.384C339.158 29.808 334.55 24.24 326.87 24.24C319.238 24.24 314.63 29.808 314.63 36.384C314.63 43.008 319.238 48.576 326.87 48.576ZM326.87 43.152C323.078 43.152 320.966 40.032 320.966 36.384C320.966 32.784 323.078 29.664 326.87 29.664C330.662 29.664 332.822 32.784 332.822 36.384C332.822 40.032 330.662 43.152 326.87 43.152ZM376.657 48V31.248C376.657 26.496 374.113 24.24 369.841 24.24C366.289 24.24 363.217 26.352 361.873 28.464C361.009 25.824 358.849 24.24 355.441 24.24C351.889 24.24 348.817 26.448 347.857 27.84V24.816H341.761V48H347.857V32.4C348.769 31.104 350.545 29.664 352.657 29.664C355.153 29.664 356.113 31.2 356.113 33.36V48H362.257V32.352C363.121 31.104 364.897 29.664 367.057 29.664C369.553 29.664 370.513 31.2 370.513 33.36V48H376.657Z\",\n fill: \"white\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBootcampWhiteTextLogo);\nexport default __webpack_public_path__ + \"static/media/bootcamp_white_text_logo.c3ec9cf3.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport styled from 'styled-components';\n\nimport {ChevronDoubleLeft as Collapse} from '@styled-icons/fluentui-system-filled/ChevronDoubleLeft';\nimport IconButton from './IconButton';\n\n\nconst ToggleSidebarButton = styled(IconButton)`\n height: 56px;\n width: 56px;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n height: 40px;\n width: 40px;\n padding: 10px;\n }\n`;\nconst ToggleSidebarIcon = styled(Collapse).attrs(props => ({size: 24}))`\n color: white;\n ${({theme}) => theme.mediaQueries.mobileL} {\n height: 20px;\n width: 20px;\n }\n ${({right}) => right && `\n transform: rotate(180deg);\n `}\n`;\n\nexport const ToggleSidebar = ({className, showingSidebar, onClick, right}) => (\n <ToggleSidebarButton\n className={className}\n type={'secondary'}\n size={'large'}\n children={<ToggleSidebarIcon right={right} />}\n showingSidebar={showingSidebar}\n onClick={onClick}\n right={right}\n />\n);","import React from 'react';\nimport styled from 'styled-components';\nimport {H1, Body2} from '@bootcamp/web/src/components/Typography';\nimport {ReactComponent as BootcampLogo} from '@bootcamp/shared/src/assets/svg/bootcamp_white_text_logo.svg';\n\nconst StyledBootcampLogo = styled(BootcampLogo)`\n max-width: 250px;\n margin-right: 10px;\n`;\n\nconst Background = styled.div`\n background: ${({theme}) => theme.colors.brandPalette.royal.gradient};\n min-height: 100vh;\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n`;\n\nconst Heading = styled(H1)`\n color: white;\n display: flex;\n align-items: center;\n`;\n\nconst Status = styled(Body2)`\n color: white;\n`;\n\nconst Maintenance = ({adminConfig}) => {\n return (\n <Background>\n <Heading><StyledBootcampLogo /> Status Page</Heading>\n {adminConfig?.statusHTML ? <Status dangerouslySetInnerHTML={{__html: adminConfig.statusHTML}}/> : (\n <Status>\n Bootcamp.com is undergoing maintenance. Pardon our dust!\n </Status>\n )}\n </Background>\n )\n}\n\nexport default Maintenance;\n","\nexport function formatRoute(route, parentRoute, grandparentRoute, greatGrandparentRoute) {\n\n if (route === 'keyholes' || route === 'tfe' || route === 'pattern-folding') {\n return `${greatGrandparentRoute}/${grandparentRoute}`;\n }\n\n if (route?.startsWith('?')) {\n return route.substring(1);\n }\n if (grandparentRoute === 'qbank-collection') {\n // we want the url to look like /\n const url = [greatGrandparentRoute, grandparentRoute, parentRoute]\n .filter(string => !!string)\n .join('/');\n\n return `${url}`;\n }\n\n if (grandparentRoute === 'identify-structures' || grandparentRoute === 'lecture-style-questions') {\n // we want the url to look like /\n const search = `?subject=${route}`;\n\n const url = [greatGrandparentRoute, grandparentRoute, parentRoute]\n .filter(string => !!string)\n .join('/');\n\n return `${url}${search}`;\n }\n\n return [greatGrandparentRoute, grandparentRoute, parentRoute, route]\n .filter(string => !!string)\n .join('/');\n}\n\nexport function indexContent(bootcamp, content, contentTypeName, parentName, parentRoute, grandparentRoute, greatGrandparentRoute, activeMembershipGroups) {\n return content.reduce((acc, {id, testId, name, route, content: contentTypeContent, keywords, video, allow, index, type}) => {\n\n if (allow && !allow.some(group => activeMembershipGroups.includes(group))) {\n return acc;\n }\n // list of classrooms to ignore\n const ignoredSubjects = ['Mental Dental Review Videos'];\n if (['Downloads', 'Flashcards'].includes(contentTypeName) || ignoredSubjects.includes(parentName)) return acc;\n\n return ({\n ...acc,\n [`${name} ${parentName} ${keywords || ''} ${contentTypeName} ${type}`]: {\n id,\n testId,\n index,\n name,\n video,\n type,\n contentTypeName,\n route: `/${bootcamp}/${formatRoute(route, parentRoute, grandparentRoute, greatGrandparentRoute)}`,\n subject: parentName,\n },\n ...(contentTypeContent ? indexContent(bootcamp, contentTypeContent, name, parentName, route, parentRoute, grandparentRoute, greatGrandparentRoute, activeMembershipGroups) : {})\n })}, {})\n}\n\nexport function indexContentTypes(bootcamp, contentTypes, parentName, parentRoute, activeMembershipGroups) {\n return contentTypes\n .reduce((acc, {name, route, content}) => ({\n ...acc,\n ...indexContent(bootcamp, content, name, parentName, route, parentRoute, '', activeMembershipGroups)\n }), {})\n}\n\n// TODO move this into export function passed into config search\nexport function indexConfig(bootcamp, config, activeMembershipGroups) {\n const colorMap = config.reduce((acc, classroom) => ({...acc, [classroom.name]: classroom.themePalette}), {});\n\n return config\n .filter(classroom => !classroom.comingSoon)\n .reduce((acc, {id, testId, name, route, contentTypes, index}) => ({\n ...acc,\n [name]: {\n id,\n testId,\n name,\n route: `/${bootcamp}/${route}`,\n themePalette: colorMap[name],\n index,\n },\n ...indexContentTypes(bootcamp, contentTypes, name, route, activeMembershipGroups),\n }), {});\n}\n\nexport async function expandConfig(config, onFinished, fetchTest) {\n console.log('this is running');\n const expandedSearchConfig = await Object.keys(config).reduce(async (acc, configKey) => {\n if (configKey === 'classrooms') {\n return {\n ...(await acc),\n classrooms: await config['classrooms'].reduce(async (acc, classroom) => {\n return [\n ...(await acc),\n {\n ...classroom,\n contentTypes: await classroom.contentTypes.reduce(async (acc, contentType) => {\n return [\n ...(await acc),\n {\n ...contentType,\n content: await contentType.content.reduce(async (acc, content) => {\n if (!content.shouldExpand && !['Videos', 'Neurology Videos', 'GI Videos', 'Pulmonary Videos', 'Cardiology Videos', 'Psychiatry Videos', 'Biostatistics Videos', 'Heme & Onc Videos', 'Nephrology Videos', 'Dermatology Videos', 'Immunology Videos', 'Dr. Roviso\\'s Videos', 'Bio Videos', 'A&P Videos', `Mike's Videos`, `PAT Academy`, `RC Academy`, `QR Academy`].includes(content.name)) {\n return [\n ...(await acc),\n content\n ]\n }\n return [\n ...(await acc),\n {\n ...content,\n content: await content.content.reduce(async (acc, content) => {\n const test = await fetchTest(content.id);\n return [\n ...await (acc),\n {\n ...content,\n content: await test.blockConnections?.items\n ?.filter(({testBlock}) => testBlock.type !== 'startBlock' && testBlock.type !== 'endBlock')\n ?.map(({index, testBlock}) => ({\n name: testBlock.title,\n keywords: testBlock.components?.find(({renderType}) => renderType === 'keywords')?.contents || '',\n video: testBlock.components?.find(({renderType}) => renderType === 'video')?.contents || '',\n route: `?${classroom.route}/videos/${content.route}?index=${index}`,\n type: testBlock?.type,\n id: test.id,\n index,\n }))\n }\n ]\n }, [])\n }\n ]\n }, [])\n }\n ]\n }, [])\n }\n ]\n }, [])\n }\n }\n return {\n ...(await acc),\n [configKey]: config[configKey]\n }\n }, {});\n\n onFinished(expandedSearchConfig);\n return expandedSearchConfig;\n}\n","import React, {createContext, useContext, useState, useEffect, useMemo, useCallback} from 'react';\nimport styled from 'styled-components';\n// import AnatomyConfig from '@bootcamp/shared/src/config/anatomy';\nimport ChemistryConfig from '@bootcamp/shared/src/config/updatedChemistryConfig';\n// import DATConfig from '@bootcamp/shared/src/config/dat';\n// import OATConfig from '@bootcamp/shared/src/config/oat';\n// import INBDEConfig from '@bootcamp/shared/src/config/inbde';\n// import DSBConfig from '@bootcamp/shared/src/config/dsb';\n// import MSBConfig from '@bootcamp/shared/src/config/msb';\n// import MCATConfig from '@bootcamp/web/src/bootcamps/mcat/config';\n\nimport {useUserDataContext} from '../contexts/UserData';\nimport Storage from '@aws-amplify/storage';\n\nimport {useAsync} from '@bootcamp/web/src/hooks';\nimport {colors} from '@bootcamp/shared/src/styles/theme';\nimport {FullPageSpinner} from '@bootcamp/web/src/components/Branding';\nimport Maintenance from '@bootcamp/web/src/components/Maintenance';\nimport {asyncFetchWithS3Cache, getBootcampConfig} from '@bootcamp/shared/src/util';\nimport {getQuestionData} from '@bootcamp/shared/src/requests';\nimport {indexConfig, expandConfig} from '@bootcamp/shared/src/config/search';\nimport moment from 'moment';\n\nconst BootcampConfigContext = createContext();\n\nconst Loader = styled(FullPageSpinner)`\n background: ${({theme}) => theme.colors.brandPalette.royal.dark};\n`\nconst BootcampConfigProvider = ({children}) => {\n const [bootcampConfigLoaded, setBootcampConfigLoaded] = useState();\n const {bootcamp, userModel} = useUserDataContext();\n const [expandedSearchConfig, setExpandedSearchConfig] = useState(null)\n\n const configFetch = useCallback(async () => {\n let result = await getBootcampConfig(bootcamp)\n\n result.classrooms.forEach(classroom => {\n if (typeof classroom.themePalette === 'string') {\n const themeKey = classroom.newThemePalette || classroom.themePalette;\n classroom.themePaletteString = themeKey;\n\n const theme = ['oat', 'dat'].includes(bootcamp) ? colors.brandPalette[themeKey] : colors.brandPalette.royal;\n classroom.themePalette = theme;\n }\n });\n setBootcampConfigLoaded(bootcamp);\n return result\n }, [bootcamp])\n\n const {value: config} = useAsync(configFetch);\n\n useEffect(() => {\n if (!config || !bootcamp || ['nclex', 'mcat'].includes(bootcamp)) return;\n\n const storageKey = `json/${bootcamp}/lambdaExpandedConfig.json`;\n\n const asyncExpandConfig = async () => {\n try {\n const expandedConfig = await fetch(`https://testtube6dca237224ff44ca973cd2a6dfb779e3-tbc.s3.amazonaws.com/public/${storageKey}`, {cache: \"no-store\"});\n const expandedJSON = await expandedConfig.json();\n expandedJSON.classrooms.forEach(classroom => {\n if (typeof classroom.themePalette === 'string') {\n const themeKey = classroom.newThemePalette || classroom.themePalette;\n classroom.themePalette = colors.brandPalette[themeKey];\n }\n });\n setExpandedSearchConfig(expandedJSON);\n } catch (e) {\n console.log(e);\n }\n }\n asyncExpandConfig();\n }, [config]);\n\n const activeMembershipGroups = useMemo(() => userModel?.memberships?.items?.reduce((acc, membership) => (\n membership.status === 'active' ? [...acc, ...membership.groups] : acc\n ), []) || [], [userModel])\n\n const indexedConfig = useMemo(() => expandedSearchConfig ? indexConfig(bootcamp, expandedSearchConfig.classrooms, activeMembershipGroups) : {}, [expandedSearchConfig, activeMembershipGroups]);\n\n // load question counts\n const getQuestionCounts = useCallback(async() => getQuestionData(bootcamp), [bootcamp]);\n const {value: questionCounts} = useAsync(getQuestionCounts);\n\n\n const adminConfigFetch = useCallback(async () => {\n const fetchResult = await fetch(`https://testtube6dca237224ff44ca973cd2a6dfb779e3-tbc.s3.amazonaws.com/read-only/adminConfig.json`, {cache: \"no-store\"});\n return fetchResult.json();\n }, [])\n const {value: adminConfig} = useAsync(adminConfigFetch);\n\n if (adminConfig?.status === 'maintenance') {\n return <Maintenance adminConfig={adminConfig} />\n }\n\n return <BootcampConfigContext.Provider value={{config, indexedConfig, questionCounts}} children={!config || bootcampConfigLoaded !== bootcamp ? <Loader color=\"white\" active /> : children} />\n}\n\nconst useBootcampConfigContext = () => useContext(BootcampConfigContext);\n\nexport {BootcampConfigContext, BootcampConfigProvider, useBootcampConfigContext};\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgGridIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.99998 3.6001C5.36346 3.6001 4.75301 3.85295 4.30292 4.30304C3.85283 4.75313 3.59998 5.36358 3.59998 6.0001V8.4001C3.59998 9.03662 3.85283 9.64707 4.30292 10.0972C4.75301 10.5472 5.36346 10.8001 5.99998 10.8001H8.39998C9.0365 10.8001 9.64694 10.5472 10.097 10.0972C10.5471 9.64707 10.8 9.03662 10.8 8.4001V6.0001C10.8 5.36358 10.5471 4.75313 10.097 4.30304C9.64694 3.85295 9.0365 3.6001 8.39998 3.6001H5.99998ZM5.99998 13.2001C5.36346 13.2001 4.75301 13.453 4.30292 13.903C3.85283 14.3531 3.59998 14.9636 3.59998 15.6001V18.0001C3.59998 18.6366 3.85283 19.2471 4.30292 19.6972C4.75301 20.1472 5.36346 20.4001 5.99998 20.4001H8.39998C9.0365 20.4001 9.64694 20.1472 10.097 19.6972C10.5471 19.2471 10.8 18.6366 10.8 18.0001V15.6001C10.8 14.9636 10.5471 14.3531 10.097 13.903C9.64694 13.453 9.0365 13.2001 8.39998 13.2001H5.99998ZM13.2 6.0001C13.2 5.36358 13.4528 4.75313 13.9029 4.30304C14.353 3.85295 14.9635 3.6001 15.6 3.6001H18C18.6365 3.6001 19.2469 3.85295 19.697 4.30304C20.1471 4.75313 20.4 5.36358 20.4 6.0001V8.4001C20.4 9.03662 20.1471 9.64707 19.697 10.0972C19.2469 10.5472 18.6365 10.8001 18 10.8001H15.6C14.9635 10.8001 14.353 10.5472 13.9029 10.0972C13.4528 9.64707 13.2 9.03662 13.2 8.4001V6.0001ZM13.2 15.6001C13.2 14.9636 13.4528 14.3531 13.9029 13.903C14.353 13.453 14.9635 13.2001 15.6 13.2001H18C18.6365 13.2001 19.2469 13.453 19.697 13.903C20.1471 14.3531 20.4 14.9636 20.4 15.6001V18.0001C20.4 18.6366 20.1471 19.2471 19.697 19.6972C19.2469 20.1472 18.6365 20.4001 18 20.4001H15.6C14.9635 20.4001 14.353 20.1472 13.9029 19.6972C13.4528 19.2471 13.2 18.6366 13.2 18.0001V15.6001Z\",\n fill: \"white\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgGridIcon);\nexport default __webpack_public_path__ + \"static/media/grid-icon.e275445a.svg\";\nexport { ForwardRef as ReactComponent };","import React, {useState, useEffect} from 'react';\nimport styled, {css} from 'styled-components';\nimport {Link, withRouter} from 'react-router-dom';\n\nimport {H4} from '../../../components/Typography';\n\nimport {Home} from '@styled-icons/fluentui-system-filled/Home';\nimport {DocumentText} from '@styled-icons/fluentui-system-filled/DocumentText';\nimport {HatGraduation as AcademicCap} from '@styled-icons/fluentui-system-filled/HatGraduation';\nimport {ChatMultiple} from '@styled-icons/fluentui-system-filled/ChatMultiple';\nimport {Search} from '@styled-icons/fluentui-system-filled/Search';\nimport {DocumentBulletListMultiple as ChartSquareBar} from '@styled-icons/fluentui-system-filled/DocumentBulletListMultiple'\n\nimport {Heart} from '@styled-icons/fluentui-system-filled/Heart';\nimport {Body} from '@styled-icons/boxicons-regular/Body';\nimport {Star} from '@styled-icons/fluentui-system-filled/Star';\nimport {ThumbLike} from '@styled-icons/fluentui-system-filled/ThumbLike';\nimport {Lightbulb as TargetArrow} from '@styled-icons/fluentui-system-filled/Lightbulb';\nimport {Stethoscope} from '@styled-icons/fluentui-system-regular/Stethoscope';\nimport {Stack} from '@styled-icons/fluentui-system-filled/Stack';\nimport {Lightbulb} from '@styled-icons/fluentui-system-filled/Lightbulb';\nimport {CalendarLtr} from '@styled-icons/fluentui-system-filled/CalendarLtr';\nimport {PlayCircle} from '@styled-icons/fluentui-system-filled/PlayCircle'\nimport {DocumentArrowDown} from '@styled-icons/fluentui-system-filled/DocumentArrowDown'\nimport {BriefcaseMedical} from '@styled-icons/fluentui-system-filled/BriefcaseMedical'\nimport {People} from '@styled-icons/fluentui-system-filled/People'\nimport {DocumentBulletListMultiple} from '@styled-icons/fluentui-system-filled/DocumentBulletListMultiple'\nimport {QuestionCircle} from '@styled-icons/fluentui-system-filled/QuestionCircle';\nimport {DataHistogram} from '@styled-icons/fluentui-system-filled/DataHistogram';\nimport {TargetArrow as Target} from '@styled-icons/fluentui-system-filled/TargetArrow';\nimport {Book} from '@styled-icons/fluentui-system-filled/Book';\nimport {Laptop} from '@styled-icons/fluentui-system-filled/Laptop';\nimport {TagMultiple} from '@styled-icons/fluentui-system-filled/TagMultiple';\nimport {ClipboardTask} from '@styled-icons/fluentui-system-filled/ClipboardTask';\nimport {ArrowUpRight} from '@styled-icons/fluentui-system-filled/ArrowUpRight';\nimport {ReactComponent as Badge} from '@bootcamp/shared/src/assets/svg/badge.svg';\nimport {Notepad} from '@styled-icons/fluentui-system-filled/Notepad';\n\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\n\nimport {IntercomAPI} from 'react-intercom';\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {useModalContext} from '../../../contexts/Modal';\nimport {OpenIndicator} from '@bootcamp/web/src/components/Branding';\n\nconst Section = styled.div`\n // border-bottom: 1px solid ${({theme}) => theme.overlays.opacity.light._100};\n padding: ${({theme}) => theme.layouts.spacing.s} 0px;\n\n // &:first-child {\n // margin-top: ${({index}) => index === 0 ? '0' : '4px'};\n // }\n`;\nconst StyledOpenInNew = styled(ArrowUpRight)`\n margin-left: auto;\n margin-right: 0px;\n min-height: 16px !important;\n min-width: 16px !important;\n`;\n\nconst LinkRowContainer = styled.div`\n border-radius: 8px;\n padding: ${({theme}) => theme.layouts.spacing.ms};\n color: ${({theme}) => theme.overlays.opacity.light._400};\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-start;\n text-decoration: none;\n user-select: none;\n height: 42px;\n margin-bottom: 0px;\n cursor: pointer;\n ${StyledOpenInNew} {\n display: none;\n }\n &:last-child {\n margin-bottom: 0px;\n }\n\n &:hover {\n background: ${({theme}) => theme.overlays.opacity.light._50};\n color: white;\n ${StyledOpenInNew} {\n display: block;\n }\n }\n svg {\n min-width: 20px;\n min-height: 20px;\n }\n\n ${({isActive}) => isActive && css`\n background: ${({theme}) => theme.overlays.opacity.light._50};\n\n ${Name} {\n font-weight: bold;\n color: white;\n }\n\n svg {\n color: white;\n }\n `}\n ${({comingSoon}) => comingSoon && css`\n opacity: .25;\n &:hover {\n opacity: .45;\n background: none;\n cursor: default;\n }\n `}\n`;\n\nconst Name = styled(H4)`\n color: ${({theme}) => theme.overlays.opacity.light._400};\n line-height: normal;\n margin-left: 10px;\n font-weight: normal;\n font-size: 16px;\n line-height: 16px;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n color: inherit;\n`;\n\nconst StyledBadge = styled(Badge)`\n width: 16px;\n height: 16px;\n margin-left: auto;\n\n path {\n fill: ${({theme}) => theme.overlays.opacity.light._400};\n }\n`;\n\n\nconst LinkRow = withRouter(({location, name, route, href, Icon, onClick, comingSoon, locked}) => {\n const isActive = name === 'Home' ? location.pathname === route : location.pathname.startsWith(route);\n\n if (comingSoon) {\n return (\n <LinkRowContainer key={`sidebar-link-${name}`} comingSoon>\n {Icon && <Icon size={20} />}\n <Name title={name} children={name} />\n {<StyledBadge/>}\n </LinkRowContainer>\n )\n }\n\n if (onClick) {\n return (\n <LinkRowContainer key={`sidebar-link-${name}`} onClick={onClick}>\n {Icon && <Icon size={20} />}\n <Name title={name} children={name} />\n {locked && <StyledBadge/>}\n </LinkRowContainer>\n )\n }\n\n\n if (href) {\n return (\n <LinkRowContainer key={`sidebar-link-${name}`} as={'a'} href={href} target={'_blank'}>\n {Icon && <Icon size={20} />}\n <Name title={name} children={name} />\n <StyledOpenInNew color=\"rgba(255, 255, 255, .5)\" size={16} />\n {locked && <StyledBadge/>}\n </LinkRowContainer>\n )\n }\n\n return (\n <LinkRowContainer key={`sidebar-link-${name}`} as={Link} to={route} isActive={isActive}>\n {Icon && <Icon size={20} />}\n <Name title={name} children={name} />\n {locked && <StyledBadge/>}\n </LinkRowContainer>\n )\n});\n\nconst LinksContainer = styled.div`\n padding: 0 ${({theme}) => theme.layouts.spacing.m};\n`;\n\nconst FolderContainer = styled.div`\n margin: 0px;\n margin-bottom: 4px;\n`;\n\nconst FolderHeading = styled(LinkRowContainer)`\n cursor: pointer;\n`;\n\nconst FolderBody = styled.div`\n padding-left: 20px;\n`;\nconst StoreIcon = styled.img`\n &:first-child {\n margin-right: 4px;\n }\n width: 50%;\n`;\nconst IconWrapper = styled.div`\n display: flex;\n`;\n\nconst MobileAppStoreIcons = () => {\n return (\n <IconWrapper>\n <StoreIcon onClick={() => window.open('https://apps.apple.com/us/app/bootcamp-mobile/id1569082154', '_blank')} src={require('@bootcamp/shared/src/assets/images/appstore.png').default}/>\n <StoreIcon onClick={() => window.open('https://play.google.com/store/apps/details?id=com.bootcampmobile&hl=en_US', '_blank')} src={require('@bootcamp/shared/src/assets/images/playstore.png').default}/>\n </IconWrapper>\n );\n}\n\n\nconst LinkFolder = ({title, config, icon}) => {\n const savedState = JSON.parse(window.localStorage.getItem(`linkFolder-${title}-state`));\n\n const [open, setOpen] = useState(savedState);\n\n const isActive = config.some(({name, route}) => name === 'Home' ? window.location.pathname === route : window.location.pathname.startsWith(route));\n\n useEffect(() => {\n if (isActive) {\n setOpen(true);\n window.localStorage.setItem(`linkFolder-${title}-state`, true);\n }\n }, [isActive]);\n\n return (\n <FolderContainer>\n <FolderHeading\n isActive={!open && isActive}\n onClick={() => {\n setOpen(!open)\n window.localStorage.setItem(`linkFolder-${title}-state`, !open);\n }}>\n {icon}\n <Name title={title} children={title}/>\n <OpenIndicator size={20} open={open} />\n </FolderHeading>\n {open && <FolderBody children={config.map(LinkRow)} />}\n </FolderContainer>\n )\n}\n\nconst Links = props => {\n const {config} = useBootcampConfigContext();\n const {isUpgraded, bootcamp} = useUserDataContext();\n const {classrooms} = config;\n\n const oatLinks = [\n [\n {\n name: 'Home',\n route: `/${bootcamp}`,\n Icon: Home,\n },\n ],\n [\n {\n component: (\n <LinkFolder\n key={'subjects'}\n title={'Subjects'}\n icon={<AcademicCap size={20} />}\n config={classrooms.map(({route, icon, name}) => ({route: `/${bootcamp}/${route}`, name}))}\n />\n )\n },\n {\n name: 'Full Length Tests',\n route: `/${bootcamp}/full-length`,\n Icon: DocumentText,\n },\n ],\n [\n {\n name: 'Previous Tests',\n route: `/${bootcamp}/past-test-results`,\n Icon: ChartSquareBar,\n },\n\n isUpgraded && {\n name: 'Tagged Questions',\n route: `/${bootcamp}/tagged-questions`,\n Icon: TagMultiple\n },\n ],\n [\n {\n name: 'Study Schedule',\n route: `/${bootcamp}/study-schedule`,\n Icon: CalendarLtr,\n },\n {\n name: 'Study Strategy',\n href: 'https://www.bootcamp.com/oat/blog',\n Icon: TargetArrow,\n },\n ],\n [\n {\n name: 'Study Group',\n href: 'https://www.facebook.com/groups/oatbootcamp',\n Icon: People,\n },\n {\n name: 'After the OAT',\n href: 'https://www.bootcamp.com/oat/after-the-oat',\n Icon: Heart,\n },\n {\n name: 'FAQs',\n route: `/${bootcamp}/faqs`,\n Icon: QuestionCircle,\n },\n {\n name: 'Contact',\n onClick: () => IntercomAPI('showNewMessage'),\n Icon: ChatMultiple,\n },\n {\n name: '',\n onClick: () => {},\n Icon: MobileAppStoreIcons\n },\n ]\n ];\n const datLinks = [\n [\n {\n name: 'Home',\n route: `/${bootcamp}`,\n Icon: Home,\n },\n ],\n [\n {\n component: (\n <LinkFolder\n key={'subjects'}\n title={'Subjects'}\n icon={<AcademicCap size={20} />}\n config={classrooms.filter(({hideOnHome}) => !hideOnHome).map(({route, icon, name}) => ({route: `/${bootcamp}/${route}`, name}))}\n />\n )\n },\n {\n name: 'Full Length Tests',\n route: `/${bootcamp}/full-length`,\n Icon: Laptop,\n },\n ],\n [\n {\n name: 'Previous Tests',\n route: `/${bootcamp}/past-test-results`,\n Icon: ChartSquareBar,\n },\n {\n name: 'Performance',\n route: `/${bootcamp}/performance`,\n Icon: DataHistogram,\n },\n isUpgraded && {\n name: 'Tagged Questions',\n route: `/${bootcamp}/tagged-questions`,\n Icon: TagMultiple\n },\n isUpgraded && {\n name: 'Search Questions',\n route: `/${bootcamp}/search`,\n Icon: Search,\n },\n {\n name: 'Crash Courses',\n href: 'https://bootcamp.com/dat/crash-courses',\n Icon: PlayCircle,\n },\n ],\n [\n // {\n // name: 'Study Guide',\n // href: 'https://bootcamp.com/dat/aris-study-guide-for-dat-domination',\n // Icon: Notepad,\n // },\n {\n name: 'Study Schedule',\n route: `/${bootcamp}/study-schedule`,\n Icon: CalendarLtr,\n },\n {\n name: 'Study Strategy',\n href: 'https://www.bootcamp.com/dat/blog',\n Icon: TargetArrow,\n },\n {\n name: 'Success Stories',\n href: 'https://www.bootcamp.com/dat/success-stories',\n Icon: Star,\n },\n {\n name: 'Application Services',\n route: `/${bootcamp}/application-services`,\n Icon: ClipboardTask,\n },\n ],\n [\n {\n name: 'Study Group',\n href: 'https://www.facebook.com/groups/datbootcamp',\n Icon: People,\n },\n {\n name: 'After the DAT',\n href: 'https://www.bootcamp.com/dat/after-the-dat',\n Icon: Heart,\n },\n {\n name: 'FAQs',\n route: `/${bootcamp}/faqs`,\n Icon: QuestionCircle,\n },\n {\n name: 'Contact',\n onClick: () => IntercomAPI('showNewMessage'),\n Icon: ChatMultiple,\n },\n {\n name: '',\n onClick: () => {},\n Icon: MobileAppStoreIcons\n },\n ],\n ];\n const inbdeLinks = [\n [\n {\n name: 'Home',\n route: `/${bootcamp}`,\n Icon: Home,\n },\n ],\n [\n {\n component: (\n <LinkFolder\n key={'subjects'}\n title={'Subjects'}\n icon={<AcademicCap size={20} />}\n config={classrooms.filter(({route}) => route !== 'review-videos' && route !== 'simulation-exam').map(({route, icon, name, comingSoon}) => ({route: `/${bootcamp}/${route}`, name, comingSoon}))}\n />\n )\n },\n {\n name: 'Simulation Exam',\n route: `/${bootcamp}/simulation-exam`,\n Icon: ClipboardTask\n },\n {\n name: 'Mental Dental Videos',\n route: `/${bootcamp}/review-videos`,\n Icon: PlayCircle,\n },\n {\n name: 'Cheat Sheets',\n route: `/${bootcamp}/cheat-sheets`,\n Icon: DocumentArrowDown,\n },\n ],\n [\n {\n name: 'Previous Tests',\n route: `/${bootcamp}/previous-tests`,\n Icon: ChartSquareBar\n },\n {\n name: 'Performance',\n route: `/${bootcamp}/performance`,\n Icon: DataHistogram,\n },\n isUpgraded && {\n name: 'Tagged Questions',\n route: `/${bootcamp}/tagged-questions`,\n Icon: TagMultiple\n },\n isUpgraded && {\n name: 'Search Questions',\n route: `/${bootcamp}/search`,\n Icon: Search,\n },\n ],\n [\n {\n name: 'Study Schedule',\n route: `/${bootcamp}/study-schedule`,\n Icon: CalendarLtr,\n },\n ],\n [\n {\n name: 'Study Group',\n href: 'https://www.facebook.com/groups/inbdebootcamp', // TODO bootcamp agnosticism\n Icon: People,\n },\n {\n name: 'After the INBDE',\n href: 'https://www.bootcamp.com/inbde/after-the-inbde',\n Icon: Heart,\n },\n {\n name: 'FAQs',\n route: `/${bootcamp}/faqs`,\n Icon: QuestionCircle,\n },\n {\n name: 'Contact',\n onClick: () => IntercomAPI('showNewMessage'),\n Icon: ChatMultiple,\n },\n {\n name: '',\n onClick: () => {},\n Icon: MobileAppStoreIcons\n },\n ]\n ];\n const msbLinks = [\n [\n {\n name: 'Home',\n route: `/${bootcamp}`,\n Icon: Home,\n },\n ],\n [\n {\n component: (\n <LinkFolder\n key={'step-1'}\n title={'Step 1 - Preclinical'}\n icon={<Stethoscope size={20} />}\n config={classrooms.filter(({route, section}) => section === 'step1' && route !== 'review-videos').map(({route, icon, name, comingSoon}) => ({route: `/${bootcamp}/${route}`, name, comingSoon}))}\n />\n )\n },\n {\n component: (\n <LinkFolder\n key={'courses'}\n title={'Anatomy Bootcamp'}\n icon={<Body size={20} />}\n config={classrooms.filter(({route, section}) => section !== 'step1' && route !== 'review-videos').map(({route, icon, name, comingSoon}) => ({route: `/${bootcamp}/${route}`, name, comingSoon}))}\n />\n )\n },\n ],\n [\n isUpgraded && {\n name: 'Previous Tests',\n route: `/${bootcamp}/previous-tests`,\n Icon: ChartSquareBar\n },\n isUpgraded && {\n name: 'Self Assessment',\n route: `/${bootcamp}/self-assessment`,\n Icon: ClipboardTask\n },\n {\n name: 'Performance',\n route: `/${bootcamp}/performance`,\n Icon: DataHistogram\n },\n isUpgraded && {\n name: 'Tagged Questions',\n route: `/${bootcamp}/tagged-questions`,\n Icon: TagMultiple\n },\n ],\n [\n {\n name: 'Study Schedule',\n route: `/${bootcamp}/study-schedule`,\n Icon: CalendarLtr,\n },\n {\n name: 'Anki Deck',\n href: `https://bootcamp.com/blog/med-school-bootcamp-anki-deck`,\n Icon: Stack,\n },\n {\n name: 'Question of the Day',\n href: `https://bootcamp.com/med-school/usmle-step-1-question-of-the-day`,\n Icon: Lightbulb,\n },\n {\n name: 'Student Reviews',\n href: 'https://bootcamp.com/med-school/student-reviews',\n Icon: ThumbLike,\n },\n ],\n [\n {\n name: 'Study Group',\n href: 'https://www.reddit.com/r/step1',\n Icon: People,\n },\n {\n name: 'After Step 1',\n href: 'https://bootcamp.com/med-school/after-step-1 ',\n Icon: Heart,\n },\n {\n name: 'FAQs',\n route: `/${bootcamp}/faqs`,\n Icon: QuestionCircle,\n },\n {\n name: 'Contact',\n onClick: () => IntercomAPI('showNewMessage'),\n Icon: ChatMultiple,\n },\n {\n name: '',\n onClick: () => {},\n Icon: MobileAppStoreIcons\n },\n ]\n ];\n\n const mcatLinks = [\n [\n {\n name: 'Home',\n route: `/${bootcamp}`,\n Icon: Home,\n },\n\n ],\n // {\n // component: (\n // <LinkFolder\n // key={'subjects'}\n // title={'Subjects'}\n // icon={<AcademicCap size={20} />}\n // config={ }\n // />\n // )\n // },\n // [\n // ],\n [],\n [],\n [\n {\n name: 'CARS Passages',\n route: `/${bootcamp}/cars-passages`,\n Icon: Book,\n },\n {\n name: 'CARS Practice Tests',\n route: `/${bootcamp}/cars-practice-tests`,\n Icon: Target,\n },\n {\n name: 'AAMC Explanations',\n route: `/${bootcamp}/aamc-explanations`,\n Icon: PlayCircle,\n },\n // ...classrooms.filter(({testing}) => !testing).map(({route, icon, name, comingSoon}) => ({route: `/${bootcamp}/${route}`, name, comingSoon}))\n // isUpgraded && {\n // name: 'Previous Tests',\n // route: `/${bootcamp}/previous-tests`,\n // Icon: ChartSquareBar\n // },\n ],\n // [\n // isUpgraded && {\n // name: 'Tagged Questions',\n // route: `/${bootcamp}/tagged-questions`,\n // Icon: TagMultiple\n // },\n // ],\n [\n {\n name: 'Study Group',\n href: 'https://www.reddit.com/r/mcat',\n Icon: People,\n },\n {\n name: 'FAQs',\n route: `/${bootcamp}/faqs`,\n Icon: QuestionCircle,\n },\n {\n name: 'Contact',\n onClick: () => IntercomAPI('showNewMessage'),\n Icon: ChatMultiple,\n },\n {\n name: 'After the MCAT',\n href: 'https://bootcamp.com/mcat/after-the-mcat',\n Icon: Heart,\n },\n {\n name: 'CARS Tracker Tool',\n href: 'https://docs.google.com/spreadsheets/d/1MDycTnUU4bfa-cnULh9pFDRf6k0l8GDE3Ncdz0eBlqs/edit?gid=2115042206#gid=2115042206',\n Icon: DataHistogram,\n },\n // {\n // name: '',\n // onClick: () => {},\n // Icon: MobileAppStoreIcons\n // },\n ]\n ];\n\n const dsbLinks = [\n [\n {\n name: 'Home',\n route: `/${bootcamp}`,\n Icon: Home,\n },\n ],\n [\n {\n component: (\n <LinkFolder\n key={'courses'}\n title={'Anatomy'}\n icon={<Body size={20} />}\n config={classrooms.filter(({route, section}) => section !== 'step1' && route !== 'review-videos').map(({route, icon, name, comingSoon}) => ({route: `/${bootcamp}/${route}`, name, comingSoon}))}\n />\n )\n },\n ],\n [\n isUpgraded && {\n name: 'Tagged Questions',\n route: `/${bootcamp}/tagged-questions`,\n Icon: TagMultiple\n },\n ],\n [\n {\n name: 'Study Group',\n href: 'https://www.facebook.com/groups/301028890595392',\n Icon: People,\n },\n {\n name: 'FAQs',\n route: `/${bootcamp}/faqs`,\n Icon: QuestionCircle,\n },\n {\n name: 'Contact',\n onClick: () => IntercomAPI('showNewMessage'),\n Icon: ChatMultiple,\n },\n {\n name: '',\n onClick: () => {},\n Icon: MobileAppStoreIcons\n },\n ]\n ];\n\n const anatomyLinks = [\n [\n {\n name: 'Home',\n route: `/${bootcamp}`,\n Icon: Home,\n },\n {\n component: (\n <LinkFolder\n key={'courses'}\n title={'Courses'}\n icon={<AcademicCap size={20} />}\n config={classrooms.filter(({route}) => route !== 'review-videos').map(({route, icon, name, comingSoon}) => ({route: `/${bootcamp}/${route}`, name, comingSoon}))}\n />\n )\n }\n ],\n [\n isUpgraded && {\n name: 'Tagged Questions',\n route: `/${bootcamp}/tagged-questions`,\n Icon: TagMultiple\n },\n {\n name: 'Previous Tests',\n route: `/${bootcamp}/previous-tests`,\n Icon: ChartSquareBar\n },\n ],\n [\n {\n name: 'Study Group',\n href: 'https://www.tiktok.com/@medschoolbootcamp', // TODO bootcamp agnosticism\n Icon: People,\n },\n {\n name: 'FAQs',\n route: `/${bootcamp}/faqs`,\n Icon: QuestionCircle,\n },\n {\n name: 'Contact',\n onClick: () => IntercomAPI('showNewMessage'),\n Icon: ChatMultiple,\n },\n {\n name: '',\n onClick: () => {},\n Icon: MobileAppStoreIcons\n },\n ]\n ];\n\n const chemistryLinks = [\n [\n {\n name: 'Home',\n route: `/${bootcamp}`,\n Icon: Home,\n },\n {\n component: (\n <LinkFolder\n key={'courses'}\n title={'Courses'}\n icon={<AcademicCap size={20} />}\n config={classrooms.filter(({route}) => route !== 'review-videos').map(({route, icon, name, comingSoon}) => ({route: `/${bootcamp}/${route}`, name, comingSoon}))}\n />\n )\n },\n ],\n [\n isUpgraded && {\n name: 'Tagged Questions',\n route: `/${bootcamp}/tagged-questions`,\n Icon: TagMultiple\n },\n ],\n [\n {\n name: 'FAQs',\n route: `/${bootcamp}/faqs`,\n Icon: QuestionCircle,\n },\n {\n name: 'Contact',\n onClick: () => IntercomAPI('showNewMessage'),\n Icon: ChatMultiple,\n },\n {\n name: '',\n onClick: () => {},\n Icon: MobileAppStoreIcons\n },\n ]\n ];\n\n const nclexLinks = [\n [\n {\n name: 'Home',\n route: `/${bootcamp}`,\n Icon: Home,\n },\n ],\n [\n {\n name: 'Case Studies',\n route: `/${bootcamp}/next-gen-cases`,\n Icon: BriefcaseMedical,\n },\n {\n name: 'Standalone Questions',\n route: `/${bootcamp}/next-gen-standalone`,\n Icon: Stethoscope,\n },\n {\n name: 'Readiness Exams',\n route: `/${bootcamp}/next-gen-readiness-exams`,\n Icon: Target,\n },\n {\n name: 'Cheat Sheets',\n route: `/${bootcamp}/cheat-sheets`,\n Icon: DocumentArrowDown,\n },\n ],\n [\n {\n name: 'Previous Tests',\n route: `/${bootcamp}/previous-tests`,\n Icon: DocumentBulletListMultiple\n },\n {\n name: 'Performance',\n route: `/${bootcamp}/performance`,\n Icon: DataHistogram\n },\n isUpgraded && {\n name: 'Tagged Questions',\n route: `/${bootcamp}/tagged-questions`,\n Icon: TagMultiple\n },\n {\n name: 'Next Gen Course',\n route: `/${bootcamp}/next-gen-strategy-course/videos`,\n Icon: PlayCircle,\n },\n ],\n [\n {\n name: 'Study Guide',\n href: 'https://bootcamp.com/nclex/study-guide',\n Icon: DocumentText,\n },\n {\n name: 'Study Schedule',\n route: `/${bootcamp}/study-schedule`,\n Icon: CalendarLtr,\n },\n {\n name: 'Question of the Day',\n href: `https://bootcamp.com/nclex/question-of-the-day`,\n Icon: Lightbulb,\n },\n {\n name: 'Student Reviews',\n href: 'https://bootcamp.com/nclex/student-reviews',\n Icon: ThumbLike\n },\n {\n name: 'Success Stories',\n href: 'https://bootcamp.com/nclex/success-stories',\n Icon: Star\n },\n ],\n [\n {\n name: 'Study Group',\n href: 'https://www.facebook.com/groups/2169829559872032/',\n Icon: People,\n },\n {\n name: 'After the NCLEX',\n href: 'https://bootcamp.com/nclex/after-the-nclex',\n Icon: Heart,\n },\n {\n name: 'FAQs',\n route: `/${bootcamp}/faqs`,\n Icon: QuestionCircle,\n },\n\n {\n name: 'Contact',\n onClick: () => IntercomAPI('showNewMessage'),\n Icon: ChatMultiple,\n },\n {\n name: '',\n onClick: () => {},\n Icon: MobileAppStoreIcons\n },\n ]\n ];\n\n const linksConfig = {\n dat: datLinks,\n inbde: inbdeLinks,\n oat: oatLinks,\n anatomy: anatomyLinks,\n chemistry: chemistryLinks,\n 'med-school': msbLinks,\n 'nclex': nclexLinks,\n 'dental-school': dsbLinks,\n 'mcat': mcatLinks,\n }[bootcamp];\n\n if (['dat', 'oat', 'inbde', 'med-school', 'nclex', 'mcat'].includes(bootcamp)) {\n\n const headings = [\n 'Home',\n 'Study',\n 'Review',\n 'Resources',\n 'Help'\n ]\n\n return (\n <LinksContainer>\n {linksConfig.map((sections, index) => [\n index > 0 && !!sections?.length && <Heading>{headings[index]}</Heading>,\n !!sections?.length &&\n <Section index={index} key={`sidebar-section-${index}`}>\n {sections\n ?.filter(link => !!link)\n ?.map(props => props.component ? props.component : <LinkRow {...props}/>)\n }\n </Section>\n ])}\n </LinksContainer>\n )\n }\n return (\n <LinksContainer>\n {linksConfig.map((sections, index) => (\n sections &&\n <Section index={index} key={`sidebar-section-${index}`}>\n {sections\n ?.filter(link => !!link)\n ?.map(props => props.component ? props.component : <LinkRow {...props}/>)\n }\n </Section>\n ))}\n </LinksContainer>\n )\n};\n\nconst Heading = styled.div`\n font-family: proxima-nova;\n font-size: 10px;\n line-height: 1em;\n text-transform: uppercase;\n font-weight: 600;\n color: #85868E;\n margin: 0;\n padding: 12px;\n padding-top: 8px;\n padding-bottom: 0px;\n cursor: default;\n`\nexport default Links;\n","import React, {useState} from 'react';\nimport styled, {css} from 'styled-components';\n\nimport {Body4, H4, H3} from '../../../../components/Typography';\nimport {useUserDataContext} from '../../../../contexts/UserData';\nimport {useHistory} from 'react-router-dom';\nimport {OpenIndicator} from '@bootcamp/web/src/components/Branding';\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n border-bottom: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n cursor: pointer;\n\n &:last-child {\n border-bottom: none;\n }\n user-select: none;\n`;\nconst Title = styled(H3)`\n display: flex;\n padding: ${({theme}) => theme.layouts.spacing.m};\n align-items: center;\n font-size: 16px;\n line-height: 20px;\n &:hover {\n background: ${({theme}) => theme.colors.neutralsPalette.extraLight};\n }\n svg {\n margin-left: auto;\n stroke: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n }\n`;\nconst Options = styled.div`\n display: ${({open}) => open ? 'block' : 'none'};\n background: ${({theme}) => theme.colors.neutralsPalette.offWhite};\n\n`;\nconst Option = styled.div`\n padding: ${({theme}) => theme.layouts.spacing.m};\n border-top: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n text-decoration: none;\n\n &:hover {\n background: ${({theme}) => theme.colors.neutralsPalette.extraLight};\n }\n`;\nconst OptionDetails = styled(Body4)`\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n\n ${({active}) => active && css`\n color: ${({theme}) => theme.colors.brandPalette.royal.default};\n font-weight: ${({theme}) => theme.font.weight.bold};\n `}\n`;\n\nconst Folder = ({name, options, activeBootcamp, defaultOpen}) => {\n const [open, setOpen] = useState(defaultOpen);\n const {setBootcamp} = useUserDataContext();\n const {push} = useHistory();\n\n const handleLinkClick = (event, bootcamp) => {\n event.stopPropagation();\n event.preventDefault();\n setBootcamp(bootcamp);\n push(`/${bootcamp}`);\n };\n\n return (\n <Container onClick={() => setOpen(!open)}>\n <Title open={open}>\n <span>{name}</span>\n <OpenIndicator open={open} size={24}/>\n \n \n {options.map(({route, name, details}) => {\n const currentlyStudying = route === activeBootcamp;\n\n return (\n \n );\n })}\n \n \n );\n};\n\nexport default Folder;\n","import React, {useState, useRef, useEffect} from 'react';\nimport styled from 'styled-components';\n\nimport {H4} from '../../../../components/Typography';\nimport {ReactComponent as Grid} from '@bootcamp/shared/src/assets/icons/grid-icon.svg';\nimport Folder from './Folder';\nimport {OpenIndicator} from '@bootcamp/web/src/components/Branding';\n\nconst Container = styled.div`\n padding: 0 16px;\n cursor: pointer;\n`;\nconst Wrapper = styled.div`\n border-radius: 8px;\n background: ${({theme}) => theme.overlays.opacity.light._50};\n`;\nconst CurrentlyStudying = styled(H4)`\n padding: ${({theme}) => theme.layouts.spacing.ms};\n font-size: 16px;\n display: flex;\n align-items: center;\n color: white;\n white-space: nowrap;\n\n span {\n text-overflow: ellipsis;\n overflow: hidden;\n }\n`;\nconst MenuContainer = styled.div`\n position: relative;\n`;\nconst MenuWrapper = styled.div`\n position: absolute;\n top: 10px;\n right: 0;\n left: 0;\n z-index: 1;\n background: white;\n border-radius: 8px;\n overflow: hidden;\n`;\nconst GridIcon = styled(Grid)`\n color: ${({theme}) => theme.overlays.opacity.light._400};\n margin-right: 10px;\n width: 20px;\n`;\n\nconst trackOptions = {\n '🦷 Dentistry': [\n {name: 'DAT Bootcamp', details: 'Ace your DAT', route: 'dat'},\n {name: 'INBDE Bootcamp', details: 'Crush the INBDE', route: 'inbde'},\n {name: 'Dental School Bootcamp', details: 'Ace your D1 / D2 classes', route: 'dental-school'},\n ],\n '🩺 Medical': [\n {name: 'MCAT Bootcamp', details: 'Ace the MCAT', route: 'mcat'},\n {name: 'Med School Bootcamp', details: 'Ace your classes and boards', route: 'med-school'},\n ],\n '⚕️ Nursing': [\n {name: 'NCLEX Bootcamp', details: 'Pass the NCLEX', route: 'nclex'},\n ],\n '👓 Optometry': [\n {name: 'OAT Bootcamp', details: 'Ace your OAT', route: 'oat'},\n ],\n '🥽 Natural Sciences': [\n {name: 'Anatomy Bootcamp', details: 'Ace your Anatomy class', route: 'anatomy'},\n {name: 'Chemistry Bootcamp', details: 'Ace your Chemistry class', route: 'chemistry'},\n ]\n};\n\nconst TrackSelect = ({bootcamp}) => {\n const [menuOpen, setMenuOpen] = useState(false);\n\n const containerRef = useRef();\n\n const activeBootcamp = Object\n .values(trackOptions)\n .reduce((acc, curr) => [...acc, ...curr], [])\n .find(config => config.route === bootcamp);\n\n useEffect(() => {\n if (!containerRef?.current) return;\n\n const handleClick = event => {\n const isClickInsideContainer = containerRef?.current?.contains(event?.target);\n\n if (isClickInsideContainer) return;\n\n setMenuOpen(false);\n };\n\n window.addEventListener('click', handleClick);\n\n return () => window.removeEventListener('click', handleClick);\n\n }, [containerRef.current]);\n if (!activeBootcamp) return null;\n return (\n \n \n setMenuOpen(currentState => !currentState)}>\n \n {activeBootcamp.name}\n \n \n {menuOpen && }\n \n \n )\n};\n\nexport const MenuComponent = ({className, bootcamp}) => {\n const activeBootcamp = Object\n .values(trackOptions)\n .reduce((acc, curr) => [...acc, ...curr], [])\n .find(config => config.route === bootcamp);\n return (\n \n \n {Object\n .keys(trackOptions)\n .map(track => (\n option.route === activeBootcamp.route)}\n />\n ))\n }\n \n \n )\n}\n\nexport {trackOptions};\nexport default TrackSelect;\n","import styled, {css, keyframes} from 'styled-components';\nimport {Spinner2} from '@styled-icons/icomoon/Spinner2';\n\nimport {ReactComponent as Badge} from '@bootcamp/shared/src/assets/svg/badge.svg';\n\nconst LoadingSpinner = styled(Spinner2).attrs(props => ({size: props.size || '14'}))`\n animation: ${({theme}) => keyframes`${theme.animation.spin}`} 2s infinite linear;\n fill: ${({theme: {colors: {brandPalette, neutralsPalette}}, color}) => (brandPalette[color] && brandPalette[color].default) || neutralsPalette.white};\n`;\n\nconst UIButtonText = styled.div`\n font-family: proxima-nova;\n font-style: normal;\n font-weight: 400;\n line-height: 100%;\n display: flex;\n align-items: center;\n text-align: center;\n ${({iconPosition, IconComponent}) => iconPosition && IconComponent && css`\n margin-${iconPosition}: 8px;\n `}\n`;\n// getColor is a function that will return the styles based on the props that are passed to the component\n//\n// dark: if true, the button will be a dark version of the button\n// active: if true, the button will be in the active state\n// disabled: if true, the button will be in the disabled state\n// theme: the theme object\n// color: the color of the button. If not defined, it will default to royal\n//\n\nfunction getColor ({dark, active, disabled, theme, color=\"royal\", themePalette}) {\n const {overlays: {opacity}, colors: {brandPalette, special, neutralsPalette}} = theme;\n\n const palette = themePalette || brandPalette[color];\n\n let background = palette.default,\n activeBackground = special.tuxedo,\n hoverBackground = palette.hover,\n disabledBackground = neutralsPalette.light,\n textColor = neutralsPalette.white,\n activeTextColor = neutralsPalette.white,\n disabledTextColor = neutralsPalette.grey,\n disabledHoverTextColor = neutralsPalette.grey;\n\n if (dark) {\n background = opacity.light._100;\n activeBackground = neutralsPalette.white;\n hoverBackground = opacity.light._200;\n textColor = neutralsPalette.white;\n activeTextColor = neutralsPalette.extraDark;\n disabledTextColor = opacity.light._400;\n disabledHoverTextColor = neutralsPalette.white;\n }\n\n if (active) {\n background = activeBackground;\n hoverBackground = activeBackground;\n textColor = activeTextColor;\n }\n\n if (disabled) {\n hoverBackground = disabledBackground;\n background = disabledBackground;\n }\n\n return css`\n background: ${background};\n color: ${disabled ? disabledTextColor : textColor};\n ${!disabled && css`box-shadow: 0px 2px 0px ${palette.dark};`}\n &:hover {\n background: ${hoverBackground};\n ${!disabled && css`transform: translateY(-1px);`}\n ${disabled && css`color: ${disabledHoverTextColor}; cursor: not-allowed;`}\n }\n `;\n}\n\nconst UIButtonContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n padding: 16px;\n cursor: pointer;\n text-decoration: none;\n\n ${({full}) => css`width: ${full ? '100%' : 'fit-content'}`};\n ${({small}) => css`\n height: ${small ? '32px' : '42px'};\n font-size: ${small ? '14px' : '16px'};\n `}\n ${getColor}\n transition: background .1s;\n &:hover {\n transition: background .1s;\n }\n`;\n\nconst RoundButtonText = styled(UIButtonText)`\n font-weight: ${({mini}) => mini ? '400' : '600'};\n`;\n\nexport const RoundButtonContainer = styled(UIButtonContainer)`\n border-radius: 64px;\n ${({small}) => css`\n height: ${small ? '42px' : '56px'};\n font-size: ${small ? '16px' : '18px'};\n `}\n ${({mini}) => mini && css`\n height: 32px;\n font-size: 14px;\n `}\n ${({light}) => light && css`\n background: ${({theme}) => theme.colors.neutralsPalette.light};\n box-shadow: none;\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n\n svg > path {\n fill: ${({theme}) => theme.colors.neutralsPalette.grey};\n }\n\n &:hover {\n background: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n color: ${({theme}) => theme.colors.neutralsPalette.dark};\n }\n`}\n${({white}) => white && css`\n background: white;\n box-shadow: none;\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n border: 1px solid ${({theme}) => theme.colors.borderPalette.primary};\n\n svg > path {\n fill: ${({theme}) => theme.colors.borderPalette.primary};\n }\n\n &:hover {\n background: ${({theme}) => theme.colors.neutralsPalette.extraLight};\n color: ${({theme}) => theme.colors.neutralsPalette.dark};\n }\n`}\n`\n// DefaultButton is a function that returns a button component\n// Container: the container component that will be used for the button\n// Text: the text component that will be used for the button\n// loading: if true, the button will show a loading spinner\n// iconPosition: if defined, the button will show an icon on the left or right side of the button\n// IconComponent: the icon component that will be used for the button\n// children: the text that will be shown on the button\n\n// What does this component do?\n// It will return a button component that will have the styles defined in the Container and Text components\n// It will also show a loading spinner if the loading prop is true\n// It will show an icon if the iconPosition and IconComponent props are defined\n// It will show the children prop as the text of the button\n\n// Is this component easy to modify?\n// Yes, you can modify the Container and Text components to change the styles of the button\n// You can also modify the getColor function to change the colors of the button\n// You can also modify the DefaultButton function to change the logic of the button\n\n\nexport const DefaultButton = (Container=UIButtonContainer, Text=UIButtonText) => ({className, IconComponent, iconPosition, children, onClick, ...containerProps}) => (\n {} : onClick} {...containerProps}>\n {\n containerProps.loading\n ? (\n \n )\n : [\n iconPosition === 'left' && IconComponent,\n {children},\n iconPosition === 'right' && IconComponent\n ]\n }\n \n);\n\n\nexport const Chiclet = DefaultButton();\n\nexport const RoundButton = DefaultButton(RoundButtonContainer, RoundButtonText);\n\nexport const UpgradeButton = styled((props) => } {...props}/>)`\n background: ${({theme}) => theme.colors.neutralsPalette.light};\n box-shadow: none;\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n\n svg > path {\n fill: ${({theme}) => theme.colors.neutralsPalette.grey};\n }\n\n &:hover {\n background: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n }\n`;","import React from 'react';\nimport styled from 'styled-components';\nimport {ReactComponent as Badge} from '@bootcamp/shared/src/assets/svg/badge.svg';\nimport {Body4} from '../../../components/Typography';\nimport {RoundButton} from '@bootcamp/web/src/components/UI';\n\nconst Background = styled.div`\n position: absolute;\n bottom: 0px;\n left: 0px;\n width: 100%;\n text-decoration: none;\n transform: translate3d(0,0,0);\n`;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background: ${({theme}) => theme.overlays.opacity.light._50};\n border-radius: 8px;\n padding: 16px;\n margin: 16px;\n cursor: default;\n background: rgba(255, 255, 255, 0.05);\n backdrop-filter: blur(10px);\n`;\n\nconst StyledBadge = styled(Badge)`\n height: 16px;\n width: 16px;\n path {\n fill: white;\n }\n`;\n\nconst Text = styled(Body4)`\n color: ${({theme}) => theme.overlays.opacity.light._400};\n margin-bottom: 16px;\n text-align: center;\n`;\n\n\nconst UpgradeButton = ({bootcamp, trialMembership}) => {\n return (\n \n \n \n Upgrade your membership to get {trialMembership ? 'continued ' : 'instant '}access to all content and features.\n \n }>\n Upgrade\n \n \n \n )\n}\n\nexport default UpgradeButton;\n","import React, {useState, useEffect, useMemo, createContext, useContext} from 'react';\n\nimport {nanoid} from 'nanoid';\n\nimport {capitalize} from '@bootcamp/shared/src/util';\nimport {useMasteryArray} from '@bootcamp/shared/src/util/hooks';\n\n\nconst contentTypesByBootcamp = {\n 'med-school': ['Board Style Questions'],\n 'anatomy': ['Question Banks'],\n 'nclex': ['Board Style Questions', 'Case Studies'],\n inbde: ['Question Banks']\n};\n\nconst defaultMasteryObject = {learning: 0, reviewing: 0, mastered: 0, bookmarked: 0, untagged: 0, all: 0};\n\nfunction recursiveToggleState(data, validate) {\n const update = {...data};\n\n function recurse(obj) {\n if (!obj.children) return {...obj, checked: validate(obj)};\n\n const {children} = obj;\n\n const update = Object.keys(children).reduce((acc, key) => {\n\n const updatedChildren = recurse(children[key]);\n\n return {...acc, [key]: updatedChildren};\n }, {});\n\n const someChecked = Object.values(update).some(({checked}) => checked);\n\n return {\n ...obj,\n checked: someChecked,\n children: update\n }\n }\n\n return recurse(update);\n}\n\nfunction getStateForContentType(content, defaults) {\n const {subject} = defaults || {};\n\n switch (content.name) {\n case ('Free Tests'):\n return {\n 'free-tests': {\n name: 'Free Questions',\n type: 'subject',\n checked: subject ? subject === 'Free Questions' : false,\n defaultToggled: subject ? subject === 'Free Questions' : false,\n children: content.testIds.reduce((acc, id) => ({\n [id]: {\n id,\n type: 'test',\n name: 'Free Questions',\n parentName: 'Free Questions',\n checked: subject ? subject === 'Free Questions' : false,\n free: true,\n }\n }), {}),\n free: true,\n }\n }\n default:\n return;\n }\n}\n\nfunction formatAdditionalContent(content, defaults) {\n if (!content) return {};\n\n return content.reduce((acc, curr) => ({...acc, ...getStateForContentType(curr, defaults)}), {});\n}\n\nfunction indexClassroomBySubjectId(classroom, contentTypeFilters, defaults) {\n const {name, tagId, tagIds, contentTypes, free} = classroom;\n\n const {subject, subjects, system, systems} = defaults || {};\n\n // NOTE can simplify this tagId creation if we can say for certain all classrooms have a subject tag id\n // right now in med-school, they do not\n const id = `${name}-${tagId ? tagId : tagIds?.join('#')}`;\n\n const children = contentTypes\n ?.filter(({name: contentTypeName}) => contentTypeFilters.includes(contentTypeName))\n ?.reduce((acc2, {content}) => {\n const indexedContent = content?.reduce((acc3, curr) => ({\n ...acc3,\n ...curr?.content?.reduce((acc4, curr2) => {\n const rowId = nanoid();\n\n return ({\n ...acc4,\n ...(curr2?.lessons\n ? {\n [rowId]: {\n type: 'topic',\n id: rowId,\n parentId: id,\n name: curr2.name,\n children: curr2?.lessons?.reduce((acc5, curr3) => ({ ...acc5, [curr3.testId]: {id: curr3.testId, parentId: rowId, grandparentId: id, free, type: curr3.type, name: capitalize(curr3.type), checked: false} }), {}),\n checked: false,\n free,\n }\n } : {\n [curr2.id]: {\n type: 'test',\n id: curr2.id,\n parentName: name,\n name: curr2.name,\n checked: subject && system ? (subject === name && system === curr2.name) : subject ? subject === name : false,\n free,\n }\n }\n )\n });\n }, {})\n }), {})\n\n return {\n ...acc2,\n ...indexedContent\n }\n }, {});\n\n // filtering out any subjects which don't have Board Style Questions (no children)\n return Object.keys(children)?.length\n ? {\n [id]: {\n name,\n type: 'subject',\n checked: subject\n ? subject?.toLowerCase() === name?.toLowerCase()\n : Array.isArray(subjects)\n ? subjects.map(subject => subject.toLowerCase()).includes(name?.toLowerCase())\n : false,\n defaultToggled: subject\n ? subject?.toLowerCase() === name?.toLowerCase()\n : Array.isArray(subjects)\n ? subjects.map(subject => subject.toLowerCase()).includes(name?.toLowerCase())\n : false,\n children,\n free\n }\n }\n : {}\n\n}\n\nfunction initState(config, contentTypeFilters=[\"Board Style Questions\"], defaults, isUpgraded) {\n const state = config?.classrooms?.reduce((acc, classroom) => {\n\n if ((classroom.testing && !classroom.name.match('Free')) || (isUpgraded && classroom.name.match('Free')) || classroom.name.match('Readiness Exams')) return acc;\n const subject = indexClassroomBySubjectId(classroom, contentTypeFilters, defaults);\n\n return {\n ...acc,\n ...subject,\n }\n }, {});\n\n const additionalState = isUpgraded ? {} : formatAdditionalContent(config?.additionalContent, defaults);\n\n return {...additionalState, ...state};\n\n}\n\nfunction initMedSchoolState(config, contentTypeFilters, defaults) {\n return {\n preclinical: initState(config, contentTypeFilters, defaults),\n bites: initState(config, [\n 'Biochem Bites',\n 'Biochemistry Bites',\n 'Biostats Bites',\n 'Cardio Bites',\n 'Derm Bites',\n 'Endo Bites',\n 'Gastro Bites',\n 'GI Bites',\n 'Genetics Bites',\n 'Heme & Onc Bites',\n 'Immuno Bites',\n 'Micro Bites',\n 'MSK Bites',\n 'Nephro Bites',\n 'Neuro Bites',\n 'Pharm Bites',\n 'Psych Bites',\n 'PHS Bites',\n 'Pulm Bites',\n 'Reproduction Bites'\n ]),\n anatomy: {\n ...indexClassroomBySubjectId(config.classrooms.find(({name}) => name === 'Gross Anatomy'), ['Question Banks']),\n ...indexClassroomBySubjectId(config.classrooms.find(({name}) => name === 'Neuroanatomy'), ['Question Banks']),\n ...indexClassroomBySubjectId(config.classrooms.find(({name}) => name === 'Histology'), ['Question Banks']),\n ...indexClassroomBySubjectId(config.classrooms.find(({name}) => name === 'Embryology'), ['Question Banks']),\n }\n };\n}\nfunction initAnatomyState(config, contentTypeFilters) {\n return {\n anatomy: {\n ...indexClassroomBySubjectId(config.classrooms.find(({name}) => ['Anatomy and Physiology', 'Anatomy & Physiology'].includes(name)), ['Exam Questions']),\n ...indexClassroomBySubjectId(config.classrooms.find(({name}) => name === 'Gross Anatomy'), ['Question Banks']),\n ...indexClassroomBySubjectId(config.classrooms.find(({name}) => name === 'Neuroanatomy'), ['Question Banks']),\n ...indexClassroomBySubjectId(config.classrooms.find(({name}) => name === 'Histology'), ['Question Banks']),\n ...indexClassroomBySubjectId(config.classrooms.find(({name}) => name === 'Embryology'), ['Question Banks']),\n ...indexClassroomBySubjectId(config.classrooms.find(({name}) => ['Dental Anatomy and Occlusion', 'Dental Anatomy & Occlusion'].includes(name)), ['Identify Structures', 'Lecture Style Questions']),\n }\n };\n}\n\nfunction initINBDEState(config, contentTypeFilters, defaults, isUpgraded) {\n const filteredClassrooms = config.classrooms.filter(({name}) => name !== 'Simulation Exam');\n\n return {\n questionBank: initState({...config, classrooms: filteredClassrooms}, contentTypeFilters, defaults, isUpgraded),\n mockExam: {\n ...indexClassroomBySubjectId(config.classrooms.find(({name}) => name === 'Simulation Exam'), ['Question Banks'], defaults),\n }\n };\n}\n\nfunction formatMasteryData(data) {\n return data?.data?.QuestionMasteryByTestId?.items.reduce((acc, item) => ({\n ...acc,\n [item?.questionMasteryQuestionId]: {\n masteryLevel: item?.masteryLevel,\n bookmarked: item?.bookmarked,\n }\n }), {});\n}\n\nfunction getTestIdsFromStateStructure(state) {\n return Object.values(state)?.reduce((acc, {children}) => [...acc, ...Object.keys(children)?.map((id) => children[id]?.children ? Object.keys(children[id].children).map((nestedId) => nestedId) : id)], []).flat();\n}\n\nfunction getFreeTestIdsFromConfig(bootcamp, config) {\n switch (bootcamp) {\n case 'nclex':\n const freeQbIds = config?.classrooms?.find(({name}) => name.match('Free Questions'))?.contentTypes?.[0]?.content?.[0]?.content?.[0]?.id;\n return [freeQbIds];\n case 'inbde':\n return config?.additionalContent?.[0]?.testIds;\n default:\n return null;\n }\n}\n\nfunction getDefaultTypeForBootcamp(bootcamp, defaults) {\n if (defaults?.type) return defaults.type;\n\n switch (bootcamp) {\n case 'anatomy':\n return 'anatomy';\n case 'med-school':\n return 'preclinical';\n case 'inbde':\n if (defaults?.subject === 'Simulation Exam') return 'mockExam';\n return 'questionBank'\n default:\n return null;\n }\n}\n\nconst TestState = createContext();\n\nexport const questionLimitByBootcamp = {\n 'med-school': 40,\n 'nclex': 85,\n 'inbde': 100,\n 'anatomy': 40,\n};\n\nconst initStateForBootcamp = (config, bootcamp, defaults, isUpgraded) => {\n const contentTypeFilters = contentTypesByBootcamp[bootcamp];\n\n switch (bootcamp) {\n case 'med-school':\n return initMedSchoolState(config, contentTypeFilters, defaults);\n case 'anatomy':\n return initAnatomyState(config, contentTypeFilters);\n case 'inbde':\n return initINBDEState(config, contentTypeFilters, defaults, isUpgraded);\n default:\n return initState(config, contentTypeFilters, defaults, isUpgraded);\n }\n}\n\nconst useTestState = (config, questionCounts, bootcamp, defaults, isUpgraded, userId, parentLoading) => {\n const [loading, setLoading] = useState(true);\n const [submitting, setSubmitting] = useState(false);\n\n const [type, setType] = useState(getDefaultTypeForBootcamp(bootcamp, defaults));\n\n // format config into a render friendly object\n const [state, setState] = useState(initStateForBootcamp(config, bootcamp, defaults, isUpgraded));\n\n const setData = type ? newState => setState(state => ({...state, [type]: newState})) : setState;\n const data = type ? state[type] : state;\n\n const testIds = useMemo(() => getTestIdsFromStateStructure(data), [data]);\n\n // load mastery\n const masteryByType = useMasteryArray(testIds, 'testSmall', formatMasteryData, type, null, userId, parentLoading);\n const mastery = type ? masteryByType?.[type] : masteryByType;\n\n const loadingMastery = !mastery || !Object.keys(mastery).length;\n\n // toggle states\n const [mode, setMode] = useState({tutorMode: true, timed: false});\n const [masteryFilter, setMasteryFilter] = useState('untagged');\n const [testCount, setTestCount] = useState(!isUpgraded ? 6 : questionLimitByBootcamp[bootcamp] || 40);\n const [selectAll, setSelectAll] = useState(true);\n\n const onTypechange = (newType) => {\n setType(newType);\n setLoading(true);\n };\n\n const initSubjectMasteryFilter = (dataObject, defaultSubject) => {\n try {\n const subjectKey = Object.keys(dataObject).find(key => key.split('-')[0]?.toLowerCase() === defaultSubject?.toLowerCase());\n const subjectTestIds = Object.keys(dataObject[subjectKey]?.children || {});\n\n const masteryTotals = subjectTestIds.reduce((acc, testId) => {\n const {learning, reviewing, mastered, untagged, bookmarked, all} = Object\n ?.keys(questionCounts?.[testId] || {})\n ?.reduce((acc2, questionId) => {\n const masteryLevel = mastery?.[testId]?.[questionId]?.masteryLevel || 'untagged';\n const bookmarked = mastery?.[testId]?.[questionId]?.bookmarked ? 1 : 0;\n\n const update = {...acc2};\n\n update[masteryLevel] += 1;\n update.bookmarked += bookmarked;\n update.all += 1;\n\n return update;\n\n }, defaultMasteryObject);\n\n return {\n learning: acc.learning + learning,\n reviewing: acc.reviewing + reviewing,\n mastered: acc.mastered + mastered,\n untagged: acc.untagged + untagged,\n bookmarked: acc.bookmarked + bookmarked,\n all: acc.all + all,\n };\n }, defaultMasteryObject);\n\n return ['untagged', 'learning', 'reviewing', 'mastered', 'all'].find(key => masteryTotals[key] > 0);\n\n } catch (error) {\n console.log('error determining default mastery level', error);\n return 'all';\n }\n };\n\n const testCounts = useMemo(() => {\n return testIds?.reduce((acc, testId) => ({\n ...acc,\n [testId]: Object\n ?.keys(questionCounts?.[testId] || {})\n ?.filter(questionId => {\n const masteryLevel = mastery?.[testId]?.[questionId]?.masteryLevel;\n const bookmarked = mastery?.[testId]?.[questionId]?.bookmarked;\n // if masteryFilter is untagged, filter for questions with no mastery entry - otherwise match to masteryFilter\n return masteryFilter === 'all'\n ? true\n : masteryFilter === 'untagged'\n ? (!['learning', 'reviewing', 'mastered'].includes(masteryLevel))\n : masteryFilter === 'bookmarked'\n ? bookmarked\n : masteryLevel === masteryFilter\n })?.length\n }), {});\n }, [mastery, masteryFilter, questionCounts, type]);\n\n const subjectCounts = useMemo(() => {\n return Object.keys(data).reduce((acc, subjectId) => ({\n ...acc,\n [subjectId]: Object.keys(data[subjectId]?.children)?.reduce((acc, testId) => {\n const nestedChildren = data[subjectId]?.children[testId]?.children;\n\n return nestedChildren\n ? acc + Object.keys(nestedChildren).reduce((acc, testId) => acc + testCounts[testId], 0)\n : acc + testCounts[testId]\n }, 0)\n }), {})\n }, [testCounts]);\n\n const topicCounts = useMemo(() => {\n return Object.keys(data).reduce((acc, subjectId) => ({\n ...acc,\n ...Object.keys(data[subjectId]?.children)?.reduce((acc, topicId) => {\n const nestedChildren = data[subjectId]?.children[topicId]?.children;\n\n if (!nestedChildren) return acc;\n\n return {\n ...acc,\n [topicId]: Object.keys(nestedChildren).reduce((acc, testId) => (acc + testCounts[testId]), 0)\n }\n\n }, {})\n }), {})\n }, [testCounts]);\n\n const totals = useMemo(() => {\n const freeTestIds = getFreeTestIdsFromConfig(bootcamp, config);\n\n return testIds?.reduce((acc, testId) => {\n\n if (!isUpgraded && freeTestIds && !freeTestIds.includes(testId)) return acc;\n\n const {learning, reviewing, mastered, untagged, bookmarked, all} = Object\n ?.keys(questionCounts?.[testId] || {})\n ?.reduce((acc2, questionId) => {\n const masteryLevel = mastery?.[testId]?.[questionId]?.masteryLevel || 'untagged';\n const bookmarked = mastery?.[testId]?.[questionId]?.bookmarked ? 1 : 0;\n\n const update = {...acc2};\n\n update[masteryLevel] += 1;\n update.bookmarked += bookmarked;\n update.all += 1;\n\n return update;\n\n }, defaultMasteryObject);\n\n return {\n learning: acc.learning + learning,\n reviewing: acc.reviewing + reviewing,\n mastered: acc.mastered + mastered,\n untagged: acc.untagged + untagged,\n bookmarked: acc.bookmarked + bookmarked,\n all: acc.all + all,\n };\n }, defaultMasteryObject);\n }, [mastery, questionCounts]);\n\n // main loading state use effect\n // syncs checked states with question counts / mastery once it's all successfully loaded\n // also inits default mastery filter\n\n // we might be able to rewrite this without using a use effect, that would be ideal!\n useEffect(() => {\n if (!loading || loadingMastery || !questionCounts || !data || submitting) {\n return;\n }\n\n const {subject, system, subjects, systems, masteryLevel, tutorMode, timed, questionCount, masteryLevelFallback} = defaults || {};\n\n const validate = ({id, free, name, parentName}) => {\n\n const matchesDefaults = subject && system\n ? (subject?.toLowerCase() === parentName?.toLowerCase() && system?.toLowerCase() === name?.toLowerCase())\n : subject\n ? subject?.toLowerCase() === parentName?.toLowerCase()\n : Array.isArray(subjects) && Array.isArray(systems)\n ? subjects.map(subject => subject?.toLowerCase()).includes(parentName?.toLowerCase()) && systems.map(system => system?.toLowerCase()).includes(name?.toLowerCase())\n : Array.isArray(subjects)\n ? subjects.map(subject => subject.toLowerCase()).includes(parentName?.toLowerCase())\n : false;\n\n return (((subject || system || Array.isArray(subjects) || Array.isArray(systems)) ? matchesDefaults : true) && !!testCounts[id] && (isUpgraded || free)) ? true : false;\n }\n\n const update = Object.keys(data).reduce((acc, key) => ({\n ...acc,\n [key]: recursiveToggleState(data[key], validate)\n }), {});\n\n // if subject filter is undefined, we should default to 'all'\n const subjectFilter = (subject ? [subject] : subjects)?.reduce((acc, subject) => {\n const subjectFilterMatch = initSubjectMasteryFilter(update, subject, masteryLevel)\n return subjectFilterMatch;\n }, null);\n\n const useFallback = masteryLevelFallback && subjectFilter && subjectFilter !== masteryLevel\n ? masteryLevelFallback\n : null;\n\n const masteryFilter = masteryLevel\n ? (useFallback || masteryLevel)\n : subjectFilter\n ? subjectFilter\n : masteryLevel\n ? masteryLevel\n : totals?.untagged\n ? 'untagged'\n : totals?.learning\n ? 'learning'\n : totals?.reviewing\n ? 'reviewing'\n : totals?.mastered\n ? 'mastered'\n : totals?.bookmarked\n ? 'bookmarked'\n : 'all';\n\n const settings = {\n tutorMode: [true, false].includes(tutorMode) ? tutorMode : true,\n timed: [true, false].includes(timed) ? timed : false,\n };\n\n const count = !isUpgraded\n ? 6\n : questionCount || questionLimitByBootcamp[bootcamp] || 40;\n\n setMode(settings);\n setTestCount(count);\n setMasteryFilter(masteryFilter);\n setData(update);\n\n // // set loading false on next tick so that useEffects in child components\n // // use latest 'data' state value\n setTimeout(() => setLoading(false), 0);\n\n }, [loadingMastery, questionCounts, defaults, type, totals, loading, submitting, testCounts]);\n\n\n return {\n methods: {\n recursiveToggleState,\n setMasteryFilter,\n setTestCount,\n setData,\n setMode,\n setType: onTypechange,\n setLoading,\n setSelectAll,\n setSubmitting,\n },\n variables: {\n state,\n data,\n type,\n testIds,\n testCount,\n totals,\n masteryFilter,\n questionCounts,\n testCounts,\n subjectCounts,\n topicCounts,\n mastery,\n loading: loading || submitting,\n submitting,\n maxQuestions: questionLimitByBootcamp[bootcamp],\n selectAll,\n mode,\n bootcamp\n },\n };\n}\n\nconst useCreateTestState = () => useContext(TestState);\n\nexport {useCreateTestState, useTestState, TestState};\n","import React, {useState, useEffect, useMemo, createContext, useContext} from 'react';\n\nimport {useMasteryArray} from '@bootcamp/web/src/hooks';\n\nimport nanoid from 'nanoid';\n\nimport {capitalize} from '@bootcamp/shared/src/util';\nimport {useTestState, TestState} from '@bootcamp/shared/src/createTest';\nimport {useUserDataContext} from '../../../../contexts/UserData';\nimport {useBootcampConfigContext} from '../../../../contexts/BootcampConfig';\n\n\n\nconst TestStateContextProvider = ({defaults, children}) => {\n const {isUpgraded, bootcamp, loading, DEFAULT_USER_ID} = useUserDataContext();\n const {config, questionCounts} = useBootcampConfigContext();\n\n const value = useTestState(config, questionCounts, bootcamp, defaults, isUpgraded, DEFAULT_USER_ID, loading);\n\n return (\n \n {children}\n \n );\n}\n\n\nconst useCreateTestState = () => useContext(TestState);\n\nexport {TestStateContextProvider, useCreateTestState}","import React from 'react';\nimport styled, {css} from 'styled-components';\n\nimport {H3} from '@bootcamp/web/src/components/Typography';\n\nimport {Minus} from '@styled-icons/heroicons-outline/Minus';\nimport {Check} from '@styled-icons/heroicons-outline/Check';\nimport {Info} from '@styled-icons/fluentui-system-filled/Info';\n\nimport {Tooltip} from 'react-tooltip';\n\nimport baseTheme from '@bootcamp/shared/src/styles/theme';\n\n\nexport const Container = styled.div`\n padding: 16px 0px;\n border-bottom: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n`\nexport const Header = styled(H3)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n`;\nexport const Label = styled.label`\n cursor: ${({disabled}) => disabled ? 'not-allowed' : 'pointer'};\n opacity: ${({disabled}) => disabled ? '0.5' : '1'};\n padding: 6px 8px;\n`;\nexport const Count = styled.span`\n font-size: 14px;\n line-height: 14px;\n font-weight: bold;\n padding: ${({theme}) => theme.layouts.spacing.xs} ${({theme}) => theme.layouts.spacing.s};\n border-radius: 100px;]\n cursor: ${({disabled}) => disabled ? 'not-allowed' : 'pointer'};\n\n ${({theme, masteryLevel, loading}) => loading\n ? css`\n ${theme.animation.loadingBackground({loading})};\n `\n : masteryLevel === 'learning'\n ? css`\n background: ${theme.colors.interfacePalette.red.light};\n color: ${theme.colors.interfacePalette.red.dark};\n `\n : masteryLevel === 'reviewing'\n ? css`\n background: ${theme.colors.interfacePalette.yellow.light};\n color: ${theme.colors.interfacePalette.yellow.dark};\n `\n : masteryLevel === 'mastered'\n ? css`\n background: ${theme.colors.interfacePalette.green.light};\n color: ${theme.colors.interfacePalette.green.dark};\n `\n : css`\n background: ${theme.colors.neutralsPalette.offWhite};\n color: ${theme.colors.neutralsPalette.grey};\n `\n };\n`;\nexport const CustomInputWrapper = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n min-width: 18px;\n min-height: 18px;\n border-radius: 4px;\n cursor: ${({disabled}) => disabled ? 'not-allowed' : 'pointer'};\n border: 1px solid ${({theme, checked, disabled, locked}) => ((checked && !disabled) || locked) ? 'none' : theme.colors.neutralsPalette.lightGrey};\n background: ${({checked, disabled, theme}) => disabled\n ? theme.colors.neutralsPalette.extraLight\n : checked\n ? theme.colors.brandPalette.blue.default\n : 'white'\n };\n`;\nexport const InputCheck = styled(Check)`\n width: 12px;\n height: 12px;\n color: white;\n path {\n stroke-width: 4px;\n }\n`;\nexport const InputMinus = styled(Minus)`\n width: 12px;\n height: 12px;\n color: ${({theme}) => theme.colors.brandPalette.blue.default};\n path {\n stroke-width: 4px;\n }\n`;\nconst TooltipContainer = styled.div`\n display: flex;\n margin-left: 6px;\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n cursor: pointer;\n\n svg {\n height: 16px;\n width: 16px;\n }\n`;\n\nexport const InputHoverWrapper = styled.div`\n display: flex;\n align-items: center;\n\n &:hover {\n ${CustomInputWrapper} {\n background: ${({theme, active, disabled}) => !active && !disabled && theme.colors.neutralsPalette.light};\n }\n }\n`;\n\nconst StyledTooltip = styled(Tooltip)`\n background: ${baseTheme.colors.special.tuxedo};\n ${({maxWidth}) => maxWidth && css`\n max-width: ${maxWidth}px;\n `}\n opacity: 1;\n border-radius: 8px;\n`;\n\nexport const TextTooltip = ({className, text, children, id, maxWidth, hideIcon=false}) => (\n \n \n {text ? children : null}\n {!hideIcon && }\n \n);","import React from 'react';\nimport styled from 'styled-components';\n\nimport {Header as Heading} from './shared';\nimport {Dismiss} from '@styled-icons/fluentui-system-filled/Dismiss';\nimport { useModalContext } from '../../../../contexts/Modal';\n\nconst Container = styled.div`\n display: flex;\n justify-content: center;\n padding: ${({theme}) => theme.layouts.spacing.m};\n border-bottom: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n position: relative;\n\n ${Heading} {\n margin-bottom: 0;\n }\n`;\n\nconst DismissIconWrapper = styled.div`\n display: flex;\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n padding: 24px;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n`;\nconst DismissIcon = styled(Dismiss)`\n width: 16px;\n height: 16px;\n color: ${({theme}) => theme.colors.special.tuxedo};\n`;\n\nconst Header = () => {\n const {modalDispatch} = useModalContext();\n\n return (\n \n modalDispatch({type: 'close'})}>\n \n \n Create Test\n \n );\n};\n\nHeader.defaultProps = {};\nHeader.propTypes = {};\n\nexport default Header;\n","var _rect, _path, _rect2;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgBadge(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 18,\n viewBox: \"0 0 18 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 0.5,\n width: 17,\n height: 17,\n rx: 1.5,\n fill: \"#EDEDF0\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.99859 4.20002C8.97183 4.19993 8.94532 4.20434 8.9205 4.21298L4.32825 5.86142C4.28653 5.87636 4.25158 5.9027 4.22872 5.93643C4.20586 5.97017 4.19634 6.00945 4.20161 6.0483C4.47723 8.04645 5.06744 9.81287 5.88193 11.1658C6.6964 12.5187 7.73803 13.4684 8.93911 13.792C8.97891 13.8027 9.02149 13.8027 9.0613 13.792C10.2624 13.4684 11.302 12.5187 12.1165 11.1658C12.9309 9.81287 13.5232 8.04645 13.7988 6.0483C13.804 6.00941 13.7945 5.97009 13.7715 5.93635C13.7486 5.90262 13.7135 5.8763 13.6718 5.86142L9.0795 4.21298C9.0538 4.20402 9.02629 4.19961 8.99859 4.20002ZM7.51515 10.8L8.99316 9.98518L10.4852 10.8L10.2037 9.06666L11.4002 7.83703L9.7392 7.58518L8.99316 6L8.26119 7.58518L6.6002 7.83703L7.79668 9.06666L7.51515 10.8Z\",\n fill: \"#85868E\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 0.5,\n width: 17,\n height: 17,\n rx: 1.5,\n stroke: \"#C8C9CE\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBadge);\nexport default __webpack_public_path__ + \"static/media/badge.b8aca823.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport styled from 'styled-components';\n\nimport {Container, Header, TextTooltip} from './shared';\nimport {useCreateTestState} from '../context';\n\nconst Wrapper = styled.div`\n display: flex;\n flex-flow: row wrap;\n`;\nconst SwitchWrapper = styled.div`\n display: flex;\n flex-direction: row;\n margin-right: ${({theme}) => theme.layouts.spacing.l};\n cursor: pointer;\n`;\nconst Switch = styled.label`\n position: relative;\n display: inline-block;\n width: 32px;\n height: 18px;\n border-radius: 8px;\n margin-right: ${({theme}) => theme.layouts.spacing.s};\n\n input {\n margin: 0;\n opacity: 0;\n height: 0;\n width: 0;\n }\n\n input:checked + span {\n background-color: ${({theme}) => theme.colors.brandPalette.blue.default};\n }\n\n input:focused + span {\n box-shadow: 0 0 1px ${({theme}) => theme.colors.brandPalette.blue.default};\n\n }\n\n input:checked + span:before {\n -webkit-transform: translateX(14px);\n -ms-transform: translateX(14px);\n transform: translateX(14px);\n }\n`;\n\nconst Slider = styled.span`\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: #E9E9EA;\n -webkit-transition: .4s;\n transition: .4s;\n border-radius: 16px;\n\n &:before {\n position: absolute;\n content: \"\";\n height: 16px;\n width: 16px;\n left: 1px;\n bottom: 1px;\n background-color: white;\n -webkit-transition: .4s;\n transition: .4s;\n border-radius: 8px;\n box-shadow: 0px 3px 7px rgba(0, 0, 0, 0.12);\n }\n`;\nconst HeaderWrapper = styled.div`\n display: flex;\n align-items: center;\n cursor: pointer;\n margin-bottom: 16px;\n`;\nconst Mode = () => {\n const {\n methods: {\n setMode,\n },\n variables: {\n mode,\n loading,\n }\n } = useCreateTestState();\n\n function handleChange(event, modeType) {\n const newValue = !mode[modeType];\n\n event.preventDefault();\n event.stopPropagation();\n\n setMode(modeState => ({...modeState, [modeType]: newValue}));\n }\n\n return (\n \n \n
Test Settings
\n \n Tutor shows an explanation after you answer.
\n Timed sets a time limit on the test.\n
\n
\n \n handleChange(e, 'tutorMode')}>\n \n \n \n \n Tutor\n \n handleChange(e, 'timed')}>\n \n \n \n \n Timed\n \n \n
\n );\n};\n\nexport default Mode;","import React, {useMemo} from 'react';\nimport styled from 'styled-components';\n\nimport {Container, Label, Count, Header, CustomInputWrapper, InputCheck, InputHoverWrapper} from './shared';\nimport {useCreateTestState} from '../context';\n\nconst Wrapper = styled.div`\n display: flex;\n flex-flow: row wrap;\n`;\nconst InputWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n cursor: pointer;\n`;\nconst Input = styled.input`\n margin: 0;\n opacity: 0;\n height: 0;\n width: 0;\n`;\nconst StyledCustomInputWrapper = styled(CustomInputWrapper)`\n border-radius: 18px;\n`;\n\nconst valuesByBootcamp = {\n 'med-school': [\n ['preclinical', 'Step 1 Qbank'],\n ['bites', 'Bites'],\n ['anatomy', 'Anatomy Bootcamp'],\n ],\n 'inbde': [\n ['questionBank', 'INBDE Question Bank'],\n // ['mockExam', 'INBDE Simulation Exam'],\n ]\n};\n\nconst Type = ({bootcamp}) => {\n const {\n methods: {\n setType,\n },\n variables: {\n loading,\n type,\n state,\n questionCounts,\n }\n } = useCreateTestState();\n\n const totals = useMemo(() => {\n\n if (!questionCounts) return;\n\n return Object.keys(state).reduce((acc, type) => ({\n ...acc,\n [type]: Object.values(state[type])?.reduce((acc, subject) => {\n return acc + Object.keys(subject.children)?.reduce((acc, testId) => {\n const nestedChildren = subject?.children?.[testId]?.children;\n\n if (!questionCounts[testId] && !nestedChildren) return acc;\n\n return nestedChildren\n ? acc + Object.keys(nestedChildren)?.reduce((acc, testId) => acc + Object.keys(questionCounts[testId] || {}).length, 0)\n : acc + Object.keys(questionCounts[testId] || {}).length;\n }, 0)\n }, 0)\n }), {})\n }, [state, questionCounts]);\n\n return (\n \n
Question Type
\n \n {valuesByBootcamp[bootcamp]?.map(([key, title]) => (\n setType(key)}>\n \n \n \n {key === type && }\n \n \n {loading ? '' : totals[key]}\n \n \n ))}\n \n
\n );\n};\n\nexport default Type;","import React, {useMemo} from 'react';\nimport styled from 'styled-components';\n\nimport {Container, Label, Count, Header, CustomInputWrapper, InputCheck, InputHoverWrapper, TextTooltip} from './shared';\nimport {useCreateTestState} from '../context';\n\nimport {capitalize} from '@bootcamp/shared/src/util';\nimport {useUserDataContext} from '../../../../contexts/UserData';\n\n\nconst InputWrapper = styled.div`\n display: flex;\n align-items: center;\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n width: 150px;\n`;\nconst Input = styled.input`\n margin: 0;\n opacity: 0;\n height: 0;\n width: 0;\n`;\nconst HeaderWrapper = styled.div`\n display: flex;\n align-items: center;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n\n ${Header} {\n margin-bottom: 0;\n }\n`;\nconst StyledCustomInputWrapper = styled(CustomInputWrapper)`\n border-radius: 18px;\n`;\nconst Row = styled.div`\n display: flex;\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-wrap: wrap;\n max-width: 75%;\n }\n`;\n\nconst values = [\n 'untagged',\n 'learning',\n 'reviewing',\n 'mastered',\n 'bookmarked',\n 'all',\n];\n\nconst Tags = () => {\n const {\n methods: {\n setMasteryFilter,\n },\n variables: {\n loading,\n masteryFilter,\n totals,\n }\n } = useCreateTestState();\n\n const {bootcamp} = useUserDataContext();\n\n const row1 = values.slice(0, 4);\n const row2 = values.slice(4);\n\n const tooltipText = bootcamp === 'nclex'\n ? <>\n Unused: new / unanswered questions.\n
\n Learning: questions you received no credit.\n
\n Reviewing: questions you received partial credit.\n
\n Mastered: questions you received full credit.\n
\n Bookmarked: questions you marked.\n \n : <>\n Unused: new / unanswered questions.\n
\n Learning: questions you answered incorrectly.\n
\n Reviewing: questions you tagged as reviewing.\n
\n Mastered: questions you answered correctly.\n
\n Bookmarked: questions you marked.\n \n\n return (\n \n \n
Question Pool
\n {tooltipText}\n
\n \n {row1.map(value => (\n !!totals[value] && setMasteryFilter(value)}>\n \n \n \n {value === masteryFilter && }\n \n \n \n {loading ? '' : totals[value]}\n \n ))}\n \n \n {row2.map(value => (\n !!totals[value] && setMasteryFilter(value)}>\n \n \n \n {value === masteryFilter && }\n \n \n \n {loading ? '' : totals[value]}\n \n ))}\n \n
\n );\n};\n\nexport default Tags;","import React, {useCallback, useState, useEffect, useRef} from 'react';\nimport {useCreateTestState} from '../context';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport styled, {css} from 'styled-components';\n\nimport {usePrevious} from '@bootcamp/web/src/hooks';\nimport {Container, Label, Count, Header, TextTooltip, CustomInputWrapper, InputCheck, InputMinus, InputHoverWrapper} from './shared';\nimport {ChevronRight} from '@styled-icons/fluentui-system-filled/ChevronRight';\nimport {Plus} from '@styled-icons/heroicons-outline/Plus';\nimport {Minus} from '@styled-icons/heroicons-outline/Minus';\nimport {ReactComponent as Badge} from '../assets/badge.svg';\n\nconst Wrapper = styled.div`\n display: flex;\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n }\n`;\nconst Column = styled.div`\n flex: 1;\n\n &:first-child {\n margin-right: ${({theme}) => theme.layouts.spacing.xl};\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n &:first-child {\n margin: 0;\n }\n }\n`;\nconst HeaderWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0px 4px;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n\n ${Header} {\n margin-bottom: 0;\n margin-left: 6px;\n }\n`;\nconst RowWrapper = styled.div`\n cursor: row-resize;\n`;\nconst RowText= styled.div`\n padding: 6px 8px;\n cursor: ${({disabled}) => disabled ? 'not-allowed' : 'pointer'};\n`;\nconst Expand = styled(ChevronRight)`\n width: 18px;\n height: 18px;\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n\n ${({toggled}) => toggled && css`\n transform: rotate(90deg);\n `}\n`;\nconst ToggleControl = styled.div`\n display: flex;\n flex-direction: row;\n width: 100%;\n justify-content: space-between;\n align-items: center;\n &:hover {\n background: ${({theme, disabled}) => disabled && theme.colors.neutralsPalette.extraLight};\n border-radius: 4px;\n }\n`;\nconst TestInputWrapper = styled.div`\n display: flex;\n flex-direction: column;\n height: ${({toggled}) => toggled ? 'auto' : '0'};\n overflow: hidden;\n padding-left: 20px;\n font-size: 14px;\n`;\nconst InputWrapper = styled.label`\n padding-left: ${({depth}) => depth === 1 ? '6px' : '4px'};\n display: flex;\n align-items: center;\n cursor: ${({disabled}) => disabled ? 'not-allowed' : 'pointer'};\n\n &:hover {\n background: ${({theme, disabled}) => !disabled && theme.colors.neutralsPalette.extraLight};\n border-radius: 4px;\n }\n`;\nconst Input = styled.input`\n margin: 0;\n cursor: pointer;\n\n position: absolute;\n opacity: 0;\n height: 0;\n width: 0;\n`;\nconst SelectAllWrapper = styled.div`\n display: flex;\n align-items: center;\n cursor: ${({disabled}) => disabled ? 'not-allowed' : 'pointer'};\n`;\nconst ExpandCollapse = styled.div`\n display: flex;\n align-items: center;\n font-size: 16px;\n line-height: 0;\n cursor: pointer;\n\n svg {\n width: 16px;\n height: 16px;\n margin-right: 6px;\n }\n ${({theme}) => theme.mediaQueries.mobileL} {\n display: none;\n }\n`;\nconst LockedBadge = styled(Badge)`\n position: absolute;\n width: 100%;\n height: 100%;\n`;\n\nconst InputComponent = ({checked, name, free, value, depth=0, count, loading, containerRef}) => {\n const ref = useRef();\n\n const {isUpgraded} = useUserDataContext();\n\n const locked = !isUpgraded && !free;\n const disabled = loading || !count || locked;\n\n return (\n \n \n \n {locked && }\n \n {!!checked && }\n \n {name}\n {loading ? '' : count}\n \n \n );\n};\n\nconst MemoizedInput = React.memo(InputComponent);\n\nconst Row = ({id, parentId, name, children, checked, testCounts, free, subjectCounts, topicCounts, type, onChange, expandAll, loading, defaultToggled=false}) => {\n const [toggled, setToggled] = useState(defaultToggled);\n const previousExpandAll = usePrevious(expandAll);\n const inputContainerRef = useRef();\n\n function handleToggleClick(event) {\n const shouldHandleToggleClick = !inputContainerRef?.current?.contains(event?.target);\n\n if (shouldHandleToggleClick) {\n event.preventDefault()\n setToggled(!toggled)\n }\n }\n\n // use effect to sync toggled state with expandAll state\n useEffect(() => {\n if (previousExpandAll === undefined || previousExpandAll === expandAll) return;\n\n setToggled(expandAll);\n }, [expandAll]);\n\n const checkedSubjectTotals = Object\n .keys(children)\n .reduce((acc, testId) => children[testId].checked ? acc + testCounts[testId] : acc, 0);\n\n return (\n \n \n \n \n \n \n {Object.keys(children).map((key) => {\n const {name: testName, checked, children: nestedChildren} = children[key];\n\n return nestedChildren\n ? \n : \n })}\n \n \n );\n}\n\nconst Questions = () => {\n const [expandAll, setExpandAll] = useState(false);\n\n const {isUpgraded, bootcamp} = useUserDataContext();\n\n const {\n methods: {\n setData,\n setSelectAll,\n recursiveToggleState,\n },\n variables: {\n loading,\n selectAll,\n masteryFilter,\n testCounts,\n subjectCounts,\n topicCounts,\n data,\n type,\n },\n } = useCreateTestState();\n\n const previousMasteryFilter = usePrevious(masteryFilter);\n\n const handleSubjectChange = useCallback(({id}) => {\n const subjectChecked = data[id]?.checked;\n\n const validate = ({id, checked}) => !!testCounts[id] ? !subjectChecked : checked;\n const update = recursiveToggleState(data[id], validate);\n\n setData({...data, [id]: update});\n\n }, [data, testCounts]);\n\n const handleTopicChange = useCallback(({id, parentId}) => {\n const topicChecked = data[parentId].children[id].checked;\n\n const validate = ({id: testId, checked, parentId: testParentId}) => (!!testCounts[testId] && testParentId === id) ? !topicChecked : checked;\n\n const update = recursiveToggleState(data[parentId], validate);\n\n setData({...data, [parentId]: update});\n\n }, [data, testCounts]);\n\n const handleTestChange = useCallback(({testId, parentId, grandparentId}) => {\n\n const updateKey = grandparentId || parentId;\n\n const validate = ({id, checked}) => (!!testCounts[id] && testId === id) ? !checked : checked;\n\n const update = recursiveToggleState(data[updateKey], validate);\n\n setData({...data, [updateKey]: update});\n\n }, [data, testCounts]);\n\n const handleOnChange = useCallback((event) => {\n event.stopPropagation();\n\n const {type, ...args} = JSON.parse(event?.target?.value || '{}');\n\n if (!type) return;\n\n const runUpdate = type === 'subject'\n ? handleSubjectChange\n : type === 'topic'\n ? handleTopicChange\n : handleTestChange\n\n runUpdate(args);\n\n }, [data, testCounts]);\n\n const handleSelectAllChange = useCallback(event => {\n\n event.preventDefault();\n event.stopPropagation();\n\n const validate = ({id, free}) => ((!!topicCounts[id] || !!testCounts[id]) && (isUpgraded || free)) ? !selectAll : false;\n\n const update = Object.keys(data).reduce((acc, key) => ({\n ...acc,\n [key]: recursiveToggleState(data[key], validate)\n }), {})\n\n setData(update);\n setSelectAll(!selectAll);\n\n }, [data, selectAll, testCounts]);\n\n const handleExpandAllChange = useCallback(event => {\n setExpandAll(!expandAll);\n }, [expandAll]);\n\n // use effect for syncing data state with mastery filter\n useEffect(() => {\n if (previousMasteryFilter === undefined || (previousMasteryFilter === masteryFilter) || loading) return;\n\n const validate = ({id, checked, free}) => (\n ((!!topicCounts[id] || !!testCounts[id]) && (isUpgraded || free)) ? selectAll || checked : false\n );\n\n const update = Object.keys(data).reduce((acc, key) => ({\n ...acc,\n [key]: recursiveToggleState(data[key], validate)\n }), {});\n\n setData(update);\n\n }, [data, masteryFilter, previousMasteryFilter, testCounts, loading, selectAll]);\n\n // use effect for syncing 'select all' state\n useEffect(() => {\n if (loading) return;\n\n if (selectAll) {\n const noneChecked = Object\n .values(data)\n .every(({ checked }) => !checked);\n\n noneChecked && setSelectAll(false);\n } else {\n const allChecked = Object\n .values(data)\n .every(({ checked }) => checked);\n\n allChecked && setSelectAll(true);\n }\n }, [data, selectAll]);\n\n // splitting subjects out into two columns\n const dataKeys = Object.keys(data);\n const column1 = dataKeys.slice(0, Math.ceil(dataKeys.length / 2));\n const column2 = dataKeys.slice(Math.ceil(dataKeys.length / 2));\n\n const headerText = ['med-school'].includes(bootcamp) && !['anatomy'].includes(type) ? 'Systems' : 'Subjects';\n\n return (\n \n \n {}} disabled={loading || !isUpgraded}>\n \n \n {selectAll && isUpgraded && }\n \n
{headerText}
\n
\n {} : handleExpandAllChange}>\n {expandAll ? : }\n {expandAll ? 'Collapse All' : 'Expand All'}\n \n
\n \n \n {column1\n .map(key => (\n \n ))\n }\n \n \n {column2\n .map(key => (\n \n ))}\n \n \n
\n );\n};\n\nexport default Questions;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport {Container, Header} from './shared';\nimport { useCreateTestState } from '../context';\nimport {Body3} from '@bootcamp/web/src/components/Typography';\nimport moment from 'moment';\n\nconst StyledHeader = styled(Header)`\n margin: 0;\n margin-bottom: 8px;\n`;\nconst Subheader = styled(Body3)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n line-height: 100%;\n`;\nconst Wrapper = styled.div`\n`;\nconst Input = styled.input`\n padding: ${({theme}) => theme.layouts.spacing.ms};\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n border-radius: 8px;\n width: 100%;\n font-size: 16px;\n\n &:focus {\n outline: none;\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n }\n`;\n\n\nconst Count = () => {\n const {\n variables: {\n testCount,\n maxQuestions,\n loading,\n bootcamp\n },\n methods: {\n setTestCount\n }\n } = useCreateTestState();\n\n function handleChange(event) {\n setTestCount(event?.target?.value);\n }\n\n function clampValue() {\n const clampedValue = Math.floor(Math.min(Math.max(1, testCount), maxQuestions));\n setTestCount(clampedValue);\n }\n // 90 seconds per question\n const durationMultiplier = bootcamp === 'inbde' ? 63 : 90;\n const duration = moment.duration(testCount * durationMultiplier, 'seconds');\n const hours = duration.hours();\n const minutes = duration.minutes();\n const formattedString = `${hours ? `${hours}hr ` : ''}${minutes ? `${minutes}min` : ''}`;\n return (\n \n Number of Questions\n You can have a maximum of {maxQuestions} questions per test.\n \n \n \n This test should take about {formattedString} to complete.\n \n );\n};\n\nCount.defaultProps = {};\nCount.propTypes = {};\n\nexport default Count;\n","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\n\n// import {TestSearch} from '../../../admin/TestList';\nimport {createQuestionConnection, deleteQuestionConnection} from '@bootcamp/shared/src/requests';\nimport {H2} from '../../../components/Typography';\n\nimport styled from 'styled-components';\n\nconst Container = styled.div`${({theme}) => `\n width: 80%;\n height: 80%;\n background: white;\n border-radius: 12px;\n padding: ${theme.layouts.spacing.l};\n overflow: hidden;\n`}`;\n\nconst Wrapper = styled.div`\n height: 100%;\n`;\n\nconst Header = styled(H2)`\n margin ${({theme}) => theme.layouts.spacing.l} 0px;\n`;\n\n// Leaving this here just in case we want to bring it back\nasync function addQuestion(questionId, testBlockConnectionTestBlockId, blockName) {\n const confirmAdd = window.confirm(`Are you sure you want to add question ${questionId} to ${blockName}?`);\n\n if (!confirmAdd) return;\n\n const {data: {addUniqueQuestionToTestBlock}} = await createQuestionConnection(questionId, testBlockConnectionTestBlockId);\n\n if (addUniqueQuestionToTestBlock.match('This question already exists')) alert(`This question is already in ${blockName}!`);\n\n return addUniqueQuestionToTestBlock;\n}\n\nasync function moveQuestion(questionConnection, testBlockConnectionTestBlockId, blockName) {\n const {id, question} = questionConnection;\n\n const confirmAdd = window.confirm(`Are you sure you want to move question ${question.id} to ${blockName}?`);\n\n if (!confirmAdd) return;\n\n // create connection\n const {data: {addUniqueQuestionToTestBlock}} = await createQuestionConnection(question.id, testBlockConnectionTestBlockId);\n\n // double check that the connection isn't already there\n if (addUniqueQuestionToTestBlock.match('This question already exists')) {\n alert(`This question is already in ${blockName}!`);\n return;\n }\n\n // delete connection\n await deleteQuestionConnection(id);\n\n window.location.reload();\n return true;\n}\n\nconst MoveQuestionToTest = ({question, questionConnection, modes}) => {\n const [{loadingBlockId, finishedLoading}, setState] = useState({loadingBlockId: false, finishedLoading: false});\n\n return (\n {\n event.preventDefault();\n event.stopPropagation();\n }}>\n
Moving question {question.id}
\n \n {/* ([])}\n createBlockButtonConfig={(testBlockConnectionTestBlockId, blockName) => [\n modes.indexOf('add') !== -1 && {\n children: loadingBlockId === testBlockConnectionTestBlockId && !finishedLoading\n ? 'Adding...'\n : loadingBlockId === testBlockConnectionTestBlockId && finishedLoading\n ? 'Added'\n : 'Add',\n onClick: async event => {\n setState({loadingBlockId: testBlockConnectionTestBlockId, finishedLoading: false});\n await addQuestion(question.id, testBlockConnectionTestBlockId, blockName);\n setState({loadingBlockId: testBlockConnectionTestBlockId, finishedLoading: true});\n },\n disabled: loadingBlockId === testBlockConnectionTestBlockId,\n as: 'button',\n },\n modes.indexOf('move') !== -1 && {\n children: loadingBlockId === testBlockConnectionTestBlockId && !finishedLoading\n ? 'Moving....'\n : loadingBlockId === testBlockConnectionTestBlockId && finishedLoading\n ? 'Moved!'\n : 'Move',\n onClick: async event => {\n setState({loadingBlockId: testBlockConnectionTestBlockId, finishedLoading: false});\n const success = await moveQuestion(questionConnection, testBlockConnectionTestBlockId, blockName);\n setState({loadingBlockId: testBlockConnectionTestBlockId, finishedLoading: true});\n success && window.location.reload();\n },\n disabled: loadingBlockId === testBlockConnectionTestBlockId,\n as: 'button',\n }\n ]}\n /> */}\n \n
\n );\n}\n\nMoveQuestionToTest.propTypes = {\n question: PropTypes.shape({}).isRequired,\n questionConnection: PropTypes.shape({}),\n modes: PropTypes.oneOf(['add', 'move']),\n};\n\nMoveQuestionToTest.defaultProps = {\n modes: ['add', 'move'],\n};\n\nexport default MoveQuestionToTest;\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgCalculator(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 15,\n height: 20,\n viewBox: \"0 0 15 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4 1.5H11C12.3807 1.5 13.5 2.61929 13.5 4V6H1.5V4C1.5 2.61929 2.61929 1.5 4 1.5ZM0 7.5V6V4C0 1.79086 1.79086 0 4 0H11C13.2091 0 15 1.79086 15 4V6V7.5V16C15 18.2091 13.2091 20 11 20H4C1.79086 20 0 18.2091 0 16V7.5ZM13.5 7.5V16C13.5 17.3807 12.3807 18.5 11 18.5H4C2.61929 18.5 1.5 17.3807 1.5 16V7.5H13.5Z\",\n fill: \"white\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCalculator);\nexport default __webpack_public_path__ + \"static/media/Calculator.9afea85b.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgFlag(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 3C3 2.46957 3.21071 1.96086 3.58579 1.58579C3.96086 1.21071 4.46957 1 5 1H15C15.5304 1 16.0391 1.21071 16.4142 1.58579C16.7893 1.96086 17 2.46957 17 3V19L10 15.5L3 19V3Z\",\n stroke: \"white\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFlag);\nexport default __webpack_public_path__ + \"static/media/Flag.0b76a45a.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgClock(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_5226_14573)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 4.375C10 4.20924 9.93415 4.05027 9.81694 3.93306C9.69973 3.81585 9.54076 3.75 9.375 3.75C9.20924 3.75 9.05027 3.81585 8.93306 3.93306C8.81585 4.05027 8.75 4.20924 8.75 4.375V11.25C8.75004 11.3602 8.77919 11.4684 8.83451 11.5636C8.88982 11.6589 8.96934 11.7379 9.065 11.7925L13.44 14.2925C13.5836 14.3701 13.7518 14.3885 13.9087 14.3437C14.0657 14.2989 14.1988 14.1944 14.2798 14.0527C14.3608 13.9111 14.3831 13.7433 14.342 13.5854C14.301 13.4274 14.1997 13.2918 14.06 13.2075L10 10.8875V4.375Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 20C12.6522 20 15.1957 18.9464 17.0711 17.0711C18.9464 15.1957 20 12.6522 20 10C20 7.34784 18.9464 4.8043 17.0711 2.92893C15.1957 1.05357 12.6522 0 10 0C7.34784 0 4.8043 1.05357 2.92893 2.92893C1.05357 4.8043 0 7.34784 0 10C0 12.6522 1.05357 15.1957 2.92893 17.0711C4.8043 18.9464 7.34784 20 10 20ZM18.75 10C18.75 12.3206 17.8281 14.5462 16.1872 16.1872C14.5462 17.8281 12.3206 18.75 10 18.75C7.67936 18.75 5.45376 17.8281 3.81282 16.1872C2.17187 14.5462 1.25 12.3206 1.25 10C1.25 7.67936 2.17187 5.45376 3.81282 3.81282C5.45376 2.17187 7.67936 1.25 10 1.25C12.3206 1.25 14.5462 2.17187 16.1872 3.81282C17.8281 5.45376 18.75 7.67936 18.75 10Z\",\n fill: \"white\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_5226_14573\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 20,\n height: 20,\n fill: \"white\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgClock);\nexport default __webpack_public_path__ + \"static/media/Clock.9f091b35.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgSettings(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_5226_11654)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 10C13 10.7956 12.6839 11.5587 12.1213 12.1213C11.5587 12.6839 10.7956 13 10 13C9.20435 13 8.44129 12.6839 7.87868 12.1213C7.31607 11.5587 7 10.7956 7 10C7 9.20435 7.31607 8.44129 7.87868 7.87868C8.44129 7.31607 9.20435 7 10 7C10.7956 7 11.5587 7.31607 12.1213 7.87868C12.6839 8.44129 13 9.20435 13 10V10Z\",\n stroke: \"white\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.325 2.317C8.751 0.561 11.249 0.561 11.675 2.317C11.7389 2.5808 11.8642 2.82578 12.0407 3.032C12.2172 3.23822 12.4399 3.39985 12.6907 3.50375C12.9414 3.60764 13.2132 3.65085 13.4838 3.62987C13.7544 3.60889 14.0162 3.5243 14.248 3.383C15.791 2.443 17.558 4.209 16.618 5.753C16.4769 5.98466 16.3924 6.24634 16.3715 6.51677C16.3506 6.78721 16.3938 7.05877 16.4975 7.30938C16.6013 7.55999 16.7627 7.78258 16.9687 7.95905C17.1747 8.13553 17.4194 8.26091 17.683 8.325C19.439 8.751 19.439 11.249 17.683 11.675C17.4192 11.7389 17.1742 11.8642 16.968 12.0407C16.7618 12.2172 16.6001 12.4399 16.4963 12.6907C16.3924 12.9414 16.3491 13.2132 16.3701 13.4838C16.3911 13.7544 16.4757 14.0162 16.617 14.248C17.557 15.791 15.791 17.558 14.247 16.618C14.0153 16.4769 13.7537 16.3924 13.4832 16.3715C13.2128 16.3506 12.9412 16.3938 12.6906 16.4975C12.44 16.6013 12.2174 16.7627 12.0409 16.9687C11.8645 17.1747 11.7391 17.4194 11.675 17.683C11.249 19.439 8.751 19.439 8.325 17.683C8.26108 17.4192 8.13578 17.1742 7.95929 16.968C7.7828 16.7618 7.56011 16.6001 7.30935 16.4963C7.05859 16.3924 6.78683 16.3491 6.51621 16.3701C6.24559 16.3911 5.98375 16.4757 5.752 16.617C4.209 17.557 2.442 15.791 3.382 14.247C3.5231 14.0153 3.60755 13.7537 3.62848 13.4832C3.64942 13.2128 3.60624 12.9412 3.50247 12.6906C3.3987 12.44 3.23726 12.2174 3.03127 12.0409C2.82529 11.8645 2.58056 11.7391 2.317 11.675C0.561 11.249 0.561 8.751 2.317 8.325C2.5808 8.26108 2.82578 8.13578 3.032 7.95929C3.23822 7.7828 3.39985 7.56011 3.50375 7.30935C3.60764 7.05859 3.65085 6.78683 3.62987 6.51621C3.60889 6.24559 3.5243 5.98375 3.383 5.752C2.443 4.209 4.209 2.442 5.753 3.382C6.749 3.99 8.049 3.452 8.325 2.317Z\",\n stroke: \"white\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_5226_11654\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 20,\n height: 20,\n fill: \"white\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSettings);\nexport default __webpack_public_path__ + \"static/media/Settings.9a38b088.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _rect2, _rect3, _rect4;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgQuestionIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 14,\n viewBox: \"0 0 20 14\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 5.26318,\n y: 0.684212,\n width: 12.6316,\n height: 2.10526,\n rx: 1.05263,\n fill: \"white\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 5.26318,\n y: 11.2105,\n width: 12.6316,\n height: 2.10526,\n rx: 1.05263,\n fill: \"white\"\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 2.10522,\n y: 5.94736,\n width: 12.6316,\n height: 2.10526,\n rx: 1.05263,\n fill: \"white\"\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 4.34211,\n width: 19,\n height: 5.31579,\n rx: 2.65789,\n stroke: \"white\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgQuestionIcon);\nexport default __webpack_public_path__ + \"static/media/QuestionIcon.2d77d374.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgEnd(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 27,\n height: 20,\n viewBox: \"0 0 27 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_5226_16144)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.6667 20C24.4271 20 26.6667 17.7604 26.6667 15V5C26.6667 2.23958 24.4271 0 21.6667 0H17.2917C16.9479 0 16.6667 0.28127 16.6667 0.625V2.70833C16.6667 3.05206 16.9479 3.33333 17.2917 3.33333H21.6667C22.5886 3.33333 23.3333 4.07811 23.3333 5V15C23.3333 15.9219 22.5886 16.6667 21.6667 16.6667H17.2917C16.9479 16.6667 16.6667 16.9479 16.6667 17.2917V19.375C16.6667 19.7187 16.9479 20 17.2917 20H21.6667ZM10.0521 18.7344L17.9636 10.8906C18.4584 10.4011 18.4584 9.60419 17.9636 9.11458L10.0521 1.26561C9.56248 0.78125 8.77085 0.786438 8.28644 1.27085L7.14584 2.41145C6.64062 2.91148 6.66148 3.73439 7.18231 4.20832L11.224 7.91148H1.25C0.557302 7.91148 0 8.46873 0 9.16148V10.8281C0 11.5208 0.557302 12.0781 1.25 12.0781H11.2291L7.1875 15.7812C6.66148 16.2656 6.64062 17.0833 7.14584 17.5886L8.28644 18.7291C8.77604 19.2188 9.56248 19.2188 10.0521 18.7344Z\",\n fill: \"white\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_5226_16144\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 26.6667,\n height: 20,\n fill: \"white\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgEnd);\nexport default __webpack_public_path__ + \"static/media/End.a41f6cb0.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgNavigator(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_5226_16149)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.45402 14.548C5.45402 14.548 10.022 13.921 11.972 11.972C13.922 10.023 14.548 5.45402 14.548 5.45402C14.548 5.45402 9.97902 6.08102 8.03002 8.03002C6.08102 9.97902 5.45402 14.548 5.45402 14.548ZM9.01702 9.01503C9.83502 8.19703 11.402 7.61502 12.746 7.25302C12.385 8.59502 11.801 10.173 10.986 10.985C10.8569 11.1146 10.7035 11.2174 10.5345 11.2875C10.3656 11.3577 10.1844 11.3938 10.0015 11.3938C9.8186 11.3938 9.63748 11.3577 9.46853 11.2875C9.29959 11.2174 9.14616 11.1146 9.01702 10.985C8.88743 10.8558 8.78462 10.7023 8.71446 10.5333C8.64431 10.3642 8.60819 10.183 8.60819 10C8.60819 9.81702 8.64431 9.63581 8.71446 9.46679C8.78462 9.29776 8.88743 9.14424 9.01702 9.01503ZM10.001 0.400024C4.69803 0.400024 0.400024 4.69802 0.400024 10C0.399893 11.2609 0.648141 12.5094 1.13059 13.6743C1.61304 14.8392 2.32024 15.8977 3.2118 16.7892C4.10336 17.6808 5.16182 18.388 6.32673 18.8705C7.49163 19.3529 8.74017 19.6012 10.001 19.601C15.302 19.601 19.601 15.303 19.601 10C19.601 4.69802 15.302 0.400024 10.001 0.400024ZM10 17.6C9.00198 17.6 8.0137 17.4034 7.09163 17.0215C6.16956 16.6396 5.33174 16.0798 4.62601 15.374C3.92029 14.6683 3.36048 13.8305 2.97854 12.9084C2.5966 11.9863 2.40002 10.9981 2.40002 10C2.40002 9.00198 2.5966 8.0137 2.97854 7.09163C3.36048 6.16956 3.92029 5.33174 4.62601 4.62601C5.33174 3.92029 6.16956 3.36048 7.09163 2.97854C8.0137 2.5966 9.00198 2.40002 10 2.40002C10.9981 2.40002 11.9863 2.5966 12.9084 2.97854C13.8305 3.36048 14.6683 3.92029 15.374 4.62601C16.0798 5.33174 16.6396 6.16956 17.0215 7.09163C17.4034 8.0137 17.6 9.00198 17.6 10C17.6 10.9981 17.4034 11.9863 17.0215 12.9084C16.6396 13.8305 16.0798 14.6683 15.374 15.374C14.6683 16.0798 13.8305 16.6396 12.9084 17.0215C11.9863 17.4034 10.9981 17.6 10 17.6Z\",\n fill: \"white\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_5226_16149\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 20,\n height: 20,\n fill: \"white\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgNavigator);\nexport default __webpack_public_path__ + \"static/media/Navigator.ab98db21.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgArrow(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_5226_16153)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.5055 19.3649L11.4965 18.381C11.925 17.96 11.9161 17.273 11.4786 16.8608L6.09976 11.7728H18.9287C19.5224 11.7728 20 11.2986 20 10.7091V9.29086C20 8.7014 19.5224 8.22716 18.9287 8.22716H6.09976L11.4786 3.13916C11.9116 2.72699 11.9205 2.04002 11.4965 1.61897L10.5055 0.635044C10.0904 0.218413 9.41189 0.218413 8.99232 0.635044L0.31471 9.25095C-0.104903 9.66317 -0.104903 10.3368 0.31471 10.7534L8.99232 19.3649C9.40745 19.7816 10.086 19.7816 10.5055 19.3649Z\",\n fill: \"white\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_5226_16153\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 20,\n height: 19.3548,\n fill: \"white\",\n transform: \"translate(0 0.322571)\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrow);\nexport default __webpack_public_path__ + \"static/media/Arrow.9fa1e0da.svg\";\nexport { ForwardRef as ReactComponent };","var _pattern, _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgAlert(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n height: 32,\n viewBox: \"0 0 32 32\",\n width: 32,\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _pattern || (_pattern = /*#__PURE__*/React.createElement(\"pattern\", {\n id: \"a\",\n height: 1,\n patternContentUnits: \"objectBoundingBox\",\n width: 1\n }, /*#__PURE__*/React.createElement(\"image\", {\n height: 32,\n transform: \"scale(.03125)\",\n width: 32,\n xlinkHref: \"data:image/png;base64,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\"\n }))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m0 0h32v32h-32z\",\n fill: \"url(#a)\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgAlert);\nexport default __webpack_public_path__ + \"static/media/Alert.09773f8f.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgFlagsFilled(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 48,\n height: 48,\n viewBox: \"0 0 48 48\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33.5659 22.9848L33.6403 23.0074L33.6535 23.0834L36.2936 38.2795L39.0455 37.3913L34.041 4.50552L29.6772 4.73609L29.6592 4.73704L29.6417 4.73293C23.5615 3.30727 20.3316 3.59205 18.4483 4.78102C16.6257 5.93163 16.0295 7.94667 15.3551 10.2258C15.3329 10.3009 15.3106 10.3763 15.2882 10.452C14.5889 12.8095 13.7661 15.3943 11.3425 17.4121C8.91942 19.4296 4.91682 20.8649 -2.10544 20.9855L-2.10583 20.9855C-2.5239 20.9914 -2.79519 21.1675 -2.88902 21.3581C-2.93499 21.4515 -2.94198 21.5529 -2.90338 21.6548C-2.86412 21.7585 -2.77367 21.8724 -2.60752 21.9775C5.3026 26.9787 10.0978 29.1024 13.1927 29.597C14.7359 29.8436 15.8477 29.6836 16.7109 29.2806C17.5752 28.8771 18.2043 28.2233 18.7708 27.4558C19.0543 27.0717 19.3204 26.6616 19.5929 26.2412L19.5994 26.2312C19.8692 25.8151 20.1452 25.3893 20.4472 24.9756C21.0567 24.1408 21.7767 23.3489 22.7847 22.7637C24.8044 21.5911 27.9391 21.2706 33.5659 22.9848Z\",\n fill: \"white\",\n stroke: \"#006DAA\",\n strokeWidth: 0.25\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.1197 26.4908L37.194 26.5134L37.2072 26.5895L39.8473 41.7855L42.5992 40.8973L37.5947 8.01153L33.2309 8.2421L33.2129 8.24305L33.1954 8.23894C27.1152 6.81328 23.8853 7.09806 22.002 8.28703C20.1794 9.43764 19.5832 11.4527 18.9088 13.7318C18.8866 13.8069 18.8643 13.8823 18.8419 13.958C18.1426 16.3155 17.3198 18.9003 14.8962 20.9181C12.4731 22.9356 8.47053 24.3709 1.44827 24.4915L1.44788 24.4915C1.02982 24.4974 0.758517 24.6735 0.664689 24.8641C0.618726 24.9575 0.611731 25.0589 0.650333 25.1608C0.689595 25.2645 0.780043 25.3784 0.946187 25.4835C8.85631 30.4847 13.6515 32.6085 16.7464 33.103C18.2896 33.3496 19.4014 33.1896 20.2646 32.7866C21.1289 32.3831 21.758 31.7294 22.3245 30.9618C22.608 30.5777 22.8741 30.1676 23.1466 29.7472L23.1531 29.7372C23.4229 29.3211 23.6989 28.8953 24.0009 28.4816C24.6104 27.6468 25.3304 26.8549 26.3384 26.2697C28.3581 25.0971 31.4928 24.7766 37.1197 26.4908Z\",\n fill: \"white\",\n stroke: \"#006DAA\",\n strokeWidth: 0.25\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.6724 29.9968L40.7467 30.0194L40.7599 30.0955L43.4001 45.2915L46.1519 44.4033L41.1475 11.5175L36.7837 11.7481L36.7657 11.7491L36.7481 11.7449C30.6679 10.3193 27.438 10.6041 25.5547 11.793C23.7322 12.9437 23.1359 14.9587 22.4616 17.2378C22.4393 17.3129 22.417 17.3883 22.3946 17.464C21.6954 19.8215 20.8725 22.4063 18.449 24.4241C16.0259 26.4416 12.0233 27.8769 5.001 27.9975L5.00061 27.9975C4.58255 28.0034 4.31125 28.1795 4.21742 28.3701C4.17146 28.4635 4.16447 28.5649 4.20307 28.6669C4.24233 28.7705 4.33278 28.8844 4.49892 28.9896C12.409 33.9907 17.2042 36.1145 20.2991 36.609C21.8423 36.8556 22.9542 36.6957 23.8173 36.2927C24.6816 35.8891 25.3107 35.2354 25.8773 34.4678C26.1608 34.0837 26.4269 33.6736 26.6994 33.2533L26.7059 33.2433C26.9756 32.8271 27.2516 32.4013 27.5537 31.9876C28.1632 31.1529 28.8831 30.3609 29.8911 29.7757C31.9108 28.6031 35.0456 28.2826 40.6724 29.9968Z\",\n fill: \"white\",\n stroke: \"#006DAA\",\n strokeWidth: 0.25\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFlagsFilled);\nexport default __webpack_public_path__ + \"static/media/FlagsFilled.084aae15.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgFlagFilled(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 48,\n height: 48,\n viewBox: \"0 0 48 48\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_7491_56652)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.743808 25.3347C36.3645 48.1595 16.2192 18.6946 41.5 26.5L44.5 44L47.8665 42.8988L42.1957 5.13241L37.1545 5.40237C9.76041 -1.10742 32.9392 23.3916 1.38092 23.9411C0.372743 23.9555 -0.0802447 24.8064 0.743808 25.3347Z\",\n fill: \"white\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_7491_56652\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 48,\n height: 48,\n fill: \"white\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFlagFilled);\nexport default __webpack_public_path__ + \"static/media/FlagFilled.9a5fe4b6.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgReviewIncomplete(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 48,\n height: 48,\n viewBox: \"0 0 48 48\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.5 8.5L39.5 39.5\",\n stroke: \"white\",\n strokeWidth: 4,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.5 8.5L8.5 39.5\",\n stroke: \"white\",\n strokeWidth: 4,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgReviewIncomplete);\nexport default __webpack_public_path__ + \"static/media/ReviewIncomplete.f9e7acfd.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _rect;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgPause(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.5 7V13\",\n stroke: \"white\",\n strokeWidth: 3,\n strokeLinecap: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.5 7V13\",\n stroke: \"white\",\n strokeWidth: 3,\n strokeLinecap: \"round\"\n })), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 1,\n y: 1,\n width: 18,\n height: 18,\n rx: 9,\n stroke: \"white\",\n strokeWidth: 2\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPause);\nexport default __webpack_public_path__ + \"static/media/Pause.2291d147.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgClose(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 15,\n height: 16,\n viewBox: \"0 0 15 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2 1.5H13C13.5523 1.5 14 1.94772 14 2.5V13.5C14 14.0523 13.5523 14.5 13 14.5H2C1.44772 14.5 1 14.0523 1 13.5V2.5C1 1.94772 1.44772 1.5 2 1.5ZM0 2.5C0 1.39543 0.895431 0.5 2 0.5H13C14.1046 0.5 15 1.39543 15 2.5V13.5C15 14.6046 14.1046 15.5 13 15.5H2C0.89543 15.5 0 14.6046 0 13.5V2.5ZM3.35355 3.14645C3.15829 2.95118 2.84171 2.95118 2.64645 3.14645C2.45118 3.34171 2.45118 3.65829 2.64645 3.85355L6.79289 8L2.64645 12.1464C2.45118 12.3417 2.45118 12.6583 2.64645 12.8536C2.84171 13.0488 3.15829 13.0488 3.35355 12.8536L7.5 8.70711L11.6464 12.8536C11.8417 13.0488 12.1583 13.0488 12.3536 12.8536C12.5488 12.6583 12.5488 12.3417 12.3536 12.1464L8.20711 8L12.3536 3.85355C12.5488 3.65829 12.5488 3.34171 12.3536 3.14645C12.1583 2.95118 11.8417 2.95118 11.6464 3.14645L7.5 7.29289L3.35355 3.14645Z\",\n fill: \"white\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgClose);\nexport default __webpack_public_path__ + \"static/media/close.1a8d16d6.svg\";\nexport { ForwardRef as ReactComponent };","import styled from 'styled-components';\n\nimport {ReactComponent as CloseSVG} from '../assets/close.svg';\n\nexport const CloseIcon = styled(CloseSVG)`\n user-select: none;\n cursor: pointer;\n margin-right: 4px;\n`;\nexport const PopupButton = styled.div`\n display: flex;\n align-items: center;\n cursor: pointer;\n\n &:hover {\n color: #FFFF00;\n path {\n fill: #FFFF00;\n }\n rect {\n stroke: #FFFF00;\n }\n }\n`;","import styled, {css} from 'styled-components';\nimport {Check as Check2} from '@styled-icons/fa-solid/Check';\nimport {Cross as X} from '@styled-icons/entypo/Cross';\n\nimport {ReactComponent as CalculatorSVG} from './assets/Calculator.svg';\nimport {ReactComponent as FlagSVG} from './assets/Flag.svg';\nimport {ReactComponent as ClockSVG} from './assets/Clock.svg';\nimport {ReactComponent as SettingsSVG} from './assets/Settings.svg';\nimport {ReactComponent as QuestionIconSVG} from './assets/QuestionIcon.svg';\nimport {ReactComponent as EndSVG} from './assets/End.svg';\nimport {ReactComponent as NavigatorSVG} from './assets/Navigator.svg';\nimport {ReactComponent as ArrowSVG} from './assets/Arrow.svg';\n\nimport {ReactComponent as AlertSVG} from './assets/Alert.svg';\nimport {ReactComponent as FlagsFilledSVG} from './assets/FlagsFilled.svg';\nimport {ReactComponent as FlagFilledSVG} from './assets/FlagFilled.svg';\nimport {ReactComponent as ReviewIncompleteSVG} from './assets/ReviewIncomplete.svg';\nimport {ReactComponent as PauseSVG} from './assets/Pause.svg';\nimport {useHotkeys} from 'react-hotkeys-hook';\n\nimport {PopupButton, CloseIcon} from '@bootcamp/web/src/components/Modal/components/shared';\n\nexport const Box = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n background: #006DAA;\n padding: 4px;\n`;\n\nexport const BoxSection = styled.div`\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: row;\n align-items: center;\n color: white;\n`;\n\nexport const BoxSubsection = styled(BoxSection)`\n margin-right: 12px;\n &:last-child {\n margin-right: 0;\n }\n`;\n\nconst IconContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n cursor: pointer;\n user-select: none;\n padding: 4px;\n\n svg {\n width: 26px;\n height: 26px;\n }\n\n &:hover {\n background-color: #283294;\n }\n`;\n\nconst IconText = styled.div`\n font-family: Arial;\n font-style: normal;\n font-weight: normal;\n font-size: 12px;\n line-height: 100%;\n color: white;\n white-space: nowrap;\n margin-top: 4px;\n ${({theme}) => theme.mediaQueries.laptop} {\n display: none;\n }\n`;\n\nexport const IconButton = ({className, Icon, text, onClick}) => (\n \n \n \n \n)\n\nexport const MenuText = styled.div`\n font-family: Arial;\n font-style: normal;\n font-weight: bold;\n font-size: 15px;\n line-height: 100%;\n color: white;\n white-space: nowrap;\n`;\n\nexport const XIcon = styled(X)`\n color: #FF0000;\n`;\nexport const CheckIcon = styled(Check2)`\n color: #02A604;\n`;\nexport const ButtonIcon = styled.img.attrs(props => ({draggable: false}))`\n user-select: none;\n cursor: pointer;\n`\nconst ButtonIconStyle = `\n user-select: none;\n cursor: pointer;\n`;\n\nexport const FlagIcon = styled(FlagSVG).attrs(props => ({draggable: false}))`\n ${ButtonIconStyle}\n margin: 0 8px;\n ${({marked}) => marked && css`\n fill: white;\n `}\n ${({withColor}) => withColor && css`fill: #E05E57;`}\n`\nexport const ClockIcon = styled(ClockSVG).attrs(props => ({draggable: false}))`\n ${ButtonIconStyle}\n margin: 0 8px;\n`\nexport const SettingsIcon = styled(SettingsSVG).attrs(props => ({draggable: false}))`\n ${ButtonIconStyle}\n margin: 0 8px;\n`\nexport const QuestionIcon = styled(QuestionIconSVG)`\n ${ButtonIconStyle}\n margin: 0 8px;\n`\nexport const CalculatorIcon = styled(CalculatorSVG).attrs(props => ({draggable: false}))`\n ${ButtonIconStyle}\n margin-right: 8px;\n`;\nexport const EndIcon = styled(EndSVG).attrs(props => ({draggable: false}))`\n ${ButtonIconStyle}\n width: 20px;\n margin-right: 4px;\n`;\nexport const NavigatorIcon = styled(NavigatorSVG).attrs(props => ({draggable: false}))`\n ${ButtonIconStyle}\n margin-right: 4px;\n`;\nexport const AlertIcon = styled(AlertSVG).attrs(props => ({draggable: false}))`\n min-height: 32px;\n min-width: 32px;\n max-height: 32px;\n max-width: 32px;\n margin-right: 16px;\n`;\nexport const FlagsFilledIcon = styled(FlagsFilledSVG).attrs(props => ({draggable: false}))`\n min-height: 16px;\n min-width: 16px;\n max-height: 16px;\n max-width: 16px;\n margin-right: 8px;\n`;\nexport const FlagFilledIcon = styled(FlagFilledSVG).attrs(props => ({draggable: false}))`\n min-height: 16px;\n min-width: 16px;\n max-height: 16px;\n max-width: 16px;\n margin-right: 8px;\n`;\nexport const ReviewIncompleteIcon = styled(ReviewIncompleteSVG).attrs(props => ({draggable: false}))`\n min-height: 16px;\n min-width: 16px;\n max-height: 16px;\n max-width: 16px;\n margin-right: 8px;\n`;\nexport const PauseIcon = styled(PauseSVG).attrs(props => ({draggable: false}))`\n min-height: 16px;\n min-width: 16px;\n max-height: 16px;\n max-width: 16px;\n`;\nexport const LeftArrowIcon = styled(ArrowSVG).attrs(props => ({draggable: false}))`${ButtonIconStyle} margin-right: 4px;`;\nexport const RightArrowIcon = styled(ArrowSVG).attrs(props => ({draggable: false}))`\n ${ButtonIconStyle}\n transform: rotate(180deg);\n margin-right: 0px;\n margin-left: 4px;\n`;\nexport const Button = styled.div`\n padding: 10px 8px;\n height: 40px;\n color: white;\n display: flex;\n align-items: center;\n font-size: 20px;\n font-weight: 400;\n cursor: pointer;\n border-left: 1px solid white;\n background: ${({theme, color}) => color ? theme.colors.interfacePalette[color].default : 'transparent'};\n ${({color}) => color && css`\n &:hover {\n background: ${({theme, color}) => theme.colors.interfacePalette[color].dark};\n }\n `}\n ${({theme}) => theme.mediaQueries.mobileL} {\n /* width: 56px;\n height: 56px; */\n /* justify-content: center; */\n }\n`;\nexport const HoverButton = styled(Button)`\n &:hover {\n color: #FFFF00;\n path {\n fill: #FFFF00;\n }\n rect {\n stroke: #FFFF00;\n }\n }\n`;\nconst AlertContainer = styled.div`\n padding: 4px 8px;\n background: ${() => window.location.pathname.includes('med-school') ? 'rgb(56, 82, 164)' : window.location.pathname.includes('inbde/custom-test') ? 'rgb(15, 98, 146)' : '#006DAA'};\n box-shadow: 0px 16px 30px rgba(0, 0, 0, 0.24);\n color: white;\n resize: both;\n overflow: auto;\n width: 100%;\n height: auto;\n display: flex;\n flex-direction: column;\n min-height: 200px;\n max-width: 475px;\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin: 0px 8px;\n }\n`;\nconst AlertHeader = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px;\n font-size: 16px;\n border-bottom: 1px solid white;\n`;\nconst AlertBody = styled.div`\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n padding: 16px;\n`;\nconst AlertText = styled.div`\n font-weight: 400;\n font-size: 16px;\n line-height: 150%;\n color: white;\n flex: 1;\n`;\nconst AlertButtons = styled.div`\n display: flex;\n width: 100%;\n align-items: center;\n justify-content: center;\n flex-direction: row;\n padding: 16px;\n`;\nconst AlertButton = styled.div`\n font-weight: 500;\n font-size: 16px;\n line-height: 100%;\n border: 1px solid white;\n padding: 6px 14px;\n margin-right: 16px;\n cursor: pointer;\n &:last-child {\n margin-right: 0px;\n }\n &:hover {\n opacity: 1;\n }\n ${({faded}) => faded && css`opacity: 0.5;`}\n`;\n\n\n\nexport const AlertPopup = ({close, headerContent, alertText, buttonConfig}) => {\n useHotkeys('esc', close);\n return (\n e.stopPropagation()}>\n \n {headerContent}\n \n \n \n \n \n \n \n \n \n {buttonConfig.map(props => )}\n \n \n )\n}\n\n","import React, {useState, useEffect} from 'react';\nimport PropTypes from 'prop-types';\n\nimport {withRouter} from 'react-router-dom';\n\nimport {useModalContext} from '../../../contexts/Modal';\n\nimport {AlertIcon} from '../../NCLEXQBank/shared';\nimport {CloseIcon} from './shared';\nimport {FlexBox} from '../../Grid';\nimport {H2, Body2} from '../../Typography';\nimport {Button} from '../../Branding/Buttons';\nimport {LoadingSpinner} from '../../Branding';\nimport useHotkeys from \"@reecelucas/react-use-hotkeys\";\n\nimport styled, {css} from 'styled-components';\nimport theme from '@bootcamp/shared/src/styles/theme';\n\nconst Wrapper = styled.div`\n width: 100%;\n text-align: center;\n padding: ${({theme}) => `${theme.layouts.spacing.xxl} ${theme.layouts.spacing.xxl} ${theme.layouts.spacing.xl}`};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: ${({theme}) => `${theme.layouts.spacing.l} ${theme.layouts.spacing.xl}`};\n }\n`;\nconst Header = styled(H2)`\n text-align: ${({textAlign}) => textAlign};\n width: 100%;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n`;\nconst Body = styled(Body2)`\n text-align: ${({textAlign}) => textAlign};\n width: 100%;\n`;\nconst ButtonWrapper = styled(FlexBox)`\n position: relative;\n padding: ${({theme}) => `0px ${theme.layouts.spacing.xxl} ${theme.layouts.spacing.xxl}`};\n align-items: center;\n flex-direction: column;\n\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: ${({theme}) => `${theme.layouts.spacing.m} ${theme.layouts.spacing.l}`};\n }\n`;\nconst Cancel = styled(Button)`\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n color: ${({theme, themeColor}) => themeColor || theme.colors.neutralsPalette.lightGrey};\n border: 1px solid ${({theme, themeColor}) => themeColor || theme.colors.neutralsPalette.lightGrey};\n box-shadow: none;\n\n &:hover {\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n box-shadow: none;\n color: ${({theme}) => theme.colors.neutralsPalette.dark};\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n transform: none;\n }\n`;\n\nconst Confirm = styled(Button)`\n background: ${({themeColor}) => themeColor};\n color: ${({theme}) => theme.colors.white};\n\n &:hover {\n background: ${({themeColor}) => themeColor};\n }\n`;\n\nconst LoaderWrapper = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background: white;\n z-index: 10;\n`;\n\nconst Loader = styled(LoadingSpinner)`\n fill: ${({fill}) => fill};\n`;\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n margin: 0 24px;\n\n border-radius: 8px;\n box-shadow: ${({theme}) => theme.elevation.shadow.high};\n\n max-width: 600px;\n overflow: hidden;\n\n ${({theme}) => theme.mediaQueries.mobileXl} {\n transition: transform .5s, opacity .75s;\n border-radius: 8px 8px 0px 0px;\n ${({visible}) => visible\n ? `\n transform: translateY(0%);\n opacity: 1;\n margin-top: auto;\n `\n : `\n transform: translateY(100%);\n opacity: 0;\n `\n }\n }\n\n ${({prometricStyling}) => prometricStyling && css`\n padding: 4px 8px;\n background: ${({theme, mcatTheme}) => window.location.pathname.includes('mcat') && mcatTheme === 'salmon' ? '#FDD3C5' : window.location.pathname.includes('mcat') && mcatTheme === 'black' ? 'black' : window.location.pathname.includes('mcat') ? '#006DAA' : window.location.pathname.includes('med-school') ? 'rgb(56, 82, 164)' : window.location.pathname.includes('inbde/custom-test') ? 'rgb(15, 98, 146)' : theme.colors.prometricPalette.inbde.default};\n box-shadow: 0px 16px 30px rgba(0, 0, 0, 0.24);\n color: white;\n resize: both;\n overflow: auto;\n width: 100%;\n height: auto;\n display: flex;\n flex-direction: column;\n min-height: 200px;\n max-width: 475px;\n border-radius: 0px;\n\n ${({ theme }) => theme.mediaQueries.mobileL} {\n margin: 0px 8px;\n }\n\n ${Wrapper} {\n padding: 0;\n color: white;\n }\n ${Header} {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px;\n font-size: 16px;\n border-bottom: 1px solid white;\n color: white;\n margin: 0;\n line-height: unset;\n font-weight: normal;\n font-family: unset;\n }\n ${Body} {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n padding: 16px;\n color: white;\n font-family: unset;\n font-size: 16px;\n line-height: 150%;\n }\n ${ButtonWrapper} {\n display: flex;\n width: 100%;\n align-items: center;\n justify-content: center;\n flex-direction: row;\n padding: 16px;\n margin-top: auto;\n }\n ${Cancel} {\n font-weight: 500;\n font-size: 16px;\n line-height: 100%;\n border: 1px solid white;\n padding: 6px 14px;\n margin-right: 16px;\n margin-bottom: 0px;\n cursor: pointer;\n opacity: 0.5;\n background: transparent;\n &:last-child {\n margin-right: 0px;\n }\n &:hover {\n opacity: 1;\n color: white;\n }\n }\n ${Confirm} {\n font-weight: 500;\n font-size: 16px;\n line-height: 100%;\n border: 1px solid white;\n padding: 6px 14px;\n margin-right: 16px;\n cursor: pointer;\n background: transparent;\n &:last-child {\n margin-right: 0px;\n }\n &:hover {\n opacity: 1;\n }\n ${({faded}) => faded && css`opacity: 0.5;`}\n }\n\n ${LoaderWrapper} {\n background: ${({theme}) => window.location.pathname.includes('med-school') ? 'rgb(56, 82, 164)' : window.location.pathname.includes('inbde/custom-test') ? 'rgb(15, 98, 146)' : theme.colors.prometricPalette.inbde.default};\n }\n\n ${Loader} {\n fill: white;\n }\n `}\n\n`;\n\n\nconst SubmitAnatomyCase = ({headerText, bodyText, history, location, confirmConfig, cancelConfig, prometricStyling, mcatTheme, preventEscape, icon, textAlign=\"left\"}) => {\n const {modalDispatch} = useModalContext();\n const [visible, setVisible] = useState(false);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState();\n\n const {color} = confirmConfig?.color || theme.colors.brandPalette.royal.default;\n\n useEffect(() => {\n setVisible(true);\n }, []);\n\n const redirect = (formatPath) => {\n const path = (formatPath && formatPath(location)) || `${location.pathname}?mode=review&from=quiz`;\n history.push(path);\n };\n\n const handleConfirmClick = async (event) => {\n setLoading(true);\n try {\n confirmConfig.onConfirm && await confirmConfig.onConfirm(history);\n confirmConfig.shouldRedirect && redirect(confirmConfig.redirect);\n modalDispatch({type: 'close'});\n } catch (e) {\n setLoading(false);\n setError(e);\n confirmConfig.onError && confirmConfig.onError(e);\n }\n };\n\n const handleCancelClick = async (event) => {\n setLoading(true)\n cancelConfig.onCancel && await cancelConfig.onCancel(history);\n cancelConfig.shouldRedirect && redirect(confirmConfig.redirect);\n modalDispatch({type: 'close'});\n };\n\n const errorHandler = e => {\n return confirmConfig?.errorText\n ? confirmConfig.errorText(e)\n : `Unfortunately, an error has occurred: [${e.message}]. Please close this modal and try re-submitting.`\n }\n\n useHotkeys('Escape', preventEscape ? () => true : handleCancelClick, [handleCancelClick]);\n useHotkeys(['Enter', 'c'], handleConfirmClick, [handleConfirmClick]);\n\n return (\n e.stopPropagation()} prometricStyling={prometricStyling} mcatTheme={mcatTheme}>\n {!error && \n
\n {icon}\n {headerText}\n {prometricStyling && cancelConfig.text && }\n
\n \n {prometricStyling && }\n {bodyText}\n \n
}\n {error\n ? \n : (\n \n {loading &&\n \n \n \n }\n {cancelConfig.text ? (\n \n {cancelConfig.text}\n \n ) : null}\n \n {confirmConfig.text}\n \n {/* {error ? Unfortunately, an error has occurred: {error?.message} : null} */}\n \n )\n }\n
\n );\n};\n\nSubmitAnatomyCase.propTypes = {\n headerText: PropTypes.string,\n bodyText: PropTypes.string,\n cancelConfig: PropTypes.shape({\n onCancel: PropTypes.func,\n text: PropTypes.string,\n }),\n confirmConfig: PropTypes.shape({\n onConfirm: PropTypes.func,\n text: PropTypes.string,\n color: PropTypes.string,\n }),\n};\nSubmitAnatomyCase.defaultProps = {\n headerText: 'Nice work Michael! Ready to submit your quiz?',\n bodyText: 'You successfully answered every question. Now it\\'s time to see how you did!',\n cancelConfig: {\n text: 'Not Yet',\n },\n confirmConfig: {\n text: 'Submit Now',\n color: 'blue',\n },\n};\n\nexport default withRouter(SubmitAnatomyCase);\n","import React, {useState, useEffect} from 'react';\nimport PropTypes from 'prop-types';\n\nimport {withRouter} from 'react-router-dom';\nimport {FlexBox} from '../../Grid';\nimport {H2, Body3} from '../../Typography';\nimport {Button} from '../../Branding/Buttons';\nimport {LoadingSpinner} from '../../Branding';\n\nimport styled from 'styled-components';\n\nconst Container = styled.div`\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n\n border-radius: 8px;\n box-shadow: ${({theme}) => theme.elevation.shadow.high};\n\n max-width: 528px;\n overflow: hidden;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n transition: transform .5s, opacity .75s;\n border-radius: 8px 8px 0px 0px;\n ${({visible}) => visible\n ? `\n transform: translateY(0%);\n opacity: 1;\n margin-top: auto;\n `\n : `\n transform: translateY(100%);\n opacity: 0;\n `\n }\n }\n`;\nconst Wrapper = styled.div`\n text-align: center;\n padding: ${({theme}) => `${theme.layouts.spacing.xl} ${theme.layouts.spacing.xxl}`};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: ${({theme}) => `${theme.layouts.spacing.l} ${theme.layouts.spacing.xl}`};\n }\n`;\nconst Header = styled(H2)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.xs};\n`;\nconst Body = styled(Body3)`\n`;\nconst ButtonWrapper = styled(FlexBox)`\n position: relative;\n border-top: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n padding: ${({theme}) => `${theme.layouts.spacing.l} ${theme.layouts.spacing.xxl}`};\n align-items: center;\n\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: ${({theme}) => `${theme.layouts.spacing.m} ${theme.layouts.spacing.l}`};\n }\n`;\nconst Cancel = styled(Button)`\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n color: ${({theme, themeColor}) => themeColor || theme.colors.neutralsPalette.grey};\n border: 1px solid ${({theme, themeColor}) => themeColor || theme.colors.neutralsPalette.grey};\n box-shadow: none;\n\n &:hover {\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n box-shadow: none;\n color: ${({theme}) => theme.colors.neutralsPalette.dark}\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n transform: none;\n }\n`;\n\nconst Confirm = styled(Button)`\n background: ${({themeColor}) => themeColor};\n color: ${({theme}) => theme.colors.white};\n\n &:hover {\n background: ${({themeColor}) => themeColor};\n }\n`;\n\nconst LoaderWrapper = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background: white;\n z-index: 10;\n`;\n\nconst Loader = styled(LoadingSpinner)`\n fill: ${({fill}) => fill};\n`;\n\n\nconst SubmitModal = ({headerText, bodyText, history, confirmConfig, cancelConfig}) => {\n const [visible, setVisible] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const {color} = confirmConfig;\n\n useEffect(() => {\n setVisible(true);\n }, []);\n\n const handleConfirmClick = async (event) => {\n setLoading(true);\n confirmConfig.onConfirm && await confirmConfig.onConfirm(history);\n };\n\n const handleCancelClick = async (event) => {\n setLoading(true)\n cancelConfig.onCancel && await cancelConfig.onCancel(history);\n };\n\n return (\n \n \n
{headerText}
\n {bodyText}\n
\n \n {loading &&\n \n \n \n }\n \n {cancelConfig.text}\n \n \n {confirmConfig.text}\n \n \n
\n );\n}\n\nSubmitModal.propTypes = {\n headerText: PropTypes.string,\n bodyText: PropTypes.string,\n cancelConfig: PropTypes.shape({\n onCancel: PropTypes.func,\n text: PropTypes.string,\n }),\n confirmConfig: PropTypes.shape({\n onConfirm: PropTypes.func,\n text: PropTypes.string,\n color: PropTypes.string,\n }),\n};\nSubmitModal.defaultProps = {\n headerText: 'Nice work Michael! Ready to submit your quiz?',\n bodyText: 'You successfully answered every question. Now it\\'s time to see how you did!',\n cancelConfig: {\n text: 'Not Yet',\n },\n confirmConfig: {\n text: 'Submit Now',\n color: 'blue',\n },\n};\n\nexport default withRouter(SubmitModal);\n","import React, {useState, useEffect} from 'react';\n\nimport {withRouter} from 'react-router-dom';\n\nimport styled from 'styled-components';\nimport {Lottie} from '@crello/react-lottie';\n\nconst Container = styled.div`\n max-width: 528px;\n overflow: hidden;\n`;\n\n\nconst FullScreenAnimation = ({lottieConfig, history, location, close}) => {\n const [visible, setVisible] = useState(false);\n\n useEffect(() => {\n setVisible(true);\n }, []);\n\n return (\n \n \n \n );\n}\n\nFullScreenAnimation.propTypes = {\n};\nFullScreenAnimation.defaultProps = {\n lottieConfig:{\n style: {maxHeight: '150px', maxWidth: '150px'},\n config: {animationData: null}\n }\n};\n\nexport default withRouter(FullScreenAnimation);\n","import React, {useState} from 'react';\nimport styled from 'styled-components';\nimport {H2, H4, Body2, Body3} from '@bootcamp/web/src/components/Typography';\nimport {Button} from '@bootcamp/web/src/components/Branding/Buttons';\nimport Switch from 'rc-switch';\nimport \"rc-switch/assets/index.css\";\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\n\nconst Container = styled.div`\n background: #FFFFFF;\n box-shadow: 0px 8px 20px rgba(0, 0, 0, 0.12);\n border-radius: 8px;\n padding: 64px;\n max-width: 600px;\n overflow: auto;\n`;\n\nconst Header = styled(H2)`\n text-align: left;\n margin-bottom: 16px;\n`;\n\nconst Body = styled(Body2)`\n color: #585962;\n margin-bottom: 16px;\n`;\n\nconst OptionBox = styled.div`\n border: 1px solid #EDEDF0;\n box-sizing: border-box;\n border-radius: 8px;\n padding: 32px;\n`;\n\nconst OptionTitle = styled(H4)`\n`;\nconst OptionDescription = styled(Body3)`\n`;\nconst OptionContents = styled.div`\n max-width: 85%;\n`\n\nconst StyledSwitch = styled(Switch)`\n &:after {\n transform: none !important;\n animation-name: none !important;\n }\n`;\n\nconst Option = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-direction: row;\n border-bottom: 1px solid #EDEDF0;\n padding: 16px 0px;\n &:first-child {\n padding-top: 0;\n }\n &:last-child {\n border-bottom: none;\n padding-bottom: 0;\n }\n`;\n\nconst Confirm = styled(Button)`\n margin-top: 32px;\n margin-left: auto;\n`;\n\nconst TestSettings = ({close, themePalette, isFullLengthTest}) => {\n const {saveUserInteraction, searchUserInteractions, bootcamp} = useUserDataContext();\n const prometricDelay = searchUserInteractions('prometricDelay') === true;\n const testTitle = isFullLengthTest ? `Full Length Practice Test` : `${bootcamp.toUpperCase()} Simulator`\n return (\n e.stopPropagation()}>\n
{testTitle} Settings
\n \n Customize your {isFullLengthTest ? testTitle.toLowerCase() : testTitle} experience using the options below.\n \n \n \n \n \n \n Save and Continue\n \n
\n )\n}\n\nexport default TestSettings;\n","import React from 'react';\n\nimport Upgrade from './components/Upgrade';\nimport MoveQuestionToTest from './components/MoveQuestionToTest';\nimport SubmitAnatomyCase from './components/SubmitAnatomyCase';\nimport SubmitModal from './components/SubmitModal';\nimport FullScreenAnimation from './components/FullScreenAnimation';\nimport TestSettings from './components/TestSettings';\n\nconst TimeUp = ({onConfirm, prometricStyling}) => {\n return (\n \n )\n}\n\n\nconst SectionTimeUp = ({onConfirm, prometricStyling}) => (\n \n);\n\nconst ProceedToSection = ({history, close, onConfirm, testId, canDismiss, prometricStyling}) => (\n \n);\n\nfunction onErrorDefault () {return false;}\n\nconst Submit = ({history, close, onConfirm, onError=onErrorDefault, prometricStyling}) => {\n return (\n (\n <>\n

\n Something went wrong, but we're ready to help.\n

\n

\n Click here to send an email to Bootcamp support.\n

\n

\n Please attach the manual test submission file to the email.\n

\n

\n onError(error)}>\n Click here to re-download the manual test submission file.\n \n

\n \n ),\n }}\n />\n )\n}\n\nexport {TimeUp, Submit, SectionTimeUp, ProceedToSection, Upgrade, MoveQuestionToTest, SubmitAnatomyCase, SubmitModal, FullScreenAnimation, TestSettings};\n","import { useRef } from 'react';\n\nconst safeDocument = typeof document !== 'undefined' ? document : {};\n\n/**\n * Usage:\n * const [blockScroll, allowScroll] = useScrollBlock();\n */\nconst useScrollBlock = () => {\n const scrollBlocked = useRef();\n const html = safeDocument.documentElement;\n const { body } = safeDocument;\n \n const blockScroll = () => {\n if (!body || !body.style || scrollBlocked.current) return;\n\n const scrollBarWidth = window.innerWidth - html.clientWidth;\n const bodyPaddingRight =\n parseInt(window.getComputedStyle(body).getPropertyValue(\"padding-right\")) || 0;\n\n /**\n * 1. Fixes a bug in iOS and desktop Safari whereby setting\n * `overflow: hidden` on the html/body does not prevent scrolling.\n * 2. Fixes a bug in desktop Safari where `overflowY` does not prevent\n * scroll if an `overflow-x` style is also applied to the body.\n */\n html.style.position = 'relative'; /* [1] */\n html.style.overflow = 'hidden'; /* [2] */\n body.style.position = 'relative'; /* [1] */\n body.style.overflow = 'hidden'; /* [2] */\n body.style.paddingRight = `${bodyPaddingRight + scrollBarWidth}px`;\n\n scrollBlocked.current = true;\n };\n\n const allowScroll = () => {\n if (!body || !body.style || !scrollBlocked.current) return;\n\n html.style.position = '';\n html.style.overflow = '';\n body.style.position = '';\n body.style.overflow = '';\n body.style.paddingRight = '';\n\n scrollBlocked.current = false;\n };\n\n return [blockScroll, allowScroll];\n};\n\nexport default useScrollBlock;\n","import React, {useState, useEffect} from 'react';\nimport {useHistory} from 'react-router-dom';\nimport styled from 'styled-components';\nimport {IntercomAPI} from 'react-intercom';\n\nimport Carousel, {CarouselContainer} from '../../Carousel';\nimport {preventDefault} from '../helpers';\nimport {Row} from '../../Grid';\nimport {H2, Body3} from '../../Typography';\nimport {Button} from '../../Branding/Buttons';\nimport useScrollBlock from '../../../hooks/useScrollBlock';\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nimport {ReactComponent as Badge} from '@bootcamp/shared/src/assets/svg/badge.svg';\n\nconst SuperContainer = styled.div`\n position: relative;\n width: 100%;\n height: 100%;\n max-width: 1152px;\n min-height: 640px;\n border-radius: 10px;\n line-height: normal;\n\n ${({theme}) => theme.mediaQueries.laptop} {\n height: auto;\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n height: 100%;\n }\n`;\nconst UpgradeContainer = styled(Row)`\n position: relative;\n align-items: center;\n justify-content: center;\n border-radius: 10px;\n overflow: hidden;\n transition: transform .4s, opacity .75s;\n ${({visible}) => visible\n ? `\n transform: none;\n opacity: 1;\n `\n : `\n transform: translateY(100%);\n opacity: 0;\n `\n }\n\n ${({theme}) => theme.mediaQueries.laptop} {\n ${({fixedOnMobile}) => fixedOnMobile && `\n flex-direction: column;\n height: auto;\n `}\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n ${({fixedOnMobile, theme}) => !fixedOnMobile\n ? `\n margin-top: auto;\n height: auto;\n padding-bottom: 64px;\n background: white;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n width: 100%;\n `\n : `\n margin-top: ${theme.layouts.spacing.xxl};\n `\n }\n }\n`;\n\nconst Side = styled.div`\n width: 100%;\n height: 100%;\n padding: ${({theme}) => theme.layouts.spacing.xxl};\n background: white;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n text-align: center;\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: ${({theme}) => theme.layouts.spacing.xl} ${({theme}) => theme.layouts.spacing.m};\n }\n`\n\nconst Callout = styled(Side)`\n`;\n\nconst CalloutHeading = styled(H2)`\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n`;\n\nconst CalloutSubheading = styled(Body3)`\n font-weight: 400;\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n`;\n\nconst FeaturesList = styled.div`\n min-height: 264px;\n width: 100%;\n margin: ${({theme}) => theme.layouts.spacing.xl} 0;\n ${({theme}) => theme.mediaQueries.laptop} {\n min-height: 0px;\n }\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-bottom: 0;\n }\n`;\n\nconst FeatureRow = styled(Row)`\n height: auto;\n align-items: center;\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n &:last-child {\n margin-bottom: 0;\n }\n`;\n\nconst FeatureIcon = styled.div`\n width: 48px;\n height: 48px;\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n`;\n\nconst FeatureText = styled.div`\n font-family: proxima-nova;\n font-style: normal;\n font-weight: 600;\n font-size: 18px;\n line-height: 18px;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n text-align: left;\n`;\n\nconst Interactions = styled(Row)`\n height: auto;\n margin-top: ${({theme}) => theme.layouts.spacing.xl};\n align-items: center;\n justify-content: center;\n ${({theme}) => theme.mediaQueries.tablet} {\n display: none;\n }\n`;\n\nconst InteractionItem = styled.div`\n font-family: proxima-nova;\n font-style: normal;\n font-weight: 600;\n font-size: 18px;\n line-height: 18px;\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n padding: 0px ${({theme}) => theme.layouts.spacing.l};\n &:first-child {\n border-right: 1px solid ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n }\n &:last-child {\n border-right: none;\n }\n cursor: pointer;\n`;\n\nconst MobileInteraction = styled(InteractionItem)`\n margin-top: ${({theme}) => theme.layouts.spacing.xl};\n`;\n\nconst Reviews = styled(Side)`\n background: ${({theme}) => theme.colors.brandPalette.indigo.dark};\n ${({theme}) => theme.mediaQueries.tablet} {\n padding-bottom: 100px;\n }\n`;\n\nconst ReviewHeading = styled(H2)`\n color: white;\n margin-bottom: ${({theme}) => theme.layouts.spacing.xl};\n`\n\nconst ReviewCarousel = styled(Carousel)`\n height: auto;\n ${CarouselContainer} {\n min-height: 360px;\n }\n`;\n\nconst ButtonContainer = styled(Row)`\n align-items: center;\n justify-content: center;\n height: auto;\n padding-top: ${({theme}) => theme.layouts.spacing.l};\n\n ${({theme}) => theme.mediaQueries.laptop} {\n border-radius: 0px 0px 10px 10px;\n z-index: 2;\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n position: fixed;\n bottom: 10%;\n left: 10%;\n width: 100%;\n bottom: 0;\n left: 0;\n border-radius: 0px;\n padding-bottom: ${({theme}) => theme.layouts.spacing.m};\n padding-top: ${({theme}) => theme.layouts.spacing.xxl};\n }\n`;\n\nconst StyledButton = styled(Button)`\n ${({theme}) => theme.mediaQueries.tablet} {\n ${({fixedOnMobile, theme}) => fixedOnMobile && `\n svg > path {\n fill: ${theme.colors.brandPalette.indigo.dark};\n }\n background: white;\n color: ${theme.colors.brandPalette.indigo.dark};\n &:hover {\n background: rgba(255,255,255,.9);\n }\n `}\n }\n`;\n\nconst BootcampLockdown = ({className, close, config, isExpiredSubscription, isPremiumFeature, fixedOnMobile=true, showClose=false, showInteractions=true, showReviews=true, showFeatures=true, headerText, subheaderText, upgradeText}) => {\n const [visible, setVisible] = useState(false);\n const [blockScroll, allowScroll] = useScrollBlock();\n const [{isLaptop, isTablet}, setBreakpoints] = useState({isLaptop: document.documentElement.clientWidth < 1024, isTablet: document.documentElement.clientWidth < 768});\n const {bootcamp} = useUserDataContext();\n\n const {push} = useHistory();\n\n const updateBreakpoints = () => setBreakpoints({isLaptop: document.documentElement.clientWidth < 1024, isTablet: document.documentElement.clientWidth < 768});\n\n useEffect(() => {\n setVisible(true);\n blockScroll();\n window.addEventListener('resize', updateBreakpoints);\n return () => {\n window.removeEventListener('resize', updateBreakpoints);\n allowScroll();\n close();\n }\n }, []);\n\n return (\n \n \n \n \n {headerText || (isPremiumFeature ? `We’re your secret to getting ahead in anatomy class` : isExpiredSubscription ? 'Your subscription has ended' : 'Your free trial has ended')}\n \n \n {subheaderText || (isPremiumFeature ? `Get instant access to everything on Anatomy Bootcamp by upgrading your membership 👇` : `Upgrade your membership in order to keep access to:`)}\n \n {(showFeatures || isTablet) &&\n (\n \n \n \n \n ))}\n />\n }\n {isTablet && fixedOnMobile &&\n {\n push('/account');\n IntercomAPI('showNewMessage', `I have a question about my account: `);\n }}>\n Send us a message\n \n }\n \n window.location = `https://bootcamp.com/${bootcamp}/upgrade`} // useHistory\n iconConfig={{\n position: 'left',\n icon: Badge,\n size: 12,\n }}\n />\n \n {\n showInteractions && (\n \n {\n push('/account');\n IntercomAPI('showNewMessage', `I have a question about my account: `);\n }}>\n Send us a message\n \n push('/account')}>\n View your account\n \n \n )\n }\n {\n showClose && (\n \n \n Go Back\n \n \n )\n }\n\n \n {showReviews &&\n \n \n {config.reviewHeading}\n \n {isLaptop ? config.reviews : }\n \n }\n \n \n );\n}\n\nexport default BootcampLockdown;\n","import {getTest, getAllQuestionMastery, getQuestionForTest} from '@bootcamp/shared/src/requests';\nimport {getRandom, asyncFetchWithS3Cache, capitalize} from '@bootcamp/shared/src/util';\n\nimport Storage from '@aws-amplify/storage';\nimport moment from 'moment';\n\n\nexport const composeQuickStudyByContentType = async (config, userId, bootcamp, subjectIds, contentType, testLength=10, onError) => {\n // fetch all question mastery so that we can filter for 'untagged' questions\n const allQuestionMastery = await Promise.all(subjectIds.map(subjectId => getAllQuestionMastery({\n userIdHashSubjectTagId: `${userId}#${subjectId}`,\n limit: 10000,\n }, 'subjectWithQuestionBaseId')));\n\n const allQuestionMasteryItems = allQuestionMastery.reduce((acc, masteryResult) => [...acc, ...masteryResult.data.QuestionMasteryBySubjectTagId.items], []);\n\n // subroutine for fetching & formatting a set of questions to create our quick study bank\n async function fetchDrawPile() {\n if (config.meta.siteTitle === 'Chemistry Bootcamp') {\n throw new Error('Chemistry Bootcamp is not yet supported for Quick Study.')\n }\n // format an array of testIds from config which match a certain style\n const testIds = contentType === 'anatomy'\n ? config.classrooms\n .filter(({name}) => name === 'Gross Anatomy')\n .reduce((acc, {contentTypes}) => [\n ...acc,\n ...contentTypes\n .reduce((acc, {content}) => [\n ...acc,\n ...content\n .reduce((acc, {name, content}) => ['Question Banks', 'Identify Structures', 'Lecture Style Questions'].includes(name) // only use QB questions for Quick Study\n ? [\n ...acc,\n ...content.filter(({name}) => !name.match('Passage')) // filter out passage banks\n .reduce((acc, {lessons, lectures, id}) => id ? [...acc, id] : (lessons || lectures)\n ? [\n ...acc,\n ...([...(lessons || []), ...(lectures || [])]).map(({testId, id}) => testId || id)\n ]\n : acc, [])\n ]\n : acc, [])\n ], [])\n ], [])\n : config.classrooms\n .reduce((acc, {contentTypes}) => [\n ...acc,\n ...contentTypes\n .filter(({name}) => name.match(capitalize(contentType)))\n .reduce((acc, {content}) => ([\n ...acc,\n ...content\n .reduce((acc, {content}) => content?.map(({id}) => id), [])\n ]), [])\n ], []);\n\n // fetch all tests to so that we can create a question pool to pull from\n const results = await Promise.all(\n testIds.map(async testId => await getTest(testId, 'getTestQuestionIdsWithConfig'))\n );\n\n \n // question pool\n const questionPool = results\n ?.reduce((acc, {data: {getTest: {id: testId, blockConnections}}}) => [\n ...acc,\n ...blockConnections.items\n .reduce((acc, {testBlock}) => {\n if (testBlock?.questionConnections) {\n const isSequentialSet = JSON.parse(testBlock.components?.find(component => component.renderType === 'config')?.contents || 'null')?.isSequentialSet\n if (isSequentialSet) return acc;\n const mappedBlock = testBlock.questionConnections.items.filter(({question}) => question.status !== 'draft').map(({question}) => ({id: question.id, testId}))\n return [...acc, ...mappedBlock]\n }\n return acc\n }, [])\n ], []);\n\n if (questionPool.length === 0) {\n throw new Error('No questions in pool.')\n }\n return questionPool;\n }\n\n // subroutine for formatting test from a given set of question ids\n async function assembleTest(questionIds) {\n\n // helper for pulling all learning / mastered from mastery fetch\n function getListOfLearningReviewingQuestions() {\n return allQuestionMasteryItems\n .filter(({masteryLevel}) => ['learning', 'reviewing'].includes(masteryLevel))\n .map(({userIdHashQuestionBaseId, masteryLevel}) => ({id: userIdHashQuestionBaseId.replace(`${userId}#`, ''), masteryLevel}))\n }\n\n // fill qid array with learning/reviewing questions if need be\n const ids = questionIds.length < testLength\n ? [\n ...questionIds.map(question => ({...question, masteryLevel: 'none'})),\n ...getRandom(getListOfLearningReviewingQuestions(), testLength - questionIds.length)\n ]\n : getRandom(questionIds, testLength).map(question => ({...question, masteryLevel: 'none'}));\n\n const questions = await Promise\n .all(ids.map(async question => {\n const {data: {getQuestionBase}} = await getQuestionForTest(question.id, contentType === 'anatomy');\n return {...question, question: {...getQuestionBase, originalTestId: question.testId}}\n }))\n\n return {\n config: {\n title: `Quick Study`\n },\n id: '',\n blockConnections: {\n items: [\n {testBlock: {type: 'startQuickReview'}, index: 0},\n {\n testBlock: {\n type: 'questionSet',\n questionConnections: {\n items: questions\n }\n },\n index: 1\n },\n {testBlock: {type: 'endBlock'}, index: 2}\n ]\n }\n }\n }\n try {\n const configQuestionIds = await asyncFetchWithS3Cache(`json/${bootcamp}/questionIds/${contentType}`, moment().subtract(7, 'days'), fetchDrawPile);\n const excludedQuestionIds = allQuestionMasteryItems.map(({userIdHashQuestionBaseId}) => userIdHashQuestionBaseId.replace(`${userId}#`, ''));\n // if any configQuestionIds need to be filtered, do it now\n const filteredQuestionIds = configQuestionIds.filter(id => !excludedQuestionIds.includes(id));\n const composedTest = await assembleTest(filteredQuestionIds);\n \n return composedTest;\n } catch (error) {\n if (onError) onError()\n }\n};\n\nexport const composeQuickStudy = async (config, userId, bootcamp, subjectIds, testLength=10, limitedPool=false) => {\n const allQuestionMastery = await Promise.all(subjectIds.map(subjectId => getAllQuestionMastery({\n userIdHashSubjectTagId: `${userId}#${subjectId}`,\n limit: 10000,\n }, 'subjectWithQuestionBaseId')\n ));\n\n const items = allQuestionMastery.reduce((acc, masteryResult) => [...acc, ...masteryResult.data.QuestionMasteryBySubjectTagId.items], []);\n const questionIds = items.map(({userIdHashQuestionBaseId}) => userIdHashQuestionBaseId.replace(`${userId}#`, ''));\n // So, we know which questions we DON'T want.\n\n const fetchDrawPile = async () => {\n const storageKey = `json/${bootcamp}/${['dat', 'oat', 'inbde'].includes(bootcamp) ? 'quickStudyConfigIds' : 'lambdaQuestionConfigIds'}.json`;\n let configQuestionIds = [];\n\n try {\n const fetchConfigQuestionIds = await fetch(`https://testtube6dca237224ff44ca973cd2a6dfb779e3-tbc.s3.us-east-1.amazonaws.com/public/${storageKey}`, {cache: 'no-cache'});\n configQuestionIds = await fetchConfigQuestionIds.json();\n } catch {\n const testIds = config.classrooms\n .reduce((acc, {contentTypes}) => [\n ...acc,\n ...contentTypes\n .reduce((acc, {content}) => [\n ...acc,\n ...content\n .reduce((acc, {name, content}) => ['Question Banks', 'Identify Structures', 'Lecture Style Questions'].includes(name) // only use QB questions for Quick Study\n ? [\n ...acc,\n ...content.filter(({name}) => !name.match('Passage')) // filter out passage banks\n .reduce((acc, {lessons, lectures, id}) => id ? [...acc, id] : (lessons || lectures)\n ? [\n ...acc,\n ...([...(lessons || []), ...(lectures || [])]).map(({testId, id}) => testId || id)\n ]\n : acc, [])\n ]\n : acc, [])\n ], [])\n ], [])\n\n const promises = testIds\n .map(async testId => await getTest(testId, 'getTestQuestionIds'));\n const results = await Promise.all(promises);\n const tests = results\n .map(({data: {getTest: fetchedTest}}) => fetchedTest);\n configQuestionIds = tests\n .reduce((acc, {id: testId, blockConnections}) => [\n ...acc,\n ...blockConnections.items\n .reduce((acc, {testBlock}) => testBlock?.questionConnections ? [\n ...acc,\n ...testBlock.questionConnections.items.filter(({question}) => question.status !== 'draft').map(({question}) => ({id: question.id, testId}))\n ] : acc, [])\n ], [])\n\n await Storage.put(storageKey, JSON.stringify(configQuestionIds), {contentType: 'application/json'});\n }\n\n if (limitedPool) {\n configQuestionIds = configQuestionIds.slice(0, 100);\n }\n\n const filteredQuestionIds = configQuestionIds.filter(({id}) => !questionIds.includes(id));\n\n if (filteredQuestionIds.length < testLength) {\n // fill DWU with learning/reviewing questions if user has fewer than [testLength] untagged\n const learningAndReviewingIds = items\n .filter(({masteryLevel}) => ['learning', 'reviewing'].includes(masteryLevel))\n .map(({userIdHashQuestionBaseId, masteryLevel}) => ({id: userIdHashQuestionBaseId.replace(`${userId}#`, ''), masteryLevel}));\n\n return [\n ...filteredQuestionIds.map(question => ({...question, masteryLevel: 'none'})),\n ...getRandom(learningAndReviewingIds, testLength - filteredQuestionIds.length)\n ]\n } else {\n // otherwise just pull 10 random questions\n return getRandom(filteredQuestionIds, testLength).map(question => ({...question, masteryLevel: 'none'}));\n }\n }\n\n const questionConnections = await fetchDrawPile();\n\n let questionSets = [];\n let index = 1;\n const questionsPerBlock = 10;\n for (var i = 0; i < questionConnections.length; i+=questionsPerBlock) {\n const items = questionConnections.slice(i, i+questionsPerBlock);\n for (var j = 0; j < items.length; j++) {\n const result = await getQuestionForTest(items[j].id, ['med-school', 'dental-school', 'anatomy'].includes(bootcamp));\n items[j].question = {\n originalTestId: items?.[j]?.testId,\n ...result.data.getQuestionBase\n };\n }\n questionSets.push({\n testBlock: {\n type: 'questionSet',\n questionConnections: {items}\n },\n index: index++\n })\n }\n\n const composedTest = {\n config: {\n title: `Quick Study`\n },\n id: '',\n blockConnections: {\n items: [\n {testBlock: {type: 'startQuickReview'}, index: 0},\n ...questionSets,\n {testBlock: {type: 'endBlock'}, index: questionSets.length + 1}\n ]\n }\n }\n\n return composedTest;\n};\n\nexport const composeQuickReview = async (config, userId, bootcamp, subjectIds, testLength=10) => {\n const allQuestionMastery = await Promise.all(subjectIds.map(subjectId => getAllQuestionMastery({\n userIdHashSubjectTagId: `${userId}#${subjectId}`\n }, 'subjectWithQuestionBaseId')\n ));\n\n const items = allQuestionMastery.reduce((acc, masteryResult) => [...acc, ...masteryResult.data.QuestionMasteryBySubjectTagId.items], []);\n const learningAndReviewingItems = items.filter(({masteryLevel}) => ['learning', 'reviewing'].includes(masteryLevel));\n const questionIds = items.map(({userIdHashQuestionBaseId}) => userIdHashQuestionBaseId.replace(`${userId}#`, ''));\n const testIdToFetch = bootcamp === 'anatomy'\n ? '66788bff-f27b-45ab-9717-365a4b8a5628' // Hand qbank 1\n : bootcamp === 'chemistry'\n ? '5fc9bb57-d897-4919-935f-aed4d1935cd5' // Alcohols, Ethers, and Epoxides qbank 1\n : bootcamp === 'med-school' || bootcamp === 'dental-school'\n ? '9f9de7d0-fb5b-4968-85c0-2844881b25ba' // Head and neck anatomy qbank\n : ''\n\n const fetchDrawPile = async () => {\n if (learningAndReviewingItems.length >= testLength) return learningAndReviewingItems;\n if (items.length >= testLength) return items;\n if (!['anatomy', 'chemistry', 'oat', 'dat', 'inbde', 'step-1', 'med-school', 'dental-school'].includes(bootcamp)) return [];\n\n // else.... fetch a random test from this bootcamp\n // for now: let's just hardcode the test ID\n const {data: {getTest: fetchedTest}} = await getTest(testIdToFetch, 'getTestQuestionIds');\n return [\n // ...items, NOTE: NOT INCLUDING ANY TAGGIES WHEN COUNT < 10\n ...fetchedTest.blockConnections.items\n .reduce((acc, {testBlock}) =>\n [\n ...acc,\n ...testBlock.questionConnections.items\n .filter(({question}) => question.status !== 'draft')\n .reduce((acc, {question}) => questionIds.includes(question.id) ? acc :\n [\n ...acc,\n {\n masteryLevel: 'none',\n userIdHashQuestionBaseId: question.id\n }\n ], [])\n ], [])\n ];\n }\n const drawPile = await fetchDrawPile();\n\n const questionConnections = getRandom(drawPile, testLength)\n .map((item, index) => ({\n ...item,\n index,\n question: {\n id: item.userIdHashQuestionBaseId.replace(`${userId}#`, '')\n }\n }));\n\n\n let questionSets = [];\n let index = 1;\n const questionsPerBlock = 10;\n for (var i = 0; i < questionConnections.length; i+=questionsPerBlock) {\n const items = questionConnections.slice(i, i+questionsPerBlock);\n for (var j = 0; j < items.length; j++) {\n const result = await getQuestionForTest(items[j].question.id, ['med-school', 'dental-school', 'anatomy'].includes(bootcamp));\n items[j].question = {\n ...result.data.getQuestionBase,\n masteryLevel: items[j].masteryLevel || 'none',\n };\n }\n questionSets.push({\n testBlock: {\n type: 'questionSet',\n questionConnections: {items}\n },\n index: index++\n })\n }\n\n const composedTest = {\n config: {\n title: `Daily Warmup`\n },\n id: testIdToFetch,\n blockConnections: {\n items: [\n {testBlock: {type: 'startQuickReview'}, index: 0},\n ...questionSets,\n {testBlock: {type: 'endBlock'}, index: questionSets.length + 1}\n ]\n }\n }\n return composedTest;\n};\n","import {getTest, getAllQuestionMastery, getQuestionForTest, getQuestionBaseWithConnections, getTestBlockWithQuestionIds} from '@bootcamp/shared/src/requests';\nimport {getRandom, shuffle} from '@bootcamp/shared/src/util';\nimport Storage from '@aws-amplify/storage';\n\nimport {nanoid} from 'nanoid';\nimport firstBy from 'thenby';\nimport {calculateMaxScore} from '@bootcamp/shared/src/util/scoring/NCLEX'\nimport {getQuestionParts} from '@bootcamp/shared/src/util';\n\nexport const formatTestFromQuestions = async (config, selectedQuestions, testId, testIds) => {\n const questions = await Promise\n .all(selectedQuestions.map(async question => {\n const {data: {getQuestionBase}} = await getQuestionForTest(question.id);\n return {...question, question: {...getQuestionBase, questionBaseId: question.id, originalTestId: question.testId, masteryLevel: config.masteryLevel, ...question}}\n }));\n // if config doesnt have a max score, calculate max score now\n if (!config.maxScore) {\n const maxScore = questions.reduce((acc, questionContainer) => {\n try {\n const {question} = questionContainer || {};\n if (question) {\n const {prompt, type, answers, answerGroups, answerMatrix} = getQuestionParts(question);\n return acc + calculateMaxScore(prompt, type, answers, answerGroups, answerMatrix);\n }\n return acc;\n } catch (error) {\n return acc;\n }\n }, 0)\n config.maxScore = maxScore;\n await Storage.put(config.testStorageKey, JSON.stringify({config, selectedQuestions, testId, testIds}), {contentType: 'application/json'});\n }\n return {\n config,\n id: testId,\n blockConnections: {\n items: [\n {testBlock: {type: 'startCustomTest'}, index: 0},\n {\n testBlock: {\n type: 'questionSet',\n questionConnections: {\n items: questions\n }\n },\n index: 1\n },\n {testBlock: {type: 'endBlock'}, index: 2}\n ]\n }\n }\n}\n\nexport const restoreCustomTest = async (testStorageKey) => {\n try {\n const result = await Storage.get(testStorageKey, {\n download: true,\n cacheControl: 'no-cache',\n contentType: 'application/json',\n });\n const json = await new Response(result.Body).json()\n const {config, selectedQuestions, testId, ...otherConfig} = json;\n const formattedTest = await formatTestFromQuestions({...config, ...otherConfig}, selectedQuestions, testId);\n\n return [formattedTest, json];\n } catch (e) {\n console.log(e);\n }\n}\n\nexport const composeCustomTest = async (config, userId) => {\n try {\n const testId = `${nanoid()}_${userId}`;\n const {testIds, masteryLevel, testLength, bootcamp, type, onlyCaseStudies} = config;\n shuffle(testIds);\n const allQuestionMastery = await Promise.all(testIds.map(testId => getAllQuestionMastery({userIdHashTestId: `${userId}#${testId}`}, type === 'quickReview' ? 'customTestWithTestId' : 'customTest')));\n const allQuestionMasteryItems = allQuestionMastery.reduce((acc, masteryResult) => [...acc, ...masteryResult.data.QuestionMasteryByTestId.items], []);\n const excludedQuestionIds = allQuestionMasteryItems.filter(({masteryLevel}) => !!masteryLevel && masteryLevel != 'none').map(({userIdHashQuestionBaseId}) => userIdHashQuestionBaseId.replace(`${userId}#`, ''));\n\n async function getQuestionIdsByTestId () {\n if (!['untagged', 'all'].includes(masteryLevel)) {\n return allQuestionMastery.reduce((acc, masteryResult, index) => ({...acc, [testIds[index]]: masteryResult.data.QuestionMasteryByTestId.items.filter(({masteryLevel: taggedMasteryLevel, bookmarked}) => masteryLevel === 'bookmarked' ? !!bookmarked : taggedMasteryLevel === masteryLevel).map(({userIdHashQuestionBaseId}) => userIdHashQuestionBaseId.replace(`${userId}#`, ''))}), {})\n } else {\n const results = await Promise.all(\n testIds.map(testId => getTest(testId, 'getTestQuestionIds'))\n );\n\n const questionIds = results\n ?.reduce((acc, {data: {getTest: {id: testId, blockConnections}}}) => ({\n ...acc,\n [testId]: blockConnections.items\n .reduce((acc, {testBlock}) => testBlock?.questionConnections ? [\n ...acc,\n ...testBlock.questionConnections.items\n .filter(({question}) => question && question?.status !== 'draft' && (!excludedQuestionIds.includes(question.id) || masteryLevel === 'all'))\n .map(({question}) => question.id)\n ] : acc, [])\n }), {});\n\n const totalQuestions = Object.values(questionIds).flat().length;\n\n\n if (totalQuestions < testLength && type === 'quickReview') {\n const difference = Math.abs(totalQuestions - testLength);\n const learningReviewing = shuffle(allQuestionMasteryItems)\n .slice(0, difference)\n .reduce((acc, curr) => {\n\n const testId = curr?.userIdHashTestId?.split('#')[1];\n const questionId = curr?.userIdHashQuestionBaseId?.split('#')[1];\n\n return {\n ...acc,\n [testId]: [\n ...(acc[testId] || []),\n questionId,\n ],\n }\n }, {});\n\n return Object.keys({...questionIds, ...learningReviewing})\n .reduce((acc, testId) => ({\n ...acc,\n [testId]: [\n ...(acc[testId] || []),\n ...(learningReviewing[testId] || []),\n ...(questionIds[testId] || []),\n ]\n }), {})\n\n }\n return questionIds;\n }\n }\n\n const questionIdsByTestId = await getQuestionIdsByTestId();\n\n const selectedQuestions = [];\n\n async function draftRound() {\n // Wrap the main logic in a function that can be called for each testId\n async function processTestId(testId) {\n const testQuestionPool = questionIdsByTestId[testId];\n if (testQuestionPool.length === 0) return null;\n\n const selectedQuestion = getRandom(testQuestionPool, 1)[0];\n\n if (['untagged', 'learning', 'reviewing', 'mastered'].includes(masteryLevel)) {\n const selectedQuestionMastery = await getAllQuestionMastery({userIdHashQuestionBaseId: `${userId}#${selectedQuestion}`});\n const {masteryLevel: savedMasteryLevel} = selectedQuestionMastery?.data?.getQuestionMastery || {};\n // if savedMasteryLevel does not match the current masteryLevel, skip this question\n const shouldSkip = masteryLevel === 'untagged' ? ['learning', 'reviewing', 'mastered'].includes(savedMasteryLevel) : ['learning', 'reviewing', 'mastered'].includes(savedMasteryLevel) && savedMasteryLevel !== masteryLevel;\n if (shouldSkip) {\n questionIdsByTestId[testId] = testQuestionPool.filter(question => question !== selectedQuestion);\n return null;\n }\n }\n const {data: {getQuestionBase: {status, connections: unfilteredConnections}}} = await getQuestionBaseWithConnections(selectedQuestion);\n if (status === 'draft') {\n questionIdsByTestId[testId] = testQuestionPool.filter(question => question !== selectedQuestion);\n return null;\n }\n const connections = unfilteredConnections?.items?.filter(({block}) => block?.blockConnections?.items?.length > 0);\n const sequentialBlock = connections?.find(({block}) => JSON.parse(block.components?.find(component => component.renderType === 'config')?.contents || 'null')?.isSequentialSet);\n\n if (sequentialBlock) {\n const {data: {getTestBlock: {questionConnections}}} = await getTestBlockWithQuestionIds(sequentialBlock.block.id);\n const sequentialQuestions = questionConnections?.items.sort(firstBy('index')).map(connection => connection?.question?.id);\n\n \n questionIdsByTestId[testId] = testQuestionPool.filter(question => !sequentialQuestions.includes(question));\n const currentTestLengthWithSequential = sequentialQuestions.length + selectedQuestions.length;\n\n if (currentTestLengthWithSequential <= testLength || bootcamp === 'nclex') {\n return sequentialQuestions.map((id, index) => ({\n id,\n testId,\n isSequentialSet: true,\n isSequentialStart: index === 0,\n isSequentialEnd: (sequentialQuestions.length - 1) === index\n }));\n }\n } else {\n questionIdsByTestId[testId] = testQuestionPool.filter(question => question !== selectedQuestion);\n return [{id: selectedQuestion, testId}];\n }\n\n return null;\n }\n\n // Use Promise.all to process all testIds in parallel\n const results = await Promise.all(testIds.map(processTestId));\n // Flatten the results and filter out nulls\n let questionsToAdd = results.reduce((acc, result) => result ? acc.concat(result.filter(Boolean)) : acc, []);\n\n // Make sure that questionsToAdd + selectedQuestions abides by the 35% case study ratio for NCLEX\n if (bootcamp === 'nclex' && !onlyCaseStudies && !testIds.includes('226a76c1-1a85-4b97-909d-f2f5d764a2d7')) {\n // Calculate the maximum number of questions with isSequentialSet === true\n const maxSequentialQuestions = Math.max(Math.round(testLength * 0.35), 6);\n\n // Count the current number of questions with isSequentialSet === true\n const currentSequentialQuestions = selectedQuestions.filter(question => question.isSequentialSet).length;\n\n // Calculate the remaining number of questions that can be added with isSequentialSet === true\n const remainingSequentialQuestions = Math.max(0, maxSequentialQuestions - currentSequentialQuestions);\n\n // Filter out the questionsToAdd that have isSequentialSet === true and limit the number of questions to be added\n const sequentialQuestionsToAdd = questionsToAdd.filter(question => question.isSequentialSet).slice(0, remainingSequentialQuestions);\n\n // Filter out the questionsToAdd that have isSequentialSet === false\n const nonSequentialQuestionsToAdd = questionsToAdd.filter(question => !question.isSequentialSet);\n\n // Combine the sequential and non-sequential questions to be added\n questionsToAdd = [...sequentialQuestionsToAdd, ...nonSequentialQuestionsToAdd];\n\n const questionsToAddByTestId = questionsToAdd.reduce((acc, question) => ({...acc, [question.testId]: [...(acc[question.testId] || []), question]}), {});\n\n // shuffle the values of questionsToAddByTestId and flatten\n questionsToAdd = shuffle(Object.values(questionsToAddByTestId)).flat();\n }\n\n // Add all the selected questions from this round to the main array\n selectedQuestions.push(...questionsToAdd);\n\n // Truncate selectedQuestions if it exceeds the testLength,\n // ensuring that sequential sets are not split\n const testLengthIndex = testLength - 1;\n const currentCutoff = selectedQuestions[testLengthIndex];\n let truncateIndex = testLengthIndex;\n\n if (selectedQuestions.length > testLength && currentCutoff?.isSequentialSet) {\n // Find the appropriate truncation point\n truncateIndex = selectedQuestions.findIndex((question, index) => index >= testLengthIndex && question.isSequentialEnd);\n // Truncate the selectedQuestions array at the found index\n }\n const truncatedTestLength = truncateIndex + 1;\n selectedQuestions.length = Math.min(truncatedTestLength, selectedQuestions.length);\n }\n while (selectedQuestions.length < testLength && Object.values(questionIdsByTestId).reduce((acc, testIds) => [...acc, ...testIds], []).length !== 0) await draftRound();\n\n config.testStorageKey = `userdata/${userId}/${bootcamp}/${new Date().toISOString()}_${nanoid()}.json`;\n config.createdAt = new Date();\n config.testLength = selectedQuestions.length;\n\n delete config.testIds;\n\n const customTestConfig = {config, selectedQuestions, testId, testIds};\n\n await Storage.put(config.testStorageKey, JSON.stringify(customTestConfig), {contentType: 'application/json'});\n\n const formattedTest = await formatTestFromQuestions(config, selectedQuestions, testId, testIds);\n\n return [formattedTest, customTestConfig];\n } catch (e) {\n console.log(e);\n }\n\n}\n","import React, {createContext, useState, useContext} from 'react';\nimport firstBy from 'thenby';\nimport {useUserDataContext} from '../UserData';\nimport {useBootcampConfigContext} from '../BootcampConfig';\n\nimport {listTests, getTest} from '@bootcamp/shared/src/requests';\nimport * as composers from '@bootcamp/shared/src/helpers/testComposers';\nimport * as customTestComposers from '@bootcamp/shared/src/createTest/composers';\nimport {validateCustomTest} from '@bootcamp/shared/src/util';\n\nconst TestContext = createContext();\n\nconst alphabeticalTitleWithoutNumeral = test => {\n const title = test.config.title.trim().match(/([^#.]+)/);\n return title ? title[0] : '';\n};\nconst numericalNumeral = test => {\n const numeral = test.config.title.trim().match(/[#.]([0-9]*)/);\n return numeral ? parseInt(numeral[1]) : '';\n};\nconst byTestNameAndNumeral = firstBy(alphabeticalTitleWithoutNumeral).thenBy(numericalNumeral);\n\nconst useTest = () => {\n const [test, setTest] = useState(null);\n const [tests, setTests] = useState([]);\n const [customTestConfig, setCustomTestConfig] = useState(null);\n\n const {DEFAULT_USER_ID, bootcamp, isUpgraded, refreshAndSearchUserInteractions, saveUserInteraction} = useUserDataContext();\n const {config} = useBootcampConfigContext() || {};\n\n const filterTests = (filter, filterRequired=false, excludeIds=[]) => {\n if (filterRequired && !filter) return [];\n\n return tests\n .sort(firstBy('createdAt', -1))\n .filter(test => {\n if (excludeIds.some(id => id === test.id)) return false;\n\n return filter\n ? (\n filter\n .toLowerCase()\n .split(' ')\n .every(el => test.config.title.toLowerCase().includes(el)) ||\n test.id.includes(filter.toLowerCase())\n )\n : true\n })\n .sort(byTestNameAndNumeral);\n }\n\n const fetchTest = async (id, query=\"getTest\") => {\n setTest(null);\n if (id) {\n const {data: {getTest: test}} = await getTest(id, query);\n test.blockConnections.items = test.blockConnections.items.filter(({testBlock}) => ['questionSet'].includes(testBlock?.type) && testBlock?.questionConnections ? !testBlock.questionConnections?.items.every(({question}) => question?.status && question?.status === 'draft') : true);\n setTest(test);\n }\n }\n\n const fetchTests = async () => {\n if (tests.length === 0) {\n const result = await listTests();\n const tests = !!result ? result.data.listTests.items.sort(firstBy(t => t.config.title)) : [];\n setTests(tests);\n }\n };\n\n const reset = () => {\n setTest(null);\n setCustomTestConfig(null);\n }\n\n const composeQuickStudyByContentType = async (subjectIds, contentType, testLength=10) => {\n\n setTest(null);\n\n const composedTest = await composers.composeQuickStudyByContentType(config, DEFAULT_USER_ID, bootcamp, subjectIds, contentType, testLength, window.location.reload);\n\n setTest(composedTest);\n };\n\n const composeQuickStudy = async (subjectIds, testLength=10) => {\n setTest(null);\n\n const composedTest = await composers.composeQuickStudy(config, DEFAULT_USER_ID, bootcamp, subjectIds, testLength, !isUpgraded);\n\n setTest(composedTest);\n }\n\n const composeQuickReview = async (subjectIds, testLength=10) => {\n setTest(null);\n\n const composedTest = await composers.composeQuickReview(config, DEFAULT_USER_ID, bootcamp, subjectIds, testLength);\n\n setTest(composedTest);\n }\n\n const composeCustomTest = async (config, testLength=10) => {\n setTest(null);\n\n\n const [composedTest, customConfig] = await customTestComposers.composeCustomTest(config, DEFAULT_USER_ID);\n\n if (composedTest.config.maxScore === 0) {\n throw new Error('Test has no questions');\n }\n\n const savedTestsInteractionKey = `${DEFAULT_USER_ID}_${bootcamp}_savedTests`;\n const savedTests = await refreshAndSearchUserInteractions(savedTestsInteractionKey);\n await saveUserInteraction(savedTestsInteractionKey, JSON.stringify({testList: [...(savedTests?.testList || []), composedTest.config.testStorageKey]}));\n\n setCustomTestConfig(customConfig);\n setTest(composedTest);\n\n return composedTest.config.testStorageKey\n }\n\n\n const restoreCustomTest = async (testStorageKey) => {\n setTest(null);\n setCustomTestConfig(null);\n\n const [composedTest, customConfig] = await customTestComposers.restoreCustomTest(testStorageKey);\n\n const isValid = validateCustomTest(config, isUpgraded, customConfig.testIds || []);\n\n if (!isValid) {\n return setTest({valid: false});\n }\n\n setCustomTestConfig(customConfig);\n setTest(composedTest);\n }\n\n return {\n test,\n setTest,\n fetchTest,\n tests,\n fetchTests,\n filterTests,\n reset,\n customTestConfig,\n composeQuickReview,\n composeQuickStudy,\n composeQuickStudyByContentType,\n composeCustomTest,\n restoreCustomTest\n }\n\n}\n\nconst TestProvider = ({match, children, template}) => {\n return (\n \n {children}\n \n );\n}\n\nconst useTestContext = () => useContext(TestContext);\n\nexport {useTestContext, TestProvider};\n","import React, {useState} from 'react';\nimport {useHistory} from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport {Upgrade} from '@bootcamp/web/src/components/Modal';\nimport BootcampLockdown from '@bootcamp/web/src/components/Modal/components/BootcampLockdown';\n\nimport {useCreateTestState} from '../context';\nimport {useTestContext} from '@bootcamp/web/src/contexts/TestBase';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\n\nimport {capitalize} from '@bootcamp/shared/src/util';\n\nimport {ReactComponent as Badge} from '@bootcamp/shared/src/assets/svg/badge.svg';\nimport {RoundButton} from '@bootcamp/web/src/components/UI';\n\n\nconst Container = styled.div`\n z-index: 1;\n padding: ${({theme}) => theme.layouts.spacing.m} ${({theme}) => theme.layouts.spacing.l};\n background: white;\n border-top: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n`;\nconst StyledBootcampLockdown = styled(BootcampLockdown)`\n height: auto;\n width: 80%;\n display: flex;\n align-items: center;\n max-width: 560px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 0;\n height: 100%;\n width: 100%;\n max-width: none;\n }\n`;\nconst StyledBadge = styled(Badge)`\n path {\n fill: #85868E;\n }\n`;\n\nfunction recursiveGetTestIds(data) {\n return Object.values(data).reduce((acc, {id, children, checked}) => {\n\n if (!children) return checked ? [...acc, id] : acc;\n\n return [\n ...acc,\n ...recursiveGetTestIds(children)\n ]\n }, []);\n}\n\nconst Submit = () => {\n const [submitting, setSubmitting] = useState()\n\n const {variables: {data, masteryFilter, testCount, loading, mode, type}} = useCreateTestState();\n const {bootcamp} = useUserDataContext();\n const {composeCustomTest} = useTestContext();\n const {isUpgraded} = useUserDataContext();\n\n const {push} = useHistory();\n\n const disabled = loading || !recursiveGetTestIds(data)?.length;\n\n async function handleSubmit() {\n if (submitting || disabled) return;\n\n setSubmitting(true);\n\n const testIds = recursiveGetTestIds(data);\n\n const subjectNames = Object\n .values(data)\n .filter(({checked}) => checked)\n .map(({name}) => name)\n .join(', ');\n\n const testTitle = `${capitalize(masteryFilter)} | ${subjectNames}`;\n const checkedSubjects = Object\n .values(data)\n .filter(({checked}) => checked)\n const onlyCaseStudies = checkedSubjects.length === 1 && checkedSubjects[0].name === 'Case Studies';\n\n try {\n const testStorageKey = await composeCustomTest({testTitle, testIds, masteryLevel: masteryFilter, testLength: testCount, bootcamp, type, onlyCaseStudies, ...mode});\n push({pathname: `/${bootcamp}/custom-test`, search: `?key=${encodeURIComponent(testStorageKey)}${type ? `&type=${encodeURIComponent(type)}` : ''}`});\n } catch (error) {\n if (error?.message === 'Test has no questions') {\n window.alert(`We apologize, but our system is currently updating question counts due to administrative rearrangement. Question counts will be updated within 24h. Please select another subject, or use a different Question Pool like \"Learning\" or \"Reviewing\".`);\n setSubmitting(false);\n }\n }\n }\n\n async function handleSubmitByBootcamp() {\n if (disabled) return;\n\n if (isUpgraded || (['nclex', 'inbde'].includes(bootcamp))) {\n handleSubmit();\n } else {\n window.open(`https://bootcamp.com/${bootcamp}/upgrade`, \"_blank\")\n }\n }\n\n return (\n \n }\n disabled={['nclex', 'inbde', 'med-school'].includes(bootcamp) ? disabled : !isUpgraded}\n loading={submitting}\n >\n {(isUpgraded || ['nclex', 'inbde'].includes(bootcamp)) ? 'Start Test' : 'Upgrade to Unlock'}\n
\n \n );\n};\n\nSubmit.defaultProps = {};\nSubmit.propTypes = {};\n\nexport default Submit;\n","import React, {useState, useEffect} from 'react';\n\nimport {useBootcampConfigContext} from '@bootcamp/web/src/contexts/BootcampConfig';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\n\nimport {TestStateContextProvider} from './context';\n\nimport Header from './components/Header';\nimport Mode from './components/Mode';\nimport Type from './components/Type';\nimport Tags from './components/Tags';\nimport Questions from './components/Questions';\nimport Count from './components/Count';\nimport Submit from './components/Submit';\n\nimport styled from 'styled-components';\n\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n padding: ${({theme}) => theme.layouts.spacing.xl};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 72px 0px 0px;\n border-radius: 8px 8px 0px 0px;\n }\n`;\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n position: relative;\n background: white;\n width: 100%;\n height: 100%;\n max-width: 780px;\n border-radius: 8px;\n overflow: hidden;\n box-shadow: rgb(0 0 0 / 12%) 0px 8px 20px;\n /* transition: all 120ms cubic-bezier(0.175, 0.885, 0.320, 1.275); easeOutBack */\n /* transform: ${({mounted}) => mounted ? 'scale(1)' : 'scale(.95)'}; */\n ${({theme}) => theme.mediaQueries.tablet} {\n border-radius: 8px 8px 0px 0px;\n }\n`;\nconst ContentWrapper = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n overflow-y: auto;\n padding: 0 ${({theme}) => theme.layouts.spacing.l} ${({theme}) => theme.layouts.spacing.l};\n font-family: proxima-nova;\n font-size: 16px;\n font-weight: 400;\n`;\n\nconst CreateTest = () => {\n const {bootcamp} = useUserDataContext();\n const [mounted, setMounted] = useState(false);\n\n function handleWrapperClick(event) {\n event.stopPropagation();\n }\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n return (\n \n \n
\n \n \n {['med-school'].includes(bootcamp) && }\n \n \n \n \n \n \n \n );\n};\n\nconst CreateTestWrapper = ({defaults}) => {\n return (\n \n \n \n );\n}\n\nexport default CreateTestWrapper;\n","import CreateTest from '@bootcamp/web/src/bootcamps/pages/CreateTest';\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\nimport {AddSquare} from '@styled-icons/fluentui-system-filled/AddSquare';\nimport {RoundButton} from '@bootcamp/web/src/components/UI';\nimport {useUserDataContext} from '../../../../contexts/UserData';\n\nconst CreateTestButton = ({className, disableModal, ...props}) => {\n const {isUpgraded} = useUserDataContext();\n const {modalDispatch} = useModalContext();\n\n const openCreateTest = () => {\n if (disableModal) return;\n\n modalDispatch({\n type: 'open',\n component: CreateTest,\n componentProps: !!isUpgraded ? {} : {defaults: {subject: 'Free Questions'}},\n enableClickClose: true,\n });\n }\n\n return (\n }\n small\n {...props}\n />\n )\n}\nexport default CreateTestButton;","import React, {useEffect, useRef, useState} from 'react';\nimport styled from 'styled-components';\nimport {Link} from 'react-router-dom';\n\nimport {ReactComponent as BootcampLogo} from '@bootcamp/shared/src/assets/svg/bootcamp_white_text_logo.svg';\nimport StarLogo from '@bootcamp/shared/src/assets/icons/logo/white_star.png';\nimport TextLogo from '@bootcamp/shared/src/assets/icons/logo/white_text.png';\nimport Links from './Links';\nimport TrackSelect, {MenuComponent} from './TrackSelect';\nimport Upgrade from './Upgrade';\n\nimport CreateTestButton from '@bootcamp/web/src/bootcamps/pages/CreateTest/components/CreateTestButton';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {ChevronDown} from '@styled-icons/heroicons-outline/ChevronDown';\n\nconst sideBarWidth = 256;\n\nconst Container = styled.div`\n position: fixed;\n width: ${sideBarWidth}px;\n height: 100%;\n background: ${({theme}) => theme.colors.special.tuxedo};\n box-shadow: inset -8px 0 5px -5px rgb(18, 23, 27);\n z-index: 10000000;\n transition: all 200ms ease;\n overflow: hidden;\n\n ${({theme: {mediaQueries}}) => mediaQueries.laptop} {\n width: 0;\n display: none;\n }\n`;\n\nconst Wrapper = styled.div`\n height: 100%;\n overflow-y: auto;\n padding-bottom: ${({withBottomPadding}) => withBottomPadding ? '212px' : 0};\n`;\n\nconst LogoWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: ${({theme}) => theme.layouts.spacing.m};\n height: 72px;\n`;\nconst StyledBootcampLogo = styled(BootcampLogo)`\n max-width: 172px;\n height: 30px;\n`;\n\nconst Details = styled.div`\n padding: 8px 28px;\n`;\n\nconst DetailsText = styled.div`\n font-family: 'proxima-nova';\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 16px;\n margin-bottom: 8px;\n color: ${({theme}) => theme.overlays.opacity.light._400};\n text-decoration: none;\n a {\n text-decoration: none;\n color: ${({theme}) => theme.overlays.opacity.light._400};\n }\n`;\n\nconst StyledCreateTestButton = styled(CreateTestButton)`\n margin: 0px 16px 8px;\n`;\n\nconst bootcampMap = {\n 'inbde': 'INBDE Bootcamp',\n 'nclex': 'NCLEX Bootcamp',\n 'med-school': 'Med School Bootcamp',\n 'dental-school': 'Dental Bootcamp',\n 'dat': 'DAT Bootcamp',\n 'oat': 'OAT Bootcamp',\n 'anatomy': 'Anatomy Bootcamp',\n 'chemistry': 'Chemistry Bootcamp',\n 'mcat': 'MCAT Bootcamp',\n}\nconst BootcampTitle = styled.div`\n font-family: proxima-nova;\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 14px;\n margin-top: 1px;\n color: #C8C9CE;\n text-decoration: none;\n`;\n\nconst StyledLink = styled(Link)`\n text-decoration: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n`\n\nconst StyledChevron = styled(ChevronDown)`\n display: inline;\n opacity: 0;\n transform: ${({trackSelectOpen}) => trackSelectOpen ? 'rotate(-180deg)' : 'rotate(0deg)'};\n transition: all 0.2s ease;\n ${StyledLink}:hover & {\n display: inline;\n opacity: 1;\n }\n`\n\nconst StyledTrackSelectMenuComponent = styled(MenuComponent)`\n top: 0px;\n left: 15px;\n right: 15px;\n`;\nconst SideBar = ({className, children, ...props}) => {\n const {isUpgraded, trialMembership, bootcamp} = useUserDataContext();\n const [trackSelectOpen, setTrackSelectOpen] = useState(false);\n const containerRef = useRef();\n useEffect(() => {\n if (!containerRef?.current) return;\n\n const handleClick = event => {\n const isClickInsideContainer = containerRef?.current?.contains(event?.target);\n\n if (isClickInsideContainer) return;\n\n setTrackSelectOpen(false);\n };\n\n window.addEventListener('click', handleClick);\n\n return () => window.removeEventListener('click', handleClick);\n\n }, [containerRef.current]);\n\n return (\n \n \n
\n \n \n \n
{\n e.preventDefault();\n e.stopPropagation();\n setTrackSelectOpen(!trackSelectOpen)\n return false;\n }}>\n \n {bootcampMap[bootcamp]} \n
\n
\n {children}\n
\n {trackSelectOpen && }\n
\n {['inbde', 'nclex', 'med-school', 'anatomy'].includes(bootcamp) && }\n \n
\n \n © {(new Date()).getFullYear()} Bootcamp.com™\n \n \n \n Terms\n \n  · \n \n Privacy\n \n \n
\n
\n {(!isUpgraded || trialMembership) && }\n
\n );\n};\n\nSideBar.defaultProps = {};\nSideBar.propTypes = {};\n\nexport {sideBarWidth};\nexport default SideBar;\n","import React, {useEffect, useRef} from 'react';\nimport styled from 'styled-components';\nimport {withRouter} from 'react-router-dom';\n\nimport {IconButton} from '../../../Branding/Buttons';\nimport {ToggleSidebar} from '../../../Branding/Buttons/iconButtons';\n\nimport SideBar, {sideBarWidth} from '../../../../router/components/SideBar';\nimport {Menu as MenuIconImport} from '@styled-icons/evaicons-solid/Menu';\n\n\nconst Container = styled.div`\n display: none;\n position: fixed;\n top: ${({barHeight}) => barHeight}px;\n left: 0;\n top: 0;\n right: 0;\n width: ${({active}) => active ? '100%' : 0};\n height: ${({active}) => active ? '100vh' : 0};\n z-index: 10000000;\n opacity: ${({active}) => active ? 1 : 0};\n background: ${({theme, active}) => active ? theme.overlays.opacity.dark._400 : 'transparent'};\n transition: opacity .45s;\n\n ${({theme}) => theme.mediaQueries.laptop} {\n display: initial;\n }\n`;\nconst Wrapper = styled.div`\n border-radius: 8px;\n overflow: hidden;\n`;\nconst MenuIcon = styled(MenuIconImport)`\n width: 20px;\n height: 20px;\n color: white;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n width: 22px;\n height: 22px;\n }\n`;\nconst MenuButton = styled(IconButton)`\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n padding: 10px;\n height: auto;\n width: auto;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 8px;\n }\n`;\nconst StyledSideBar = styled(SideBar)`\n display: initial;\n width: ${({active}) => active ? sideBarWidth : 0}px;\n transition: width .2s;\n top: 0;\n\n ${({theme}) => theme.mediaQueries.mobileM} {\n width: ${({active}) => active ? '100%' : 0};\n }\n`;\nconst HideButton = styled(ToggleSidebar)`\n width: 42px;\n height: 42px;\n padding: 10px;\n`;\n\n// TODO once this is polished we can go through and remove unused vars etc.. Leaving in temporarily for now just in case\n// there's anything we want to keep / will need\nconst Menu = withRouter(({className, history, setMenuOpen, menuOpen, barHeight, barHeightMobile, fullWidth, renderMenuItems, nonContextConfig}) => {\n const ref = useRef();\n\n function handleClick(event) {\n if (!menuOpen) return;\n\n const canDoWork = ref && ref.current && ref.current.contains && event && event.target;\n const isInside = canDoWork && ref.current.contains(event.target);\n\n if (!isInside) setMenuOpen(false);\n }\n\n useEffect(() => {\n window.addEventListener('click', handleClick);\n return () => window.removeEventListener('click', handleClick);\n }, [menuOpen]);\n\n return (\n \n \n \n setMenuOpen(false)}/>\n \n \n \n );\n});\n\n\nexport default Menu;\nexport {MenuIcon, MenuButton};\n","import React from 'react';\nimport {Link} from 'react-router-dom';\nimport {H5, H6, Label3} from '../../../Typography';\n\nimport styled, {css} from 'styled-components';\nimport {useHotkeys} from 'react-hotkeys-hook';\n\nconst Container = styled.div`\n display: flex;\n position: fixed;\n top: 71px;\n flex-direction: column;\n background: white;\n border: 1px solid white;\n border-radius: 8px;\n overflow: auto;\n max-height: 400px;\n width: 100%;\n max-width: 400px;\n z-index: 10;\n ${({theme}) => theme.mediaQueries.mobileL} {\n top: 55px;\n left: 0;\n }\n`;\n\nconst ResultWrapper = styled(Link)`\n padding: 16px;\n padding-left: ${({tabbed}) => tabbed ? '32px' : '16px'};\n text-decoration: none;\n &:focus, &:hover {\n background: ${({theme}) => theme.overlays.opacity.dark._100};\n }\n\n ${({themePalette}) => !!themePalette && css`\n border-top: 1px solid ${({theme}) => theme.overlays.opacity.dark._50};\n border-bottom: 1px solid ${({theme}) => theme.overlays.opacity.dark._50};\n background: ${themePalette.light};\n &:focus, &:hover {\n background: ${themePalette.light}80;\n }\n &:first-child {\n border-top: none;\n }\n `}\n`;\n\nconst ResultTitle = styled(H5)`\n color: ${({theme, themePalette}) => !!themePalette ? themePalette.dark : theme.colors.neutralsPalette.darkGrey};\n font-style: normal;\n font-weight: 600;\n font-size: 14px;\n line-height: 120%;\n`;\n\nconst ContentType = styled(H6)`\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n font-style: normal;\n font-weight: normal;\n font-size: 12px;\n line-height: 120%;\n`;\nconst BlockType = styled.span`\n font-size: 12px;\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n`;\n\nconst blockTypeMap = {\n questionSet: '(Quiz)',\n lesson: ''\n};\n\nconst Result = ({name, contentTypeName, route, themePalette, index, type}) => {\n const blockType = blockTypeMap[type];\n\n return (\n \n {name} {blockType && {blockType}} \n {contentTypeName &&\n \n {contentTypeName}\n \n }\n \n );\n}\n\n\nconst Results = ({items, resultsRef}) => {\n\n useHotkeys('up,down', (event, handler) => {\n event.preventDefault();\n if (document.activeElement.parentNode === resultsRef.current) {\n const targetElement = handler.key === 'down' ? document.activeElement.nextSibling : document.activeElement.previousSibling;\n targetElement?.focus();\n } else {\n resultsRef.current.children[0]?.focus();\n }\n }, []);\n\n if (!items.length) return null;\n\n return (\n \n {items\n .filter(({type}) => type !== 'questionSet')\n .map(Result)\n }\n \n );\n};\n\nResults.defaultProps = {};\nResults.propTypes = {};\n\nexport default Results;\n","import React, {useEffect, useRef, useState} from 'react';\n\nimport Results from './Results';\nimport {H5} from '../../../Typography';\nimport styled from 'styled-components';\nimport {useHotkeys} from 'react-hotkeys-hook';\nimport {useBootcampConfigContext} from '../../../../contexts/BootcampConfig';\nimport {useDebounce} from '@bootcamp/shared/src/util/hooks';\nimport {MagnifyingGlass as Search} from '@styled-icons/heroicons-outline/MagnifyingGlass';\n\nconst Container = styled.div`\n display: flex;\n flex-direction: row;\n width: 100%;\n max-width: 400px;\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n`;\nconst Wrapper = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n border-radius: 24px;\n transition: .2s;\n line-height: 0;\n height: 42px;\n padding: 8px 24px;\n background: rgba(255,255,255,.1);\n border: .5px solid rgba(255,255,255,.05);\n flex: 1;\n position: relative;\n`;\nconst Icon = styled(Search).attrs(props => ({size: 16}))`\n position: absolute;\n z-index: 10;\n user-select: none;\n left: 16px;\n top: 0px;\n bottom: 0px;\n margin: auto 0px;\n color: ${({theme}) => theme.overlays.opacity.light._400};\n ${({theme}) => theme.mediaQueries.tablet} {\n left: 24px;\n }\n`;\nconst Input = styled.input`\n font-family: proxima-nova;\n font-size: 16px;\n line-height: 24px;\n width: 100%;\n padding: 0px;\n background: none;\n border: none;\n caret-color: white;\n color: white;\n outline: none;\n padding: 16px 24px 16px 16px;\n ::placeholder {\n color: rgba(255, 255, 255, 0.7);\n }\n ${({theme}) => theme.mediaQueries.mobileL} {\n padding-right: 0px;\n }\n`;\n\nconst KeyboardShortcutPill = styled(H5)`\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 20px;\n padding: 8px;\n top: 0;\n bottom: 0;\n right: 16px;\n margin: auto 0px;\n font-weight: 600;\n font-size: 14px;\n line-height: 0;\n background: rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n color: rgba(255, 255, 255, 0.7);\n ${({theme}) => theme.mediaQueries.mobileL} {\n display: none;\n }\n\n opacity: 1;\n ${({active}) => active && `\n opacity: 0;\n `}\n transition: opacity .5s;\n`\n\nconst ConfigSearch = ({className}) => {\n const [search, setSearch] = useState('');\n const [hits, setHits] = useState([]);\n const [active, setActive] = useState(false);\n const {indexedConfig} = useBootcampConfigContext();\n const debouncedSearch = useDebounce(search, 150);\n\n const inputRef = useRef(null);\n\n const ref = useRef();\n const resultsRef = useRef();\n\n\n function handleClick(event) {\n if (!active) return;\n\n const canDoWork = ref && ref.current && ref.current.contains && event && event.target;\n const isInside = canDoWork && ref.current.contains(event.target);\n\n if (!isInside) setActive(false);\n }\n\n useEffect(() => {\n window.addEventListener('click', handleClick);\n return () => window.removeEventListener('click', handleClick);\n }, [active]);\n\n useHotkeys('cmd+j,ctrl+j', event => {\n\n event?.preventDefault();\n event?.stopPropagation();\n\n setActive(true);\n inputRef.current?.focus();\n }, [active]);\n\n useHotkeys('esc', () => {\n if (!active) return;\n setActive(false);\n inputRef.current?.blur();\n }, [active]);\n\n useEffect(() => {\n if (!inputRef.current) return;\n\n active\n ? inputRef.current.focus()\n : inputRef.current.blur();\n\n }, [active, inputRef])\n\n // Map step: Generate intermediate data structure\n const mapStep = (indexedConfig, processedSearch) => {\n return Object.keys(indexedConfig).map(key => {\n const lowerKey = key.toLowerCase();\n const match = processedSearch.every(word => lowerKey.includes(word));\n const subject = indexedConfig[key].subject;\n return {key, match, subject};\n });\n };\n\n // Reduce step: Combine intermediate data into final list of hits\n const reduceStep = (intermediateData, indexedConfig) => {\n let subjects = {};\n let hits = [];\n\n for (let {key, match, subject} of intermediateData) {\n if (match) {\n if (subject && !subjects[subject]) {\n subjects[subject] = true;\n hits.push(indexedConfig[subject]);\n } else if (!subjects[key]) {\n subjects[key] = true;\n }\n hits.push(indexedConfig[key]);\n }\n }\n\n return hits;\n };\n\n useEffect(() => {\n try {\n if (!search.length || debouncedSearch.length < 3) return setHits([]);\n \n const processedSearch = search\n .toLowerCase()\n .split(' ')\n .filter(word => !['the', 'a', 'an', 'of', 'to', 'or', 'and'].includes(word));\n \n // Map step\n const intermediateData = mapStep(indexedConfig, processedSearch);\n \n // Reduce step\n const hits = reduceStep(intermediateData, indexedConfig);\n \n setHits(hits);\n } catch (error) {\n setHits([]);\n }\n }, [debouncedSearch]);\n return (\n \n setActive(true)}>\n \n setSearch(e.target.value)}\n onKeyDown={event => {\n if (hits.length > 0 && event.keyCode === 40) {\n event.preventDefault();\n event.target.blur();\n resultsRef.current?.children[0]?.focus();\n return false;\n }\n }}\n value={search}\n />\n \n {/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform) ? '⌘' : 'ctrl'} + J\n \n \n {active && }\n \n );\n};\n\nConfigSearch.defaultProps = {};\nConfigSearch.propTypes = {};\n\nexport default ConfigSearch;\n","import React, {useState, useCallback, useEffect} from 'react';\nimport styled from 'styled-components';\nimport {withRouter, Link} from 'react-router-dom';\nimport SVG from 'react-inlinesvg';\n\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {resolveIconPath} from '@bootcamp/web/src/helpers';\n\nimport {Label3, H4} from '../../Typography';\nimport Menu, {MenuIcon, MenuButton} from '../components/Menu';\nimport {Close} from '../components/Buttons';\nimport {HomeIcon, SearchIcon} from '../../Branding/Classroom/Icons';\nimport ConfigSearch from '../components/ConfigSearch';\nimport {trackOptions} from '../../../router/components/SideBar/TrackSelect';\n\nimport {colors} from '@bootcamp/shared/src/styles/theme';\nimport {ArrowForwardOutline} from '@styled-icons/evaicons-outline/ArrowForwardOutline';\nimport {ChevronLeft} from '@styled-icons/fluentui-system-filled/ChevronLeft';\nimport {ChevronRight} from '@styled-icons/fluentui-system-filled/ChevronRight';\n\nimport {\n barHeight,\n barHeightMobile,\n Container,\n ContainerBackground,\n Content,\n Left,\n Right,\n LoggedIn,\n LoggedOut,\n Loader,\n} from '../components';\n\n\nconst ChevronButton = styled.div`\n border-radius: 64px;\n background: ${({theme}) => theme.overlays.opacity.light._100};\n width: 42px;\n height: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 8px;\n padding: 0;\n &:hover {\n background: ${({theme}) => theme.overlays.opacity.light._200};\n cursor: pointer;\n }\n ${({theme}) => theme.mediaQueries.laptop} {\n display: none;\n }\n`;\nconst StyledChevronLeft = styled(ChevronLeft)`\n color: white;\n`;\nconst StyledChevronRight = styled(ChevronRight)`\n color: white;\n`;\n\nconst StyledConfigSearch = styled(ConfigSearch)`\n ${({theme}) => theme.mediaQueries.tablet} {\n display: none;\n }\n`;\nconst StyledContainer = styled(Container)`\n padding: 0;\n`;\nconst Section = styled.div`\n width: 100%;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n`;\nconst SectionTitle = styled(Label3)`\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n padding: 0px 2px;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n font-weight: ${({theme}) => theme.font.weight.semibold};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n width: 100%;\n padding: 0px;\n }\n`;\nconst ItemWrapper = styled.div`\n display: flex;\n flex-flow: row wrap;\n`;\nconst Item = styled(Link)`\n display: flex;\n flex-direction: row;\n width: calc(25% - 4px);\n height: 64px;\n align-items: center;\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n padding: ${({theme}) => theme.layouts.spacing.m} 12px;\n margin: 2px;\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n border-radius: 8px;\n text-decoration: none;\n\n &:hover {\n background: ${({theme}) => theme.colors.neutralsPalette.extraLight};\n }\n\n ${({theme}) => theme.mediaQueries.laptop} {\n width: calc(33.3333% - 4px);\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n width: 100%;\n margin: 0px 0px 4px 0px;\n }\n`;\nconst IconWrapper = styled.span`\n display: flex;\n background: ${({color}) => color};\n padding: 8px;\n border-radius: 24px;\n margin-right: ${({theme}) => theme.layouts.spacing.s};\n\n svg {\n width: 20px;\n height: 20px;\n color: white;\n }\n`;\nconst ItemTitle = styled(H4)`\n font-weight: ${({theme}) => theme.font.weight.normal};\n`;\nconst StyledMenu = styled(Menu)`\n background: ${({theme}) => theme.colors.neutralsPalette.light};\n padding: 24px 22px;\n`;\n\nconst StyledMenuButton = styled(MenuButton)`\n display: none;\n\n ${({theme}) => theme.mediaQueries.laptop} {\n display: initial;\n }\n`;\nconst StyledContent = styled(Content)`\n padding: 0 32px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 0;\n }\n`;\n\nconst ArrowForward = styled(ArrowForwardOutline).attrs(props => ({size: 20}))`\n color: #B5B4B2;\n margin-left: auto;\n`;\n\nfunction renderMenuItems(onMenuItemClick, history, config, bootcamp, setBootcamp) {\n const sectionTitles = {\n classrooms: 'Classrooms',\n studyTools: 'Study Tools',\n upNext: 'Up Next',\n };\n\n const ignore = ['meta'];\n\n const fromConfig = Object\n .keys(config)\n .filter(key => !ignore.includes(key))\n .map(key => (\n
\n {sectionTitles[key]}\n \n {key === 'classrooms' &&\n \n \n \n \n Home\n \n }\n {key === 'studyTools' && bootcamp === 'med-school' &&\n \n \n \n \n Explore\n \n }\n {Array.isArray(config[key]) && config[key].map(({name, route, icon, themePalette, href}, index) => href ? (\n \n {icon &&\n \n {}\n }\n {name}\n {!icon && }\n \n ) : (\n \n {icon &&\n \n {}\n }\n {name}\n {!icon && }\n \n ))}\n \n
\n ));\n\n return [\n ...fromConfig,\n
\n Bootcamps\n \n {Object.values(trackOptions).reduce((acc, curr) => [...acc, ...curr], []).map(({name, route}, index) => (\n setBootcamp(route)}>\n {name}\n \n ))}\n \n
\n ];\n}\n\nconst NavBar = withRouter(({className, history, themePalette, withoutBorder, titleComponent, lockAtDepth}) => {\n const {cognitoUser, loading, isUpgraded, trialMembership, setBootcamp, bootcamp} = useUserDataContext();\n const [menuOpen, setMenuOpen] = useState(false);\n\n const showLogo = history.location.pathname.split('/').length < 3;\n const loggedIn = !!cognitoUser.username;\n const AccountPage = useCallback(() => (\n \n {loggedIn ? : }\n \n ), [loggedIn]);\n return (\n \n \n \n {['nclex', 'mcat'].includes(bootcamp) ? (\n \n : }\n onClick={() => loggedIn && setMenuOpen(!menuOpen)}\n disabled={!loggedIn}\n />\n renderMenuItems(...itemProps, setBootcamp)}\n themePalette={themePalette}\n fullWidth\n />\n \n \n \n \n \n \n \n ) : (\n \n : }\n onClick={() => loggedIn && setMenuOpen(!menuOpen)}\n disabled={!loggedIn}\n />\n renderMenuItems(...itemProps, setBootcamp)}\n themePalette={themePalette}\n fullWidth\n />\n \n \n )}\n \n \n \n )\n});\n\nexport default NavBar;\n","import styled from 'styled-components';\n\nexport const RouteBackground = styled.div`\n position: relative;\n width: 100%;\n height: 100%;\n background: ${({theme, color}) => color || theme.colors.brandPalette.indigo.dark};\n`;\n\nexport const NavBarRouteContainer = styled.div`\n width: 100%;\n min-height: 100vh;\n background: ${({theme, color}) => color || theme.colors.brandPalette.indigo.default};\n padding-top: 72px;\n height: 100%;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding-top: 56px;\n min-height: auto;\n }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport {ProtectedRoute} from '../wrappers';\nimport NavBar from '../../../components/NavBar/App';\nimport SideBar, {sideBarWidth} from '../../components/SideBar';\nimport {RouteBackground, NavBarRouteContainer} from '../shared';\n\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {colors} from '@bootcamp/shared/src/styles/theme';\n\nconst DEFAULT_THEME_PALETTE = {themePalette: colors.brandPalette.royal};\n\n\nconst SideBarRouteContainer = styled(NavBarRouteContainer)`\n`;\n\nconst NavBarWithSideBar = styled(NavBar)`\n overflow: hidden;\n border-radius: 16px 0px 0px 0px;\n width: calc(100% - ${sideBarWidth}px);\n left: ${sideBarWidth}px;\n transition: all 200ms ease;\n\n ${({theme: {mediaQueries}}) => mediaQueries.laptop} {\n border-radius: 0px;\n width: 100%;\n left: 0;\n }\n\n ${({theme: {mediaQueries}}) => mediaQueries.tablet} {\n padding: 0 ${({theme}) => theme.layouts.spacing.m};\n }\n`;\n\nconst Route = ({bootcampRequired=true, ...props}) => {\n // TODO figure out how to not rely on a whitelist here\n const freeRoutes = [\n 'videos',\n 'bank-1',\n 'lesson-1',\n 'test-1',\n 'bite-1',\n 'bite-2',\n 'bite-3',\n 'passage-1', // first RC bank\n 'lecture-1',\n 'upper-and-lower-limbs-back-practical-1',\n 'molecules-and-fundamentals-of-biology', // first Bio bank\n 'cells-and-organelles',\n 'cellular-energy',\n 'lab-concepts', // first GC bank\n 'stoichiometry',\n 'atomic-and-electronic-structure',\n 'bonding-and-molecular-geometry', // first OC bank,\n 'acids-and-bases',\n 'nomeclature',\n 'alkene-&-alkyne-reactions', // first Rbank\n 'algebra-fundamentals', // frist QR bank\n 'trainer',\n 'units-and-vectors', // first OAT physics qbank\n 'head-and-neck-anatomy',\n 'oral-pathology',\n 'local-anesthetics',\n 'pathology',\n 'operative-dentistry',\n 'developmental-biology',\n 'molecular-and-cell-biology',\n 'psychology-and-sociology',\n 'oral-medicine', // first inbde medicine bites bank\n 'anesthesia-and-pain-management', // first inbde pharma qbank\n 'pharmacology', // first inbde pharma bites bank\n 'embryology', // first step 1 qbank (for Neurology & cardiology)\n 'tooth-id-incisors', // first Dental Anatomy ID structure\n 'spermatogenesis-oogenesis', // first Embryo bank\n 'methods-and-overview-of-cells', // first Histo bank\n 'patient-management', // first INBDE pateient management qbank\n 'permanent-incisors-anatomy', // first Dental Anatomy lecture bank\n 'anatomy', // first Cardio board style bank\n 'immunology', // first Dermatology board style bank\n 'skin-structure-and-function', // first Derm bite bank\n 'immunology', // first Immuno board style bank\n 'lymphoid-tissue', // first Immuno bite bank\n 'psychology', // first Psychiatry psych bite bank\n 'introduction-to-the-respiratory-system', // first Pulmonology bite bank\n 'histology', // first Nephrology board style bank\n 'anatomy-and-embryology', // first Nephrololgy bite bank\n 'biochemistry', // first Gastroenterology board style bank\n 'visceral-anatomy', // first Gastroenterology bite bank\n 'evidence-based-dentistry', // first inbde research bank\n 'cell-biology', // first Biochemistry bite bank\n 'research-study-designs', // first Biostats bite bank\n 'fundamentals-of-bacteriology', // first microbio bite bank\n 'ethics-and-communications', // first phs board bank\n 'fundamental-principles-of-endocrinology', // first endo bite bank,\n 'cellular', // first biochem bank\n 'biostatistics-and-epidemiology',\n 'clinical-genetics',\n 'antimicrobials',\n 'principles-of-osteopathy',\n 'pharmacokinetics-and-pharmacodynamics',\n 'behavioral-science',\n 'general-principles',\n 'dna-structure',\n 'skeletal-muscle',\n 'pharmacodynamics',\n 'ethics',\n 'fetal-development',\n // first three nclex banks\n 'next-gen-case-1',\n 'next-gen-case-2',\n 'next-gen-case-3',\n // first readiness exam\n 'readiness-exam-1',\n ];\n const bootcampSpecificRoutes = {\n 'mcat': [\n 'practice-test-1',\n 'passage-2',\n 'passage-3',\n ]\n }\n const {config} = useBootcampConfigContext();\n const {contentSlug, contentType, bootcamp} = props.computedMatch.params;\n\n const allow = (freeRoutes.includes(contentSlug) || freeRoutes.includes(contentType)) || !!bootcampSpecificRoutes?.[bootcamp]?.includes(contentSlug) ? ['Free'] : props.allow;\n\n const {themePalette} = config?.classrooms?.find(({route}) => route && props.computedMatch.url.match(route)) || DEFAULT_THEME_PALETTE;\n\n // if config is falsey return here to prevent 404 redirects on classroom page loads\n if (!config) return null;\n\n return (\n \n \n \n );\n};\n\nconst PageContainer = styled.div`\n background: ${({themePalette}) => themePalette.gradient};\n width: calc(100% - 256px);\n margin-left: 256px;\n border-top-left-radius: 8px;\n ${({theme: {mediaQueries}}) => mediaQueries.laptop} {\n border-top-left-radius: 0px;\n margin-left: 0px;\n width: 100%;\n }\n height: 100%;\n`;\n\nconst GradientBackground = styled.div`\n background: linear-gradient(121.4deg, rgba(14, 20, 24, 0) 0%, rgba(14, 20, 23, 0.4) 100%);\n height: 100%;\n`;\n\nconst SideBarRoute = ({location, match, withoutPadding, withoutBorder, lockAtDepth, useDefaultPalette, ...props}) => {\n const {config} = useBootcampConfigContext();\n const classroomTheme = config?.classrooms?.find(({route}) => route && props.computedMatch.url.match(route));\n const {themePalette} = (useDefaultPalette || !classroomTheme?.themePalette)\n ? DEFAULT_THEME_PALETTE\n : classroomTheme\n\n return [\n ,\n \n \n \n \n \n \n \n \n ];\n};\n\nexport {\n Route,\n SideBarRoute,\n};\n","import React from 'react';\n\nimport {Lottie} from '@crello/react-lottie';\n\nimport {H1, Body2} from '../../../components/Typography';\nimport {LinkButton, Button} from '../../../components/Branding/Buttons';\nimport {Column, Row, FlexBox} from '../../../components/Grid';\n\nimport wavePng from '@bootcamp/shared/src/assets/images/wave-partition.png';\nimport wavePngMobile from '@bootcamp/shared/src/assets/images/wave-partition-mobile.png';\n\nimport animation from './animation.json';\n\nimport styled from 'styled-components';\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {IntercomAPI} from 'react-intercom';\nimport {ChatMultiple} from '@styled-icons/fluentui-system-filled/ChatMultiple';\nimport {Home} from '@styled-icons/fluentui-system-filled/Home';\n\nconst Container = styled(FlexBox)`\n overflow-y: auto;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n }\n`;\nconst Left = styled(Column)`\n width: 56.25%;\n background: linear-gradient(180deg, #536BDF 0%, #28378E 100%);\n padding-left: 10%;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n width: 100%;\n height: 40%;\n padding: 10%;\n }\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n height: 60%;\n padding: 32px 16px;\n }\n`;\nconst LeftWrapper = styled(FlexBox)`\n flex-direction: column;\n align-items: center;\n justify-content: center;\n max-width: 480px;\n`;\nconst Right = styled(Row)`\n width: 43.75%;\n align-items: center;\n background: white;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n width: 100%;\n height: 60%;\n }\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n height: 40%;\n }\n`;\nconst Wave = styled.img`\n position: absolute;\n width: 200px;\n height: 100%;\n`;\nconst WaveMobile = styled.img`\n`;\nconst SvgWrapper = styled.div`\n position: relative;\n height: 100%;\n\n ${WaveMobile} {\n display: none;\n width: 100%;\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n height: 0;\n\n ${WaveMobile} {\n display: inline-block;\n }\n ${Wave} {\n display: none;\n }\n }\n`;\nconst AnimationWrapper = styled.div`\n max-width: 480px;\n padding: 0 100px;\n margin: 0 auto;\n width: 100%;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin: auto 0;\n }\n`;\nconst Header = styled(H1)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n line-height: 45px;\n ${({theme}) => theme.mediaQueries.mobileL} {\n line-height: 30px;\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n font-size: 24px;\n }\n`;\nconst Body = styled(Body2)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n margin-bottom: ${({theme}) => theme.layouts.spacing.xl};\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst HomeButton = styled(LinkButton)`\n width: auto;\n button {\n font-weight: 400;\n color: black;\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n\n &:hover {\n background: ${({theme}) => theme.overlays.opacity.light._400};\n }\n border-radius: 64px;\n }\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n width: 100%;\n button {\n width: 100%;\n }\n }\n`;\nconst MessageButton = styled(Button)`\n font-weight: 400;\n color: black;\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n &:hover {\n background: ${({theme}) => theme.overlays.opacity.light._400};\n }\n border-radius: 64px;\n ${({theme}) => theme.mediaQueries.mobileL} {\n width: 100%;\n }\n`;\n\nconst CenterRow = styled(Row)`\n align-items: center;\n gap: 8px;\n`;\n\nconst ButtonRow = styled(Row)`\n gap: 16px;\n height: auto;\n justify-content: flex-start;\n align-items: center;\n ${({theme}) => theme.mediaQueries.mobileL} {\n flex-direction: column;\n gap: 8px;\n }\n`;\n\n\nconst NotFound = () => {\n const {bootcamp} = useUserDataContext();\n return (\n \n \n \n
We couldn't find the page you are looking for 😬
\n No worries! Let’s get this fixed. Click Go Home and see if this page appears again. If so, send us a message and we’ll get you back to studying ASAP.\n \n Go Home}/>\n {\n e.preventDefault();\n IntercomAPI('showNewMessage')\n }} type={'ghost'} color={'indigo'} children={Send Us a Message}/>\n \n
\n
\n \n , ]}/>\n \n \n \n \n
\n );\n}\n\nexport default NotFound;\n","import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\n\nimport {Body3} from '../Typography';\nimport {Label2} from '../Typography/next';\n\nimport {colors} from '@bootcamp/shared/src/styles/theme';\nimport styled, {css} from 'styled-components';\n\nimport {Checkmark} from '@styled-icons/fluentui-system-filled/Checkmark';\nimport {TargetArrow} from '@styled-icons/fluentui-system-filled/TargetArrow';\n\n\n// segment spacing in pixels\nconst spacing = 0;\n\nfunction getThemeColor({lightMode, theme}) {\n return 'linear-gradient(rgba(0, 0, 0, 0.04) 0%, rgba(0, 0, 0, 0.02) 100%);';\n // return lightMode ? theme.colors.special.naturalLight : theme.colors.special.naturalDark\n}\n\nfunction getThemeShadow({lightMode, theme}) {\n return 'rgb(0 0 0 / 7%) 0px 2px 6px inset;';\n // return lightMode ? theme.elevation.inner.progressLight : theme.elevation.inner.progressDark\n}\n\nfunction getLoadingAnimation({loading, theme, lightMode}) {\n if (!loading) return '';\n\n const gradientRange = lightMode\n ? [theme.colors.neutralsPalette.light, theme.colors.neutralsPalette.lightGrey]\n : [theme.overlays.opacity.dark._100, theme.overlays.opacity.dark._200]; // TODO this probably needs to be tweaked\n\n return `\n background: linear-gradient(-90deg, ${gradientRange[0]} 0%, ${gradientRange[1]} 50%, ${gradientRange[0]} 100%);\n animation: pulse 1.2s ease-in-out infinite;\n background-size: 400% 400%;\n @keyframes pulse {\n 0% {\n background-position: 0% 0%;\n }\n 100% {\n background-position: -135% 0%;\n }\n }\n `;\n}\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n`;\nconst Wrapper = styled.div`\n display: flex;\n width: 100%;\n box-shadow: ${getThemeShadow};\n position: relative;\n\n padding: ${({padBar}) => padBar ? spacing : 0}px;\n border-radius: 8px;\n margin-bottom: ${({theme, withMargin}) => withMargin ? theme.layouts.spacing.s : '0px'};\n background: ${getThemeColor};\n overflow: hidden;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({theme, withMargin}) => withMargin ? theme.layouts.spacing.xs : '0px'};\n }\n\n ${getLoadingAnimation}\n`;\nconst Segment = styled.span`${({count, color, total, loading, isLast, height, round, spacing=4}) => `\n display: inline-block;\n width: ${loading ? 0 : round ? Math.round((count / total) * 100) : (count / total) * 100}%;\n opacity: ${loading ? 0 : 1};\n height: ${height};\n margin-right: ${(!!count && total !== count && !isLast) ? spacing : 0}px;\n border-radius: ${spacing === 0 ? 0 : 8}px;\n background: ${color};\n transition: width .5s;\n box-shadow: ${({theme}) => theme.elevation.shadow.tight};\n\n &:last-child {\n margin-right: 0px;\n }\n`}`;\n\nconst Marker = styled.div`\n height: 16px;\n width: 1px;\n background: ${({theme, targetMet}) => targetMet ? theme.colors.interfacePalette.green.default : theme.colors.neutralsPalette.lightGrey};\n`;\nconst BareMarker = styled(Marker)`\n height: 16px;\n width: 2px;\n background: ${({theme, targetMet}) => theme.colors.borderPalette.secondary};\n position: absolute;\n bottom: calc(50% - 4px);\n left: ${({left, accountForPadding}) => `calc(${left}% - 9px + ${accountForPadding ? '8px' : '0px'})`};\n`;\nconst TargetLabelContent = styled.div`\n position: absolute;\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n bottom: -26px;\n font-family: 'proxima-nova';\n`;\nconst IconWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n\n margin-bottom: 3px;\n border-radius: 10px;\n\n ${({targetMet, theme}) => targetMet\n ? css`\n width: 16px;\n height: 16px;\n padding: 2px;\n background: ${theme.colors.interfacePalette.green.default};\n color: white;\n svg {\n color: white;\n width: 18px;\n height: 18px;\n }\n `\n : css`\n svg {\n color: ${theme.colors.neutralsPalette.lightGrey};\n width: 18px;\n height: 18px;\n }\n `\n }\n`;\nconst BarMarkerContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n position: absolute;\n bottom: calc(50% - 4px);\n left: ${({left, accountForPadding}) => `calc(${left}% - 9px + ${accountForPadding ? '8px' : '0px'})`};\n`;\n\nconst LabelTop = styled(Label2)`\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n margin-bottom: 8px;\n`;\n\n\nconst Target = ({targetNumber, targetLabel, accountForPadding, targetMet}) => {\n return (\n \n \n {targetMet\n ? \n : \n }\n \n \n {targetLabel}\n \n );\n}\n\n\n// TODO keep this from jumping around when label isn't present\nconst ProgressBarLabel = styled(Body3)`\n color: ${({theme, lightMode}) => lightMode ? theme.colors.neutralsPalette.grey : theme.colors.neutralsPalette.white};\n min-height: ${({theme}) => theme.font.height.smaller};\n position: relative;\n`;\n\nconst defaultColors = [colors.interfacePalette.green.gradient, colors.interfacePalette.yellow.gradient, colors.interfacePalette.red.gradient];\nconst defaultSegments = [\n {color: defaultColors[0], count: 0},\n {color: defaultColors[1], count: 0},\n {color: defaultColors[2], count: 0},\n];\n\nconst ProgressBar = ({\n className,\n segments,\n total,\n label,\n showLabel,\n lightMode,\n children,\n loading,\n withMargin,\n segmentHeight,\n round,\n showPercentage,\n padBar=false,\n bareLabel=false,\n targetNumber,\n targetLabel,\n targetMet,\n showLabelTop,\n labelTop,\n withSuffix=true,\n markPosition,\n}) => {\n\n const countSum = useMemo(() => (segments || defaultSegments).reduce((acc, segment) => acc + (segment?.count || 0), 0), [segments]);\n const defaultLabel = {Math.min(countSum, total) || 0} of {total || '...'}{withSuffix && ' questions tagged'};\n const lastIndexWithCount = (segments || defaultSegments).slice(0).reverse().findIndex(({count}) => !!count) || (segments || defaultSegments).length - 1;\n\n return (\n \n {!!labelTop && {labelTop}}\n \n {(segments || defaultSegments)\n .map(({count, color, height, spacing}, index) => (\n \n ))\n }\n {!!markPosition && markPosition} accountForPadding/>}\n \n {showLabel && !bareLabel && {loading ? 'loading...' : label || defaultLabel} {showPercentage && !!total &&
{(countSum ? (countSum / total) * 100 : 0).toFixed(0)}%
}
}\n {showLabel && bareLabel && label}\n {!!targetNumber && 1} targetMet={targetMet}/>}\n
\n );\n}\n\nProgressBar.propTypes = {\n segments: PropTypes.arrayOf(\n PropTypes.shape({\n color: PropTypes.string,\n count: PropTypes.number,\n })\n ),\n label: PropTypes.string,\n lightMode: PropTypes.bool,\n loading: PropTypes.bool,\n showLabel: PropTypes.bool\n};\nProgressBar.defaultProps = {\n segments: defaultSegments,\n label: null,\n lightMode: false,\n total: 50,\n loading: false,\n showLabel: true,\n withMargin: true,\n segmentHeight: '8px',\n};\n\nexport {ProgressBarLabel};\nexport default ProgressBar;\n","import React from 'react';\nimport styled, {css} from 'styled-components';\n\nimport {Row} from '../Grid';\nimport {Body3, H4} from '../Typography';\n\nimport {resolveIconPath} from '@bootcamp/web/src/helpers';\n\nconst imageDimension = 42;\nconst imageSpacingFactor = 2;\n\nfunction getImagePosition(index, total, alignImages) {\n const scaledDimension = imageDimension - (index * 6);\n\n const styleByIndex = alignImages === 'blurb'\n ? [\n css`\n width: ${scaledDimension}px;\n height: ${scaledDimension}px;\n `,\n css`\n width: ${scaledDimension}px;\n height: ${scaledDimension}px;\n top: ${total === 2 ? 'unset' : `${imageDimension / 4}px`};\n bottom: 0;\n left: ${total === 2 ? (imageDimension * .75) : imageDimension}px;\n `,\n css`\n width: ${scaledDimension}px;\n height: ${scaledDimension}px;\n left: ${imageDimension / 2}px;\n bottom: 0;\n `,\n ] : [\n css`\n width: ${imageDimension}px;\n height: ${imageDimension}px;\n `,\n css`\n width: ${imageDimension}px;\n height: ${imageDimension}px;\n left: ${imageDimension - 12}px;\n `,\n css`\n width: ${imageDimension}px;\n height: ${imageDimension}px;\n left: ${(imageDimension * 2) - 24}px;\n `,\n ]\n\n return styleByIndex[index];\n}\n\nfunction getContainerHeight(total, alignImages) {\n\n return alignImages === 'row'\n ? css`\n height: ${imageDimension}px;\n min-width: ${(imageDimension * total) - (12 * (total - 1))}px;\n `\n : total === 3\n ? css`\n height: 70px;\n width: 80px;\n `\n : total === 2\n ? css`\n height: 70px;\n width: 70px;\n `\n : css`\n height: 42px;\n width: 42px;\n `\n}\n\nconst Container = styled(Row)`\n height: auto;\n align-items: ${({orientation}) => orientation === 'row' ? 'center' : 'flex-start'};\n flex-direction: ${({orientation}) => orientation};\n\n ${({theme}) => theme.mediaQueries.laptop} {\n align-items: ${({orientation}) => orientation === 'column' ? 'flex-end' : 'center'};\n }\n`;\n\nconst Images = styled(Row)`\n position: relative;\n width: auto;\n height: auto;\n margin-right: ${({theme, total, orientation}) => total === 1 && orientation === 'column' ? '0': theme.layouts.spacing.s};\n ${({total, alignImages}) => getContainerHeight(total, alignImages)};\n`;\n\nconst ImageContainer = styled.div`\n ${({index, total, alignImages}) => getImagePosition(index, total, alignImages)}\n position: absolute;\n display: flex;\n z-index: 2;\n\n &:first-child {\n margin-left: 0;\n }\n\n ${({index, total}) => `&:nth-child(${index + 1}) {\n z-index: ${total - index};\n }`}\n`;\n\nconst Image = styled.img`\n width: 100%;\n height: 100%;\n border-radius: 100px;\n background: rgba(255, 255, 255, 0.1);\n transition: background .2s;\n padding: 2px;\n\n &:hover {\n background: rgba(255, 255, 255, 0.3);\n }\n\n border: 0.5px solid rgba(255, 255, 255, 0.05);\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n width: 32px;\n height: 32px;\n }\n`;\n\nconst Text = styled(Body3)`\n align-self: ${({alignPreface}) => alignPreface === 'left' ? 'flex-start' : 'flex-end'};\n ${({lightMode}) => lightMode && css`\n color: ${({theme}) => theme.overlays.opacity.light._400};\n `}\n ${({whiteMode}) => whiteMode && css`\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n `}\n`;\n\nconst TextContainer = styled.div`\n display: flex;\n width: auto;\n flex-flow: ${({textPosition, ledByTextOrientation}) => ledByTextOrientation === 'column' ? 'column' : textPosition === 'left' ? 'row' : 'row wrap'};\n align-items: ${({ledByOrientation, ledByTextOrientation}) => ledByOrientation === 'column' ? 'flex-start' : ledByTextOrientation === 'column' ? 'flex-end' : 'center'};\n flex-direction: ${props => props.ledByTextOrientation || props.ledByOrientation};\n margin-right: ${({textPosition, theme}) => textPosition === 'left' ? theme.layouts.spacing.m : '0px'};\n white-space: ${({textPosition, theme}) => textPosition === 'left' ? 'nowrap' : 'normal'};\n /* width: 100%; */\n\n ${({withBorder}) => withBorder && css`\n padding: ${({theme}) => theme.layouts.spacing.m} 0;\n border-top: 1px solid ${({theme}) => theme.overlays.opacity.dark._100};\n `}\n\n ${Text} {\n margin-right: ${({theme, ledByOrientation, ledByTextOrientation, textPosition}) => (ledByTextOrientation !== 'column' && ledByOrientation === \"row\") ? '5px' : \"0px\"};\n }\n\n ${({theme}) => theme.mediaQueries.laptop} {\n border: none;\n padding-top: ${({theme}) => theme.layouts.spacing.s};\n align-items: ${({ledByTextOrientation}) => ledByTextOrientation === 'column' ? 'flex-end' : 'center'};\n }\n`\nconst NameStringWrapper = styled.div`\n display: flex;\n justify-content: flex-end;\n ${({layout}) => layout === 'row'\n ? 'flex-flow: row wrap;'\n : 'flex-direction: column;'\n }\n\n h4 {\n margin-right: 4px;\n &:last-child {\n margin-right: 0px;\n }\n }\n`;\nconst NameString = styled(H4)`\n white-space: nowrap;\n font-weight: bold;\n color: ${({theme, themeColor, whiteMode}) => whiteMode ? theme.colors.neutralsPalette.extraDark : (themeColor || theme.colors.neutralsPalette.white)};\n`;\n\nconst nameStringFormatter = (names, withPunctuation=true) => names.length === 1\n ? names\n : names.map((name, index) => {\n if (index === names.length - 1) {\n return `${withPunctuation ? '& ' : ''}${name}`;\n }\n if (names.length > 2) {\n return `${name}${withPunctuation ? ',' : ''}`;\n }\n return `${name}`;\n });\n\nexport const ExpertEducators = ({className, educators, lightMode, whiteMode, size, themeColor, orientation, ledByOrientation, preface, textPosition, ledByTextOrientation, educatorNameLayout, alignPreface, alignImages}) => {\n // NOTE: limiting this to 3 for now - I think we'll only ever have a max of 3 so config should be updated accordingly\n const slicedEducators = educators.slice(0, 3);\n const educatorNames = nameStringFormatter(slicedEducators.slice(0, 3).map(educator => educator.firstName));\n\n const educatorAvatars = slicedEducators.slice(0, 3).map((educator, index, all) => (\n \n \n \n ));\n\n return (\n \n {textPosition === 'left' &&\n \n {preface}\n \n {educatorNames?.map(name => (\n \n {name}\n \n ))}\n \n \n }\n {orientation === 'column' &&\n \n {preface}\n \n {educatorNames?.map(name => (\n \n {name}\n \n ))}\n \n \n }\n \n {orientation === 'row' && textPosition !== 'left' &&\n \n {preface}\n \n {educatorNames?.map(name => (\n \n {name}\n \n ))}\n \n \n }\n \n )\n};\n\nExpertEducators.defaultProps = {\n educators: [\n {\n firstName: 'Whitney',\n avatar: 'educators/whitney.png',\n },\n {\n firstName: 'Ari',\n avatar: 'educators/ari.gif',\n }\n ],\n displayAsCount: false,\n lightMode: false,\n size: 'large',\n ledByOrientation: 'row',\n ledByTextOrientation: 'row',\n orientation: 'row',\n preface: 'Content Experts',\n alignPreface: 'right',\n alignImages: 'row',\n educatorNameLayout: 'row',\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {FlexBox, Column, Row} from '../../../components/Grid';\nimport {H1, Body2} from '../../../components/Typography';\nimport ProgressBar from '../../../components/ProgressBar';\nimport {ExpertEducators} from '../../../components/ExpertEducators';\nimport {LinkButton, Button} from '../../../components/Branding/Buttons';\n\nimport {Tag} from '@styled-icons/heroicons-outline/Tag';\n\nimport styled, {css} from 'styled-components';\nimport {useModalContext} from '../../../contexts/Modal';\nimport CreateTest from '@bootcamp/web/src/bootcamps/pages/CreateTest';\nimport {DefaultButton} from '@bootcamp/web/src/components/UI';\nimport {VideoClipMultiple} from '@styled-icons/fluentui-system-filled/VideoClipMultiple';\nimport {TaskListSquareLtr} from '@styled-icons/fluentui-system-filled/TaskListSquareLtr';\nimport {Clock} from '@styled-icons/fluentui-system-filled/Clock';\n\nconst Container = styled(FlexBox)`\n background: ${({theme}) => theme.colors.special.naturalDark};\n border: .5px solid ${({theme}) => theme.overlays.opacity.dark._100};\n box-shadow: ${({theme}) => theme.elevation.inner.progressLight};\n justify-content: space-between;\n border-radius: 8px;\n padding: 48px ${({theme}) => theme.layouts.spacing.xxl};\n height: auto;\n\n ${({theme}) => theme.mediaQueries.laptop} {\n flex-direction: column;\n flex-wrap: wrap;\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 48px;\n }\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n padding: 32px 24px;\n }\n`;\nconst Left = styled(Column)`\n flex: 1;\n /* ${({theme}) => theme.mediaQueries.tablet} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.xl};\n } */\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: 0px;\n }\n`;\nconst Right = styled(Column)`\n max-width: 240px;\n justify-content: space-between;\n height: auto;\n align-self: stretch;\n`;\nexport const SubTitle = styled(H1)`\n display: flex;\n width: 100%;\n flex-direction: row;\n justify-content: space-between;\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n display: block;\n font-size: 28px;\n line-height: 33.6px;\n margin-bottom: 4px;\n }\n ${({theme}) => theme.mediaQueries.mobileL} {\n line-height: 1.125em;\n }\n`;\n\nconst Progress = styled(ProgressBar)`\n align-items: flex-end;\n\n ${({theme}) => theme.mediaQueries.laptop} {\n margin-top: ${({theme}) => theme.layouts.spacing.l};\n align-items: flex-start;\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-top: 0px;\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n }\n`;\n\nconst ActionWrapper = styled(Row)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n > * {\n margin-right: ${({theme}) => theme.layouts.spacing.m}\n }\n`;\nconst StudyButtonWrapper = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\n\nconst StudyButton = styled(LinkButton)`\n width: auto;\n button {\n background: ${({theme}) => theme.overlays.opacity.light._100};\n border: 0.5px solid ${({theme}) => theme.overlays.opacity.light._100};\n border-radius: 36px;\n }\n\n margin-right: ${({theme}) => theme.layouts.spacing.l};\n\n div {\n background: ${({theme}) => theme.overlays.opacity.light._100};\n\n &:hover {\n background: ${({theme}) => theme.overlays.opacity.light._200};\n }\n }\n`;\nconst CreateTestButton = styled(Button)`\n width: auto;\n button {\n background: ${({theme}) => theme.overlays.opacity.light._100};\n border: 0.5px solid ${({theme}) => theme.overlays.opacity.light._100};\n border-radius: 36px;\n }\n\n margin-right: ${({theme}) => theme.layouts.spacing.l};\n\n div {\n background: ${({theme}) => theme.overlays.opacity.light._100};\n\n &:hover {\n background: ${({theme}) => theme.overlays.opacity.light._200};\n }\n }\n ${({theme}) => theme.mediaQueries.mobileL} {\n display: none;\n }\n`;\nconst StyledTag = styled(Tag)`\n color: white;\n width: auto;\n`;\nconst StyledExpertEducators = styled(ExpertEducators)`\n width: auto;\n p {\n align-self: flex-start;\n ${({theme}) => theme.mediaQueries.tablet} {\n align-self: flex-end;\n }\n ${({theme}) => theme.mediaQueries.mobileL} {\n align-self: flex-start;\n }\n }\n div {\n ${({theme}) => theme.mediaQueries.mobileL} {\n justify-content: flex-start;\n }\n }\n`;\n\nconst defaultProgress = {\n learning: 0,\n reviewing: 0,\n mastered: 0,\n total: 0,\n};\n\nconst Body = styled(Body2)`\n color: ${({theme}) => theme.overlays.opacity.light._400};\n max-width: 750px;\n margin-bottom: 8px;\n`\nconst UIButtonContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n padding: 4px 8px;\n text-decoration: none;\n\n height: 24px;\n font-size: 14px;\n background: ${({theme}) => theme.overlays.opacity.light._100};\n color: ${({theme}) => theme.overlays.opacity.light._400};\n margin-right: 8px;\n margin-bottom: 12px;\n cursor: default;\n`;\nconst UIButtonText = styled.div`\n font-family: proxima-nova;\n font-style: normal;\n font-weight: 400;\n line-height: 100%;\n display: flex;\n align-items: center;\n text-align: center;\n ${({iconPosition, IconComponent}) => iconPosition && IconComponent && css`\n margin-${iconPosition}: 4px;\n `}\n`;\n\nconst Chiclet = DefaultButton(UIButtonContainer, UIButtonText);\n\nconst Overview = ({\n title,\n subTitle,\n body,\n actions,\n questionCount,\n educators,\n showProgress=true,\n hasProgress,\n progress,\n className,\n progressLabel,\n showStudyTaggedQuestionsButton,\n showCreateTestButton,\n classroom,\n showingDuration,\n duration,\n showingTotalQuestionCount,\n totalQuestionCount,\n showingCourseCount,\n courseCount,\n}) => {\n const {modalDispatch} = useModalContext();\n\n const {learning, reviewing, mastered, completed} = progress?.all || defaultProgress;\n\n const progressSegments = completed\n ? [\n {count: completed.count, color: completed.color}\n ]\n : [\n {count: mastered},\n {count: reviewing},\n {count: learning}\n ];\n\n return (\n \n \n \n {subTitle}\n \n {body && }\n {!!actions.length && }\n \n {showingTotalQuestionCount && (\n } loading={!totalQuestionCount}>\n {totalQuestionCount} questions\n \n )}\n {showingCourseCount && (\n } loading={!courseCount || !duration}>\n {courseCount} lessons ({duration?.trim()})\n \n )}\n \n {classroom && (\n \n {showCreateTestButton && (\n {\n modalDispatch({\n type: 'open',\n component: CreateTest,\n componentProps: {defaults: {subject: subTitle}},\n enableClickClose: true,\n })\n }}\n type={'secondary'}\n size={'small'}\n iconConfig={{\n position: 'left',\n icon: StyledTag,\n size: 16,\n }}\n >\n Create Test\n \n )}\n {/* {showStudyTaggedQuestionsButton &&\n \n Review Tagged Questions\n } */}\n {!!educators.length &&\n \n }\n \n )}\n \n {showProgress &&\n \n \n \n }\n \n );\n}\n\nOverview.propTypes = {\n title: PropTypes.string,\n subTitle: PropTypes.string,\n body: PropTypes.string,\n actions: PropTypes.arrayOf(PropTypes.node)\n};\nOverview.defaultProps = {\n title: 'Classroom',\n subTitle: 'Upper & Lower Limbs',\n body: 'Start by watching the lesson video and download the PDF outline. Qbanks start at the superficial level and proceed to deeper structures.',\n actions: []\n};\n\nexport default Overview;\n","import React, {useRef, useState, useEffect, useCallback} from 'react';\nimport PropTypes from 'prop-types';\n\nimport {Link, useLocation} from 'react-router-dom';\nimport styled, {css} from 'styled-components';\nimport {Waypoint} from 'react-waypoint';\n\nimport {sideBarWidth} from '../../../router/components/SideBar';\n\nimport {H3} from '../../../components/Typography';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\n\nconst Title = styled(H3)`\n ${({active}) => !active && 'color: white'};\n`;\nconst Active = styled.span`\n position: absolute;\n left: 0;\n width: 100%;\n height: 4px;\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n bottom: 0px;\n border-radius: 8px 8px 2px 2px;\n`;\nconst ItemContainer = styled(Link)`\n position: relative;\n display: flex;\n cursor: pointer;\n text-decoration: none;\n white-space: nowrap;\n padding: 16px 0px;\n margin-right: ${({theme}) => theme.layouts.spacing.l};\n background: none;\n border: none;\n\n svg {\n width: 15px;\n stroke: ${({themePalette, active}) => active ? themePalette.default : 'white'};\n fill: ${({themePalette, active}) => active ? themePalette.default : 'white'};\n }\n\n &:last-child {\n margin-right: 0;\n }\n\n ${Title} {\n color: ${({theme, active}) => active ? theme.colors.neutralsPalette.white : theme.overlays.opacity.light._400};\n\n &:hover {\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n }\n }\n\n ${Active} {\n display: none;\n ${({active}) => active && 'display: initial;'};\n }\n`;\nconst Container = styled.div`\n position: relative;\n display: flex;\n flex-direction: row;\n width: 100%;\n max-width: 1152px;\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n overflow-x: auto;\n border-bottom: 1px solid ${({theme}) => theme.overlays.opacity.dark._100};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: 16px;\n }\n ${({sticky}) => sticky && css`\n position: fixed;\n top: 60px;\n z-index: 10;\n left: ${sideBarWidth}px;\n right: 0;\n margin: auto;\n padding: 0 ${({theme}) => theme.layouts.spacing.xl};\n\n ${({theme}) => theme.mediaQueries.laptop} {\n left: 0;\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n top: 56px;\n padding: 0 ${({theme}) => theme.layouts.spacing.m};\n }\n `}\n`;\nconst Placeholder = styled.div`\n margin-bottom: 44px;\n`;\n\nconst Item = ({name, route, externalLink, themePalette, index}) => {\n const {pathname} = useLocation();\n const {bootcamp} = useUserDataContext();\n const pathParts = pathname.split('/');\n const currentPath = pathParts[pathParts.length - 1];\n const rootPath = pathParts\n .slice(0, -1)\n .join('/');\n\n const active = (currentPath && currentPath === route) || (!currentPath && index === 0);\n\n const urlParams = new URLSearchParams(window.location.search);\n const linkTo = `${rootPath}/${route}` + (['videos', 'identify-structures', 'lecture-style-questions', 'atlas'].includes(route) ? `?${urlParams}` : '');\n\n function handleExternalLinkClick(e) {\n e.preventDefault();\n\n window.open(externalLink, '_blank')\n }\n\n return (\n \n {bootcamp === 'med-school' && name === 'Board Style Questions' ? 'Step 1 Qbank' : name}\n \n \n );\n};\n\nconst PageTabs = ({tabs, themePalette}) => {\n const ref = useRef();\n\n const [sticky, setSticky] = useState(false);\n const [dragging, setDragging] = useState(false);\n\n // handler for making the tab nav 'sticky', called using the waypoint 'onLeave' callback\n const stickTabs = () => {\n if (dragging) return;\n document.getElementById('route-container').style.paddingTop = \"122px\";\n document.getElementById('tab-container').style.position = \"fixed\";\n\n setSticky(true)\n };\n\n // handler for 'unsticking' the tab nav, called using the waypoint 'onEnter' callback\n const unstickTabs = () => {\n document.getElementById('route-container').style.paddingTop = \"72px\";\n document.getElementById('tab-container').style.position = \"relative\";\n\n setSticky(false)\n };\n\n const handleMouseDown = useCallback((e) => {\n setDragging(true);\n }, []);\n\n const handleMouseUp = useCallback((e) => {\n const shouldSetSticky = ref?.current?._previousPosition !== 'inside' && window.innerWidth > 768;\n\n shouldSetSticky && stickTabs();\n\n setDragging(false);\n }, []);\n\n useEffect(() => {\n // adding these listeners to handle the scroll bar drag edge case. In a nutshell,\n // just defer any waypoint 'onLeave' events until the drag event is complete. We\n // let 'onEnter' events fire as nromal\n window.addEventListener('mousedown', handleMouseDown);\n window.addEventListener('mouseup', handleMouseUp);\n\n return () => {\n window.removeEventListener('mousedown', handleMouseDown);\n window.removeEventListener('mouseup', handleMouseUp);\n }\n }, [])\n\n return ([\n window.innerWidth > 768 &&\n ,\n \n {tabs.filter(el => el?.name).map(({name, route, externalLink}, index) => (\n \n ))}\n ,\n sticky && \n ]);\n};\n\nPageTabs.defaultProps = {\n tabs: PropTypes.shape({\n name: PropTypes.string,\n route: PropTypes.string,\n }),\n};\nPageTabs.propTypes = {};\n\nexport default PageTabs;\n","import styled from 'styled-components';\n\nconst ScrollContainer = styled.div`\n z-index: 1;\n width: 100%;\n height: 100%;\n overflow-y: auto;\n`;\n\nconst Wrapper = styled.div`\n max-width: 1152px;\n z-index: 1;\n width: 100%;\n margin: auto;\n padding: 16px 32px 80px;\n\n ${({theme: {mediaQueries}}) => mediaQueries.tablet} {\n padding: ${({theme}) => theme.layouts.spacing.m};\n }\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n padding-bottom: ${({theme}) => theme.layouts.spacing.xxl};\n }\n`;\n\nconst PageContainer = ({children, className}) => (\n \n {children}\n \n);\n\nfunction resetScrollPosition() {\n document?.querySelector(`.${ScrollContainer.styledComponentId}`)?.scroll(0,0);\n}\n\nexport {resetScrollPosition, ScrollContainer, Wrapper};\nexport default PageContainer;\n","import React, {useState} from 'react';\nimport styled, {css} from 'styled-components';\nimport {useFormContext} from 'react-hook-form';\nimport moment from 'moment';\nimport {Column, Row} from '../../../../Grid';\nimport {H5, H6} from '../../../../Typography';\n\nimport {Eye} from '@styled-icons/evaicons-solid/Eye';\nimport {EyeOff} from '@styled-icons/evaicons-solid/EyeOff';\nimport {AlertCircle} from '@styled-icons/evaicons-solid/AlertCircle';\nimport {CheckmarkCircle2} from '@styled-icons/evaicons-solid/CheckmarkCircle2';\n\nconst Container = styled.label`\n width: 100%;\n display: block;\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n`;\n\nconst Info = styled(Row)`\n justify-content: space-between;\n height: auto;\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n`;\n\nconst Label = styled(H5)`\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n`;\n\nconst AdditionalInfo = styled(H5)`\n width: 100%;\n flex-shrink: 1;\n text-align: right;\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n`;\n\nexport const Input = styled.input`\n width: 100%;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n font-size: ${({theme}) => theme.font.size.regular};\n line-height: ${({theme}) => theme.font.height.regular};\n padding: 10.5px 48px 10.5px ${({theme}) => theme.layouts.spacing.l};\n border-radius: 8px;\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n background: ${({theme}) => theme.colors.neutralsPalette.extraLight};\n transition: all 100ms;\n\n\n &:focus {\n outline: none;\n background: ${({theme}) => theme.colors.brandPalette.indigo.light};\n border: 1px solid ${({theme}) => theme.colors.brandPalette.indigo.default};\n }\n\n &:hover {\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.lightGrey}\n }\n\n ${({error}) => error && css`\n border: 1px solid ${({theme}) => theme.colors.interfacePalette.red.default};\n background: ${({theme}) => theme.colors.interfacePalette.red.light};\n `}\n\n &:disabled {\n background: ${({theme}) => theme.colors.neutralsPalette.light};\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n user-select: none;\n cursor: not-allowed;\n border: none;\n\n &:hover {\n border: none;\n }\n }\n`;\n\nconst InputWrapper = styled.div`\n width: 100%;\n position: relative;\n`;\n\nconst IconContainer = styled(Column)`\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n margin: auto 0;\n width: auto;\n justify-content: center;\n padding: 10.5px ${({theme}) => theme.layouts.spacing.l} 10.5px 0px;\n cursor: pointer;\n`;\n\nconst ErrorIcon = styled(AlertCircle).attrs(props => ({size: 24}))`\n color: ${({theme}) => theme.colors.interfacePalette.red.default};\n`;\nconst CompleteIcon = styled(CheckmarkCircle2).attrs(props => ({size: 24}))`\n color: ${({theme}) => theme.colors.interfacePalette.green.default};\n`;\n\nconst ErrorContainer = styled(H6)`\n color: ${({theme}) => theme.colors.interfacePalette.red.default};\n position: absolute;\n margin-top: ${({theme}) => theme.layouts.spacing.xs};\n`;\n\nexport const InputDecorator = ({className, name, label, additionalInfo, children, error, complete, hideInfo=false}) => {\n return (\n \n {!hideInfo &&\n \n \n {additionalInfo && }\n \n }\n \n {children}\n \n {error && }\n {complete && !error && }\n \n \n {error && }\n \n );\n}\n\nexport const Text = ({name, label, additionalInfo, inputProps, validation}) => {\n const {register, watch, errors, clearError} = useFormContext();\n const error = errors[name];\n\n return (\n \n \n \n {additionalInfo && }\n \n \n {\n clearError(event.target.name);\n }}\n {...inputProps}\n error={error}\n />\n \n {error && }\n \n \n {error && }\n \n )\n}\n\nexport const DatePicker = ({name, label, additionalInfo, inputProps, validation}) => {\n const {register, watch, errors, clearError} = useFormContext();\n const error = errors[name];\n\n return (\n \n \n \n {additionalInfo && }\n \n \n {\n clearError(event.target.name);\n }}\n {...inputProps}\n error={error}\n />\n \n {error && }\n \n \n {error && }\n \n )\n}\n\nText.defaultProps = {\n validation: () => ({}),\n};\n\n\nconst RevealedIcon = styled(Eye).attrs(props => ({size: 24}))`\n color: ${({theme}) => theme.colors.brandPalette.indigo.default};\n`;\n\nconst HiddenIcon = styled(EyeOff).attrs(props => ({size: 24}))`\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n &:hover {\n color: ${({theme}) => theme.colors.brandPalette.indigo.default};\n }\n`;\n\nexport const Password = ({name, label, additionalInfo, inputProps, validation}) => {\n const [revealed, setRevealed] = useState(false);\n const {register, watch, errors, clearError} = useFormContext();\n const error = errors[name];\n\n return (\n \n \n \n {additionalInfo && }\n \n \n clearError(event.target.name)}\n onBlur={() => setRevealed(false)}\n type={revealed ? 'text' : 'password'}\n error={error}\n />\n setRevealed(!revealed)}>\n {revealed ? : }\n \n \n {error && }\n \n )\n}\n\n\nPassword.defaultProps = {\n validation: () => ({}),\n};\n","import React from 'react';\n\nimport * as Fields from './components/Field';\n\nconst FieldRenderer = ({config}) => {\n\n const renderedFields = config.map(({type, ...props}) => {\n const Field = Fields[type];\n\n return (\n \n );\n });\n\n return renderedFields;\n};\n\nFieldRenderer.defaultProps = {\n config: [\n {type: 'Text', name: '1', inputProps: {placeholder: 'testing'}},\n ]\n};\n\nexport default FieldRenderer;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport useForm, {FormContext, useFormContext} from 'react-hook-form';\n\nconst StyledForm = styled.form`\n width: 100%;\n height: 100%;\n`;\n\nconst Form = props => {\n const {handleSubmit, onSubmit, ...formMethods} = useFormContext();\n return (\n onSubmit(values, formMethods))} noValidate>\n {props.children}\n \n )\n};\n\nconst FormWrapper = ({children, defaultValues, ...props}) => (\n \n
\n {children}\n
\n
\n);\n\nFormWrapper.defaultProps = {\n children: [],\n defaultValues: {}\n}\n\nexport default FormWrapper\n","import React, {useState, useEffect, useRef} from 'react';\nimport styled from 'styled-components';\n\n\nfunction getWrapperPosition({activeIndex, width, index}) {\n const prefix = index < activeIndex ? '-' : '';\n return `${prefix}${Math.abs(index - activeIndex) * width}px`;\n}\n\nconst Wrapper = styled.div`\n display: flex;\n position: absolute;\n transition: left .45s, opacity .45s;\n top: 0;\n right: 0;\n bottom: 0;\n left: ${getWrapperPosition};\n opacity: ${({activeIndex, index}) => index === activeIndex ? 1 : 0};\n width: 100%;\n`;\n\nconst StyledFormProgress = styled.div`\n position: relative;\n height: 100%;\n width: 100%;\n overflow: hidden;\n`;\n\nconst FormProgress = ({className, children=[], height=400}) => {\n const [activeIndex, setActiveIndex] = useState(0);\n const [activeProps, setActiveProps] = useState(0);\n const [width, setWidth] = useState(0);\n\n const containerRef = useRef();\n\n function next ({stepSize=1, activeProps={}}) {\n const nextIndex = Math.min(children.length - 1, activeIndex + stepSize);\n\n setActiveIndex(nextIndex);\n setActiveProps(activeProps);\n }\n\n function previous ({stepSize=1, activeProps={}}) {\n const previousIndex = Math.max(0, activeIndex - stepSize);\n\n setActiveIndex(previousIndex);\n setActiveProps(activeProps);\n }\n\n function updateDimensions () {\n if (!containerRef.current) return;\n setWidth(containerRef.current.clientWidth);\n }\n\n useEffect(() => {\n updateDimensions();\n window.addEventListener('resize', updateDimensions);\n\n return () => {\n window.removeEventListener('resize', updateDimensions);\n }\n }, []);\n\n return (\n \n {children.map((Child, index) => (\n \n \n \n ))}\n \n )\n}\n\nexport default FormProgress;\n","import React from 'react';\nimport styled from 'styled-components';\n\nconst CheckboxContainer = styled.div`\n display: inline-block;\n vertical-align: middle;\n`\n\nconst Icon = styled.svg`\n fill: none;\n stroke: white;\n stroke-width: 2px;\n`\n// Hide checkbox visually but remain accessible to screen readers.\n// Source: https://polished.js.org/docs/#hidevisually\nconst HiddenCheckbox = styled.input.attrs({ type: 'checkbox' })`\n border: 0;\n clip: rect(0 0 0 0);\n clippath: inset(50%);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n`\n\nconst StyledCheckbox = styled.div`\n display: inline-block;\n width: 40px;\n height: 40px;\n background: ${props => (props.checked ? '#4CD771' : '#EDF0F2')};\n border-radius: 3px;\n transition: all 100ms;\n padding: 10px;\n border-radius: 10px;\n transition: 200ms ease;\n\n ${HiddenCheckbox}:focus + & {\n box-shadow: 0 0 0 3px #EDF0F250;\n }\n\n ${Icon} {\n /* visibility: ${props => (props.checked ? 'visible' : 'hidden')} */\n stroke: ${props => (props.checked ? 'white' : '#6E7577')}\n }\n &:hover {\n background: ${({theme, checked}) => checked ? '#4CD77150' : theme.greyButtonHover};\n transition: 200ms ease;\n }\n\n\n`\n\nconst Checkbox = ({ className, checked, innerRef, name, ...props }) => (\n \n)\n\nexport default Checkbox\n","import styled from 'styled-components';\n\nconst Input = styled.input`\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n color: ${({theme}) => theme.darkTextColor};\n font-size: 14px;\n padding: 1.5em .5em;\n min-width: 300px;\n border-radius: 2px;\n transition: all 200ms ease;\n\n &:focus {\n outline: none;\n }\n \n &:hover {\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.lightGrey}\n }\n\n`;\n\nexport default Input;\n","import React from 'react';\nimport {useFormContext} from 'react-hook-form';\nimport styled from 'styled-components';\n\nconst Wrapper = styled.div`\n display: inline-flex;\n height: 45px;\n margin-right: 12px;\n border-radius: 5px;\n`;\n\nconst Select = styled.select`\n cursor: pointer;\n font-size: 16px;\n border: none;\n min-width: ${({minWidth}) => minWidth || '225px'};\n appearance: none;\n background: url(data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0Ljk1IDEwIj48ZGVmcz48c3R5bGU+LmNscy0ye2ZpbGw6IzQ0NDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPmFycm93czwvdGl0bGU+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjEuNDEgNC42NyAyLjQ4IDMuMTggMy41NCA0LjY3IDEuNDEgNC42NyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIzLjU0IDUuMzMgMi40OCA2LjgyIDEuNDEgNS4zMyAzLjU0IDUuMzMiLz48L3N2Zz4=) no-repeat 95% 50%;\n background-size: 12px;\n background-position: calc(100% - 5px) center;\n background-repeat: no-repeat;\n background-color: #f2f5f7;\n padding: 10px;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n`;\n\nfunction defaultRenderOptions(options) {\n return options.map((option, index) => );\n}\n\nconst Menu = ({options, name, disabled, minWidth, renderOptions}) => {\n const {register} = useFormContext();\n return (\n \n \n \n );\n}\n\nMenu.defaultProps = {\n renderOptions: defaultRenderOptions\n}\n\nexport default Menu;\n","import React from 'react';\n\nimport {Column, Row} from '../Grid';\nimport {Button, TextButton} from '../Branding/Buttons';\nimport {Loader} from '../Branding';\nimport {H2, Body3} from '../Typography';\nimport Input from './Input';\nimport Checkbox from './Checkbox';\nimport Menu from './Menu';\n\nimport styled from 'styled-components';\n\nconst Container = styled(Column)`\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n box-shadow: ${({theme}) => theme.elevation.shadow.high};\n border-radius: 8px;\n height: auto;\n max-width: 528px;\n margin: auto;\n align-items: center;\n`;\nconst Body = styled(Column)`\n padding: ${({theme}) => theme.layouts.spacing.xl} ${({theme}) => theme.layouts.spacing.xxl};\n align-items: center;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n padding: ${({theme}) => `${theme.layouts.spacing.m} ${theme.layouts.spacing.l}`}\n }\n`;\nconst Header = styled(H2)`\n width: 100%;\n text-align: center;\n`;\nconst SubHeader = styled(Body3)`\n text-align: center;\n margin-top: ${({theme}) => theme.layouts.spacing.xs};\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n`;\nconst FieldGroup = styled.div`\n width: 100%;\n margin: ${({theme}) => theme.layouts.spacing.l} auto 0;\n`;\nconst SubmitContainer = styled(Row)`\n height: auto;\n padding: ${({theme}) => `${theme.layouts.spacing.l} ${theme.layouts.spacing.xxl}`};\n justify-content: center;\n align-items: center;\n box-shadow: 0px -1px 0px #E5E4E8;\n`;\nconst Submit = styled(Button).attrs(props => ({\n size: 'large',\n type: 'primary',\n fixed: true,\n buttonProps: {\n type: 'submit'\n }\n}))`\n ${({theme}) => theme.mediaQueries.mobileL} {\n font-size: 18px;\n min-width: 250px;\n }\n`;\nconst SubmitButton = ({loading, children, ...props}) => (\n : children}\n {...props}\n />\n)\n\nconst LinkButtonContainer = styled.div`\n width: 100%;\n padding: ${({theme}) => theme.layouts.spacing.m} 0 ${({theme}) => theme.layouts.spacing.s} 0;\n ${({theme}) => theme.mediaQueries.mobileL} {\n padding: 8px 0px;\n }\n`;\n\nconst LinkButton = ({children}) => (\n \n \n \n)\n\nexport {\n Input,\n Checkbox,\n Menu,\n Container,\n Body,\n Header,\n SubHeader,\n FieldGroup,\n SubmitContainer,\n SubmitButton,\n LinkButton,\n};\n","// const stripePublishableKey = 'pk_test_qp6KKA4I8XXW6TuYVS0YTQtz00v2rmToVi'; // TEST KEY this should be moved to ENV\nconst stripePublishableKey = 'pk_live_sKqfW8lorDYHziPVlKDajXas00AiZvpt8C';\n\n\nexport {stripePublishableKey};\n","import React, {useState, useEffect, useRef, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport {IntercomAPI} from 'react-intercom';\n\nimport {Link} from 'react-router-dom';\nimport API from '@aws-amplify/api';\nimport Auth from '@aws-amplify/auth';\nimport {loadStripe} from '@stripe/stripe-js';\nimport {Elements, PaymentRequestButtonElement, CardElement, useStripe, useElements} from '@stripe/react-stripe-js';\nimport {Lottie} from '@crello/react-lottie';\n\nimport Sequence from '../../../components/Sequence';\nimport {Container, Body, Header, SubHeader, FieldGroup, SubmitContainer, SubmitButton} from '../components';\nimport {Input, InputDecorator} from '../FieldRenderer/components/Field';\nimport {TextButton} from '../../Branding/Buttons';\nimport {Loader} from '../../Branding';\nimport {H5, Body4} from '../../Typography';\nimport {FlexBox} from '../../Grid'\nimport {useDebouncedState} from '../../../hooks';\n\nimport checkoutCompleteAnimation from './checkoutComplete.json';\n\nimport {handleError, createMembership, getPrice as getActivePrice, updateActivationCode, invokeLambda} from '@bootcamp/shared/src/requests';\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {graphqlOperation} from 'aws-amplify';\nimport {capitalize} from '@bootcamp/shared/src/util';\n\nimport {stripePublishableKey} from '../../../config/keys';\nimport {font, colors} from '@bootcamp/shared/src/styles/theme';\nimport styled, {css} from 'styled-components';\nimport nanoid from 'nanoid';\nimport TagManager from 'react-gtm-module';\n\nconst stripePromise = loadStripe(stripePublishableKey);\n\nconst Form = styled.form`\n width: 100%;\n height: 100%;\n`;\nconst DiscountInputWrapper = styled.div`\n padding: 44px ${({theme}) => theme.layouts.spacing.xxl};\n width: 100%;\n align-items: center;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n padding: ${({theme}) => `${theme.layouts.spacing.m} ${theme.layouts.spacing.l}`}\n }\n\n button {\n margin: 0;\n }\n`;\nconst SummaryLoader = styled(Loader)`\n fill: ${({theme}) => theme.colors.brandPalette.royal.default};\n`;\nconst CheckoutContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n`;\nconst SectionWrapper = styled.div`\n margin-top: ${({theme}) => theme.layouts.spacing.xxl};\n max-width: 528px;\n width: 100%;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-top: ${({theme}) => theme.layouts.spacing.xl};\n padding: 0px 16px;\n }\n\n &:last-child {\n padding-bottom: ${({theme}) => theme.layouts.spacing.xxl};\n }\n\n ${Header} {\n color: white;\n text-align: left;\n margin-bottom: ${({theme}) => theme.layouts.spacing.xl};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n }\n }\n`;\nconst Summary = styled(Body)`\n display: flex;\n width: 100%;\n border-bottom: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n`;\nconst SummaryTotal = styled(Body)`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n border-top: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n\n span {\n display: flex;\n flex-direction: row;\n align-items: center;\n }\n`;\nconst SummaryTotalDenomination = styled.span`\n font-size: 12px;\n line-height: 16px;\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n margin-right: 8px;\n`;\nconst SummaryDollarAmount = styled.span`\n font-weight: 500;\n font-size: 24px;\n line-height: 36px;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n height: 36px;\n`;\nconst LineItem = styled.div`\n display: flex;\n flex-direction: row;\n flex: 1;\n align-self: stretch;\n`;\n\nconst LoadingAnimation = css`\n ${({loading, theme}) => {\n const gradientRange = [theme.colors.neutralsPalette.light, theme.colors.neutralsPalette.extraLight];\n\n return loading && css`\n background: linear-gradient(\n -90deg,\n ${gradientRange[0]} 0%,\n ${gradientRange[1]} 50%,\n ${gradientRange[0]} 100%\n );\n animation: pulse 1.2s ease-in-out infinite;\n background-size: 400% 400%;\n @keyframes pulse {\n 0% {\n background-position: 0% 0%;\n }\n 100% {\n background-position: -135% 0%;\n }\n }`;\n }}\n`;\n\nconst LineItemIcon = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n border-radius: 8px;\n width: 64px;\n height: 64px;\n margin-right: ${({theme}) => theme.layouts.spacing.s};\n background: ${({lineItemType, theme}) => lineItemType === 'Pro' ? theme.colors.brandPalette.royal.default : theme.colors.brandPalette.orange.default};\n color: white;\n font-size: 14px;\n font-weight: 600;\n\n ${LoadingAnimation}\n`;\nconst LineItemDetails = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n flex: 1;\n border-radius: 8px;\n\n ${LoadingAnimation}\n`;\nconst LineItemText = styled(Body4)`\n`;\nconst LineItemHeader = styled(LineItemText)`\n`;\nconst LineItemSubHeader = styled(LineItemText)`\n font-size: 12px;\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n line-height: 16px;\n`;\nconst LineItemPrice = styled(Body4)`\n margin: auto;\n`;\nconst CardInput = styled(Input)`\n width: 100%;\n\n ${({focused, theme}) => focused && `\n outline: none;\n background: ${theme.colors.brandPalette.royal.light};\n border: 1px solid ${theme.colors.brandPalette.royal.default};\n `}\n`;\nconst InputTransition = styled(InputDecorator)`\n max-height: ${({active}) => active ? '500px' : '0px'};\n max-width: ${({active}) => active ? '500px' : '0px'};\n opacity: ${({active}) => active ? '1' : '0'};\n margin-bottom: ${({active, theme}) => active ? theme.layouts.spacing.m : '0px'};\n transition: max-width .25s ease-in, opacity .5s;\n`;\nconst DiscountCodeToggle = styled(TextButton)`\n width: ${({active}) => active ? '0px' : '100%'};\n margin: ${({theme}) => theme.layouts.spacing.m} 0px;\n`;\nconst AnimationContainer = styled.div`\n padding: ${({theme}) => theme.layouts.spacing.xl} 0px;\n`;\nconst FinishedLink = styled(Link)`\n text-decoration: none;\n width: 100%;\n`;\n\nfunction getCardElementOptions() {\n return {\n style: {\n base: {\n fontSize: font.size.regular,\n color: colors.neutralsPalette.extraDark,\n lineHeight: font.height.regular,\n }\n }\n }\n}\n\nasync function incrementCouponRedemptions(id) {\n if (!id) return;\n\n try {\n const res = await invokeLambda('tbc-Stripe', {path: '/stripe/coupon/increment', couponId: id});\n return res;\n } catch (error) {\n console.log('error updating coupon redemptions', error);\n }\n}\n\nasync function fetchPaymentIntent(priceId, discountCode, receiptEmail, referral='') {\n try {\n const {body: {payment_intent}} = await invokeLambda('tbc-Stripe', {\n path: '/stripe/payment-intent',\n priceId,\n discountCode,\n receiptEmail,\n referral\n });\n return payment_intent;\n } catch (error) {\n console.log('error fetching payment intent', error);\n return {client_secret: null};\n }\n};\n\nasync function fetchPrice(priceId, discountCode) {\n try {\n const {body} = await invokeLambda('tbc-Stripe', {\n path: '/stripe/discount',\n priceId,\n discountCode,\n });\n\n return body;\n\n } catch (error) {\n console.log('error fetching price', error);\n }\n};\n\nasync function createSubscription(email, priceId, paymentMethodId, discountCode) {\n try {\n const {body, error} = await invokeLambda('tbc-Stripe', {\n path: '/stripe/create-subscription',\n email,\n paymentMethodId,\n priceId,\n discountCode,\n });\n\n return {...body, error};\n\n } catch (error) {\n console.log('error creating subscription price', error);\n }\n}\n\nfunction formatPrice(price) {\n if (!price) return '0';\n return parseFloat(price / 100).toFixed(2);\n}\n\nconst DiscountGroup = styled.div`\n width: 100%;\n margin: ${({theme}) => theme.layouts.spacing.xl} auto;\n`;\n\nconst DiscountCode = ({onChange, isValid, isComplete, className}) => {\n const [showingInput, setShowingInput] = useState(false);\n const InputRef = useRef();\n const error = isValid ? null : {message: 'Invalid code'};\n\n return (\n \n {!showingInput &&\n {\n setShowingInput(true);\n InputRef.current.focus();\n }}>\n Have a promo code?\n \n }\n \n \n \n \n );\n};\n\nconst StyledDiscountCode = styled(DiscountCode)`\n margin: 0;\n`;\n\nconst PaymentRequestButtonElementContainer = styled.div`\n width: 100%;\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n`;\n\nconst PaymentOptionText = styled(H5)`\n width: 100%;\n text-align: center;\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n margin: ${({theme}) => theme.layouts.spacing.l} 0;\n`;\n\nconst FormLoader = styled(FlexBox)`\n min-height: 354px;\n align-items: center;\n justify-content: center;\n`;\n\nconst TermsOfUse = styled.div`\n margin-bottom: 24px;\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n padding: 0px ${({theme}) => theme.layouts.spacing.m};\n text-align: center;\n a {\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n &:visited {\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n }\n }\n`;\n\nconst bootcampTitleMap = {\n 'step-1': 'Step 1',\n 'med-school': 'Med School',\n 'dental-school': 'Dental School',\n 'anatomy': 'Anatomy',\n 'chemistry': 'Chemistry',\n};\n\nconst createCohortUserLink = async (cohortId, userId) => {\n const createCohortUserLink = /* GraphQL */ `\n mutation CreateCohortUserLink($input: CreateCohortUserLinkInput!) {\n createCohortUserLink(input: $input) {\n id\n user {\n id\n }\n }\n }\n `;\n\n return await API.graphql(graphqlOperation(createCohortUserLink, {input: {cohortId, userId}}));\n}\n\nasync function addUserToCohort(discountCode, membershipInput) {\n if (!discountCode) return;\n\n try {\n // attempt to update the activation code - if it's not able to update, return\n const activationCode = await updateActivationCode({\n id: discountCode,\n couponId: discountCode,\n priceId: membershipInput.productId,\n userId: membershipInput.userMembershipsId,\n redeemedAt: membershipInput.startDate,\n membershipId: membershipInput.id,\n });\n\n if (!activationCode) return;\n\n const {cohortId, userId} = activationCode;\n\n // create cohort user link\n await createCohortUserLink(cohortId, userId);\n\n } catch (error) {\n console.log('error adding user to cohort', error);\n }\n}\n\nconst Checkout = ({onFinished, priceId, type, bootcamp}) => {\n const {refreshSession, userModel} = useUserDataContext();\n const [cardElementFocused, setCardElementFocused] = useState(false);\n const [discountCode, setDiscountCode] = useDebouncedState(null);\n const [{originalPrice, discountedPrice, promoCodeId}, setPrice] = useState({});\n const [cardInfoComplete, setCardInfoComplete] = useState(false);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n const [summaryData, setSummaryData] = useState(null);\n const [checkedBrowserPaymentMethods, setCheckedBrowserPaymentMethods] = useState(false);\n const [paymentRequest, setPaymentRequest] = useState(null);\n const stripe = useStripe();\n const elements = useElements();\n // here we are looking at priceId as an indication for membership type. In the Stripe subscription API a priceId is used rather than a product\n // sku for subscription creation, so this is a reliable indicator.\n const membershipType = (type === 'recurring' || summaryData?.type === 'recurring') ? 'subscription' : 'oneTimePayment';\n\n const formattedOriginalPrice = formatPrice(originalPrice);\n const formattedDiscountPrice= formatPrice(discountedPrice)\n useEffect(() => {\n if (!discountedPrice) return;\n\n try {\n setPaymentRequest(null);\n const paymentRequest = stripe.paymentRequest({\n country: 'US',\n currency: 'usd',\n total: {\n label: 'Bootcamp Membership: Subtotal',\n amount: discountedPrice,\n // This total is merely used to display the value to the user.\n // The actual amount to be charged is still determined by the clientSecret.\n }\n });\n\n paymentRequest.on('paymentmethod', async (ev) => {\n const user = await Auth.currentAuthenticatedUser();\n const paymentIntent = await fetchPaymentIntent(priceId, discountCode, user.attributes.email);\n const {client_secret: clientSecret, metadata} = paymentIntent;\n\n // Confirm the PaymentIntent without handling potential next actions (yet).\n // NOTE: We'll call confirmCardPayment again after we tell the browser\n // to close the paymentRequest window. Not sure if necessary, but recommended\n // by the tutorial here:\n // https://stripe.com/docs/stripe-js/elements/payment-request-button#react-complete-payment\n const {error: confirmError} = await stripe.confirmCardPayment(\n clientSecret,\n {payment_method: ev.paymentMethod.id},\n {handleActions: false}\n );\n\n if (confirmError) {\n // Report to the browser that the payment failed, prompting it to\n // re-show the payment interface, or show an error message and close\n // the payment interface.\n ev.complete('fail');\n } else {\n // Report to the browser that the confirmation was successful, prompting\n // it to close the browser payment method collection interface.\n ev.complete('success');\n // Let Stripe.js handle the rest of the payment flow.\n const {error} = await stripe.confirmCardPayment(clientSecret);\n\n if (error) {\n // The payment failed -- ask your customer for a new payment method.\n } else {\n const groups = (metadata.groups || '').split(',').filter(group => !!group);\n const startDate = findStartDate(groups);\n\n const membershipInput = {\n id: paymentIntent.id,\n startDate: startDate.toISOString(),\n productId: metadata.priceId,\n duration: metadata.duration,\n status: 'active',\n userMembershipsId: user.username,\n type: 'oneTimePayment',\n groups,\n }\n handlePaymentComplete(membershipInput, user.attributes.email, false, metadata.title);\n }\n }\n })\n\n paymentRequest.canMakePayment().then(paymentMethod => {\n setCheckedBrowserPaymentMethods(true);\n paymentMethod && setPaymentRequest(paymentRequest);\n });\n\n paymentRequest.on('cancel', async (ev) => {\n // If a user authorizes a payment but then cancels the paymentRequest\n // (according to Stripe, this can happen on some browsers but none specified?)\n // we need to cancel the payment intent.\n // if (!paymentIntent) return;\n // try {\n // const refund = await refundPaymentIntent(paymentIntent.id);\n // console.log('successfully requested refund', refund);\n // } catch (e) {\n // console.error('error requesting refund', e);\n // }\n\n });\n\n } catch (e) {\n console.log(e);\n }\n\n }, [discountedPrice]);\n\n const getPrice = async () => {\n if (!stripe) return;\n setLoading(true);\n const calculatedPrice = await fetchPrice(priceId, discountCode);\n setPrice(calculatedPrice);\n setLoading(false);\n };\n\n const handleClick = event => {\n // this is mainly here to prevent form clicks from closing the modal (when this component is rendered in a modal)\n event.persist();\n if (event.target?.id === 'upgrade-link') return;\n event.preventDefault();\n event.stopPropagation();\n };\n\n const processPayment = async (clientSecret, skipProcessing) => {\n // skip processing card payment if payment intent fetch says so (handling $0 balances)\n if (skipProcessing) return {error: null, paymentIntent: {id: `${nanoid()}_${discountCode}`}};\n try {\n const card = elements.getElement(CardElement);\n return stripe.confirmCardPayment(clientSecret, {payment_method: {card}});\n } catch (e) {\n handleError('processPayment err', e);\n return {error: {message: 'Error occurred, please contact support.'}, paymentIntent: {id: nanoid()}};\n }\n };\n\n const createPaymentMethod = async () => {\n const card = elements.getElement(CardElement);\n\n try {\n return await stripe.createPaymentMethod({\n type: 'card',\n card,\n // optionally add billing details etc here\n });\n } catch (error) {\n console.log('error creating payment method', error);\n return {paymentMethodError: error};\n }\n };\n\n function findStartDate(membershipGroups) {\n try {\n\n const extendableMemberships = userModel?.memberships?.items\n // active memberships are extendable\n ?.filter(membership => membership.status === 'active')\n // memberships that share a group with the membership being purchased are extendable\n ?.filter(membership => membership.groups\n .filter(group => group !== 'PlusPackAccess')\n .find(group => membershipGroups.find(membershipGroup => membershipGroup === group))\n );\n\n if (!extendableMemberships || extendableMemberships.length === 0) return new Date();\n\n // we need to find when this membership should start\n // based on the ultimate end date of our current memberships\n let latestEnd;\n\n for (const membership of extendableMemberships) {\n if (!latestEnd) latestEnd = membership;\n\n // end date of the current membership iteration\n const membershipDate = new Date(membership.startDate);\n const membershipEndDate = membershipDate.setDate(membershipDate.getDate() + membership.duration);\n\n // end date of the stored \"latestEnd\" membership\n const endDate = new Date(latestEnd.startDate);\n const latestEndDate = endDate.setDate(endDate.getDate() + latestEnd.duration);\n\n // if the current membership iteration ends later than the latestEnd - update latest end\n if (membershipEndDate > latestEndDate) {\n latestEnd = membership;\n }\n }\n\n const endDate = new Date(latestEnd.startDate);\n const latestEndDate = endDate.setDate(endDate.getDate() + latestEnd.duration);\n\n // latestEndDate should be a unix string\n return new Date(latestEndDate);\n } catch (e) {\n console.error('findStartDate err', e);\n return new Date();\n }\n }\n\n const handleSubscriptionSubmit = async (event) => {\n\n // Block native form submission.\n event.preventDefault();\n\n // fetch curent user\n const user = await Auth.currentAuthenticatedUser();\n\n // return if stripe hasn't loaded\n if (!stripe || !elements || !user) return;\n\n setLoading(true);\n\n // create payment method\n const {paymentMethod, paymentMethodError} = await createPaymentMethod();\n\n if (paymentMethodError) {\n handleError('error processing payment', paymentMethodError);\n setError({message: paymentMethodError.message || 'There was a problem processing your payment method.'});\n setLoading(false);\n return;\n }\n\n const appliedDiscount = originalPrice === discountedPrice ? '' : promoCodeId;\n\n // create subscription\n const {subscription, error} = await createSubscription(user.attributes.email, priceId, paymentMethod.id, appliedDiscount);\n\n if (error) {\n handleError('error processing payment', error);\n setError({message: error.message});\n setLoading(false);\n } else {\n const {price} = subscription?.items?.data?.[0] || {price: {id: 'none'}};\n const groups = (price.metadata?.groups || '').split(',').filter(group => !!group);\n const startDate = findStartDate();\n const membershipInput = {\n id: subscription.id,\n startDate: startDate.toISOString(),\n productId: price.id,\n status: 'active',\n userMembershipsId: user.username,\n type: 'subscription',\n duration: 30, // TODO get this from metadata\n groups,\n };\n\n const productName = subscription?.plan?.metadata?.title;\n\n handlePaymentComplete(membershipInput, user.attributes.email, false, productName);\n }\n };\n\n const handleOneTimePaymentSubmit = async (event) => {\n // Block native form submission.\n event.preventDefault();\n\n // fetch curent user\n const user = await Auth.currentAuthenticatedUser();\n\n // return if stripe hasn't loaded\n if (!stripe || !elements || !user) return;\n\n setLoading(true);\n\n const appliedDiscount = originalPrice === discountedPrice ? '' : discountCode;\n const referral = window.Rewardful?.referral || '';\n // fetch payment intent\n const {client_secret: clientSecret, metadata, skipProcessing} = await fetchPaymentIntent(priceId, appliedDiscount, user.attributes.email, referral);\n const activeMemberships = (userModel?.memberships?.items || []).filter(membership => membership?.status === 'active');\n\n if (skipProcessing && activeMemberships.length > 0) {\n window.alert('ERROR: Cannot apply free membership to upgraded account')\n setLoading(false);\n return\n }\n\n const {error, paymentIntent} = await processPayment(clientSecret, skipProcessing);\n\n if (error) {\n handleError('error processing payment', error);\n setError({message: error.message});\n setLoading(false);\n } else {\n const groups = (metadata.groups || '').split(',').filter(group => !!group);\n const startDate = findStartDate(groups);\n\n const membershipInput = {\n id: paymentIntent.id,\n startDate: startDate.toISOString(),\n productId: metadata.priceId,\n duration: metadata.duration,\n status: 'active',\n userMembershipsId: user.username,\n type: 'oneTimePayment',\n groups,\n }\n handlePaymentComplete(membershipInput, user.attributes.email, false, metadata.title);\n }\n };\n\n const handlePaymentComplete = async (membershipInput, email, skipProcessing, productName) => {\n // increment coupon redemption metadata\n await incrementCouponRedemptions(discountCode);\n\n // create membership\n const membership = await createMembership(membershipInput);\n\n // add user to cohort\n await addUserToCohort(discountCode, membershipInput);\n\n await refreshSession();\n\n try {\n // update intercom user attributes\n if (membershipInput.type === 'subscription') {\n // create intercom event\n await IntercomAPI('trackEvent', 'Upgraded to monthly plan', {\n ...membershipInput,\n groups: JSON.stringify(membershipInput.groups),\n discountCode,\n discountedPrice: (discountedPrice / 100).toFixed(2),\n originalPrice: (originalPrice / 100).toFixed(2),\n });\n try {\n TagManager.dataLayer({\n dataLayer: {\n 'transactionId': membershipInput.id,\n 'transactionTotal': (discountedPrice / 100).toFixed(2),\n 'transactionCoupon': discountCode,\n 'transactionProducts': [{\n 'sku': priceId,\n 'name': productName || priceId,\n 'price': (discountedPrice / 100).toFixed(2),\n 'quantity': 1\n }],\n 'email': email,\n 'event': 'Transaction Complete',\n }\n })\n } catch (e) {\n console.log(e);\n }\n } else {\n // create intercom event\n await IntercomAPI('trackEvent', `Account Upgraded: Joined group(s) ${membershipInput.groups.join(', ')}`, {\n ...membershipInput,\n groups: JSON.stringify(membershipInput.groups),\n discountCode,\n discountedPrice: (discountedPrice / 100).toFixed(2),\n originalPrice: (originalPrice / 100).toFixed(2),\n });\n try {\n if (discountCode) {\n await IntercomAPI('update', {discountCode});\n }\n } catch (error) {\n console.log(error)\n }\n try {\n window.rewardful && window.rewardful('convert', { email });\n TagManager.dataLayer({\n dataLayer: {\n 'transactionId': membershipInput.id,\n 'transactionTotal': (discountedPrice / 100).toFixed(2),\n 'transactionCoupon': discountCode,\n 'transactionProducts': [{\n 'sku': priceId,\n 'name': productName || priceId,\n 'price': (discountedPrice / 100).toFixed(2),\n 'quantity': 1\n }],\n 'email': email,\n 'event': 'Transaction Complete',\n }\n })\n } catch (e) {\n console.log(e);\n }\n }\n\n } catch (error) {\n console.log('error registering intercom', error);\n }\n\n setLoading(false);\n\n onFinished(email, membershipInput.id, skipProcessing);\n return membership;\n }\n\n useEffect(() => {\n if (!elements || !checkedBrowserPaymentMethods) return;\n\n const cardElement = elements.getElement(CardElement);\n\n cardElement.on('change', (event) => {\n if (event.complete) setCardInfoComplete(true);\n else if (cardInfoComplete && !event.complete) setCardInfoComplete(false);\n });\n\n }, [elements, cardInfoComplete, checkedBrowserPaymentMethods]);\n\n useEffect(() => {\n getPrice();\n }, [stripe, discountCode]);\n\n useEffect(() => {\n async function getSummaryData() {\n const price = await getActivePrice(priceId);\n setSummaryData(price);\n }\n\n priceId && getSummaryData();\n }, [priceId, bootcamp]);\n\n const lineItemType = summaryData?.metadata?.title?.split(' ').slice(-1)[0];\n\n const bootcampTitle = bootcampTitleMap[bootcamp] || bootcamp.toUpperCase();\n\n const FREE_PURCHASE = formattedDiscountPrice == 0;\n\n return (\n \n \n
Order Summary
\n \n \n \n \n {summaryData && bootcampTitle}\n
\n {lineItemType}\n
\n \n {!!summaryData && summaryData?.metadata?.title}\n {!!summaryData && `Grants ${summaryData?.metadata?.durationString || 'access'} to ${bootcampTitle} Bootcamp`}\n \n \n {formattedOriginalPrice ? `$${formattedOriginalPrice}` : ''}{membershipType === 'subscription' ? '/mo' : ''}\n \n
\n
\n \n {\n setLoading(true);\n setDiscountCode(event.target.value);\n }}\n isValid={loading || !discountCode || (originalPrice && Number.isInteger(discountedPrice) && originalPrice !== discountedPrice)}\n isComplete={discountCode && originalPrice && Number.isInteger(discountedPrice) && originalPrice !== discountedPrice}\n />\n \n \n Total\n \n USD\n \n {loading ? : `$${formattedDiscountPrice}`}\n \n {membershipType === 'subscription' ? '/mo' : ''}\n \n \n
\n
\n \n
Payment Information
\n \n {FREE_PURCHASE ? null : \n {checkedBrowserPaymentMethods ? (\n
\n {paymentRequest && membershipType !== 'subscription' &&\n \n \n Use saved card\n \n \n \n Or enter details below\n \n \n }\n \n \n setCardElementFocused(true)}\n onBlur={() => setCardElementFocused(false)}\n options={getCardElementOptions()}\n focused={cardElementFocused}\n as={CardElement}\n />\n \n \n
\n ) : }\n }\n \n \n {loading ? : FREE_PURCHASE ? `Proceed` : `Pay $${formatPrice(discountedPrice)}`}\n \n \n \n By clicking above, I agree to the Terms of Use.\n \n
\n\n
\n\n
\n )\n};\n\nconst FinishedAnimation = ({onFinished}) => {\n const eventListeners = onFinished\n ? [{name: 'complete', callback: onFinished}]\n : [];\n\n return (\n \n \n \n )\n}\n\nconst Finished = ({start, link, email, paymentIntentId, skipProcessing, onAnimationFinished, bootcamp}) => (\n \n \n
{(bootcamp === 'oat' || bootcamp === 'inbde' || bootcamp === 'dat') ? `Payment Successful!` : `Awesome! We're looking forward to helping you master ${bootcampTitleMap[bootcamp] || bootcamp.toUpperCase()}`}
\n {!skipProcessing && !onAnimationFinished && We've sent a receipt to {email}. You are now an upgraded member of {['dat', 'oat', 'inbde'].includes(bootcamp) ? bootcamp.toUpperCase() : bootcampTitleMap[bootcamp] || bootcamp} Bootcamp.}\n {start && onAnimationFinished(bootcamp, paymentIntentId)}/>}\n \n {!onAnimationFinished &&\n \n \n \n {link.text}\n \n \n \n }\n
\n);\n\nconst StyledSequence = styled(Sequence)`\n height: 100%;\n overflow: auto;\n overflow-x: hidden;\n`;\n\nconst ContextWrapper = ({finishedLink, onAnimationFinished, priceId, bootcamp, type}) => {\n const SequenceWrappedCheckout = useCallback(({next}) => !bootcamp\n ? \n : (\n {\n next({stepSize: 1, activeProps: {finished: true, email, paymentIntentId, skipProcessing}})\n }}\n />\n ),\n [bootcamp]\n );\n\n return (\n \n \n {[\n SequenceWrappedCheckout,\n ({finished, email, paymentIntentId, skipProcessing}) => \n ]}\n \n \n );\n}\n\nContextWrapper.propTypes = {\n finishedLink: PropTypes.shape({\n to: PropTypes.string,\n text: PropTypes.string,\n }),\n showHeader: PropTypes.bool,\n};\nContextWrapper.defaultProps = {\n finishedLink: {\n to: '/account',\n text: 'Close'\n },\n showHeader: true,\n};\n\n\nexport {Checkout, Finished};\nexport default ContextWrapper;\n","import React from 'react';\nimport Auth from '@aws-amplify/auth';\n\nimport {useUserDataContext} from '../../../../contexts/UserData';\n\nimport {useFormContext} from 'react-hook-form';\n\nimport FieldRenderer from '../../FieldRenderer';\nimport FormWrapper from '../../FormWrapper';\n\nimport {Container, Header, Body, FieldGroup, SubmitContainer, SubmitButton} from '../../';\n\nconst FormSubmit = props => {\n const {formState} = useFormContext();\n return (\n \n \n Verify Email\n \n \n )\n}\n\nconst VerifyEmail = ({onSubmit}) => {\n const {refreshSession} = useUserDataContext();\n\n return (\n {\n const {code} = values;\n try {\n await Auth.verifyCurrentUserAttributeSubmit('email', code);\n refreshSession(true);\n } catch (e) {\n console.log(e);\n } finally {\n onSubmit();\n }\n }}>\n \n \n
Verify your Email
\n }/>\n \n \n
\n
\n )\n}\n\n\nexport default VerifyEmail;\n\nVerifyEmail.defaultProps = {\n onSubmit: () => true\n};\n\nconst VERIFY_EMAIL_FORM_CONFIG = [\n {\n type: 'Text',\n label: 'Confirmation Code',\n name: 'code',\n inputProps: {\n autoFocus: true,\n placeholder: 'Enter code...'\n },\n validation: () => ({\n required: 'Confirmation code required.'\n })\n }\n]\n","import React, {useState, useEffect} from 'react';\nimport styled from 'styled-components';\n\nimport {Column} from '../../Grid';\nimport VerifyEmail from '../../../components/Form/Auth/VerifyEmail';\nimport {IconButton} from '../../Branding/Buttons';\nimport {CloseOutline as X} from '@styled-icons/evaicons-outline/CloseOutline';\n\nconst ModalContainer = styled(Column)`\n max-width: 528px;\n position: relative;\n height: auto;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n transition: transform .5s, opacity .75s;\n ${({visible}) => visible\n ? `\n transform: translateY(0%);\n opacity: 1;\n margin-top: auto;\n `\n : `\n transform: translateY(100%);\n opacity: 0;\n `\n }\n }\n`;\n\nconst CloseButton = styled(IconButton)`\n z-index: 2;\n position: absolute;\n top: -32px;\n right: -32px;\n opacity: 0;\n ${({visible}) => visible && `\n opacity: 1;\n `}\n\n ${({theme}) => theme.mediaQueries.tablet} {\n color: white;\n top: -40px;\n right: -32px;\n ${({visible}) => visible && `\n right: 16px;\n `}\n }\n`;\n\nconst VerifyEmailModal = ({close}) => {\n const [visible, setVisible] = useState(false);\n\n useEffect(() => {\n setVisible(true);\n }, []);\n\n return (\n \n \n \n \n \n \n )\n}\nexport default VerifyEmailModal;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {Auth} from 'aws-amplify';\nimport {useFormContext} from 'react-hook-form';\n\nimport FieldRenderer from '../../FieldRenderer';\nimport FormWrapper from '../../FormWrapper';\n\nimport {Container, Header, Body, FieldGroup, SubmitContainer, SubmitButton} from '../../';\n\nconst FormSubmit = ({children}) => {\n const {formState} = useFormContext();\n\n return (\n \n \n {children}\n \n \n );\n}\n\nconst ChangePassword = ({onSubmit}) => {\n\n return (\n {\n try {\n const user = await Auth.currentAuthenticatedUser();\n const {oldPassword, confirmPassword} = values;\n await Auth.changePassword(user, oldPassword, confirmPassword);\n } catch (error) {\n console.log('error changing password', error);\n } finally {\n onSubmit();\n }\n }}>\n \n \n
Change your password
\n }/>\n \n \n
\n
\n );\n}\n\nconst CHANGE_PASSWORD_FORM_CONFIG = [\n {\n type: 'Text',\n label: 'Old Password',\n name: 'oldPassword',\n inputProps: {\n type: 'password'\n },\n validation: () => ({\n minLength: {\n value: 8,\n message: 'Must be at least 8 characters'\n }\n })\n },\n {\n type: 'Text',\n label: 'New Password',\n name: 'newPassword',\n additionalInfo: '8+ characters',\n inputProps: {\n type: 'password'\n },\n validation: () => ({\n minLength: {\n value: 8,\n message: 'Must be at least 8 characters'\n }\n })\n },\n {\n type: 'Text',\n label: 'Confirm New Password',\n name: 'confirmPassword',\n inputProps: {\n type: 'password',\n },\n validation: watch => ({\n validate: value => (watch('newPassword') === value) || 'passwords must match',\n })\n }\n];\n\nChangePassword.propTypes = {\n onSubmit: PropTypes.func,\n};\n\nChangePassword.defaultProps = {\n onSubmit: () => true,\n};\n\nexport default ChangePassword;\n","import React, {useState, useEffect} from 'react';\nimport styled from 'styled-components';\n\nimport {Column} from '../../Grid';\n\nimport ChangePassword from '../../../components/Form/Auth/ChangePassword';\n\nconst ModalContainer = styled(Column)`\n max-width: 528px;\n position: relative;\n height: auto;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n transition: transform .5s, opacity .75s;\n ${({visible}) => visible\n ? `\n transform: translateY(0%);\n opacity: 1;\n margin-top: auto;\n `\n : `\n transform: translateY(100%);\n opacity: 0;\n `\n }\n }\n`;\n\nconst ChangePasswordModal = ({close}) => {\n const [visible, setVisible] = useState(false);\n\n useEffect(() => {\n setVisible(true);\n }, []);\n\n return (\n {\n e.stopPropagation();\n }} visible={visible}>\n \n \n )\n}\nexport default ChangePasswordModal;\n","import {Row} from '../../../../../components/Grid';\nimport {Label3, Body2} from '../../../../../components/Typography';\nimport styled from 'styled-components';\n\n\nexport const Container = styled.div`\n box-shadow: ${({theme}) => theme.elevation.shadow.medium};\n border-radius: 8px;\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n max-width: 640px;\n width: 100%;\n margin: auto;\n`;\n\nexport const TitleBar = styled(Row)`\n align-items: center;\n padding: ${({theme}) => theme.layouts.spacing.m} ${({theme}) => theme.layouts.spacing.l};\n box-shadow: 0px 1px 0px rgba(0, 0, 0, 0.1);\n ${({theme}) => theme.mediaQueries.tablet} {\n padding-left: ${({theme}) => theme.layouts.spacing.l};\n }\n min-height: 56px;\n`;\n\nexport const Content = styled.div`\n padding: ${({theme}) => theme.layouts.spacing.m} ${({theme}) => theme.layouts.spacing.l};\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: ${({theme}) => theme.layouts.spacing.l};\n }\n`;\nexport const Detail = styled.div`\n margin-bottom: ${({theme}) => theme.layouts.spacing.xl};\n`;\nexport const DetailLabel = styled(Label3)`\n color: ${({theme, invalid}) => invalid ? theme.colors.interfacePalette.red.dark : theme.colors.neutralsPalette.grey};\n margin-bottom: ${({theme}) => theme.layouts.spacing.xs};\n font-weight: ${({theme}) => theme.font.weight.semibold};\n`;\nexport const DetailContent = styled(Body2)`\n display: inline-block;\n padding: ${({theme}) => theme.layouts.spacing.s};\n background: ${({theme, invalid}) => invalid ? theme.colors.interfacePalette.red.light : theme.colors.neutralsPalette.extraLight};\n border-radius: 8px;\n`;","import React, {useCallback, useRef} from 'react';\n\nimport Auth from '@aws-amplify/auth';\nimport Storage from '@aws-amplify/storage';\nimport {useFormContext} from 'react-hook-form';\nimport {IntercomAPI} from 'react-intercom';\n\nimport {H3} from '../../../../../components/Typography';\nimport {LoadingSpinner} from '../../../../../components/Branding';\nimport {Button, TextButton} from '../../../../../components/Branding/Buttons';\nimport VerifyEmailModal from '../../../../../components/Modal/components/VerifyEmailModal';\nimport ChangePasswordModal from '../../../../../components/Modal/components/ChangePasswordModal';\nimport FormWrapper from '../../../../../components/Form/FormWrapper';\nimport FieldRenderer from '../../../../../components/Form/FieldRenderer';\nimport {Container, TitleBar, Content} from './shared';\nimport {useUserDataContext} from '../../../../../contexts/UserData';\nimport {useModalContext} from '../../../../../contexts/Modal';\nimport {DefaultProfilePicture} from '../../../../../components/NavBar/components/Buttons';\n\nimport {useAsync} from '../../../../../hooks';\nimport styled from 'styled-components';\nimport {getUnixTimestamp} from '@bootcamp/shared/src/util';\n\n\n\nconst ChangePasswordLink = styled(TextButton)`\n justify-content: flex-start;\n padding: ${({theme}) => theme.layouts.spacing.m} 0 ${({theme}) => theme.layouts.spacing.s} 0;\n`;\n\nconst Fields = styled.div`\n width: 100%;\n margin: 0 auto;\n`;\n\n\nconst FieldSubmitButton = styled(Button).attrs({ type: 'primary', size: 'small' })`\n margin: -12px 0 16px;\n`;\n\nconst SubmitButton = () => {\n const {formState} = useFormContext();\n\n if (!formState.isValid || !formState.touched.length) {\n return null;\n }\n\n if (formState.isSubmitting) {\n return (\n Saving...\n )\n }\n\n if (formState.isSubmitted) {\n return (\n Saved!\n )\n }\n\n return (\n Save\n )\n}\n\nconst updateCognitoUserAttributes = async values => {\n try {\n const user = await Auth.currentAuthenticatedUser();\n await Auth.updateUserAttributes(user, values);\n await Auth.currentAuthenticatedUser({ bypassCache: true });\n } catch (e) {\n console.log(e);\n }\n}\n\nconst nameFieldConfig = {\n type: 'Text',\n label: 'Name',\n name: 'name',\n inputProps: {\n placeholder: 'What should we call you?'\n }\n};\n\nconst FirstNameForm = ({name, onSubmit}) => {\n return (\n \n } />\n \n \n )\n}\n\nconst VerifyLink = styled.div`\n color: ${({theme}) => theme.colors.brandPalette.indigo.default};\n`;\n\nconst EmailForm = () => {\n const {cognitoUser, refreshSession} = useUserDataContext();\n const {modalDispatch} = useModalContext();\n const openVerifyEmailModal = () => modalDispatch({type: 'open', component: VerifyEmailModal, modalContainerStyle: theme => `\n background: ${theme.overlays.opacity.dark._300};\n padding: 10vh 10vw;\n align-items: flex-start;\n ${theme.mediaQueries.tablet} {\n background: ${theme.overlays.opacity.dark._400};\n padding: 0;\n }\n `});\n\n const verifiedEmail = cognitoUser && cognitoUser.attributes && cognitoUser.attributes.email_verified;\n const email = cognitoUser && cognitoUser.attributes && cognitoUser.attributes.email;\n\n const emailFieldConfig = {\n type: 'Text',\n label: 'Contact Email',\n name: 'email',\n inputProps: {\n type: 'email'\n },\n validation: () => ({\n required: 'Email is required',\n pattern: {\n value: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n message: 'Email must be valid'\n }\n }),\n additionalInfo: verifiedEmail\n ? 'Verified'\n : \n Verify Email\n \n };\n\n return (\n {\n await updateCognitoUserAttributes(values);\n refreshSession();\n openVerifyEmailModal();\n }}\n >\n } />\n \n \n )\n}\n\nconst usernameFieldConfig = {\n type: 'Text',\n label: 'Username',\n name: 'username',\n inputProps: {\n disabled: true\n }\n};\n\nconst UsernameForm = () => {\n const {cognitoUser} = useUserDataContext();\n return (\n \n } />\n \n \n )\n}\n\nconst ProfilePictureContainer = styled.div`\n display: flex;\n cursor: pointer;\n width: 81px;\n min-width: 81px;\n height: 81px;\n background: rgba(255,255,255,.1);\n transition: all 100ms ease 0s;\n margin-right: 12px;\n border-radius: 40px;\n cursor: pointer;\n\n &:hover {\n background: rgba(255,255,255,.2);\n }\n\n ${({theme, loading}) => theme.animation.loadingBackground({loading})};\n`;\n\nconst StyledDefaultProfilePicture = styled(DefaultProfilePicture)`\n width: auto;\n`;\n\nconst ProfilePictureImage = styled.img`\n width: 42px;\n height: 42px;\n border-radius: 100%;\n padding: 3px;\n`;\n\nconst ProfilePicturePrompt = styled.div`\n font-family: proxima-nova;\n font-style: normal;\n font-weight: 600;\n font-size: 18px;\n line-height: 18px;\n margin-left: 8px;\n color: ${({theme}) => theme.colors.brandPalette.royal.default};\n`;\n\nexport const ProfilePicture = ({className, size=32, imgComponent=null, showPrompt=true}) => {\n const inputRef = useRef();\n const {refreshSession, cognitoUser, loading} = useUserDataContext();\n const USER_ID = cognitoUser?.attributes?.sub;\n\n const ProfileImage = imgComponent || ProfilePictureImage;\n\n const uploadProfilePicture = useCallback(async e => {\n try {\n const file = inputRef.current.files[0];\n const maxSize = 2 * 1024 * 1024;\n if (!file.type.match('image/')) {\n return alert('Please upload an image file.');\n }\n if (file.size > maxSize) {\n return alert('File too large, please try another!');\n }\n const s3Key = `users/${USER_ID}/profile/profilePicture`;\n await Storage.put(s3Key, file, {contentType: file.type});\n refreshSession();\n } catch (e) {\n console.log(e);\n }\n }, [USER_ID]);\n\n const {pending: uploading, execute: executeUpload} = useAsync(uploadProfilePicture, false);\n\n const personalProfilePictureUrl = `https://testtube6dca237224ff44ca973cd2a6dfb779e3-tbc.s3.us-east-1.amazonaws.com/public/users/${USER_ID}/profile/profilePicture`;\n\n const fetchProfilePicture = useCallback(async () => {\n if (uploading) return;\n\n const personalProfilePicture = await fetch(personalProfilePictureUrl, {method: 'HEAD', cache: 'no-cache'});\n if (personalProfilePicture.status !== 200) throw new Error();\n return personalProfilePictureUrl;\n }, [uploading, loading, USER_ID]);\n\n const {value: profPicUrl, error: fetchError, pending: fetching} = useAsync(fetchProfilePicture, !loading);\n\n // if fetching, or profPicUrl null (useAsync default value = null), or uploading... and there _is_ a prof pic uploaded, show loader\n const imageLoading = (loading || fetching || !profPicUrl || uploading) && !fetchError;\n\n const hiddenInput = (\n \n )\n\n return (\n inputRef.current.click()} loading={imageLoading}>\n {!imageLoading && } />}\n {!imageLoading && showPrompt && Upload a profile picture}\n {hiddenInput}\n \n )\n}\n\nconst StyledProfilePicture = styled(ProfilePicture)`\n align-items: center;\n width: 100%;\n height: 50px;\n margin-bottom: 16px;\n border-radius: 8px;\n`;\n\n\n\nconst TestDateForm = () => {\n const {saveUserInteraction, searchUserInteractions, bootcamp} = useUserDataContext();\n const testDateKey = ['nclex'].includes(bootcamp) ? `${bootcamp}_testDate` : 'testDate';\n const currentTestDate = searchUserInteractions(testDateKey);\n const testDateForm = {\n type: 'DatePicker',\n label: bootcamp === 'nclex' ? 'When are you planning on taking the NCLEX?' : 'Test Date',\n name: 'testDate',\n validation: () => true,\n };\n return (\n {\n await saveUserInteraction(testDateKey, JSON.stringify(testDate));\n await IntercomAPI('update', {[`${bootcamp}_test_date`]: getUnixTimestamp(testDate)});\n // todo make this not need to reload\n window.location.reload();\n }}\n >\n } />\n \n \n )\n}\n\nconst PersonalDetails = ({className}) => {\n const {bootcamp, cognitoUser, refreshSession, loading} = useUserDataContext();\n const {modalDispatch} = useModalContext();\n\n const showTestDateInput = ['dat', 'oat', 'inbde', 'med-school', 'nclex']?.includes(bootcamp);\n\n return (\n \n \n

\n Personal Details\n

\n
\n {!loading ? (\n \n \n {\n await updateCognitoUserAttributes(values);\n refreshSession();\n }}\n />\n \n \n {showTestDateInput && }\n modalDispatch({\n type: 'open',\n component: ChangePasswordModal,\n enableClickClose: true,\n modalContainerStyle: theme => `\n background: ${theme.overlays.opacity.dark._300};\n padding: 10vh 10vw;\n align-items: flex-start;\n ${theme.mediaQueries.tablet} {\n background: ${theme.overlays.opacity.dark._400};\n padding: 0;\n }\n `})}\n children={'Change Password'} />\n \n ) : }\n
\n )\n}\n\nexport default PersonalDetails;\n","import React, {useCallback} from 'react';\n\nimport {H3, Body2} from '../../../../../components/Typography';\nimport {LoadingSpinner} from '../../../../../components/Branding';\nimport {Button} from '../../../../../components/Branding/Buttons';\n\nimport {Container, TitleBar, Content} from './shared';\nimport {IntercomAPI} from 'react-intercom';\n\nimport {useUserDataContext} from '../../../../../contexts/UserData';\nimport {useAsync} from '../../../../../hooks';\nimport {updateQuestionMastery, getAllQuestionMasteryIdsByUserId} from '@bootcamp/shared/src/requests';\n\nimport styled from 'styled-components';\n\nconst FixAlert = styled.div`\n margin: 16px 0;\n`;\nconst FixButton = styled(Button)`\n margin-top: 16px;\n`;\n\nconst MasteryDetails = ({className}) => {\n const {DEFAULT_USER_ID, saveUserInteraction} = useUserDataContext();\n\n const deleteAllQuestionMastery = async () => {\n const result = await getAllQuestionMasteryIdsByUserId(DEFAULT_USER_ID);\n const items = result.data.QuestionMasteryByWpUserId.items;\n const batchSize = 500;\n const batches = Math.ceil(items.length / batchSize);\n\n for (let i = 0; i < batches; i++) {\n const batch = items.slice(i * batchSize, (i + 1) * batchSize);\n const batchPromises = batch.map(mastery => {\n const questionBaseId = mastery.userIdHashQuestionBaseId.replace(`${DEFAULT_USER_ID}#`, '');\n const update = {\n userIdHashQuestionBaseId: `${DEFAULT_USER_ID}#${questionBaseId}`,\n userIdHashTestId: `${DEFAULT_USER_ID}#undefined`,\n userIdHashTopicTagId: `${DEFAULT_USER_ID}#undefined`,\n userIdHashSubjectTagId: `${DEFAULT_USER_ID}#undefined`,\n userIdHashTestTagId: `${DEFAULT_USER_ID}#undefined`,\n masteryLevel: 'none',\n bookmarked: false\n };\n return updateQuestionMastery(update, false);\n });\n await Promise.all(batchPromises)\n }\n };\n\n const deleteMastery = useCallback(async () => {\n if (window.prompt('Warning: This will reset all your question tags to unused. This CANNOT be reversed. You will need to re-login on the mobile app. Type confirm to proceed:') !== 'confirm') return;\n await deleteAllQuestionMastery();\n await saveUserInteraction('didResetMastery', true)\n await IntercomAPI('trackEvent', 'Reset mastery tags');\n window.location.reload();\n }, []);\n\n const {execute: fixMastery, pending} = useAsync(deleteMastery, false)\n\n return (\n \n \n

\n Reset Question Tags\n

\n
\n {pending\n ? \n : (\n \n \n Warning: This will reset all your question tags to unused. This CANNOT be reversed.\n pending ? null : fixMastery()}>\n Reset Question Mastery Tag(s)\n \n \n \n )\n }\n
\n )\n}\n\nexport default MasteryDetails;\n","import React, {useState, useEffect} from 'react';\n\nimport API from '@aws-amplify/api';\nimport {loadStripe} from '@stripe/stripe-js';\nimport {Lottie} from '@crello/react-lottie';\n\nimport {Elements, CardElement, useStripe, useElements} from '@stripe/react-stripe-js';\nimport {Input, InputDecorator} from '../FieldRenderer/components/Field';\nimport {Container, Body, Header, SubHeader, FieldGroup, SubmitContainer, SubmitButton} from '../index';\nimport {LinkButton} from '../../Branding/Buttons';\nimport Sequence from '../../../components/Sequence';\nimport {Loader} from '../../Branding';\n\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {stripePublishableKey} from '../../../config/keys';\nimport checkoutCompleteAnimation from './checkoutComplete.json';\n\nimport {font, colors} from '@bootcamp/shared/src/styles/theme';\nimport styled from 'styled-components';\nimport {invokeLambda} from '@bootcamp/shared/src/requests';\n\nfunction getCardElementOptions() {\n return {\n style: {\n base: {\n fontSize: font.size.regular,\n color: colors.neutralsPalette.extraDark,\n lineHeight: font.height.regular,\n }\n }\n }\n}\n\nconst stripePromise = loadStripe(stripePublishableKey);\n\nconst Form = styled.form`\n width: 100%;\n height: 100%;\n`;\nconst CardInput = styled(Input)`\n width: 100%;\n\n ${({focused, theme}) => focused && `\n outline: none;\n background: ${theme.colors.brandPalette.indigo.light};\n border: 1px solid ${theme.colors.brandPalette.indigo.default};\n `}\n`;\nconst ViewAccountLink = styled(LinkButton)`\n padding-bottom: ${({theme}) => theme.layouts.spacing.xl};\n button {\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n }\n`;\nconst AnimationContainer = styled.div`\n padding: ${({theme}) => theme.layouts.spacing.xl} 0px;\n`;\nconst StyledSequence = styled(Sequence)`\n height: 100vh;\n`;\n\nasync function updatePaymentMethodAndRetryInvoice(invoiceId, customerId, paymentMethodId, subscriptionId) {\n try {\n const result = await invokeLambda('tbc-Stripe', {\n path: '/stripe/retry-invoice',\n invoiceId,\n customerId,\n paymentMethodId,\n subscriptionId,\n });\n return result.body.updatedInvoice;\n } catch (error) {\n console.log('error fetching payment intent', error);\n return {error};\n }\n}\n\nasync function updatePaymentMethod(customerId, paymentMethodId) {\n try {\n const result = await invokeLambda('tbc-Stripe', {\n path: '/stripe/update-payment-method',\n customerId,\n paymentMethodId,\n });\n return result.body.updatedCustomer;\n } catch (error) {\n console.log('error updating payment method', error);\n return {error};\n }\n}\n\nasync function handlePaymentMethodUpdate(invoiceId, customerId, paymentMethodId, subscriptionId, membershipStatus) {\n if (membershipStatus === 'awaitingPayment') {\n return updatePaymentMethodAndRetryInvoice(invoiceId, customerId, paymentMethodId, subscriptionId);\n } else {\n return updatePaymentMethod(customerId, paymentMethodId);\n }\n};\n\nconst FinishedAnimation = () => (\n \n \n \n);\n\nconst Finished = ({start}) => (\n \n \n
Awesome! Your payment information updated successfully, welcome back!
\n {start && }\n \n \n \n Back to Account\n \n \n
\n);\n\nconst UpdatePaymentMethod = ({\n subscriptionId,\n latestInvoiceId,\n customerId,\n showAccountLink,\n headerText,\n subheaderText,\n onFinished,\n membershipStatus,\n}) => {\n const {refreshSession} = useUserDataContext();\n const [error, setError] = useState(null);\n const [cardElementFocused, setCardElementFocused] = useState(false);\n const [cardInfoComplete, setCardInfoComplete] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const stripe = useStripe();\n const elements = useElements();\n\n useEffect(() => {\n if (!elements) return;\n\n const cardElement = elements.getElement(CardElement);\n\n cardElement.on('change', (event) => {\n if (event.complete) setCardInfoComplete(true);\n else if (cardInfoComplete && !event.complete) setCardInfoComplete(false);\n });\n\n }, [elements, cardInfoComplete]);\n\n const preventDefault = event => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n const createPaymentMethod = async () => {\n const card = elements.getElement(CardElement);\n\n try {\n return await stripe.createPaymentMethod({\n type: 'card',\n card,\n // optionally add billing details etc here\n });\n } catch (error) {\n console.log('error creating payment method', error);\n }\n };\n\n const handleSubmit = async (event) => {\n preventDefault(event);\n\n // return if stripe hasn't loaded\n if (!stripe || !elements) return;\n\n setLoading(true);\n\n try {\n // create new payment method\n const {paymentMethod} = await createPaymentMethod();\n\n // update payment method and retry charge\n const {error} = await handlePaymentMethodUpdate(latestInvoiceId, customerId, paymentMethod.id, subscriptionId, membershipStatus);\n\n if (error) {\n setError({message: 'Please double check your card details and try again.'});\n setLoading(false);\n } else {\n await refreshSession();\n onFinished();\n }\n\n } catch (error) {\n setError({message: 'Please double check your card details and try again.'});\n setLoading(false);\n }\n };\n\n return (\n \n \n
{headerText}
\n {subheaderText}\n
\n \n \n setCardElementFocused(true)}\n onBlur={() => setCardElementFocused(false)}\n options={getCardElementOptions()}\n focused={cardElementFocused}\n as={CardElement}\n />\n \n \n\n
\n \n \n \n {loading ? : 'Update Payment Method'}\n
\n \n {showAccountLink && }\n \n );\n}\n\n\nconst ContextWrapper = ({subscriptionId, latestInvoiceId, customerId, showAccountLink, headerText, subheaderText, membershipStatus}) => {\n return (\n \n \n {[\n ({next}) => (\n {\n next({stepSize: 1, activeProps: {finished: true}})\n }}\n />\n ),\n ({finished}) => \n ]}\n \n \n );\n}\n\nUpdatePaymentMethod.propTypes = {};\nUpdatePaymentMethod.defaultProps = {};\n\nexport default ContextWrapper;\n","import React, {useState, useEffect} from 'react';\nimport API from '@aws-amplify/api';\nimport styled from 'styled-components';\n\nimport {Body3, H4} from '../../../../../components/Typography'\nimport {Loader as LoadingIndicator} from '../../../../../components/Branding';\nimport {ChevronDown} from '@styled-icons/heroicons-outline/ChevronDown';\nimport {getFormattedStripeAmount} from '@bootcamp/shared/src/util';\n\nimport moment from 'moment';\nimport {invokeLambda} from '@bootcamp/shared/src/requests';\n\nconst Container = styled.div`\n padding: ${({theme}) => theme.layouts.spacing.m} ${({theme}) => theme.layouts.spacing.l};\n background: ${({theme}) => theme.colors.neutralsPalette.offWhite};\n border-top: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n cursor: pointer;\n`;\nconst History = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n transition: max-height ${({viewing}) => viewing ? '450ms ease-in' : '150ms ease-out'};\n max-height: ${({viewing}) => viewing ? '1000px' : '0px'};\n overflow: hidden;\n cursor: text;\n`;\nconst Toggle = styled.div`\n display: flex;\n align-items: center;\n opacity: ${({disabled}) => disabled ? 0.4 : 1};\n`;\nconst Arrow = styled(ChevronDown)`\n transform: ${({viewing}) => viewing ? 'rotateX(180deg)' : 'none'};\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n`;\nconst Text = styled(Body3)`\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n`;\nconst Loader = styled(LoadingIndicator)`\n fill: ${({theme}) => theme.colors.brandPalette.royal.default};\n`;\nconst Table = styled.table`\n flex: 1;\n align-self: stretch;\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n border-radius: 8px;\n overflow: hidden;\n border-spacing: 0px;\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n\n tr {\n height: 56px;\n\n &:nth-child(odd) {\n background-color: ${({theme}) => theme.colors.neutralsPalette.extraLight};\n }\n }\n td {\n font-weight: normal;\n text-align: center;\n width: 25%;\n }\n`;\nconst SubscriptionTable = ({payments}) => (\n \n \n

Type

\n

Amount Paid

\n

Payment Method

\n

Charged On

\n \n {payments?.map(({type, amountPaid, date, last4}) => (\n \n

{type}

\n

{amountPaid}

\n

{`**** **** **** ${last4}`}

\n

{date}

\n \n ))}\n
\n);\nconst DefaultTable = ({payments}) => (\n \n \n \n \n \n \n \n {payments?.map(({type, amountPaid, date, last4}) => (\n \n \n \n \n \n \n ))}\n
TypeAmount PaidPayment MethodCharge Date
{type}{amountPaid}{`**** **** **** ${last4}`}{date}
\n);\n\nasync function fetchInvoicesForSubscription(customerId, subscriptionId) {\n try {\n const result = await invokeLambda('tbc-Stripe', {path: '/stripe/invoices/list', customerId, subscriptionId, expand: ['data.charge']});\n return result.body.invoices;\n } catch (error) {\n console.log('error fetching billing details', error);\n return {client_secret: null};\n }\n};\nasync function fetchPaymentIntent(membership) {\n try {\n const result = await invokeLambda('tbc-Stripe', {path: '/stripe/get-payment-intent', intentId: membership.id});\n if (!result.body.paymentIntent) throw new Error('No payment intent found');\n return result.body.paymentIntent;\n } catch (error) {\n console.log('error fetching payment intent', error);\n return {paymentIntent: false};\n }\n}\nasync function loadOneTimePaymentHistory(membership) {\n const memberships = [membership, ...membership.extensions];\n const paymentIntents = await Promise.all(memberships.map(fetchPaymentIntent));\n return paymentIntents;\n\n}\nasync function loadSubscriptionPaymentHistory(membershipId, subscriptionDetails) {\n const invoices = await fetchInvoicesForSubscription(subscriptionDetails.customerId, membershipId);\n return invoices;\n}\nfunction formatSubscriptionPaymentHistory(invoices) {\n return invoices?.data?.map(({amount_paid, created, charge}) => ({\n type: 'Subscription Invoice',\n amountPaid: `$${getFormattedStripeAmount(amount_paid)}`,\n date: moment.unix(created).format('MMM Do, YYYY'),\n last4: charge?.payment_method_details?.card?.last4,\n }));\n}\nfunction formatOneTimePaymentHistory(paymentIntents) {\n return paymentIntents\n .filter(({paymentIntent}) => !!paymentIntent)\n .map(({paymentIntent: {metadata, amount, created, charges}}) => ({\n type: metadata?.title,\n amountPaid: `$${getFormattedStripeAmount(amount)}`,\n date: moment.unix(created).format('MMM Do, YYYY'),\n last4: charges?.data[0]?.payment_method_details?.card?.last4,\n }));\n}\n\nconst PaymentHistory = ({subscriptionDetails, membership, parentLoading}) => {\n const [loading, setLoading] = useState(false);\n const [viewing, setViewing] = useState(false);\n const [payments, setPayments] = useState(null);\n\n const onToggle = () => !parentLoading && setViewing(state => !state);\n\n useEffect(() => {\n const load = async () => {\n setLoading(true);\n\n const request = membership.type === 'subscription'\n ? () => loadSubscriptionPaymentHistory(membership.id, subscriptionDetails)\n : () => loadOneTimePaymentHistory(membership);\n\n const format = membership.type === 'subscription'\n ? formatSubscriptionPaymentHistory\n : formatOneTimePaymentHistory;\n\n const payments = await request();\n const formatted = format(payments) || [];\n\n setPayments(formatted);\n setLoading(false);\n };\n\n if (viewing && !payments && !loading) load();\n\n }, [viewing, payments, loading]);\n\n const TableComponent = membership.type === 'subscription' ? SubscriptionTable : DefaultTable;\n\n return (\n \n e.stopPropagation()}>\n {viewing && loading\n ? \n : \n }\n \n \n \n \n {viewing ? 'Hide Payment History' : 'Show Payment History'}\n \n \n \n );\n};\n\nPaymentHistory.defaultProps = {};\nPaymentHistory.propTypes = {};\n\nexport default PaymentHistory;","// extendee ID as key, extension ID as value\nconst extensionPriceIdMap = {\n 'price_1IbUpzD2xOfNJKfxz8UQVMds': 'price_1Io8o6D2xOfNJKfxUab2jaY8', // OAT DEV PRO\n 'price_1IbUnqD2xOfNJKfxJ2oTennj': 'price_1Io8pdD2xOfNJKfx0m0uISMo', // OAT DEV PLUS,\n 'prod_JDXsqjb71yNsHa': 'price_1QoU3XD2xOfNJKfxGKBFhn2o', // OLD OAT PRO\n 'price_1Ib6oYD2xOfNJKfxKFPJaAvV': 'price_1QoU3XD2xOfNJKfxGKBFhn2o', // OLD OAT PRO\n 'price_1IoCt6D2xOfNJKfxdkNKXgVs': 'price_1QoU3XD2xOfNJKfxGKBFhn2o', // OAT PRO\n 'price_1Lb627D2xOfNJKfxuBRMPinN': 'price_1QoU3XD2xOfNJKfxGKBFhn2o', // new OAT PRO,\n 'price_1MMvKWD2xOfNJKfxORh5JBpI': 'price_1QoU3XD2xOfNJKfxGKBFhn2o', // new OAT PRO,\n 'price_1QoTxPD2xOfNJKfxBNgHed8P': 'price_1QoU3XD2xOfNJKfxGKBFhn2o', // new OAT PRO,\n 'prod_JDXvMXPfUyDpWv': 'price_1QoU4FD2xOfNJKfxNN9MRPzp', // OLD OAT PLUS\n 'price_1Ib6q8D2xOfNJKfxn9tgiNGh': 'price_1QoU4FD2xOfNJKfxNN9MRPzp', // OLD OAT PLUS\n 'price_1IoCt6D2xOfNJKfxHZ7f7y0K': 'price_1QoU4FD2xOfNJKfxNN9MRPzp', // OAT PLUS\n 'price_1Lb63VD2xOfNJKfxJqtIyXFc': 'price_1QoU4FD2xOfNJKfxNN9MRPzp', // new OAT PLUS\n 'price_1MMvN3D2xOfNJKfxJAYuMdD2': 'price_1QoU4FD2xOfNJKfxNN9MRPzp', // new OAT PLUS\n 'price_1QoTyXD2xOfNJKfxMiFtLupf': 'price_1QoU4FD2xOfNJKfxNN9MRPzp', // new OAT PLUS\n 'price_1IpbcED2xOfNJKfxFuJEDaUO': 'price_1OkByWD2xOfNJKfxL89fpy82', // INBDE Plus\n 'price_1IpbcED2xOfNJKfxDRJn9koY': 'price_1OkByWD2xOfNJKfxL89fpy82', // INBDE Pro\n 'price_1KlFrlD2xOfNJKfxStcmZvNF': 'price_1OkByWD2xOfNJKfxL89fpy82', // inbde 3mo\n 'price_1KlFttD2xOfNJKfxL8VYkCpf': 'price_1OkByWD2xOfNJKfxL89fpy82', // inbde 6mo\n 'price_1Lb6JbD2xOfNJKfxCFwYVkDD': 'price_1OkByWD2xOfNJKfxL89fpy82', // INBDE\n 'price_1Lb6KmD2xOfNJKfx6wje4VAB': 'price_1OkByWD2xOfNJKfxL89fpy82', // INBDE\n 'price_1Lb6LeD2xOfNJKfxePOGYQYL': 'price_1OkByWD2xOfNJKfxL89fpy82', // INBDE\n 'price_1MMuaxD2xOfNJKfx57v21M60': 'price_1OkByWD2xOfNJKfxL89fpy82', // INBDE\n 'price_1MMuZxD2xOfNJKfxGEIIbtvG': 'price_1OkByWD2xOfNJKfxL89fpy82', // INBDE\n 'price_1MMuYzD2xOfNJKfxgqP9nIck': 'price_1OkByWD2xOfNJKfxL89fpy82', // INBDE\n 'price_1OkBx9D2xOfNJKfxPpkFB48q': 'price_1OkByWD2xOfNJKfxL89fpy82', // INBDE\n 'price_1MMyiTD2xOfNJKfxAqMtXKVI': 'price_1OkByWD2xOfNJKfxL89fpy82', // INBDE\n 'price_1OkBvcD2xOfNJKfxtdYOz8qJ': 'price_1OkByWD2xOfNJKfxL89fpy82', // INBDE\n 'price_1OkBxtD2xOfNJKfxrf6AqXzY': 'price_1OkByWD2xOfNJKfxL89fpy82', // INBDE\n 'price_1J50JYD2xOfNJKfxBFkLvXrb': 'price_1OkByWD2xOfNJKfxL89fpy82', // INBDE\n 'price_1MMyaAD2xOfNJKfxTrEOnXUv': 'price_1OoV3AD2xOfNJKfxI3T4ANXc', // DAT Plus\n 'price_1OoUqzD2xOfNJKfxyOTxcCth': 'price_1OoV3AD2xOfNJKfxI3T4ANXc', // DAT Plus\n 'price_1MMyUeD2xOfNJKfxJZ3R7PdE': 'price_1OoV3AD2xOfNJKfxI3T4ANXc', // DAT Plus\n 'price_1JpIi9D2xOfNJKfx5Q7ARaMs': 'price_1OoV3AD2xOfNJKfxI3T4ANXc', // DAT Plus\n 'price_1Lb5tnD2xOfNJKfxxQdxE2Cn': 'price_1OoV3AD2xOfNJKfxI3T4ANXc', // new DAT PLUS\n 'price_1Lb5wiD2xOfNJKfxvWJ8eEgX': 'price_1OoV3AD2xOfNJKfxI3T4ANXc', // new DAT PLUS\n 'price_1MMySoD2xOfNJKfxxTkAFKDv#price_1MMyeaD2xOfNJKfxVbsDTVb6': 'price_1OoV3AD2xOfNJKfxI3T4ANXc',\n 'price_1Lb5sSD2xOfNJKfxI7ZFpphf#price_1LkYULD2xOfNJKfxYruyY38X': 'price_1OoV3AD2xOfNJKfxI3T4ANXc', // new DAT PLUS\n 'price_1OoUmjD2xOfNJKfxNneSpdRl': 'price_1OoV1fD2xOfNJKfxOkPcPdRK', // DAT pro\n 'price_1Lb5veD2xOfNJKfxkoYcYZ3G': 'price_1OoV1fD2xOfNJKfxOkPcPdRK', // DAT pro\n 'price_1MMySoD2xOfNJKfxxTkAFKDv': 'price_1OoV1fD2xOfNJKfxOkPcPdRK', // DAT pro\n 'price_1JpIi9D2xOfNJKfxp7n8Nnnz': 'price_1OoV1fD2xOfNJKfxOkPcPdRK', // DAT Pro,\n 'price_1Lb5sSD2xOfNJKfxI7ZFpphf': 'price_1OoV1fD2xOfNJKfxOkPcPdRK', // new DAT PRO,\n 'price_1JpIi9D2xOfNJKfxMcMyQUsa': 'price_1OoV1fD2xOfNJKfxOkPcPdRK', // new DAT PRO,\n 'price_1MMyZYD2xOfNJKfxgUY9LgJg': 'price_1OoV1fD2xOfNJKfxOkPcPdRK', // new DAT PRO,\n 'price_1Lb6QbD2xOfNJKfx6ljBWqGF': 'price_1MMtjSD2xOfNJKfx1m1w0v1L', // DSB 1 year\n 'price_1JMeTgD2xOfNJKfxUC0tvtZ6': 'price_1MMtjSD2xOfNJKfx1m1w0v1L', // NEW DSB 1 year\n 'price_1Kj2rJD2xOfNJKfxIn4A2v3T': 'price_1PRJuiD2xOfNJKfxDCAMMdJx', // MSB 2 year (archived)\n 'price_1LaQIOD2xOfNJKfxuR4PaHhE': 'price_1PRJuiD2xOfNJKfxDCAMMdJx', // MSB 2 year (archived)\n 'price_1LaQEsD2xOfNJKfxH7q1jSMU': 'price_1PRJuiD2xOfNJKfxDCAMMdJx', // MSB 1 year\n 'price_1JMeSRD2xOfNJKfx44i5zdrc': 'price_1PRJuiD2xOfNJKfxDCAMMdJx', // MSB 1 year\n 'price_1MMu4SD2xOfNJKfx3n9BAaui': 'price_1PRJuiD2xOfNJKfxDCAMMdJx', // MSB 1 year\n 'price_1MMu5ND2xOfNJKfxpZktiHVS': 'price_1PRJuiD2xOfNJKfxDCAMMdJx', // MSB 2 year\n 'price_1LaPZkD2xOfNJKfxmEdPKkny': 'price_1MMultD2xOfNJKfxFaMYXFQQ', // AB 2 year\n 'price_1Lb6UbD2xOfNJKfxrWsq4gQh': 'price_1MMutRD2xOfNJKfx1UWAZ2wc', // CB 2 year\n 'price_1Lb6TwD2xOfNJKfx2uguASCT': 'price_1MMusVD2xOfNJKfxuQ3tOInm', // CB 1 year\n 'price_1MMtAeD2xOfNJKfxYn3iMiBD': 'price_1N8MR9D2xOfNJKfx1VGXW2wE', // NCLEX 1 mo\n 'price_1MMtErD2xOfNJKfxEFchnNp1': 'price_1N8MR9D2xOfNJKfx1VGXW2wE', // NCLEX 3 mo\n 'price_1MMtFeD2xOfNJKfxhgbhb33l': 'price_1N8MR9D2xOfNJKfx1VGXW2wE', // NCLEX 6 mo\n 'price_1N8MPkD2xOfNJKfx6mHFY2IK': 'price_1N8MR9D2xOfNJKfx1VGXW2wE', // NCLEX 1 mo\n 'price_1N8MSDD2xOfNJKfxOykEYToY': 'price_1N8MR9D2xOfNJKfx1VGXW2wE', // NCLEX 3 mo\n 'price_1N8MT6D2xOfNJKfxbRHLzQ4X': 'price_1N8MR9D2xOfNJKfx1VGXW2wE', // NCLEX 6 mo\n};\n\nexport const extensionIdsByBootcamp = {\n 'dat': 'price_1OoV1fD2xOfNJKfxOkPcPdRK',\n 'inbde': 'price_1OkByWD2xOfNJKfxL89fpy82',\n 'dental-school': 'price_1MMtjSD2xOfNJKfx1m1w0v1L',\n 'med-school': 'price_1PRJuiD2xOfNJKfxDCAMMdJx',\n 'nclex': 'price_1N8MR9D2xOfNJKfx1VGXW2wE',\n 'oat': 'price_1QoU3XD2xOfNJKfxGKBFhn2o',\n 'chemistry': 'price_1MMusVD2xOfNJKfxuQ3tOInm',\n};\n\nexport default extensionPriceIdMap;\n","import React, {useState} from 'react';\n\nimport API from '@aws-amplify/api';\nimport {IntercomAPI} from 'react-intercom';\nimport moment from 'moment';\n\nimport {Container, Body, Header, SubHeader, SubmitContainer, SubmitButton} from '../index';\nimport {Button} from '../../../components/Branding/Buttons';\nimport Sequence from '../../../components/Sequence';\nimport {Loader} from '../../Branding';\nimport {Lottie} from '@crello/react-lottie';\n\nimport {useModalContext} from '../../../contexts/Modal';\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nimport styled from 'styled-components';\nimport checkoutCompleteAnimation from './checkoutComplete.json';\nimport UpdatePaymentMethod from './UpdatePaymentMethod';\nimport {invokeLambda} from '@bootcamp/shared/src/requests';\n\nconst AnimationContainer = styled.div`\n padding: ${({theme}) => theme.layouts.spacing.xl} 0px;\n`;\nconst StyledSequence = styled(Sequence)`\n height: 100vh;\n`;\nconst CancelButton = styled(Button)`\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n border-color: ${({theme}) => theme.colors.interfacePalette.red.default};\n color: ${({theme}) => theme.colors.interfacePalette.red.default};\n`;\nconst ContactButton = styled(Button)`\n`;\nconst ResumeMembership = styled(Button)`\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n`;\n\nconst FinishedAnimation = () => (\n \n \n \n);\n\nconst Finished = ({start, text}) => (\n \n \n
{text}
\n {start && }\n \n \n \n Back to Account\n \n \n
\n);\n\nconst ManageMembership = ({membership, billingDetails, onFinished}) => {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n\n const {modalDispatch} = useModalContext();\n const {refreshSession} = useUserDataContext();\n\n const preventDefault = event => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n const pendingCancellation = membership.status === 'cancelAtEndOfPeriod';\n const bodyText = error\n ? error\n : pendingCancellation\n ? `Your membership is pending cancellation and will be active until ${moment.unix(billingDetails.nextInvoice).format('MMM Do, YYYY')}`\n : 'You currently have an upgraded membership. As always, feel free to contact us if you ever have questions about your account.';\n\n const handleCancelClick = async () => {\n setLoading(true);\n\n try {\n await invokeLambda('tbc-Stripe', {path: '/stripe/cancel-subscription', subscriptionId: membership.id});\n\n await refreshSession();\n\n await IntercomAPI('trackEvent', 'Membership Cancelled', {\n subscriptionId: membership.id,\n userId: membership.userId,\n });\n\n onFinished(`Cancellation successful. Your membership will be active until ${moment.unix(billingDetails.nextInvoice).format('MMM Do, YYYY')}.`);\n\n\n } catch (error) {\n setLoading(false);\n setError('Oops, looks like something went wrong. If this problem persists, send us a message on Intercom and we\\'ll get it sorted!');\n }\n };\n\n const handleResumeClick = async () => {\n setLoading(true);\n\n try {\n await invokeLambda('tbc-Stripe', {path: '/stripe/resume-subscription', subscriptionId: membership.id});\n\n await refreshSession();\n onFinished('Your membership has been re-enabled!');\n\n } catch (error) {\n setLoading(false);\n setError('Oops, looks like something went wrong. If this problem persists, send us a message on Intercom and we\\'ll get it sorted!');\n }\n };\n\n const handleContactClick = () => {\n modalDispatch({type: 'close'});\n IntercomAPI('showNewMessage', `I have a question about my membership.`);\n };\n\n const handleUpdatePaymentMethod = () => {\n modalDispatch({\n type: 'open',\n component: UpdatePaymentMethod,\n enableClickClose: true,\n componentProps: {\n customerId: billingDetails.customerId,\n latestInvoiceId: billingDetails.latestInvoice,\n subscriptionId: membership.id,\n membershipStatus: membership.status,\n showAccountLink: false,\n headerText: membership.status === 'awaitingPayment'\n ? 'Sorry, there was an issue charging your card.'\n : 'Update Payment Method',\n subheaderText: membership.status === 'awaitingPayment'\n ? 'No worries, just try again or update your payment method with a new card to re-activate your account.'\n : 'Enter new card details below to update your default payment method',\n }\n });\n };\n\n return (\n \n \n
Manage Your Membership
\n {bodyText}\n \n {loading ? null : (\n \n \n \n )}\n \n {loading\n ? \n : [\n pendingCancellation\n ? \n : ,\n \n ]\n }\n \n
\n );\n}\n\nconst Wrapper = ({membership, billingDetails}) => {\n return (\n \n {[\n ({next}) => (\n {\n next({stepSize: 1, activeProps: {finished: true, text}})\n }}\n />\n ),\n ({finished, text}) => \n ]}\n \n );\n}\n\nManageMembership.propTypes = {};\nManageMembership.defaultProps = {};\n\nexport default Wrapper;\n","import React, {useState, useEffect} from 'react';\nimport {useHistory, Link} from 'react-router-dom';\nimport API from '@aws-amplify/api';\nimport styled from 'styled-components';\nimport moment from 'moment';\n\nimport {useModalContext} from '../../../../../contexts/Modal';\nimport {H3, H4, Body3} from '../../../../../components/Typography';\nimport {Button} from '../../../../../components/Branding/Buttons';\nimport UpdatePaymentMethod from '../../../../../components/Form/Stripe/UpdatePaymentMethod';\nimport {getFormattedStripeAmount, findStartAndEndDates} from '@bootcamp/shared/src/util';\nimport PaymentHistory from './PaymentHistory';\nimport extensionPriceIdMap, {extensionIdsByBootcamp} from '../../extensionPriceIds';\nimport ManageMembership from '../../../../../components/Form/Stripe/ManageMembership';\nimport {Dismiss} from '@styled-icons/fluentui-system-filled/Dismiss';\nimport {RoundButton} from '@bootcamp/web/src/components/UI';\nimport {invokeLambda} from '@bootcamp/shared/src/requests';\nconst ModalContainer = styled.div`\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n box-shadow: ${({theme}) => theme.elevation.shadow.high};\n border-radius: 8px;\n height: auto;\n max-width: 491px;\n margin: auto;\n align-items: center;\n color: #2F3037;\n width: 90%;\n`\nconst ModalSide = styled.div`\n padding: 16px 24px;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n`\nconst ModalHeader = styled(ModalSide)`\n border-bottom: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n`;\n\nconst ModalFooter = styled(ModalSide)`\n border-top: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n`;\n\nconst CloseModal = styled(Dismiss)`\n position: absolute;\n top: 0;\n bottom: 0;\n height: 100%;\n right: 16px;\n width: 16px;\n color: ${({theme}) => theme.colors.special.tuxedo};\n cursor: pointer;\n`\n\nconst ModalBody = styled.div`\n padding: 16px 24px;\n`\n\nconst ExtensionInput = styled.input`\n cursor: pointer;\n accent-color: ${({theme}) => theme.colors.brandPalette.royal.default};\n border-color: ${({theme}) => theme.colors.neutralsPalette.grey};\n height: 18px;\n width: 18px;\n`;\n\nconst ExtensionContainer = styled.div`\n display: flex;\n align-items: center;\n padding: 12px 16px;\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n border-radius: 8px;\n cursor: pointer;\n margin-bottom: 8px;\n &:hover {\n background: #FAFAFA;\n }\n ${({selected, theme}) => selected && `\n border: 1px solid ${theme.colors.brandPalette.royal.default};\n background: ${theme.colors.brandPalette.royal.light};\n &:hover {\n background: ${theme.colors.brandPalette.royal.light};\n }\n `}\n &:last-child {\n margin-bottom: 0;\n }\n`\nconst ExtensionLabel = styled.div`\n margin-left: 8px;\n ${Body3} {\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n font-size: 16px;\n line-height: 150%;\n margin-top: 4px;\n font-weight: 400;\n }\n`\nconst ExtensionPrice = styled.div`\n margin-left: auto;\n font-size: 18px;\n font-style: normal;\n font-weight: 400;\n line-height: 125%; /* 22.5px */\n`\n\nconst SubmitButton = styled(RoundButton)``;\n\nconst SelectExtensionOptionModal = ({close, extensions}) => {\n const [selectedExtension, setSelectedExtension] = useState(extensions[1].priceId);\n const {push} = useHistory();\n return (\n {\n e.stopPropagation();\n e.preventDefault();\n return false;\n }}>\n \n

\n Extend Your Membership and Save\n

\n \n
\n \n {extensions.map(extension => (\n setSelectedExtension(extension.priceId)}>\n setSelectedExtension(extension.priceId)}\n />\n \n

{extension.duration} Days

\n Extends to {extension.expirationDate}\n
\n \n

\n {extension.originalPrice && ${extension.originalPrice}}${extension.price}\n

\n {extension.savings && Save {extension.savings}}\n
\n
\n ))}\n
\n \n {\n push(`/stripe-checkout?priceId=${selectedExtension}&mode=payment&afterpay=false`);\n }}\n disabled={!selectedExtension}\n >\n Proceed to Payment\n
\n \n \n );\n}\n\nconst Container = styled.div`\n background: ${({theme}) => theme.colors.special.pearl};\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n border-radius: 8px;\n overflow: hidden;\n transition: all 100ms ease 0s;\n &:hover {\n transform: scale(1.01);\n }\n`;\nconst Wrapper = styled(Link)`\n text-decoration: none;\n display: flex;\n align-items: center;\n flex: 1;\n padding: ${({theme}) => theme.layouts.spacing.m} ${({theme}) => theme.layouts.spacing.l};\n cursor: pointer;\n`;\nconst IconWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n background: ${({theme}) => theme.colors.brandPalette.royal.default};\n border-radius: 8px;\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n`;\nconst IconText = styled.span`\n text-transform: uppercase;\n font-weight: bold;\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n font-size: 12px;\n`;\nconst Body = styled.div`\n display: flex;\n flex-direction: column;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n }\n`;\nconst MembershipTitle = styled(H3)`\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n`;\nconst MembershipDetails = styled(Body3)`\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n`;\nconst Action = styled(Button)`\n margin-left: auto;\n`;\n\n// this map should be updated based on our new price id setup in stripe\nconst titleMap = {\n MedSchoolBootcamp: 'Med School',\n DentalSchoolBootcamp: 'Dental School',\n};\n\nasync function fetchBillingDetails(subscriptionId) {\n try {\n const result = await invokeLambda('tbc-Stripe', {path: '/stripe/billing', subscriptionId});\n return result.body.billingInformation;\n } catch (error) {\n console.log('error fetching billing details', error);\n return {client_secret: null};\n }\n};\nfunction getMembershipBootcamp(groups) {\n const bootcamp = groups.find(group => group.match('Bootcamp'));\n return `${titleMap[bootcamp] || bootcamp.split('Bootcamp')[0]} Bootcamp`;\n}\nfunction getBootcampSlug(groups) {\n const bootcamp = groups.find(group => group.match('Bootcamp'));\n return bootcamp.split('Bootcamp')[0].toLowerCase();\n}\nfunction formatDuration(duration) {\n const now = moment();\n const expiration = moment().add(duration + 5, 'days');\n\n const years = expiration.diff(now, 'years');\n const months = expiration.diff(now, 'months');\n\n return years\n ? `${years} Year Access`\n : months\n ? `${months} Month Access`\n : `${duration} Day Access`;\n}\nfunction getMembershipType(groups, type, duration) {\n const hasPlusPackAccess = groups.find(group => group.match('Plus'));\n const plusPackAccessType = hasPlusPackAccess ? 'Plus' : 'Pro';\n const usesProPlus = groups.find(group => group.match('DAT') || group.match('OAT') || group.match('Dental'));\n\n const membershipType = usesProPlus\n ? plusPackAccessType\n : formatDuration(duration);\n\n // if subscription just say monthly access\n return usesProPlus\n ? `${membershipType}${type === 'subscription' ? ' Subscription' : ''}`\n : type === 'subscription'\n ? 'Monthly Access'\n : membershipType;\n}\nfunction getExpirationDate(startDate, duration) {\n return moment(startDate).add(duration, 'days');\n}\nfunction getNextInvoiceDate(subscriptionDetails, status) {\n if (!subscriptionDetails) return '';\n if (status === 'cancelled') {\n return `Cancelled`\n }\n if (status === 'cancelAtEndOfPeriod') {\n return `Cancelled - Membership expires ${moment.unix(subscriptionDetails?.nextInvoice).format('MMM Do, YYYY')}`\n }\n return `Next Invoice: $${getFormattedStripeAmount(subscriptionDetails?.lastAmountPaid)} on ${moment.unix(subscriptionDetails?.nextInvoice).format('MMM Do, YYYY')}`;\n}\nfunction getActionForStatus(membership, subscriptionDetails, modalDispatch, history) {\n const activeExtension = membership?.extensions?.find(({status}) => status === 'active');\n const membershipStatus = activeExtension?.status || membership?.status;\n const proposedEndDate = moment(membership.endDate).isBefore(moment()) ? moment() : moment(membership.endDate);\n const openExtensionModal = () => modalDispatch({\n type: 'open',\n component: SelectExtensionOptionModal,\n enableClickClose: true,\n componentProps: {\n extensions: membership.groups.includes('NCLEXBootcamp') ? [\n {\n priceId: 'price_1QfoguD2xOfNJKfxXUhRYGYm',\n duration: 15,\n price: 39,\n expirationDate: moment(proposedEndDate).add(15, 'days').format('MMMM Do, YYYY')\n },\n {\n priceId: 'price_1QgsVoD2xOfNJKfxf0JkjQhM',\n duration: 30,\n price: 56,\n originalPrice: 59,\n savings: '5%',\n expirationDate: moment(proposedEndDate).add(30, 'days').format('MMMM Do, YYYY')\n },\n {\n priceId: 'price_1QgsWuD2xOfNJKfxFrkDcfyP',\n duration: 60,\n price: 89,\n originalPrice: 99,\n savings: '10%',\n expirationDate: moment(proposedEndDate).add(60, 'days').format('MMMM Do, YYYY')\n },\n {\n priceId: 'price_1QgsXqD2xOfNJKfxxwKsJlqN',\n duration: 90,\n price: 109,\n originalPrice: 129,\n savings: '15%',\n expirationDate: moment(proposedEndDate).add(90, 'days').format('MMMM Do, YYYY')\n },\n {\n priceId: 'price_1QgsYeD2xOfNJKfx7BtGLdFZ',\n duration: 180,\n price: 159,\n originalPrice: 199,\n savings: '20%',\n expirationDate: moment(proposedEndDate).add(180, 'days').format('MMMM Do, YYYY')\n },\n ] : membership.groups.includes('INBDEBootcamp') ? [\n {\n priceId: 'price_1QjoRED2xOfNJKfxj4lDt8cs',\n duration: 15,\n price: 77,\n originalPrice: 129,\n savings: '40%',\n expirationDate: moment(proposedEndDate).add(15, 'days').format('MMMM Do, YYYY')\n },\n {\n priceId: 'price_1QjoSED2xOfNJKfxAEi44NrH',\n duration: 30,\n price: 149,\n originalPrice: 249,\n savings: '40%',\n expirationDate: moment(proposedEndDate).add(30, 'days').format('MMMM Do, YYYY')\n },\n {\n priceId: 'price_1QjoTSD2xOfNJKfxKdfh0ado',\n duration: 60,\n price: 179,\n originalPrice: 299,\n savings: '40%',\n expirationDate: moment(proposedEndDate).add(60, 'days').format('MMMM Do, YYYY')\n },\n {\n priceId: 'price_1QjoU8D2xOfNJKfxSbJs0UIn',\n duration: 90,\n price: 209,\n originalPrice: 349,\n savings: '40%',\n expirationDate: moment(proposedEndDate).add(90, 'days').format('MMMM Do, YYYY')\n },\n {\n priceId: 'price_1QjoUmD2xOfNJKfxVd55BNf4',\n duration: 180,\n price: 269,\n originalPrice: 449,\n savings: '40%',\n expirationDate: moment(proposedEndDate).add(180, 'days').format('MMMM Do, YYYY')\n },\n ] : membership.groups.includes('PlusPackAccess') ? [\n {\n priceId: 'price_1QjpAaD2xOfNJKfxzgTwOGSE',\n duration: 15,\n price: 109,\n expirationDate: moment(proposedEndDate).add(15, 'days').format('MMMM Do, YYYY')\n },\n {\n priceId: 'price_1Qjp6AD2xOfNJKfxyG7mWqzP',\n duration: 30,\n price: 199,\n expirationDate: moment(proposedEndDate).add(30, 'days').format('MMMM Do, YYYY')\n },\n {\n priceId: 'price_1QjpBdD2xOfNJKfxU5mnYCQI',\n duration: 60,\n price: 369,\n expirationDate: moment(proposedEndDate).add(60, 'days').format('MMMM Do, YYYY')\n },\n {\n priceId: 'price_1QjpCVD2xOfNJKfxvQ0zTIJl',\n duration: 90,\n price: 529,\n originalPrice: 549,\n savings: '$20',\n expirationDate: moment(proposedEndDate).add(90, 'days').format('MMMM Do, YYYY')\n },\n {\n priceId: 'price_1QjpDFD2xOfNJKfxzv7UtCrq',\n duration: 180,\n price: 899,\n originalPrice: 949,\n savings: '$50',\n expirationDate: moment(proposedEndDate).add(180, 'days').format('MMMM Do, YYYY')\n },\n ] : [\n {\n priceId: 'price_1Qjp74D2xOfNJKfxt6vTVf0v',\n duration: 15,\n price: 109,\n expirationDate: moment(proposedEndDate).add(15, 'days').format('MMMM Do, YYYY')\n },\n {\n priceId: 'price_1Qjp5ED2xOfNJKfx8zsWlxYO',\n duration: 30,\n price: 199,\n expirationDate: moment(proposedEndDate).add(30, 'days').format('MMMM Do, YYYY')\n },\n {\n priceId: 'price_1Qjp89D2xOfNJKfxfRwxrKJY',\n duration: 60,\n price: 369,\n expirationDate: moment(proposedEndDate).add(60, 'days').format('MMMM Do, YYYY')\n },\n {\n priceId: 'price_1Qjp8uD2xOfNJKfx9dewMYX5',\n duration: 90,\n price: 529,\n originalPrice: 549,\n savings: '$20',\n expirationDate: moment(proposedEndDate).add(90, 'days').format('MMMM Do, YYYY')\n },\n {\n priceId: 'price_1Qjp9uD2xOfNJKfxAYG2Fbqb',\n duration: 180,\n price: 899,\n originalPrice: 949,\n savings: '$50',\n expirationDate: moment(proposedEndDate).add(180, 'days').format('MMMM Do, YYYY')\n },\n ]\n }\n });\n switch (membershipStatus) {\n case 'awaitingPayment':\n return {\n actionText: 'Update Billing Details',\n action: async () => {\n const result = await invokeLambda('tbc-Stripe', {path: '/stripe/create-customer-portal', customer: subscriptionDetails.customerId, return_url: window.location.href});\n window.location.href = result.body.result.url;\n }\n };\n case 'cancelAtEndOfPeriod':\n case 'active':\n if (membership.type === 'subscription') {\n return {\n actionText: 'Manage',\n action: async () => {\n const result = await invokeLambda('tbc-Stripe', {path: '/stripe/create-customer-portal', customer: subscriptionDetails.customerId, return_url: window.location.href});\n window.location.href = result.body.result.url;\n }\n }\n } else {\n const bootcampSlug = getBootcampSlug(membership.groups);\n\n const slugMap = {\n 'medschool': 'med-school',\n 'dentalschool': 'dental-school',\n 'step1': 'step-1'\n };\n\n const bootcampRoute = slugMap[bootcampSlug] || bootcampSlug;\n\n const actionConfig = ['med-school'].includes(bootcampRoute)\n ? {\n externalActionLink: 'https://bootcamp.com/med-school/upgrade'\n } : {\n actionLink: ['admin_created', bootcampRoute].includes(membership.productId)\n ? `/${bootcampRoute}/stripe-checkout?priceId=${extensionIdsByBootcamp[bootcampRoute]}&mode=payment`\n : `/${bootcampRoute}/stripe-checkout?priceId=${extensionPriceIdMap[membership.productId] || membership.productId}&mode=payment`\n };\n\n if (membership.groups.includes('DATBootcamp') || membership.groups.includes('INBDEBootcamp') || membership.groups.includes('NCLEXBootcamp')) {\n return {\n actionText: 'Extend',\n action: openExtensionModal\n }\n }\n\n return {\n actionText: 'Extend',\n ...actionConfig,\n };\n }\n case 'cancelled':\n return {};\n default:\n const bootcampSlug = getBootcampSlug(membership.groups);\n const slugMap = {\n 'medschool': 'med-school',\n 'dentalschool': 'dental-school',\n 'step1': 'step-1'\n }\n const bootcampRoute = slugMap[bootcampSlug] || bootcampSlug;\n const endDate = membership.endDate || getExpirationDate(membership.startDate, membership.duration)\n if (moment().isBefore(moment(endDate).add(7, 'days'))) {\n if (membership.groups.includes('DATBootcamp') || membership.groups.includes('INBDEBootcamp') || membership.groups.includes('NCLEXBootcamp')) {\n return {\n actionText: 'Extend',\n action: openExtensionModal\n }\n }\n const actionConfig = membership.productId === 'admin_created' || ['med-school', 'nclex'].includes(bootcampRoute)\n ? {\n externalActionLink: (['anatomy', 'chemistry'].includes(bootcampSlug)\n ? `https://${slugMap[bootcampSlug] || bootcampSlug}.bootcamp.com/upgrade`\n : `https://bootcamp.com/${slugMap[bootcampSlug] || bootcampSlug}/upgrade`)\n } : {\n actionLink: ['inbde'].includes(bootcampRoute)\n ? `/${bootcampRoute}/stripe-checkout?priceId=${extensionIdsByBootcamp.inbde}&mode=payment`\n : `/${bootcampRoute}/stripe-checkout?priceId=${extensionPriceIdMap[membership.productId] || membership.productId}&mode=payment`\n }\n return {\n actionText: 'Extend',\n ...actionConfig,\n };\n }\n return {\n actionText: 'Upgrade',\n externalActionLink: ['anatomy', 'chemistry'].includes(bootcampSlug)\n ? `https://${slugMap[bootcampSlug] || bootcampSlug}.bootcamp.com/upgrade`\n : `https://bootcamp.com/${slugMap[bootcampSlug] || bootcampSlug}/upgrade`\n };\n }\n}\n\nconst Card = ({membership, id, duration, productId, startDate, status, type, groups, extensions}) => {\n const [subscriptionDetails, setSubscriptionDetails] = useState(null);\n const {modalDispatch} = useModalContext();\n const history = useHistory();\n\n const loading = type === 'subscription' && !subscriptionDetails;\n\n const membershipType = getMembershipType(groups, type, duration);\n const membershipGroup = groups.find(group => group.match('Bootcamp'));\n const {endDate} = findStartAndEndDates({items: [membership, ...extensions]}, membershipGroup);\n\n useEffect(() => {\n (async function() {\n if (type !== 'subscription') return;\n\n const details = await fetchBillingDetails(id);\n setSubscriptionDetails(details);\n\n })();\n }, [type]);\n const {actionText, action, actionLink, externalActionLink} = getActionForStatus({id, duration, productId, startDate, status, type, groups, extensions, endDate}, subscriptionDetails, modalDispatch, history);\n\n const wrapperProps = actionLink\n ? {to: actionLink}\n : externalActionLink\n ? {as: 'a', href: externalActionLink}\n : {as: 'div', onClick: !loading ? action : () => {}};\n\n return (\n \n \n \n {getMembershipBootcamp(groups)}\n \n {`${membershipType} - ${status === 'inactive'\n ? `Membership paused with ${membership.duration} days remaining`\n : status === 'cancelled'\n ? 'Cancelled'\n : status === 'awaitingPayment'\n ? 'Awaiting Payment'\n : type !== 'subscription'\n ? `Expires ${moment(endDate || getExpirationDate(startDate, duration)).format('MMMM Do YYYY, h:mm a')}`\n : getNextInvoiceDate(subscriptionDetails, status)}`\n }\n \n \n {actionText && (\n \n {loading ? 'Loading...' : actionText}\n \n )}\n \n \n \n );\n};\n\nCard.defaultProps = {};\nCard.propTypes = {};\n\nexport default Card;\n","import React from 'react';\nimport styled from 'styled-components';\nimport {Body3} from '../../../components/Typography';\n\nconst CalloutContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n width: 100%;\n padding: 16px 24px;\n border-radius: 8px;\n margin-bottom: 16px;\n background: rgba(255, 255, 255, 0.1);\n border: 0.5px solid rgba(255, 255, 255, 0.05);\n`;\n\nconst CalloutText = styled(Body3)`\n color: white;\n a {\n color: white;\n }\n`;\n\nconst Callout = props => (\n \n {props.icon &&
{props.icon}
}\n \n
\n)\n\nexport default Callout;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport {H2} from '../../../../../components/Typography';\nimport {useUserDataContext} from '../../../../../contexts/UserData';\nimport MembershipCard from './Card';\nimport extensionPriceIdMap from '../../extensionPriceIds';\nimport Callout from '../../../../components/Cards/Callout';\nimport {firstBy} from 'thenby';\n\nconst Container = styled.div`\n`;\nconst Section = styled.section`\n display: flex;\n flex-direction: column;\n margin-top: ${({theme}) => theme.layouts.spacing.m};\n\n &:first-child {\n margin-top: 0;\n }\n`;\nconst Title = styled(H2)`\n color: white;\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n`;\n\nconst trackGroups = {\n Dentistry: ['DATBootcamp', 'INBDEBootcamp', 'DentalSchoolBootcamp'],\n Chemistry: ['ChemistryBootcamp'],\n Anatomy: ['AnatomyBootcamp'],\n Optometry: ['OATBootcamp'],\n 'Medical School': ['Step1Bootcamp', 'MedSchoolBootcamp', 'MCATBootcamp'],\n 'Nursing': ['NCLEXBootcamp'],\n};\n\nfunction consolidateExtensions(memberships) {\n return memberships.map(membership => {\n const extensions = memberships\n .filter(({productId}) => extensionPriceIdMap[membership.productId] === productId)\n\n return {\n ...membership,\n extensions,\n isExtension: Object.values(extensionPriceIdMap).some(id => id === membership.productId && !['price_1MMu4SD2xOfNJKfx3n9BAaui', 'price_1MMtErD2xOfNJKfxEFchnNp1', 'price_1MMtjSD2xOfNJKfx1m1w0v1L'].includes(membership.productId)),\n }\n });\n}\n\nfunction getMembershipsByBootcamp(memberships) {\n if (!memberships) return {};\n\n return consolidateExtensions(memberships).reduce((acc, curr) => {\n if (curr.isExtension) return acc; // skip extensions for now\n\n const type = Object\n .keys(trackGroups)\n .find(track => (\n trackGroups[track] // iterate through track groups to find matching group in membership groups\n .some(trackGroup => (\n curr.groups\n .some(group => trackGroup === group)\n ))\n ));\n\n const accType = acc[type] || [];\n\n return {\n ...acc,\n [type]: [...accType, curr].sort(firstBy('createdAt', -1)) // sort by most recently created\n };\n }, {});\n}\n\nconst Memberships = () => {\n const {userModel} = useUserDataContext();\n\n const membershipsByTrack = getMembershipsByBootcamp(userModel?.memberships?.items);\n\n return (\n \n Have a question about your membership? Open a chat with us using the blue button at the bottom-right of your screen! We'll respond ASAP.\n {Object\n .keys(membershipsByTrack)\n .map(track => (\n
\n {track || ''}\n {membershipsByTrack[track].map(membership => )}\n
\n ))\n }\n
\n );\n};\n\nMemberships.defaultProps = {};\nMemberships.propTypes = {};\n\nexport default Memberships;\n","import React, {useState, useCallback} from 'react';\nimport styled from 'styled-components';\nimport API, {graphqlOperation} from '@aws-amplify/api';\nimport Auth from '@aws-amplify/auth';\nimport {IntercomAPI} from 'react-intercom';\nimport TagManager from 'react-gtm-module';\n\nimport { useUserDataContext } from '@bootcamp/web/src/contexts/UserData';\nimport {getActivationCode, createMembership, updateActivationCode, updateUser} from '@bootcamp/shared/src/requests';\n\nimport {Input, InputDecorator} from '@bootcamp/web/src/components/Form/FieldRenderer/components/Field';\nimport {RoundButton} from '@bootcamp/web/src/components/UI';\nimport nanoid from 'nanoid';\nimport {Container, TitleBar, Content} from '../Cards/shared';\nimport {H3} from '@bootcamp/web/src/components/Typography';\nimport {useAsync} from '@bootcamp/shared/src/util/hooks';\nimport Callout from '@bootcamp/web/src/bootcamps/components/Cards/Callout';\nimport {Info} from '@styled-icons/fluentui-system-filled/Info';\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\nimport {SubmitAnatomyCase} from '@bootcamp/web/src/components/Modal';\nimport moment from 'moment';\nconst StyledContainer = styled(Container)`\n max-width: 100%;\n`;\nconst StyledInputDecorator = styled(InputDecorator)`\n position: relative;\n margin-bottom: 24px;\n`;\nconst StyledButton = styled(RoundButton)`\n`;\n\n\nfunction findStartDate(membershipGroups, user) {\n try {\n\n const extendableMemberships = user?.memberships?.items\n // active memberships are extendable\n ?.filter(membership => membership.status === 'active')\n // memberships that share a group with the membership being purchased are extendable\n ?.filter(membership => membership.groups\n .filter(group => group !== 'PlusPackAccess')\n .find(group => membershipGroups.find(membershipGroup => membershipGroup === group))\n );\n\n if (!extendableMemberships || extendableMemberships.length === 0) return new Date();\n\n // we need to find when this membership should start\n // based on the ultimate end date of our current memberships\n let latestEnd;\n\n for (const membership of extendableMemberships) {\n if (!latestEnd) latestEnd = membership;\n\n // end date of the current membership iteration\n const membershipDate = new Date(membership.startDate);\n const membershipEndDate = membershipDate.setDate(membershipDate.getDate() + membership.duration);\n\n // end date of the stored \"latestEnd\" membership\n const endDate = new Date(latestEnd.startDate);\n const latestEndDate = endDate.setDate(endDate.getDate() + latestEnd.duration);\n\n // if the current membership iteration ends later than the latestEnd - update latest end\n if (membershipEndDate > latestEndDate) {\n latestEnd = membership;\n }\n }\n\n const endDate = new Date(latestEnd.startDate);\n const latestEndDate = endDate.setDate(endDate.getDate() + latestEnd.duration);\n\n // latestEndDate should be a unix string\n return new Date(latestEndDate);\n } catch (e) {\n console.error('findStartDate err', e);\n return new Date();\n }\n}\n\nconst createCohortUserLink = async (cohortId, userId) => {\n const getCohortUserLinks = /* GraphQL */ `\n query queryCohortUserLinksByGsiUserCohorts($userId: String!) {\n queryCohortUserLinksByGsiUserCohorts(userId: $userId) {\n items {\n cohortId\n }\n }\n }\n `;\n const cohortUserLink = await API.graphql(graphqlOperation(getCohortUserLinks, {userId}));\n const cohortUserLinks = cohortUserLink.data.queryCohortUserLinksByGsiUserCohorts.items;\n if (cohortUserLinks.find(link => link.cohortId === cohortId)) return;\n\n const createCohortUserLink = /* GraphQL */ `\n mutation CreateCohortUserLink($input: CreateCohortUserLinkInput!) {\n createCohortUserLink(input: $input) {\n id\n user {\n id\n }\n }\n }\n `;\n\n return await API.graphql(graphqlOperation(createCohortUserLink, {input: {cohortId, userId}}));\n}\n\nasync function addUserToCohort(discountCode, membershipInput) {\n if (!discountCode) return;\n\n try {\n // attempt to update the activation code - if it's not able to update, return\n const activationCode = await updateActivationCode({\n id: discountCode,\n priceId: membershipInput.productId,\n userId: membershipInput.userMembershipsId,\n redeemedAt: new Date().toISOString(),\n membershipId: membershipInput.id,\n });\n\n if (!activationCode) return;\n\n const {cohortId, userId} = activationCode;\n\n // create cohort user link\n await createCohortUserLink(cohortId, userId);\n\n } catch (error) {\n console.log('error adding user to cohort', error);\n }\n}\nconst getCodes = `\n query getUser($id: ID!) {\n getUser(id: $id) {\n codes {\n items {\n id\n duration\n redeemedAt\n description\n }\n }\n }\n }\n`\nconst useMembershipCodes = (userId) => {\n const fetchActivationCodes = useCallback(async () => {\n try {\n if (!userId) return [];\n const result = await API.graphql(graphqlOperation(getCodes, {id: userId}));\n return result.data.getUser.codes.items;\n } catch (error) {\n console.log('error fetching activation codes', error);\n return [];\n }\n }, [userId]);\n return useAsync(fetchActivationCodes);\n}\n\nconst CodeRedemption = () => {\n const {refreshSession, userModel, DEFAULT_USER_ID, bootcamp, cognitoUser} = useUserDataContext();\n const [value, setValue] = useState();\n const username = cognitoUser?.attributes?.name;\n const cognitoUsername = cognitoUser?.username;\n const [name, setName] = useState(username);\n const [error, setError] = useState(false);\n const [loading, setLoading] = useState(false);\n const [membership, setMembership] = useState();\n const {modalDispatch} = useModalContext();\n\n function handleInputChange(e) {\n setMembership();\n setValue(e.target.value.trim());\n setError(false);\n }\n const {value: userCodes, pending, execute} = useMembershipCodes(cognitoUsername || DEFAULT_USER_ID);\n\n const redeemCode = async (membershipInput, discountCode, email, productName) => {\n\n // create membership\n const membership = await createMembership(membershipInput);\n\n // add user to cohort\n await addUserToCohort(discountCode, membershipInput);\n\n await refreshSession();\n\n try {\n // update intercom user attributes\n // create intercom event\n await IntercomAPI('trackEvent', `Account Upgraded: Joined group(s) ${membershipInput.groups.join(', ')}`, {\n ...membershipInput,\n groups: JSON.stringify(membershipInput.groups),\n discountCode,\n discountedPrice: 0,\n originalPrice: 0,\n });\n try {\n if (discountCode) {\n await IntercomAPI('update', {discountCode});\n }\n } catch (error) {\n console.log(error)\n }\n try {\n TagManager.dataLayer({\n dataLayer: {\n 'transactionId': membershipInput.id,\n 'transactionTotal': 0,\n 'transactionCoupon': discountCode,\n 'transactionProducts': [{\n 'sku': membershipInput.priceId,\n 'name': productName || membershipInput.priceId,\n 'price': 0,\n 'quantity': 1\n }],\n 'email': email,\n 'event': 'Transaction Complete',\n }\n })\n } catch (e) {\n console.log(e);\n }\n } catch (error) {\n console.log('error registering intercom', error);\n }\n\n return membership;\n }\n\n async function handleRedemption() {\n try {\n setLoading(true);\n const code = await getActivationCode(value);\n\n const isValid = !!(code?.id);\n const isRedeemed = !!(code?.membershipId);\n\n if (!isValid) {\n throw new Error('Invalid Code.')\n } else if (isRedeemed) {\n throw new Error('This code has already been redeemed.');\n } else if (!name) {\n throw new Error('Please enter your name as it appears on your institution’s records.');\n }\n\n const user = await Auth.currentAuthenticatedUser();\n await Auth.updateUserAttributes(user, {name});\n await Auth.currentAuthenticatedUser({bypassCache: true});\n await updateUser({id: userModel.id, name});\n \n const startDate = findStartDate(code.groups, userModel);\n const membershipId = nanoid();\n\n const membershipInput = {\n id: `redeemed_${membershipId}`,\n startDate: startDate.toISOString(),\n productId: `${code?.cohort?.id}_institutional_membership`,\n duration: code.duration,\n status: 'active',\n userMembershipsId: userModel.id,\n type: 'oneTimePayment',\n groups: code.groups,\n };\n\n const membership = await redeemCode(membershipInput, code.id, userModel.email);\n setMembership(membership);\n setValue('');\n execute();\n const expirationDate = new Date(startDate).setDate(startDate.getDate() + code.duration)\n // format expiration date like MM/DD/YYYY\n const formattedExpirationDate = new Date(expirationDate).toLocaleDateString('en-US');\n modalDispatch({\n type: 'open',\n component: SubmitAnatomyCase,\n componentProps: {\n headerText: 'Code redeemed successfully!',\n bodyText: `Your upgraded membership expires on ${formattedExpirationDate}.`,\n confirmConfig: {\n shouldRedirect: true,\n redirect: location => `/${bootcamp}`,\n text: 'Return to Home'\n },\n cancelConfig: {\n text: null\n }\n },\n enableClickClose: true,\n modalContainerStyle: theme => `\n background: ${theme.overlays.opacity.dark._300};\n padding: 10vh 10vw;\n align-items: flex-start;\n ${theme.mediaQueries.tablet} {\n background: ${theme.overlays.opacity.dark._400};\n padding: 0;\n }\n `\n });\n return membership;\n\n } catch (error) {\n setError(error);\n console.log('error redeeming code:', error);\n } finally {\n setLoading(false);\n }\n }\n\n return (\n
\n }>\n {\"If your institution purchased memberships for your class, enter the code they gave you below to activate your upgraded membership. This section is not for redeeming promo codes. Promo codes can be used during checkout. If you need help, click the blue button at the bottom-right of your screen to send us a message. We’ll respond ASAP.\"}\n \n \n

Enter Your Institutional Code

\n \n \n setName(e.target.value)}\n value={name}\n defaultValue={username}\n />\n \n \n \n \n \n Redeem Code\n \n \n
\n
\n \n

Redemption History

\n \n {pending\n ? 'Loading...'\n : !userCodes.length \n ?

\n If you redeem an institutional code, it will appear here. Don’t have an institutional code? Meet with your advisor or program director and ask them to email us at team@bootcamp.com. We'd love to offer our resource to your institution!\n

\n : \n \n \n Code\n Description\n Duration\n Redemption Date\n \n \n \n {userCodes.map((code, i) => (\n \n {code.id}\n {code.description}\n {code.duration} days\n {moment(code.redeemedAt).format('MMMM Do YYYY, h:mm:ss a')}\n \n ))}\n \n \n }\n
\n
\n
\n );\n};\n\nconst StyledTable = styled.table`\n width: 100%;\n border-collapse: collapse;\n th, td {\n padding: 8px;\n border-bottom: 1px solid #E5E5E5;\n }\n th {\n text-align: left;\n font-size: 14px;\n color: #A0A0A0;\n }\n td {\n font-size: 16px;\n color: #333333;\n }\n`;\n\nCodeRedemption.defaultProps = {};\nCodeRedemption.propTypes = {};\n\nexport default CodeRedemption;","import React, {useState, useEffect} from 'react';\nimport {Redirect} from 'react-router-dom';\nimport {Helmet} from 'react-helmet';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport Auth from '@aws-amplify/auth';\n\nimport {capitalize} from '@bootcamp/shared/src/util';\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\n\nimport {Button} from '../../../components/Branding/Buttons';\nimport Breadcrumbs from '../../../components/NavBar/components/Breadcrumbs';\nimport Overview from '../../components/Cards/Overview';\nimport PageTabs from '../../components/PageTabs';\nimport Container, {resetScrollPosition} from '../PageContainer';\n\nimport PersonalDetails from './components/Cards/PersonalDetails';\nimport ResetMastery from './components/Cards/ResetMastery';\nimport Memberships from './components/Memberships';\nimport CodeRedemption from './components/Memberships/CodeRedemption';\nimport moment from 'moment';\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n border: none;\n\n ${({theme}) => theme.mediaQueries.laptop} {\n padding-left: 0;\n }\n`;\nconst StyledOverview = styled(Overview)`\n background: none;\n border: none;\n box-shadow: none;\n padding: 0px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-bottom: 0px;\n }\n`;\nconst ProfilePageContainer = styled.div`\n width: 100%;\n`;\nconst StyledPersonalDetails = styled(PersonalDetails)`\n width: 100%;\n max-width: none;\n margin-bottom: 16px;\n`;\nconst StyledResetMastery = styled(ResetMastery)`\n width: 100%;\n max-width: none;\n`;\nconst StyledBreadcrumbs = styled(Breadcrumbs)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n`;\nconst LogOutButtonContainer = styled.div`\n width: 240px;\n margin: ${({theme}) => theme.layouts.spacing.xl} auto 0;\n ${({theme}) => theme.mediaQueries.tablet} {\n width: 100%;\n }\n`\nconst LogOutButton = styled(Button).attrs({type: 'ghostWhite', size: 'large', fixed: true})``;\nconst ProfilePage = () => {\n const {searchUserInteractions, bootcamp} = useUserDataContext();\n const didResetMastery = searchUserInteractions('didResetMastery') === true;\n return (\n \n \n {(!didResetMastery || true) && (['med-school', 'anatomy'].includes(bootcamp)) && }\n \n )\n}\nconst pageComponents = {\n profile: ,\n memberships: ,\n 'redeem-code': ,\n // billing: (billingDetails, membership) => ,\n};\n\nconst AccountPage = ({history, match}) => {\n const {page} = match.params;\n const [activeTab, setActiveTab] = useState(page);\n const {userModel, cognitoUser, bootcamp} = useUserDataContext();\n const {config} = useBootcampConfigContext();\n\n const username = cognitoUser?.attributes?.name || userModel.id;\n const memberships = userModel?.memberships?.items;\n const pageTitle = config.meta.siteTitle;\n\n useEffect(() => {\n setActiveTab(page);\n resetScrollPosition();\n }, [page]);\n\n if (!activeTab) {\n return ;\n }\n\n return (\n \n \n {pageTitle} | Account | {capitalize(activeTab)}\n \n \n \n \n \n 0 ? {name: 'Memberships', route: 'memberships'} : {},\n ['med-school', 'inbde', 'dat', 'nclex'].includes(bootcamp) ? {name: 'Redeem Institutional Code', route: 'redeem-code'} : {},\n // {name: 'Billing', route: 'billing'}\n ]}\n activeTab={activeTab}\n themePalette={{default: ''}}\n // themePalette={themePalette}\n />\n {pageComponents[activeTab]}\n {activeTab === 'profile' &&\n \n {\n await Auth.signOut();\n history.push('/auth#/signin');\n }}>\n Log Out\n \n \n }\n \n \n );\n};\n\nAccountPage.defaultProps = {};\nAccountPage.propTypes = {\n history: PropTypes.shape({}).isRequired,\n match: PropTypes.shape({}).isRequired,\n};\n\nexport default AccountPage;\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgRocket(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 49,\n height: 49,\n viewBox: \"0 0 49 49\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.892 15.8232C27.3539 15.3464 27.9061 14.9663 28.5165 14.7051C29.1269 14.444 29.7832 14.307 30.4471 14.3022C31.1109 14.2974 31.7691 14.4248 32.3832 14.6771C32.9973 14.9294 33.555 15.3014 34.0238 15.7715C34.4926 16.2417 34.8631 16.8004 35.1136 17.4152C35.3641 18.03 35.4897 18.6886 35.483 19.3524C35.4763 20.0163 35.3375 20.6722 35.0746 21.2818C34.8118 21.8915 34.4301 22.4427 33.952 22.9032C33.0077 23.8128 31.7439 24.315 30.4329 24.3018C29.1219 24.2886 27.8685 23.761 26.9428 22.8326C26.017 21.9042 25.4929 20.6493 25.4834 19.3383C25.4739 18.0273 25.9797 16.7649 26.892 15.8232ZM31.832 17.9432C31.6455 17.7581 31.4244 17.6114 31.1812 17.5117C30.9381 17.412 30.6777 17.3612 30.4149 17.3621C30.1521 17.363 29.8921 17.4157 29.6496 17.5171C29.4072 17.6186 29.1871 17.7667 29.002 17.9532C28.8168 18.1397 28.6702 18.3608 28.5705 18.604C28.4708 18.8471 28.4199 19.1075 28.4208 19.3703C28.4218 19.6331 28.4745 19.8931 28.5759 20.1355C28.6773 20.378 28.8255 20.5981 29.012 20.7832C29.3886 21.1572 29.8983 21.3662 30.429 21.3643C30.9598 21.3625 31.468 21.1498 31.842 20.7732C32.2159 20.3966 32.4249 19.8869 32.4231 19.3561C32.4212 18.8254 32.2086 18.3172 31.832 17.9432ZM40.172 5.98322C41.892 6.52322 43.252 7.88322 43.772 9.60322L44.192 10.9432C45.692 15.7432 44.392 20.9432 40.852 24.4832L38.852 26.4832C39.8616 27.8293 40.3526 29.494 40.2351 31.1725C40.1175 32.851 39.3993 34.431 38.212 35.6232L35.712 38.1032C35.132 38.7032 34.192 38.7032 33.592 38.1032L30.412 34.9232L30.072 35.2832C28.692 36.6432 26.472 36.6432 25.112 35.2832L24.152 34.3032L22.512 37.1032C22.3937 37.2969 22.2332 37.4612 22.0423 37.5837C21.8514 37.7063 21.6352 37.784 21.4099 37.811C21.1846 37.838 20.9562 37.8135 20.7418 37.7394C20.5273 37.6653 20.3325 37.5435 20.172 37.3832L12.372 29.6032C12.2126 29.4413 12.0921 29.2453 12.0195 29.03C11.947 28.8146 11.9243 28.5857 11.9532 28.3603C11.9821 28.1349 12.0618 27.9191 12.1863 27.729C12.3108 27.539 12.4769 27.3797 12.672 27.2632L15.452 25.6032L14.512 24.6632C13.8586 24.0072 13.4917 23.1191 13.4917 22.1932C13.4917 21.2673 13.8586 20.3792 14.512 19.7232L14.872 19.3632L11.672 16.1632C11.3971 15.8828 11.2432 15.5058 11.2432 15.1132C11.2432 14.7206 11.3971 14.3436 11.672 14.0632L14.172 11.5632C15.3642 10.3758 16.9442 9.65763 18.6227 9.54009C20.3012 9.42256 21.9659 9.91357 23.312 10.9232L25.312 8.92322C27.0511 7.18679 29.2312 5.95804 31.6173 5.36945C34.0033 4.78087 36.5048 4.85478 38.852 5.58322L40.172 5.98322ZM40.932 10.5032C40.672 9.70322 40.072 9.10322 39.272 8.84322L37.952 8.44322C36.125 7.87519 34.1775 7.81716 32.3199 8.27538C30.4623 8.73361 28.7652 9.69069 27.412 11.0432L16.612 21.8432C16.412 22.0432 16.412 22.3432 16.612 22.5432L27.232 33.1432C27.432 33.3432 27.752 33.3432 27.952 33.1432L38.752 22.3632C40.1045 21.01 41.0616 19.3129 41.5198 17.4553C41.978 15.5977 41.92 13.6502 41.352 11.8232L40.932 10.5032ZM14.152 37.7432C14.4169 37.4589 14.5612 37.0828 14.5543 36.6942C14.5475 36.3056 14.39 35.9348 14.1152 35.66C13.8404 35.3852 13.4696 35.2277 13.081 35.2209C12.6924 35.214 12.3163 35.3583 12.032 35.6232L7.07196 40.5832C6.807 40.8676 6.66275 41.2437 6.66961 41.6323C6.67647 42.0209 6.83389 42.3916 7.10872 42.6665C7.38354 42.9413 7.75431 43.0987 8.14291 43.1056C8.53152 43.1124 8.90761 42.9682 9.19196 42.7032L14.152 37.7432ZM10.272 31.7432C10.852 32.3432 10.852 33.2832 10.272 33.8632L8.13196 35.9832C7.84761 36.2482 7.47152 36.3924 7.08291 36.3856C6.69431 36.3787 6.32354 36.2213 6.04872 35.9465C5.77389 35.6716 5.61647 35.3009 5.60961 34.9123C5.60275 34.5237 5.747 34.1476 6.01196 33.8632L8.13196 31.7432C8.73196 31.1432 9.67196 31.1432 10.272 31.7432ZM18.032 41.6432C18.1793 41.5059 18.2975 41.3403 18.3795 41.1563C18.4615 40.9723 18.5056 40.7737 18.5091 40.5723C18.5127 40.3709 18.4756 40.1708 18.4002 39.984C18.3248 39.7972 18.2125 39.6276 18.07 39.4851C17.9276 39.3427 17.7579 39.2304 17.5712 39.155C17.3844 39.0795 17.1843 39.0425 16.9829 39.046C16.7815 39.0496 16.5829 39.0937 16.3989 39.1757C16.2149 39.2576 16.0493 39.3758 15.912 39.5232L13.792 41.6432C13.527 41.9276 13.3828 42.3037 13.3896 42.6923C13.3965 43.0809 13.5539 43.4516 13.8287 43.7265C14.1035 44.0013 14.4743 44.1587 14.8629 44.1656C15.2515 44.1724 15.6276 44.0282 15.912 43.7632L18.032 41.6432Z\",\n fill: \"#2F3037\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgRocket);\nexport default __webpack_public_path__ + \"static/media/rocket.05f73787.svg\";\nexport { ForwardRef as ReactComponent };","import React, {useState, useCallback} from 'react';\nimport styled, {css} from 'styled-components';\n\nimport {Plus} from '@styled-icons/evaicons-solid/Plus';\nimport {Minus} from '@styled-icons/evaicons-solid/Minus';\n\nimport {H2, H3, Body2} from '../../components/Typography';\nimport {IconButton} from '../../components/Branding/Buttons';\nimport {Row} from '../../components/Grid';\n\nimport {useAsync} from '../../hooks';\nimport API from '@aws-amplify/api';\nimport { Cache } from 'aws-amplify';\nimport {useUserDataContext} from '../../contexts/UserData';\nimport firstBy from 'thenby';\n\nconst ToggleButton = styled(IconButton).attrs(props => ({size: 8}))`\n width: 32px;\n height: 32px;\n box-shadow: none;\n background: ${({theme}) => theme.overlays.opacity.light._100};\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n padding: 8px;\n transition: all 100ms ease;\n &:hover {\n box-shadow: none;\n background: rgba(255,255,255,0.2);\n }\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n width: 32px;\n height: 32px;\n }\n`;\n\nconst ElementContainer = styled.div`\n background: ${({theme}) => theme.overlays.opacity.light._100};\n border-radius: 8px;\n margin-bottom: 8px;\n &:last-child {\n margin-bottom: 0px;\n }\n`;\n\nconst TitleBar = styled(Row)`\n justify-content: space-between;\n border-radius: 8px;\n padding: 16px 24px;\n user-select: none;\n cursor: pointer;\n align-items: center;\n &:hover {\n ${({theme, expanded}) => !expanded && css`background: rgba(255,255,255,0.2)`};\n\n ${ToggleButton} {\n ${({theme, expanded}) => !expanded && css`background: rgba(255,255,255,0.2)`};\n }\n}\n\n\n\n${({theme}) => theme.mediaQueries.mobileL} {\n padding: 16px;\n}`;\n\nconst Title = styled(H3)`\n color: white;\n flex: 1;\n`;\n\nconst Text = styled(Body2)`\n color: white;\n padding: 16px 24px;\n padding-top: 0;\n\n p {\n margin: 0;\n }\n\n a {\n color: white;\n }\n`;\n\nexport const Element = ({title, text}) => {\n const [expanded, setExpanded] = useState(false)\n return (\n !expanded && setExpanded(true)}>\n expanded && setExpanded(false)}>\n \n <ToggleButton children={expanded ? <Minus size={20} /> : <Plus size={20}/>}/>\n </TitleBar>\n {expanded && <Text dangerouslySetInnerHTML={{__html: text}} />}\n </ElementContainer>\n )\n}\n\nconst Container = styled.div`\n width: 100%;\n`;\n\nexport const Heading = styled(H2)`\n color: white;\n margin-bottom: 16px;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\n\nconst FAQs = ({heading=\"Frequently Asked Questions\"}) => {\n const {bootcamp} = useUserDataContext();\n\n const fetchFAQs = useCallback(async () => {\n try {\n const cachedFAQs = Cache.getItem(`${bootcamp}-FAQs`);\n if (cachedFAQs) return cachedFAQs;\n\n const result = await API.get('webflow', `/faqs/${bootcamp}`);\n const fetchedFAQs = result?.items?.items || [];\n\n if (fetchedFAQs.length > 0) {\n const expires = (new Date()).getTime() + (60 * 1000) // in a minute\n Cache.setItem(`${bootcamp}-FAQs`, fetchedFAQs, {expires});\n }\n\n return fetchedFAQs\n } catch (e) {\n console.log(e);\n return [];\n }\n }, [bootcamp]);\n\n const {value: items} = useAsync(fetchFAQs);\n if (items?.length === 0) return null;\n\n return (\n <Container>\n {heading &&\n <Heading children={heading}></Heading>\n }\n {items?.sort(firstBy('order')).map((item) => (\n <Element\n title={item['question-copy']}\n text={item['answer']}\n />\n ))}\n </Container>\n )\n}\nexport default FAQs;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport FAQs from '../../components/WebflowFAQs';\nimport Container from '../PageContainer';\nimport Overview from '../../components/Cards/Overview';\nimport PageTabs from '../../components/PageTabs';\nimport Breadcrumbs from '../../../components/NavBar/components/Breadcrumbs';\n\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\n\nconst StyledBreadcrumbs = styled(Breadcrumbs)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n`;\nconst StyledOverview = styled(Overview)`\n background: transparent;\n box-shadow: none;\n border: none;\n padding: 0;\n margin-bottom: 16px;\n`;\n\nconst FAQ = ({history}) => {\n const {config} = useBootcampConfigContext();\n useDocumentTitle(`${config.meta.siteTitle} | FAQs`);\n\n return (\n <Container>\n <StyledBreadcrumbs history={history} lockAtDepth={2} />\n <StyledOverview\n subTitle={'FAQs'}\n body={'Don’t see your question answered here? Just send us a message by clicking the Contact link in the sidebar or click the blue chat button at the bottom-right of your screen.'}\n title={'Classroom'}\n showProgress={false}\n />\n <FAQs\n heading={''}\n />\n </Container>\n );\n}\n\nexport default FAQ;\n","import {addDays, format, startOfMonth, getDaysInMonth, getDay, parse, parseISO, eachDayOfInterval } from 'date-fns';\nimport firstBy from 'thenby';\n\n// using events array, create a set of events by date, starting from today, aiming for a sum of 4 hours' worth of events using the estimatedTime property\nexport const distributeEvents = (events, startDate, daysOff=[], hoursPerDay=4, studySpeed=1) => {\n const hoursPerDayMinimum = .25;\n if (hoursPerDay < hoursPerDayMinimum) {\n hoursPerDay = hoursPerDayMinimum;\n }\n\n const eventsByDate = {};\n\n let currentDate = parse(startDate, 'yyyy-MM-dd', new Date());\n let currentDayEvents = [];\n let currentDayTime = 0;\n\n events.forEach(event => {\n // estimatedTime is in minutes\n const eventTime = ((event.estimatedTime || 0) * (event?.custom ? 1 : studySpeed)) / 60;\n if (currentDayTime + eventTime > hoursPerDay && currentDayTime > 0) {\n currentDate = addDays(currentDate, 1);\n\n while (daysOff.includes(format(currentDate, 'yyyy-MM-dd'))) {\n eventsByDate[format(currentDate, 'yyyy-MM-dd')] = [];\n currentDate = addDays(currentDate, 1);\n }\n currentDayEvents = [];\n currentDayTime = currentDayTime >= hoursPerDay ? 0 : (hoursPerDay - currentDayTime) * -1\n }\n event.complete = false;\n currentDayEvents.push(event);\n currentDayTime += eventTime;\n eventsByDate[format(currentDate, 'yyyy-MM-dd')] = [...currentDayEvents];\n });\n\n // make sure all days off are included in events by date so that we can account for them in the rebalance modal\n daysOff.forEach(dayOff => {\n if (!eventsByDate[dayOff]) {\n eventsByDate[dayOff] = [];\n }\n });\n\n return eventsByDate;\n};\n\nexport const getWeeksToDisplay = (defaultDate, addPadding=true) => {\n // total days to render =\n // day index on start of month + total days in month\n // divided by 7\n const daysPriorToStartOfMonth = getDay(startOfMonth(defaultDate));\n const daysInMonth = getDaysInMonth(defaultDate);\n const totalDays = daysPriorToStartOfMonth + daysInMonth;\n return Math.ceil(totalDays / 7)\n}\n\nexport const calculateDaysOff = (scheduledDays) => {\n\n try {\n const dateKeys = Object.keys(scheduledDays);\n\n if (dateKeys.length === 0) {\n return { earliestDay: null, latestDay: null, daysOff: 0 };\n }\n\n // Parse all date keys into Date objects\n const dates = dateKeys.map(date => parseISO(date));\n\n // Find the earliest and latest dates\n const earliestDay = dates.reduce((earliest, current) => (current < earliest ? current : earliest));\n const latestDay = dates.reduce((latest, current) => (current > latest ? current : latest));\n\n // Get all dates in the interval from earliest to latest\n const allDates = eachDayOfInterval({ start: earliestDay, end: latestDay });\n\n // Format all dates to the same string format as the object keys\n const allDateKeys = allDates.map(date => format(date, 'yyyy-MM-dd'));\n\n // Calculate the days off\n const daysOff = allDateKeys.filter(date => scheduledDays[date] && scheduledDays?.[date]?.length === 0);\n\n return daysOff.reduce((acc, curr) => ([...acc, curr]), []);\n\n } catch (error) {\n return [];\n }\n}\n\nexport const formatEstimatedTime = (estimatedTime) => {\n\n const estHours = Math.floor(estimatedTime / 60);\n const estMin = Math.round(estimatedTime % 60);\n\n const formattedHours = estHours > 0 ? `${estHours}h ` : '';\n const formattedMin = estMin > 0 ? `${estMin}m` : '';\n\n return `${formattedHours}${formattedMin}`;\n}","import styled, {css} from 'styled-components';\n\nimport {Label2, H3, H5, Body3} from '@bootcamp/web/src/components/Typography/next';\n\nimport {CheckmarkCircle} from '@styled-icons/fluentui-system-filled/CheckmarkCircle';\nimport {Dismiss} from '@styled-icons/fluentui-system-filled/Dismiss';\nimport {Wand} from '@styled-icons/fluentui-system-filled/Wand';\nimport {ArrowUturnLeft} from '@styled-icons/heroicons-solid/ArrowUturnLeft';\nimport {Copy} from '@styled-icons/fluentui-system-filled/Copy';\n\nimport datCalendar from '@bootcamp/shared/src/assets/images/ssg/placeholders/dat.png';\nimport nclexCalendar from '@bootcamp/shared/src/assets/images/ssg/placeholders/nclex.png';\nimport inbdeCalendar from '@bootcamp/shared/src/assets/images/ssg/placeholders/inbde.png';\nimport medSchoolCalendar from '@bootcamp/shared/src/assets/images/ssg/placeholders/med-school.png';\nimport mobileCalendar from '@bootcamp/shared/src/assets/images/ssg/placeholders/mobile.png';\n\nexport const Calendar = styled.div`\n display: grid;\n border-bottom-left-radius: 8px;\n border-bottom-right-radius: 8px;\n overflow: clip;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n border-radius: 0px;\n border-bottom: 1px solid ${({theme}) => theme.colors.borderPalette.primary};\n padding-bottom: 8px;\n background: ${({theme}) => theme.colors.neutralsPalette.offWhite};\n gap: 2px;\n }\n`;\n\nexport const CalendarWeek = styled.div`\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n background: white;\n border-top: ${({theme}) => `1px solid ${theme.colors.neutralsPalette.light}`};\n &:first-child {\n border-top: none;\n }\n ${({theme}) => theme.mediaQueries.tablet} {\n border-top: none;\n background: ${({theme}) => theme.colors.neutralsPalette.offWhite};\n }\n`;\n\nexport const CalendarShadow = styled.div`\n box-shadow: ${({theme}) => theme.elevation.shadow.medium};\n`;\n\nexport const CalendarContainer = styled.div`\n position: relative;\n border-radius: 8px;\n background: white;\n ${({theme}) => theme.mediaQueries.tablet} {\n overflow: hidden;\n }\n`;\n\nexport const CalendarHeaderContainer = styled.div`\n background: ${({theme}) => theme.colors.neutralsPalette.offWhite};\n width: 100%;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n position: sticky;\n top: 0;\n z-index: 500;\n`;\n\nexport const CalendarHeaderRow = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n padding: ${({theme}) => theme.layouts.spacing.s} ${({theme}) => theme.layouts.spacing.m};\n`;\n\nexport const CalendarHeaderButtonsContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: ${({theme}) => theme.layouts.spacing.s};\n`;\nexport const CalendarHeaderMonth = styled(H3)`\n margin: 0 auto;\n`\n\nexport const CalenderHeaderDayRow = styled(CalendarWeek)`\n border-top: none;\n background: ${({theme}) => theme.colors.neutralsPalette.offWhite};\n`;\n\nexport const CalendarHeaderDay = styled(Label2)`\n text-align: center;\n padding: 8px 0px;\n font-weight: 400;\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n ${({theme}) => theme.mediaQueries.tablet} {\n text-transform: capitalize;\n color: ${({theme}) => theme.colors.typographyPalette.tertiary};\n font-size: 12px;\n line-height: 12px;\n padding: 4px 0px;\n }\n`;\n\nexport const MobileCalendarDay = styled(Label2)`\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n width: 42px;\n height: 30px;\n margin: auto;\n position: relative;\n cursor: ${({theme, isPresent}) => !isPresent ? 'default' : 'pointer'};\n color: ${({theme, isPresent}) => !isPresent ? theme.colors.typographyPalette.tertiary : theme.colors.typographyPalette.primary};\n border-radius: 100px;\n\n ${({isSelected, theme}) => isSelected && css`\n background: ${theme.colors.brandPalette.royal.default};\n color: ${theme.colors.neutralsPalette.white};\n `}\n\n ${({multi, isSelected, theme}) => multi && css`\n background: ${isSelected ? '#EDEDF0' : '#EEF0FE'};\n text-decoration: ${isSelected ? 'line-through' : 'none'};\n color: ${isSelected ? '#85868E' : '#5127C4'};\n &:hover {\n text-decoration: line-through;\n }\n `}\n\n ${({isExamDay, theme}) => isExamDay && css`\n background: ${theme.colors.interfacePalette.red.light};\n color: ${theme.colors.interfacePalette.red.dark};\n `}\n\n ${({isDayOff, isPresent, isExamDay, theme, isSelected}) => isDayOff && isPresent && !isExamDay && css`\n background: ${isSelected ? theme.colors.brandPalette.royal.extraLight : theme.colors.borderPalette.primary};\n color: ${isSelected ? theme.colors.brandPalette.royal.dark : theme.colors.typographyPalette.secondary};\n text-decoration: line-through;\n border: ${isSelected ? '1px solid #5127C4' : 'none'};\n `}\n\n &:after {\n content: '';\n width: 4px;\n height: 4px;\n border-radius: 100px;\n background: ${({theme, isToday, isSelected}) => isToday && !isSelected ? theme.colors.brandPalette.royal.default : isToday ? theme.colors.neutralsPalette.white : 'transparent'};\n position: absolute;\n bottom: 3px;\n }\n`;\n\nconst UpdateCompleteContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 12px;\n background: ${({theme}) => theme.colors.brandPalette.royal.default};\n border-radius: 8px;\n box-shadow: ${({theme}) => theme.elevation.shadow.medium};\n gap: 12px;\n user-select: none;\n ${({themePalette, theme}) => themePalette == 'green' && css`\n background: ${theme.colors.interfacePalette.green.light};\n ${UpdateTitle} {\n color: ${theme.colors.interfacePalette.green.dark};\n }\n ${UpdateBody} {\n color: ${theme.colors.interfacePalette.green.dark};\n }\n ${CheckmarkCircleIcon} {\n color: ${theme.colors.interfacePalette.green.dark};\n }\n `}\n`;\n\nconst CheckmarkCircleIcon = styled(CheckmarkCircle)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n min-width: 16px;\n height: 16px;\n`;\nconst WandIcon = styled(Wand)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n min-width: 16px;\n width: 16px;\n height: 16px;\n`;\nconst CopyIcon = styled(Copy)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n min-width: 16px;\n width: 16px;\n height: 16px;\n`;\nconst ArrowUturnLeftIcon = styled(ArrowUturnLeft)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n min-width: 16px;\n width: 16px;\n height: 16px;\n`;\n\nconst DismissIcon = styled(Dismiss)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n background:rgba(255, 255, 255, 0.1);\n width: 32px;\n min-width: 32px;\n height: 32px;\n border-radius: 100px;\n cursor: pointer;\n padding: 8px;\n &:hover {\n background: rgba(255, 255, 255, 0.2);\n }\n`;\n\nconst UpdateContent = styled.div`\n width: 100%;\n`;\n\nconst UpdateTitle = styled(H5)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n`;\nconst UpdateBody = styled(Body3)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n opacity: .7;\n`;\n\nexport const UpdateComplete = ({closeToast, toastProps, title, body, iconName=\"checkmark\", themePalette=\"royal\", showDismiss=true}) => {\n const handleElementClick = e => {\n e.stopPropagation();\n e.preventDefault();\n };\n return (\n <UpdateCompleteContainer themePalette={themePalette} onClick={handleElementClick}>\n {iconName === \"copy\" ? <CopyIcon/> : iconName === \"checkmark\" ? <CheckmarkCircleIcon /> : iconName === \"wand\" ? <WandIcon /> : iconName === \"reply\" ? <ArrowUturnLeftIcon /> : null}\n <UpdateContent onClick={handleElementClick}>\n <UpdateTitle children={title} />\n <UpdateBody children={body} />\n </UpdateContent>\n {showDismiss && <DismissIcon onClick={closeToast} />}\n </UpdateCompleteContainer>\n );\n};\n\n\nexport const placeholderMap = {\n oat: datCalendar,\n inbde: inbdeCalendar,\n nclex: nclexCalendar,\n 'med-school': medSchoolCalendar,\n dat: datCalendar,\n mobile: mobileCalendar\n}\n\nexport const testTitleMap = {\n oat: 'OAT',\n inbde: 'INBDE',\n nclex: 'NCLEX',\n 'med-school': 'Step 1',\n dat: 'DAT',\n}\n\nexport const studyScheduleLinkMap = {\n inbde: 'https://docs.google.com/document/d/1JL5kU_tUSoDMU0Km6umldqIZ1RUvpLEUhdtYMrDuhdw/edit?usp=sharing',\n dat: 'https://bootcamp.com/dat/aris-study-guide-for-dat-domination',\n 'med-school': 'https://drive.google.com/file/d/1Bg4B2ya4gXmjlGw6AYXCd8A6Y2YAQW24/view?usp=share_link',\n}\n","import React, {useState, useEffect, useRef} from 'react';\nimport styled, {css} from 'styled-components';\nimport {addWeeks, addDays, addMonths, startOfWeek, format, startOfMonth, getDate, isBefore, isAfter, parse, differenceInDays} from 'date-fns';\n\nimport {Label3} from '@bootcamp/web/src/components/Typography/next';\n\nimport {getWeeksToDisplay} from '../helpers';\nimport {RoundButton} from '@bootcamp/web/src/components/UI';\n\nimport {CalendarLtr} from '@styled-icons/fluentui-system-regular/CalendarLtr';\nimport {ChevronLeft} from '@styled-icons/fluentui-system-filled/ChevronLeft';\nimport {ChevronRight} from '@styled-icons/fluentui-system-filled/ChevronRight';\nimport {ChevronDown} from '@styled-icons/fluentui-system-filled/ChevronDown';\n\nimport {\n Calendar,\n CalendarWeek,\n CalendarHeaderContainer,\n CalendarHeaderRow,\n CalendarHeaderMonth,\n CalenderHeaderDayRow,\n MobileCalendarDay,\n} from './shared';\n\nconst StyledCalendar = styled(Calendar)`\n gap: 4px;\n background: white;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n gap: 8px;\n }\n`;\n\n// Styles for the container and input\nconst Container = styled.div`\n position: relative;\n display: inline-block;\n width: 100%;\n`;\nconst InputWrapper = styled.div`\n position: relative;\n z-index: 1;\n`;\nconst InlineWrapper = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n position: relative;\n z-index: 1;\n`;\nconst InlineText = styled(Label3)`\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n font-weight: 400;\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: 16px;\n }\n`;\nexport const CalendarIconBareWrapper = styled.div`\n padding: 4px;\n background: ${({theme}) => theme.colors.neutralsPalette.extraLight};\n border-radius: 8px;\n\n &:hover {\n background: ${({theme}) => theme.colors.neutralsPalette.light};\n }\n`;\nexport const CalendarIcon = styled(CalendarLtr)`\n position: absolute;\n top: calc(50% - 10px);\n right: 16px;\n width: 20px;\n height: 20px;\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n cursor: pointer;\n z-index: -1;\n`;\nconst CalendarIconBare = styled(CalendarIcon)`\n position: relative;\n right: 0;\n top: 0;\n`;\nconst StyledInput = styled.input`\n padding: 12px 16px;\n border-radius: 8px;\n background: transparent;\n border: 1px solid ${({theme}) => theme.colors.borderPalette.primary};\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n width: 100%;\n font-size: 16px;\n cursor: pointer;\n font-family: proxima-nova;\n font-size: 16px;\n font-weight: 400;\n line-height: 16px;\n\n &:focus {\n outline: none;\n border-color: ${({theme}) => theme.colors.borderPalette.secondary};\n }\n\n ${({disabled}) => disabled && css`\n background: ${({theme}) => theme.colors.neutralsPalette.offWhite};\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n cursor: not-allowed;\n `}\n`;\nconst PickerWrapper = styled.div`\n position: absolute;\n left: 4px;\n background: white;\n border: 1px solid ${({theme}) => theme.colors.borderPalette.primary};\n border-radius: 8px;\n box-shadow: 0px 8px 20px 0px #0000001F;\n z-index: 10;\n width: auto;\n user-select: none;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n left: -24px;\n width: 100%;\n }\n`;\nconst CalendarContainer = styled.div`\n padding: 16px;\n`;\nconst StyledCalendarHeaderContainer = styled(CalendarHeaderContainer)`\n position: relative;\n background: white;\n`;\nconst StyledCalendarHeaderRow = styled(CalendarHeaderRow)`\n padding: 0;\n margin-bottom: 12px;\n `;\nconst StyledCalendarHeaderMonth = styled(CalendarHeaderMonth)`\n display: flex;\n justify-content: space-between;\n width: 100%;\n`;\nconst StyledCalendarHeaderDayRow = styled(CalenderHeaderDayRow)`\n padding: 0;\n border-top: none;\n background: white;\n gap: 8px;\n margin-bottom: 12px;\n`;\nconst StyledCalendarHeaderDay = styled(MobileCalendarDay)`\n padding: 0;\n text-transform: uppercase;\n font-size: 12px;\n font-weight: 700;\n line-height: 12px;\n cursor: ${({multi}) => multi ? 'pointer' : 'default'};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n width: 30px;\n height: 30px;\n font-size: 12px;\n line-height: 12px;\n padding: 0;\n }\n`;\nconst StyledMobileCalendarDay = styled(MobileCalendarDay)`\n ${({theme}) => theme.mediaQueries.mobileL} {\n width: 30px;\n height: 30px;\n font-size: 12px;\n line-height: 12px;\n padding: 0;\n }\n`;\nconst StyledCalendarWeek = styled(CalendarWeek)`\n border: 0;\n padding: 0;\n background: white;\n gap: 8px;\n`;\nconst MonthSelector = styled.input`\n background: transparent;\n border: none;\n outline: none;\n font-family: proxima-nova;\n font-size: 16px;\n line-height: 20px;\n font-weight: 700;\n cursor: pointer;\n appearance: none;\n color: transparent;\n user-select: none;\n z-index: 0;\n`;\nconst FormattedMonthDisplay = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n font-family: proxima-nova;\n font-size: 16px;\n line-height: 20px;\n font-weight: 700;\n z-index: -1;\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n`;\nconst MonthSelectorWrapper = styled.div`\n position: relative;\n`;\nconst MonthSelectorIcon = styled(ChevronDown)`\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n width: 20px;\n height: 20px;\n`;\nconst MonthLeft = styled(ChevronLeft)`\n width: 20px;\n height: 20px;\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n cursor: pointer;\n`;\nconst MonthRight = styled(ChevronRight)`\n width: 20px;\n height: 20px;\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n cursor: pointer;\n`;\nconst ButtonContainer = styled.div`\n display: flex;\n gap: 8px;\n margin-top: 12px;\n`;\nconst CancelButton = styled(RoundButton)`\n flex: 1;\n`;\nconst ConfirmButton = styled(RoundButton)`\n flex: 1;\n`;\nconst Tip = styled(Label3)`\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n margin-bottom: 12px;\n font-weight: 400;\n`;\n\nconst Picker = ({\n startDate,\n endDate,\n value,\n onChange,\n multi=false,\n disabled,\n dismiss,\n min,\n tipText=''\n}) => {\n const defaultValue = multi ? (value[0] || startDate) : value || startDate;\n\n const [currentDate, setCurrentDate] = useState(startOfMonth(parse(defaultValue, 'yyyy-MM-dd', new Date())));\n const [localValue, setLocalValue] = useState(value);\n\n const formattedStartDate = format(parse(startDate, 'yyyy-MM-dd', new Date()), 'yyyy-MM-dd');\n const formattedMinDate = min ? format(parse(min, 'yyyy-MM-dd', new Date()), 'yyyy-MM-dd') : null;\n const weeks = getWeeksToDisplay(currentDate, false);\n const weeksDates = Array.from({length: weeks}, (_, index) => addWeeks(startOfWeek(currentDate), index));\n\n const handleDateClick = (date) => {\n if (multi) {\n if ([startDate, endDate].includes(date) || isBefore(date, startDate) || isAfter(date, endDate)) return;\n\n if (localValue.includes(date)) {\n setLocalValue(localValue.filter(selectedDate => selectedDate !== date));\n return;\n }\n setLocalValue([...localValue, date]);\n } else {\n if (min && isBefore(date, addDays(parse(min, 'yyyy-MM-dd', new Date()), -1))) {\n return;\n }\n if (endDate && isAfter(date, endDate)) {\n return;\n }\n setLocalValue(date);\n\n }\n };\n\n const handleHeaderClick = (index) => {\n if (multi) {\n const totalWeeksUntilEnd = Math.ceil(differenceInDays(endDate, startDate) / 7);\n const selectedDatesOnDay = Array.from({length: totalWeeksUntilEnd + 1}, (_, index) => addWeeks(startOfWeek(startDate), index)).map(weekStart => format(addDays(weekStart, index), 'yyyy-MM-dd')).filter(date => date > startDate && date < endDate);\n if (selectedDatesOnDay.some(selectedDate => localValue.includes(selectedDate))) {\n setLocalValue(localValue.filter(selectedDate => !selectedDatesOnDay.includes(selectedDate)));\n return;\n }\n setLocalValue([...localValue, ...selectedDatesOnDay.filter(selectedDate => !localValue.includes(selectedDate))]);\n } else {\n // do nothing\n }\n };\n\n const checkIsSelected = (date) => {\n if (multi) {\n return localValue?.includes(date);\n } else {\n return localValue === date;\n }\n };\n\n const checkAvailable = (date) => {\n if (multi) {\n return date > formattedStartDate && date < endDate;\n } else {\n if (endDate) {\n return date >= formattedStartDate && date < endDate;\n }\n return date >= formattedMinDate;\n }\n };\n\n const handleMonthSkip = direction => {\n const newDate = direction === 'left' ? addMonths(currentDate, -1) : addMonths(currentDate, 1);\n if (isBefore(newDate, startOfMonth(new Date()))) return;\n setCurrentDate(newDate);\n };\n\n const handleConfirm = () => {\n onChange(localValue);\n dismiss();\n };\n\n return (\n <CalendarContainer>\n <StyledCalendarHeaderContainer>\n <StyledCalendarHeaderRow>\n <StyledCalendarHeaderMonth>\n <MonthLeft onClick={() => handleMonthSkip('left')}/>\n <MonthSelectorWrapper>\n <MonthSelector type=\"month\" disabled value={format(currentDate, 'yyyy-MM')} onChange={e => e.target.value && setCurrentDate(parse(e.target.value, 'yyyy-MM', new Date()))} />\n <FormattedMonthDisplay>\n {format(currentDate, 'MMM yyyy')}\n {/* <MonthSelectorIcon/> */}\n </FormattedMonthDisplay>\n </MonthSelectorWrapper>\n <MonthRight onClick={() => handleMonthSkip('right')}/>\n </StyledCalendarHeaderMonth>\n </StyledCalendarHeaderRow>\n {!!tipText &&\n <Tip>{tipText}</Tip>\n }\n <StyledCalendarHeaderDayRow>\n {Array.from({length: 7}, (_, index) => {\n const allPossibleDaysAreSelected = multi && Array.from({length: 7}, (_, index) => addWeeks(startOfWeek(startDate), index)).map(weekStart => format(addDays(weekStart, index), 'yyyy-MM-dd')).filter(date => date > startDate && date < endDate).every(date => localValue.includes(date));\n const dayFormat = window.innerWidth <= 768 ? 'EEEEE' : 'E';\n\n return (\n <StyledCalendarHeaderDay\n multi={multi}\n children={format(addDays(startOfWeek(currentDate), index), dayFormat)}\n onClick={() => handleHeaderClick(index)}\n isSelected={allPossibleDaysAreSelected}\n />\n );\n })}\n\n </StyledCalendarHeaderDayRow>\n </StyledCalendarHeaderContainer>\n <StyledCalendar>\n {weeksDates.map((weekStart, index) => (\n <StyledCalendarWeek>\n {Array.from({length: 7}, (_, dayIndex) => {\n const date = addDays(weekStart, dayIndex);\n const formattedDate = format(date, 'yyyy-MM-dd');\n const isAvailable = checkAvailable(formattedDate);\n\n return (\n <StyledMobileCalendarDay\n onClick={() => handleDateClick(formattedDate)}\n isPresent={isAvailable}\n isSelected={checkIsSelected(formattedDate)}\n children={getDate(date)}\n multi={multi && isAvailable}\n />\n );\n })}\n </StyledCalendarWeek>\n ))}\n </StyledCalendar>\n <ButtonContainer>\n <CancelButton mini white onClick={dismiss}>Cancel</CancelButton>\n <ConfirmButton mini onClick={handleConfirm}>Confirm</ConfirmButton>\n </ButtonContainer>\n </CalendarContainer>\n )\n}\n\n// Custom date picker component\nconst DatePicker = ({\n value,\n startDate,\n min,\n endDate,\n onChange,\n multi = false,\n disabled,\n placeholder=\"Select a date\",\n type='input',\n containerId='modal-container',\n tipText,\n}) => {\n const [showCalendar, setShowCalendar] = useState(false);\n const [calendarPosition, setCalendarPosition] = useState({}); // \"below\" or \"above\"\n const inputRef = useRef(null);\n const calendarRef = useRef(null);\n\n // Handle input focus to show calendar\n const handleFocus = () => {\n if (disabled) return;\n setShowCalendar(true);\n adjustCalendarPosition();\n inputRef?.current?.focus();\n };\n\n const adjustCalendarPosition = () => {\n const inputRect = inputRef?.current?.getBoundingClientRect();\n const modalContainer = document.getElementById(containerId);\n const containerRect = modalContainer?.getBoundingClientRect();\n const calendarRect = {width: 392, height: 307};// calendarRef?.current?.getBoundingClientRect();\n\n if (inputRect && containerRect && calendarRect) {\n const calendarHeight = calendarRect?.height;\n const spaceBelow = window.innerHeight - (inputRect.bottom + calendarRect.height)\n const spaceAbove = inputRect.top - containerRect.top;\n\n let position = {};\n\n if (window.innerWidth < 425) {\n setCalendarPosition({position: 'fixed', bottom: '0', left: '0'});\n return;\n }\n\n // top / bottom\n if (spaceBelow < calendarHeight && spaceAbove > calendarHeight) {\n position = {\n top: \"auto\",\n bottom: \"calc(100% + 4px)\",\n };\n } else {\n position = {\n top: \"calc(100% + 4px)\",\n bottom: \"auto\",\n };\n }\n\n // left / right\n if ((inputRect.left + calendarRect.width) > containerRect.right) {\n position.left = `calc(100% - ${calendarRect.width}px)`;\n }\n\n setCalendarPosition(position);\n }\n if (document.documentElement.clientWidth <= 768) {\n setCalendarPosition({top: 'auto', bottom: 'calc(100% + 4px)', left: 0});\n }\n };\n\n const formatInputValue = (value) => {\n try {\n return multi\n ? value?.length\n ? `${value?.length} Day${value.length === 1 ? '' : 's'} Off`\n : \"\"\n : value ? format(parse(value, 'yyyy-MM-dd', new Date()), 'MMM do, yyyy') : '';\n\n } catch (error) {\n return '';\n }\n };\n\n const handleKeyDown = (e) => {\n if (disabled) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setShowCalendar(true);\n adjustCalendarPosition();\n } else if (e.key === 'Escape') {\n setShowCalendar(false);\n }\n };\n\n\n // Close calendar when clicking outside\n useEffect(() => {\n const handleClickOutside = (e) => {\n if (\n inputRef?.current &&\n !inputRef?.current?.contains(e.target) &&\n !calendarRef?.current?.contains(e.target)\n ) {\n setShowCalendar(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [inputRef.current]);\n\n return (\n <Container onKeyDown={handleKeyDown}>\n {type === 'input'\n ? <InputWrapper>\n <StyledInput\n type=\"text\"\n ref={inputRef}\n tabIndex={0}\n value={formatInputValue(value)}\n onFocus={handleFocus}\n readOnly\n placeholder={placeholder}\n disabled={disabled}\n />\n <CalendarIcon/>\n </InputWrapper>\n : <InlineWrapper ref={inputRef} onClick={handleFocus} tabIndex={0}>\n <CalendarIconBare/>\n <InlineText>{formatInputValue(value)}</InlineText>\n </InlineWrapper>\n }\n {showCalendar && (\n <PickerWrapper\n ref={calendarRef}\n style={{\n position: \"absolute\",\n left: 0,\n ...calendarPosition,\n }}\n >\n <Picker\n startDate={startDate}\n endDate={endDate}\n value={value}\n onChange={onChange}\n multi={multi}\n min={min}\n dismiss={() => setShowCalendar(false)}\n tipText={tipText}\n />\n </PickerWrapper>\n )}\n </Container>\n );\n};\n\nexport default DatePicker;","import React from 'react';\nimport styled, {css} from 'styled-components';\nimport {format, parse} from 'date-fns';\n\nimport {H2, H4, Body3} from '@bootcamp/web/src/components/Typography/next';\n\nimport {Dismiss} from '@styled-icons/fluentui-system-filled/Dismiss';\nimport {Clock} from '@styled-icons/fluentui-system-filled/Clock';\nimport {Info} from '@styled-icons/fluentui-system-filled/Info';\nimport {Checkmark} from '@styled-icons/fluentui-system-filled/Checkmark';\n\nimport {TargetArrow} from '@styled-icons/fluentui-system-filled/TargetArrow';\nimport {ChevronLeft} from '@styled-icons/fluentui-system-filled/ChevronLeft';\nimport {WeatherSunny} from '@styled-icons/fluentui-system-filled/WeatherSunny';\nimport {ReactComponent as Rocket} from '@bootcamp/shared/src/assets/svg/rocket.svg';\nimport {RoundButton} from '@bootcamp/web/src/components/UI';\nimport {Wand} from '@styled-icons/fluentui-system-filled/Wand';\nimport {Warning} from '@styled-icons/fluentui-system-filled/Warning';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n background: white;\n border-radius: 8px;\n max-width: 857px;\n min-height: 736px;\n width: calc(100% - 24px);\n position: relative;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n position: absolute;\n padding-top: 48px;\n background: transparent;\n top: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n max-height: none;\n min-height: auto;\n border-bottom-right-radius: 0px;\n border-bottom-left-radius: 0px;\n }\n `;\nexport const Header = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px 24px;\n border-bottom: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n background: white;\n border-radius: 8px 8px 0px 0px;\n }\n`;\nexport const Wrapper = styled.div`\n display: flex;\n flex: 1;\n width: 100%;\n padding: 0;\n position: relative;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n background: white;\n flex-direction: column;\n overflow: auto;\n }\n`;\nexport const HeaderText = styled(H4)`\n\n`;\nexport const Header2Text = styled(H2)`\n\n`;\nexport const BackIcon = styled(ChevronLeft)`\n position: absolute;\n left: 24px;\n color: #2F3037;\n width: 16px;\n height: 16px;\n cursor: pointer;\n`;\nexport const CloseIcon = styled(Dismiss)`\n position: absolute;\n right: 24px;\n color: black;\n width: 16px;\n height: 16px;\n cursor: pointer;\n`;\nexport const Chiclet = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px 8px;\n height: 24px;\n border-radius: 8px;\n background: ${({theme, color}) => theme.colors.assignmentColorPalette[color || 'grey'].light};\n color: ${({theme, color}) => theme.colors.assignmentColorPalette[color || 'grey'].dark};\n border: ${({theme, color}) => `1px solid ${theme.colors.assignmentColorPalette[color || 'grey'].dark}1a`};\n font-family: proxima-nova;\n font-size: 12px;\n font-style: normal;\n font-weight: 400;\n line-height: 100%;\n`;\nexport const ButtonArea = styled.div`\n margin-top: auto;\n`;\nexport const Panel = styled.div`\n padding: 0 24px;\n flex: 1;\n`;\n\nexport const ConfirmationPanel = styled(Panel)`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 32px 48px;\n`;\n\nexport const Left = styled(Panel)`\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 0 24px;\n }\n`;\nexport const Right = styled(Panel)`\n display: flex;\n flex-direction: column;\n background: ${({theme}) => theme.colors.backgroundPalette.secondary};\n padding: 24px;\n border-left: 1px solid rgb(237, 237, 240);\n border-bottom-right-radius: 8px;\n`;\nexport const RightSection = styled.div`\n display: flex;\n background: white;\n border: 1px solid ${({theme}) => theme.colors.borderPalette.primary};\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 24px;\n`;\nexport const CreateAreaText = styled(Body3)`\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n text-align: center;\n margin-top: 12px;\n`;\nexport const CreateButton = styled(RoundButton)`\n width: 100%;\n`;\nexport const Timeline = styled.div`\n display: flex;\n flex-direction: column;\n align-self: stretch;\n justify-content: space-between;\n margin-right: 4px;\n`;\nexport const Line = styled.div`\n flex: 1;\n width: 1px;\n border: 1px dashed ${({theme}) => theme.colors.brandPalette.royal.default};\n margin: 8px auto;\n`;\nexport const TimelineArea = styled.div`\n width: 100%;\n`;\nexport const TimelineAreaText = styled.div`\n margin-left: 8px;\n`;\nexport const TimelineAreaTextHeading = styled(Body3)`\n font-weight: 700;\n`;\nexport const TimelineAreaTextSubheading = styled(Body3)`\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n line-height: 100%;\n margin-top: 2px;\n`;\nexport const IconWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n background: ${({theme}) => theme.colors.brandPalette.royal.extraLight};\n border-radius: 8px;\n width: 40px;\n height: 40px;\n`;\nexport const StyledRocket = styled(Rocket)`\n width: 20px;\n height: 20px;\n color: ${({theme}) => theme.colors.brandPalette.royal.default};\n path {\n fill: ${({theme}) => theme.colors.brandPalette.royal.default};\n }\n`;\nexport const StyledWand = styled(Wand)`\n width: 20px;\n height: 20px;\n color: ${({theme}) => theme.colors.brandPalette.royal.default};\n path {\n fill: ${({theme}) => theme.colors.brandPalette.royal.default};\n }\n`;\nexport const StyledSun = styled(WeatherSunny)`\n width: 20px;\n height: 20px;\n color: ${({theme}) => theme.colors.brandPalette.royal.default};\n\n`;\nexport const StyledTarget = styled(TargetArrow)`\n width: 20px;\n height: 20px;\n color: ${({theme}) => theme.colors.brandPalette.royal.default};\n`;\n\nexport const EstimateList = styled.div`\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin: 32px 0px;\n`;\n\nexport const Estimate = styled.div`\n padding: 12px;\n background: ${({theme, color}) => color === 'orange'\n ? theme.colors.brandPalette.orange.light\n : color === 'grey'\n ? theme.colors.backgroundPalette.secondary\n : theme.colors.interfacePalette[color].light\n }80;\n border-radius: 8px;\n color: ${({theme, color}) => color === 'orange'\n ? theme.colors.brandPalette.orange.dark\n : color === 'grey'\n ? theme.colors.typographyPalette.secondary\n : theme.colors.interfacePalette[color].dark\n };\n\n border: 1px solid ${({theme, color}) => color === 'orange'\n ? theme.colors.brandPalette.orange.dark\n : color === 'grey'\n ? theme.colors.borderPalette.secondary\n : theme.colors.interfacePalette[color].dark\n }80;\n display: flex;\n flex-direction: row;\n align-items: ${({hideSubheading}) => hideSubheading ? 'center' : 'flex-start'};\n width: 100%;\n ${({theme, color}) => css`\n ${IconContent} {\n ${color === 'orange'\n ? `background: ${theme.colors.brandPalette.orange.light};`\n : color === 'grey'\n ? `background: ${theme.colors.typographyPalette.secondary};`\n : `background: ${theme.colors.interfacePalette[color].light};`}\n }\n `}\n`;\nexport const ClockIcon = styled(Clock)`\n width: 20px;\n height: 20px;\n`;\nexport const WarningIcon = styled(Warning)`\n width: 20px;\n height: 20px;\n`;\n\nexport const IconContent = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n margin-right: 12px;\n min-width: 40px;\n border-radius: 8px;\n`;\n\nexport const InfoIcon = styled(Info)`\n width: 20px;\n height: 20px;\n`;\nexport const EstimateHeading = styled(TimelineAreaTextHeading)`\n display: flex;\n align-items: center;\n font-weight: 700;\n`;\nexport const EstimateSubheading = styled(Body3)`\n color: ${({theme, color}) => color === 'orange'\n ? theme.colors.brandPalette.orange.dark\n : color === 'grey'\n ? theme.colors.typographyPalette.secondary\n : theme.colors.interfacePalette[color].dark\n };\n line-height: 130%;\n`;\n\nexport const EstimateContent = styled.div`\n width: auto;\n`;\nexport const Section = styled.div`\n padding: 24px 0;\n border-bottom: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n\n &:last-child {\n border-bottom: none;\n }\n`;\nexport const Heading = styled(H4)`\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 4px;\n`;\nexport const Subheading = styled(Body3)`\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n margin-bottom: 16px;\n`;\nexport const RightHeading = styled(H4)`\n margin-bottom: 16px;\n`;\n\nexport const EstimateSection = ({hoursPerDay, hideSubheading, rebalance}) => {\n if (!hoursPerDay) {\n return (\n <Estimate color=\"grey\" hideSubheading={hideSubheading}>\n {!hideSubheading && <EstimateSubheading color=\"grey\">Choose an exam date to see your Study Schedule timeline.</EstimateSubheading>}\n </Estimate>\n );\n };\n\n if (hoursPerDay <= 1) {\n return (\n <Estimate color=\"red\" hideSubheading={hideSubheading}>\n <IconContent><WarningIcon /></IconContent>\n <EstimateContent>\n <EstimateHeading>\n Less than {Math.ceil(hoursPerDay)} hour daily\n </EstimateHeading>\n {!hideSubheading && <EstimateSubheading color=\"red\">We recommend moving your exam date to an earlier time.</EstimateSubheading>}\n </EstimateContent>\n </Estimate>\n )\n }\n if (hoursPerDay >= 10) {\n return (\n <Estimate color=\"red\" hideSubheading={hideSubheading}>\n <IconContent><WarningIcon /></IconContent>\n <EstimateContent>\n <EstimateHeading>\n More than {Math.ceil(hoursPerDay)} hours daily\n </EstimateHeading>\n {!hideSubheading && <EstimateSubheading color=\"red\">We recommend pushing back your exam date.</EstimateSubheading>}\n </EstimateContent>\n </Estimate>\n )\n }\n return (\n <Estimate color=\"green\" hideSubheading={hideSubheading}>\n <IconContent><ClockIcon /></IconContent>\n <EstimateContent>\n <EstimateHeading>\n About {Math.ceil(hoursPerDay)} hours daily\n </EstimateHeading>\n {!hideSubheading && <EstimateSubheading color=\"green\">{rebalance ? `After rebalancing, you'll be studying about ${Math.ceil(hoursPerDay)} hours per day. You've got this!` : `That's a great start!`}</EstimateSubheading>}\n </EstimateContent>\n </Estimate>\n )\n};\n\nexport const TimelineComponent = ({\n startDate,\n rebalance,\n hoursPerDay,\n expirationBeforeExamDate,\n examDate,\n children,\n hideSubheading,\n startingExamDate,\n}) => {\n return (\n <RightSection>\n <Timeline>\n <IconWrapper>\n {rebalance ? <StyledWand /> : <StyledRocket/>}\n </IconWrapper>\n <Line/>\n <IconWrapper>\n <StyledTarget/>\n </IconWrapper>\n </Timeline>\n <TimelineArea>\n <TimelineAreaText>\n <TimelineAreaTextHeading>{format(parse(startDate, 'yyyy-MM-dd', new Date()), 'MMM do, yyyy')}</TimelineAreaTextHeading>\n <TimelineAreaTextSubheading>{rebalance ? 'Rebalance' : ''} Start Date</TimelineAreaTextSubheading>\n </TimelineAreaText>\n <EstimateList>\n <EstimateSection hoursPerDay={hoursPerDay} hideSubheading={hideSubheading} rebalance={rebalance} />\n {expirationBeforeExamDate && (\n <Estimate color=\"yellow\">\n <IconContent><InfoIcon /></IconContent>\n <EstimateContent>\n <EstimateHeading>\n Membership Ends before Exam Date\n </EstimateHeading>\n <EstimateSubheading color=\"yellow\">We'll continue scheduling your assignments up to your Exam Date. You can extend your membership any time!</EstimateSubheading>\n </EstimateContent>\n </Estimate>\n )}\n {children}\n </EstimateList>\n <TimelineAreaText>\n <TimelineAreaTextHeading>\n {examDate\n ? format(parse(examDate, 'yyyy-MM-dd', new Date()), 'MMM do, yyyy')\n : 'Select a date'\n }\n </TimelineAreaTextHeading>\n <TimelineAreaTextSubheading>{rebalance && startingExamDate != examDate ? 'New' : ''} Exam Date</TimelineAreaTextSubheading>\n </TimelineAreaText>\n </TimelineArea>\n </RightSection>\n );\n};\n","import React, {useState, useEffect} from 'react';\nimport styled from 'styled-components';\n\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {Body3, Body4, Label2} from '@bootcamp/web/src/components/Typography/next';\nimport {CustomInputWrapper, InputHoverWrapper} from '@bootcamp/web/src/bootcamps/pages/CreateTest/components/shared';\n\nimport DatePicker from '../DatePicker';\nimport {format, addDays, parse, differenceInDays} from 'date-fns';\nimport {ArrowRight} from '@styled-icons/fluentui-system-regular/ArrowRight';\nimport {\n Container,\n Header,\n Wrapper,\n HeaderText,\n CloseIcon,\n ButtonArea,\n Left,\n Right,\n TimelineComponent,\n CreateAreaText,\n CreateButton,\n StyledRocket,\n StyledWand,\n StyledSun,\n StyledTarget,\n Section,\n Heading,\n Subheading,\n RightHeading,\n} from './shared';\n\nconst DefaultExamDateContainer = styled.div`\n margin-top: 16px;\n`;\nconst StyledCustomInputWrapper = styled(CustomInputWrapper)`\n border-radius: 50%;\n border: 1px solid ${({theme, checked}) => checked ? theme.colors.brandPalette.royal.default : theme.colors.borderPalette.primary};\n background: white;\n`;\nconst InputWrapper = styled.div`\n`;\nconst Input = styled.input`\n margin: 0;\n opacity: 0;\n height: 0;\n width: 0;\n`;\nconst InputActive = styled.div`\n width: 12px;\n height: 12px;\n background: ${({theme}) => theme.colors.brandPalette.royal.default};\n border-radius: 50%;\n`;\nconst Label = styled(Label2)`\n cursor: pointer;\n margin-left: 8px;\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n`;\nconst PresetArea = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-top: 12px;\n cursor: pointer;\n`;\nconst Preset = styled.div`\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n border: 1px solid ${({theme, active}) => active ? theme.colors.brandPalette.royal.default : theme.colors.borderPalette.primary};\n background: ${({theme, active}) => active ? theme.colors.brandPalette.royal.extraLight : 'transparent'};\n border-radius: 8px;\n padding: 16px;\n width: 100%;\n justify-content: space-between;\n`;\nconst PresetName = styled(Body3)`\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n font-weight: 700;\n margin-right: 12px;\n`;\nconst PresetDuration = styled(Body3)`\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n`;\nconst PresetDetails = styled(Body4)`\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n`;\nconst PresetAreaWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 12px;\n`;\n\nconst presetsByBootcamp = {\n 'dat': [\n {name: '10 Week Schedule', duration: 70, details: 'We recommend starting with a 10 week schedule, you can always update this later!'},\n ],\n 'oat': [\n {name: '10 Week Schedule', duration: 70, details: 'We recommend starting with a 10 week schedule, you can always update this later!'},\n ],\n 'inbde': [\n {name: '45 Day Schedule', duration: 45},\n ],\n 'med-school': [\n {name: '9 Week Schedule', duration: 63},\n ],\n 'nclex': [\n {name: '1 Month Schedule', duration: 31},\n ]\n}\n\nconst Radio = ({value, onChange, labelText}) => {\n return (\n <InputWrapper onClick={onChange}>\n <InputHoverWrapper active={value}>\n <StyledCustomInputWrapper htmlFor={value} checked={value}>\n <Input type={'radio'} value={value} checked={value}/>\n {value && <InputActive/>}\n </StyledCustomInputWrapper>\n <Label>{labelText}</Label>\n </InputHoverWrapper>\n </InputWrapper>\n );\n};\n\nconst DefaultExamDate = ({\n onChange,\n bootcamp,\n value,\n startDate\n}) => {\n const [toggled, setToggled] = useState(false);\n const [selectedPreset, setSelectedPreset] = useState(0);\n\n const handleChange = (duration, index=0) => {\n const examDate = format(addDays(startDate, duration), 'yyyy-MM-dd');\n\n setSelectedPreset(index);\n onChange(examDate);\n };\n\n const handleToggle = () => {\n if (toggled) {\n setToggled(false);\n setSelectedPreset(0);\n onChange(null);\n } else {\n setToggled(true);\n setSelectedPreset(0);\n handleChange(presetsByBootcamp?.[bootcamp]?.[0]?.duration);\n }\n };\n\n useEffect(() => {\n if (!value) {\n setToggled(false);\n setSelectedPreset(0);\n }\n }, [value]);\n\n useEffect(() => {\n if (startDate >= value && toggled) {\n handleToggle();\n }\n }, [startDate]);\n\n return (\n <DefaultExamDateContainer>\n <Radio\n value={toggled}\n onChange={handleToggle}\n labelText={\"I don't have an exam date yet.\"} />\n {toggled &&\n <PresetAreaWrapper>\n <PresetArea>\n {presetsByBootcamp?.[bootcamp]?.map(({name, duration}, index) => (\n <Preset key={name} active={selectedPreset === index} onClick={() => handleChange(duration, index)}>\n <PresetName>{name}</PresetName>\n <PresetDuration>Ends on {format(addDays(startDate, duration), 'MMM do, yyyy')}</PresetDuration>\n </Preset>\n ))}\n </PresetArea>\n <PresetDetails>{presetsByBootcamp?.[bootcamp]?.[0]?.details}</PresetDetails>\n </PresetAreaWrapper>\n }\n </DefaultExamDateContainer>\n );\n};\n\nfunction validateExamDate(examDate) {\n try {\n const parsedExamDate = parse(examDate, 'yyyy-MM-dd', new Date());\n\n if (parsedExamDate < new Date()) {\n return null;\n }\n\n return examDate;\n } catch (error) {\n return null;\n }\n}\n\nexport const CreateModal = ({\n onCreate,\n onRebalance,\n totalHours=219,\n rebalance,\n startingExamDate=null,\n startingDaysOff=[],\n}) => {\n const [creating, setCreating] = useState(false);\n const today = format(new Date(), 'yyyy-MM-dd');\n const [startDate, setStartDate] = useState(today);\n const [examDate, setExamDate] = useState(validateExamDate(startingExamDate));\n const [daysOff, setDaysOff] = useState(startingDaysOff);\n const [defaultExamDate, setDefaultExamDate] = useState(null);\n\n const {modalDispatch} = useModalContext();\n const {userModel, bootcamp} = useUserDataContext();\n\n const daysBetweenStartAndExam = examDate && startDate\n ? differenceInDays(parse(examDate, 'yyyy-MM-dd', new Date()), parse(startDate, 'yyyy-MM-dd', new Date())) - daysOff.length\n : null;\n const hoursPerDay = daysBetweenStartAndExam ? totalHours / daysBetweenStartAndExam : null;\n const membershipExpirationDate = new Date(userModel.membershipExpirationDate * 1000);\n const isMembershipExpirationDateBeforeExamDate = membershipExpirationDate && examDate && membershipExpirationDate < parse(examDate, 'yyyy-MM-dd', new Date());\n\n const handleDateChange = (value, type) => {\n if (!value) return;\n\n try {\n const setters = {\n start: value=> {\n // reset exam date if it's before start date\n if (examDate && value >= examDate) setExamDate(null);\n\n setStartDate(value);\n\n // reset days off if changed\n setDaysOff([]);\n },\n exam: value => {\n setExamDate(value);\n\n // reset days off if changed\n setDaysOff([]);\n\n // reset default exam date if changed\n setDefaultExamDate(null);\n },\n daysOff: setDaysOff,\n };\n\n setters[type](value);\n\n } catch (error) {\n\n }\n };\n\n const handleDefaultExamDateChange = (value) => {\n setDefaultExamDate(value);\n setExamDate(value);\n };\n\n const handleCreate = async () => {\n if (rebalance) {\n return onCreate(startDate, daysOff, examDate, hoursPerDay);\n }\n\n setCreating(true);\n await onCreate(startDate, daysOff, examDate, hoursPerDay);\n modalDispatch({type: 'close'});\n };\n const disabled = !startDate || !examDate;\n return (\n <Container id={'modal-container'} onClick={e => e.stopPropagation()}>\n <Header>\n <HeaderText>{rebalance ? 'Rebalance' : 'Create'} Study Schedule</HeaderText>\n <CloseIcon onClick={() => modalDispatch({type: 'close'})}/>\n </Header>\n <Wrapper>\n <Left>\n <Section>\n <Heading>\n {rebalance ? <StyledWand /> : <StyledRocket/>}\n {rebalance ? 'Rebalance' : ''} Start Date\n </Heading>\n <Subheading>Your study schedule will {rebalance ? 'resume' : 'begin'} on this date.</Subheading>\n <DatePicker\n min={today}\n value={startDate}\n startDate={startDate}\n onChange={event => handleDateChange(event, 'start')}\n />\n </Section>\n <Section>\n <Heading>\n <StyledTarget/>\n Exam Date\n </Heading>\n <Subheading>Your exam date can be updated anytime.</Subheading>\n <DatePicker\n startDate={startDate}\n min={format(addDays(parse(startDate, 'yyyy-MM-dd', new Date()), 1), 'yyyy-MM-dd')}\n value={examDate}\n onChange={event => handleDateChange(event, 'exam')}\n />\n {!rebalance &&\n <DefaultExamDate\n onChange={handleDefaultExamDateChange}\n value={defaultExamDate}\n startDate={startDate}\n bootcamp={bootcamp}\n />\n }\n </Section>\n <Section>\n <Heading>\n <StyledSun/>\n Days Off\n </Heading>\n <Subheading>We recommend taking one day off per week.</Subheading>\n <DatePicker\n startDate={startDate}\n min={today}\n endDate={examDate}\n onChange={event => handleDateChange(event, 'daysOff')}\n value={daysOff}\n disabled={disabled}\n placeholder={'Select days off'}\n tipText={'Tip: Click a weekday (e.g., SUN) to mark all Sundays off!'}\n multi\n />\n </Section>\n </Left>\n <Right>\n <RightHeading style={rebalance && {marginBottom: '8px'}}>Your {rebalance ? 'Rebalanced' : ''} Schedule</RightHeading>\n {rebalance && <Subheading>Rebalancing distributes all your uncompleted assignments evenly up to your exam date.</Subheading>}\n <TimelineComponent\n startDate={startDate}\n rebalance={rebalance}\n hoursPerDay={hoursPerDay}\n expirationBeforeExamDate={isMembershipExpirationDateBeforeExamDate}\n examDate={examDate}\n startingExamDate={startingExamDate}\n />\n <ButtonArea>\n <CreateButton onClick={handleCreate} loading={creating} disabled={disabled}>\n {rebalance\n ? 'Rebalance'\n : 'Create Study Schedule'\n }\n <ArrowRight style={{marginLeft: '8px'}} size={20} color={disabled ? '#85868e' : \"white\"} />\n </CreateButton>\n <CreateAreaText>You can adjust your schedule anytime</CreateAreaText>\n </ButtonArea>\n </Right>\n </Wrapper>\n </Container>\n );\n};\n\nexport default CreateModal;","import React, {useState} from 'react';\nimport styled from 'styled-components';\n\nimport {H2, Body3} from '@bootcamp/web/src/components/Typography/next';\nimport {RoundButton} from '@bootcamp/web/src/components/UI';\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport CreateModal from './Modals/Create';\n\nimport {Element as FAQElement} from '@bootcamp/web/src/bootcamps/components/WebflowFAQs';\nimport {placeholderMap, testTitleMap, studyScheduleLinkMap} from '@bootcamp/web/src/bootcamps/pages/StudySchedule/components/shared';\nconst Container = styled.div`\n`;\nconst Wrapper = styled.div`\n background: white;\n border-radius: 8px;\n`;\nconst Hero = styled.div`\n padding: 32px 32px 12px;\n text-align: center;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n margin: auto;\n\n ${H2} {\n margin-bottom: 8px;\n }\n\n ${Body3} {\n margin-bottom: 16px;\n max-width: 725px;\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 24px 24px 12px;\n text-align: left;\n align-items: flex-start;\n\n ${H2} {\n margin-bottom: 4px;\n }\n }\n`;\nconst CalendarImageWrapper = styled.div`\n position: relative;\n padding-bottom: 32%;\n overflow: hidden;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding-bottom: 136%;\n }\n`;\nconst CalendarImage = styled.img`\n position: absolute;\n width: 100%;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n display: none;\n }\n`;\n\nconst CalendarImageMobile = styled(CalendarImage)`\n display: none;\n width: calc(100% + 24px);\n right: -16px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n display: block;\n }\n`;\nconst FAQHeader = styled(H2)`\n color: white;\n margin-top: 24px;\n margin-bottom: 16px;\n`;\n\nconst Create = ({onCreate, totalHours}) => {\n const {modalDispatch} = useModalContext();\n const [state, setState] = useState();\n const {searchUserInteractions, bootcamp} = useUserDataContext();\n const examDate = searchUserInteractions('testDate', null);\n const faqItems = [\n {\n title: \"Why should I use the study schedule generator?\",\n text: `\n Students who use a study schedule score higher than those that don’t. But PDF study schedules are rigid and annoying to use. So we took our proven ${testTitleMap[bootcamp]} study schedule PDF and turned it into an interactive customizable calendar!\n <ul>\n <li>Select your start and exam date, and the generator will create a personalized study schedule.</li>\n <li>Easily customize your schedule by adding days off, moving assignments, or changing your exam date.</li>\n <li>If you fall behind, click Rebalance and the generator will evenly distribute your overdue assignments to your exam date.</li>\n </ul>\n This tool will help you stay on track to ace your exam. Create a personalized schedule today and get started!\n `\n },\n {\n title: \"I already started the PDF schedule, how can I switch to the study schedule generator?\",\n text: `\n You can still use the study schedule generator even if you're partway through the PDF schedule!\n <ol>\n <li>Generate a schedule with today as your start date. </li>\n <li>Mark all the assignments you've already done as complete. </li>\n <li>Then click Rebalance, and the study schedule will evenly spread your remaining assignments up to your exam date.</li>\n </ol>\n `\n },\n {\n title: \"Is this the same as the PDF study schedule?\",\n text: `Yes. There is no difference in content, they both have the same assignments and the same order. We recommend using the study schedule generator so you can customize the schedule to your study dates and easily update it. You can view the original <a href='${studyScheduleLinkMap[bootcamp] || 'https://bootcamp.com/nclex/study-schedule'}' rel='noreferrer' target='_blank'>Study Schedule PDF here.</a>`\n },\n {\n title: \"What if I fall behind or need to change something?\",\n text: \"No worries, you can click Rebalance and the generator will evenly distribute your overdue assignments up to your exam date. You can move assignments, take days off, or change your exam date. You’re in full control.\"\n },\n ];\n\n const summonModal = () => {\n if (!totalHours) {\n window.alert('Sorry, there is a problem with our study schedule generator. Please reach out to our support team via the Intercom button, or try again later.');\n return;\n }\n modalDispatch({\n type: 'open',\n component: CreateModal,\n enableClickClose: true,\n componentProps: {\n onCreate,\n totalHours,\n startingExamDate: examDate,\n },\n modalContainerStyle: () => `\n overflow: hidden;\n `,\n })\n };\n return (\n <Container>\n <Wrapper>\n <Hero>\n <H2>Everything you need to stay on track.</H2>\n <Body3>We’ve taken our well-loved PDF schedules and turned them into personalized schedules that are made just for you. Whether you're months or weeks away, we simplify planning and help you stay on track.</Body3>\n <RoundButton onClick={summonModal} small>Create Study Schedule</RoundButton>\n </Hero>\n <CalendarImageWrapper>\n <CalendarImage src={placeholderMap[bootcamp]}/>\n <CalendarImageMobile src={placeholderMap['mobile']}/>\n </CalendarImageWrapper>\n </Wrapper>\n <FAQHeader>FAQs</FAQHeader>\n {faqItems.map(({title, text}) => <FAQElement title={title} text={text} />)}\n </Container>\n );\n};\n\nCreate.defaultProps = {};\nCreate.propTypes = {};\n\nexport default Create;","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgCaretDown(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 9,\n viewBox: \"0 0 24 9\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.5858 7.58579L4.87868 1.87868C4.31607 1.31607 3.55301 0.999999 2.75736 1L21.2426 0.999996C20.447 0.999996 19.6839 1.31607 19.1213 1.87868L13.4142 7.58578C12.6332 8.36683 11.3668 8.36683 10.5858 7.58579Z\",\n fill: \"white\",\n stroke: \"#EDEDF0\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCaretDown);\nexport default __webpack_public_path__ + \"static/media/caret-down.c4afc73d.svg\";\nexport { ForwardRef as ReactComponent };","import React, { createContext, useContext, useState } from \"react\";\n\nconst TooltipContext = createContext();\n\nexport const TooltipProvider = ({ children }) => {\n const [tooltipId, setTooltipId] = useState();\n\n return (\n <TooltipContext.Provider value={{tooltipId, setTooltipId}}>\n {children}\n </TooltipContext.Provider>\n );\n};\n\nexport const useTooltipState = () => useContext(TooltipContext);","import React, {useRef} from 'react';\n\nimport styled from 'styled-components';\n\nimport {Minus} from '@styled-icons/heroicons-outline/Minus';\nimport {Check} from '@styled-icons/heroicons-outline/Check';\n\nimport theme from '@bootcamp/shared/src/styles/theme';\n\n\nexport const Label = styled.label`\n cursor: ${({disabled}) => disabled ? 'not-allowed' : 'pointer'};\n opacity: ${({disabled}) => disabled ? '0.5' : '1'};\n padding: 6px 8px;\n`;\nexport const CustomInputWrapper = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${({size}) => size}px;\n height: ${({size}) => size}px;\n min-width: ${({size}) => size}px;\n min-height: ${({size}) => size}px;\n border-radius: 2px;\n cursor: ${({disabled}) => disabled ? 'not-allowed' : 'pointer'};\n border: 1px solid ${({theme, checked, disabled, locked}) => ((checked && !disabled) || locked) ? 'none' : theme.colors.neutralsPalette.lightGrey};\n background: ${({checked, disabled, theme, customTheme}) => disabled\n ? theme.colors.neutralsPalette.extraLight\n : checked && customTheme.default == '#EDEDF0' ? '#85868E'\n : checked\n ? customTheme.default || customTheme.dark\n : 'white'\n };\n`;\nexport const InputWrapper = styled.label`\n display: flex;\n /* align-items: center; */\n cursor: ${({disabled}) => disabled ? 'not-allowed' : 'pointer'};\n`;\nexport const InputCheck = styled(Check)`\n width: ${({size}) => size - 6}px;\n height: ${({size}) => size - 6}px;\n color: white;\n path {\n stroke-width: 4px;\n }\n`;\nexport const InputMinus = styled(Minus)`\n width: 12px;\n height: 12px;\n color: ${({customTheme}) => customTheme.default};\n path {\n stroke-width: 4px;\n }\n`;\nexport const InputHoverWrapper = styled.div`\n display: flex;\n\n &:hover {\n ${CustomInputWrapper} {\n background: ${({theme, active, disabled}) => !active && !disabled && theme.colors.neutralsPalette.light};\n }\n }\n`;\n\nexport const Input = styled.input`\n margin: 0;\n cursor: pointer;\n\n position: absolute;\n opacity: 0;\n height: 0;\n width: 0;\n`;\n\nexport const InputComponent = ({\n className,\n checked,\n name,\n free,\n value,\n loading,\n containerRef,\n locked,\n children,\n tabIndex=0,\n size=18,\n clickDisabled,\n onClick = () => {},\n customTheme=theme.colors.brandPalette.blue\n}) => {\n const ref = useRef();\n\n const disabled = loading || locked;\n\n const handleClick = (e) => {\n if (disabled || clickDisabled) return;\n e.stopPropagation();\n e.preventDefault();\n onClick(e);\n };\n\n const handleKeyDown = (e) => {\n if (disabled) return;\n if (e.key === 'Enter' || e.key === ' ') {\n handleClick(e);\n }\n };\n\n return (\n <InputWrapper\n className={className}\n ref={containerRef}\n htmlFor={value}\n disabled={disabled}\n onClick={handleClick}\n >\n <InputHoverWrapper active={checked} disabled={disabled} tabIndex={-1}>\n <CustomInputWrapper\n htmlFor={value}\n checked={checked}\n disabled={disabled}\n locked={locked}\n tabIndex={disabled ? -1 : tabIndex} // Make focusable if not disabled\n role=\"checkbox\" // Accessible role\n aria-checked={checked} // State of the checkbox\n onKeyDown={handleKeyDown} // Handle keyboard interactions\n size={size}\n customTheme={customTheme}\n >\n <Input\n ref={ref}\n id={value}\n type={'checkbox'}\n checked={checked}\n disabled={disabled}\n value={value}\n tabIndex={-1}\n />\n {!!checked && <InputCheck data-input-element size={size}/>}\n </CustomInputWrapper>\n {children}\n </InputHoverWrapper>\n </InputWrapper>\n );\n};","import React, {useState, useEffect, useRef} from 'react';\nimport styled from 'styled-components';\n\nimport {Clock} from '@styled-icons/fluentui-system-regular/Clock';\n\nimport {Label3, Label4, H4, Body4} from '@bootcamp/web/src/components/Typography/next';\nimport {Dismiss} from '@styled-icons/fluentui-system-filled/Dismiss';\nimport {ReactComponent as CaretDown} from '@bootcamp/shared/src/assets/svg/caret-down.svg';\n\nimport {Chiclet} from './shared';\nimport {typeDetails, subjectDetails} from '../CalendarDay';\nimport {InputComponent} from '@bootcamp/web/src/components/UI/inputs';\n\nimport CreateTest from '@bootcamp/web/src/bootcamps/pages/CreateTest';\nimport {RoundButton} from '@bootcamp/web/src/components/UI';\nimport DatePicker, {CalendarIconBareWrapper} from '../DatePicker';\nimport {useTooltipState} from '../../contexts/Tooltip';\nimport { formatEstimatedTime } from '../../helpers';\n\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\n\n\n\nimport {format, parse} from 'date-fns';\nimport moment from 'moment';\nimport {Checkmark} from '@styled-icons/fluentui-system-filled/Checkmark';\nimport {Delete} from '@styled-icons/fluentui-system-regular/Delete';\nimport {Copy} from '@styled-icons/fluentui-system-regular/Copy';\nimport nanoid from 'nanoid';\n\nconst FloatingModalContainer = styled.div`\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n position: fixed;\n width: 100%;\n background: rgba(0, 0, 0, 0.5);\n z-index: 100000;\n }\n`;\nconst FloatingModalWrapper = styled.div`\n position: absolute;\n z-index: 100000;\n background: white;\n visibility: hidden;\n box-shadow: ${({theme}) => theme.elevation.shadow.low};\n padding: 16px;\n opacity: 1;\n width: 284px;\n border-radius: 8px;\n border: 1px solid ${({theme}) => theme.colors.borderPalette.primary};\n cursor: default;\n ${({theme}) => theme.mediaQueries.tablet} {\n width: 100%;\n bottom: 0;\n visibility: visible;\n left: 0;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n padding-bottom: 64px;\n }\n`;\nconst AssignmentTopHeader = styled.div`\n display: flex;\n align-items: flex-start;\n margin-bottom: 12px;\n gap: 4px;\n`;\nconst AssignmentModalHeader = styled.div`\n`;\nconst AssignmentModalTitle = styled(H4)`\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n text-wrap: pretty;\n cursor: text;\n`;\n\nconst CustomAssignmentModalTitle = styled(AssignmentModalTitle).attrs(props => ({as: 'input', autoFocus: true}))`\n border: none;\n outline: none;\n`;\n\nconst CustomAssignmentEstimatedTime = styled.input.attrs(props => ({type: 'number', inputmode: 'numeric', pattern: \"[0-9]*\", placeholder: 'Estimated time', min: 0, max: 60*8, step: 15}))`\n border: none;\n outline: none;\n padding: 0;\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n font-size: 14px;\n font-family: proxima-nova, sans-serif;\n background: transparent;\n width: 100%;\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: 16px;\n }\n`;\n\nconst AssignmentModalDescription = styled(Body4)`\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n font-size: 14px;\n line-height: 150%;\n margin-top: 12px;\n cursor: text;\n p {\n margin: 0;\n }\n`;\n\nconst AssignmentLinkButton = styled(RoundButton).attrs(props => ({full: true, small: true}))`\n margin-top: 12px;\n`;\n\nconst AssignmentModalDetails = styled.div`\n display: flex;\n flex-direction: column;\n padding-top: 8px;\n border-collapse: collapse;\n`;\n\nconst AssignmentModalDetailsRow = styled.div`\n position: relative;\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 36px;\n padding: 4px;\n gap: 8px;\n border: 1px solid transparent;\n cursor: pointer;\n border-top: 1px solid ${({theme}) => theme.colors.borderPalette.primary};\n font-family: proxima-nova, sans-serif;\n font-size: 14px;\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n &:last-child {\n border-bottom: 1px solid ${({theme}) => theme.colors.borderPalette.primary};\n }\n\n svg {\n z-index: 1;\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n }\n\n &:hover {\n background: ${({theme}) => theme.colors.backgroundPalette.secondary};\n\n ${CalendarIconBareWrapper} {\n background: ${({theme}) => theme.colors.neutralsPalette.light};\n }\n }\n ${({theme}) => theme.mediaQueries.tablet} {\n height: 42px;\n }\n`;\nconst StyledClock = styled(Clock)`\n width: 14px;\n height: 14px;\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n margin-right: 4px;\n`;\nconst DeleteIcon = styled(Delete)`\n width: 16px;\n height: 16px;\n color: ${({theme}) => theme.colors.interfacePalette.red.default};\n cursor: pointer;\n margin-left: auto;\n margin-right: 16px;\n`;\nconst CopyIcon = styled(Copy)`\n width: 16px;\n height: 16px;\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n cursor: pointer;\n margin-right: 16px;\n`;\n\nconst CloseIcon = styled(Dismiss)`\n width: 16px;\n height: 16px;\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n cursor: pointer;\n ${({solo}) => solo && `\n margin-left: auto;\n `}\n`;\nconst StyledChiclet = styled(Chiclet)`\n padding: 4px 8px;\n`;\nconst DurationChiclet = styled(StyledChiclet)`\n background: white;\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n border: 1px solid ${({theme}) => theme.colors.borderPalette.primary};\n`;\nconst DetailRowText = styled(Label3)`\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n font-weight: 400;\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: 16px;\n }\n`;\n\nconst Indicator = styled(CaretDown)`\n position: absolute;\n width: 24px;\n height: 24px;\n bottom: -16px;\n left: calc(50% - 12px);\n`;\n\nconst CheckboxWrapper = styled.div`\n padding: 3px;\n`;\n\nconst Checkbox = styled(InputComponent)`\n svg {\n color: white;\n }\n`;\nconst SubjectText = styled(Label4)`\n font-size: 14px;\n color: ${({theme, palette}) => !palette ? '#85868E' : theme.colors.assignmentColorPalette[palette]?.dark};\n margin-top: 8px;\n`;\n\nconst FloatingModal = ({children, onCloseCallback}) => {\n const {tooltipId, setTooltipId} = useTooltipState();\n const [modalStyle, setModalStyle] = useState({});\n const [indicatorStyle, setIndicatorStyle] = useState({});\n const modalRef = useRef();\n const parentRef = useRef();\n\n const calculatePosition = () => {\n const SPACING = 10;\n if (!document.getElementById(\"calendar-container\")) {\n return;\n };\n\n if (parentRef.current && modalRef.current) {\n const parentRect = parentRef.current.getBoundingClientRect();\n const modalWidth = modalRef.current.offsetWidth;\n const modalHeight = modalRef.current.offsetHeight;\n\n const calendarContainer = document.getElementById(\"calendar-container\");\n const calendarRect = calendarContainer.getBoundingClientRect();\n\n let modalStyleUpdate = {};\n let indicatorStyleUpdate = {};\n\n // Adjusted positions relative to calendar-container bounds\n const topSpace = parentRect.top - Math.max(72, calendarRect.top); // Space above parent\n\n // Try positioning above the parent\n if (topSpace >= modalHeight + SPACING) {\n modalStyleUpdate.bottom = `calc(100% + ${SPACING}px)`;\n modalStyleUpdate.left = `-${(modalWidth - parentRect.width) / 2}px`;\n }\n // If no space above, position below\n else {\n modalStyleUpdate.top = `calc(100% + ${SPACING}px)`;\n modalStyleUpdate.left = `-${(modalWidth - parentRect.width) / 2}px`;\n\n indicatorStyleUpdate.transform = \"rotate(180deg)\";\n indicatorStyleUpdate.top = \"-16px\";\n }\n\n // left / right positioning\n if ((parentRect.right + ((modalWidth - parentRect.width) / 2)) > calendarRect.right) {\n modalStyleUpdate.left = \"auto\";\n modalStyleUpdate.right = 0; // Align modal's right edge with parent's right edge\n\n indicatorStyleUpdate.left = \"auto\";\n indicatorStyleUpdate.right = (parentRect.width / 2) - 12;\n } else if ((parentRect.left - ((modalWidth - parentRect.width) / 2)) < calendarRect.left) {\n modalStyleUpdate.left = 0; // Align modal's left edge with the container edge\n modalStyleUpdate.right = \"auto\";\n\n indicatorStyleUpdate.right = \"auto\";\n indicatorStyleUpdate.left = (parentRect.width / 2) - 12;\n }\n\n\n modalStyleUpdate.visibility = \"visible\";\n\n setModalStyle(modalStyleUpdate);\n setIndicatorStyle(indicatorStyleUpdate);\n }\n };\n\n const handleResize = () => setTooltipId(null);\n\n const handleClickOutside = (event) => {\n if (modalRef.current && !modalRef.current.contains(event.target)) {\n setTooltipId(null);\n onCloseCallback && onCloseCallback();\n }\n };\n\n const handleContainerScroll = () => {\n // placeholder for sticky modal\n calculatePosition();\n };\n\n useEffect(() => {\n const pageContainer = document.getElementById(\"page-container\");\n\n calculatePosition();\n\n window.addEventListener(\"resize\", handleResize);\n window.addEventListener(\"mousedown\", handleClickOutside);\n\n pageContainer.addEventListener(\"scroll\", handleContainerScroll);\n\n const handleEscape = (event) => {\n if (event.key === \"Escape\") {\n handleClickOutside(event);\n }\n };\n window.addEventListener(\"keydown\", handleEscape);\n if (document.documentElement.clientWidth < 768) {\n pageContainer.style.overflow = \"hidden\";\n }\n return () => {\n window.removeEventListener(\"mousedown\", handleClickOutside);\n window.removeEventListener(\"resize\", handleResize);\n window.removeEventListener(\"keydown\", handleEscape);\n setTooltipId(null);\n pageContainer.removeEventListener(\"scroll\", handleContainerScroll);\n pageContainer.style.overflow = \"auto\";\n };\n }, []);\n\n useEffect(() => {\n if (parentRef?.current && !['examDate'].includes(tooltipId)) {\n parentRef?.current?.focus();\n }\n }, [])\n\n return (\n <FloatingModalContainer key={tooltipId} ref={parentRef} tabIndex={0}>\n <FloatingModalWrapper ref={modalRef} style={modalStyle}>\n {children}\n <Indicator style={indicatorStyle}/>\n </FloatingModalWrapper>\n </FloatingModalContainer>\n )\n}\n\nconst SubjectSquare = styled.div`\n width: 20px;\n height: 20px;\n background-color: ${({theme, color}) => theme.colors.assignmentColorPalette[color]?.light};\n border: 1px solid ${({theme, color}) => theme.colors.assignmentColorPalette[color]?.dark}1a;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst SubjectSquareContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-start;\n gap: 8px;\n`;\n\n\nexport const CustomAssignmentModal = ({date, startDate, examDate, event, onInputClick, checked, updateEvent, updateAssignmentDate, createAssignmentOnDate}) => {\n const titleRef = useRef();\n const {setTooltipId} = useTooltipState();\n const [title, setTitle] = useState(event.title);\n const [estimatedTime, setEstimatedTime] = useState(event.estimatedTime);\n const [type, setType] = useState(event.type);\n const [complete, setComplete] = useState(event.complete);\n const {searchUserInteractions, bootcamp} = useUserDataContext();\n\n useEffect(() => {\n updateEvent(event.id, date, {...event, title, estimatedTime, type, complete}, false);\n }, [title, estimatedTime, type, complete]);\n\n const handleSave = async () => {\n await updateEvent(event.id, date, {...event, title, estimatedTime, type, complete}, true);\n setTooltipId(null);\n }\n const formattedDate = new Date(date).toISOString().split('T')[0];\n\n const handleDateChange = (updatedDate) => {\n if (updatedDate === formattedDate) return;\n updateAssignmentDate(event.id, formattedDate, updatedDate);\n };\n useEffect(() => {\n if (titleRef?.current) {\n setTimeout(() => titleRef.current?.focus(), 1);\n }\n }, []);\n const handleKeyPress = (event) => {\n if (event.key === 'Enter') {\n handleSave();\n }\n };\n\n useEffect(() => {\n window.addEventListener('keypress', handleKeyPress);\n return () => {\n window.removeEventListener('keypress', handleKeyPress);\n };\n }, [handleKeyPress]);\n const useSubjectColors = searchUserInteractions('useSubjectColors', false) && ['inbde', 'dat', 'oat', 'med-school'].includes(bootcamp);\n const ChicletType = useSubjectColors ? DurationChiclet : StyledChiclet;\n const palette = typeDetails[event.type].color;\n const testDate = searchUserInteractions('testDate');\n\n const duplicateEvent = (event) => {\n const newEvent = {...event, id: nanoid(), complete: false};\n createAssignmentOnDate(formattedDate, newEvent, true);\n setTooltipId(null);\n }\n\n return (\n <FloatingModal onCloseCallback={handleSave}>\n <AssignmentTopHeader>\n <ChicletType color={palette}>Custom</ChicletType>\n {event.estimatedTime > 0 ? <DurationChiclet>\n <StyledClock />\n {formatEstimatedTime(event.estimatedTime)}\n </DurationChiclet> : null}\n <DeleteIcon color=\"#E05E57\" size={16} onClick={() => updateEvent(event.id, date, null, true)} />\n <CopyIcon size={16} onClick={e => duplicateEvent(event)} />\n <CloseIcon onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setTooltipId(null);\n }} />\n </AssignmentTopHeader>\n <AssignmentModalHeader>\n <CustomAssignmentModalTitle ref={titleRef} value={title} autoFocus placeholder=\"New assignment\" onChange={e => setTitle(e.target.value)}/>\n </AssignmentModalHeader>\n <AssignmentModalDetails tabIndex={-1}>\n <AssignmentModalDetailsRow>\n <SubjectSquareContainer>\n {Object.keys(typeDetails).map((typeDetail) => (\n <SubjectSquare color={typeDetails[typeDetail].color} onClick={() => setType(typeDetail)}>\n {typeDetail === type && <Checkmark color=\"#2f3037\" size={12} />}\n </SubjectSquare>\n ))}\n </SubjectSquareContainer>\n </AssignmentModalDetailsRow>\n <AssignmentModalDetailsRow>\n <StyledClock style={{marginRight: 0, height: '20px', width: '20px', minWidth: '20px'}} />\n <CustomAssignmentEstimatedTime\n value={estimatedTime}\n onChange={(e) => e.target.value < 0 || e.target.value > 60*8 ? false : setEstimatedTime(e.target.value.replace('e', ''))}\n />\n <span style={{position: 'absolute', right: '10%', zIndex: '-1'}}>minutes</span>\n </AssignmentModalDetailsRow>\n <AssignmentModalDetailsRow>\n <DatePicker\n type={'inline'}\n value={formattedDate}\n startDate={startDate}\n min={startDate}\n endDate={testDate}\n onChange={handleDateChange}\n containerId={'calendar-container'}\n />\n </AssignmentModalDetailsRow>\n <AssignmentModalDetailsRow onClick={() => setComplete(!complete)}>\n <CheckboxWrapper>\n <Checkbox\n size={14}\n checked={complete}\n onClick={() => setComplete(!complete)}\n />\n </CheckboxWrapper>\n <DetailRowText tabIndex={-1}>Complete</DetailRowText>\n </AssignmentModalDetailsRow>\n </AssignmentModalDetails>\n <AssignmentLinkButton onClick={handleSave}>\n Save\n </AssignmentLinkButton>\n </FloatingModal>\n )\n}\n\nconst DeleteAssignmentText = styled(Label3)`\n color: ${({theme}) => theme.colors.interfacePalette.red.default};\n cursor: pointer;\n`;\n\nfunction getDefaultsFromURL(eventUrl, bootcamp) {\n try {\n const url = new URL(eventUrl);\n const params = new URLSearchParams(url.search);\n\n let defaults = {\n masteryLevelFallback: 'all',\n };\n\n const tutorMode = params.get('tutorMode');\n const timed = params.get('timed');\n const masteryLevel = params.get('masteryLevel');\n const questionCount = params.get('questionCount');\n const subjects = params.get('subjects');\n const type = params.get('type');\n const subject = params.get('subject');\n const masteryLevelFallback = params.get('masteryLevelFallback');\n\n if (tutorMode) defaults.tutorMode = tutorMode === 'true';\n if (timed) defaults.timed = timed === 'true';\n if (masteryLevel && ['all', 'untagged', 'learning', 'reviewing', 'mastered', 'bookmarked'].includes(masteryLevel)) defaults.masteryLevel = masteryLevel;\n if (questionCount && parseInt(questionCount) > 0 && parseInt(questionCount) <= 120) defaults.questionCount = parseInt(questionCount);\n if (subjects && typeof subjects === 'string') defaults.subjects = subjects?.split(',').map(subject => subject.trim());\n if (subject) defaults.subject = subject;\n if (type && bootcamp === 'med-school' && ['preclinical', 'bites', 'anatomy'].includes(type)) {\n defaults.type = type;\n }\n if (masteryLevelFallback && ['all', 'untagged', 'learning', 'reviewing', 'mastered', 'bookmarked'].includes(masteryLevelFallback)) defaults.masteryLevelFallback = masteryLevelFallback;\n return defaults;\n } catch (error) {\n return {};\n }\n}\nfunction getDefaultsFromTitle(eventTitle) {\n try {\n const parts = eventTitle.split(' ');\n\n let defaults = {};\n\n const count = parts.find(part => part.match(/\\d+/));\n const masteryLevel = parts.find(part => ['learning', 'reviewing'].includes(part.toLowerCase()));\n\n if (count) defaults.questionCount = parseInt(count);\n if (masteryLevel) defaults.masteryLevel = masteryLevel.toLowerCase();\n\n return defaults;\n } catch (error) {\n return {}\n }\n}\nfunction getCreateTestDefaults(event, bootcamp) {\n const {externalLink, title} = event;\n\n const defaults = externalLink?.match('create-test')\n ? getDefaultsFromURL(externalLink, bootcamp)\n : getDefaultsFromTitle(title);\n\n return defaults;\n}\n\nconst AssignmentModal = ({ date, startDate, event, updateCompleteStatus, onInputClick, checked, updateAssignmentDate}) => {\n const {searchUserInteractions, bootcamp} = useUserDataContext();\n const {setTooltipId} = useTooltipState();\n\n const testDate = searchUserInteractions('testDate');\n const formattedDate = new Date(date).toISOString().split('T')[0];\n\n const {modalDispatch} = useModalContext();\n\n const handleDateChange = (date) => {\n if (date === formattedDate) return;\n updateAssignmentDate(event.id, formattedDate, date);\n };\n\n const useSubjectColors = searchUserInteractions('useSubjectColors', false) && ['inbde', 'dat', 'oat', 'med-school'].includes(bootcamp);\n const ChicletType = useSubjectColors ? DurationChiclet : StyledChiclet;\n const palette = useSubjectColors ? subjectDetails[bootcamp][event.subject]?.color : '';\n\n const studySpeed = searchUserInteractions('studySpeed', 1);\n const estimatedTime = parseInt(event.estimatedTime || 0) * studySpeed;\n\n\n function handleCreateTestClick() {\n try {\n const defaults = getCreateTestDefaults(event, bootcamp);\n\n modalDispatch({\n type: 'open',\n component: CreateTest,\n componentProps: {defaults},\n enableClickClose: true,\n });\n } catch (error) {\n // console.log('error opening create test', error);\n }\n }\n\n const buttonProps = event.type === 'createTest'\n ? {onClick: handleCreateTestClick, children: 'Create Test'}\n : {href: event.externalLink, children: 'Go to Assignment', target: '_blank'};\n\n return (\n <FloatingModal>\n <AssignmentTopHeader>\n <ChicletType color={typeDetails[event.type].color}>{bootcamp === 'nclex' && event.type === 'practiceTest' ? 'Readiness Exam' : typeDetails[event.type].label}</ChicletType>\n {estimatedTime > 0 ? <DurationChiclet>\n <StyledClock />\n {formatEstimatedTime(estimatedTime)}\n </DurationChiclet> : null}\n <CloseIcon solo onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setTooltipId(null);\n }} />\n </AssignmentTopHeader>\n <AssignmentModalHeader>\n <AssignmentModalTitle>{event.title}</AssignmentModalTitle>\n {event?.subject && <SubjectText palette={palette}>{event.subject}</SubjectText>}\n {event?.description &&<AssignmentModalDescription dangerouslySetInnerHTML={{ __html: event.description }} />}\n </AssignmentModalHeader>\n <AssignmentModalDetails tabIndex={-1}>\n <AssignmentModalDetailsRow>\n <DatePicker\n type={'inline'}\n value={formattedDate}\n startDate={startDate}\n min={startDate}\n endDate={testDate}\n onChange={handleDateChange}\n containerId={'calendar-container'}\n />\n </AssignmentModalDetailsRow>\n <AssignmentModalDetailsRow onClick={onInputClick}>\n <CheckboxWrapper>\n <Checkbox\n size={14}\n checked={checked}\n onClick={onInputClick}\n />\n </CheckboxWrapper>\n <DetailRowText tabIndex={-1}>Complete</DetailRowText>\n </AssignmentModalDetailsRow>\n </AssignmentModalDetails>\n <AssignmentLinkButton {...buttonProps}/>\n </FloatingModal>\n );\n};\n\nexport default AssignmentModal;\n\nexport const ExamDateModal = () => {\n const {DEFAULT_USER_ID, bootcamp, saveUserInteraction, searchUserInteractions} = useUserDataContext();\n const examDate = searchUserInteractions(`testDate`, false);\n const today = moment().format('YYYY-MM-DD');\n\n return (\n <FloatingModal>\n <AssignmentModalHeader>\n <AssignmentModalTitle>Exam Date</AssignmentModalTitle>\n <AssignmentModalDescription>Your exam date is {moment(examDate).format('MMM D, YYYY')}. You can change your exam date at any time below:</AssignmentModalDescription>\n </AssignmentModalHeader>\n <AssignmentModalDetails tabIndex={-1}>\n <AssignmentModalDetailsRow>\n <DatePicker\n min={today}\n startDate={examDate}\n type={'inline'}\n value={examDate}\n onChange={(date) => saveUserInteraction('testDate', JSON.stringify(date))}\n containerId={'calendar-container'}\n />\n </AssignmentModalDetailsRow>\n </AssignmentModalDetails>\n </FloatingModal>\n )\n\n}\nexport const ExpirationDateModal = ({membershipExpirationDate}) => {\n const {DEFAULT_USER_ID, bootcamp, saveUserInteraction, searchUserInteractions} = useUserDataContext();\n const today = moment().format('YYYY-MM-DD');\n const formattedExpirationDate = moment(membershipExpirationDate).format('YYYY-MM-DD');\n return (\n <FloatingModal>\n <AssignmentModalHeader>\n <AssignmentModalTitle>Membership Ends</AssignmentModalTitle>\n <AssignmentModalDescription>Your Bootcamp membership is ending on {moment(membershipExpirationDate).format('MMM D, YYYY')}. You can extend your membership anytime by going to your Account:</AssignmentModalDescription>\n </AssignmentModalHeader>\n <AssignmentModalDetails tabIndex={-1}>\n <AssignmentModalDetailsRow>\n <DatePicker\n min={today}\n startDate={formattedExpirationDate}\n type={'inline'}\n value={formattedExpirationDate}\n onChange={(date) => false}\n containerId={'calendar-container'}\n disabled\n />\n </AssignmentModalDetailsRow>\n </AssignmentModalDetails>\n <AssignmentLinkButton href={`/${bootcamp}/account/memberships`} target=\"_blank\">\n Go to Account\n </AssignmentLinkButton>\n </FloatingModal>\n )\n\n}","import React, {useEffect, useState} from 'react';\nimport {format} from 'date-fns';\nimport {Droppable, Draggable} from 'react-beautiful-dnd';\nimport styled, {css} from 'styled-components';\n\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\n\nimport {TargetArrow} from '@styled-icons/fluentui-system-filled/TargetArrow';\nimport {WeatherSunny} from '@styled-icons/fluentui-system-filled/WeatherSunny';\nimport {Info} from '@styled-icons/fluentui-system-filled/Info';\nimport {Label2, Label3, Body4} from '@bootcamp/web/src/components/Typography/next';\nimport {useTooltipState} from '../contexts/Tooltip';\n\nimport {InputComponent, CustomInputWrapper} from '@bootcamp/web/src/components/UI/inputs';\n\nimport AssignmentModal, {ExamDateModal, ExpirationDateModal, CustomAssignmentModal} from './Modals/Assignment';\nimport {formatEstimatedTime} from '../helpers';\nimport theme from '@bootcamp/shared/src/styles/theme';\nimport nanoid from 'nanoid';\nimport {Add} from '@styled-icons/fluentui-system-filled/Add';\n\nconst AddAssignment = styled.div`\n cursor: pointer;\n background: #FAFAFA;\n border: 1px solid ${({theme}) => theme.colors.brandPalette.grey.default};\n border-radius: 4px;\n padding: 4px 0px 8px;\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n opacity: 0;\n transition: opacity .2s;\n ${({theme}) => theme.mediaQueries.tablet} {\n opacity: 1;\n height: 36px;\n }\n`\n\nconst CompletedAssignmentVisibilityToggle = styled.div`\n opacity: 0;\n cursor: pointer;\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n font-size: 12px;\n font-style: normal;\n font-weight: 400;\n line-height: 120%; /* 14.4px */\n margin-top: 30px;\n margin-bottom: 4px;\n user-select: none;\n transition: opacity .2s;\n ${({hoverDisabled}) => !hoverDisabled && css`\n &:hover {\n color: ${({theme}) => theme.colors.brandPalette.royal.default};\n }\n `}\n ${({theme}) => theme.mediaQueries.tablet} {\n opacity: 1;\n }\n`\n\nconst CalendarDayContainer = styled.div`\n background: ${({theme, isExamDate, inactive}) => inactive ? 'rgb(250,250,250)' : isExamDate ? theme.colors.interfacePalette.red.light : theme.colors.neutralsPalette.white};\n display: flex;\n flex-direction: column;\n padding: 4px;\n border-left: ${({theme}) => `1px solid ${theme.colors.neutralsPalette.light}`};\n &:first-child {\n border-left: none;\n }\n ${({dividerLineState, theme}) => ['top', 'left'].includes(dividerLineState) ? css`\n border-top: 2px solid ${theme.colors.neutralsPalette.light};\n ${dividerLineState === 'left' && css`border-left: 3px solid ${theme.colors.neutralsPalette.light};`}\n ` : ['bottom'].includes(dividerLineState) ? css`border-bottom: 2px solid ${theme.colors.neutralsPalette.light};` : ''}\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 12px;\n }\n min-width: 0px;\n position: relative;\n &:hover {\n ${CompletedAssignmentVisibilityToggle} {\n opacity: 1;\n }\n ${AddAssignment} {\n opacity: 1;\n }\n\n }\n`;\n\nconst CalendarDayHeader = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n`\nconst CalendarDayHeaderNumber = styled(Label2)`\n color: ${({theme, inactive, current}) => inactive && !current ? theme.colors.typographyPalette.tertiary : current ? theme.colors.neutralsPalette.white : theme.colors.typographyPalette.primary};\n padding: 4px;\n ${({current}) => current && css`\n background: ${({theme}) => theme.colors.brandPalette.rose.default};\n border-radius: 4px;\n `}\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n ${({theme}) => theme.mediaQueries.tablet} {\n width: auto;\n height: auto;\n justify-content: flex-start;\n padding: 0px;\n font-weight: 700;\n }\n`;\n\nconst CalendarDayHeaderMonth = styled(Label3)`\n margin-left: 0;\n margin-right: auto;\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n font-style: italic;\n font-size: 16px;\n font-weight: 400;\n`;\n\nconst CalendarDayHeaderEstTime = styled(Label3)`\n margin-left: auto;\n margin-right: 0;\n font-weight: 400;\n color: ${({theme}) => theme.colors.typographyPalette.tertiary};\n`;\n\nconst CalendarDayEventList = styled.div`\n display: flex;\n flex-direction: column;\n padding-top: 2px;\n gap: ${({theme}) => theme.layouts.spacing.xs};\n flex: 1;\n min-height: 100px;\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 8px 0px;\n }\n`;\n\nconst CalendarDayOutline = styled.div`\n outline: ${({theme, isDraggingOver}) => isDraggingOver ? `2px dotted ${theme.colors.brandPalette.royal.default}` : `none`};\n border-radius: 4px;\n display: flex;\n flex-direction: column;\n height: 100%;\n`;\n\nconst CalendarDayEvent = styled.div`\n position: relative;\n background: ${({theme, color}) => theme.colors.assignmentColorPalette[color || 'grey'].light};\n color: ${({theme, color}) => theme.colors.assignmentColorPalette[color || 'grey'].dark};\n border: ${({theme, color}) => `1px solid ${theme.colors.assignmentColorPalette[color || 'grey'].dark}1a`};\n border-radius: 4px;\n padding: 4px 4px 8px;\n display: flex;\n gap: 4px;\n flex-direction: column;\n align-items: flex-start;\n cursor: ${({isDragging}) => isDragging ? 'pointer' : 'pointer'} !important;\n input[type=\"checkbox\"] {\n width: 14px;\n height: 14px;\n accent-color: ${({theme, color}) => theme.colors.assignmentColorPalette[color || 'grey'].dark};\n background: transparent;\n cursor: pointer;\n }\n\n width: 100%;\n font-size: 12px;\n font-weight: 400;\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: 14px;\n }\n ${({disabled}) => !disabled && css`\n &:hover {\n border: ${({theme, color}) => `1px solid ${theme.colors.assignmentColorPalette[color || 'grey'].default}14`};\n background: ${({theme, color}) => theme.colors.assignmentColorPalette[color || 'grey'].hover};\n }\n `}\n ${({complete}) => complete && css`\n background: ${({theme, color}) => theme.colors.assignmentColorPalette[color || 'grey'].light}40;\n color: ${({theme, color}) => theme.colors.assignmentColorPalette[color || 'grey'].dark}40;\n input[type=\"checkbox\"] {\n accent-color: ${({theme, color}) => theme.colors.assignmentColorPalette[color || 'grey'].dark}40;\n }\n text-decoration: line-through;\n &:hover {\n border: ${({theme, color}) => `1px solid ${theme.colors.assignmentColorPalette[color || 'grey'].default}1a`};\n background: ${({theme, color}) => theme.colors.assignmentColorPalette[color || 'grey'].light}40;\n }\n `}\n`;\nconst CalendarDayEventWrapper = styled.div`\n position: relative;\n`;\nconst CalendarDayEventText= styled.div`\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n text-wrap: pretty;\n overflow: hidden;\n width: 100%;\n gap: 6px;\n ${({shortened}) => shortened && css`\n align-items: center;\n\n span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n `}\n\n ${({hasTitle}) => !hasTitle && css`\n span {\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n }\n `}\n`;\n\nexport const typeDetails = {\n custom: {\n color: 'grey',\n label: 'Custom',\n },\n qbank: {\n color: 'blue',\n label: 'Qbank',\n },\n bites: {\n color: 'orange',\n label: 'Bites',\n },\n createTest: {\n color: 'violet',\n label: 'Create Test',\n },\n resource: {\n color: 'indigo',\n label: 'Resource',\n },\n video: {\n color: 'teal',\n label: 'Video',\n },\n practiceTest: {\n color: 'red',\n label: 'Practice Test',\n },\n}\n\nexport const subjectDetails = {\n dat: {\n Biology: {\n color: 'blue',\n label: 'Biology',\n },\n \"General Chemistry\": {\n color: 'teal',\n label: 'General Chemistry',\n },\n \"Organic Chemistry\": {\n color: 'orange',\n label: 'Organic Chemistry',\n },\n \"Perceptual Ability\": {\n color: 'violet',\n label: 'Perceptual Ability',\n },\n \"Quantitative Reasoning\": {\n color: 'indigo',\n label: 'Quantitative Reasoning',\n },\n \"Reading Comprehension\": {\n color: 'fuschia',\n label: 'Reading Comprehension',\n },\n },\n oat: {\n Biology: {\n color: 'blue',\n label: 'Biology',\n },\n \"General Chemistry\": {\n color: 'teal',\n label: 'General Chemistry',\n },\n \"Organic Chemistry\": {\n color: 'orange',\n label: 'Organic Chemistry',\n },\n \"Physics\": {\n color: 'violet',\n label: 'Physics',\n },\n \"Quantitative Reasoning\": {\n color: 'indigo',\n label: 'Quantitative Reasoning',\n },\n \"Reading Comprehension\": {\n color: 'fuschia',\n label: 'Reading Comprehension',\n },\n },\n nclex: {},\n \"med-school\": {\n Gastroenterology: {\n color: 'honey',\n label: 'Gastroenterology',\n },\n Nephrology: {\n color: 'sienna',\n label: 'Nephrology',\n },\n Genetics: {\n color: 'crimson',\n label: 'Genetics',\n },\n Biostatistics: {\n color: 'magenta',\n label: 'Biostatistics',\n },\n Neurology: {\n color: 'lilac',\n label: 'Neurology',\n },\n \"Public Health Sciences\": {\n color: 'periwinkle',\n label: 'Public Health Sciences',\n },\n Cardiology: {\n color: 'plum',\n label: 'Cardiology',\n },\n Pharmacology: {\n color: 'mocha',\n label: 'Pharmacology',\n },\n 'Pharmacology (Principles)': {\n color: 'mocha',\n label: 'Pharmacology (Principles)',\n },\n Psychiatry: {\n color: 'thyme',\n label: 'Psychiatry',\n },\n Endocrinology: {\n color: 'olive',\n label: 'Endocrinology',\n },\n Pulmonology: {\n color: 'moss',\n label: 'Pulmonology',\n },\n 'Hematology & Oncology': {\n color: 'fern',\n label: 'Hematology & Oncology',\n },\n Immunology: {\n color: 'sage',\n label: 'Immunology',\n },\n Reproduction: {\n color: 'mint',\n label: 'Reproduction',\n },\n Biochemistry: {\n color: 'aqua',\n label: 'Biochemistry',\n },\n Microbiology: {\n color: 'denim',\n label: 'Microbiology',\n },\n Dermatology: {\n color: 'lavender',\n label: 'Dermatology',\n },\n Musculoskeletal: {\n color: 'steel',\n label: 'Musculoskeletal',\n },\n \"Pathology (Principles)\": {\n color: 'blue',\n label: 'Pathology (Principles)',\n },\n Osteopathy: {\n color: 'teal',\n label: 'Osteopathy',\n }\n },\n inbde: {\n \"Fields of Dentistry\": {\n color: 'blue',\n label: 'Fields of Dentistry',\n },\n \"Oral Pathology and Oral Radiology\": {\n color: 'teal',\n label: 'Oral Pathology and Oral Radiology',\n },\n \"Medicine\": {\n color: 'orange',\n label: 'Medicine',\n },\n \"Pharmacology\": {\n color: 'violet',\n label: 'Pharmacology',\n },\n \"Clinical Management\": {\n color: 'indigo',\n label: 'Clinical Management',\n },\n \"Anatomy and Physiology\": {\n color: 'fuschia',\n label: 'Anatomy and Physiology',\n },\n \"Research\": {\n color: 'cyan',\n label: 'Research',\n },\n \"Case Sets\": {\n color: 'green',\n label: 'Case Sets',\n },\n \"Simulation Exam\": {\n color: 'red',\n label: 'Simulation Exam',\n }\n },\n}\n\nconst ExamDayContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n margin: 4px 0px 24px;\n position: relative;\n`\n\nconst ExamDayText = styled(Label2)`\n color: ${({theme}) => theme.colors.interfacePalette.red.dark};\n`;\n\nconst ExamDayIcon = styled(TargetArrow)`\n color: ${({theme}) => theme.colors.interfacePalette.red.default};\n width: 32px;\n height: 32px;\n margin-bottom: 8px;\n cursor: pointer;\n`;\n\nconst RestDayText = styled(Label2)`\n color: ${({theme}) => theme.colors.typographyPalette.tertiary};\n`;\nconst RestDayIcon = styled(WeatherSunny)`\n color: ${({theme}) => theme.colors.typographyPalette.tertiary};\n width: 32px;\n height: 32px;\n margin-bottom: 8px;\n`;\n\nconst ExpirationDayContainer = styled(ExamDayContainer)`\n flex: 0;\n margin-top: 4px;\n cursor: pointer;\n`;\n\nconst ExpirationDayText = styled(Label3)`\n color: ${({theme}) => theme.colors.interfacePalette.red.default};\n font-size: 12px;\n font-weight: 400;\n`;\nconst ExpirationDayIcon = styled(Info)`\n color: ${({theme}) => theme.colors.interfacePalette.red.default};\n width: 14px;\n height: 14px;\n margin-bottom: 4px;\n`;\nconst EstimatedTimeText = styled(Body4)`\n opacity: 0.5;\n margin-left: auto;\n margin-top: 2px;\n line-height: 100%;\n font-size: 12px;\n`;\nconst StyledCheckbox = styled(InputComponent)`\n ${({checked}) => checked && css`\n opacity: .25;\n transition: opacity .2s;\n &:hover {\n opacity: 1;\n }\n `}\n ${({disabled}) => disabled && css`\n &:hover {\n ${CustomInputWrapper} {\n background: white; \n }\n }\n `}\n`;\n\n\nexport const AssignmentWithoutContext = ({event, provided, updateCompleteStatus, showEstimatedTime}) => {\n const {searchUserInteractions, bootcamp} = useUserDataContext();\n const useSubjectColors = searchUserInteractions('useSubjectColors', false) && ['dat', 'inbde', 'oat', 'med-school'].includes(bootcamp);\n const palette = useSubjectColors ? subjectDetails[bootcamp][event?.subject]?.color : typeDetails[event.type].color;\n const studySpeed = event?.custom ? 1 : searchUserInteractions('studySpeed', 1);\n const estimatedTime = parseInt(event.estimatedTime) * studySpeed;\n return (\n <CalendarDayEvent disabled={event.disabled} color={palette} ref={provided.innerRef} {...provided.draggableProps} {...provided.dragHandleProps} complete={event.complete}\n data-tooltip-id={event.id}\n data-tooltip-events={'click'}\n >\n <CalendarDayEventText shortened={!showEstimatedTime} title={event.title}>\n <StyledCheckbox\n key={event.complete}\n active={false}\n checked={event.complete}\n clickDisabled\n size={14}\n />\n <span>{event.title}</span>\n </CalendarDayEventText>\n {estimatedTime > 0 && showEstimatedTime &&\n <EstimatedTimeText>\n {formatEstimatedTime(estimatedTime)}\n </EstimatedTimeText>\n }\n </CalendarDayEvent>\n );\n}\n\nexport const Assignment = ({event, date, startDate, provided, updateCompleteStatus, updateAssignmentDate, updateEvent, showEstimatedTime, isDragging, createAssignmentOnDate}) => {\n const {tooltipId, setTooltipId} = useTooltipState();\n const [checked, setChecked] = useState(event.complete);\n \n useEffect(() => {\n if (event.complete !== checked) {\n setChecked(event.complete);\n }\n }, [event]);\n\n const handleInputClick = (e) => {\n e.preventDefault();\n e.stopPropagation();\n\n const updatedValue = !checked;\n\n setChecked(updatedValue);\n updateCompleteStatus(event.id, updatedValue);\n };\n\n const handleInputChange = (e) => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n const handleAssignmentClick = (e) => {\n if (e.metaKey) {\n e.preventDefault();\n e.stopPropagation();\n window.open(event.externalLink, '_blank');\n return;\n }\n setTooltipId(event.id)\n };\n const {searchUserInteractions, bootcamp} = useUserDataContext();\n const useSubjectColors = searchUserInteractions('useSubjectColors', false) && ['dat', 'inbde', 'oat', 'med-school'].includes(bootcamp);\n const palette = event?.custom ? typeDetails[event.type].color : useSubjectColors && !event?.subject && event?.title.match('Full Length') ? 'red' : useSubjectColors ? subjectDetails[bootcamp][event?.subject]?.color : typeDetails[event.type].color;\n const studySpeed = event?.custom ? 1 : searchUserInteractions('studySpeed', 1);\n const estimatedTime = parseInt(event.estimatedTime || 0) * studySpeed;\n\n return (\n <CalendarDayEventWrapper>\n <CalendarDayEvent color={palette} ref={provided.innerRef} {...provided.draggableProps} {...provided.dragHandleProps} complete={checked}\n data-tooltip-id={event.id}\n data-tooltip-events={'click'}\n onClick={handleAssignmentClick}\n isDragging={isDragging}\n >\n <CalendarDayEventText hasTitle={!!event?.title} shortened={!showEstimatedTime} title={!showEstimatedTime && event.title ? event.title : undefined}>\n <StyledCheckbox\n key={checked}\n checked={checked}\n onClick={handleInputClick}\n customTheme={theme.colors.assignmentColorPalette[palette] || theme.colors.assignmentColorPalette.grey}\n active={true}\n size={14}\n />\n <span>{event.title || 'New assignment'}</span>\n </CalendarDayEventText>\n {estimatedTime > 0 && showEstimatedTime &&\n <EstimatedTimeText>\n {formatEstimatedTime(estimatedTime)}\n </EstimatedTimeText>\n }\n </CalendarDayEvent>\n {event.id === tooltipId && !event?.custom &&\n <AssignmentModal\n date={date}\n startDate={startDate}\n event={event}\n checked={checked}\n onInputClick={handleInputClick}\n updateAssignmentDate={updateAssignmentDate}\n />\n }\n {event.id === tooltipId && event?.custom && (\n <CustomAssignmentModal\n date={date}\n startDate={startDate}\n event={event}\n checked={checked}\n onInputClick={handleInputClick}\n updateEvent={updateEvent}\n updateAssignmentDate={updateAssignmentDate}\n createAssignmentOnDate={createAssignmentOnDate}\n />\n )}\n </CalendarDayEventWrapper>\n );\n}\n\nexport const CalendarDayWithoutContext = ({events, hideCompletedAssignments, ...props}) => {\n return (\n <CalendarDayContainer style={{border: '1px solid #EDEDF0'}}>\n <CalendarDayHeader>\n <CalendarDayHeaderNumber>1</CalendarDayHeaderNumber>\n </CalendarDayHeader>\n {events.filter(event => hideCompletedAssignments ? !event.complete : true).length > 0 && <CalendarDayEventList style={{minHeight: 0}}>\n {events.filter(event => hideCompletedAssignments ? !event.complete : true).map((event, index) => (\n <AssignmentWithoutContext {...props} event={event} />\n ))}\n </CalendarDayEventList>}\n {hideCompletedAssignments && events?.filter(event => event.complete).length > 0 && (\n <CompletedAssignmentVisibilityToggle hoverDisabled style={{opacity: 1, marginTop: 46}}>\n {'Show'} {events?.filter(event => event.complete)?.length} completed\n </CompletedAssignmentVisibilityToggle>\n )}\n\n </CalendarDayContainer>\n )\n}\n\nconst CalendarDay = ({date, startDate, examDate, isPresent, events, isExamDate, isExpirationDate, updateCompleteStatus, updateAssignmentDate, updateEvent, createAssignmentOnDate, documentWidth, membershipExpirationDate, dividerLineState}) => {\n const {tooltipId, setTooltipId} = useTooltipState();\n const {searchUserInteractions, bootcamp} = useUserDataContext();\n const formattedDate = format(date, 'yyyy-MM-dd');\n const dayOfMonth = date.getDate();\n const isToday = date.toDateString() === new Date().toDateString();\n const showTimeInAssignment = !!searchUserInteractions('showTimeInAssignment', 1);\n const hideCompletedAssignments = searchUserInteractions('hideCompletedAssignments', false);\n const [showingHiddenAssignments, setShowingHiddenAssignments] = useState(false);\n const studySpeed = searchUserInteractions('studySpeed', 1);\n const estTime = events\n ?.filter(event => !event.complete)\n ?.reduce((acc, event) => acc + (parseInt(event.estimatedTime || 0) * (event?.custom ? 1 : studySpeed)), 0) || 0;\n\n const formattedEstTime = formatEstimatedTime(estTime);\n\n if ((formattedDate > examDate || !isPresent) && (events === undefined || events.length === 0)) {\n return (\n <CalendarDayContainer inactive key={date}>\n <CalendarDayHeader>\n <CalendarDayHeaderNumber inactive>{dayOfMonth}</CalendarDayHeaderNumber>\n </CalendarDayHeader>\n <CalendarDayEventList />\n </CalendarDayContainer>\n );\n }\n\n const header = documentWidth <= 768 ? (\n <CalendarDayHeader>\n <CalendarDayHeaderNumber>{isToday ? 'Today' : format(date, 'E')}, {format(date, 'MMM d')}</CalendarDayHeaderNumber>\n {/* {dayOfMonth === 1 && <CalendarDayHeaderMonth>{format(date, 'MMM')}</CalendarDayHeaderMonth>} */}\n {formattedEstTime != '0h' && <CalendarDayHeaderEstTime estimatedTime={estTime} children={formattedEstTime} />}\n </CalendarDayHeader>\n ) : (\n <CalendarDayHeader>\n <CalendarDayHeaderNumber inactive={!isPresent} current={isToday}>{dayOfMonth}</CalendarDayHeaderNumber>\n {dayOfMonth === 1 && <CalendarDayHeaderMonth>{format(date, 'MMM')}</CalendarDayHeaderMonth>}\n {formattedEstTime !== '0h' && <CalendarDayHeaderEstTime estimatedTime={estTime} children={formattedEstTime} />}\n </CalendarDayHeader>\n )\n const ExpirationDay = () => (\n <ExpirationDayContainer onClick={() => {\n setTooltipId('expirationDate');\n }}>\n <ExpirationDayIcon />\n <ExpirationDayText>Membership Ends</ExpirationDayText>\n </ExpirationDayContainer>\n );\n\n const AddAssignmentSection = !isExamDate && (\n <AddAssignment onClick={() => {\n const newEvent = {\n title: '',\n estimatedTime: 15,\n type: 'custom',\n id: nanoid(),\n bootcamp,\n subject: null,\n externalLink: null,\n description: null,\n complete: false,\n custom: true\n }\n createAssignmentOnDate(formattedDate, newEvent);\n setTooltipId(newEvent.id);\n }}>\n <Add size={14} />\n </AddAssignment>\n )\n\n\n if (!events?.length && isPresent && !isExamDate) {\n return (\n <Droppable droppableId={formattedDate}>\n {(provided, snapshot) => (\n <CalendarDayContainer key={date} dividerLineState={dividerLineState}>\n {\n tooltipId === 'expirationDate' && isExpirationDate &&\n <ExpirationDateModal membershipExpirationDate={membershipExpirationDate} />\n }\n <CalendarDayOutline isDraggingOver={snapshot.isDraggingOver}>\n <CalendarDayHeader>\n {header}\n </CalendarDayHeader>\n {isExpirationDate && <ExpirationDay />}\n <CalendarDayEventList ref={provided.innerRef} {...provided.droppableProps}>\n {provided.placeholder}\n {!snapshot.isDraggingOver && <ExamDayContainer style={{justifyContent: 'flex-start'}}>\n <RestDayIcon />\n <RestDayText>Day Off</RestDayText>\n </ExamDayContainer>}\n {AddAssignmentSection}\n </CalendarDayEventList>\n </CalendarDayOutline>\n </CalendarDayContainer>\n )}\n </Droppable>\n );\n }\n return (\n <Droppable droppableId={formattedDate}>\n {(provided, snapshot) => (\n <CalendarDayContainer key={date} isExamDate={isExamDate} className={format(date, 'yyyy-MM')} dividerLineState={dividerLineState}>\n {tooltipId === 'examDate' && isExamDate &&\n <ExamDateModal />\n }\n {\n tooltipId === 'expirationDate' && isExpirationDate &&\n <ExpirationDateModal membershipExpirationDate={membershipExpirationDate} />\n }\n <CalendarDayOutline isDraggingOver={snapshot.isDraggingOver}>\n {header}\n {isExpirationDate && <ExpirationDay />}\n {isExamDate && (\n <ExamDayContainer onClick={() => setTooltipId('examDate')}>\n <ExamDayIcon />\n <ExamDayText>\n Exam Day\n </ExamDayText>\n </ExamDayContainer>\n )}\n <CalendarDayEventList ref={provided.innerRef} {...provided.droppableProps} >\n {events?.filter(event => hideCompletedAssignments && !showingHiddenAssignments ? !event.complete : true).map((event, index) => (\n <Draggable isDragDisabled={documentWidth <= 768} key={event.id} draggableId={event.id.toString()} index={index}>\n {(provided, dragProps) => {\n return (\n <Assignment\n event={event}\n provided={provided}\n updateCompleteStatus={updateCompleteStatus}\n updateAssignmentDate={updateAssignmentDate}\n updateEvent={updateEvent}\n showEstimatedTime={showTimeInAssignment}\n date={date}\n isDragging={dragProps.isDragging}\n startDate={startDate} \n createAssignmentOnDate={createAssignmentOnDate}\n />\n );\n }}\n </Draggable>\n ))}\n {provided.placeholder}\n {AddAssignmentSection}\n </CalendarDayEventList>\n {hideCompletedAssignments && events?.filter(event => event.complete).length > 0 && (\n <CompletedAssignmentVisibilityToggle onClick={() => setShowingHiddenAssignments(!showingHiddenAssignments)}>\n {showingHiddenAssignments ? 'Hide' : 'Show'} {events?.filter(event => event.complete)?.length} completed\n </CompletedAssignmentVisibilityToggle>\n )}\n </CalendarDayOutline>\n </CalendarDayContainer>\n )}\n </Droppable>\n );\n}\n\n\nexport default CalendarDay;","import React, {useState} from 'react';\nimport styled from 'styled-components';\n\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {H4, Body3} from '@bootcamp/web/src/components/Typography/next';\nimport {Container, Chiclet, Header, Wrapper, HeaderText, BackIcon, CloseIcon, ButtonArea, Panel} from './shared';\nimport {ArrowUpRight} from '@styled-icons/fluentui-system-filled/ArrowUpRight';\nimport {DocumentArrowDown} from '@styled-icons/fluentui-system-filled/DocumentArrowDown';\nimport {ArrowCounterclockwise} from '@styled-icons/fluentui-system-filled/ArrowCounterclockwise';\n\nimport {RoundButton} from '@bootcamp/web/src/components/UI';\nimport {AssignmentWithoutContext as Assignment, typeDetails, CalendarDayWithoutContext} from '../CalendarDay';\n\nimport {InputComponent, CustomInputWrapper} from '@bootcamp/web/src/components/UI/inputs';\n\nimport theme from '@bootcamp/shared/src/styles/theme';\nimport {subjectDetails} from '../CalendarDay';\n\nconst SettingsContainer = styled(Container)`\n max-width: 491px;\n font-family: 'proxima-nova';\n min-height: 0px;\n height: calc(100% - 64px);\n ${({theme}) => theme.mediaQueries.tablet} {\n max-height: 100%;\n max-width: 100%;\n height: 100%;\n width: 100%;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n top: unset;\n overflow: hidden;\n }\n\n`;\nconst ResetSettingsContainer = styled(SettingsContainer)`\n min-height: 475px;\n max-height: 736px;\n height: auto;\n`;\nconst SettingsWrapper = styled(Wrapper)`\n flex-direction: column;\n overflow-y: scroll;\n`;\n\nconst SettingsSection = styled.div`\n padding: 16px 0;\n border-bottom: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n\n &:last-child {\n border-bottom: none;\n }\n`;\nconst StyledPanel = styled(Panel)`\n padding: 16px 24px;\n display: flex;\n flex-direction: column;\n`;\n\nconst SettingsOptions = styled.div`\n display: flex;\n align-items: center;\n flex-direction: row;\n gap: 8px;\n margin-top: 16px;\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: ${({mobileVertical}) => mobileVertical ? 'column' : 'row'};\n }\n`;\n\nconst SettingsOption = styled.div`\n display: flex;\n align-items: center;\n cursor: pointer;\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n padding: 13px 16px;\n border-radius: 8px;\n ${({selected, theme}) => selected ? `\n font-weight: 700;\n border: 1px solid ${theme.colors.brandPalette.royal.default};\n background: ${theme.colors.brandPalette.royal.extraLight}40;\n ` : `\n font-weight: 400;\n border: 1px solid ${theme.colors.neutralsPalette.light};\n `}\n ${({theme}) => theme.mediaQueries.tablet} {\n width: 100%;\n justify-content: center;\n }\n`;\nconst AutoWidthSettingsOption = styled(SettingsOption)`\n width: 50%;\n flex: 1;\n flex-direction: column;\n align-items: flex-start;\n align-self: stretch;\n\n div {\n width: 100%;\n max-width: 100%;\n }\n`;\nconst SettingsOptionHeader = styled.span`\n margin-bottom: 12px;\n text-align: center;\n width: 100%;\n margin-top: 3px;\n`;\nconst SettingsSectionHeader = styled(H4)`\n margin-bottom: 8px;\n`;\nconst SettingsSectionSubheader = styled(Body3)`\n margin-bottom: 8px;\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n`;\nconst ResetLabel = styled(SettingsSectionSubheader)`\n margin: 0;\n`;\n\nconst ResetScheduleButton = styled(RoundButton)`\n`;\n\nconst ConfirmResetSection = styled.div`\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n margin-bottom: 24px;\n`;\n\nconst ResetButtonArea = styled(ButtonArea)`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 8px;\n width: 100%;\n`;\nconst StudyGuideLink = styled.a`\n display: flex;\n height: 42px;\n padding: 12px 16px;\n align-items: center;\n gap: 8px;\n align-self: stretch;\n border-radius: 8px;\n border: 1px solid ${({theme}) => theme.colors.borderPalette.primary};\n outline: none;\n text-decoration: none;\n color: ${({theme}) => theme.colors.neutralsPalette.black};\n margin-bottom: 16px;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-family: 'proxima-nova';\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 100%; /* 16px */\n`;\nconst LinkIcon = styled(ArrowUpRight)`\n width: 20px;\n height: 20px;\n color: ${({theme}) => theme.colors.borderPalette.secondary};\n margin-left: auto;\n`;\nconst StyledDownloadButton = styled(RoundButton)`\n margin-bottom: 16px;\n`;\nconst DocumentIcon = styled(DocumentArrowDown)`\n width: 20px;\n height: 20px;\n`;\nconst ResetIcon = styled(ArrowCounterclockwise)`\n width: 20px;\n height: 20px;\n`;\n\nconst AssignmentTypeWrapper = styled.div`\n display: flex;\n flex-flow: row wrap;\n gap: 4px;\n`;\nconst Alert = styled.span`\n font-weight: 700;\n color: ${({theme}) => theme.colors.interfacePalette.red.default};\n`;\nconst Checkbox = styled(InputComponent)`\n align-items: flex-start;\n\n ${CustomInputWrapper} {\n margin-right: 8px;\n margin-top: 4px;\n }\n`;\n\nconst StyledButtonArea = styled(ButtonArea)`\n padding: 16px 24px;\n border-top: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n background: white;\n border-bottom-right-radius: 8px;\n border-bottom-left-radius: 8px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n border-radius: 0px;\n }\n`;\nconst SettingsModal = ({close, resetSchedule, eventsByDate}) => {\n const [resetScreenVisible, setResetScreenVisible] = useState(false);\n const [resetConfirmed, setResetConfirmed] = useState(false);\n const {searchUserInteractions, saveUserInteraction, bootcamp} = useUserDataContext();\n const {modalDispatch} = useModalContext();\n\n const defaultStartWeekOn = searchUserInteractions('startWeekOn', 0);\n const defaultShowTimeInAssignment = searchUserInteractions('showTimeInAssignment', 1);\n\n const [startWeekOn, setStartWeekOn] = useState(defaultStartWeekOn);\n const [showTimeInAssignment, setShowTimeInAssignment] = useState(defaultShowTimeInAssignment);\n\n const hideCompletedAssignments = searchUserInteractions('hideCompletedAssignments', false);\n const useSubjectColors = searchUserInteractions('useSubjectColors', false) && ['dat', 'inbde', 'oat', 'med-school'].includes(bootcamp);\n const studySpeed = searchUserInteractions('studySpeed', 1);\n\n // should only show subject color coding settings if dat bootcamp & first day is after 2025-03-01\n const firstDay = Object.entries(eventsByDate).sort((a, b) => new Date(a?.[0]) - new Date(b?.[0])).filter(([date, value]) => value.length > 0)?.[0]?.[0];\n const shouldShowSubjectCoding = ['dat', 'inbde', 'oat', 'med-school'].includes(bootcamp) && new Date(firstDay) > new Date('2025-03-01');\n\n function handleStartWeekOn(value) {\n setStartWeekOn(value);\n saveUserInteraction('startWeekOn', value);\n }\n\n function handleShowTimeInAssignment(value) {\n setShowTimeInAssignment(value);\n saveUserInteraction('showTimeInAssignment', value);\n }\n function handleHideCompletedAssignments(value) {\n saveUserInteraction('hideCompletedAssignments', value);\n }\n function handleUseSubjectColors(value) {\n saveUserInteraction('useSubjectColors', value);\n }\n\n function handleBackClick() {\n setResetScreenVisible(false);\n setResetConfirmed(false);\n }\n const assignmentTypeTitles = bootcamp === 'dat' ? [\n ['qbank', 'Qbanks'],\n ['video', 'Videos'],\n ['bites', 'Bites'],\n ['resource', 'Resources'],\n ['practiceTest', 'Practice Tests'],\n ] : [\n ['qbank', 'Qbanks'],\n ['video', 'Videos'],\n ['createTest', 'Create Test'],\n ['resource', 'Resources'],\n ['practiceTest', 'Readiness Exams'],\n ];\n const subjectTypeTitles = Object.keys(subjectDetails[bootcamp] || {});\n const assignmentPropsShim = bootcamp === 'med-school' ?\n {\n event: {\n title: 'Vascular System Videos 1-7',\n type: 'video',\n subject: 'Cardiovascular System',\n estimatedTime: 75,\n disabled: false,\n },\n provided: {draggableProps: {}, dragHandleProps: {}},\n updateCompleteStatus: () => { },\n showEstimatedTime: true,\n }\n : bootcamp === 'inbde' ? {\n event: {\n title: 'Operative Dentistry Qbank (First Half)',\n type: 'qbank',\n subject: 'Fields of Dentistry',\n estimatedTime: 75,\n disabled: false,\n },\n provided: {draggableProps: {}, dragHandleProps: {}},\n updateCompleteStatus: () => { },\n showEstimatedTime: true,\n } : bootcamp === 'dat' ? {\n event: {\n title: 'Equations and Inequalities Qbank',\n type: 'qbank',\n subject: 'Quantitative Reasoning',\n estimatedTime: 60,\n disabled: false,\n },\n provided: {draggableProps: {}, dragHandleProps: {}},\n updateCompleteStatus: () => { },\n showEstimatedTime: true,\n } : {\n event: {\n title: '35 Adult Health Standalone Questions',\n type: 'qbank',\n estimatedTime: 75,\n disabled: true,\n },\n provided: {draggableProps: {}, dragHandleProps: {}},\n updateCompleteStatus: () => { },\n showEstimatedTime: true,\n };\n\n\n if (resetScreenVisible) {\n return (\n <ResetSettingsContainer onClick={e => e.stopPropagation()}>\n <SettingsWrapper style={{overflow: 'auto'}}>\n <Header>\n <BackIcon onClick={handleBackClick} />\n <HeaderText>Settings</HeaderText>\n <CloseIcon onClick={() => modalDispatch({type: 'close'})}/>\n </Header>\n <StyledPanel>\n <SettingsSectionHeader>\n Reset Schedule\n </SettingsSectionHeader>\n <SettingsSectionSubheader>\n <Alert>Resetting your schedule will clear all completed assignments and mark them as incomplete.</Alert> To keep your current progress, rebalance your schedule instead.\n </SettingsSectionSubheader>\n <ConfirmResetSection>\n <Checkbox\n checked={resetConfirmed}\n onClick={() => setResetConfirmed(!resetConfirmed)}\n color={theme.colors.brandPalette.blue.default}>\n <ResetLabel>\n I understand that after resetting I will lose my progress and my current schedule can’t be recovered.\n </ResetLabel>\n </Checkbox>\n </ConfirmResetSection>\n <ResetButtonArea>\n <RoundButton full small onClick={() => {\n setResetConfirmed(false);\n setResetScreenVisible(false);\n }}>\n Cancel\n </RoundButton>\n <RoundButton full small onClick={() => {\n resetSchedule();\n close();\n }} disabled={!resetConfirmed} themePalette={{...theme.colors.interfacePalette.red, default: '#EF4444'}}>\n Reset Schedule\n </RoundButton>\n </ResetButtonArea>\n </StyledPanel>\n </SettingsWrapper>\n </ResetSettingsContainer>\n )\n }\n\n return (\n <SettingsContainer onClick={e => e.stopPropagation()}>\n <Header>\n <HeaderText>Settings</HeaderText>\n <CloseIcon onClick={() => modalDispatch({type: 'close'})} />\n </Header>\n <SettingsWrapper>\n <Panel>\n <SettingsSection>\n <SettingsSectionHeader>Start week on</SettingsSectionHeader>\n <SettingsOptions>\n <SettingsOption selected={startWeekOn === 0} onClick={() => handleStartWeekOn(0)}>Sunday</SettingsOption>\n <SettingsOption selected={startWeekOn === 1} onClick={() => handleStartWeekOn(1)}>Monday</SettingsOption>\n </SettingsOptions>\n </SettingsSection>\n {/* <SettingsSection>\n <SettingsSectionHeader>Sort completed assignments</SettingsSectionHeader>\n <SettingsOptions>\n <SettingsOption selected={sortCompletedAssignments === 0} onClick={() => saveUserInteraction('sortCompletedAssignments', 0)}>Move to top</SettingsOption>\n <SettingsOption selected={sortCompletedAssignments === 1} onClick={() => saveUserInteraction('sortCompletedAssignments', 1)}>Move to bottom</SettingsOption>\n </SettingsOptions>\n </SettingsSection> */}\n <SettingsSection>\n <SettingsSectionHeader>Assignment View</SettingsSectionHeader>\n <SettingsOptions>\n <AutoWidthSettingsOption selected={showTimeInAssignment === 1} onClick={() => handleShowTimeInAssignment(1)}>\n <SettingsOptionHeader>Standard</SettingsOptionHeader>\n <Assignment {...assignmentPropsShim} />\n </AutoWidthSettingsOption>\n <AutoWidthSettingsOption selected={showTimeInAssignment === 0} onClick={() => handleShowTimeInAssignment(0)}>\n <SettingsOptionHeader>Compact</SettingsOptionHeader>\n <Assignment {...assignmentPropsShim} event={{...assignmentPropsShim.event, estimatedTime: 0}} showEstimatedTime={false} />\n </AutoWidthSettingsOption>\n </SettingsOptions>\n </SettingsSection>\n <SettingsSection>\n <SettingsSectionHeader>Completed Assignments</SettingsSectionHeader>\n <SettingsOptions>\n <AutoWidthSettingsOption selected={!hideCompletedAssignments} onClick={() => handleHideCompletedAssignments(false)}>\n <SettingsOptionHeader>Show</SettingsOptionHeader>\n <CalendarDayWithoutContext\n {...assignmentPropsShim}\n events={[{...assignmentPropsShim.event, complete: true}]}\n />\n </AutoWidthSettingsOption>\n <AutoWidthSettingsOption selected={hideCompletedAssignments} onClick={() => handleHideCompletedAssignments(true)}>\n <SettingsOptionHeader>Hide</SettingsOptionHeader>\n <CalendarDayWithoutContext\n {...assignmentPropsShim}\n events={[{...assignmentPropsShim.event, complete: true}]}\n hideCompletedAssignments\n />\n </AutoWidthSettingsOption>\n </SettingsOptions>\n </SettingsSection>\n <SettingsSection>\n <SettingsSectionHeader>Study Speed</SettingsSectionHeader>\n <SettingsOptions mobileVertical>\n {[{scale: 1.5, label: 'No Rush'}, {scale: 1.25, label: 'Relaxed'}, {scale: 1, label: 'Default'}, {scale: .75, label: 'Faster'}, {scale: .5, label: 'Fastest'}].map(({scale, label}, index) => (\n <SettingsOption\n style={{padding: '16px 13px', whiteSpace: 'nowrap'}}\n key={label}\n selected={studySpeed === scale}\n onClick={() => saveUserInteraction('studySpeed', JSON.stringify(scale))}\n >\n {label}\n </SettingsOption>\n ))}\n </SettingsOptions>\n <SettingsSectionSubheader style={{marginTop: 16}}>\n Gives you {studySpeed === 2 ? 'twice as much' : studySpeed === 1.5 ? '50% more' : studySpeed === 1.25 ? '25% more' : studySpeed === 1 ? 'the default' : studySpeed === .75 ? '25% less' : '50% less'} time to complete assignments. Does not affect custom assignments.\n </SettingsSectionSubheader>\n </SettingsSection>\n {shouldShowSubjectCoding && <SettingsSection>\n <SettingsSectionHeader>Assignment Color-Coding</SettingsSectionHeader>\n <SettingsOptions>\n <SettingsOption selected={useSubjectColors} onClick={() => handleUseSubjectColors(true)}>\n Subject\n </SettingsOption>\n <SettingsOption selected={!useSubjectColors} onClick={() => handleUseSubjectColors(false)}>\n Type\n </SettingsOption>\n </SettingsOptions>\n {!useSubjectColors && (\n <div style={{marginTop: 16}}>\n <SettingsSectionSubheader>\n Assignments are color-coded by type:\n </SettingsSectionSubheader>\n <AssignmentTypeWrapper>\n {assignmentTypeTitles\n .map(([key, title], index) => (\n <Chiclet\n key={index}\n color={typeDetails[key].color}>\n {title}\n </Chiclet>\n ))}\n </AssignmentTypeWrapper>\n </div>\n )}\n </SettingsSection>}\n <SettingsSection>\n <SettingsSectionHeader>{bootcamp === 'dat' ? 'Dr. Ari’s 10-Week Study Schedule' : 'PDF Study Schedules'}</SettingsSectionHeader>\n <SettingsSectionSubheader>Looking for a PDF / printable alternative? {bootcamp === 'dat' ? 'Download Ari’s 10-week study schedule.' : 'Click the button below.'}</SettingsSectionSubheader>\n <StyledDownloadButton\n small\n href={bootcamp === 'inbde' ? 'https://docs.google.com/document/d/1JL5kU_tUSoDMU0Km6umldqIZ1RUvpLEUhdtYMrDuhdw/edit?usp=sharing' : bootcamp === 'dat' ? 'https://bootcamp.com/dat/aris-study-guide-for-dat-domination' : `https://bootcamp.com/${bootcamp}/study-schedule`}\n target={'_blank'}\n IconComponent={<DocumentIcon/>}\n iconPosition={'left'}\n >\n Download Study Schedule (PDF)\n </StyledDownloadButton>\n </SettingsSection>\n <SettingsSection>\n <SettingsSectionHeader>Reset Schedule</SettingsSectionHeader>\n <SettingsSectionSubheader>Reset your schedule to clear all completed assignments and generate a new schedule.</SettingsSectionSubheader>\n <ResetScheduleButton\n small\n onClick={() => setResetScreenVisible(true)}\n IconComponent={<ResetIcon/>}\n iconPosition={'left'}\n themePalette={{...theme.colors.interfacePalette.red}}>\n Reset Schedule\n </ResetScheduleButton>\n </SettingsSection>\n </Panel>\n </SettingsWrapper>\n <StyledButtonArea>\n <RoundButton full onClick={() => modalDispatch({type: 'close'})}>Save</RoundButton>\n </StyledButtonArea>\n </SettingsContainer>\n )\n}\n\nexport default SettingsModal;","import React, {useState} from 'react';\n\nimport {parse, differenceInDays} from 'date-fns';\n\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\nimport {Label2} from '@bootcamp/web/src/components/Typography/next';\n\nimport {RoundButton} from '@bootcamp/web/src/components/UI';\n\nimport CreateSchedule from './Create'\nimport {Checkmark} from '@styled-icons/fluentui-system-filled/Checkmark';\nimport {ArrowUturnLeft} from '@styled-icons/heroicons-solid/ArrowUturnLeft';\nimport {\n Container,\n Header,\n Header2Text,\n Wrapper,\n CloseIcon,\n WarningIcon,\n ConfirmationPanel,\n Left,\n CreateButton,\n Estimate,\n EstimateSubheading,\n Subheading,\n TimelineComponent,\n IconContent\n} from './shared';\n\nimport styled from 'styled-components';\n\nconst Panel = styled(Left)`\n padding: 0px 12px;\n`\n\nconst ConfirmationHeader = styled(Header)`\n padding: 0;\n border-bottom: none;\n margin-bottom: 8px;\n flex-direction: column;\n`;\nconst ConfirmationSubheader = styled(Subheading)`\n font-size: 18px;\n margin-bottom: 32px;\n`;\nconst ButtonArea = styled.div`\n display: flex;\n flex-direction: row;\n width: 100%;\n gap: 24px;\n`;\n\nconst ScheduleLabel = styled(Label2)`\n color: #85868E;\n font-weight: 700;\n margin-bottom: 12px;\n`;\n\nconst HeaderIconContent = styled(IconContent)`\n border-radius: 100%;\n background: ${({color, theme}) => color === 'red' ? theme.colors.interfacePalette.red.light : theme.colors.brandPalette.royal.light};\n color: ${({color, theme}) => color === 'red' ? theme.colors.interfacePalette.red.dark : theme.colors.brandPalette.royal.dark};\n margin-bottom: 8px;\n`;\n\nconst RebalanceConfirmation = ({\n currentSchedule,\n hoursPerDay,\n startDate,\n examDate,\n onConfirm,\n onCancel,\n currentHoursPerDay,\n loading,\n}) => {\n\n return (\n <Container id={\"modal-container\"} onClick={e => e.stopPropagation()}>\n <Wrapper>\n <ConfirmationPanel>\n <ConfirmationHeader>\n <HeaderIconContent><Checkmark size=\"20\" /></HeaderIconContent>\n <CloseIcon onClick={onCancel} />\n <Header2Text>\n Your Rebalanced Schedule\n </Header2Text>\n </ConfirmationHeader>\n <ConfirmationSubheader>\n Check out what we’ve done to help you get back on track!\n </ConfirmationSubheader>\n <Wrapper>\n <Panel>\n <ScheduleLabel>\n Current Schedule\n </ScheduleLabel>\n <TimelineComponent\n startDate={currentSchedule.startDate}\n examDate={currentSchedule.examDate}\n hoursPerDay={currentHoursPerDay}\n expirationBeforeExamDate={currentSchedule.expirationBeforeExamDate}\n rebalance\n hideSubheading\n >\n {!!currentSchedule.overdueIncompleteEvents.length &&\n <Estimate color=\"red\" hideSubheading>\n <IconContent><WarningIcon/></IconContent>\n <EstimateSubheading color=\"red\">{currentSchedule.overdueIncompleteEvents.length} assignment{currentSchedule.overdueIncompleteEvents.length > 1 && `s`} overdue</EstimateSubheading>\n </Estimate>\n }\n </TimelineComponent>\n </Panel>\n <Panel>\n <ScheduleLabel>\n New Schedule\n </ScheduleLabel>\n <TimelineComponent\n startDate={startDate}\n examDate={examDate}\n hoursPerDay={hoursPerDay}\n expirationBeforeExamDate={currentSchedule.expirationBeforeExamDate}\n rebalance\n hideSubheading\n >\n <Estimate color=\"green\" hideSubheading>\n <IconContent color=\"royal\"><Checkmark size=\"20\" /></IconContent>\n <EstimateSubheading color=\"green\">No overdue assignments!</EstimateSubheading>\n </Estimate>\n </TimelineComponent>\n </Panel>\n </Wrapper>\n <ButtonArea>\n <RoundButton full white onClick={onCancel} style={{fontWeight: 400}}>\n Go back\n </RoundButton>\n <CreateButton full onClick={onConfirm} disabled={loading} color=\"royal\">\n {loading ? 'Rebalancing...' : 'Looks great!'}\n </CreateButton>\n </ButtonArea>\n </ConfirmationPanel>\n </Wrapper>\n </Container>\n );\n};\n\nexport const UndoRebalanceConfirmation = ({\n currentSchedule,\n originalSchedule,\n rollbackSchedule,\n onCancel,\n loading,\n close\n}) => {\n return (\n <Container id={\"modal-container\"} onClick={e => e.stopPropagation()}>\n <Wrapper>\n <ConfirmationPanel>\n <ConfirmationHeader>\n <HeaderIconContent color=\"red\"><ArrowUturnLeft size=\"20\" /></HeaderIconContent>\n <CloseIcon onClick={close} />\n <Header2Text>\n Undo Rebalance\n </Header2Text>\n </ConfirmationHeader>\n <ConfirmationSubheader>\n Don’t like what you’re seeing? No worries, we can bring back your previous schedule\n </ConfirmationSubheader>\n <Wrapper>\n <Panel>\n <ScheduleLabel>\n Rebalanced Schedule\n </ScheduleLabel>\n <TimelineComponent\n startDate={currentSchedule.startDate}\n examDate={currentSchedule.examDate}\n hoursPerDay={currentSchedule.hoursPerDay}\n expirationBeforeExamDate={currentSchedule.expirationBeforeExamDate}\n rebalance\n hideSubheading\n >\n {!!currentSchedule.overdueIncompleteEvents.length &&\n <Estimate color=\"red\" hideSubheading>\n <IconContent><WarningIcon /></IconContent>\n {currentSchedule.overdueIncompleteEvents.length} assignment{currentSchedule.overdueIncompleteEvents.length > 1 && `s`} overdue\n </Estimate>\n }\n </TimelineComponent>\n </Panel>\n <Panel>\n <ScheduleLabel>\n Previous Schedule\n </ScheduleLabel>\n <TimelineComponent\n startDate={originalSchedule.startDate}\n examDate={originalSchedule.examDate}\n hoursPerDay={originalSchedule.hoursPerDay}\n rebalance\n hideSubheading\n >\n {!!originalSchedule.overdueIncompleteEvents.length &&\n <Estimate color=\"red\" hideSubheading>\n <IconContent><WarningIcon /></IconContent>\n {originalSchedule.overdueIncompleteEvents.length} assignment{originalSchedule.overdueIncompleteEvents.length > 0 && `s`} overdue\n </Estimate>\n }\n </TimelineComponent>\n </Panel>\n </Wrapper>\n <ButtonArea>\n <RoundButton full white onClick={close} style={{fontWeight: 400}}>\n Go back\n </RoundButton>\n <CreateButton full onClick={rollbackSchedule} disabled={loading} color=\"royal\">\n {loading ? 'Undoing...' : 'Confirm Undo'}\n </CreateButton>\n </ButtonArea>\n </ConfirmationPanel>\n </Wrapper>\n </Container>\n );\n};\n\n\n\nconst RebalanceModal = ({\n remainingHours,\n rebalanceSchedule,\n currentSchedule\n}) => {\n const [loading, setLoading] = useState(false);\n const [rebalanceConfig, setRebalanceConfig] = useState(null);\n const [showingConfirmation, setShowingConfirmation] = useState(false);\n const {modalDispatch} = useModalContext();\n\n const currentDaysBetweenStartAndExam = currentSchedule.examDate && currentSchedule.startDate\n ? differenceInDays(parse(currentSchedule.examDate, 'yyyy-MM-dd', new Date()), parse(currentSchedule.startDate, 'yyyy-MM-dd', new Date())) - (currentSchedule?.daysOff?.length || 0)\n : null;\n\n const currentHoursPerDay = currentDaysBetweenStartAndExam ? remainingHours / currentDaysBetweenStartAndExam : null;\n\n const handleCreate = async (startDate, daysOff, examDate, hoursPerDay) => {\n setRebalanceConfig({startDate, daysOff, examDate, hoursPerDay});\n setShowingConfirmation(true);\n };\n\n const handleRebalance = async (startDate, daysOff, examDate, hoursPerDay) => {\n setLoading(true);\n\n try {\n await rebalanceSchedule(startDate, daysOff, examDate, hoursPerDay);\n } catch (error) {\n console.log('error rebalancing', error);\n }\n\n modalDispatch({type: 'close'});\n };\n\n const handleCancel = () => {\n setShowingConfirmation(false);\n };\n\n const handleClose = () => {\n modalDispatch({type: 'close'});\n };\n\n if (showingConfirmation) {\n return (\n <RebalanceConfirmation\n currentSchedule={currentSchedule}\n hoursPerDay={rebalanceConfig.hoursPerDay}\n startDate={rebalanceConfig.startDate}\n examDate={rebalanceConfig.examDate}\n currentHoursPerDay={currentHoursPerDay}\n onConfirm={handleRebalance}\n onCancel={handleCancel}\n onClose={handleClose}\n loading={loading}\n />\n );\n }\n\n return (\n <CreateSchedule\n onCreate={handleRebalance}\n totalHours={remainingHours}\n startingExamDate={currentSchedule.examDate}\n startingDaysOff={currentSchedule.daysOff}\n rebalance\n />\n );\n};\n\n\nexport default RebalanceModal;","import React, {useCallback, useEffect, useState, useRef} from 'react';\nimport styled from 'styled-components';\nimport {DragDropContext} from 'react-beautiful-dnd';\nimport {Waypoint} from 'react-waypoint';\nimport useResizeObserver from 'use-resize-observer';\nimport {IntercomAPI} from 'react-intercom';\nimport debounce from 'lodash.debounce';\nimport API from '@aws-amplify/api';\n\nimport topRight from '../assets/top_right_32.png';\nimport topLeft from '../assets/top_left_32.png';\nimport {toast, Slide} from 'react-toastify';\nimport {\n addWeeks,\n addDays,\n addMonths,\n subMonths,\n startOfWeek,\n format,\n startOfMonth,\n getDaysInMonth,\n getDate,\n getWeekOfMonth,\n isBefore,\n startOfDay,\n parse,\n endOfMonth\n} from 'date-fns';\n\nimport {resetScrollPosition} from '../../PageContainer';\n\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\n\nimport CalendarDay from './CalendarDay';\nimport {\n Calendar,\n CalendarWeek,\n CalendarShadow,\n CalendarContainer,\n CalendarHeaderContainer,\n CalendarHeaderRow,\n CalendarHeaderButtonsContainer,\n CalendarHeaderMonth,\n CalenderHeaderDayRow,\n CalendarHeaderDay,\n MobileCalendarDay,\n UpdateComplete\n} from './shared';\n\nimport {getWeeksToDisplay} from '../helpers';\nimport {ChevronUp} from '@styled-icons/fluentui-system-filled/ChevronUp';\nimport {TargetArrow} from '@styled-icons/fluentui-system-filled/TargetArrow';\nimport {RoundButton} from '@bootcamp/web/src/components/UI';\nimport {Wand} from '@styled-icons/fluentui-system-filled/Wand';\nimport {Settings} from '@styled-icons/fluentui-system-filled/Settings';\n\nconst StyledCalendarWeek = styled(CalendarWeek)`\n padding-left: 36px;\n position: relative;\n background: ${({theme}) => theme.colors.neutralsPalette.offWhite};\n ${({theme}) => theme.mediaQueries.tablet} {\n padding-left: 0;\n }\n`;\nconst StyledCalendarHeaderDayRow = styled(CalenderHeaderDayRow)`\n border-top: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n border-bottom: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n padding-left: 36px;\n`;\nconst StyledCalendarHeaderDay = styled(CalendarHeaderDay)`\n border-left: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n`;\n\nconst StyledCalendarHeaderMonth = styled(CalendarHeaderMonth)`\n margin: 0;\n font-weight: 600;\n width: 91px;\n margin-right: 8px;\n ${({theme}) => theme.mediaQueries.tablet} {\n width: 100%;\n }\n`;\n\nconst ChevronButton = styled(ChevronUp)`\n cursor: pointer;\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n height: 32px;\n width: 32px;\n font-size: 14px;\n padding: 8px;\n gap: 0px;\n &:hover {\n background: #EDEDF0;\n border-radius: 100px;\n }\n`\nconst CalendarButton = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 8px;\n height: 32px;\n padding: 0px 12px;\n\n background: #FFFFFF;\n border: 1px solid #EDEDF0;\n box-shadow: 0px 1px 0px #C8C9CE;\n border-radius: 256px;\n\n font-family: proxima-nova;\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 100%;\n\n text-align: center;\n\n color: #2F3037;\n cursor: pointer;\n &:hover {\n background: #F7F7F8;\n }\n`;\nconst MobileCalendarButton = styled(CalendarButton)`\n padding: 8px;\n width: 32px;\n`;\nconst MobileCalendarHeaderRow = styled(CalendarHeaderRow)`\n padding: ${({theme}) => theme.layouts.spacing.s} ${({theme}) => theme.layouts.spacing.ms};\n`;\nconst MobileProgressRow = styled(MobileCalendarHeaderRow)`\n border-bottom: 1px solid ${({theme}) => theme.colors.borderPalette.primary};\n margin-bottom: 8px;\n`;\nconst ProgressBarContainer = styled.div`\n width: 100%;\n height: 8px;\n background: linear-gradient(180deg, rgba(0, 0, 0, 0.04) 0%, rgba(0, 0, 0, 0.02) 100%);\n box-shadow: 0px 4px 8px 0px #0000000F inset;\n position: relative;\n border-radius: 8px;\n`;\nconst ProgressBar = styled.div`\n width: ${({progress}) => progress}%;\n height: 100%;\n background: ${({theme}) => theme.colors.brandPalette.blue.gradient};\n border-radius: 8px;\n position: absolute;\n top: 0;\n left: 0;\n transition: width 0.5s;\n overflow: hidden;\n`;\nconst VerticalWeekCountLabelContainer = styled.div`\n position: absolute;\n display: flex;\n top: 0;\n bottom: 0;\n transform: rotate(-90deg);\n\n ${({theme}) => theme.mediaQueries.tablet} {\n display: none;\n }\n`;\nconst VerticalWeekCountLabel = styled.div`\n font-family: proxima-nova;\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 100%;\n text-align: center;\n color: #C8C9CE;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n white-space: nowrap;\n width: 36px;\n`;\nconst ContainerRadius = styled.img`\n position: absolute;\n top: 0px;\n width: 8px;\n height: 8px;\n`;\nconst TopRightRadius = styled(ContainerRadius)`\n right: 0;\n`;\nconst TopLeftRadius = styled(ContainerRadius)`\n left: 0px;\n`;\n\n\nconst Day = ({\n date,\n defaultDate,\n eventsByDate,\n examDate,\n width,\n firstDay,\n updateEventsByDate,\n selectedDate,\n setSelectedDate,\n membershipExpirationDate,\n updateAssignmentDate,\n updateEvent,\n createAssignmentOnDate,\n isFinalWeekOfMonth,\n // updateCompleteStatus,\n}) => {\n const {searchUserInteractions} = useUserDataContext();\n const formattedDate = format(date, 'yyyy-MM-dd');\n const isPresent = (formattedDate >= format(new Date(), 'yyyy-MM-dd') || formattedDate >= firstDay) && formattedDate <= examDate;\n const dayEvents = eventsByDate?.[formattedDate];\n\n const updateCompleteStatus = (id, complete) => {\n // if the event is the final event of the day, and formatted date is today, show a toast\n const updatedEvents = eventsByDate[formattedDate].map(event => {\n if (event.id === id) {\n event.complete = complete;\n }\n return event;\n });\n\n if (complete && formattedDate === format(new Date(), 'yyyy-MM-dd') && updatedEvents.every(event => event.complete)) {\n toast(<UpdateComplete themePalette=\"green\" title=\"All done for today!\" body=\"Great work.\" showDismiss={false} />, {\n toastId: 'update-complete',\n position: 'bottom-center',\n autoClose: 2000,\n hideProgressBar: true,\n draggableDirection: 'y',\n draggablePercent: 100,\n transition: Slide,\n closeButton: false,\n style: {\n padding: 0,\n }\n });\n }\n\n\n updateEventsByDate({\n ...eventsByDate,\n [formattedDate]: updatedEvents,\n });\n }\n\n if (width <= 768) {\n const isSelected = date.getTime() === selectedDate.getTime();\n const isSelectable = isBefore(addDays(new Date(firstDay), -1), new Date(formattedDate)) && isBefore(addDays(new Date(formattedDate), -1), new Date(examDate));\n const hasAssignments = dayEvents?.length;\n\n const handleClick = () => {\n if (isSelectable || hasAssignments) setSelectedDate(date);\n };\n\n return (\n <MobileCalendarDay\n onClick={handleClick}\n isPresent={isPresent}\n isToday={formattedDate === format(new Date(), 'yyyy-MM-dd')}\n isExamDay={formattedDate === examDate}\n isSelected={isSelected}\n isDayOff={!dayEvents?.length}\n children={getDate(date)}\n />\n )\n }\n\n const dividerLineState = !isFinalWeekOfMonth ? false : date.getDate() === 1 ? 'left' : date.getDate() < 7 ? 'top' : 'bottom';\n return (\n <CalendarDay\n key={date}\n date={date}\n isPresent={isPresent}\n events={dayEvents}\n isExamDate={formattedDate === examDate}\n updateCompleteStatus={updateCompleteStatus}\n isExpirationDate={membershipExpirationDate && formattedDate === format(membershipExpirationDate, 'yyyy-MM-dd')}\n membershipExpirationDate={membershipExpirationDate}\n documentWidth={width}\n startDate={firstDay}\n examDate={examDate}\n updateAssignmentDate={updateAssignmentDate}\n updateEvent={updateEvent}\n createAssignmentOnDate={createAssignmentOnDate}\n dividerLineState={dividerLineState}\n />\n );\n};\n\nconst Week = ({\n weekStart,\n defaultDate,\n firstDay,\n setScrolledMonth,\n eventsByDate,\n examDate,\n endDate,\n width,\n updateEventsByDate,\n selectedDate,\n setSelectedDate,\n membershipExpirationDate,\n updateCompleteStatus,\n updateAssignmentDate,\n updateEvent,\n createAssignmentOnDate,\n}) => {\n const weekOfMonth = getWeekOfMonth(addDays(weekStart, 6));\n const weeksSinceFirstDay = Math.ceil((weekStart - parse(firstDay, 'yyyy-MM-dd', new Date())) / (1000 * 60 * 60 * 24 * 7)) + 1;\n\n // if the week is beyond the end date, return\n if (weekStart > endOfMonth(parse(endDate, 'yyyy-MM-dd', new Date()))) return null;\n\n\n const isFinalWeekOfMonth = getWeekOfMonth(weekStart) === getWeekOfMonth(endOfMonth(weekStart));\n return (\n <Waypoint viewportTop={72} key={`${weekStart}-waypoint`} onPositionChange={({previousPosition, currentPosition}) => {\n const scrollParent = document.getElementById('page-container');\n if (previousPosition && currentPosition === 'inside' && scrollParent.scrollTop > 0) {\n setScrolledMonth(startOfMonth(weekStart));\n }\n }}>\n <StyledCalendarWeek>\n <VerticalWeekCountLabelContainer>\n <VerticalWeekCountLabel>{weeksSinceFirstDay > 0 && weekStart <= parse(endDate, 'yyyy-MM-dd', new Date()) && `Week ${weeksSinceFirstDay}`}</VerticalWeekCountLabel>\n </VerticalWeekCountLabelContainer>\n {Array.from({length: 7}, (_, dayIndex) => {\n return (\n <Day\n key={weekStart + dayIndex}\n defaultDate={defaultDate}\n date={addDays(weekStart, dayIndex)}\n eventsByDate={eventsByDate}\n examDate={examDate}\n width={width}\n firstDay={firstDay}\n updateEventsByDate={updateEventsByDate}\n selectedDate={selectedDate}\n setSelectedDate={setSelectedDate}\n membershipExpirationDate={membershipExpirationDate}\n updateAssignmentDate={updateAssignmentDate}\n updateEvent={updateEvent}\n createAssignmentOnDate={createAssignmentOnDate}\n updateCompleteStatus={updateCompleteStatus}\n isFinalWeekOfMonth={isFinalWeekOfMonth}\n />\n );\n })}\n </StyledCalendarWeek>\n </Waypoint>\n )\n};\n\n\nconst CalendarComponent = ({ eventsByDate, setEventsByDate, totalEvents, completedEvents, daysUntilExam, onClickRebalance, onClickSettings }) => {\n const {DEFAULT_USER_ID, bootcamp, searchUserInteractions, userModel} = useUserDataContext();\n const mobileDateRef = useRef();\n const {width} = useResizeObserver({ref: window.document.body});\n const startWeekOn = searchUserInteractions(`startWeekOn`, 0);\n\n const firstDayOfWeek = startWeekOn;\n const firstDay = Object.entries(eventsByDate).sort((a, b) => new Date(a?.[0]) - new Date(b?.[0])).filter(([date, value]) => value.length > 0)?.[0]?.[0];\n const todayFormatted = format(new Date(), 'yyyy-MM-dd')\n const firstDayIncomplete = Object.entries(eventsByDate).sort((a, b) => new Date(a?.[0]) - new Date(b?.[0])).filter(([date, value]) => value.length > 0 && value.some(el => !el.complete))?.[0]?.[0] || todayFormatted;\n\n const firstDayOfSchedule = parse(firstDay, 'yyyy-MM-dd', new Date());\n const initialDisplayDate = parse(firstDayIncomplete, 'yyyy-MM-dd', new Date());\n\n const [defaultDate, setDefaultDate] = useState(initialDisplayDate);\n const [scrolledMonth, setScrolledMonth] = useState(initialDisplayDate);\n const [selectedDate, setSelectedDate] = useState(startOfDay(new Date()));\n const examDate = searchUserInteractions(`testDate`, null);\n\n const membershipExpirationDate = userModel?.membershipExpirationDate ? new Date(userModel?.membershipExpirationDate * 1000) : null;\n const lastDayContainingEvents = Object.keys(eventsByDate).sort((a, b) => new Date(b) - new Date(a))[0];\n const endDate = new Date(examDate) > new Date(lastDayContainingEvents) ? examDate : lastDayContainingEvents;\n\n const [weeks, setWeeks] = useState(getWeeksToDisplay(defaultDate));\n useEffect(() => {\n if (width <= 768) {\n handleToday();\n setWeeks(getWeeksToDisplay(new Date()));\n }\n }, [width]);\n\n const handleToday = () => {\n setDefaultDate(new Date());\n setSelectedDate(startOfDay(new Date()));\n setScrolledMonth(startOfMonth(new Date()));\n resetScrollPosition();\n if (mobileDateRef.current) {\n mobileDateRef.current.value = startOfMonth(new Date());\n }\n };\n\n const handleBack = () => {\n const prevMonth = startOfMonth(subMonths(scrolledMonth, 1));\n const element = document.getElementsByClassName(format(prevMonth, 'yyyy-MM'))[0];\n if (!element) {\n if (scrolledMonth < startOfMonth(firstDayOfSchedule)) return;\n if (prevMonth < startOfMonth(firstDayOfSchedule)) {\n setScrolledMonth(startOfMonth(firstDayOfSchedule));\n return setDefaultDate(startOfMonth(firstDayOfSchedule));\n }\n setScrolledMonth(prevMonth);\n return setDefaultDate(prevMonth);\n };\n const elementDimensions = element.getBoundingClientRect();\n const scrollParent = document.getElementById('page-container');\n scrollParent.scrollTop += elementDimensions.top - scrollParent.getBoundingClientRect().top - 116;\n setScrolledMonth(prevMonth);\n\n };\n\n const handleForward = () => {\n // if we're beyond the exam day, return\n if (addMonths(scrolledMonth, 1) >= parse(examDate, 'yyyy-MM-dd', new Date())) return;\n const nextMonth = startOfMonth(addMonths(scrolledMonth, 1));\n const element = document.getElementsByClassName(format(nextMonth, 'yyyy-MM'))[0];\n if (!element) return;\n const elementDimensions = element.getBoundingClientRect();\n const scrollParent = document.getElementById('page-container');\n\n scrollParent.scrollTop += elementDimensions.top - scrollParent.getBoundingClientRect().top - 116;\n setScrolledMonth(nextMonth);\n // add more weeks if necessary\n const weeksToAdd = Math.ceil((getDaysInMonth(nextMonth) - getDate(nextMonth)) / 7) + 1;\n setWeeks(weeks + weeksToAdd);\n };\n\n const updateEventsByDate = useCallback(async (events) => {\n setEventsByDate(events);\n await API.graphql({query:`\n mutation updateQuickCache($input: UpdateQuickCacheInput!) {\n updateQuickCache(input: $input) {\n id\n }\n }\n `, variables: {input: {id: `${DEFAULT_USER_ID}-${bootcamp}-study-schedule`, content: JSON.stringify(events)}}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n\n\n const totalEventsComplete = Object.values(events).reduce((acc, events) => {\n return acc + events.filter(event => event.complete).length;\n }, 0);\n\n // update events in intercom\n IntercomAPI('update', {completedAssignments: totalEventsComplete});\n\n }, [DEFAULT_USER_ID, JSON.stringify(eventsByDate)]);\n\n const updateCompleteStatus = (id, complete) => {\n const updatedEvents = eventsByDate[format(selectedDate, 'yyyy-MM-dd')].map(event => {\n if (event.id === id) {\n event.complete = complete;\n }\n return event;\n });\n updateEventsByDate({\n ...eventsByDate,\n [format(selectedDate, 'yyyy-MM-dd')]: updatedEvents,\n });\n };\n\n const createAssignmentOnDate = (date, event, isDuplicate) => {\n if (isDuplicate) {\n // show success toast\n toast(<UpdateComplete themePalette=\"royal\" iconName=\"copy\" title=\"Assignment duplicated\" body=\"The assignment has been duplicated.\" showDismiss={false} />, {\n toastId: `duplicate-complete-${event.id}`,\n position: 'bottom-center',\n autoClose: 2000,\n hideProgressBar: true,\n draggableDirection: 'y',\n draggablePercent: 100,\n transition: Slide,\n closeButton: false,\n style: {\n padding: 0,\n }\n });\n }\n updateEventsByDate({\n ...eventsByDate,\n [date]: [...eventsByDate[date] || [], event],\n });\n }\n\n const updateAssignmentDate = (id, date, newDate) => {\n const event = eventsByDate[date].find(event => event.id === id);\n const updatedEvents = eventsByDate[date].filter(event => event.id !== id);\n updateEventsByDate({\n ...eventsByDate,\n [date]: updatedEvents,\n [newDate]: [...eventsByDate[newDate] || [], event],\n });\n }\n\n const updateEvent = (id, date, event, save=true) => {\n if (!event) {\n // first, save a rollback\n const rollbackEvents = {...eventsByDate};\n const updatedEvents = eventsByDate[format(date, 'yyyy-MM-dd')].filter(e => e.id !== id);\n updateEventsByDate({\n ...eventsByDate,\n [format(date, 'yyyy-MM-dd')]: updatedEvents,\n });\n const eventDetails = rollbackEvents[format(date, 'yyyy-MM-dd')].find(e => e.id === id);\n toast(<UpdateComplete themePalette=\"red\" iconName=\"reply\" title=\"Assignment deleted\" body={<div><span style={{textDecoration: 'underline'}} onClick={() => {\n updateEventsByDate(rollbackEvents);\n toast.dismiss(`delete-complete-${id}`);\n }}>Undo</span> to recover \"{eventDetails.title?.slice(0,12) || \"New assignment\"}{eventDetails.title?.length > 12 ? '...' : ''}\"</div>} showDismiss />, {\n toastId: `delete-complete-${id}`,\n position: 'bottom-center',\n autoClose: 5000,\n hideProgressBar: true,\n draggableDirection: 'y',\n draggablePercent: 100,\n transition: Slide,\n closeButton: false,\n style: {\n padding: 0,\n }\n });\n return;\n }\n const updatedEvents = eventsByDate[format(date, 'yyyy-MM-dd')].map(e => {\n if (e.id === id) {\n return event;\n }\n return e;\n });\n if (save) {\n updateEventsByDate({\n ...eventsByDate,\n [format(date, 'yyyy-MM-dd')]: updatedEvents,\n });\n } else {\n setEventsByDate({\n ...eventsByDate,\n [format(date, 'yyyy-MM-dd')]: updatedEvents,\n })\n }\n }\n\n const onDragEnd = ({source, destination, draggableId}) => {\n if (!destination) return;\n\n const sourceEvents = Array.from(eventsByDate[source.droppableId]);\n const movedEventIndex = sourceEvents.findIndex(event => event.id === draggableId);\n const [movedEvent] = sourceEvents.splice(movedEventIndex, 1);\n\n if (source.droppableId === destination.droppableId) {\n sourceEvents.splice(destination.index, 0, movedEvent);\n return updateEventsByDate({\n ...eventsByDate,\n [source.droppableId]: sourceEvents,\n });\n }\n\n const destinationEvents = Array.from(eventsByDate[destination.droppableId] || []);\n destinationEvents.splice(destination.index, 0, movedEvent);\n updateEventsByDate({\n ...eventsByDate,\n [source.droppableId]: sourceEvents,\n [destination.droppableId]: destinationEvents,\n });\n };\n\n const handleMonthChange = (e) => {\n const month = e?.target?.value;\n mobileDateRef.current.value = month;\n setDefaultDate(month);\n setWeeks(getWeeksToDisplay(month));\n };\n\n useEffect(() => {\n setScrolledMonth(startOfMonth(defaultDate))\n }, [defaultDate]);\n\n useEffect(() => {\n // make sure mobile calendar displays properly when resizing the window\n const handleResize = () => {\n setWeeks(getWeeksToDisplay(defaultDate));\n };\n\n const debouncedHandleResize = debounce(handleResize, 400);\n\n window.addEventListener('resize', debouncedHandleResize);\n\n return () => {\n window.removeEventListener('resize', debouncedHandleResize);\n };\n }, [defaultDate]);\n\n if (!examDate) return null;\n\n const weeksDates = Array.from({length: weeks}, (_, index) => addWeeks(startOfWeek(defaultDate, {weekStartsOn: firstDayOfWeek}), index));\n const renderedWeeks = weeksDates.map((weekStart, index) => (\n <Week\n key={weekStart}\n defaultDate={defaultDate}\n weekStart={weekStart}\n weekIndex={index + 1}\n firstDay={firstDay}\n setScrolledMonth={setScrolledMonth}\n eventsByDate={eventsByDate}\n examDate={examDate}\n width={width}\n updateEventsByDate={updateEventsByDate}\n selectedDate={selectedDate}\n setSelectedDate={setSelectedDate}\n membershipExpirationDate={membershipExpirationDate}\n endDate={endDate}\n updateCompleteStatus={updateCompleteStatus}\n updateAssignmentDate={updateAssignmentDate}\n updateEvent={updateEvent}\n createAssignmentOnDate={createAssignmentOnDate}\n />\n ));\n\n if (width <= 768) {\n return (\n <CalendarContainer>\n <CalendarHeaderContainer>\n <MobileCalendarHeaderRow>\n <StyledCalendarHeaderMonth>\n <MobileDateSelect ref={mobileDateRef} defaultValue={defaultDate} onChange={handleMonthChange}>\n {Array.from({length: 12}, (_, index) => {\n const date = addMonths(startOfMonth(initialDisplayDate), index);\n const paddedExamDate = parse(examDate, 'yyyy-MM-dd', new Date());\n const disabled = isBefore(new Date(paddedExamDate), new Date(date))\n return <option key={date} value={date} disabled={disabled}>{format(date, 'MMM yyyy')}</option>\n })}\n </MobileDateSelect>\n </StyledCalendarHeaderMonth>\n <CalendarHeaderButtonsContainer>\n <CalendarButton onClick={handleToday}>Today</CalendarButton>\n <MobileCalendarButton onClick={onClickRebalance}>\n <Wand size={16} color=\"#2F3037\" />\n </MobileCalendarButton>\n <MobileCalendarButton onClick={onClickSettings}>\n <Settings size={16} color=\"#2F3037\" />\n </MobileCalendarButton>\n </CalendarHeaderButtonsContainer>\n </MobileCalendarHeaderRow>\n <MobileProgressRow style={{paddingTop: 0}}>\n <PillContainer>\n <Pill style={{width: '100%'}}>\n <ProgressBarContainer>\n <ProgressBar progress={completedEvents / totalEvents * 100} />\n </ProgressBarContainer>\n {completedEvents} / {totalEvents}\n </Pill>\n <Pill>\n <TargetArrow size={16} />{daysUntilExam} days until exam\n </Pill>\n </PillContainer>\n </MobileProgressRow>\n <CalenderHeaderDayRow>\n {Array.from({ length: 7 }, (_, index) => (\n <CalendarHeaderDay children={format(addDays(startOfWeek(defaultDate, {weekStartsOn: firstDayOfWeek}), index), 'E')} />\n ))}\n </CalenderHeaderDayRow>\n </CalendarHeaderContainer>\n <DragDropContext onDragEnd={onDragEnd}>\n <Calendar>\n {renderedWeeks}\n </Calendar>\n <CalendarDay\n documentWidth={width}\n examDate={examDate}\n isExamDate={format(selectedDate, 'yyyy-MM-dd') === examDate}\n startDate={firstDay}\n date={selectedDate}\n isPresent={selectedDate >= startOfDay(new Date())}\n events={eventsByDate[format(selectedDate, 'yyyy-MM-dd')]}\n updateCompleteStatus={updateCompleteStatus}\n updateAssignmentDate={updateAssignmentDate}\n updateEvent={updateEvent}\n createAssignmentOnDate={createAssignmentOnDate}\n />\n </DragDropContext>\n </CalendarContainer>\n )\n }\n\n return (\n <CalendarShadow>\n <CalendarContainer>\n <CalendarHeaderContainer>\n <TopLeftRadius src={topLeft}/>\n <TopRightRadius src={topRight}/>\n <CalendarHeaderRow>\n <StyledCalendarHeaderMonth>{format(scrolledMonth, 'MMM yyyy')}</StyledCalendarHeaderMonth>\n <CalendarHeaderButtonsContainer style={{marginLeft: '0', marginRight: 'auto'}}>\n <CalendarButton onClick={handleToday}>Today</CalendarButton>\n <div style={{display: 'flex', flexDirection: 'row', alignItems: 'center', marginLeft: '-4px'}}>\n <ChevronButton onClick={handleBack} />\n <ChevronButton style={{transform: 'rotate(180deg)'}} onClick={handleForward} />\n </div>\n </CalendarHeaderButtonsContainer>\n <CalendarHeaderButtonsContainer>\n <CalendarButton onClick={onClickRebalance}>\n <Wand size={16} color=\"#2F3037\" /> Rebalance\n </CalendarButton>\n <CalendarButton style={{width: 32, padding: '0px 7px'}} onClick={onClickSettings}>\n <Settings size={16} color=\"#2F3037\" />\n </CalendarButton>\n </CalendarHeaderButtonsContainer>\n </CalendarHeaderRow>\n <CalendarHeaderRow style={{paddingTop: 0}}>\n <PillContainer>\n <Pill style={{width: '100%'}}>\n <ProgressBarContainer>\n <ProgressBar progress={completedEvents / totalEvents * 100} />\n </ProgressBarContainer>\n {completedEvents} / {totalEvents} assignments completed\n </Pill>\n <Pill>\n <TargetArrow size={16} />{daysUntilExam} days until exam\n </Pill>\n </PillContainer>\n </CalendarHeaderRow>\n <StyledCalendarHeaderDayRow>\n {Array.from({ length: 7 }, (_, index) => (\n <StyledCalendarHeaderDay children={format(addDays(startOfWeek(defaultDate, {weekStartsOn: firstDayOfWeek}), index), 'E')} />\n ))}\n </StyledCalendarHeaderDayRow>\n </CalendarHeaderContainer>\n <DragDropContext onDragEnd={onDragEnd}>\n <Calendar id={'calendar-container'}>\n {renderedWeeks}\n <Waypoint key={initialDisplayDate} onEnter={() => {\n // if we're beyond the exam day, return\n const nextMonth = addWeeks(weeksDates[weeks - 1], 1);\n if (nextMonth > parse(endDate, 'yyyy-MM-dd', new Date())) return;\n\n const firstDateNextMonth = getDate(nextMonth) - 1;\n const newDaysInNextMonth = getDaysInMonth(nextMonth) - firstDateNextMonth;\n const weeksToAdd = Math.ceil((newDaysInNextMonth) / 7) + 1;\n setWeeks(weeks + weeksToAdd);\n }} />\n </Calendar>\n </DragDropContext>\n </CalendarContainer>\n </CalendarShadow>\n );\n};\n\nconst MobileDateSelect = styled.select`\n appearance: none;\n border: none;\n font-family: proxima-nova;\n font-weight: 700;\n font-size: 16px;\n line-height: 125%;\n background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTciIHZpZXdCb3g9IjAgMCAxNyAxNyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTMuNDM4MjIgNS4zMzA4QzMuNTMxOTcgNS4yMzcxNiAzLjY1OTA1IDUuMTg0NTcgMy43OTE1NSA1LjE4NDU3QzMuOTI0MDUgNS4xODQ1NyA0LjA1MTE0IDUuMjM3MTYgNC4xNDQ4OSA1LjMzMDhMOC42MjQ4OSA5LjgxMDhMMTMuMTA0OSA1LjMzMDhDMTMuMTk5NyA1LjI0MjQ4IDEzLjMyNSA1LjE5NDM5IDEzLjQ1NDYgNS4xOTY2OEMxMy41ODQxIDUuMTk4OTcgMTMuNzA3NyA1LjI1MTQ0IDEzLjc5OTMgNS4zNDMwNUMxMy44OTA5IDUuNDM0NjYgMTMuOTQzNCA1LjU1ODI1IDEzLjk0NTcgNS42ODc3OEMxMy45NDggNS44MTczMiAxMy44OTk5IDUuOTQyNjggMTMuODExNiA2LjAzNzQ2TDguOTc4MjIgMTAuODcwOEM4Ljg4NDQ3IDEwLjk2NDQgOC43NTczOSAxMS4wMTcgOC42MjQ4OSAxMS4wMTdDOC40OTIzOCAxMS4wMTcgOC4zNjUzIDEwLjk2NDQgOC4yNzE1NSAxMC44NzA4TDMuNDM4MjIgNi4wMzc0NkMzLjM0NDU5IDUuOTQzNzEgMy4yOTE5OSA1LjgxNjYzIDMuMjkxOTkgNS42ODQxM0MzLjI5MTk5IDUuNTUxNjMgMy4zNDQ1OSA1LjQyNDU1IDMuNDM4MjIgNS4zMzA4WiIgZmlsbD0iIzg1ODY4RSIvPgo8L3N2Zz4K);\n background-repeat: no-repeat;\n background-position: right 8px center;\n padding: 6px 16px;\n padding-left: 0px;\n padding-right: 24px;\n margin-left: 0;\n margin-right: auto;\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n`\n\nconst PillContainer = styled.div`\n display: flex;\n flex-direction: row;\n gap: 8px;\n width: 100%;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n gap: 8px;\n }\n`;\n\nconst Pill = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 8px;\n padding: 4px 8px;\n border-radius: var(--Spacing-Border-Radius-spacing_radius_small, 4px);\n border: 1px solid var(--Colors-Border-color_border_primary, #EDEDF0);\n background: var(--Colors-Buttons-color_button_transparent, rgba(255, 255, 255, 0.10));\n white-space: nowrap;\n font-family: var(--Typography-Font-FontFamily-font_family_proxima_nova, proxima-nova);\n font-size: 12px;\n`;\n\nexport default CalendarComponent;","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAhCAYAAAC4JqlRAAAACXBIWXMAACxLAAAsSwGlPZapAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJRSURBVHgBzVc9U9tAEH17PkhknDFSQoNMh+mCU9mhCkOKTDJpmKFKMqGh4i/zT1zcsrt3Z8TwMWCExPPYOn3c7tt3u3syXV5cMREQAoNkwBzAAJyN5Zpz4BCQQek6ZA7JQZ8mPdEjuTinYWdYOEz23mG33rRj9dHbl20e4FlMgB2aUOf60YeEWTKfCOQxGxvoTOZ4w4gJdusNfJ4NsX/wHtODAo9BqMhMxzdWKN7g7NIuCRlVyFGDSHyQE5uiGGC+GOHwy5Y5fip88paMBQ3KrKYA7Z5ybEa4IiikiqHDt5NtHJ+MbfxceF2voI7FnhuQ5cLKCd8MLF6ixj3G/OgDfv4ubU3XhbeozXhKRDTWOydcThlVRr7VJ49//3dE6gIvhY+OIgMlIwttDCwFk3NYqgV7ZiZr/EecryP3gwTUcGBeJVYuLgva/AapDIcfv8YmeZswArEHJMm15olWdW45InROz0pJtjHahs+Vp2pbT0gnlBWQ67remnCvAUeNgcqsiGrETD89q17NucLn2rZmm8rN1JAfXe/j7+3LfptASj1Kix57OTD/Omo94e4lYLWdw0ZMgbLynThXuEZzs6xXHn/Pd6S7baALxEaE1P2EzUKkn7bQ4Z5MIO9mupeX1UCk30aXsM0o9/mFlFtX0mdY49fuV8qOtjgaoWt4K0ARYCovEV1Hr3B5x+uq7O4lsN9T9EZAG8HhbAt9wem7Tpd1f4dAJW23lvf13gjUe5voE27SY/RGoJ70TGDY0tvt2gRe8qeiDdByuWT0iH71fwsErgGlb9lqoopuvAAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAhCAYAAAC4JqlRAAAACXBIWXMAACxLAAAsSwGlPZapAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJKSURBVHgBzZaxUxNBFMa/vYHmUmhBHKXADFpAKBNtsSRpgb9B8R9y7BwpRTulBVpjxYzSMIPMMBSk0MLgROfWfe/tu71zHBXI3fJNLnf77rL32++93Y05OfliYYHR6Ae+uWN4NsLR0Vd89sf5+U9Ydx/gLxiTuHYG33DX1p0M3zdIuJ24dqbPuKj7CahJj0lfQWY8Hv8WKuvTxyEG70/5OHNwRQDDPRO/9Z0b5eIXcRwm7yvAgs/c/hdAUeTI9rtD7O0eS8fcSWGkvlN1qxwTBXe8axcBUJETr18dYHfnGMYU70ineYtvygO25L3N45cCKIFsHWBvRxyRVJRHLEwmf2luvY9fCUBFTrxxIMPhd36RAnBRQuslOMFxw0UyGQASubH5Yh+DwamMMrNSsJB8q0MChnA9KQDVlqsNckOtJjN4ViiGpgA+NmkA0vbbQ2y+3M9HzRAA8hkZarAaABLVxfNnH/LFySQ6ck2FnBNUpOVHc3j8tCM1YMI01MVJzqgOgCGW57C6vigvtmFxok/ic1ApAGl1bQGd7u0QcCBZlrnVUJyoHIC04VLRvJVy8XH23UyQJdnWA5A2pvFko8PzUZfuzO+atQCQ2kszWOnNFyK22lnwJ62tLyBNp/hanagVgFLR69/3LVNfERbV699DI53mGqg9BSRyYaU/77fjCACk7oNZmZIGcQDutm7wrCCIKACkbvdO9XvBXwEezvI2HQ2g2UzRaEzFAyAttmfiArSXmnEBaE2ICtBq3YzvQGV/Sv9XUR24FgC/ADlxKUIri6n+AAAAAElFTkSuQmCC\"","import React, {useState, useEffect} from 'react';\nimport styled from 'styled-components';\nimport API, {graphqlOperation} from '@aws-amplify/api';\nimport {parse, differenceInDays, format, parseISO} from 'date-fns';\nimport {ToastContainer, toast, Slide} from 'react-toastify';\nimport {IntercomAPI} from 'react-intercom';\nimport Storage from '@aws-amplify/storage';\n\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\nimport {distributeEvents, calculateDaysOff} from './helpers';\nimport {UpdateComplete} from './components/shared';\n\nimport {H1, Body4} from '@bootcamp/web/src/components/Typography/next';\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\nimport Container from '../PageContainer';\nimport Breadcrumbs from '../../../components/NavBar/components/Breadcrumbs';\n\nimport Create from './components/Create';\nimport SettingsModal from './components/Modals/Settings';\nimport RebalanceModal, {UndoRebalanceConfirmation} from './components/Modals/Rebalance';\nimport CalendarComponent from './components/Calendar';\n\nimport {TargetArrow} from '@styled-icons/fluentui-system-filled/TargetArrow';\nimport {Dismiss} from '@styled-icons/fluentui-system-filled/Dismiss';\n\nimport 'react-toastify/dist/ReactToastify.css';\nimport {Info} from '@styled-icons/fluentui-system-filled/Info';\nimport {RoundButton} from '@bootcamp/web/src/components/UI';\nimport {Wand} from '@styled-icons/fluentui-system-filled/Wand';\nimport {Settings} from '@styled-icons/fluentui-system-filled/Settings';\nimport {TooltipProvider} from './contexts/Tooltip';\n\nconst StyledToastContainer = styled(ToastContainer)`\n --toastify-toast-width: auto;\n\n .Toastify__toast {\n border-radius: 8px;\n background: transparent;\n ${({theme}) => theme.mediaQueries.custom(480)} {\n width: calc(100vw - 32px) !important;\n left: 0 !important;\n right: 0 !important;\n margin: 0 auto !important;\n bottom: 16px !important;\n }\n }\n .Toastify__toast-container {\n padding: 0px;\n position: absolute;\n }\n .Toastify__toast-body {\n padding: 0;\n }\n`;\nconst StyledBreadcrumbs = styled(Breadcrumbs)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n * {\n font-size: 16px !important;\n line-height: 16px !important;\n }\n margin-bottom: 8px;\n }\n`;\nconst PageTitle = styled(H1)`\n color: white;\n margin-top: 0px;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n font-size: 28px;\n line-height: 35px;\n }\n`;\n\nconst ControlContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n`;\n\nconst PillContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 12px;\n`;\n\nconst Pill = styled.div`\n padding: 4px 8px;\n border-radius: 8px;\n background: rgba(255, 255, 255, 0.1);\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n font-size: 14px;\n line-height: 100%;\n font-weight: 400;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n font-family: proxima-nova, sans-serif;\n`;\nconst ProgressBarContainer = styled.div`\n width: 65px;\n height: 8px;\n background: linear-gradient(180deg, rgba(0, 0, 0, 0.04) 0%, rgba(0, 0, 0, 0.02) 100%);\n box-shadow: 0px 4px 8px 0px #0000000F inset;\n position: relative;\n border-radius: 8px;\n`;\nconst ProgressBar = styled.div`\n width: ${({progress}) => progress}%;\n height: 100%;\n background: ${({theme}) => theme.colors.brandPalette.blue.gradient};\n border-radius: 8px;\n position: absolute;\n top: 0;\n left: 0;\n`;\n\nconst BlurbContainer = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 5px 16px;\n background: rgba(255, 255, 255, 0.1);\n border-radius: 8px;\n gap: 8px;\n margin-bottom: 12px;\n`;\n\nconst InfoIcon = styled(Info)`\n color: #FFFFFFB2;\n`;\n\nconst InfoIconContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border-radius: 100px;\n margin-right: 0px;\n`;\n\nconst BlurbText = styled(Body4)`\n color: white;\n margin-left: 0px;\n margin-right: auto;\n flex: 1;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n display: none;\n }\n`;\nconst BlurbTextMobile = styled(BlurbText)`\n display: none;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n display: flex;\n }\n`;\n\nconst DismissIcon = styled(Dismiss)`\n color: white;\n`;\nconst DismissIconContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 100px;\n background: rgba(255, 255, 255, 0.1);\n cursor: pointer;\n &:hover {\n background: rgba(255, 255, 255, 0.2);\n }\n`;\n\n\nconst Blurb = ({text, mobileText}) => {\n const [open, setOpen] = useState(true);\n\n if (!open) return null;\n\n return (\n <BlurbContainer>\n <InfoIconContainer children={<InfoIcon size={14} />} />\n <BlurbText children={text} />\n <BlurbTextMobile children={mobileText} />\n <DismissIconContainer onClick={() => setOpen(false)} children={<DismissIcon size={16} />} />\n </BlurbContainer>\n )\n}\n\nconst StyledButton = styled(RoundButton)`\n box-shadow: none;\n background: rgba(255, 255, 255, 0.1);\n div {\n font-weight: 700;\n }\n color: white;\n &:hover {\n background: rgba(255, 255, 255, 0.2);\n }\n`;\n\nconst StudySchedule = ({match, history}) => {\n const {DEFAULT_USER_ID, bootcamp, saveUserInteraction, searchUserInteractions, isBootcampPlusStudent} = useUserDataContext();\n useDocumentTitle(`${bootcamp == 'med-school' ? 'Med School' : bootcamp.toUpperCase()} Bootcamp | Study Schedule`);\n\n const [loading, setLoading] = useState(true);\n const [value, setValue] = useState(null);\n const [content, setContent] = useState([]);\n const {modalDispatch} = useModalContext();\n\n const examDate = searchUserInteractions(`testDate`, false);\n const studySpeed = searchUserInteractions(`studySpeed`, 1);\n \n const incompleteEvents = value\n ? Object.values(value).reduce((acc, events) => acc.concat(events.filter(event => !event.complete)), [])\n : [];\n const remainingHours = Math.ceil(incompleteEvents.reduce((acc, event) => acc + (parseInt(event.estimatedTime || 0) * (event?.custom ? 1 : studySpeed)), 0) / 60);\n const totalEvents = value\n ? Object.values(value).reduce((acc, events) => acc + events.length, 0)\n : 0;\n const completedEvents = value\n ? Object.values(value).reduce((acc, events) => acc + events.filter(event => event.complete).length, 0)\n : 0;\n const daysUntilExam = examDate\n ? differenceInDays(parse(examDate, 'yyyy-MM-dd', new Date()), new Date()) + 1\n : 0;\n const overdueIncompleteEvents = value\n ? Object.entries(value).reduce((acc, [date, events]) => {\n const today = new Date().toISOString().slice(0, 10);\n const isPast = date < today;\n if (isPast) {\n acc = acc.concat(events.filter(event => !event.complete));\n }\n return acc;\n }, [])\n : [];\n\n const daysOff = calculateDaysOff(value);\n\n const resetSchedule = async () => {\n await API.graphql({query:`\n mutation deleteQuickCache($input: DeleteQuickCacheInput!) {\n deleteQuickCache(input: $input) {\n id\n }\n }\n `, variables: {input: {id: `${DEFAULT_USER_ID}-${bootcamp}-study-schedule`}}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n\n setValue(null);\n setLoading(true);\n init();\n };\n\n const rebalanceSchedule = async (startDate, daysOff=[], newExamDate, hoursPerDay) => {\n setLoading(true);\n\n // take current events, and redistribute all incomplete events according to daysOff and hoursPerDay\n const completedEvents = value ? Object.entries(value).reduce((acc, [date, events]) => {\n const filteredEvents = events.filter(event => event.complete);\n return filteredEvents?.length ? {...acc, [date]: filteredEvents} : acc;\n }, {}) : {};\n const distributedEvents = distributeEvents(incompleteEvents, startDate, daysOff, hoursPerDay, studySpeed);\n // merge completed events with distributedEvents\n\n // distributedEvents is an object with date keys and event arrays as values\n // completedEvents is an object with date keys and event arrays as values\n // merge the distributedEvents and completedEvents objects\n const distributedEventsFlat = Object.entries(distributedEvents)\n const completedEventsFlat = Object.entries(completedEvents)\n \n const mergedEvents = [...distributedEventsFlat, ...completedEventsFlat].reduce((acc, [date, events]) => {\n if (acc[date]) {\n acc[date] = [...acc[date], ...events];\n } else {\n acc[date] = events;\n }\n return acc;\n }, {});\n\n // update quickCache\n await API.graphql({query:`\n mutation updateQuickCache($input: UpdateQuickCacheInput!) {\n updateQuickCache(input: $input) {\n id\n }\n }\n `, variables: {input: {id: `${DEFAULT_USER_ID}-${bootcamp}-study-schedule`, content: JSON.stringify(mergedEvents)}}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n\n await IntercomAPI('trackEvent', 'Rebalanced Study Schedule', {startDate, oldExamDate: examDate, newExamDate, daysOff: daysOff?.length, hoursPerDay: Math.ceil(hoursPerDay)});\n await saveUserInteraction(`testDate`, JSON.stringify(newExamDate));\n\n setValue(mergedEvents);\n setLoading(false);\n\n toast(<UpdateComplete iconName=\"wand\" title=\"Rebalance Successful\" body={<>You'll be studying about {Math.ceil(hoursPerDay)} hours daily. <span style={{textDecoration: 'underline'}} onClick={() => rollbackSchedule(value, examDate)}>Undo Rebalance</span></>} />, {\n toastId: 'rebalance-complete',\n position: 'bottom-center',\n autoClose: false,\n hideProgressBar: true,\n draggableDirection: 'y',\n draggablePercent: 100,\n transition: Slide,\n closeButton: false,\n style: {\n padding: 0,\n }\n });\n };\n\n const openRollbackRebalanceConfirmation = async () => {\n const {data} = await API.graphql({query:`\n query getQuickCache($id: ID!) {\n getQuickCache(id: $id) {\n id\n content\n }\n }\n `, variables: {id: `${DEFAULT_USER_ID}-${bootcamp}-study-schedule-rollback`}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n const originalSchedule = JSON.parse(data.getQuickCache.content);\n const originalExamDate = searchUserInteractions(`testDate-rollback`, false);\n\n const originalIncompleteEvents = originalSchedule\n ? Object.values(originalSchedule).reduce((acc, events) => acc.concat(events.filter(event => !event.complete)), [])\n : [];\n const originalRemainingHours = Math.ceil(originalIncompleteEvents.reduce((acc, event) => acc + (parseInt(event.estimatedTime || 0) * (event?.custom ? 1 : studySpeed)), 0) / 60);\n const originalDaysUntilExam = originalExamDate\n ? differenceInDays(parse(originalExamDate, 'yyyy-MM-dd', new Date()), new Date()) + 1\n : 0;\n const originalOverdueIncompleteEvents = originalSchedule\n ? Object.entries(originalSchedule).reduce((acc, [date, events]) => {\n const today = new Date().toISOString().slice(0, 10);\n const isPast = date < today;\n if (isPast) {\n acc = acc.concat(events.filter(event => !event.complete));\n }\n return acc;\n }, [])\n : [];\n\n const originalHoursPerDay = Math.ceil(originalRemainingHours / originalDaysUntilExam);\n\n const currentDaysBetweenStartAndExam = examDate && Object.keys(value)[0]\n ? differenceInDays(parse(examDate, 'yyyy-MM-dd', new Date()), parse(Object.keys(value)[0], 'yyyy-MM-dd', new Date())) - (daysOff?.length || 0)\n : null;\n\n const currentHoursPerDay = currentDaysBetweenStartAndExam ? Math.ceil(remainingHours / currentDaysBetweenStartAndExam) : null;\n\n modalDispatch({\n type: 'open',\n component: UndoRebalanceConfirmation,\n enableClickClose: true,\n componentProps: {\n rollbackSchedule,\n remainingHours,\n currentSchedule: {\n startDate: Object.keys(value)[0],\n overdueIncompleteEvents,\n examDate,\n daysOff,\n hoursPerDay: currentHoursPerDay,\n },\n originalSchedule: {\n startDate: Object.keys(originalSchedule)[0],\n overdueIncompleteEvents: originalOverdueIncompleteEvents,\n examDate: originalExamDate,\n remainingHours: originalRemainingHours,\n hoursPerDay: originalHoursPerDay,\n },\n loading\n }\n });\n }\n\n const rollbackSchedule = async (value, examDate) => {\n setLoading(true);\n\n await API.graphql({query:`\n mutation updateQuickCache($input: UpdateQuickCacheInput!) {\n updateQuickCache(input: $input) {\n id\n }\n }\n `, variables: {input: {id: `${DEFAULT_USER_ID}-${bootcamp}-study-schedule`, content: JSON.stringify(value)}}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n setValue(value);\n\n await saveUserInteraction(`testDate`, JSON.stringify(examDate), true)\n\n setLoading(false);\n\n const incompleteEvents = value\n ? Object.values(value).reduce((acc, events) => acc.concat(events.filter(event => !event.complete)), [])\n : [];\n const remainingHours = Math.ceil(incompleteEvents.reduce((acc, event) => acc + (parseInt(event.estimatedTime || 0) * (event?.custom ? 1 : studySpeed)), 0) / 60);\n const totalEvents = value\n ? Object.values(value).reduce((acc, events) => acc + events.length, 0)\n : 0;\n const completedEvents = value\n ? Object.values(value).reduce((acc, events) => acc + events.filter(event => event.complete).length, 0)\n : 0;\n const daysUntilExam = examDate\n ? differenceInDays(parse(examDate, 'yyyy-MM-dd', new Date()), new Date()) + 1\n : 0;\n const overdueIncompleteEvents = value\n ? Object.entries(value).reduce((acc, [date, events]) => {\n const today = new Date().toISOString().slice(0, 10);\n const isPast = date < today;\n if (isPast) {\n acc = acc.concat(events.filter(event => !event.complete));\n }\n return acc;\n }, [])\n : [];\n\n const hoursPerDay = Math.ceil(remainingHours / daysUntilExam);\n\n toast(<UpdateComplete iconName=\"reply\" title=\"Undo Rebalance Complete\" body={overdueIncompleteEvents?.length == 0 ? `Studying about ${hoursPerDay} hour${hoursPerDay == 1 ? '' : 's'} daily.` : `Studying about ${hoursPerDay} hour${hoursPerDay == 1 ? '' : 's'} daily with ${overdueIncompleteEvents?.length <= 15 ? overdueIncompleteEvents?.length : '15+'} assignment${overdueIncompleteEvents?.length === 1 ? '' : 's'} overdue.`} />, {\n toastId: 'rebalance-rollback',\n position: 'bottom-center',\n autoClose: false,\n hideProgressBar: true,\n draggableDirection: 'y',\n draggablePercent: 100,\n transition: Slide,\n closeButton: false,\n style: {\n padding: 0,\n }\n });\n\n modalDispatch({type: 'close'});\n };\n\n const onCreate = async (startDate, daysOff, examDate, hoursPerDay) => {\n const distributedEvents = distributeEvents(content, startDate, daysOff, hoursPerDay, studySpeed);\n try {\n await API.graphql({query:`\n mutation createQuickCache($input: CreateQuickCacheInput!) {\n createQuickCache(input: $input) {\n id\n }\n }\n `, variables: {input: {id: `${DEFAULT_USER_ID}-${bootcamp}-study-schedule`, content: JSON.stringify(distributedEvents)}}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch (error) {\n console.log(error);\n try {\n await API.graphql({query:`\n mutation updateQuickCache($input: UpdateQuickCacheInput!) {\n updateQuickCache(input: $input) {\n id\n }\n }\n `, variables: {input: {id: `${DEFAULT_USER_ID}-${bootcamp}-study-schedule`, content: JSON.stringify(distributedEvents)}}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n } catch (error) {\n console.log('failed', error);\n }\n }\n\n saveUserInteraction(`testDate`, JSON.stringify(examDate));\n setValue(distributedEvents);\n\n await IntercomAPI('trackEvent', 'Created Study Schedule', {startDate, examDate, daysOff: daysOff?.length, hoursPerDay: Math.ceil(hoursPerDay)});\n };\n const init = async () => {\n try {\n const {data} = await API.graphql({\n query: `\n query getQuickCache($id: ID!) {\n getQuickCache(id: $id) {\n id\n content\n }\n }\n `, variables: {id: `${DEFAULT_USER_ID}-${bootcamp}-study-schedule`}, authMode: 'AMAZON_COGNITO_USER_POOLS'\n });\n\n let integrityCheck = true;\n if (data.getQuickCache) {\n let cachedData = JSON.parse(data.getQuickCache?.content || '{}');\n // make sure there's at least one event in the schedule\n const hasEvents = Object.values(cachedData).some(events => events.length > 0);\n if (!hasEvents) {\n // save the schedule to a backup\n await API.graphql({query:`\n mutation createQuickCache($input: CreateQuickCacheInput!) {\n createQuickCache(input: $input) {\n id\n }\n }\n `, variables: {input: {id: `${DEFAULT_USER_ID}-${bootcamp}-study-schedule-delete`, content: JSON.stringify(cachedData)}}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n await API.graphql({query:`\n mutation deleteQuickCache($input: DeleteQuickCacheInput!) {\n deleteQuickCache(input: $input) {\n id\n }\n }\n `, variables: {input: {id: `${DEFAULT_USER_ID}-${bootcamp}-study-schedule`}}, authMode: 'AMAZON_COGNITO_USER_POOLS'});\n integrityCheck = false;\n }\n }\n\n if (data.getQuickCache && integrityCheck) {\n let cachedData = JSON.parse(data.getQuickCache?.content || '{}');\n // filter out any nulls from cached values\n cachedData = Object.entries(cachedData).reduce((acc, [date, events]) => {\n if (events) acc[date] = events.filter(event => !!event && !['Geometry Qbank'].includes(event.title)).map(event => event?.subject == 'custom' ? {...event, custom: true} : event);\n return acc;\n }, {});\n if (!Object.keys(cachedData).length) cachedData = null;\n setValue(cachedData);\n } else {\n const fetchResult = await Storage.get(`json/${bootcamp}/scheduleContent.json`, {download: true, cacheControl: 'no-cache'});\n let content = JSON.parse(await fetchResult.Body.text());\n if (!isBootcampPlusStudent) {\n // filter out content with Bootcamp Plus in the title\n content = content.filter(item => item.description ? !item.description.includes('Bootcamp Plus') : true);\n }\n if (['inbde', 'dat', 'med-school', 'oat'].includes(bootcamp)) {\n saveUserInteraction('useSubjectColors', 'true');\n }\n setContent(content);\n }\n } catch (error) {\n console.log(error);\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n if (!DEFAULT_USER_ID) return;\n\n init();\n }, [DEFAULT_USER_ID]);\n\n if (loading) return null; // add loader\n const totalHours = Math.ceil(content.reduce((acc, event) => acc + (parseInt(event?.estimatedTime || 0) * (event?.custom ? 1 : studySpeed)), 0) / 60);\n const hoursPerDay = value && Object.keys(value).length > 0 ? Object.entries(value).reduce((acc, [date, events]) => {\n const totalMinutes = events.reduce((acc, event) => acc + (parseInt(event.estimatedTime || 0) * (event?.custom ? 1 : studySpeed)), 0);\n return {...acc, [date]: totalMinutes / 60};\n }, {}) : {};\n const hasTenHourDays = Object.values(hoursPerDay).some(hours => hours >= 10);\n const averagingTenHourDays = (Object.values(hoursPerDay).reduce((acc, hours) => acc + hours, 0) / Object.keys(hoursPerDay).length) >= 10;\n return (\n <Container>\n <StyledBreadcrumbs history={history} lockAtDepth={2} />\n <PageTitle>Your Study Schedule</PageTitle>\n {overdueIncompleteEvents.length > 15 && <Blurb text={\"You have more than 15 assignments overdue. Rebalance your schedule to get back on track!\"} mobileText={\"15+ assignments overdue\"} />}\n {hasTenHourDays && !averagingTenHourDays && !['med-school'].includes(bootcamp) && <Blurb text={\"You have 10+ hour study days, try rebalancing your schedule!\"} mobileText={\"10+ hours of study time\"} />}\n {averagingTenHourDays && <Blurb text={\"You're studying 10+ hours a day, try rebalancing or moving your exam date!\"} mobileText={\"10+ hours of study time\"} />}\n {value\n ? <>\n <CalendarComponent\n eventsByDate={value}\n setEventsByDate={setValue}\n totalEvents={totalEvents}\n completedEvents={completedEvents}\n daysUntilExam={daysUntilExam}\n onClickRebalance={() => modalDispatch({\n type: 'open', component: RebalanceModal, enableClickClose: true, componentProps: {\n rebalanceSchedule,\n remainingHours,\n rollbackSchedule,\n currentSchedule: {\n startDate: Object.keys(value)[0],\n overdueIncompleteEvents,\n examDate,\n daysOff,\n }}})}\n onClickSettings={() => modalDispatch({type: 'open', component: SettingsModal, enableClickClose: true, componentProps: {resetSchedule, eventsByDate: value}})}\n />\n <StyledToastContainer />\n </>\n : <Create onCreate={onCreate} totalHours={totalHours}/>\n }\n </Container>\n );\n};\n\nconst Wrapper = (props) => (\n <TooltipProvider>\n <StudySchedule {...props}/>\n </TooltipProvider>\n);\n\nexport default Wrapper;\n","import React from 'react';\nimport {Link} from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport styled, {css} from 'styled-components';\n\nimport {ChevronRight} from '@styled-icons/fluentui-system-filled/ChevronRight';\n\nimport {FlexBox, Column, Row} from '../../../components/Grid';\nimport {H3, Body3} from '../../../components/Typography';\nimport ProgressBar from '../../../components/ProgressBar';\n\nimport {ReactComponent as Badge} from '@bootcamp/shared/src/assets/svg/badge.svg';\nimport {useModalContext} from '../../../contexts/Modal';\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {Upgrade, SubmitAnatomyCase} from '../../../components/Modal';\nimport { Label2 } from '../../../components/Typography/next';\n\n\nconst LinkWrapper = styled(Link)`\n width: 100%;\n margin: auto;\n text-decoration: none;\n cursor: ${({loading}) => loading ? 'not-allowed' : 'pointer'};\n user-select: none;\n position: relative;\n display: inline-block;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n box-shadow: ${({theme}) => theme.elevation.shadow.medium};\n transition: all 100ms ease;\n border-radius: 8px;\n overflow: hidden;\n background: ${({theme}) => theme.colors.special.pearl};\n ${({locked, theme}) => locked ? css`\n opacity: 0.7;\n ` : css`\n &:hover {\n transform: scale(1.01);\n }\n `}\n`;\nconst Container = styled(FlexBox)`\n padding: 16px 24px;\n align-items: ${({showProgress}) => showProgress ? 'flex-start' : 'center'};\n ${({theme}) => theme.mediaQueries.mobileL} {\n padding: ${({theme}) => theme.layouts.spacing.m}\n }\n`;\nexport const Wrapper = styled.div`\n display: flex;\n flex-direction: row;\n flex: 1;\n\n ${({theme}) => theme.mediaQueries.mobileXl} {\n flex-direction: column;\n }\n`;\nconst ChapterTitle = styled(H3)`\n margin-bottom: ${({theme, showProgress}) => showProgress ? theme.layouts.spacing.s : 0};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({showProgress}) => showProgress ? '8px' : 0};\n }\n`;\nexport const ChapterNumber = styled(H3)`\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n`;\nexport const Left = styled(Column)`\n width: auto;\n height: auto;\n align-items: center;\n align-self: ${({showProgress}) => showProgress ? 'stretch' : 'center'};\n justify-content: space-between;\n`;\nexport const Middle = styled(Column)`\n flex: 1;\n padding: 0px 16px;\n justify-content: center;\n ${({theme}) => theme.mediaQueries.mobileL} {\n padding: 0px 16px;\n flex-direction: column;\n }\n`;\nexport const Right = styled(Row)`\n width: auto;\n height: auto;\n align-self: center;\n gap: 8px;\n align-items: center;\n justify-content: center;\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n\n ${({theme}) => theme.mediaQueries.mobileXl} {\n width: 100%;\n align-items: normal;\n justify-content: normal;\n padding: 0px 16px;\n margin-top: 8px;\n }\n`;\nconst ProgressBarWrapper = styled.div`\n width: 100%;\n ${({fullWidthProgress}) => !fullWidthProgress && `max-width: 630px;`}\n ${({hidden}) => hidden && `visibility: hidden;`}\n\n ${({theme}) => theme.mediaQueries.laptop} {\n max-width: 575px;\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n width: 100%;\n max-width: none;\n }\n`;\n\nconst defaultProgress = {\n reviewing: 0,\n learning: 0,\n mastered: 0,\n total: 0,\n};\n\nconst UpgradeCover = styled(Row)`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n justify-content: center;\n align-items: center;\n opacity: 0;\n background: ${({theme}) => theme.overlays.opacity.light._300};\n backdrop-filter: blur(0px);\n border-radius: 8px;\n transition: opacity .1s;\n z-index: 1;\n &:hover {\n backdrop-filter: blur(10px);\n opacity: 1;\n }\n`;\nconst UpgradeText = styled(Row)`\n height: auto;\n justify-content: center;\n align-items: center;\n font-family: 'proxima-nova';\n font-weight: ${({theme}) => theme.font.size.semibold};\n font-size: ${({theme}) => theme.font.size.regular};\n line-height: ${({theme}) => theme.font.height.regular};\n color: ${({themePalette}) => themePalette.default};\n`;\n\nconst FooterText = styled(Body3)`\n color: ${({themePalette}) => themePalette.dark};\n`;\n\nconst UpgradeBadge = styled(Badge)`\n ${({large}) => large ? css`\n height: 24px;\n width: 24px;\n path {\n fill: ${({themePalette}) => themePalette.dark};\n }\n ` : css`\n height: 16px;\n width: 16px;\n margin-right: 8px;\n path {\n fill: ${({themePalette}) => themePalette.default};\n }\n `}\n`;\nconst Details = styled(Label2)`\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n margin-top: ${({theme}) => theme.layouts.spacing.s};\n`;\n\n\nconst Chapter = ({\n className,\n name,\n route,\n progress,\n index,\n icon,\n questionCount,\n videoLessonCount,\n showVideoProgress,\n comingSoon,\n comingSoonText,\n defaultLocked,\n simLocked,\n themePalette,\n label,\n progressSegments,\n showProgress=true,\n actions={},\n rawRoute=false,\n loading,\n fullWidthProgress,\n showPercentage,\n onClick,\n children,\n details\n}) => {\n const {modalDispatch} = useModalContext();\n const {bootcamp} = useUserDataContext();\n const loadingProgress = progress === 'loading';\n\n const {learning, reviewing, mastered} = progress || defaultProgress;\n\n\n const segments = progressSegments || [\n {count: mastered},\n {count: reviewing},\n {count: learning}\n ];\n\n if (comingSoon) {\n return (\n <LinkWrapper as={'div'} className={className}>\n <Container>\n <Left>\n {icon}\n <ChapterNumber>\n {index}\n </ChapterNumber>\n </Left>\n <Middle>\n <ChapterTitle>\n {comingSoonText\n ? comingSoonText\n : `In Progress: ${name}`\n }\n </ChapterTitle>\n <MobileVisible>{children}</MobileVisible>\n </Middle>\n <MobileHidden>{children}</MobileHidden>\n </Container>\n </LinkWrapper>\n )\n }\n\n if (defaultLocked) {\n\n const onClickHandler = simLocked ?\n () => modalDispatch({\n type: 'open',\n component: SubmitAnatomyCase,\n componentProps: {\n headerText: 'This content has been locked by your university.',\n bodyText: `Stay tuned for more updates from your university for when this content will be available to you.`,\n confirmConfig: {\n text: 'OK'\n },\n cancelConfig: {\n text: null\n }\n },\n enableClickClose: true,\n modalContainerStyle: theme => `\n background: ${theme.overlays.opacity.dark._300};\n padding: 10vh 10vw;\n align-items: flex-start;\n ${theme.mediaQueries.tablet} {\n background: ${theme.overlays.opacity.dark._400};\n padding: 0;\n }\n `\n })\n : ['oat', 'inbde', 'dat', 'nclex'].includes(bootcamp)\n ? () => modalDispatch({\n type: 'open',\n component: Upgrade,\n enableClickClose: true,\n modalContainerStyle: theme => `\n padding: 10vh 10vw;\n align-items: flex-start;\n ${theme.mediaQueries.tablet} {\n padding: 0;\n }\n `\n })\n : () => window.open(`https://bootcamp.com/${bootcamp}/upgrade`, '_blank');\n\n return (\n <LinkWrapper as={'a'} className={className} to={'#'} onClick={(loadingProgress || loading) ? () => {} : onClickHandler} loading={loadingProgress}>\n <Container>\n <Left showProgress={showProgress}>\n {icon}\n <ChapterNumber>\n {index}\n </ChapterNumber>\n </Left>\n <Wrapper>\n <Middle>\n <ChapterTitle showProgress={showProgress}>{name}</ChapterTitle>\n {showProgress &&\n <ProgressBarWrapper fullWidthProgress={fullWidthProgress}>\n <ProgressBar\n loading={loadingProgress}\n segments={segments}\n total={questionCount}\n label={label}\n lightMode\n />\n </ProgressBarWrapper>\n }\n {children}\n </Middle>\n <Right>\n {actions}\n </Right>\n </Wrapper>\n </Container>\n </LinkWrapper>\n )\n }\n\n return (\n <LinkWrapper className={className} to={loading || onClick ? '#' : rawRoute ? route : ({pathname}) => `${pathname}/${route}`} onClick={(loadingProgress || loading) ? () => {} : onClick}>\n <Container showProgress={showProgress}>\n <Left showProgress={showProgress}>\n {icon}\n <ChapterNumber>\n {index}\n </ChapterNumber>\n </Left>\n <Wrapper>\n <Middle>\n <ChapterTitle showProgress={showProgress}>{name}</ChapterTitle>\n {showProgress &&\n <ProgressBarWrapper fullWidthProgress={fullWidthProgress}>\n <ProgressBar\n loading={loadingProgress}\n segments={segments}\n total={showVideoProgress ? videoLessonCount : questionCount}\n label={\n showVideoProgress\n ? <span>{<strong>{`${progress?.mastered || 0}`}</strong>} of {`${videoLessonCount} videos completed`}</span>\n : label\n }\n lightMode\n showPercentage={showPercentage}\n />\n </ProgressBarWrapper>\n }\n <MobileVisible>{children}</MobileVisible>\n {details && <Details>{details}</Details>}\n </Middle>\n <MobileHidden>{children}</MobileHidden>\n <Right>\n {actions}\n </Right>\n </Wrapper>\n </Container>\n </LinkWrapper>\n );\n}\nconst MobileHidden = styled.div`\n align-self: center;\n ${({theme}) => theme.mediaQueries.tablet} {\n display: none;\n }\n`\nconst MobileVisible = styled.div`\n display: none;\n ${({theme}) => theme.mediaQueries.tablet} {\n display: flex;\n width: 100%;\n align-self: center;\n }\n`\nChapter.propTypes = {\n index: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n route: PropTypes.string.isRequired,\n actions: PropTypes.arrayOf(PropTypes.element)\n};\n\nChapter.defaultProps = {\n actions: [<ChevronRight size={20}/>]\n}\n\nexport default Chapter;\n","import React, {useState, useEffect} from 'react';\nimport styled, {css} from 'styled-components';\nimport API, {graphqlOperation} from '@aws-amplify/api';\n\nimport {Play} from '@styled-icons/remix-fill/Play';\nimport {CloudDownloadOutline} from '@styled-icons/evaicons-outline/CloudDownloadOutline';\nimport {useUserDataContext} from '../../../../contexts/UserData';\nimport {useModalContext} from '../../../../contexts/Modal';\nimport {SubmitAnatomyCase} from '../../../../components/Modal';\nimport {checkTestProgressAttempt} from '@bootcamp/shared/src/util';\n\nimport {RoundButton, UpgradeButton as UpgradeButtonUI} from '../../../../components/UI';\n\nimport {Button} from '../../../../components/Branding/Buttons';\nimport theme from '@bootcamp/shared/src/styles/theme';\nimport {Label3} from '@bootcamp/web/src/components/Typography/next';\nimport {CheckmarkCircle} from '@styled-icons/fluentui-system-regular/CheckmarkCircle';\nimport {Info} from '@styled-icons/fluentui-system-filled/Info';\n\nexport const PlayButton = styled(Button).attrs(props => ({type: 'secondary', size: 'small', children: 'Lesson Video', iconConfig: {position: 'left', icon: Play, size: 16, color: 'white'}, ...props,}))`\n`;\n\nexport const PDFButton = styled(Button).attrs(props => ({type: 'secondary', size: 'small', children: 'PDF Outline', iconConfig: { position: 'left', icon: CloudDownloadOutline, size: 16 }, ...props}))`\n`;\n\nexport const AtlasButton = styled(Button).attrs(props => ({type: 'secondary', size: 'small', children: 'View Atlas', iconConfig: {position: 'left', icon: CloudDownloadOutline, size: 16}, ...props}))`\n`;\n\nconst DefaultStyledUpgradeButton = styled(UpgradeButtonUI).attrs(props => ({small: true}))`\n`;\n\nexport const UpgradeButton = ({className}) => {\n return (\n <DefaultStyledUpgradeButton\n className={className}\n children={'Upgrade'}\n iconPosition={'left'}\n small\n // onClick={onClick}\n />\n );\n};\n\n\nconst ResultItem = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 88px;\n border-left: 1px solid ${({theme}) => theme.colors.borderPalette.primary};\n border-right: 1px solid ${({theme}) => theme.colors.borderPalette.primary};\n\n ${({theme}) => theme.mediaQueries.mobileXl} {\n display: none;\n }\n`;\nconst ResultItemText = styled(Label3)`\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n font-weight: 700;\n margin-top: 8px;\n `;\nconst ResultItemSubText = styled(ResultItemText)`\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n font-weight: 400;\n margin-top: 4px;\n`;\nconst IconWrapper = styled.div`\n display: flex;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n border-radius: 100px;\n width: 16px;\n height: 16px;\n`;\n\nconst AlertIcon = styled(Info)`\n color: ${({theme}) => theme.colors.interfacePalette.red.default};\n`;\nconst AlertContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 100px;\n background-color: ${({theme}) => theme.colors.interfacePalette.red.default}3A;\n padding: 12px;\n width: fit-content;\n height: auto;\n margin: 0 auto;\n margin-bottom: 16px;\n`;\n\nconst ResetButtonContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 16px;\n`;\nconst StyledButton = styled(Button)`\n width: 92px;\n`;\n\nexport const ResetButton = ({testId, themePalette, className, setInitialized}) => {\n const [testProgressId, setTestProgressId] = useState();\n const [score, setScore] = useState();\n const {DEFAULT_USER_ID, bootcamp} = useUserDataContext();\n const {modalDispatch} = useModalContext();\n\n useEffect(() => {\n if (!testId || !DEFAULT_USER_ID || !!score) return;\n\n const fetchTestProgress = async () => {\n\n const {progressId, score} = await checkTestProgressAttempt(DEFAULT_USER_ID, testId, bootcamp);\n\n setTestProgressId(progressId);\n setScore(score);\n };\n\n fetchTestProgress();\n }, [testId, DEFAULT_USER_ID]);\n\n useEffect(() => {\n if (!testProgressId || ((score?.total === 0 || !score) && bootcamp !== 'inbde') || typeof setInitialized !== 'function') return;\n\n setInitialized(state => ({...state, [testId]: true}));\n\n }, [testProgressId, score]);\n\n const onClick = () => modalDispatch({\n type: 'open',\n component: SubmitAnatomyCase,\n componentProps: {\n icon: <AlertContainer><AlertIcon size={32} /></AlertContainer>,\n textAlign: 'center',\n headerText: 'Reset this question bank?',\n bodyText: 'This will reset all questions within this question bank back to unanswered. Your question tags will remain.',\n confirmConfig: {\n onConfirm: async () => {\n // use API.graphql to set userIdHashTestId to null\n await API.graphql(graphqlOperation(`\n mutation UpdateTestProgress($input: UpdateTestProgressInput!) {\n updateTestProgress(input: $input) {\n id\n }\n }`, {input: {id: testProgressId, didReset: true}}))\n setTestProgressId();\n setInitialized(state => ({...state, [testId]: false}));\n },\n colorConfig: theme.colors.interfacePalette.red,\n text: 'Yes, reset this question bank'\n },\n cancelConfig: {\n text: 'No, don\\'t reset'\n },\n },\n enableClickClose: true,\n modalContainerStyle: theme => `\n background: ${theme.overlays.opacity.dark._300};\n padding: 10vh 10vw;\n align-items: flex-start;\n ${theme.mediaQueries.tablet} {\n background: ${theme.overlays.opacity.dark._400};\n padding: 0;\n }\n `\n });\n\n if (!testProgressId || score?.total == 0) return null;\n\n if (bootcamp === 'inbde') {\n return (\n <Button\n className={className}\n colorConfig={themePalette}\n round\n type=\"ghost\"\n children={'Reset'}\n size={'small'}\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n onClick();\n return false;\n }}\n />\n )\n }\n\n return (\n <ResetButtonContainer className={className}>\n {/* <ResultItem>\n <IconWrapper>\n <CheckmarkCircle />\n </IconWrapper>\n <ResultItemText>{Math.round(score?.correct * 100 / (score?.total || 1))}%</ResultItemText>\n <ResultItemSubText>Score</ResultItemSubText>\n </ResultItem> */}\n <StyledButton\n colorConfig={themePalette}\n round\n type=\"ghost\"\n children={'Reset'}\n size={'small'}\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n onClick();\n return false;\n }}\n />\n </ResetButtonContainer>\n );\n};\n\nexport const BeginPracticeButton = props => (\n <RoundButton\n children={props.attempted ? 'Resume' : 'Start'}\n iconPosition={'right'}\n small\n // IconComponent={<ArrowForwardOutline size={16} />}\n {...props}\n />\n);\n\nexport const StyledBeginPracticeButton = styled(BeginPracticeButton)`\n width: 92px;\n\n ${({theme}) => theme.mediaQueries.mobileXl} {\n font-size: 14px;\n flex: 1;\n height: 32px;\n padding: 0;\n ${({hideOnMobile}) => hideOnMobile && css`display: none;`}\n }\n`;\nconst StyledFlashcardButton = styled(StyledBeginPracticeButton)`\n width: auto;\n`;\nexport const StyledResetButton = styled(ResetButton)`\n\n ${({theme}) => theme.mediaQueries.mobileXl} {\n flex: 1;\n font-size: 14px;\n height: 32px;\n width: 100%;\n padding: 0;\n\n button {\n font-size: 14px;\n height: 32px;\n width: 100%;\n }\n }\n`;\nexport const StyledUpgradeButton = styled(UpgradeButton)`\n ${({theme}) => theme.mediaQueries.mobileXl} {\n font-size: 14px;\n flex: 1;\n height: 32px;\n padding: 0;\n ${({hideOnMobile}) => hideOnMobile && css`display: none;`}\n }\n`;\n\nexport const DownloadButton = ({themePalette, children = 'Download', onClick}) => (\n <StyledFlashcardButton\n children={children}\n onClick={onClick}\n themePalette={themePalette}\n small\n />\n);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled, {css} from 'styled-components';\n\nimport {ChevronRight} from '@styled-icons/feather/ChevronRight';\nimport {FlexBox, Column} from '../../../components/Grid';\nimport {H3, Body3} from '../../../components/Typography';\nimport {useModalContext} from '../../../contexts/Modal';\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {Upgrade} from '../../../components/Modal';\nimport {Right, Middle, Left} from './Chapter';\nimport {StyledUpgradeButton} from './components/Buttons';\n\nimport {DocumentArrowDown} from '@styled-icons/fluentui-system-filled/DocumentArrowDown';\n\nconst Container = styled(FlexBox)`\n cursor: pointer;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n user-select: none;\n padding: 16px 24px;\n background: ${({theme}) => theme.colors.special.pearl};\n border-radius: 8px;\n box-shadow: ${({theme}) => theme.elevation.shadow.medium};\n transition: all 100ms ease;\n ${({locked, theme}) => locked ? css`\n opacity: 0.7;\n ` : css`\n &:hover {\n transform: scale(1.01);\n }\n `}\n ${({theme}) => theme.mediaQueries.mobileL} {\n padding: ${({theme}) => theme.layouts.spacing.m}\n }\n`;\nconst Title = styled(H3)`\n`;\nconst Description = styled(Body3)`\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n max-width: 630px;\n`;\nexport const Wrapper = styled.div`\n display: flex;\n flex-direction: row;\n flex: 1;\n align-items: center;\n\n ${({theme}) => theme.mediaQueries.mobileXl} {\n flex-direction: column;\n }\n`;\n\nconst StyledDocumentArrowDown = styled(DocumentArrowDown)`\n color: ${({theme, themePalette}) => themePalette?.default || theme.colors.neutralsPalette.lightGrey};\n width: 42px;\n height: 42px;\n padding: 6px;\n border-radius: 64px;\n background: ${({themePalette}) => themePalette?.light || '#f6f9fc'} ;\n`;\n\nconst Download = ({className, name, description, label, onClick, locked, themePalette, actions={}, rawRoute=false, icon}) => {\n const {modalDispatch} = useModalContext();\n\n if (locked) {\n return (\n <Container className={className} onClick={() => modalDispatch({\n type: 'open',\n component: Upgrade,\n enableClickClose: true,\n modalContainerStyle: theme => `\n padding: 10vh 10vw;\n align-items: flex-start;\n ${theme.mediaQueries.tablet} {\n padding: 0;\n }\n `\n })}>\n <Left>\n {icon || <StyledDocumentArrowDown themePalette={themePalette} size={20}/>}\n </Left>\n <Wrapper>\n <Middle>\n <Title>{name}\n {description && (\n \n {description}\n \n )}\n \n \n \n \n \n \n )\n }\n return (\n \n \n {icon || }\n \n \n \n {name}\n {description && (\n \n {description}\n \n )}\n \n \n {actions}\n \n \n \n );\n}\n\nDownload.propTypes = {\n index: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n route: PropTypes.string.isRequired,\n actions: PropTypes.arrayOf(PropTypes.element)\n};\n\nDownload.defaultProps = {\n actions: []\n}\n\nexport default Download;\n","import React, {useState} from 'react';\nimport styled, {css} from 'styled-components';\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\n\nimport {useBootcampConfigContext} from '@bootcamp/web/src/contexts/BootcampConfig';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\n\nimport Container from '@bootcamp/web/src/bootcamps/pages/PageContainer';\nimport Overview from '@bootcamp/web/src/bootcamps/components/Cards/Overview';\nimport Breadcrumbs from '@bootcamp/web/src/components/NavBar/components/Breadcrumbs';\nimport Download from '@bootcamp/web/src/bootcamps/components/Cards/Download';\n\nimport {DownloadButton} from '@bootcamp/web/src/bootcamps/components/Cards/components/Buttons';\nimport theme from '@bootcamp/shared/src/styles/theme';\n\nimport Callout from '@bootcamp/web/src/bootcamps/components/Cards/Callout';\nimport {Info} from '@styled-icons/fluentui-system-filled/Info';\n\nimport {Row} from '@bootcamp/web/src/components/Grid';\nimport firstBy from 'thenby';\n\nimport {Label3} from '../../../components/Typography/next';\nimport {Star} from '@styled-icons/fluentui-system-filled/Star';\n\nconst StarIcon = styled(Star)`\n width: 16px;\n height: 16px;\n color: ${({theme}) => theme.colors.interfacePalette.yellow.alert};\n`;\n\nconst StyledBreadcrumbs = styled(Breadcrumbs)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n`;\nconst StyledOverview = styled(Overview)`\n background: transparent;\n box-shadow: none;\n border: none;\n padding: 0;\n margin-bottom: 16px;\n`;\nconst Icon = styled.img`\n width: 24px;\n height: 24px;\n margin: auto;\n`\nconst SectionSelectorContainer = styled(Row)`\n position: relative;\n flex-direction: column;\n gap: 8px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: row;\n flex-wrap: wrap;\n }\n`;\nconst SectionSelectorOption = styled.div`\n display: flex;\n align-items: center;\n padding: 8px 12px;\n width: 100%;\n border-radius: 8px;\n background: #FFFFFF1A;\n cursor: pointer;\n position: relative;\n\n ${({active}) => active && css`\n background: white;\n p {\n font-weight: 700;\n color: #2F3037;\n }\n `}\n\n ${({theme}) => theme.mediaQueries.tablet} {\n width: auto;\n }\n `;\nconst SectionSelectorIconWrapper = styled.div`\n margin-right: 4px;\n display: flex;\n\n img {\n width: 16px;\n height: 16px;\n }\n `;\nconst SectionSelectorText = styled(Label3)`\n color: white;\n text-transform: capitalize;\n font-weight: 400;\n position: relative;\n top: 1px;\n`;\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: row;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n }\n`;\nconst SelectionWrapper = styled.div`\n display: flex;\n flex-direction: column;\n padding: 12px;\n background: ${({theme}) => theme.colors.elevationPalette.surfaceTransparent};\n margin: 0 16px auto 0;\n border-radius: 8px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin: 0 0 16px 0;\n }\n`;\nconst SelectionText = styled(Label3)`\n text-transform: uppercase;\n font-size: 12px;\n color: ${({theme}) => theme.colors.typographyPalette.transparent};\n margin-bottom: 8px;\n`;\nconst ItemWrapper = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n`;\nconst StyledDownload = styled(Download)`\n height: auto;\n`;\n\nconst CheatSheets = ({\n history,\n items,\n subTitle,\n body,\n title,\n comingSoon,\n categories,\n}) => {\n const [activeTab, setActiveTab] = useState('all');\n const {config} = useBootcampConfigContext();\n const {isUpgraded} = useUserDataContext();\n\n useDocumentTitle(`${config.meta.siteTitle} | Cheat Sheets`);\n if (!isUpgraded) {\n items.sort(firstBy('freeAccess', {direction: 'desc'}));\n }\n const filteredItems = items.filter(item => activeTab === 'all' || activeTab === item.category);\n\n return (\n \n \n \n {comingSoon &&\n }>\n {`More coming soon! Cheat Sheets will be released as they become available.`}\n \n }\n \n \n filter by subject\n \n {['all', ...categories].map(categoryTitle => (\n setActiveTab(categoryTitle)}>\n \n {categoryTitle === 'all'\n ? \n : categoryTitle === category)?.iconUrl} />\n }\n \n \n {categoryTitle}\n \n\n \n ))}\n \n \n \n {filteredItems.map((item, index) => (\n window.open(item.route, '_blank')}\n icon={}\n actions={[\n \n ]}\n />\n ))}\n \n \n \n );\n}\n\nexport default CheatSheets;\n","import React from 'react';\n\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nimport CheatSheets from '@bootcamp/web/src/bootcamps/pages/CheatSheets';\n\n\nfunction getIconUrl(config, classroom) {\n try {\n const url = config?.classrooms?.find(({name}) => name === classroom).icon;\n return require(`@bootcamp/shared/src/assets/${url}`).default;\n } catch (error) {\n console.log('error getting iconl', error);\n }\n}\n\nconst INBDECheatSheets = ({history}) => {\n const {config} = useBootcampConfigContext();\n const {isUpgraded} = useUserDataContext();\n\n const items = config?.classrooms?.reduce((acc, classroom) => {\n return [\n ...acc,\n ...(classroom?.contentTypes?.find(({name}) => name === 'Cheat Sheets')?.content?.reduce((acc, {content}) => [...acc, ...(content || []).map(el => ({...el, classroom: classroom.name}))], [])|| [])\n ]\n }, []);\n\n const sortedItems = !isUpgraded\n ? [...items].sort((a, b) => a.freeAccess ? -1 : 1)\n : items;\n\n const formattedItems = sortedItems.map(({description, classroom, name, route, freeAccess}) => ({\n category: classroom,\n description,\n name,\n route,\n iconUrl: getIconUrl(config, classroom),\n freeAccess: isUpgraded ? true : freeAccess,\n }));\n\n const categories = [...new Set(items.map(item => item.classroom))];\n\n return (\n \n );\n}\n\nexport default INBDECheatSheets;\n","import React from 'react';\nimport styled from 'styled-components';\nimport Auth from '@aws-amplify/auth';\nimport {Link, withRouter} from 'react-router-dom';\n\nimport FieldRenderer from '../../FieldRenderer';\nimport FormWrapper from '../../FormWrapper';\n\nimport {FormSubmit} from '../';\nimport {Container, Header, Body, FieldGroup, LinkButton} from '../../';\n\nconst TermsOfUse = styled.div`\n margin-bottom: 24px;\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n padding: 0px ${({theme}) => theme.layouts.spacing.m};\n text-align: center;\n a {\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n &:visited {\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n }\n }\n`;\n\nconst Join = ({location, history, setRedirect, setCreatingAccount}) => {\n return (\n {\n const {email, password} = values;\n if (email.endsWith('bootcamp.com')) {\n return formMethods.setError('email', 'InvalidEmail', 'Invalid email address, please use your personal email address.');\n }\n try {\n setCreatingAccount(true);\n\n await Auth.signUp({\n username: email.toLowerCase(),\n password,\n attributes: {\n email\n }\n });\n\n // auto log user in (account verification is happening in preSignUp lambda trigger)\n await Auth.signIn(email.toLowerCase(), password);\n\n\n } catch (e) {\n setCreatingAccount(false);\n if (e.code === \"UsernameExistsException\") {\n return formMethods.setError('email', e.code, 'User already exists, try logging in');\n }\n if (e.code === \"UserLambdaValidationException\") {\n return formMethods.setError('email', e.code, e.message?.replace('PreSignUp failed with error ', ''));\n }\n }\n }}>\n \n \n
Create an account and start studying
\n }/>\n I already have an account}\n />\n \n \n Create My Free Account\n \n \n By clicking above, I agree to the Terms of Use.\n \n
\n
\n )\n}\n\nexport default withRouter(Join);\n\nconst JOIN_FORM_CONFIG = [\n {\n type: 'Text',\n label: 'Email',\n name: 'email',\n additionalInfo: '',\n inputProps: {\n autoFocus: true,\n type: 'email',\n autoComplete: 'username'\n },\n validation: () => ({\n required: 'Email is required',\n pattern: {\n value: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n message: 'Email must be valid'\n }\n })\n },\n {\n type: 'Password',\n label: 'Password',\n name: 'password',\n additionalInfo: '8+ characters',\n inputProps: {\n autoComplete: 'new-password'\n },\n validation: () => ({\n required: true,\n minLength: {\n value: 8,\n message: 'Must be at least 8 characters'\n }\n })\n }\n]\n","import React, {useState} from 'react';\nimport styled from 'styled-components';\nimport Auth from '@aws-amplify/auth';\n\nimport {Link, withRouter} from 'react-router-dom';\n\nimport FieldRenderer from '../../FieldRenderer';\nimport FormWrapper from '../../FormWrapper';\n\nimport {FormSubmit} from '../';\nimport {Container, Header, Body, FieldGroup, LinkButton} from '../../';\nimport {Body3} from '../../../Typography';\n\nconst ErrorText = styled(Body3)`\n color: ${({theme}) => theme.colors.interfacePalette.red.default};\n margin-top: 4px;\n text-align: center;\n`;\n\nconst SignIn = ({location, setRedirect}) => {\n const [user, setUser] = useState({});\n async function onSubmitHandler (values, formMethods, secondAttempt=false) {\n const {username: usernameAsSubmitted, password} = values;\n\n try {\n // try lowercase username by default\n const username = secondAttempt ? usernameAsSubmitted : usernameAsSubmitted.toLowerCase();\n\n const user = await Auth.signIn(username, password);\n setUser(user);\n if (user.challengeName === 'SMS_MFA' || user.challengeName === 'SOFTWARE_TOKEN_MFA') {\n // You need to get the code from the UI inputs\n // and then trigger the following function with a button click\n\n if (!values.mfaCode) return;\n const mfaType = user.challengeName;\n // If MFA is enabled, sign-in should be confirmed with the confirmation code\n await Auth.confirmSignIn(\n user, // Return object from Auth.signIn()\n values.mfaCode, // Confirmation code\n mfaType // MFA Type e.g. SMS_MFA, SOFTWARE_TOKEN_MFA\n );\n }\n\n } catch (e) {\n if (e.code === \"UserNotFoundException\") {\n if (secondAttempt) return formMethods.setError('username', e.code, `${e.message} User not found.`);\n // if this was the first attempt, rerun to try without forcing lowercase username\n return onSubmitHandler(values, formMethods, true);\n }\n if (e.code === \"NotAuthorizedException\") {\n if (e.message === \"Password attempts exceeded\") {\n // TODO: handle password overentry error\n return formMethods.setError('password', e.code, \"You've been locked out for 15 minutes. If you forgot your password, reset your password or send us an email at team@bootcamp.com.\");\n } else {\n return formMethods.setError('password', e.code, e.message);\n }\n }\n }\n }\n const limit = window.location.href.includes('?limit=true');\n\n return (\n \n \n \n
Jump back in
\n {limit && (\n \n You've been logged out because you've reached the max number of devices that can log into this account. Please log in again.\n \n )}\n }/>\n {user.challengeName === 'SMS_MFA' || user.challengeName === 'SOFTWARE_TOKEN_MFA' ? (\n \n ({\n required: 'MFA Code required',\n })\n }\n ]} />\n \n ) : null}\n Create an account} />\n \n \n Log In\n \n
\n
\n );\n}\n\n\nexport default withRouter(SignIn);\n\nconst ForgotPasswordLink = styled(Link)`\n color: ${({theme}) => theme.colors.brandPalette.indigo.default};\n cursor: pointer;\n text-decoration: none;\n`;\n\nconst SIGNIN_FORM_CONFIG = [\n {\n type: 'Text',\n label: 'Email / username',\n name: 'username',\n additionalInfo: '(Case Sensitive)',\n inputProps: {\n autoFocus: true,\n type: 'email',\n autoComplete: 'username'\n },\n validation: () => ({\n required: 'Email / username required',\n })\n },\n {\n type: 'Password',\n label: 'Password',\n name: 'password',\n additionalInfo: Forgot Password,\n inputProps: {\n autoComplete: 'current-password'\n },\n validation: () => ({\n required: true,\n minLength: {\n value: 8,\n message: 'Must be at least 8 characters'\n }\n })\n }\n]\n","import React from 'react';\nimport Auth from '@aws-amplify/auth';\n\nimport {Link, withRouter} from 'react-router-dom';\nimport {createUser, createMembership} from '@bootcamp/shared/src/requests';\n\nimport FieldRenderer from '../../FieldRenderer';\nimport FormWrapper from '../../FormWrapper';\n\nimport {FormSubmit} from '../';\nimport {Container, Header, Body, FieldGroup, LinkButton} from '../../';\n\nasync function login(username, password) {\n const requestUrl = `https://datbootcamp.com/wp-json/mobile/v1/login`;\n\n try {\n const authResponse = await fetch(requestUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json; charset=UTF-8',\n },\n body: JSON.stringify({username, password}),\n });\n\n const user = await authResponse.json();\n return user.token ? Promise.resolve(user) : Promise.reject(user);\n } catch (error) {\n const message = JSON.stringify({requestUrl, error, message: 'error logging in'});\n throw new Error(message);\n }\n}\n\nconst SignIn = ({location, setRedirect, setCreatingAccount, setBootcamp}) => {\n async function onSubmitHandler (values, formMethods, secondAttempt=false) {\n setBootcamp('dat');\n\n const {username: usernameAsSubmitted, password} = values;\n\n try {\n // try lowercase username by default\n const username = secondAttempt ? usernameAsSubmitted : usernameAsSubmitted.toLowerCase();\n\n const user = await Auth.signIn(username, password);\n\n if (user.challengeName === 'SMS_MFA' || user.challengeName === 'SOFTWARE_TOKEN_MFA') {\n // You need to get the code from the UI inputs\n // and then trigger the following function with a button click\n const code = window.prompt(`Enter authenticator code:`);\n\n if (!code) return setRedirect('/not-found');\n const mfaType = user.challengeName;\n // If MFA is enabled, sign-in should be confirmed with the confirmation code\n await Auth.confirmSignIn(\n user, // Return object from Auth.signIn()\n code, // Confirmation code\n mfaType // MFA Type e.g. SMS_MFA, SOFTWARE_TOKEN_MFA\n );\n }\n\n } catch (e) {\n if (e.code === \"UserNotFoundException\") {\n if (secondAttempt) {\n // TRY LOGGING INTO DBC\n try {\n const wpLoginAttempt = await login(usernameAsSubmitted, password);\n\n if (wpLoginAttempt.token) {\n // DISABLE REDIRECT AFTER SIGNIN\n setCreatingAccount('datbootcamp');\n\n await Auth.signUp({\n username: usernameAsSubmitted,\n password,\n attributes: {\n email: wpLoginAttempt.user_email\n }\n });\n\n // auto log user in (account verification is happening in preSignUp lambda trigger)\n await Auth.signIn(usernameAsSubmitted, password);\n\n await createUser(usernameAsSubmitted, wpLoginAttempt.id);\n\n if (parseInt(wpLoginAttempt.days_left) > 0) {\n const groups = wpLoginAttempt.isBootcampPlus ? ['DATBootcamp', 'PlusPackAccess'] : ['DATBootcamp'];\n await createMembership({\n id: `${usernameAsSubmitted}-${(new Date()).toISOString()}`,\n productId: wpLoginAttempt.isBootcampPlus ? 'price_1JpIi9D2xOfNJKfx5Q7ARaMs' : 'price_1JpIi9D2xOfNJKfxp7n8Nnnz',\n userMembershipsId: usernameAsSubmitted, // can't do user_id because due to cognito it has to match the username, no idOverride for memberships\n startDate: (new Date()).toISOString(),\n duration: wpLoginAttempt.days_left,\n status: 'active',\n groups,\n });\n }\n setRedirect('/dat');\n }\n } catch (e) {\n console.log(e);\n if (e.code === '[jwt_auth] incorrect_password') {\n return formMethods.setError('username', e.code, `Incorrect DATBootcamp.com user/pass`);\n }\n return formMethods.setError('username', e.code, `DATBootcamp login error: `);\n }\n return formMethods.setError('username', e.code, `${e.message} User not found.`);\n }\n // if this was the first attempt, rerun to try without forcing lowercase username\n return onSubmitHandler(values, formMethods, true);\n }\n if (e.code === \"NotAuthorizedException\") {\n if (e.message === \"Password attempts exceeded\") {\n // TODO: handle password overentry error\n return formMethods.setError('password', e.code, e.message);\n } else {\n return formMethods.setError('password', e.code, e.message);\n }\n }\n }\n }\n\n return (\n \n \n \n
Log in with your DATBootcamp.com account
\n }/>\n Create a Bootcamp.com account} />\n Reset DATBootcamp.com password} />\n \n \n Log In\n \n
\n
\n );\n}\n\n\nexport default withRouter(SignIn);\n\nconst SIGNIN_FORM_CONFIG = [\n {\n type: 'Text',\n label: 'DATBootcamp.com Username',\n name: 'username',\n additionalInfo: '(Case Sensitive)',\n inputProps: {\n autoFocus: true,\n type: 'username',\n autoComplete: 'username'\n },\n validation: () => ({\n required: 'Email is required',\n })\n },\n {\n type: 'Password',\n label: 'Password',\n name: 'password',\n // additionalInfo: Forgot Password,\n inputProps: {\n autoComplete: 'current-password'\n },\n validation: () => ({\n required: true,\n minLength: {\n value: 8,\n message: 'Must be at least 8 characters'\n }\n })\n }\n]\n","import React, {useState} from 'react';\n\nimport {Auth} from 'aws-amplify';\nimport {useFormContext} from 'react-hook-form';\nimport {Redirect} from 'react-router-dom';\n\nimport {Link} from 'react-router-dom';\n\nimport FieldRenderer from '../../FieldRenderer';\nimport FormWrapper from '../../FormWrapper';\n\nimport {Container, Header, SubHeader, Body, FieldGroup, SubmitContainer, SubmitButton, LinkButton} from '../../';\n\n\nasync function sendResetPasswordCode(values, callback) {\n const {username} = values;\n\n try {\n await Auth.forgotPassword(username);\n callback(username);\n } catch (error) {\n // attempt a lowercased version of username\n const secondTry = await Auth.forgotPassword(username.toLowerCase());\n\n // if second try is successful - proceed\n return secondTry?.CodeDeliveryDetails?.AttributeName\n ? callback(username.toLowerCase())\n // otherwise fail silently\n : false;\n }\n}\n\nconst FormSubmit = ({children}) => {\n const {formState} = useFormContext();\n\n return (\n \n \n {children}\n \n \n );\n}\n\nconst ForgotPassword = () => {\n const [{redirecting, urlParams}, setRedirect] = useState({redirecting: false, urlParams: ''});\n\n if (redirecting) return \n\n const redirect = (email) => setRedirect({redirecting: true, urlParams: email});\n\n return (\n sendResetPasswordCode(values, redirect)}>\n \n \n
Want to reset your password?
\n We'll send a reset code to your contact email\n }/>\n Go back to login}\n />\n \n \n
\n
\n );\n}\n\n\nexport default ForgotPassword;\n\nconst FORGOT_PASSWORD_FORM_CONFIG = [\n {\n type: 'Text',\n label: 'Original email / username used to sign up (case sensitive)',\n name: 'username',\n inputProps: {\n type: 'email',\n autoComplete: 'username'\n }\n }\n];\n","import React, {useEffect} from 'react';\nimport PropTypes from 'prop-types';\n\nimport {Auth} from 'aws-amplify';\nimport {useFormContext} from 'react-hook-form';\nimport {Link, useHistory} from 'react-router-dom';\nimport queryString from 'query-string';\n\nimport FieldRenderer from '../../FieldRenderer';\nimport FormWrapper from '../../FormWrapper';\n\nimport {Container, Header, SubHeader, Body, FieldGroup, SubmitContainer, SubmitButton, LinkButton} from '../../';\n\nasync function updatePassword(values) {\n try {\n const {username, resetCode, confirmPassword} = values;\n await Auth.forgotPasswordSubmit(username, resetCode, confirmPassword);\n } catch (error) {\n console.log('error resetting password', error);\n return false;\n }\n}\n\nconst FormSubmit = ({children, onSubmit}) => {\n const {formState} = useFormContext();\n\n return (\n \n \n {children}\n \n \n );\n}\n\nconst ResetForm = ({username}) => {\n const {register, setValue} = useFormContext();\n\n useEffect(() => setValue('username', username), [username]);\n\n return (\n \n \n {/* TODO we can move this input into the form config and add it's hidden prop based on whether or not the email prop is passed*/}\n \n
Create your new password?
\n Use the code we sent to your contact email\n }/>\n Resend Code}\n />\n \n \n
\n );\n}\n\nconst ResetPassword = ({onSubmit, location}) => {\n const {username} = queryString.parse(location.search);\n const {push} = useHistory();\n\n return (\n {\n await updatePassword(values);\n push('/signin');\n }}>\n \n \n );\n}\n\n\nconst RESET_PASSWORD_FORM_CONFIG = [\n {\n type: 'Text',\n label: 'Enter Your Code',\n name: 'resetCode',\n inputProps: {\n autoFocus: true\n }\n },\n {\n type: 'Text',\n label: 'New Password',\n name: 'newPassword',\n additionalInfo: '8+ characters',\n inputProps: {\n type: 'password'\n },\n validation: () => ({\n minLength: {\n value: 8,\n message: 'Must be at least 8 characters'\n }\n })\n },\n {\n type: 'Text',\n label: 'Confirm New Password',\n name: 'confirmPassword',\n inputProps: {\n type: 'password',\n },\n validation: watch => ({\n validate: value => (watch('newPassword') === value) || 'passwords must match',\n })\n }\n];\n\nResetPassword.propTypes = {\n onSubmit: PropTypes.func,\n};\n\nResetPassword.defaultProps = {\n onSubmit: updatePassword,\n};\n\nexport default ResetPassword;\n","import React from 'react';\nimport styled from 'styled-components';\nimport {useUserDataContext} from '../../../../contexts/UserData';\nimport {IntercomAPI} from 'react-intercom';\nimport TagManager from 'react-gtm-module';\n\nimport {Container, Header, Body} from '../../';\nimport {Body3} from '../../../Typography';\nimport {Button} from '../../../Branding/Buttons';\n\n\nconst StyledContainer = styled(Container)`\n overflow: hidden;\n max-height: 500px;\n`;\nconst StyledBody = styled(Body)`\n overflow-y: auto;\n`;\nconst StyledHeader = styled(Header)`\n`;\nconst SubHeader = styled(Body3)`\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n margin-bottom: ${({theme}) => theme.layouts.spacing.l}\n`;\nconst SelectButton = styled(Button)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n`;\n\nconst SelectBootcamp = ({setRedirect}) => {\n const {setBootcamp, cognitoUser} = useUserDataContext();\n\n const handleBootcampSelect = (bootcamp) => {\n IntercomAPI('trackEvent', 'Signed up', {bootcamp});\n IntercomAPI('update', {bootcamp, email: cognitoUser?.attributes?.email})\n TagManager.dataLayer({\n dataLayer: {\n email: cognitoUser?.attributes?.email,\n event: 'Sign Up',\n bootcamp\n }\n });\n let redirectUrl = `/${bootcamp}`;\n if (bootcamp === 'nclex') {\n redirectUrl += '/next-gen-cases'\n }\n setRedirect(redirectUrl);\n setBootcamp(bootcamp);\n };\n\n return (\n \n \n What are you studying?\n Select a Bootcamp below to begin studying\n handleBootcampSelect('dat')}>\n DAT\n \n handleBootcampSelect('oat')}>\n OAT\n \n handleBootcampSelect('inbde')}>\n INBDE\n \n handleBootcampSelect('med-school')}>\n Med School\n \n handleBootcampSelect('mcat')}>\n MCAT\n \n handleBootcampSelect('dental-school')}>\n Dental School\n \n handleBootcampSelect('anatomy')}>\n Anatomy\n \n handleBootcampSelect('chemistry')}>\n Chemistry\n \n handleBootcampSelect('nclex')}>\n NCLEX\n \n \n \n );\n};\n\nSelectBootcamp.defaultProps = {};\nSelectBootcamp.propTypes = {};\n\nexport default SelectBootcamp;\n","import React from 'react';\nimport styled from 'styled-components';\nimport {useUserDataContext} from '../../../../contexts/UserData';\nimport {IntercomAPI} from 'react-intercom';\nimport TagManager from 'react-gtm-module';\n\nimport {Container, Header, Body} from '../../';\nimport {Body3} from '../../../Typography';\nimport {Button} from '../../../Branding/Buttons';\n\n\nconst StyledContainer = styled(Container)`\n overflow: hidden;\n max-height: 500px;\n`;\nconst StyledBody = styled(Body)`\n overflow-y: auto;\n`;\nconst StyledHeader = styled(Header)`\n margin-bottom: 24px;\n`;\nconst SubHeader = styled(Body3)`\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n margin-bottom: ${({theme}) => theme.layouts.spacing.l}\n`;\nconst SelectButton = styled(Button)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n`;\n\nconst FurtherInfo = ({setRedirect}) => {\n const {setBootcamp, validBootcamps} = useUserDataContext();\n\n function getBootcampFromUrlState(validBootcamps) {\n const search = window.location.hash.split('?')[1];\n const bootcamp = new URLSearchParams(search)\n ?.get('redirectTo')\n ?.replace('/', '')\n ?.split('/')[0];\n return validBootcamps.includes(bootcamp) ? bootcamp : null;\n }\n const bootcampDestination = getBootcampFromUrlState(validBootcamps) || 'anatomy';\n\n const handleSelect = (info) => {\n IntercomAPI('update', {'Area_of_Study': info});\n setRedirect(`/${bootcampDestination}`);\n setBootcamp(bootcampDestination);\n };\n\n return (\n \n \n What are you studying?\n handleSelect('nursing')}>\n Nursing\n \n \n \n );\n};\n\nFurtherInfo.defaultProps = {};\nFurtherInfo.propTypes = {};\n\nexport default FurtherInfo;\n","import React, {useState, useEffect, useRef} from 'react';\nimport styled from 'styled-components';\n\nimport {AnimatedSwitch, spring} from 'react-router-transition';\nimport {HashRouter, Route, Redirect, useHistory, Link} from 'react-router-dom';\nimport {useFormContext} from 'react-hook-form';\nimport {IntercomAPI} from 'react-intercom';\nimport TagManager from 'react-gtm-module';\n\nimport {Column} from '../../../components/Grid';\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {SubmitContainer, SubmitButton} from '../';\n\nimport Join from './Join';\nimport SignIn from './SignIn';\nimport DATSignIn from './DATSignIn';\nimport ForgotPassword from './ForgotPassword';\nimport ResetPassword from './ResetPassword';\nimport SelectBootcamp from './SelectBootcamp';\nimport FurtherInfo from './FurtherInfo';\nimport {LoadingSpinner} from '../../Branding';\nimport {Container as SmallContainer, Header, SubHeader, Body} from '../';\n\nconst Container = styled(Column)`\n max-width: 528px;\n align-items: center;\n height: ${({height}) => height}px;\n`;\n\nconst Switcher = styled(AnimatedSwitch)`\n position: relative;\n width: 100%;\n height: 100%;\n > div {\n position: absolute;\n width: 100%;\n height: 100%;\n }\n`;\n\n\nfunction mapStyles(styles) {\n return {\n opacity: styles.opacity,\n transform: `translateX(${styles.offset}px)`\n };\n}\n\nfunction glide(val) {\n return spring(val, {\n stiffness: 174,\n damping: 19,\n });\n}\n\nconst pageTransitions = {\n atEnter: {\n offset: 200,\n opacity: 0,\n },\n atLeave: {\n offset: glide(-100),\n opacity: glide(0),\n },\n atActive: {\n offset: glide(0),\n opacity: glide(1),\n },\n};\nconst RouteWrapperContainer = styled.div`\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin: 0px 16px;\n }\n`;\nconst RouteWrapper = ({setHeight, ...props}) => {\n return (\n {\n node && setHeight(node.getBoundingClientRect().height);\n }}>\n \n \n )\n}\n\nfunction getBootcampFromUrlState(validBootcamps) {\n const search = window.location.hash.split('?')[1];\n const bootcamp = new URLSearchParams(search)\n ?.get('redirectTo')\n ?.replace('/', '')\n ?.split('/')[0];\n return validBootcamps.includes(bootcamp) ? bootcamp : null;\n}\n\nconst FormSubmit = ({setRedirect, children}) => {\n const {loading, loggedIn} = useUserDataContext();\n const {formState} = useFormContext();\n\n return (\n \n \n {children}\n \n \n );\n}\n\nconst AuthNavigation = () => {\n const [height, setHeight] = useState(0);\n const [redirect, setRedirect] = useState(false);\n const [creatingAccount, setCreatingAccount] = useState(false)\n const {loggedIn, bootcamp, loading, validBootcamps, setBootcamp, cognitoUser} = useUserDataContext();\n const {location} = useHistory();\n const routerRef = useRef();\n\n useEffect(() => {\n const bootcampDestination = getBootcampFromUrlState(validBootcamps) || bootcamp;\n if (!loggedIn || loading) {\n return;\n } else if (bootcampDestination) {\n if (false && bootcampDestination === 'anatomy') {\n setCreatingAccount(false);\n routerRef?.current?.history.push('/details?redirectTo=anatomy');\n return\n }\n\n try {\n if (creatingAccount === 'datbootcamp') {\n return;\n }\n if (creatingAccount) {\n // only run when creating account\n IntercomAPI('trackEvent', 'Signed up', {bootcamp: bootcampDestination});\n IntercomAPI('update', {bootcamp: bootcampDestination, email: cognitoUser?.attributes?.email})\n TagManager.dataLayer({\n dataLayer: {\n email: cognitoUser?.attributes?.email,\n event: 'Sign Up',\n bootcamp: bootcampDestination\n }\n })\n }\n } catch (e) {\n console.log(e);\n }\n // route to app.bootcamp/[bootcamp] home page\n setBootcamp(bootcampDestination);\n\n if (bootcampDestination === 'nclex') {\n return setRedirect('/nclex/next-gen-cases')\n }\n \n const redirectTo = window.location?.hash?.match(/redirectTo=(.*)/)?.[1];\n setRedirect(redirectTo || `/${bootcampDestination}`);\n } else {\n // UserData is unable to determine a 'recent-bootcamp' from our user interactions table, redirect to bootcamp select screen\n setCreatingAccount(false);\n routerRef?.current?.history.push('/bootcamp');\n }\n }, [loggedIn, loading, bootcamp, location]);\n\n if (redirect) return ;\n\n if (loading) {\n return (\n \n )\n }\n const bootcampDestination = getBootcampFromUrlState(validBootcamps) || bootcamp;\n\n return (\n e.stopPropagation()} height={height}>\n \n \n }/>\n }/>\n }/>\n }/>\n }/>\n }/>\n }/>\n \n \n \n \n )\n}\n\nexport {FormSubmit};\nexport default AuthNavigation;\n","import React from 'react';\nimport styled from 'styled-components';\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\nimport {useHistory} from 'react-router-dom';\nimport {Column} from '../../../components/Grid';\nimport AuthNavigation from '../../../components/Form/Auth';\nimport IconButton from '../../../components/Branding/Buttons/IconButton';\nimport {ChevronLeft} from '@styled-icons/feather/ChevronLeft';\n\nimport {ReactComponent as BootcampLogo} from '@bootcamp/shared/src/assets/svg/bootcamp_white_text_logo.svg';\n\n\nconst ContainerBackgroundColor = styled.div`\n width: 100%;\n height: 100vh;\n background: ${({theme}) => theme.colors.brandPalette.royal.dark};\n`;\nconst BackButtonLink = styled.div`\n position: absolute;\n top: ${({theme}) => theme.layouts.spacing.xl};\n left: ${({theme}) => theme.layouts.spacing.xl};\n z-index: 12;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n position: relative;\n top: 0;\n left: 0;\n margin-right: ${({theme}) => theme.layouts.spacing.s};\n }\n`;\nconst BackButton = styled(IconButton).attrs({type: 'secondary', size: 'large'})`\n ${({theme}) => theme.mediaQueries.mobileL} {\n height: 40px;\n width: 40px;\n padding: 8px;\n }\n `;\nconst BackButtonIcon = styled(ChevronLeft).attrs({size: 32})`\n color: white;\n\n`;\nconst LogoWrapper = styled.div`\n display: flex;\n width: 289px;\n height: 30px;\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n justify-content: center;\n align-items: center;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin: 0;\n height: 40px;\n }\n\n`;\nconst Wrapper = styled.div`\n ${LogoWrapper} {\n display: none;\n }\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n display: flex;\n align-items: center;\n padding: ${({theme}) => `${theme.layouts.spacing.m}`};\n\n ${LogoWrapper} {\n display: flex;\n }\n }\n`;\nconst Content = styled(Column)`\n max-width: 528px;\n align-items: center;\n margin: auto;\n padding-top: 90px;\n height: auto;\n position: relative;\n z-index: 10;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n padding-top: 0;\n\n ${LogoWrapper} {\n display: none;\n }\n }\n`;\n\nconst StyledBootcampLogo = styled(BootcampLogo)`\n max-width: 250px;\n margin-bottom: 32px;\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin: 0;\n max-width: 100%;\n width: auto; \n height: 100%;\n }\n`;\n\nconst Authentication = () => {\n const {goBack} = useHistory();\n\n useDocumentTitle('Bootcamp | Authentication');\n\n return (\n \n \n } />\n \n \n } />\n \n \n \n )\n}\n\nexport default Authentication;\n","export const updatedDatScoringReference = {\n \"Biology\": {\n \"4\": \"200\",\n \"11\": \"210\",\n \"12\": \"260\",\n \"13\": \"290\",\n \"14\": \"320\",\n \"15\": \"340\",\n \"16\": \"360\",\n \"17\": \"370\",\n \"18\": \"390\",\n \"19\": \"410\",\n \"20\": \"420\",\n \"21\": \"440\",\n \"22\": \"460\",\n \"23\": \"470\",\n \"24\": \"490\",\n \"25\": \"500\",\n \"26\": \"520\",\n \"27\": \"550\",\n \"28\": \"580\",\n \"29\": \"590\",\n \"30\": \"600\",\n },\n \"General Chemistry\": {\n \"4\": \"200\",\n \"10\": \"210\",\n \"11\": \"240\",\n \"12\": \"280\",\n \"13\": \"310\",\n \"14\": \"330\",\n \"15\": \"350\",\n \"16\": \"360\",\n \"17\": \"380\",\n \"18\": \"400\",\n \"19\": \"410\",\n \"20\": \"430\",\n \"21\": \"440\",\n \"22\": \"460\",\n \"23\": \"470\",\n \"24\": \"490\",\n \"25\": \"510\",\n \"26\": \"530\",\n \"27\": \"550\",\n \"28\": \"570\",\n \"29\": \"580\",\n \"30\": \"600\",\n },\n \"Organic Chemistry\": {\n \"4\": \"200\",\n \"10\": \"210\",\n \"11\": \"260\",\n \"12\": \"300\",\n \"13\": \"320\",\n \"14\": \"330\",\n \"15\": \"350\",\n \"16\": \"370\",\n \"17\": \"380\",\n \"18\": \"400\",\n \"19\": \"410\",\n \"20\": \"430\",\n \"21\": \"450\",\n \"22\": \"470\",\n \"23\": \"480\",\n \"24\": \"490\",\n \"25\": \"510\",\n \"26\": \"530\",\n \"27\": \"550\",\n \"28\": \"560\",\n \"29\": \"570\",\n \"30\": \"600\"\n },\n \"Perceptual Ability\": {\n \"4\": \"200\",\n \"12\": \"210\",\n \"13\": \"250\",\n \"14\": \"280\",\n \"15\": \"310\",\n \"16\": \"340\",\n \"17\": \"360\",\n \"18\": \"390\",\n \"19\": \"410\",\n \"20\": \"430\",\n \"21\": \"450\",\n \"22\": \"470\",\n \"23\": \"500\",\n \"24\": \"520\",\n \"25\": \"550\",\n \"26\": \"580\",\n \"27\": \"580\",\n \"28\": \"590\",\n \"29\": \"600\",\n \"30\": \"600\"\n },\n \"Quantitative Reasoning\": {\n \"4\": \"200\",\n \"10\": \"210\",\n \"11\": \"240\",\n \"12\": \"270\",\n \"13\": \"300\",\n \"14\": \"320\",\n \"15\": \"340\",\n \"16\": \"360\",\n \"17\": \"380\",\n \"18\": \"400\",\n \"19\": \"420\",\n \"20\": \"430\",\n \"21\": \"450\",\n \"22\": \"460\",\n \"23\": \"480\",\n \"24\": \"500\",\n \"25\": \"510\",\n \"26\": \"520\",\n \"27\": \"540\",\n \"28\": \"580\",\n \"29\": \"590\",\n \"30\": \"600\"\n },\n \"Reading Comprehension\": {\n \"2\": \"200\",\n \"4\": \"210\",\n \"7\": \"220\",\n \"10\": \"220\",\n \"11\": \"220\",\n \"12\": \"230\",\n \"13\": \"260\",\n \"14\": \"280\",\n \"15\": \"300\",\n \"16\": \"320\",\n \"17\": \"340\",\n \"18\": \"360\",\n \"19\": \"370\",\n \"20\": \"390\",\n \"21\": \"410\",\n \"22\": \"430\",\n \"23\": \"450\",\n \"24\": \"470\",\n \"25\": \"490\",\n \"26\": \"510\",\n \"27\": \"550\",\n \"28\": \"550\",\n \"29\": \"560\",\n \"30\": \"600\"\n },\n \"SNS\": { // not being used but leaving for reference just in case\n \"2\": \"200\",\n \"4\": \"210\",\n \"6\": \"220\",\n \"8\": \"230\",\n \"10\": \"240\",\n \"11\": \"250\",\n \"12\": \"260\",\n \"13\": \"280\",\n \"14\": \"300\",\n \"15\": \"330\",\n \"16\": \"350\",\n \"17\": \"370\",\n \"18\": \"380\",\n \"19\": \"400\",\n \"20\": \"420\",\n \"21\": \"440\",\n \"22\": \"470\",\n \"23\": \"490\",\n \"24\": \"500\",\n \"25\": \"530\",\n \"26\": \"540\",\n \"27\": \"560\",\n \"28\": \"570\",\n \"29\": \"580\",\n \"30\": \"600\"\n }\n}\n","import ari from '@bootcamp/shared/src/assets/educators/ari.gif';\nimport {updatedDatScoringReference} from './updatedDATScoringReference';\n\nexport const defaultEducator = {\n name: 'Dr. Ari',\n imgUrl: ari,\n};\n\nexport const examResults = {\n \"Biology Test #1\": [\n \"30\",\n \"25\",\n \"24\",\n \"23\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"17\",\n \"16\",\n \"15\",\n \"14\"\n ],\n \"Biology Test #2\": [\n \"30\",\n \"25\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"17\",\n \"16\",\n \"15\",\n \"14\",\n \"14\",\n \"14\"\n ],\n \"Biology Test #3\": [\n \"30\",\n \"25\",\n \"23\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"17\",\n \"16\",\n \"15\",\n \"14\",\n \"14\"\n ],\n \"Biology Test #4\": [\n \"30\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"17\",\n \"16\",\n \"15\",\n \"14\",\n \"14\"\n ],\n \"Biology Test #5\": [\n \"30\",\n \"25\",\n \"23\",\n \"22\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"17\",\n \"16\",\n \"15\",\n \"14\"\n ],\n \"Biology Test #6\": [\n \"30\",\n \"25\",\n \"23\",\n \"22\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"19\",\n \"18\",\n \"16\",\n \"15\",\n \"14\"\n ],\n \"Biology Test #7\": [\n \"30\",\n \"25\",\n \"23\",\n \"22\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"19\",\n \"18\",\n \"16\",\n \"15\",\n \"14\"\n ],\n \"Biology Test #8\": [\n \"30\",\n \"25\",\n \"23\",\n \"22\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"19\",\n \"18\",\n \"16\",\n \"15\",\n \"14\"\n ],\n \"Biology Test #9\": [\n \"30\",\n \"25\",\n \"23\",\n \"22\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"19\",\n \"18\",\n \"16\",\n \"15\",\n \"14\"\n ],\n \"Biology Test #10\": [\n \"30\",\n \"25\",\n \"23\",\n \"22\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"19\",\n \"18\",\n \"16\",\n \"15\",\n \"14\"\n ],\n \"General Chemistry Test #1\": [\n \"30\",\n \"26\",\n \"24\",\n \"23\",\n \"22\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"18\",\n \"17\",\n \"16\",\n \"15\",\n \"14\"\n ],\n \"General Chemistry Test #2\": [\n \"30\",\n \"26\",\n \"24\",\n \"24\",\n \"23\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"18\",\n \"17\",\n \"16\",\n \"14\"\n ],\n \"General Chemistry Test #3\": [\n \"30\",\n \"26\",\n \"23\",\n \"22\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"17\",\n \"16\",\n \"15\",\n \"14\"\n ],\n \"General Chemistry Test #4\": [\n \"30\",\n \"26\",\n \"24\",\n \"23\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"19\",\n \"18\",\n \"17\",\n \"16\",\n \"14\"\n ],\n \"General Chemistry Test #5\": [\n \"30\",\n \"26\",\n \"24\",\n \"23\",\n \"22\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"19\",\n \"18\",\n \"17\",\n \"14\"\n ],\n \"General Chemistry Test #6\": [\n \"30\",\n \"26\",\n \"24\",\n \"23\",\n \"22\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"17\",\n \"14\"\n ],\n \"General Chemistry Test #7\": [\n \"30\",\n \"26\",\n \"24\",\n \"23\",\n \"22\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"17\",\n \"14\"\n ],\n \"General Chemistry Test #8\": [\n \"30\",\n \"26\",\n \"24\",\n \"23\",\n \"22\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"17\",\n \"14\"\n ],\n \"General Chemistry Test #9\": [\n \"30\",\n \"26\",\n \"24\",\n \"23\",\n \"22\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"17\",\n \"14\"\n ],\n \"General Chemistry Test #10\": [\n \"30\",\n \"26\",\n \"24\",\n \"23\",\n \"22\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"17\",\n \"14\"\n ],\n \"Organic Chemistry Test #1\": [\n \"30\",\n \"26\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"18\",\n \"17\",\n \"16\",\n \"15\",\n \"14\",\n \"13\",\n \"13\",\n \"12\"\n ],\n \"Organic Chemistry Test #2\": [\n \"30\",\n \"26\",\n \"23\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"17\",\n \"16\",\n \"15\",\n \"14\",\n \"14\"\n ],\n \"Organic Chemistry Test #3\": [\n \"30\",\n \"25\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"19\",\n \"18\",\n \"17\",\n \"16\",\n \"15\",\n \"14\",\n \"14\"\n ],\n \"Organic Chemistry Test #4\": [\n \"30\",\n \"26\",\n \"23\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"17\",\n \"16\",\n \"15\",\n \"14\",\n \"14\"\n ],\n \"Organic Chemistry Test #5\": [\n \"30\",\n \"26\",\n \"23\",\n \"23\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"17\",\n \"16\",\n \"14\"\n ],\n \"Organic Chemistry Test #6\": [\n \"30\",\n \"27\",\n \"23\",\n \"22\",\n \"22\",\n \"21\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"18\",\n \"18\",\n \"17\",\n \"16\",\n \"14\"\n ],\n \"Organic Chemistry Test #7\": [\n \"30\",\n \"27\",\n \"23\",\n \"22\",\n \"22\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"18\",\n \"18\",\n \"17\",\n \"16\",\n \"14\"\n ],\n \"Organic Chemistry Test #8\": [\n \"30\",\n \"27\",\n \"23\",\n \"22\",\n \"22\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"18\",\n \"18\",\n \"17\",\n \"16\",\n \"14\"\n ],\n \"Organic Chemistry Test #9\": [\n \"30\",\n \"27\",\n \"23\",\n \"22\",\n \"22\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"18\",\n \"18\",\n \"17\",\n \"16\",\n \"14\"\n ],\n \"Organic Chemistry Test #10\": [\n \"30\",\n \"27\",\n \"23\",\n \"22\",\n \"22\",\n \"21\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"18\",\n \"18\",\n \"17\",\n \"16\",\n \"14\"\n ],\n \"Perceptual Ability Test #1\": [\n \"30\",\n \"29\",\n \"26\",\n \"25\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"18\",\n \"17\",\n \"14\"\n ],\n \"Perceptual Ability Test #2\": [\n \"30\",\n \"29\",\n \"27\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"18\",\n \"17\",\n \"16\",\n \"14\"\n ],\n \"Perceptual Ability Test #3\": [\n \"30\",\n \"29\",\n \"27\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"18\",\n \"17\",\n \"16\",\n \"14\"\n ],\n \"Perceptual Ability Test #4\": [\n \"30\",\n \"29\",\n \"27\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"18\",\n \"17\",\n \"16\",\n \"14\"\n ],\n \"Perceptual Ability Test #5\": [\n \"30\",\n \"29\",\n \"27\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"18\",\n \"17\",\n \"16\",\n \"14\"\n ],\n \"Perceptual Ability Test #6\": [\n \"30\",\n \"29\",\n \"27\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"18\",\n \"17\",\n \"16\",\n \"14\"\n ],\n \"Perceptual Ability Test #7\": [\n \"30\",\n \"29\",\n \"27\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"18\",\n \"17\",\n \"16\",\n \"14\"\n ],\n \"Perceptual Ability Test #8\": [\n \"30\",\n \"29\",\n \"27\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"18\",\n \"17\",\n \"16\",\n \"14\"\n ],\n \"Perceptual Ability Test #9\": [\n \"30\",\n \"29\",\n \"27\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"18\",\n \"17\",\n \"16\",\n \"14\"\n ],\n \"Perceptual Ability Test #10\": [\n \"30\",\n \"29\",\n \"27\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"18\",\n \"17\",\n \"16\",\n \"14\"\n ],\n \"Perceptual Ability Test #11\": [\n \"30\",\n \"29\",\n \"27\",\n \"26\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"21\",\n \"20\",\n \"19\",\n \"18\",\n \"17\",\n \"14\"\n ],\n \"Perceptual Ability Test #12\": [\n \"30\",\n \"29\",\n \"27\",\n \"26\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"21\",\n \"20\",\n \"19\",\n \"18\",\n \"17\",\n \"14\"\n ],\n \"Perceptual Ability Test #13\": [\n \"30\",\n \"29\",\n \"27\",\n \"26\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"21\",\n \"20\",\n \"19\",\n \"18\",\n \"17\",\n \"14\"\n ],\n \"Perceptual Ability Test #14\": [\n \"30\",\n \"29\",\n \"27\",\n \"26\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"21\",\n \"20\",\n \"19\",\n \"18\",\n \"17\",\n \"14\"\n ],\n \"Perceptual Ability Test #15\": [\n \"30\",\n \"29\",\n \"27\",\n \"26\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"21\",\n \"20\",\n \"19\",\n \"18\",\n \"17\",\n \"14\"\n ],\n \"Reading Comprehension Test #1\": [\n \"30\",\n \"27\",\n \"25\",\n \"24\",\n \"22\",\n \"21\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"18\",\n \"16\",\n \"13\"\n ],\n \"Reading Comprehension Test #2\": [\n \"30\",\n \"27\",\n \"26\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"16\",\n \"13\"\n ],\n \"Reading Comprehension Test #3\": [\n \"30\",\n \"27\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"18\",\n \"16\",\n \"13\"\n ],\n \"Reading Comprehension Test #4\": [\n \"30\",\n \"27\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"18\",\n \"16\",\n \"13\"\n ],\n \"Reading Comprehension Test #5\": [\n \"30\",\n \"27\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"18\",\n \"16\",\n \"13\"\n ],\n \"Reading Comprehension Test #6\": [\n \"30\",\n \"27\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"18\",\n \"16\",\n \"13\"\n ],\n \"Reading Comprehension Test #7\": [\n \"30\",\n \"27\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"18\",\n \"16\",\n \"13\"\n ],\n \"Reading Comprehension Test #8\": [\n \"30\",\n \"27\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"18\",\n \"16\",\n \"13\"\n ],\n \"Reading Comprehension Test #9\": [\n \"30\",\n \"27\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"18\",\n \"16\",\n \"13\"\n ],\n \"Reading Comprehension Test #10\": [\n \"30\",\n \"27\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"18\",\n \"16\",\n \"13\"\n ],\n \"Reading Comprehension Test #11\": [\n \"30\",\n \"27\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"18\",\n \"16\",\n \"13\"\n ],\n \"Reading Comprehension Test #12\": [\n \"30\",\n \"27\",\n \"26\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"16\",\n \"13\"\n ],\n \"Reading Comprehension Test #13\": [\n \"30\",\n \"27\",\n \"26\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"16\",\n \"13\"\n ],\n \"Reading Comprehension Test #14\": [\n \"30\",\n \"27\",\n \"26\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"16\",\n \"13\"\n ],\n \"Reading Comprehension Test #15\": [\n \"30\",\n \"27\",\n \"26\",\n \"25\",\n \"24\",\n \"23\",\n \"22\",\n \"21\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"16\",\n \"13\"\n ],\n \"Quantitative Reasoning Test #1\": [\n \"30\",\n \"25\",\n \"24\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"17\",\n \"16\",\n \"16\",\n \"14\"\n ],\n \"Quantitative Reasoning Test #2\": [\n \"30\",\n \"25\",\n \"24\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"17\",\n \"16\",\n \"16\",\n \"14\"\n ],\n \"Quantitative Reasoning Test #3\": [\n \"30\",\n \"25\",\n \"24\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"17\",\n \"16\",\n \"16\",\n \"14\"\n ],\n \"Quantitative Reasoning Test #4\": [\n \"30\",\n \"25\",\n \"24\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"17\",\n \"16\",\n \"16\",\n \"14\"\n ],\n \"Quantitative Reasoning Test #5\": [\n \"30\",\n \"25\",\n \"24\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"17\",\n \"16\",\n \"16\",\n \"14\"\n ],\n \"Quantitative Reasoning Test #6\": [\n \"30\",\n \"25\",\n \"24\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"17\",\n \"16\",\n \"16\",\n \"14\"\n ],\n \"Quantitative Reasoning Test #7\": [\n \"30\",\n \"25\",\n \"24\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"17\",\n \"16\",\n \"16\",\n \"14\"\n ],\n \"Quantitative Reasoning Test #8\": [\n \"30\",\n \"25\",\n \"24\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"17\",\n \"16\",\n \"16\",\n \"14\"\n ],\n \"Quantitative Reasoning Test #9\": [\n \"30\",\n \"25\",\n \"24\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"17\",\n \"16\",\n \"16\",\n \"14\"\n ],\n \"Quantitative Reasoning Test #10\": [\n \"30\",\n \"25\",\n \"24\",\n \"22\",\n \"21\",\n \"20\",\n \"20\",\n \"19\",\n \"19\",\n \"18\",\n \"18\",\n \"17\",\n \"16\",\n \"16\",\n \"14\"\n ]\n};\n\nexport function getPercentageThresholds(testSubject) {\n switch (testSubject) {\n case \"Biology\":\n case \"General Chemistry\":\n case \"Organic Chemistry\":\n return [\n 96.6,\n 93.3,\n 90,\n 86.6,\n 83.3,\n 80,\n 76.6,\n 73.3,\n 70,\n 63.3,\n 56.6,\n 50,\n 43.3,\n 36.6,\n 0\n ];\n case \"Perceptual Ability\":\n return [\n 98,\n 97,\n 96,\n 94,\n 92,\n 90,\n 86,\n 82,\n 76,\n 71,\n 64,\n 57,\n 50,\n 43,\n 0\n ];\n case \"Reading Comprehension\":\n return [\n 98,\n 96,\n 94,\n 92,\n 88,\n 86,\n 82,\n 78,\n 74,\n 68,\n 62,\n 56,\n 50,\n 44,\n 0\n ];\n case \"Quantitative Reasoning\":\n return [\n 97.5,\n 95,\n 92.5,\n 90,\n 87.5,\n 82.5,\n 77.5,\n 72.5,\n 67.5,\n 60,\n 55,\n 47.5,\n 40,\n 35,\n 0\n ];\n case \"Physics\":\n return [\n 96.6,\n 93.3,\n 90,\n 86.6,\n 83.3,\n 80,\n 76.6,\n 73.3,\n 70,\n 63.3,\n 56.6,\n 50,\n 43.3,\n 36.6,\n 0\n ]\n default:\n return [];\n }\n}\n\nexport function getDistributionScores(testSubject) {\n switch (testSubject) {\n case \"Biology\":\n case \"General Chemistry\":\n return [\n \"100%\",\n \"99.8%\",\n \"98.8%\",\n \"98.1%\",\n \"94.7%\",\n \"92.6%\",\n \"91.3%\",\n \"88.6%\",\n \"82.5%\",\n \"75.8%\",\n \"63.3%\",\n \"51.2%\",\n \"38.8%\",\n \"27.9%\"\n ];\n case \"Organic Chemistry\":\n return [\n \"100%\",\n \"99.3%\",\n \"98.6%\",\n \"94.4%\",\n \"87.6%\",\n \"82.5%\",\n \"77.2%\",\n \"65.8%\",\n \"55.9%\",\n \"44.6%\",\n \"33.1%\",\n \"24.2%\",\n \"16.3%\",\n \"9.9%\"\n ];\n case \"Perceptual Ability\":\n return [\n \"100%\",\n \"99.9%\",\n \"99.8%\",\n \"99.6%\",\n \"97.4%\",\n \"96.3%\",\n \"95.6%\",\n \"93.5%\",\n \"88.9%\",\n \"80.7%\",\n \"71.3%\",\n \"54.3%\",\n \"46.2%\"\n ];\n case \"Reading Comprehension\":\n return [\n \"100%\",\n \"99.4%\",\n \"98.4%\",\n \"97.6%\",\n \"96.2%\",\n \"92.8%\",\n \"87.6%\",\n \"81.1%\",\n \"71.9%\",\n \"63.3%\",\n \"53.7%\",\n \"43.2%\",\n \"33.8%\",\n ]\n case \"Quantitative Reasoning\":\n return [\n \"100%\",\n \"97.8%\",\n \"96.9%\",\n \"96.1%\",\n \"86.2%\",\n \"86.2%\",\n \"81.6%\",\n \"81.6%\",\n \"74.5%\",\n \"63.3%\",\n \"63.3%\",\n \"41.2%\"\n ]\n default:\n return [];\n }\n}\n\nexport function getCommentary(testSubject) {\n const distributionScores = getDistributionScores(testSubject);\n\n switch (testSubject) {\n case 'Biology':\n case 'General Chemistry':\n const subjectAbbreviations = {\n \"Biology\": \"Bio\",\n \"General Chemistry\": \"GC\",\n };\n const subjectAbbreviation = subjectAbbreviations[testSubject];\n return [\n `Congratulations, this is very impressive! You're ready to conquer the ${subjectAbbreviation} section.`,\n `Congratulations, this is very impressive! You're ready to conquer the ${subjectAbbreviation} section.`,\n `Congratulations, this is very impressive! You're ready to conquer the ${subjectAbbreviation} section.`,\n `Congratulations, this is very impressive! You're ready to conquer the ${subjectAbbreviation} section.`,\n `Congratulations, this is very impressive! You're ready to conquer the ${subjectAbbreviation} section.`,\n `Don't stop now, review these explanations carefully to see where you made your mistakes. ${subjectAbbreviation} is an important score, so try to score as high as possible!`,\n `Don't stop now, review these explanations carefully to see where you made your mistakes. ${subjectAbbreviation} is an important score, so try to score as high as possible!`,\n `Don't stop now, review these explanations carefully to see where you made your mistakes. ${subjectAbbreviation} is an important score, so try to score as high as possible!`,\n `Review these explanations carefully and see which topics you're making mistakes in. Then, review your notes and practice with the question bank to refresh your mind on those concepts.`,\n `Review these explanations carefully and see which topics you're making mistakes in. Then, review your notes and practice with the question bank to refresh your mind on those concepts.`,\n `Review these explanations carefully and see which topics you're making mistakes in. Then, review your notes and practice with the question bank to refresh your mind on those concepts.`,\n `Review these explanations carefully and learn from your mistakes. I'm confident you'll bring up this score with continued hard work and practice.`,\n `Review these explanations carefully and learn from your mistakes. I'm confident you'll bring up this score with continued hard work and practice. `,\n `Keep your head up! Review these explanations carefully and learn from your mistakes. I'm confident you'll bring this score up with hard work and practice. `,\n `Keep your head up! Review these explanations carefully and learn from your mistakes. I'm confident you'll bring this score up with hard work and practice. `\n ];\n case 'Organic Chemistry':\n return [\n `Congratulations, this is very impressive! You're ready to conquer the O-Chem section.`,\n `Congratulations, this is very impressive! You're ready to conquer the O-Chem section.`,\n `Congratulations, this is very impressive! You're ready to conquer the O-Chem section.`,\n `Congratulations, this is very impressive! You're ready to conquer the O-Chem section.`,\n `Awesome! Don't stop now, review these explanations carefully to see where you made your mistakes. O-Chem is an important score, so try to score as high as possible!`,\n `Review these explanations carefully and learn which topics you're making mistakes in. Then, review your notes and practice with the question bank to refresh your mind on these concepts. You've almost mastered O-Chem, keep going!`,\n `Review these explanations carefully and see which topics you're making mistakes in. Then, review your notes and practice with the question bank to refresh your mind on those concepts.`,\n `Review these explanations carefully and see which topics you're making mistakes in. Then, review your notes and practice with the question bank to refresh your mind on those concepts.`,\n `Review these explanations carefully and learn from your mistakes. I'm confident you'll improve this score with hard work.`,\n `Review these explanations carefully and learn from your mistakes. I'm confident you'll improve this score with hard work.`,\n `Keep your head up! Review these explanations carefully and learn from your mistakes. I'm confident you'll bring up this score with hard work and practice.`,\n `Keep your head up! Review these explanations carefully and learn from your mistakes. I'm confident you'll bring up this score with hard work and practice.`,\n `Keep your head up! Review these explanations carefully and learn from your mistakes. I'm confident you'll bring up this score with hard work and practice.`,\n `Keep your head up! Review these explanations carefully and learn from your mistakes. I'm confident you'll bring up this score with hard work and practice.`,\n `Keep your head up! Review these explanations carefully and learn from your mistakes. I'm confident you'll bring up this score with hard work and practice.`\n ]\n case 'Perceptual Ability':\n return [\n `Congratulations, this is very impressive! You're ready to conquer the PAT section.`,\n `Congratulations, this is very impressive! You're ready to conquer the PAT section.`,\n `Congratulations, this is very impressive! You're ready to conquer the PAT section.`,\n `Congratulations, this is very impressive! You're ready to conquer the PAT section.`,\n `Congratulations, this is very impressive! You're ready to conquer the PAT section.`,\n `Congratulations, this is very impressive! You're ready to conquer the PAT section. Keep reviewing the explanations and practice to improve your scores!`,\n `Congratulations! Focus on the areas you're weak in and try to see why you're getting them wrong, then correct the problem. Keep reviewing the explanations and practice to improve your scores!`,\n `Congratulations! Focus on the areas you're weak in and try to see why you're getting them wrong, then correct the problem. Keep reviewing the explanations and practice to improve your scores!`,\n `Take your time to carefully review these explanations and understand the intricacies of each question. Try to visualize the question and solution in your mind. Keep reviewing the explanations and practice to improve your scores!`,\n `Take your time to carefully review these explanations and understand the intricacies of each question. Try to visualize the question and solution in your mind. Keep up the practice and review and you'll improve!`,\n `Take your time to carefully review these explanations and understand the intricacies of each question. Try to visualize the question and solution in your mind. With more practice you'll be able to reach higher scores.`,\n `Keep your head up! The PAT section can be learned and practiced. Take your time to carefully review these explanations and understand the intricacies of each question. Try to visualize the question and solution in your mind.`,\n `Keep your head up! Also, don't focus on your estimated score, they mean essentially nothing at the start. Rarely does anyone start these exams and score well immediately, if that was the case then they wouldn't even need to practice! These are 'practice' tests, meaning you're practicing to improve your skills. If you continue to work hard and study, read and understand the explanations, practice with the PAT generators daily, and give it your best effort, I promise your score will improve. Review and learn for now, and the scores will come.`,\n `Keep your head up! Also, don't focus on your estimated score, they mean essentially nothing at the start. Rarely does anyone start these exams and score well immediately, if that was the case then they wouldn't even need to practice! These are 'practice' tests, meaning you're practicing to improve your skills. If you continue to work hard and study, read and understand the explanations, practice with the PAT generators daily, and give it your best effort, I promise your score will improve. Review and learn for now, and the scores will come.`,\n `Keep your head up! Also, don't focus on your estimated score, they mean essentially nothing at the start. Rarely does anyone start these exams and score well immediately, if that was the case then they wouldn't even need to practice! These are 'practice' tests, meaning you're practicing to improve your skills. If you continue to work hard and study, read and understand the explanations, practice with the PAT generators daily, and give it your best effort, I promise your score will improve. Review and learn for now, and the scores will come.`,\n ];\n case 'Reading Comprehension':\n return [\n `Congratulations, this is very impressive! You're ready to conquer the reading section.`,\n `Congratulations, this is very impressive! You're ready to conquer the reading section.`,\n `Congratulations, this is very impressive! You're ready to conquer the reading section.`,\n `Congratulations, this is very impressive! You're ready to conquer the reading section.`,\n `Congratulations, this is very impressive! You're ready to conquer the reading section.`,\n `Congratulations, this is very impressive! You're ready to conquer the reading section. Keep reviewing the explanations and practice to improve your scores!`,\n `Continue to read science articles to build up your reading speed and comprehension. Review these explanations to understand where the answer lies within the passage to each question, and build a mental map of the structure of the passage.`,\n `Continue to read science articles to build up your reading speed and comprehension. Review these explanations to understand where the answer lies within the passage to each question, and build a mental map of the structure of the passage.`,\n `Continue to read science articles to build up your reading speed and comprehension. Review these explanations to understand where the answer lies within the passage to each question, and build a mental map of the structure of the passage.`,\n `Continue to read science articles to build up your reading speed and comprehension. Review these explanations to understand where the answer lies within the passage to each question, and build a mental map of the structure of the passage.`,\n `Continue to read science articles to build up your reading speed and comprehension. Review these explanations to understand where the answer lies within the passage to each question, and build a mental map of the structure of the passage.`,\n `Continue to read science articles to build up your reading speed and comprehension. Review these explanations to understand where the answer lies within the passage to each question, and build a mental map of the structure of the passage.`,\n `Continue to read science articles to build up your reading speed and comprehension. Review these explanations to understand where the answer lies within the passage to each question, and build a mental map of the structure of the passage.`,\n `Keep your head up! Continue to read science articles to build up your reading speed and comprehension. Review these explanations to understand where the answer lies within the passage to each question, and build a mental image of the structure of the passage.`,\n `Keep your head up! Continue to read science articles to build up your reading speed and comprehension. Review these explanations to understand where the answer lies within the passage to each question, and build a mental image of the structure of the passage.`,\n ]\n case 'Quantitative Reasoning':\n return [\n `Congratulations, this is very impressive! You're ready to conquer the QR section.`,\n `Congratulations, this is very impressive! You're ready to conquer the QR section.`,\n `Congratulations, this is very impressive! You're ready to conquer the QR section.`,\n `Congratulations, this is very impressive! You're ready to conquer the QR section.`,\n `Don't stop now, review these explanations carefully to see where you made your mistakes, and understand how to fix them. Your QR score makes up 1/5th of your AA score, so try to score as high as possible!`,\n `Don't stop now, review these explanations carefully to see where you made your mistakes, and understand how to fix them. Your QR score makes up 1/5th of your AA score, so try to score as high as possible!`,\n `Review these explanations carefully and learn which topics you're making mistakes in. Then, use the QR Question Bank to practice those skills.`,\n `Review these explanations carefully and learn which topics you're making mistakes in. Then, use the QR Question Bank to practice those skills.`,\n `Review these explanations carefully and learn which topics you're making mistakes in. Then, use the QR Question Bank to practice those skills.`,\n `See which topics you're making mistakes in and hone-in to understand those concepts! Then, use the QR Question Bank to practice those skills.`,\n `See which topics you're making mistakes in and hone-in to understand those concepts! Then, use the QR Question Bank to practice those skills.`,\n `Review these explanations carefully and learn from your mistakes. I'm confident you'll bring this score up with continued hard work and practice. Check out QR Academy for content review in math.`,\n `Review these explanations carefully and learn from your mistakes. I'm confident you'll bring this score up with continued hard work and practice. Check out QR Academy for content review in math.`,\n `Keep your head up! Review these explanations carefully and learn from your mistakes. I'm confident you'll bring this score up with hard work and practice. Check out QR Academy for content review in math.`,\n `Keep your head up! Review these explanations carefully and learn from your mistakes. I'm confident you'll bring this score up with hard work and practice. Check out QR Academy for content review in math.`,\n ]\n default:\n return [];\n }\n}\n\nexport function getResults(percentage, testTitle, testSubject) {\n const testNumber = testTitle.match(/#(.*)/)?.[1] || 1;\n const percentageThresholds = getPercentageThresholds(testSubject);\n const commentary = getCommentary(testSubject);\n let score = '13', analysis = '', adjustedTestTitle = testTitle;\n\n if (!examResults[testTitle] && testNumber > 10) {\n // NOTE: this is a quick workaround for plus test scoring - if the test number is greater\n // than ten we know it's a plus test, and we fall back to the 10th PT examResult entry\n // for that subject\n adjustedTestTitle = `${testSubject} Test #${10}`;\n } else if (!examResults[testTitle]) {\n return {score, analysis};\n }\n\n percentageThresholds.some((percentageThreshold, index) => {\n if (percentage >= percentageThreshold || index === percentageThresholds.length - 1) {\n const estimatedScore = examResults[adjustedTestTitle][index];\n score = updatedDatScoringReference[testSubject][estimatedScore];\n\n analysis = commentary[index];\n return true;\n }\n return false;\n });\n\n\n return {score, analysis};\n}\n\nexport function getOATPercentageThresholds(testSubject) {\n switch (testSubject) {\n case \"Biology\":\n return [\n 90,\n 87.5,\n 82.5,\n 80,\n 75,\n 72.5,\n 70,\n 68.5,\n 62.5,\n 57.5,\n 55,\n 50,\n 47.5,\n 42.5,\n 37.5,\n 35,\n 32.5,\n 30,\n 27.5,\n 20,\n 0\n ]\n case \"Organic Chemistry\":\n return [\n 86.6,\n 83.3,\n 80,\n 76.6,\n 73.3,\n 66.6,\n 63.3,\n 53.3,\n 46.6,\n 43.3,\n 36.6,\n 33.3,\n 30,\n 26.6,\n 23.3,\n 20,\n 16.6,\n 13.3,\n 10,\n 0\n ]\n case \"General Chemistry\":\n return [\n 96.6,\n 93.3,\n 90,\n 83.3,\n 80,\n 76.6,\n 70,\n 63.3,\n 56.6,\n 50,\n 46.6,\n 43.3,\n 36.6,\n 33.3,\n 26.6,\n 23.3,\n 20,\n 16.6,\n 13.3,\n 0\n ];\n case \"Quantitative Reasoning\":\n return [\n 87.5,\n 82.5,\n 80,\n 75,\n 70,\n 67.5,\n 62.5,\n 60,\n 57.5,\n 52.5,\n 47.5,\n 45,\n 42.5,\n 37.5,\n 32.5,\n 30,\n 27.5,\n 22.5,\n 20,\n 0\n ];\n case \"Reading Comprehension\":\n return [\n 97.5,\n 92.5,\n 87.5,\n 82.5,\n 77.5,\n 72.5,\n 67.5,\n 62.5,\n 57.5,\n 52.5,\n 47.5,\n 42.5,\n 37.5,\n 32.5,\n 27.5,\n 22.5,\n 17.5,\n 12.5,\n 10,\n 5,\n 0\n ];\n case \"Physics\":\n return [\n 96.6,\n 93.3,\n 90,\n 86.6,\n 83.3,\n 80,\n 76.6,\n 73.3,\n 70,\n 63.3,\n 56.6,\n 50,\n 43.3,\n 36.6,\n 0\n ]\n default:\n return [];\n }\n}\n\nexport const oatScores = {\n 'Quantitative Reasoning': [\n 400,\n 390,\n 380,\n 370,\n 360,\n 350,\n 340,\n 330,\n 320,\n 310,\n 300,\n 290,\n 280,\n 270,\n 260,\n 240,\n 230,\n 220,\n 210,\n 200\n ],\n 'Reading Comprehension': [\n 400,\n 390,\n 380,\n 370,\n 360,\n 350,\n 340,\n 330,\n 320,\n 310,\n 300,\n 290,\n 280,\n 270,\n 260,\n 250,\n 240,\n 230,\n 220,\n 210,\n 200\n ],\n 'Biology': [\n 400,\n 380,\n 370,\n 360,\n 350,\n 340,\n 330,\n 320,\n 310,\n 300,\n 290,\n 280,\n 270,\n 260,\n 250,\n 240,\n 230,\n 220,\n 210,\n 200,\n 200\n ],\n 'General Chemistry': [\n 400,\n 390,\n 380,\n 370,\n 360,\n 350,\n 340,\n 330,\n 320,\n 310,\n 300,\n 290,\n 280,\n 270,\n 260,\n 250,\n 240,\n 220,\n 210,\n 200\n ],\n 'Organic Chemistry': [\n 400,\n 390,\n 380,\n 370,\n 360,\n 350,\n 340,\n 330,\n 320,\n 310,\n 300,\n 290,\n 280,\n 270,\n 260,\n 250,\n 230,\n 220,\n 210,\n 200\n ],\n 'Physics': [\n 400,\n 350,\n 330,\n 330,\n 330,\n 320,\n 320,\n 320,\n 310,\n 300,\n 300,\n 290,\n 270,\n 260,\n 260\n ]\n}\n\nexport function getOATResults(percentage, testTitle, testSubject) {\n const percentageThresholds = getOATPercentageThresholds(testSubject);\n let score = 260;\n try {\n percentageThresholds.some((percentageThreshold, index) => {\n if (percentage >= percentageThreshold || index === percentageThresholds.length - 1) {\n score = oatScores[testSubject][index];\n return true;\n }\n return false;\n });\n } catch (e) {\n console.log(e);\n } finally {\n return score;\n }\n}\n\nexport function getStatistics(questions) {\n const answeredQuestions = questions.filter(({didSkip}) => !didSkip);\n\n return questions.reduce((acc, {\n didSelectCorrectAnswer,\n didSkip,\n didMark,\n didCheck,\n time,\n masteryLevel\n }) => {\n const timeSpent = parseFloat(acc.timeSpent + parseFloat(time)).toFixed(2);\n const timePerQuestion = timeSpent / answeredQuestions.length;\n\n return {\n ...acc,\n timeSpent: parseFloat(timeSpent),\n timePerQuestion: isFinite(timePerQuestion) ? timePerQuestion : 0,\n correct: didSelectCorrectAnswer ? acc.correct + 1 : acc.correct,\n marked: didMark ? acc.marked + 1 : acc.marked,\n skipped: didSkip ? acc.skipped + 1 : acc.skipped,\n [masteryLevel]: acc[masteryLevel] ? acc[masteryLevel] + 1 : 1\n };\n }, {\n timeSpent: 0.0,\n timePerQuestion: '', // average\n total: questions.length,\n correct: 0,\n marked: 0,\n skipped: 0,\n });\n}\n\nexport function aggregateBySubject(progresses) {\n const subjects = progresses\n .map(({questions}) => questions)\n .flat()\n .reduce((acc, {subject, ...question}) => {\n if (!subject) return acc;\n const aggregateSubject = acc[subject] ? {[subject]: [...acc[subject], question]} : {[subject]: [question]};\n return {\n ...acc,\n ...aggregateSubject,\n };\n }, {});\n\n const totalAnswered = progresses\n .map(({questions}) => questions)\n .flat()\n .filter((question) => !question.didSkip)\n .length;\n\n return Object\n .keys(subjects)\n .reduce((acc, key) => {\n const statistic = getStatistics(subjects[key]);\n const timePerQuestion = (acc.timeSpent + statistic.timeSpent) / totalAnswered;\n // topicStatistics need to be included. aggregateByTopic requires an array of progress objects\n // so we create a minimal \"progress object\" consisting of just questions:\n const {statistics: topicStatistics} = aggregateByTopic([{questions: subjects[key]}]);\n return {\n ...acc,\n total: acc.total + subjects[key].length,\n correct: acc.correct + statistic.correct,\n timeSpent: acc.timeSpent + parseFloat(statistic.timeSpent),\n timePerQuestion: isFinite(timePerQuestion) ? timePerQuestion : 0,\n markedQuestions: acc.markedQuestions + statistic.marked,\n skippedQuestions: acc.skippedQuestions + statistic.skipped,\n subjectStatistics: [...acc.subjectStatistics, {name: key, ...statistic, topicStatistics}],\n learning: statistic.learning ? acc.learning + 1 : acc.learning,\n reviewing: statistic.reviewing ? acc.reviewing + 1 : acc.reviewing,\n mastered: statistic.mastered ? acc.mastered + 1 : acc.mastered,\n }\n }, {\n total: 0,\n educator: defaultEducator,\n correct: 0,\n timeSpent: 0.0,\n timePerQuestion: 0,\n markedQuestions: 0,\n skippedQuestions: 0,\n subjectStatistics: [],\n learning: 0,\n reviewing: 0,\n mastered: 0\n });\n}\n\nexport function aggregateByTopic(progresses) {\n const topics = progresses\n .map(({questions}) => questions)\n .flat()\n .reduce((acc, {topic, ...question}) => {\n if (!topic) return acc;\n const aggregateTopic = acc[topic] ? {[topic]: [...acc[topic], question]} : {[topic]: [question]};\n return {\n ...acc,\n ...aggregateTopic,\n };\n }, {});\n\n return Object\n .keys(topics)\n .reduce((acc, key) => {\n const statistic = getStatistics(topics[key], key);\n const total = acc.total + topics[key].length;\n const timePerQuestion = (acc.timeSpent + parseFloat(statistic.timeSpent)) / total;\n return {\n ...acc,\n correct: acc.correct + statistic.correct,\n timeSpent: acc.timeSpent + parseFloat(statistic.timeSpent),\n timePerQuestion: isFinite(timePerQuestion) ? timePerQuestion : 0,\n markedQuestions: acc.markedQuestions + statistic.marked,\n skippedQuestions: acc.skippedQuestions + statistic.skipped,\n statistics: [...acc.statistics, {name: key, ...statistic}],\n total,\n }\n }, {\n educator: defaultEducator,\n total: 0,\n correct: 0,\n timeSpent: 0.00,\n timePerQuestion: 0,\n markedQuestions: 0,\n skippedQuestions: 0,\n statistics: [],\n });\n}\n\nexport function aggregateBySection(progresses) {\n const snsProgresses = progresses.slice(0, 3);\n const patProgresses = progresses.slice(3, 4);\n const rcProgresses = progresses.slice(4, 7);\n const qrProgresses = progresses.slice(7, 8);\n\n const totalAnswered = progresses\n .map(({questions}) => questions)\n .flat()\n .filter((question) => !question.didSkip)\n .length;\n\n const sns = aggregateBySubject(snsProgresses);\n const pat = aggregateBySubject(patProgresses);\n const rc = aggregateBySubject(rcProgresses);\n const qr = aggregateBySubject(qrProgresses);\n\n const totalQuestions = sns.total + pat.total + rc.total + qr.total;\n const totalCorrect = sns.correct + pat.correct + rc.correct + qr.correct;\n const totalTime = parseFloat(sns.timeSpent) + parseFloat(pat.timeSpent) + parseFloat(rc.timeSpent) + parseFloat(qr.timeSpent);\n const totalMarked = sns.markedQuestions + pat.markedQuestions + rc.markedQuestions + qr.markedQuestions;\n const totalSkipped = sns.skippedQuestions + pat.skippedQuestions + rc.skippedQuestions + qr.skippedQuestions;\n const timePerQuestion = totalTime / totalAnswered;\n\n return {\n educator: defaultEducator,\n correct: totalCorrect,\n total: totalQuestions,\n timeSpent: totalTime,\n timePerQuestion: isFinite(timePerQuestion) ? timePerQuestion : 0,\n markedQuestions: totalMarked,\n skippedQuestions: totalSkipped,\n statistics: [\n {name: 'Survey of Natural Sciences', ...sns},\n {name: 'Perceptual Ability', ...pat},\n {name: 'Reading Comprehension', ...rc},\n {name: 'Quantitative Reasoning', ...qr},\n ],\n };\n}\n\nexport function aggregateByOATSection(progresses) {\n const snsProgresses = progresses.slice(0, 3);\n const rcProgresses = progresses.slice(3, 6);\n const physProgresses = progresses.slice(6, 7);\n const qrProgresses = progresses.slice(7, 8);\n\n const totalAnswered = progresses\n .map(({questions}) => questions)\n .flat()\n .filter((question) => !question.didSkip)\n .length;\n\n const sns = aggregateBySubject(snsProgresses);\n const rc = aggregateBySubject(rcProgresses);\n const phys = aggregateBySubject(physProgresses);\n const qr = aggregateBySubject(qrProgresses);\n\n const totalQuestions = sns.total + phys.total + rc.total + qr.total;\n const totalCorrect = sns.correct + phys.correct + rc.correct + qr.correct;\n const totalTime = sns.timeSpent + phys.timeSpent + rc.timeSpent + qr.timeSpent;\n const totalMarked = sns.markedQuestions + phys.markedQuestions + rc.markedQuestions + qr.markedQuestions;\n const totalSkipped = sns.skippedQuestions + phys.skippedQuestions + rc.skippedQuestions + qr.skippedQuestions;\n const timePerQuestion = totalTime / totalAnswered;\n\n\n return {\n educator: defaultEducator,\n correct: totalCorrect,\n total: totalQuestions,\n timeSpent: totalTime,\n timePerQuestion: isFinite(timePerQuestion) ? timePerQuestion : 0,\n markedQuestions: totalMarked,\n skippedQuestions: totalSkipped,\n statistics: [\n {name: 'Survey of Natural Sciences', ...sns},\n {name: 'Reading Comprehension', ...rc},\n {name: 'Physics', ...phys},\n {name: 'Quantitative Reasoning', ...qr},\n ],\n };\n}\n\nexport function getAcademicAverage(testTitle, statistics) {\n const subjectStatistics = statistics.reduce((acc, statistic) => [...acc, ...statistic.subjectStatistics], []).filter(({name}) => name !== 'Perceptual Ability');\n const testNumber = testTitle.match(/#(.*)/)?.[1] || 1;\n const totalScore = subjectStatistics.reduce((scoreAcc, statistic) => {\n const {correct, total, name} = statistic;\n const percentage = (correct / total) * 100;\n const parsedTestSubject = name === 'Math' ? 'Quantitative Reasoning' : name;\n const parsedTestTitle = `${parsedTestSubject} Test #${testNumber}`;\n const {score} = getResults(percentage, parsedTestTitle, parsedTestSubject);\n const parsedScore = score.startsWith('<') ? parseInt(score.slice(1)) - 1 : parseInt(score);\n return scoreAcc + parsedScore;\n }, 0)\n const academicAverage = Math.round((totalScore / subjectStatistics.length) / 10) * 10;\n return academicAverage;\n}\nexport function getOATAcademicAverage(testTitle, statistics) {\n const subjectStatistics = statistics.reduce((acc, statistic) => [...acc, ...statistic.subjectStatistics], []);\n const testNumber = testTitle.match(/#(.*)/)[1];\n const totalScore = subjectStatistics.reduce((scoreAcc, statistic) => {\n const {correct, total, name} = statistic;\n const percentage = (correct / total) * 100;\n const parsedTestSubject = name === 'Math' ? 'Quantitative Reasoning' : name;\n const parsedTestTitle = `${parsedTestSubject} Test #${testNumber}`;\n const score = getOATResults(percentage, parsedTestTitle, parsedTestSubject);\n const parsedScore = Number.isInteger(score) ? score : parseInt(score.slice(1));\n return scoreAcc + parsedScore;\n }, 0)\n const academicAverage = Math.round(totalScore / subjectStatistics.length);\n return academicAverage;\n}\n\nexport function scoreResult(quizProgress, testTitle, testSubject, testNumber, createdAt) {\n const {\n correct,\n total,\n statistics,\n } = aggregateByTopic(quizProgress);\n\n const percentage = (correct / total) * 100;\n const {score} = getResults(percentage, testTitle, testSubject);\n return {\n testSubject,\n testNumber,\n score: score.replace('<', ''),\n createdAt,\n topics: statistics.map(({marked, skipped, timePerQuestion, undefined, none, ...statistic}) => statistic)\n }\n}","import {getInObj, getNCLEXSubjectSystemTags} from '../index';\n\nexport function formatClassroomMastery(item, masteryType) {\n if (!item) return;\n\n const {data} = item;\n const queryLookup = [masteryType[0].toUpperCase(), ...masteryType.slice(1)].join('');\n\n const mastery = data\n && data[`QuestionMasteryBy${queryLookup}${queryLookup === 'Test' ? '' : 'Tag'}Id`]\n && data[`QuestionMasteryBy${queryLookup}${queryLookup === 'Test' ? '' : 'Tag'}Id`].items;\n\n if (!mastery) return [];\n\n return mastery.reduce((acc, {masteryLevel, bookmarked}) => ({...acc, [masteryLevel]: acc[masteryLevel] + 1, total: acc.total + 1, bookmarked: acc.bookmarked + bookmarked}), {\n learning: 0,\n reviewing: 0,\n mastered: 0,\n bookmarked: 0,\n total: 0,\n });\n}\n\nexport function formatClassroomMasteryWithTopic({data}, masteryType) {\n const queryLookup = [masteryType[0].toUpperCase(), ...masteryType.slice(1)].join('');\n const mastery = data\n && data[`QuestionMasteryBy${queryLookup}${queryLookup === 'Test' ? '' : 'Tag'}Id`]\n && data[`QuestionMasteryBy${queryLookup}${queryLookup === 'Test' ? '' : 'Tag'}Id`].items;\n\n if (!mastery) return [];\n\n\n return mastery.reduce((acc, {masteryLevel, bookmarked, question, userIdHashTopicTagId, userIdHashSubjectTagId}) => {\n const subjectTagId = userIdHashSubjectTagId?.split('#')[1];\n const topicTagId = userIdHashTopicTagId?.split('#')[1];\n const topicTag = question?.tags?.items?.find(({tag}) => !!tag.topic)?.tag;\n const bareTags = question?.tags?.items?.map(({tag}) => tag);\n\n const {system, systemTag} = getNCLEXSubjectSystemTags(bareTags) || {};\n\n return {\n ...acc,\n [masteryLevel]: acc[masteryLevel] + 1,\n total: acc.total + 1,\n bookmarked: (acc.bookmarked + bookmarked) || 0,\n byTopic: {\n ...acc.byTopic,\n [topicTagId]: {\n ...acc.byTopic[topicTagId],\n [masteryLevel]: (acc.byTopic?.[topicTagId]?.[masteryLevel] || 0) + 1,\n total: (acc.byTopic?.[topicTagId]?.total || 0) + (masteryLevel !== 'none' ? 1 : 0),\n bookmarked: ((acc.byTopic?.[topicTagId]?.bookmarked || 0) + bookmarked) || 0,\n tag: {...topicTag, subjectTagId},\n }\n },\n bySystem: {\n ...acc.bySystem,\n [system]: {\n ...acc.bySystem[system],\n [masteryLevel]: (acc.bySystem?.[system]?.[masteryLevel] || 0) + 1,\n total: (acc.bySystem?.[system]?.total || 0) + (masteryLevel !== 'none' ? 1 : 0),\n bookmarked: ((acc.bySystem?.[system]?.bookmarked || 0) + bookmarked) || 0,\n tag: {...systemTag, subjectTagId},\n }\n }\n }\n }, {\n learning: 0,\n reviewing: 0,\n mastered: 0,\n bookmarked: 0,\n byTopic: {},\n bySystem: {},\n total: 0,\n })\n}\n\nexport function formatReviewVideoProgress(results) {\n return results.reduce((acc, result) => ([\n ...acc,\n ...getInObj(['data', 'TestProgressByTestId', 'items', 0, 'blockProgresses', 'items'], result, []),\n ]), []);\n}\n\nexport function formatClassroomVideoProgress(data) {\n return data?.reduce((acc, curr) => {\n if (!curr) return acc;\n return acc + (curr.data?.TestProgressByTestId?.items[0]?.blockProgresses?.items.filter(({status}) => status === 'complete').length || 0);\n }, 0);\n}\n\nexport function formatClassroomVideoProgressBySubjectByTest(data, key) {\n return data?.reduce((acc, curr) => {\n const testProgress = curr?.data?.TestProgressByTestId?.items[0];\n const completedBlocks = testProgress?.blockProgresses?.items.filter(({status}) => status === 'complete').length || 0;\n\n if (!completedBlocks) return acc;\n\n acc.byTest[testProgress.testId] = completedBlocks;\n acc.total = acc.total + completedBlocks;\n\n return acc;\n }, {byTest: {}, total: 0});\n}\n\n\nexport function formatMasteryCardLink(subjectRoute, masteryLevel, topicId) {\n const urlParams = topicId\n ? `?topicId=${encodeURIComponent(topicId)}`\n : '';\n\n return subjectRoute\n ? `${subjectRoute}/tagged-questions/${masteryLevel}${urlParams}`\n : `tagged-questions/${masteryLevel}`;\n}\n\n","import Storage from '@aws-amplify/storage';\nimport {getTestBlockQuestions} from '@bootcamp/shared/src/util';\nimport {getQuestionBaseProgresses, getTest} from '@bootcamp/shared/src/requests';\n\nconst answerMap = {\n 0: 'A',\n 1: 'B',\n 2: 'C',\n 3: 'D',\n 4: 'E',\n 5: 'F',\n 6: 'G',\n 7: 'H',\n 8: 'I'\n};\n\nconst compileSubjectTopicCountsForTests = async (testIds) => {\n try {\n const compiledCounts = await testIds.reduce(async (acc, testId) => {\n const test = await getTest(testId);\n const questions = test?.data?.getTest?.blockConnections?.items?.reduce((acc, connection) => ([...acc, ...getTestBlockQuestions(connection?.testBlock)]), [])\n\n let update = await acc;\n\n questions.forEach(question => {\n const subjectTagId = question?.tags?.items?.find(({tag}) => !!tag.subject && !tag.topic && !tag.contentType)?.tag?.subject;\n const topicTagId = question?.tags?.items?.find(({tag}) => !!tag.topic)?.tag?.topic;\n\n update[subjectTagId] = {\n ...(update[subjectTagId] || {}),\n [topicTagId]: update[subjectTagId]?.[topicTagId] ? update[subjectTagId]?.[topicTagId] + 1 : 1,\n };\n });\n\n return update;\n }, {});\n\n return compiledCounts\n\n } catch (error) {\n debugger;\n return {};\n }\n}\n\nexport const getSubjectTopicCountsForDATPerformance = async (config) => {\n try {\n const existingCountsFetch = await Storage.get(`answerData/datSubjectTopicCounts.json`, {download: true, cacheControl: 'no-cache'});\n const existingCounts = JSON.parse(await existingCountsFetch.Body.text());\n\n if (existingCounts) {\n return existingCounts;\n }\n\n const allTests = config\n ?.studyTools\n ?.find(({name}) => name === 'Full Length Tests')\n ?.content\n ?.map(({id}) => id)\n\n const baseTests = allTests.slice(0, 10);\n const plusTests = allTests.slice(-5);\n\n const baseCounts = await compileSubjectTopicCountsForTests(baseTests);\n const plusCounts = await compileSubjectTopicCountsForTests(plusTests);\n\n await Storage.put(`answerData/datSubjectTopicCounts.json`, JSON.stringify({baseCounts, plusCounts}), {\n contentType: 'application/json',\n });\n\n return {\n baseCounts,\n plusCounts,\n };\n } catch (error) {\n console.log('ERRORING', error);\n }\n};\n\nconst fetchStats = async (questionId, isNCLEX) => {\n const {data: {getQuestionBase: {progresses}}} = await getQuestionBaseProgresses(questionId, 3000);\n\n if (progresses?.items) {\n const avgTime = progresses.items.reduce((acc, progress) => {\n try {\n if (!progress.time) return acc;\n const time = parseFloat(progress.time)\n if (time > 500) return acc;\n if (progress.selectedAnswerIndex === -1) return acc;\n return {\n ...acc,\n [progress.questionRevisionId]: {\n time: acc[progress.questionRevisionId]?.time ? acc[progress.questionRevisionId]?.time + time : time,\n total: acc[progress.questionRevisionId]?.total ? acc[progress.questionRevisionId]?.total + 1 : 1\n },\n total: {\n time: acc.total?.time ? acc.total?.time + time : time,\n total: acc.total?.total ? acc.total?.total + 1 : 1\n }\n }\n } catch (error) {\n return acc;\n }\n }, {});\n\n await Storage.put(`answerData/question/${questionId}-time.json`, JSON.stringify(avgTime), {\n contentType: 'application/json',\n });\n\n const answerData = progresses.items.reduce((acc, progress) => {\n try {\n if (progress.answerState && isNCLEX) {\n const {answerState, score, maxScore} = JSON.parse(progress.answerState);\n if (!answerState || maxScore > 1) return acc;\n let answerChoice = answerMap[answerState[0]];\n if (score > 0) {\n answerChoice += ' (CORRECT)';\n }\n if (!answerState.length) return acc;\n return {\n ...acc,\n total: {\n ...acc.total,\n [answerChoice]: acc.total?.[answerChoice] ? acc.total?.[answerChoice] + 1 : 1\n },\n [progress.questionRevisionId]: {\n ...(acc[progress.questionRevisionId] || []),\n [answerChoice]: acc?.[progress.questionRevisionId]?.[answerChoice] ? acc?.[progress.questionRevisionId]?.[answerChoice] + 1 : 1\n }\n }\n } else {\n let answerChoice = answerMap[progress.selectedAnswerIndex];\n if (progress.didSelectCorrectAnswer) {\n answerChoice += ' (CORRECT)';\n }\n if (!answerChoice) return acc;\n return {\n ...acc,\n total: {\n ...acc.total,\n [answerChoice]: acc.total?.[answerChoice] ? acc.total?.[answerChoice] + 1 : 1\n },\n [progress.questionRevisionId]: {\n ...(acc[progress.questionRevisionId] || []),\n [answerChoice]: acc?.[progress.questionRevisionId]?.[answerChoice] ? acc?.[progress.questionRevisionId]?.[answerChoice] + 1 : 1\n }\n }\n }\n } catch (error) {\n return acc;\n }\n }, {total: {}});\n await Storage.put(`answerData/question/${questionId}.json`, JSON.stringify(answerData), {\n contentType: 'application/json',\n // progressCallback\n });\n return {answerData, avgTime};\n }\n return {answerData: {}, avgTime: {}};\n}\n\nexport const fetchAllQuestionStats = async (testId, questions) => {\n try {\n // for flts, this needs to fetch via subject test id instead of storing using flt test id\n //\n try {\n const testAnswerDataFetch = await Storage.get(`answerData/test/${testId}.json`, {download: true, cacheControl: 'no-cache'});\n const testAnswerData = JSON.parse(await testAnswerDataFetch.Body.text());\n\n return testAnswerData;\n } catch (error) {\n // console.log('ERROR FETCHING TEST DATA');\n }\n\n // bail if questions aren't passed to this function so we don't store empty array values\n if (!questions?.length) return [];\n const stats = await Promise.all(questions.filter(question => !!question?.question).map(async ({question}) => {\n let answerData, avgTimeTotal;\n try {\n const answerDataFetch = await Storage.get(`answerData/question/${question.id}.json`, {download: true, cacheControl: 'no-cache'});\n answerData = JSON.parse(await answerDataFetch.Body.text());\n\n const avgTime = await Storage.get(`answerData/question/${question.id}-time.json`, {download: true, cacheControl: 'no-cache'});\n avgTimeTotal = avgTime ? JSON.parse(await avgTime.Body.text()) : null;\n } catch (error) {\n const result = await fetchStats(question.id, false);\n answerData = result.answerData;\n avgTimeTotal = result.avgTime;\n }\n\n const revisionId = question?.latestRevisions?.items?.[0]?.id;\n const answerDataObject = answerData?.[revisionId] || answerData?.total || {};\n const correctKey = Object.keys(answerDataObject).find(key => key.includes('CORRECT'));\n const correctCount = answerDataObject?.[correctKey] || 0;\n const totalRecords = Object.values(answerDataObject).reduce((acc, val) => acc + val, 0);\n\n const totalTime = avgTimeTotal?.total?.time || 0;\n const totalTimeRecords = avgTimeTotal?.total?.total || 0;\n\n // we need to include topic and subject names here\n return {\n questionId: question.id,\n answerData,\n avgScore: correctCount / totalRecords,\n avgTime: totalTime / totalTimeRecords,\n avgTimeTotal\n };\n }));\n\n await Storage.put(`answerData/test/${testId}.json`, JSON.stringify(stats), {\n contentType: 'application/json',\n });\n\n return stats;\n } catch (error) {\n console.log('error fetching question stats', error);\n }\n};\n\nexport const fetchAllQuestionStatsForFLT = async (questionsByTestId) => {\n try {\n const stats = await Promise.all(Object.entries(questionsByTestId)\n .map(async ([testId, questions]) => {\n try {\n return await fetchAllQuestionStats(testId, questions);\n } catch (error) {\n console.log('error pulling stats for test', testId);\n }\n }));\n return stats;\n } catch (error) {\n console.log('error fetching all stats for FLT', error);\n }\n};\n\n// const refetchStats = async (question) => {\n// const isNCLEX = question.tags?.items.some(({tag}) => tag.test === 'NCLEX');\n// await Storage.remove(`answerData/question/${question.id}.json`);\n// await Storage.remove(`answerData/question/${question.id}-time.json`);\n// const {answerData, avgTime} = await fetchStats(question.id, isNCLEX);\n// const updatedQuestionStats = [...questionStats.filter(({questionId}) => questionId !== question.id), {questionId: question.id, answerData, avgTimeTotal: avgTime}];\n// setQuestionStats(updatedQuestionStats);\n// }","import React, {useEffect, useState} from 'react';\n\nimport {H2, H4, Body3, Label2, Label3} from '@bootcamp/web/src/components/Typography/next';\nimport {Link} from 'react-router-dom';\nimport {Add} from '@styled-icons/fluentui-system-filled/Add';\nimport {Subtract} from '@styled-icons/fluentui-system-filled/Subtract';\nimport {ChevronRight} from '@styled-icons/fluentui-system-filled/ChevronRight';\n\nimport ProgressBar from '@bootcamp/web/src/components/ProgressBar';\n\nimport styled, {css} from 'styled-components';\n\n// dat icons\nimport bio from '@bootcamp/shared/src/assets/icons/dat/biology.png';\nimport gc from '@bootcamp/shared/src/assets/icons/dat/general-chemistry.png';\nimport oc from '@bootcamp/shared/src/assets/icons/dat/organic-chemistry.png';\nimport pa from '@bootcamp/shared/src/assets/icons/dat/perceptual-ability.png';\nimport rc from '@bootcamp/shared/src/assets/icons/dat/reading-comprehension.png';\nimport qr from '@bootcamp/shared/src/assets/icons/dat/quantitative-reasoning.png';\n\n// msb icons\nimport heart from '@bootcamp/shared/src/assets/icons/msb/heart.png';\nimport hair from '@bootcamp/shared/src/assets/icons/msb/hair.png';\nimport embryo from '@bootcamp/shared/src/assets/icons/msb/embryo.png';\nimport intestine from '@bootcamp/shared/src/assets/icons/msb/intestine.png';\nimport anatomy from '@bootcamp/shared/src/assets/icons/msb/anatomy.png';\nimport blood from '@bootcamp/shared/src/assets/icons/msb/blood.png';\nimport histo from '@bootcamp/shared/src/assets/icons/msb/histo.png';\nimport virus from '@bootcamp/shared/src/assets/icons/msb/virus.png';\nimport nephro from '@bootcamp/shared/src/assets/icons/msb/nephro.png';\nimport brain from '@bootcamp/shared/src/assets/icons/msb/brain.png';\nimport psych from '@bootcamp/shared/src/assets/icons/msb/psych.png';\nimport lung from '@bootcamp/shared/src/assets/icons/msb/lung.png';\nimport biostatistics from '@bootcamp/shared/src/assets/icons/msb/biostatistics.png';\nimport endo from '@bootcamp/shared/src/assets/icons/msb/endo.png';\nimport genetics from '@bootcamp/shared/src/assets/icons/msb/genetics.png';\nimport womb from '@bootcamp/shared/src/assets/icons/womb.png';\nimport musculoskeletal from '@bootcamp/shared/src/assets/icons/musculoskeletal.png';\nimport pubhealthsci from '@bootcamp/shared/src/assets/icons/pubhealthsci.png';\nimport biochem from '@bootcamp/shared/src/assets/icons/chemistry/oc.png';\nimport microbio from '@bootcamp/shared/src/assets/icons/msb/microbio.png';\nimport patho from '@bootcamp/shared/src/assets/icons/chemistry/gc.png';\nimport pharm from '@bootcamp/shared/src/assets/icons/msb/pharm.png';\n\n// nclex icons\nimport adultHealth from '@bootcamp/shared/src/assets/icons/nclex/AdultHealth.png';\nimport childHealth from '@bootcamp/shared/src/assets/icons/nclex/ChildHealth.png';\nimport criticalCare from '@bootcamp/shared/src/assets/icons/nclex/CriticalCare.png';\nimport fundamentals from '@bootcamp/shared/src/assets/icons/nclex/Fundamentals.png';\nimport maternalNewbornHealth from '@bootcamp/shared/src/assets/icons/nclex/MaternalandNewbornHealth.png';\nimport mentalHealth from '@bootcamp/shared/src/assets/icons/nclex/MentalHealth.png';\nimport pharmacology from '@bootcamp/shared/src/assets/icons/nclex/Pharmacology.png';\nimport managementOfCare from '@bootcamp/shared/src/assets/icons/nclex/ManagementofCare.png';\n\n// inbde icons\nimport medicine from '@bootcamp/shared/src/assets/icons/inbde/medicine.png';\nimport fieldsOfDentistry from '@bootcamp/shared/src/assets/icons/inbde/fields_of_dentistry.png';\nimport anatomyPhysiology from '@bootcamp/shared/src/assets/icons/inbde/anatomy_physiology.png';\nimport research from '@bootcamp/shared/src/assets/icons/inbde/research.png';\nimport oralPath from '@bootcamp/shared/src/assets/icons/inbde/oral_pathology.png';\nimport patientManagement from '@bootcamp/shared/src/assets/icons/inbde/patient_management.png';\nimport pharma from '@bootcamp/shared/src/assets/icons/inbde/pharmacology.png';\nimport simExam from '@bootcamp/shared/src/assets/icons/inbde/simulation_exam.png';\nimport firstAid from '@bootcamp/shared/src/assets/icons/nclex/FirstAid.png';\n\nexport const iconMap = {\n 'med-school': {\n 'Cardiology': heart,\n 'Dermatology': hair,\n 'Embryology': embryo,\n 'Gastroenterology': intestine,\n 'Gross Anatomy': anatomy,\n 'Hematology & Oncology': blood,\n 'Histology': histo,\n 'Immunology': virus,\n 'Nephrology': nephro,\n 'Neuroanatomy': brain,\n 'Neurology': brain,\n 'Psychiatry': psych,\n 'Pulmonology': lung,\n 'Biostatistics': biostatistics,\n 'Endocrinology': endo,\n 'Genetics': genetics,\n 'Reproduction': womb,\n 'Musculoskeletal': musculoskeletal,\n 'Public Health Sciences': pubhealthsci,\n 'Pharmacology (Principles)': pharm,\n 'Biochemistry': biochem,\n 'Microbiology': microbio,\n 'Pathology': patho,\n },\n 'dat': {\n 'Biology': bio,\n 'General Chemistry': gc,\n 'Organic Chemistry': oc,\n 'Perceptual Ability': pa,\n 'Reading Comprehension': rc,\n 'Quantitative Reasoning': qr,\n },\n 'nclex': {\n 'Adult Health': adultHealth,\n 'Child Health': childHealth,\n 'Critical Care': criticalCare,\n 'Fundamentals': fundamentals,\n 'Maternal & Newborn Health': maternalNewbornHealth,\n 'Mental Health': mentalHealth,\n 'Pharmacology': pharmacology,\n 'Management of Care': managementOfCare,\n },\n 'inbde': {\n 'Fields of Dentistry': fieldsOfDentistry,\n 'Oral Pathology and Oral Radiology': oralPath,\n 'Medicine': medicine,\n 'Pharmacology': pharma,\n 'Clinical Management': patientManagement,\n 'Anatomy and Physiology': anatomyPhysiology,\n 'Research': research,\n 'Case Sets': firstAid,\n 'Simulation Exam': simExam,\n }\n};\n\nexport const Card = styled.div`\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n box-shadow: ${({theme}) => theme.elevation.shadow.medium};\n border-radius: 8px;\n margin-bottom: 48px;\n overflow: hidden;\n`;\nexport const Row = styled.div`\n display: flex;\n flex-direction: row;\n flex: 1;\n`;\nexport const Column = styled.div`\n display: flex;\n flex-direction: column;\n`;\nexport const Label = styled(H4)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n`;\nexport const Title = styled(H2)`\n display: flex;\n justify-content: space-between;\n align-items: center;\n color: white;\n `;\nexport const TitleWithFilter = styled(Title)`\n flex-flow: row wrap;\n justify-content: space-between;\n gap: 8px;\n\n span {\n white-space: nowrap;\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n }\n\n ${({theme}) => theme.mediaQueries.mobileXl} {\n flex-direction: column;\n align-items: flex-start;\n }\n`;\nexport const SubTitle = styled(Body3)`\n margin-top: 4px;\n color: ${({theme}) => theme.colors.typographyPalette.transparent};\n`;\nexport const Divider = styled.div`\n width: 100%;\n height: 1px;\n background: ${({theme}) => theme.colors.neutralsPalette.light};\n margin: ${({theme}) => `${theme.layouts.spacing.l} 0`};\n`;\nexport const Heading = styled.div`\n display: flex;\n flex-direction: column;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n\n h3 {\n margin-bottom: 0;\n }\n`;\n\nconst BlurbContainer = styled.div`\n position: relative;\n padding-left: ${({icon}) => icon ? '32px' : '0px'}\n`;\nexport const BlurbText = styled(Body3)`\n background: ${({theme, lightMode}) => lightMode || theme.darkModeEnabled ? theme.overlays.opacity.light._100 : theme.colors.brandPalette.royal.light};\n color: ${({theme, lightMode}) => lightMode ? 'white' : theme.colors.typographyPalette.primary};\n border-radius: 8px;\n padding: ${({theme, icon}) => `${theme.layouts.spacing.ml} ${theme.layouts.spacing.l}`};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: ${({theme}) => `${theme.layouts.spacing.ms} ${theme.layouts.spacing.l}`};\n }\n`;\nexport const BlurbIcon = styled.img`\n position: absolute;\n width: 42px;\n height: 42px;\n border-radius: 21px;\n border: 3px solid ${({theme}) => theme.overlays.opacity.light._100};\n top: calc(50% - 21px);\n left: 0;\n`;\n\nconst ExpandContainer = styled(Body3)`\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: white;\n`;\nconst ExpandIcon = styled.svg`\n width: 16px;\n height: 16px;\n margin-right: 4px;\n`;\n\nexport const Expand = ({expanded, setExpanded}) => {\n return (\n setExpanded(!expanded)}>\n {expanded ? : } {expanded ? 'Collapse All' : 'Expand All'}\n \n );\n}\n\nconst StyledTable = styled.table`\n width: 100%;\n border-collapse: collapse;\n border-radius: 8px;\n overflow: hidden;\n font-family: 'proxima-nova';\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n table-layout: ${({fixed}) => fixed ? 'fixed' : 'auto'};\n\n tr {\n border-bottom: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n }\n tr:last-child {\n border-bottom: none;\n }\n\n tr:first-child {\n background: ${({theme}) => theme.colors.neutralsPalette.offWhite};\n border-bottom: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n\n td {\n font-weight: 600;\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n }\n }\n`;\nexport const Icon = styled.div`\n width: 16px;\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n cursor: pointer;\n`;\nconst Chevron = styled(Icon)`\n width: 20px;\n`;\nexport const TableRow = styled.tr`\n cursor: ${({parent, onClick}) => !!onClick || parent ? 'pointer' : 'auto'};\n box-shadow: ${({nested, isExpanded, theme}) => nested || isExpanded ? `3px 0px inset rgb(237, 237, 240);` : `none` };\n background: ${({theme, isExpanded, background, nested}) => nested ? theme.colors.backgroundPalette.secondary : '#FFF'};\n\n &:hover {\n background: ${({onClick, theme, parent, noHover}) => noHover ? 'auto' : !!onClick || parent ? theme.colors.elevationPalette.surfaceSecondary : 'none'};\n\n ${Icon} {\n color: ${({theme}) => theme.colors.brandPalette.royal.default};\n }\n }\n`;\nexport const Cell = styled.td`\n color: ${({theme, disabled}) => disabled && theme.colors.typographyPalette.secondary};\n padding: ${({width, theme}) => `${theme.layouts.spacing.m} ${theme.layouts.spacing.m}`};\n text-align: ${({width}) => width ? `center` : 'left'};\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 100%;\n\n ${({background}) => background && `background: ${background};`};\n ${({color}) => color && `* {color: ${color} !important;}`};\n\n &:first-child {\n width: 48px;\n padding-left: ${({theme}) => theme.layouts.spacing.l};\n }\n\n &:last-child {\n text-align: right;\n width: ${({hasContent}) => hasContent ? 'auto' : '48px'};\n }\n`;\n\nexport const SubjectCell = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 8px;\n`;\nexport const CellText = styled(Label2)`\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n white-space: nowrap;\n`;\nexport const MasteryCountCellText = styled(CellText)`\n width: 78px;\n`;\nexport const BarCell = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n`;\nexport const BarCellText = styled(Label2)`\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n width: 42px;\n`;\nexport const CellSecondary = styled(Label2)`\n width: 78px;\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n`;\nexport const CellIcon = styled.img`\n width: 20px;\n height: 20px;\n`;\nexport const TopicCell = styled.div`\n margin-left: 28px;\n`;\n\nconst StyledProgressBar = styled(ProgressBar)`\n width: 100px;\n`;\n\nexport const CellProgressBar = ({segments, total, loading=false, markPosition}) => {\n return (\n \n // {loading ? 'loading...' :label}\n // \n // }\n lightMode\n bareLabel\n withMargin={false}\n loading={loading}\n markPosition={markPosition}\n // targetNumber={targets?.averageScorePercentage}\n // targetLabel={!stillCollecting && `${targets?.averageScorePercentage}%`}\n // targetMet={!stillCollecting && scoreTargetMet}\n />\n );\n}\n\nexport const Blurb = ({className, icon, bareIcon, text, lightMode, children}) => (\n \n {icon && }\n \n {bareIcon && bareIcon}\n {text}\n {children}\n \n \n);\n\nexport const TableOverflowOuterWrapper = styled.div`\n ${({parentHasPadding}) => parentHasPadding && css`\n position: absolute;\n right: -32px;\n left: -32px;\n `}\n\n ${({theme}) => theme.mediaQueries.tablet} {\n overflow-x: initial;\n\n ${({parentHasPadding}) => parentHasPadding && css`\n position: absolute;\n padding: 0 16px;\n `}\n }\n`;\n\nexport const TableOverflowInnerWrapper = styled.div`\n padding: 0 32px 16px;\n overflow-x: auto;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 0 16px 16px;\n width: auto;\n margin-bottom: 0;\n margin-right: 0;\n margin-left: 0;\n }\n`;\nconst CellContent = styled.span`\n color: ${({theme, disabled}) => disabled ? theme.colors.typographyPalette.secondary : theme.colors.typographyPalette.primary};\n text-decoration: ${({as}) => as === 'span' ? 'none' : 'underline'};\n\n ${({theme}) => theme.mediaQueries.laptopL} {\n word-wrap: ${({breakWord}) => breakWord ? 'break-word' : 'normal'};\n\n }\n ${({theme}) => theme.mediaQueries.tablet} {\n word-wrap: normal;\n }\n`;\nconst ParentButtonPlaceholder = styled.div`\n width: 32px;\n height: 32px;\n`;\nexport const Table = ({rows, className, expandAll, hideChevrons=false, buttonElement, fixed=true, hideLastCell, loading}) => {\n const [expandedRows, setExpandedRows] = useState({});\n\n function handleRowExpansion(index) {\n if (loading) return;\n\n const isExpanded = expandedRows[index];\n\n setExpandedRows({...expandedRows, [index]: !isExpanded});\n }\n\n function renderRow(row, index) {\n if (row.hasOwnProperty('cells')) {\n return (\n \n {row?.cells?.map(({content, background, color, to, disabled, elementProps={}}, cellIndex) => {\n const contentLength = typeof content === 'string' ? content.length : 0;\n const spaces = typeof content === 'string' ? content?.split(' ').length - 1 : 0;\n const breakWord = contentLength > 20 && spaces === 0;\n\n return (\n \n {content}\n \n );\n })}\n \n );\n } else {\n // here we're assuming a row is passed as an object with nested rows\n const {parent, nested} = row;\n const isExpanded = expandedRows[index];\n const ButtonComponent = buttonElement;\n\n return (\n <>\n handleRowExpansion(index)} parent>\n \n {isExpanded ? : }\n \n {parent?.map(({content, disabled}, cellIndex) => (\n cellIndex === 0 && handleRowExpansion(index)} disabled={disabled}>{content}\n ))}\n {!hideLastCell &&\n \n {buttonElement && }\n }\n \n\n {isExpanded &&\n nested?.map(({cells, onClick, background, noHover}) => (\n \n {cells?.map(({ content, disabled }, index) => (\n {content}\n ))}\n {!hideLastCell &&\n \n {!hideChevrons && !buttonElement && }\n {!hideChevrons && buttonElement && }\n \n }\n \n ))\n }\n \n );\n }\n\n }\n\n useEffect(() => {\n if (expandAll === null) return;\n\n if (expandAll) {\n setExpandedRows(rows.reduce((acc, curr, index) => ({...acc, [index]: true}), {}));\n } else {\n setExpandedRows({});\n }\n }, [expandAll, rows]);\n\n return (\n \n {rows?.map(renderRow)}\n \n );\n}\n\nconst DivergentBarContainer = styled.div`\n display: flex;\n width: 100%;\n align-items: center;\n justify-content: center;\n height: ${({height}) => height}px;\n overflow: hidden;\n`;\nconst Bar = styled.div`\n width: ${({percentage}) => percentage}%;\n height: 100%;\n background: ${({theme, color}) => theme.colors.interfacePalette[color].gradient};\n`;\nconst Left = styled.div`\n padding: 4px 0px;\n display: flex;\n justify-content: flex-end;\n flex: 1;\n height: 100%;\n\n`;\nconst Right = styled.div`\n padding: 4px 0px;\n flex: 1;\n height: 100%;\n`;\nconst BarDivider = styled.div`\n background: ${({theme}) => theme.colors.borderPalette.secondary};\n width: ${({width}) => width}px;\n height: 100%;\n`;\n\nexport const DivergentBar = ({reference, value, height=28, dividerWidth=3}) => {\n const disparity = Math.abs(reference - value);\n const percentage = Math.round((disparity / reference) * 100);\n\n return (\n \n \n {reference > value && }\n \n \n \n {reference < value && }\n \n \n );\n};\n\nexport const LineLabelContainer = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n margin: 0 auto;\n`;\nexport const LineLabelWrapper = styled(Label3)`\n position: absolute;\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n white-space: nowrap;\n`;","import React from 'react';\nimport styled from 'styled-components';\nimport {Row} from '@bootcamp/web/src/components/Grid';\nimport {Loader} from '@bootcamp/web/src/components/Branding';\nimport {Table, Heading, Blurb, TableRow} from '@bootcamp/web/src/bootcamps/components/Performance/shared';\nimport {H2, H3, Body3, Label2} from '@bootcamp/web/src/components/Typography/next';\n\nexport const StyledHeader = styled(Heading)`\n padding: ${({parentHasPadding}) => parentHasPadding ? '' : '0 32px'};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: ${({parentHasPadding}) => parentHasPadding ? '' : '0 16px'};\n }\n`;\nexport const StyledLabel = styled(H2)`\n color: white;\n margin-bottom: 4px;\n`;\nexport const StyledBody = styled(Body3)`\n color: ${({theme}) => theme.colors.typographyPalette.transparent};\n`;\nexport const StyledTable = styled(Table)`\n border-radius: 8px;\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n overflow: hidden;\n`;\nexport const StyledBlurb = styled(Blurb)`\n`;\nexport const LoadingSpinner = styled(Loader)`\n margin: 12px auto;\n overflow: initial;\n display: flex;\n`;\n\nconst ToggleContainer = styled(Row)`\n background: ${({theme}) => theme.overlays.opacity.light._100};\n border-radius: 8px;\n position: relative;\n height: 32px;\n min-height: 32px;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n flex: 1;\n max-width: 300px;\n`;\n\nconst ToggleActive = styled.div`\n background: white;\n position: absolute;\n left: ${({value}) => value ? '50%' : 0};\n top: 0;\n height: 100%;\n width: 50%;\n transition: left .3s;\n border-radius: 8px;\n box-shadow: ${({theme}) => theme.elevation.shadow.low};\n`;\n\nconst IconContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n`;\nconst ToggleText = styled(H3)`\n color: ${({theme, active}) => !active ? 'white' : theme.colors.neutralsPalette.extraDark};\n z-index: 2;\n font-weight: normal;\n transition: color .3s;\n font-size: 14px;\n line-height: 100%;\n`;\n\nexport const Toggle = ({className, value, setValue}) => {\n return (\n setValue(!value)}>\n \n \n Show First Attempt\n \n \n \n \n Show Latest Attempt\n \n \n \n \n )\n}","import React, {useState, useEffect} from 'react';\nimport styled from 'styled-components';\n\nconst Container = styled.div`\n position: relative;\n margin-bottom: 32px;\n`;\n\nexport const AutoHeightParent = ({children, childRef}) => {\n const [childHeight, setChildHeight] = useState(0);\n\n useEffect(() => {\n const updateHeight = () => {\n if (childRef.current) {\n const observer = new ResizeObserver(entries => {\n for (let entry of entries) {\n setChildHeight(entry.target.offsetHeight);\n }\n });\n\n observer.observe(childRef.current);\n\n return () => {\n observer.unobserve(childRef.current);\n };\n }\n };\n\n updateHeight(); // Update height on mount\n\n window.addEventListener('resize', updateHeight); // Update on window resize\n\n return () => {\n window.removeEventListener('resize', updateHeight);\n };\n }, []);\n\n return (\n \n {children}\n \n );\n};","import React, {useEffect, useRef, useState} from 'react';\nimport styled from 'styled-components';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {Line} from 'react-chartjs-2';\nimport 'chartjs-adapter-moment';\nimport {LoadingSpinner, StyledLabel, StyledHeader} from './shared';\nimport {TableOverflowOuterWrapper, TableOverflowInnerWrapper} from '@bootcamp/web/src/bootcamps/components/Performance/shared';\nimport blurredBackground from '@bootcamp/shared/src/assets/images/dat-performance.png';\nimport {getResults} from '@bootcamp/shared/src/util/scoring';\n\nimport theme from '@bootcamp/shared/src/styles/theme';\nimport { AutoHeightParent } from '../../../components/AutoHeightParent';\n\nconst SUBJECTS = ['Biology', 'General Chemistry', 'Organic Chemistry', 'Perceptual Ability', 'Reading Comprehension', 'Quantitative Reasoning'];\n\nconst subjectColorMap = {\n 'Biology': '#53A3DF',\n 'General Chemistry': '#45BCBA',\n 'Organic Chemistry': '#ED9625',\n 'Perceptual Ability': '#BA3996',\n 'Reading Comprehension': '#DC517C',\n 'Quantitative Reasoning': '#6946BC',\n};\n\nconst Wrapper = styled.div`\n background: white;\n border-radius: 8px;\n padding: 24px;\n`;\nconst HeaderText = styled(StyledLabel)`\n margin-bottom: 0;\n`;\nconst Container = styled.div`\n margin-bottom: 32px;\n position: relative;\n`;\n\nconst ChartBackground = styled.div`\n background: white;\n border: 1px solid ${({theme}) => theme.colors.borderPalette.primary};\n padding: 24px 16px 12px;\n border-radius: 8px;\n height: 350px;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\nconst SubjectSelect = styled.select`\n background: white;\n border: 1px solid ${({theme}) => theme.colors.borderPalette.primary};\n border-radius: 8px;\n padding: 12px 16px;\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n width: 258px;\n cursor: pointer;\n font-family: proxima-nova;\n font-size: 18px;\n font-weight: 600;\n line-height: 100%;\n // custom caret with two-line arrow\n appearance: none;\n background-image: url(\"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22none%22%3E%0A%20%20%3Cpath%20d%3D%22M2.81322%205.31334C2.90697%205.21971%203.03405%205.16711%203.16655%205.16711C3.29905%205.16711%203.42614%205.21971%203.51989%205.31334L7.99989%209.79334L12.4799%205.31334C12.5747%205.22502%2012.7%205.17694%2012.8296%205.17922C12.9591%205.18151%2013.0827%205.23398%2013.1743%205.32559C13.2659%205.4172%2013.3184%205.54079%2013.3207%205.67033C13.323%205.79986%2013.2749%205.92522%2013.1866%206.02001L8.35322%2010.8533C8.25947%2010.947%208.13239%2010.9996%207.99989%2010.9996C7.86738%2010.9996%207.7403%2010.947%207.64655%2010.8533L2.81322%206.02001C2.71959%205.92626%202.66699%205.79917%202.66699%205.66667C2.66699%205.53417%202.71959%205.40709%202.81322%205.31334Z%22%20fill%3D%22%232F3037%22%2F%3E%0A%3C%2Fsvg%3E\");\n background-repeat: no-repeat;\n background-position-x: 95%;\n background-position-y: 50%;\n &:focus {\n outline: none;\n }\n`;\nconst SelectArea = styled.div`\n display: flex;\n flex-direction: row;\n gap: 8px;\n margin-bottom: 12px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n }\n`;\n\n\n\nexport const PerformanceChart = ({averages, fetching, subjectOverride='', dataByTest, parentHasPadding}) => {\n const {searchUserInteractions, bootcamp} = useUserDataContext();\n const [selectedSubject, setSelectedSubject] = useState(subjectOverride);\n const [gradient, setGradient] = useState();\n const chartRef = useRef();\n const wrapperRef = useRef();\n\n const {sortOrder} = searchUserInteractions(`performance_order`, 'DESC');\n const performanceRecord = searchUserInteractions(`${bootcamp}_performance`);\n\n // const subjectAverage = subjectAverages?.[selectedSubject]?.avgScore;\n const subjectAverageScore = 390 // getResults(subjectAverage * 100, `${selectedSubject} Test #1`, selectedSubject)?.score || 18;\n\n const testResultsOverTime = performanceRecord\n .results\n ?.map(({testSubject, testNumber, score, createdAt}) => {\n const translatedScore = score;\n return ({ testSubject, testNumber, score: translatedScore, createdAt });\n }) || [];\n const data = [...testResultsOverTime].sort((a, b) => sortOrder === 'DESC' ? new Date(b.createdAt) - new Date(a.createdAt) : new Date(a.createdAt) - new Date(b.createdAt));\n const filteredTestResultsOverTime = data.filter(({testSubject}) => testSubject === selectedSubject || selectedSubject === 'All');\n\n const maxChartValue = 600;\n\n useEffect(() => {\n if (fetching) return;\n if (!selectedSubject) {\n for (const subject of SUBJECTS) {\n const firstSubject = data.find(({testSubject}) => testSubject === subject);\n if (firstSubject) {\n setSelectedSubject(firstSubject.testSubject);\n break;\n }\n }\n setSelectedSubject(SUBJECTS[0])\n }\n\n const ctx = chartRef.current?.ctx;\n let gradient;\n if (ctx && selectedSubject) {\n // create a similar linear gradient to the following:\n // linear-gradient(180deg, rgba(98, 85, 229, 0.20) 27.22%, rgba(98, 85, 229, 0.05) 100%);\n gradient = ctx.createLinearGradient(0, 0, 0, chartRef.current.chartArea.bottom - chartRef.current.chartArea.top);\n gradient.addColorStop(0, `${subjectColorMap[selectedSubject]}AA`);\n gradient.addColorStop(1, `${subjectColorMap[selectedSubject]}10`);\n setGradient(gradient)\n }\n\n }, [fetching, selectedSubject, chartRef.current]);\n\n const dataset = {\n label: selectedSubject,\n data: filteredTestResultsOverTime.reduce((acc, {testSubject: ts, score, createdAt, testNumber}) => {\n if (ts !== selectedSubject) return acc;\n return [\n ...acc,\n {x: createdAt, y: score, dataLabel: `${ts} #${testNumber}: ${score}`}\n ];\n }, []),\n borderColor: subjectColorMap[selectedSubject],\n pointColor: subjectColorMap[selectedSubject],\n pointBackgroundColor: subjectColorMap[selectedSubject],\n pointRadius: 5,\n pointHoverRadius: 6,\n hoverBorderWidth: 5,\n hitRadius: 8,\n borderWidth: 3,\n cubicInterpolationMode: 'monotone',\n fill: true,\n backgroundColor: gradient,\n };\n\n const averageDataset = {\n label: 'Average Score',\n data: filteredTestResultsOverTime.map(result => ({\n x: result.createdAt,\n y: subjectAverageScore,\n })),\n borderColor: '#000000', // Black for high contrast\n borderWidth: 2,\n borderDash: [2, 2], // Dotted or dashed line style\n pointRadius: 0, // Hide points on the average line\n pointHoverRadius: 0,\n pointHitRadius: 30, // Expands the hover area\n hoverBorderWidth: 0, // Make the line stand out when hovered\n fill: false,\n };\n\n const chartData = {\n labels: filteredTestResultsOverTime.map(({createdAt}) => createdAt),\n datasets: [dataset, averageDataset]\n };\n\n function customTooltipHandler(context) {\n const tooltipModel = context.tooltip;\n\n // Hide tooltip when no tooltip is active\n if (!tooltipModel || tooltipModel.opacity === 0) {\n const tooltipEl = document.getElementById(\"custom-tooltip\");\n if (tooltipEl) tooltipEl.style.opacity = \"0\";\n return;\n }\n\n // Create tooltip container if it doesn't exist\n let tooltipEl = document.getElementById(\"custom-tooltip\");\n\n if (!tooltipEl) {\n tooltipEl = document.createElement(\"div\");\n tooltipEl.id = \"custom-tooltip\";\n tooltipEl.style.position = \"absolute\";\n tooltipEl.style.padding = \"6px 8px\";\n tooltipEl.style.borderRadius = \"8px\";\n tooltipEl.style.fontSize = \"14px\";\n tooltipEl.style.pointerEvents = \"none\";\n tooltipEl.style.opacity = \"0\";\n tooltipEl.style.transition = \"opacity 0.2s ease\";\n tooltipEl.style.fontFamily = 'proxima-nova';\n document.body.appendChild(tooltipEl);\n }\n\n // Set custom text and colors dynamically\n const datasetLabel = tooltipModel.dataPoints[0].dataset.label;\n const value = tooltipModel.dataPoints[0].raw.y;\n\n if (datasetLabel === \"Average Score\") {\n tooltipEl.style.background = 'white';\n tooltipEl.style.color = 'black';\n tooltipEl.style.border = `1px solid ${theme.colors.borderPalette.primary}`;\n tooltipEl.innerHTML = `Bootcamp Avg: ${value}`;\n tooltipEl.style.minWidth = 'initial';\n } else {\n tooltipEl.style.background = theme.colors.special.tuxedo;\n tooltipEl.style.borderColor = 'transparent';\n tooltipEl.style.color = 'white';\n tooltipEl.style.minWidth = '250px';\n\n const data = tooltipModel.dataPoints[0];\n const date = new Date(data.label).toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' });\n const label = data.dataset.data[data.dataIndex].dataLabel.split(': ')[0].trim();\n\n tooltipEl.innerHTML = `\n
\n ${date}\n ${label}\n
\n
\n Your Score\n ${data.formattedValue}\n
\n
\n Bootcamp Avg.\n ${subjectAverageScore}\n
\n
\n
\n `;\n }\n\n // Get chart position for accurate tooltip placement\n const chartRect = context.chart.canvas.getBoundingClientRect();\n const tooltipWidth = tooltipEl.offsetWidth;\n const tooltipHeight = tooltipEl.offsetHeight;\n\n let tooltipX = chartRect.left + window.scrollX + tooltipModel.caretX;\n let tooltipY = chartRect.top + window.scrollY + tooltipModel.caretY - tooltipHeight - 10; // Default: above hovered point\n\n // Get viewport width and height\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n\n if (datasetLabel === 'Average Score') {\n tooltipX = chartRect.right - 120; // Position to the right of the chart\n tooltipY = chartRect.top + window.scrollY + tooltipModel.caretY - tooltipHeight / 2; // Centered on the avg score line\n\n // Prevent tooltip from going off-screen\n if (tooltipX + tooltipWidth > viewportWidth - 10) {\n tooltipX = viewportWidth - tooltipWidth - 10;\n }\n if (tooltipY < window.scrollY + 10) {\n tooltipY = window.scrollY + 10;\n }\n if (tooltipY + tooltipHeight > viewportHeight - 10) {\n tooltipY = viewportHeight - tooltipHeight - 10;\n }\n } else {\n // **Prevent Tooltip from Going Off-Screen**\n if (tooltipX + tooltipWidth > viewportWidth - 10) {\n // If it overflows right, shift it left\n tooltipX -= (tooltipWidth + 20);\n }\n if (tooltipX < 10) {\n // If it overflows left, shift it right\n tooltipX = 10;\n }\n if (tooltipY < window.scrollY + 10) {\n // If it overflows top, move below the hovered point\n tooltipY = chartRect.top + window.scrollY + tooltipModel.caretY + 10;\n }\n if (tooltipY + tooltipHeight > viewportHeight - 10) {\n // If it overflows bottom, shift up slightly\n tooltipY = viewportHeight - tooltipHeight - 10;\n }\n }\n\n // Apply final positioning\n tooltipEl.style.left = `${tooltipX}px`;\n tooltipEl.style.top = `${tooltipY}px`;\n tooltipEl.style.opacity = \"1\"; // Make it visible\n }\n\n const chartOptions = {\n responsive: true,\n maintainAspectRatio: false,\n type: 'line',\n normalized: true,\n scales: {\n x: {\n type: 'timeseries',\n time: {\n unit: 'day',\n },\n ticks: {\n font: {\n family: 'proxima-nova',\n size: 14,\n weight: 'bold',\n },\n color: '#C8C9CE',\n callback: function(value, index, values, ...rest) {\n const resultMatch = sortOrder === 'DESC'\n ? [...filteredTestResultsOverTime]?.reverse()?.[index]\n : filteredTestResultsOverTime?.[index];\n const formattedLabel = `Test #${resultMatch?.testNumber}`;\n\n return formattedLabel;\n }\n },\n title: {\n display: false,\n text: 'Date',\n font: {\n family: 'proxima-nova',\n size: 16,\n weight: 'bold',\n },\n color: '#C8C9CE'\n },\n grid: {\n display: false, // Hide the gridlines on the y-axis\n },\n },\n y: {\n min: 10,\n suggestedMax: maxChartValue,\n ticks: {\n font: {\n family: 'proxima-nova',\n size: 16,\n weight: 'bold',\n },\n color: '#85868E'\n },\n border: {\n display: false,\n dash: [2, 2],\n },\n grid: {\n tickBorderDash: [2, 2],\n tickBorderDashOffset: 0,\n },\n title: {\n display: true,\n text: `Estimated DAT Score`,\n font: {\n family: 'proxima-nova',\n size: 16,\n weight: 'bold',\n },\n color: '#85868E',\n padding: {\n bottom: 8,\n }\n }\n }\n },\n plugins: {\n tooltip: {\n enabled: false,\n external: customTooltipHandler,\n },\n legend: {\n display: false,\n position: 'bottom',\n labels: {\n boxWidth: 10,\n boxHeight: 10,\n usePointStyle: true,\n font: {\n family: 'proxima-nova',\n },\n }\n },\n },\n };\n\n\n return (\n \n \n Performance Over Time\n \n \n \n \n \n \n {!subjectOverride && (\n {\n setSelectedSubject(e.target.value);\n }}>\n \n {SUBJECTS.map(subject => )}\n \n )}\n \n \n {fetching ? : filteredTestResultsOverTime?.length < 2 ? (\n
\n

Not enough data to display chart yet

\n

Come back when you've completed at least 2 practice tests!

\n
\n ) : }\n
\n
\n
\n
\n
\n
\n )\n}","import React, {useState, useEffect} from 'react';\nimport styled from 'styled-components';\nimport html2canvas from 'html2canvas'; // Import html2canvas\n\nimport {Row} from '@bootcamp/web/src/components/Grid';\nimport ari from '@bootcamp/shared/src/assets/educators/ari.gif';\nimport datLogo from '@bootcamp/shared/src/assets/icons/logo/dat-logo.png';\nimport {useBootcampConfigContext} from '@bootcamp/web/src/contexts/BootcampConfig';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {Chiclet, RoundButton} from '@bootcamp/web/src/components/UI';\nimport {Color} from '@styled-icons/fluentui-system-filled/Color';\nimport {ArrowDownload} from '@styled-icons/fluentui-system-filled/ArrowDownload';\nimport {LoadingSpinner, Toggle, StyledBlurb, StyledHeader, StyledLabel, StyledTable} from './shared';\nimport {PerformanceChart} from './PerformanceChart';\nimport {getResults} from '@bootcamp/shared/src/util/scoring';\nimport {TextTooltip} from '@bootcamp/web/src/bootcamps/pages/CreateTest/components/shared';\nimport {Tooltip} from 'react-tooltip'\nimport {TableOverflowOuterWrapper, TableOverflowInnerWrapper} from '@bootcamp/web/src/bootcamps/components/Performance/shared';\nimport {createPathFromConfigMatch, findInConfigById} from '@bootcamp/shared/src/util';\n\nimport theme from '@bootcamp/shared/src/styles/theme';\nimport debounce from 'lodash.debounce';\nimport { Body3 } from '../../../components/Typography/next';\nimport { format } from 'date-fns';\n\nconst StyledTextTooltip = styled(TextTooltip)`\n margin-left: 8px;\n svg {\n height: 14px;\n width: 14px;\n }\n color: ${({theme}) => theme.overlays.opacity.light._400};\n`;\n\nconst Header = styled.div`\n display: flex;\n margin-bottom: 16px;\n align-items: center;\n`;\n\nconst Container = styled.div`\n border-radius: 8px;\n margin-bottom: 32px;\n`;\n\nconst HeatmapToggle = styled(Chiclet)`\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-left: 0;\n }\n`;\nconst TestResultTable = styled(StyledTable)`\n min-width: 800px;\n tr:first-child {\n td:first-child {\n width: 148px;\n }\n }\n td:last-child {\n text-align: left;\n }\n`;\n\nconst ShareButton = styled(RoundButton)`\n margin-left: auto;\n padding: 8px 12px;\n font-size:\n`;\nconst Wrapper = styled.div`\n margin-bottom: 16px;\n padding: 0px 32px;\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 0 16px;\n }\n`;\nconst ToggleRow = styled(Row)`\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n gap: 8px;\n }\n`;\nconst DownloadIcon = styled(ArrowDownload)`\n color: #000000;\n width: 16px;\n height: 16px;\n`;\nconst CellContentContainer = styled.span`\n`;\nconst StyledTooltip = styled(Tooltip)`\n min-width: 250px;\n border-radius: 8px;\n padding: 8px 12px;\n background: ${({theme}) => theme.colors.special.tuxedo};\n opacity: 1;\n`;\nconst TooltipContentContainer = styled.div`\n`;\nconst TooltipDate = styled(Body3)`\n margin-bottom: 4px;\n`;\nconst TooltipTestTitle = styled(Body3)`\n margin-bottom: 4px;\n font-weight: 700;\n`;\nconst TooltipScoreArea = styled.div`\n display: flex;\n flex-direction: column;\n`;\nconst TooltipScore = styled.div`\n display: flex;\n justify-content: space-between;\n color: ${({theme}) => theme.colors.typographyPalette.tertiary};\n gap: 8px;\n\n &:first-child {\n color: white;\n }\n`;\n\nconst TooltipScoreTop = styled(Body3)`\n font-weight: 700;\n`;\n\nconst TooltipScoreBottom = styled(Body3)`\n font-weight: 400;\n`;\n\nfunction formatDate(date) {\n try {\n return format(new Date(date), 'MMM d, yyyy');\n } catch (error) {\n return ''\n }\n}\nconst TooltipContent = ({\n date,\n testTitle,\n score,\n avgScore,\n}) => {\n\n const formattedDate = formatDate(date);\n const title = testTitle?.replace('Test', '');\n\n return (\n \n {formattedDate}\n {title}\n \n \n Your Score\n {score}\n \n \n Bootcamp Avg.\n {avgScore}\n \n \n \n );\n}\n\nconst CellContent = ({score, onMouseEnter, disabled}) => {\n if (disabled) return score;\n\n return (\n \n {score}\n \n );\n};\n\nconst Test = ({fetching, dataByTest=[], averages, testAverages, sortOrder}) => {\n const [tooltipProps, setTooltipProps] = useState({});\n\n const {isBootcampPlusStudent} = useUserDataContext();\n const {config} = useBootcampConfigContext();\n\n const rows = dataByTest\n .map((subjects, index) => ({\n cells: [\n { content: `Test #${index+1}` },\n ...subjects.map(({score, testId, testProgressId, date, testNumber, subject, ...rest}) => {\n const configMatch = findInConfigById(config, testId);\n const fltConfigHit = [config?.studyTools?.[0]?.content?.find(({ id }) => id === testId)];\n const configRoute = configMatch\n ? createPathFromConfigMatch(configMatch)\n : fltConfigHit\n ?`/full-length/test-${index + 1}`\n : '';\n\n const testRoute = `/dat${configRoute}`;\n const cellDisabled = score === '-';\n // const avgScorePercentage = testAverages?.[testId]?.avgScore * 100;\n const testTitle = `${subject} Test #${testNumber}`;\n const avgScore = 390 // getResults(avgScorePercentage, testTitle, subject);\n const tooltipDisplayTitle = fltConfigHit[0]\n ? fltConfigHit[0].name\n : testTitle\n\n const getCellThemeProps = (score) => {\n if (cellDisabled) return {};\n\n const themes = [\n theme.colors.interfacePalette.red,\n theme.colors.interfacePalette.yellow,\n theme.colors.interfacePalette.green,\n ];\n\n let themeIndex;\n\n themeIndex = score <= 370\n ? 0\n : score <= 410\n ? 1\n : 2;\n\n return {\n background: themes[themeIndex].light,\n color: themes[themeIndex].dark\n }\n };\n\n return {\n to: !testId ? null : `${testRoute}/review?id=${testId}&testProgressId=${encodeURIComponent(testProgressId)}&testRoute=${encodeURIComponent(testRoute)}`,\n disabled: cellDisabled,\n content: setTooltipProps({score, avgScore, date, testTitle: tooltipDisplayTitle})}/>,\n ...getCellThemeProps(score)\n }\n }),\n ],\n }))\n\n const allSubjectsPresent = averages.map(({content}) => content).every(score => score !== '-');\n const average = allSubjectsPresent ? averages[6].content : 'N/A';\n const scoringAverageMax = Math.min(average + 20, 600);\n\n // filter out PAT\n const baseFeedback = average === 'N/A'\n ? Check back once you’ve completed a full practice test for an estimated DAT score. Be sure you complete all {isBootcampPlusStudent ? '15' : '10'} practice tests before your DAT to get the most accurate estimated score.\n : Based on your performance, I'd estimate an AA score of {average} - {scoringAverageMax} on the DAT. Don't focus too much on the estimate - instead, continue to review your areas of knowledge. Make sure you complete all the practice tests to learn from your mistakes and get a more accurate estimated score. Note your First Attempt is your most accurate score prediction.

\n Starting March 1, 2025, the DAT switched to a 3-digit scoring scale (200-600). Learn more here.\n
\n\n const feedback = sortOrder === 'ASC'\n ? baseFeedback\n : 'Your Latest Attempts are not the most accurate score predictions. Focus on the First Attempts instead!'\n\n // Function to add the container, header, and extra text before downloading the image\n const downloadTableAsImage = debounce(() => {\n // Create a container with padding\n const container = document.createElement('div');\n container.style.padding = '16px';\n container.style.background = theme.colors.brandPalette.royal.default;\n container.style.borderRadius = '8px';\n container.style.width = '1024px';\n\n // Create a header for \"Score Report\"\n const header = document.createElement('div');\n header.style.display = 'flex';\n header.style.justifyContent = 'space-between';\n header.style.marginBottom = '16px';\n\n const leftText = document.createElement('h2');\n leftText.innerText = 'Score Report';\n leftText.style.margin = '0';\n leftText.style.color = 'white';\n leftText.style.fontFamily = \"proxima-nova\";\n leftText.style.fontSize = \"24px\";\n leftText.style.fontWeight = \"700\";\n leftText.style.lineHeight = \"30px\";\n\n const logo = document.createElement('img');\n logo.src = datLogo;\n // logo.style.width = '100px';\n logo.style.height = '30px';\n logo.style.margin = '0';\n\n // Append the left and right text to the header\n header.appendChild(leftText);\n header.appendChild(logo);\n\n // Clone the table element to keep the original intact\n const tableElement = document.getElementById('score-table').cloneNode(true);\n\n // Append header and table to the container\n container.appendChild(header);\n container.appendChild(tableElement);\n\n // Append container to body temporarily for rendering\n document.body.appendChild(container);\n\n // Convert the container to an image\n html2canvas(container).then((canvas) => {\n const link = document.createElement('a');\n link.href = canvas.toDataURL('image/png');\n link.download = 'score_report.png';\n link.click();\n\n // Clean up by removing the container after the image is downloaded\n document.body.removeChild(container);\n });\n }, 450, {leading: true, trailing: false});\n\n return (\n \n } place={'right'}/>\n \n
\n Score Report\n {/* Use First Attempt for the most accurate score prediction. */}\n }>\n Download\n \n
\n \n
\n \n \n \n \n \n
\n );\n};\n\nTest.defaultProps = {};\nTest.propTypes = {};\n\nexport default Test;","var _g;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgWarning(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 17,\n height: 17,\n viewBox: \"0 0 17 17\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Warning\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Vector\",\n d: \"M7.76665 2.74C8.0987 2.55533 8.48846 2.50355 8.85721 2.59512C9.22596 2.68669 9.54622 2.91478 9.75331 3.23333L9.81331 3.32667L14.9866 12.66C15.11 12.8816 15.1751 13.1309 15.1759 13.3845C15.1768 13.6381 15.1133 13.8878 14.9914 14.1102C14.8696 14.3326 14.6933 14.5205 14.4791 14.6563C14.2649 14.7921 14.0198 14.8713 13.7666 14.8867H3.32665C3.07535 14.8862 2.82819 14.8226 2.60788 14.7017C2.38757 14.5808 2.20116 14.4065 2.06577 14.1948C1.93038 13.9831 1.85036 13.7408 1.83304 13.4901C1.81571 13.2394 1.86166 12.9883 1.96665 12.76L2.01331 12.6667L7.18665 3.32667C7.31998 3.08 7.51998 2.88 7.77331 2.74H7.76665ZM8.49998 11.5533C8.32317 11.5533 8.1536 11.6236 8.02857 11.7486C7.90355 11.8736 7.83331 12.0432 7.83331 12.22C7.83331 12.3968 7.90355 12.5664 8.02857 12.6914C8.1536 12.8164 8.32317 12.8867 8.49998 12.8867C8.67679 12.8867 8.84636 12.8164 8.97138 12.6914C9.09641 12.5664 9.16665 12.3968 9.16665 12.22C9.16665 12.0432 9.09641 11.8736 8.97138 11.7486C8.84636 11.6236 8.67679 11.5533 8.49998 11.5533ZM8.49998 6.22C8.33619 6.21882 8.1777 6.27797 8.05475 6.38617C7.93179 6.49438 7.85296 6.64406 7.83331 6.80667V10.3C7.83331 10.4768 7.90355 10.6464 8.02857 10.7714C8.1536 10.8964 8.32317 10.9667 8.49998 10.9667C8.67679 10.9667 8.84636 10.8964 8.97138 10.7714C9.09641 10.6464 9.16665 10.4768 9.16665 10.3V6.80667C9.147 6.64406 9.06817 6.49438 8.94521 6.38617C8.82225 6.27797 8.66376 6.21882 8.49998 6.22Z\",\n fill: \"#E05E57\"\n }))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgWarning);\nexport default __webpack_public_path__ + \"static/media/warning.855150af.svg\";\nexport { ForwardRef as ReactComponent };","export const averagesWithPlusTests = {\n\"Biology\": {\n \"totalQuestions\": 600,\n \"avgTime\": 14356.553198250998,\n \"avgScore\": 413.76547008522823,\n \"count\": 15,\n \"systems\": {\n \"Cell Division\": {\n \"totalQuestions\": 23,\n \"avgTime\": 624.3348606464602,\n \"avgScore\": 15.853165611948336,\n \"count\": 13\n },\n \"Molecular Genetics\": {\n \"totalQuestions\": 45,\n \"avgTime\": 1119.116247441579,\n \"avgScore\": 30.31551035389709,\n \"count\": 15\n },\n \"Endocrine System\": {\n \"totalQuestions\": 26,\n \"avgTime\": 595.0672303277837,\n \"avgScore\": 18.18272767448871,\n \"count\": 14\n },\n \"Ecology\": {\n \"totalQuestions\": 28,\n \"avgTime\": 634.209426237747,\n \"avgScore\": 20.555809404953127,\n \"count\": 14\n },\n \"Cellular Energy\": {\n \"totalQuestions\": 28,\n \"avgTime\": 667.0094979810862,\n \"avgScore\": 20.31250094478297,\n \"count\": 14\n },\n \"Reproduction and Developmental Biology\": {\n \"totalQuestions\": 52,\n \"avgTime\": 1160.2866904072703,\n \"avgScore\": 33.85203532918085,\n \"count\": 15\n },\n \"Digestive System\": {\n \"totalQuestions\": 19,\n \"avgTime\": 373.3435016497563,\n \"avgScore\": 12.501711181643877,\n \"count\": 14\n },\n \"Heredity\": {\n \"totalQuestions\": 43,\n \"avgTime\": 1845.424151601949,\n \"avgScore\": 29.799978262435815,\n \"count\": 15\n },\n \"Cells and Organelles\": {\n \"totalQuestions\": 40,\n \"avgTime\": 992.5794869900271,\n \"avgScore\": 29.331554848813454,\n \"count\": 15\n },\n \"Diversity of Life\": {\n \"totalQuestions\": 46,\n \"avgTime\": 993.9796737228938,\n \"avgScore\": 30.594673026156507,\n \"count\": 15\n },\n \"Animal Behavior\": {\n \"totalQuestions\": 12,\n \"avgTime\": 269.54502608319825,\n \"avgScore\": 9.080122298488137,\n \"count\": 11\n },\n \"Molecules and Fundamentals of Biology\": {\n \"totalQuestions\": 22,\n \"avgTime\": 492.6921070033879,\n \"avgScore\": 15.632136738246627,\n \"count\": 12\n },\n \"Circulatory System\": {\n \"totalQuestions\": 25,\n \"avgTime\": 526.9444363693465,\n \"avgScore\": 18.657639499102388,\n \"count\": 13\n },\n \"Microscopy and Lab Techniques\": {\n \"totalQuestions\": 19,\n \"avgTime\": 317.6672078512191,\n \"avgScore\": 13.463335504936461,\n \"count\": 13\n },\n \"Photosynthesis\": {\n \"totalQuestions\": 16,\n \"avgTime\": 382.6299122921755,\n \"avgScore\": 10.511797199828196,\n \"count\": 13\n },\n \"Human Immune System\": {\n \"totalQuestions\": 22,\n \"avgTime\": 441.4225422253181,\n \"avgScore\": 13.63610681074765,\n \"count\": 13\n },\n \"Muscular System\": {\n \"totalQuestions\": 17,\n \"avgTime\": 298.1567526123941,\n \"avgScore\": 10.354413542381845,\n \"count\": 13\n },\n \"Evolution\": {\n \"totalQuestions\": 35,\n \"avgTime\": 874.2457617610362,\n \"avgScore\": 26.138134621011744,\n \"count\": 15\n },\n \"Nervous System\": {\n \"totalQuestions\": 18,\n \"avgTime\": 402.54502719322704,\n \"avgScore\": 11.373270132111706,\n \"count\": 14\n },\n \"Excretory System\": {\n \"totalQuestions\": 13,\n \"avgTime\": 344.648082764332,\n \"avgScore\": 8.182768982759772,\n \"count\": 12\n },\n \"Plants\": {\n \"totalQuestions\": 25,\n \"avgTime\": 494.78093694146855,\n \"avgScore\": 16.359463813781773,\n \"count\": 14\n },\n \"Skeletal System\": {\n \"totalQuestions\": 10,\n \"avgTime\": 226.48215716221097,\n \"avgScore\": 7.43562733357801,\n \"count\": 7\n },\n \"Respiratory System\": {\n \"totalQuestions\": 8,\n \"avgTime\": 181.01082696343488,\n \"avgScore\": 5.9043180028003865,\n \"count\": 7\n },\n \"Integumentary System\": {\n \"totalQuestions\": 8,\n \"avgTime\": 98.43165402169421,\n \"avgScore\": 5.736668967152824,\n \"count\": 8\n }\n }\n},\n\"General Chemistry\": {\n \"totalQuestions\": 450,\n \"avgTime\": 22827.614785951722,\n \"avgScore\": 308.3431791622658,\n \"count\": 15,\n \"systems\": {\n \"Periodic Trends\": {\n \"totalQuestions\": 40,\n \"avgTime\": 1530.8873844449436,\n \"avgScore\": 29.353867987330787,\n \"count\": 14\n },\n \"Liquids and Solids\": {\n \"totalQuestions\": 35,\n \"avgTime\": 1269.8272833867807,\n \"avgScore\": 23.761773680192604,\n \"count\": 13\n },\n \"Chemical Kinetics\": {\n \"totalQuestions\": 24,\n \"avgTime\": 1172.1995560198636,\n \"avgScore\": 16.106384551722016,\n \"count\": 12\n },\n \"Chemical Equilibria\": {\n \"totalQuestions\": 23,\n \"avgTime\": 1157.5972047768278,\n \"avgScore\": 15.26020277704361,\n \"count\": 13\n },\n \"Thermodynamics and Thermochemistry\": {\n \"totalQuestions\": 38,\n \"avgTime\": 2059.651230882279,\n \"avgScore\": 25.628260042404747,\n \"count\": 14\n },\n \"Stoichiometry\": {\n \"totalQuestions\": 31,\n \"avgTime\": 2785.109231641691,\n \"avgScore\": 22.59689751304102,\n \"count\": 14\n },\n \"Gases\": {\n \"totalQuestions\": 35,\n \"avgTime\": 2259.81604087772,\n \"avgScore\": 24.460148101747208,\n \"count\": 15\n },\n \"Chemical Solutions\": {\n \"totalQuestions\": 36,\n \"avgTime\": 2455.7358332038884,\n \"avgScore\": 22.515515014667596,\n \"count\": 15\n },\n \"Molecular Structure and Geometry\": {\n \"totalQuestions\": 31,\n \"avgTime\": 1416.8265565109705,\n \"avgScore\": 22.732622883902305,\n \"count\": 15\n },\n \"Electrochemistry and Oxidation Reduction Reactions\": {\n \"totalQuestions\": 32,\n \"avgTime\": 1560.175189297649,\n \"avgScore\": 20.664594675826898,\n \"count\": 15\n },\n \"Atomic and Electronic Structure\": {\n \"totalQuestions\": 33,\n \"avgTime\": 1274.8287995654134,\n \"avgScore\": 24.48185471313932,\n \"count\": 14\n },\n \"Acid Base Equilibria and Titrations\": {\n \"totalQuestions\": 47,\n \"avgTime\": 2223.8244525576206,\n \"avgScore\": 29.173641642500584,\n \"count\": 15\n },\n \"Nuclear Reactions\": {\n \"totalQuestions\": 21,\n \"avgTime\": 992.4656903765112,\n \"avgScore\": 14.32560934062147,\n \"count\": 14\n },\n \"Laboratory Techniques\": {\n \"totalQuestions\": 24,\n \"avgTime\": 668.670332409562,\n \"avgScore\": 17.281806238125625,\n \"count\": 12\n }\n }\n},\n\"Organic Chemistry\": {\n \"totalQuestions\": 450,\n \"avgTime\": 19824.002275656778,\n \"avgScore\": 280.4092536204623,\n \"count\": 15,\n \"systems\": {\n \"Acids and Bases\": {\n \"totalQuestions\": 43,\n \"avgTime\": 1800.8063215068587,\n \"avgScore\": 26.089528868352364,\n \"count\": 15\n },\n \"Nomenclature\": {\n \"totalQuestions\": 40,\n \"avgTime\": 1936.0564183870054,\n \"avgScore\": 28.631839257118283,\n \"count\": 15\n },\n \"Stereochemistry\": {\n \"totalQuestions\": 34,\n \"avgTime\": 1701.71157297215,\n \"avgScore\": 21.222961826940836,\n \"count\": 14\n },\n \"IM Forces and Lab Techniques\": {\n \"totalQuestions\": 31,\n \"avgTime\": 1043.4807870277957,\n \"avgScore\": 21.096404146268785,\n \"count\": 15\n },\n \"Carboxylic Acids and Acid Derivatives\": {\n \"totalQuestions\": 21,\n \"avgTime\": 865.5415965386729,\n \"avgScore\": 13.00406339190429,\n \"count\": 12\n },\n \"Spectroscopy\": {\n \"totalQuestions\": 35,\n \"avgTime\": 1374.3541934739465,\n \"avgScore\": 22.12438295351383,\n \"count\": 15\n },\n \"Aromatic Compounds\": {\n \"totalQuestions\": 40,\n \"avgTime\": 2011.9793793780564,\n \"avgScore\": 23.260272749400766,\n \"count\": 15\n },\n \"Aldehydes and Ketones\": {\n \"totalQuestions\": 36,\n \"avgTime\": 1655.126152856429,\n \"avgScore\": 19.85191115291923,\n \"count\": 15\n },\n \"Alkenes and Alkynes\": {\n \"totalQuestions\": 44,\n \"avgTime\": 1957.6273011171256,\n \"avgScore\": 28.764366768826786,\n \"count\": 15\n },\n \"Free Radical Halogenation and Diels Alder\": {\n \"totalQuestions\": 12,\n \"avgTime\": 448.9142627439153,\n \"avgScore\": 8.077404038686414,\n \"count\": 8\n },\n \"Alpha Substitution Reactions of Carbonyls\": {\n \"totalQuestions\": 10,\n \"avgTime\": 492.37162741457917,\n \"avgScore\": 5.508835771836471,\n \"count\": 8\n },\n \"Substitution and Elimination\": {\n \"totalQuestions\": 50,\n \"avgTime\": 2172.3142400844067,\n \"avgScore\": 29.221808368898394,\n \"count\": 15\n },\n \"Bonding and Molecular Geometry\": {\n \"totalQuestions\": 34,\n \"avgTime\": 1528.2521859922135,\n \"avgScore\": 21.3156620151098,\n \"count\": 15\n },\n \"Alcohols Ethers Epoxides\": {\n \"totalQuestions\": 20,\n \"avgTime\": 835.4662361636214,\n \"avgScore\": 12.239812310686066,\n \"count\": 11\n }\n }\n},\n\"Perceptual Ability\": {\n \"totalQuestions\": 1350,\n \"avgTime\": 51057.91975817553,\n \"avgScore\": 914.0356389227052,\n \"count\": 15,\n \"systems\": {\n \"Keyhole\": {\n \"totalQuestions\": 225,\n \"avgTime\": 10602.313372005505,\n \"avgScore\": 139.27982196965738,\n \"count\": 15\n },\n \"TFE\": {\n \"totalQuestions\": 225,\n \"avgTime\": 8838.879868172444,\n \"avgScore\": 137.56520941414678,\n \"count\": 15\n },\n \"Angle Ranking\": {\n \"totalQuestions\": 225,\n \"avgTime\": 6693.8059576918195,\n \"avgScore\": 135.77289384393038,\n \"count\": 15\n },\n \"Hole Punching\": {\n \"totalQuestions\": 225,\n \"avgTime\": 9730.101529603575,\n \"avgScore\": 172.68588128576008,\n \"count\": 15\n },\n \"Cube Counting\": {\n \"totalQuestions\": 225,\n \"avgTime\": 6447.847968224201,\n \"avgScore\": 180.0169566557918,\n \"count\": 15\n },\n \"Pattern Folding\": {\n \"totalQuestions\": 225,\n \"avgTime\": 8744.971062477978,\n \"avgScore\": 148.7148757534188,\n \"count\": 15\n }\n }\n},\n\"Reading Comprehension\": {\n \"totalQuestions\": 750,\n \"avgTime\": 46978.1982548112,\n \"avgScore\": 541.657253378262,\n \"count\": 15,\n \"systems\": {\n \"Passage 1\": {\n \"totalQuestions\": 250,\n \"avgTime\": 16888.842792256426,\n \"avgScore\": 184.60314918638016,\n \"count\": 15\n },\n \"Passage 2\": {\n \"totalQuestions\": 253,\n \"avgTime\": 16709.146002028865,\n \"avgScore\": 187.18005913951936,\n \"count\": 15\n },\n \"Passage 3\": {\n \"totalQuestions\": 247,\n \"avgTime\": 13380.209460525903,\n \"avgScore\": 169.87404505236248,\n \"count\": 15\n }\n }\n},\n\"Quantitative Reasoning\": {\n \"totalQuestions\": 600,\n \"avgTime\": 35164.06203036919,\n \"avgScore\": 374.3440771737183,\n \"count\": 15,\n \"systems\": {\n \"Algebra - Quadratic Equations and Graphical Analysis\": {\n \"totalQuestions\": 55,\n \"avgTime\": 2980.9002535213554,\n \"avgScore\": 34.80649485578347,\n \"count\": 15\n },\n \"Statistics, Data Analysis, & Interpretation\": {\n \"totalQuestions\": 59,\n \"avgTime\": 3116.3015124976146,\n \"avgScore\": 42.07324592427674,\n \"count\": 15\n },\n \"Word Problems\": {\n \"totalQuestions\": 140,\n \"avgTime\": 10320.552592556043,\n \"avgScore\": 84.46131803250093,\n \"count\": 15\n },\n \"Quantitative Comparison\": {\n \"totalQuestions\": 91,\n \"avgTime\": 3829.97636179342,\n \"avgScore\": 57.007033151954836,\n \"count\": 15\n },\n \"Algebra - Equations and Inequalities\": {\n \"totalQuestions\": 34,\n \"avgTime\": 2177.5448555959733,\n \"avgScore\": 23.631398857779075,\n \"count\": 14\n },\n \"Algebra - Fundamentals \": {\n \"totalQuestions\": 71,\n \"avgTime\": 4475.071791961065,\n \"avgScore\": 48.70928393953944,\n \"count\": 15\n },\n \"Probability\": {\n \"totalQuestions\": 91,\n \"avgTime\": 5917.9478506994965,\n \"avgScore\": 55.62671924147331,\n \"count\": 15\n },\n \"Data Sufficiency\": {\n \"totalQuestions\": 54,\n \"avgTime\": 2134.9172926510073,\n \"avgScore\": 25.274184931461885,\n \"count\": 15\n },\n \"Geometry\": {\n \"totalQuestions\": 2,\n \"avgTime\": 94.60985369490261,\n \"avgScore\": 0.5946974668591679,\n \"count\": 2\n },\n \"Algebra\": {\n \"totalQuestions\": 2,\n \"avgTime\": 97.81673455859863,\n \"avgScore\": 1.3437821185130452,\n \"count\": 2\n },\n \"Applied Mathematics\": {\n \"totalQuestions\": 1,\n \"avgTime\": 18.422930839713867,\n \"avgScore\": 0.8159186535764376,\n \"count\": 1\n }\n }\n}\n};\n\nexport const averages = {\n \"Biology\": {\n \"totalQuestions\": 400,\n \"avgTime\": 10107.751653786047,\n \"avgScore\": 269.3919529816258,\n \"count\": 10,\n \"systems\": {\n \"Cell Division\": {\n \"totalQuestions\": 15,\n \"avgTime\": 425.70809429590827,\n \"avgScore\": 9.908560556301612,\n \"count\": 9\n },\n \"Molecular Genetics\": {\n \"totalQuestions\": 32,\n \"avgTime\": 937.1754890109055,\n \"avgScore\": 20.110347943301043,\n \"count\": 10\n },\n \"Endocrine System\": {\n \"totalQuestions\": 17,\n \"avgTime\": 385.771234664342,\n \"avgScore\": 11.001199442286667,\n \"count\": 9\n },\n \"Ecology\": {\n \"totalQuestions\": 19,\n \"avgTime\": 452.98174104632153,\n \"avgScore\": 14.02788936166504,\n \"count\": 10\n },\n \"Cellular Energy\": {\n \"totalQuestions\": 20,\n \"avgTime\": 419.9125004891567,\n \"avgScore\": 15.310989557242241,\n \"count\": 10\n },\n \"Reproduction and Developmental Biology\": {\n \"totalQuestions\": 35,\n \"avgTime\": 765.4073592691235,\n \"avgScore\": 22.17469520037341,\n \"count\": 10\n },\n \"Digestive System\": {\n \"totalQuestions\": 13,\n \"avgTime\": 239.07236959999895,\n \"avgScore\": 8.206824972492313,\n \"count\": 9\n },\n \"Heredity\": {\n \"totalQuestions\": 30,\n \"avgTime\": 1382.6859690084939,\n \"avgScore\": 20.433140816173683,\n \"count\": 10\n },\n \"Cells and Organelles\": {\n \"totalQuestions\": 28,\n \"avgTime\": 741.2323365257993,\n \"avgScore\": 20.817903890623974,\n \"count\": 10\n },\n \"Diversity of Life\": {\n \"totalQuestions\": 26,\n \"avgTime\": 616.7654883775087,\n \"avgScore\": 16.959349456987923,\n \"count\": 10\n },\n \"Animal Behavior\": {\n \"totalQuestions\": 7,\n \"avgTime\": 153.33350405108473,\n \"avgScore\": 5.173272185023471,\n \"count\": 7\n },\n \"Molecules and Fundamentals of Biology\": {\n \"totalQuestions\": 14,\n \"avgTime\": 301.79900412342835,\n \"avgScore\": 9.710584402574861,\n \"count\": 8\n },\n \"Circulatory System\": {\n \"totalQuestions\": 16,\n \"avgTime\": 372.61715081872626,\n \"avgScore\": 11.437482269252921,\n \"count\": 8\n },\n \"Microscopy and Lab Techniques\": {\n \"totalQuestions\": 12,\n \"avgTime\": 258.0671122481065,\n \"avgScore\": 7.694604498085074,\n \"count\": 9\n },\n \"Photosynthesis\": {\n \"totalQuestions\": 8,\n \"avgTime\": 211.3063683753479,\n \"avgScore\": 4.898940256778025,\n \"count\": 8\n },\n \"Human Immune System\": {\n \"totalQuestions\": 16,\n \"avgTime\": 323.17379867125123,\n \"avgScore\": 9.907369546399618,\n \"count\": 9\n },\n \"Muscular System\": {\n \"totalQuestions\": 10,\n \"avgTime\": 194.04905800623973,\n \"avgScore\": 5.820632226066564,\n \"count\": 8\n },\n \"Evolution\": {\n \"totalQuestions\": 25,\n \"avgTime\": 668.8786328568447,\n \"avgScore\": 17.794498849715133,\n \"count\": 10\n },\n \"Nervous System\": {\n \"totalQuestions\": 11,\n \"avgTime\": 247.8827113666307,\n \"avgScore\": 6.795946517972767,\n \"count\": 10\n },\n \"Excretory System\": {\n \"totalQuestions\": 10,\n \"avgTime\": 289.99703826676523,\n \"avgScore\": 6.023268303140359,\n \"count\": 9\n },\n \"Plants\": {\n \"totalQuestions\": 16,\n \"avgTime\": 323.0463690933241,\n \"avgScore\": 10.00407069868224,\n \"count\": 9\n },\n \"Skeletal System\": {\n \"totalQuestions\": 9,\n \"avgTime\": 201.47902799451523,\n \"avgScore\": 6.695901306180749,\n \"count\": 6\n },\n \"Respiratory System\": {\n \"totalQuestions\": 6,\n \"avgTime\": 122.82389160452821,\n \"avgScore\": 4.476318002800387,\n \"count\": 5\n },\n \"Integumentary System\": {\n \"totalQuestions\": 5,\n \"avgTime\": 72.58540402169422,\n \"avgScore\": 4.008162721505797,\n \"count\": 5\n }\n }\n },\n \"General Chemistry\": {\n \"totalQuestions\": 300,\n \"avgTime\": 15028.149868285916,\n \"avgScore\": 202.02375024272348,\n \"count\": 10,\n \"systems\": {\n \"Periodic Trends\": {\n \"totalQuestions\": 25,\n \"avgTime\": 916.2864975997675,\n \"avgScore\": 17.740202466187505,\n \"count\": 9\n },\n \"Liquids and Solids\": {\n \"totalQuestions\": 25,\n \"avgTime\": 951.6561776955323,\n \"avgScore\": 17.119543094432014,\n \"count\": 9\n },\n \"Chemical Kinetics\": {\n \"totalQuestions\": 21,\n \"avgTime\": 1099.5744336964242,\n \"avgScore\": 13.455266433389085,\n \"count\": 10\n },\n \"Chemical Equilibria\": {\n \"totalQuestions\": 18,\n \"avgTime\": 887.9718955858187,\n \"avgScore\": 11.325147816181273,\n \"count\": 10\n },\n \"Thermodynamics and Thermochemistry\": {\n \"totalQuestions\": 29,\n \"avgTime\": 1571.6120205370748,\n \"avgScore\": 19.215458665453166,\n \"count\": 10\n },\n \"Stoichiometry\": {\n \"totalQuestions\": 19,\n \"avgTime\": 1848.2222229234337,\n \"avgScore\": 13.193568522709525,\n \"count\": 9\n },\n \"Gases\": {\n \"totalQuestions\": 20,\n \"avgTime\": 1195.324265522272,\n \"avgScore\": 13.971976469988427,\n \"count\": 10\n },\n \"Chemical Solutions\": {\n \"totalQuestions\": 23,\n \"avgTime\": 1472.5286987139243,\n \"avgScore\": 13.871930045497251,\n \"count\": 10\n },\n \"Molecular Structure and Geometry\": {\n \"totalQuestions\": 16,\n \"avgTime\": 730.7632787240523,\n \"avgScore\": 11.173983385036955,\n \"count\": 10\n },\n \"Electrochemistry and Oxidation Reduction Reactions\": {\n \"totalQuestions\": 22,\n \"avgTime\": 1078.2105822926928,\n \"avgScore\": 13.353595379738568,\n \"count\": 10\n },\n \"Atomic and Electronic Structure\": {\n \"totalQuestions\": 21,\n \"avgTime\": 864.359782409264,\n \"avgScore\": 16.053810194557748,\n \"count\": 9\n },\n \"Acid Base Equilibria and Titrations\": {\n \"totalQuestions\": 26,\n \"avgTime\": 1168.6075353529027,\n \"avgScore\": 16.54835128764587,\n \"count\": 10\n },\n \"Nuclear Reactions\": {\n \"totalQuestions\": 14,\n \"avgTime\": 660.1813702242292,\n \"avgScore\": 9.801649306915605,\n \"count\": 10\n },\n \"Laboratory Techniques\": {\n \"totalQuestions\": 21,\n \"avgTime\": 582.8511070085274,\n \"avgScore\": 15.199267174990494,\n \"count\": 10\n }\n }\n },\n \"Organic Chemistry\": {\n \"totalQuestions\": 300,\n \"avgTime\": 12402.98255879579,\n \"avgScore\": 190.85825968296422,\n \"count\": 10,\n \"systems\": {\n \"Acids and Bases\": {\n \"totalQuestions\": 32,\n \"avgTime\": 1199.704529309941,\n \"avgScore\": 19.61110031352611,\n \"count\": 10\n },\n \"Nomenclature\": {\n \"totalQuestions\": 18,\n \"avgTime\": 888.3969307489058,\n \"avgScore\": 13.410014628213585,\n \"count\": 10\n },\n \"Stereochemistry\": {\n \"totalQuestions\": 23,\n \"avgTime\": 1134.933322849668,\n \"avgScore\": 14.546967145192486,\n \"count\": 9\n },\n \"IM Forces and Lab Techniques\": {\n \"totalQuestions\": 22,\n \"avgTime\": 634.1175828566264,\n \"avgScore\": 14.743052720617992,\n \"count\": 10\n },\n \"Carboxylic Acids and Acid Derivatives\": {\n \"totalQuestions\": 17,\n \"avgTime\": 706.6371282856429,\n \"avgScore\": 10.918862946701566,\n \"count\": 9\n },\n \"Spectroscopy\": {\n \"totalQuestions\": 20,\n \"avgTime\": 835.6987050827688,\n \"avgScore\": 12.547285142838595,\n \"count\": 10\n },\n \"Aromatic Compounds\": {\n \"totalQuestions\": 28,\n \"avgTime\": 1282.775092056818,\n \"avgScore\": 16.72724696621749,\n \"count\": 10\n },\n \"Aldehydes and Ketones\": {\n \"totalQuestions\": 18,\n \"avgTime\": 704.7137769576018,\n \"avgScore\": 10.95617863858597,\n \"count\": 10\n },\n \"Alkenes and Alkynes\": {\n \"totalQuestions\": 34,\n \"avgTime\": 1444.1779237872513,\n \"avgScore\": 22.272180190254588,\n \"count\": 10\n },\n \"Free Radical Halogenation and Diels Alder\": {\n \"totalQuestions\": 10,\n \"avgTime\": 363.392790225705,\n \"avgScore\": 6.5713736182498295,\n \"count\": 7\n },\n \"Alpha Substitution Reactions of Carbonyls\": {\n \"totalQuestions\": 8,\n \"avgTime\": 395.17839760324597,\n \"avgScore\": 4.463463721019774,\n \"count\": 7\n },\n \"Substitution and Elimination\": {\n \"totalQuestions\": 30,\n \"avgTime\": 1144.6763532987172,\n \"avgScore\": 19.094298949298903,\n \"count\": 10\n },\n \"Bonding and Molecular Geometry\": {\n \"totalQuestions\": 23,\n \"avgTime\": 986.22372270737,\n \"avgScore\": 14.188049167598438,\n \"count\": 10\n },\n \"Alcohols Ethers Epoxides\": {\n \"totalQuestions\": 17,\n \"avgTime\": 682.3563030255266,\n \"avgScore\": 10.808185534648892,\n \"count\": 9\n }\n }\n },\n \"Perceptual Ability\": {\n \"totalQuestions\": 900,\n \"avgTime\": 33963.5290210539,\n \"avgScore\": 590.0583833349306,\n \"count\": 10,\n \"systems\": {\n \"Keyhole\": {\n \"totalQuestions\": 150,\n \"avgTime\": 6995.096272106979,\n \"avgScore\": 88.48696930042924,\n \"count\": 10\n },\n \"TFE\": {\n \"totalQuestions\": 150,\n \"avgTime\": 5819.089386425476,\n \"avgScore\": 87.16878811904418,\n \"count\": 10\n },\n \"Angle Ranking\": {\n \"totalQuestions\": 150,\n \"avgTime\": 4513.449121557795,\n \"avgScore\": 92.29269476776558,\n \"count\": 10\n },\n \"Hole Punching\": {\n \"totalQuestions\": 150,\n \"avgTime\": 6663.530075985708,\n \"avgScore\": 109.33197915033931,\n \"count\": 10\n },\n \"Cube Counting\": {\n \"totalQuestions\": 150,\n \"avgTime\": 4480.9512442693485,\n \"avgScore\": 115.23249858308614,\n \"count\": 10\n },\n \"Pattern Folding\": {\n \"totalQuestions\": 150,\n \"avgTime\": 5491.4129207085925,\n \"avgScore\": 97.545453414266,\n \"count\": 10\n }\n }\n },\n \"Reading Comprehension\": {\n \"totalQuestions\": 500,\n \"avgTime\": 31137.014841591474,\n \"avgScore\": 362.96362978112506,\n \"count\": 10,\n \"systems\": {\n \"Passage 1\": {\n \"totalQuestions\": 168,\n \"avgTime\": 11407.249654139128,\n \"avgScore\": 124.4003587481022,\n \"count\": 10\n },\n \"Passage 2\": {\n \"totalQuestions\": 169,\n \"avgTime\": 10988.580687466092,\n \"avgScore\": 125.53974580961545,\n \"count\": 10\n },\n \"Passage 3\": {\n \"totalQuestions\": 163,\n \"avgTime\": 8741.18449998625,\n \"avgScore\": 113.0235252234074,\n \"count\": 10\n }\n }\n },\n \"Quantitative Reasoning\": {\n \"totalQuestions\": 400,\n \"avgTime\": 22900.865579048812,\n \"avgScore\": 264.7000744468407,\n \"count\": 10,\n \"systems\": {\n \"Algebra - Quadratic Equations and Graphical Analysis\": {\n \"totalQuestions\": 32,\n \"avgTime\": 1442.108126496206,\n \"avgScore\": 20.739296526039738,\n \"count\": 10\n },\n \"Statistics, Data Analysis, & Interpretation\": {\n \"totalQuestions\": 44,\n \"avgTime\": 2278.986583896945,\n \"avgScore\": 32.07133822252213,\n \"count\": 10\n },\n \"Word Problems\": {\n \"totalQuestions\": 94,\n \"avgTime\": 6722.576077866911,\n \"avgScore\": 60.300240996474955,\n \"count\": 10\n },\n \"Quantitative Comparison\": {\n \"totalQuestions\": 56,\n \"avgTime\": 2486.217221676479,\n \"avgScore\": 38.31929012958852,\n \"count\": 10\n },\n \"Algebra - Equations and Inequalities\": {\n \"totalQuestions\": 30,\n \"avgTime\": 1834.5001362462483,\n \"avgScore\": 20.957328247045997,\n \"count\": 10\n },\n \"Algebra - Fundamentals \": {\n \"totalQuestions\": 51,\n \"avgTime\": 3196.9474680774447,\n \"avgScore\": 36.260886371942064,\n \"count\": 10\n },\n \"Probability\": {\n \"totalQuestions\": 55,\n \"avgTime\": 3342.949504145883,\n \"avgScore\": 36.56853809212631,\n \"count\": 10\n },\n \"Data Sufficiency\": {\n \"totalQuestions\": 33,\n \"avgTime\": 1385.7309415494838,\n \"avgScore\": 16.72875762215233,\n \"count\": 10\n },\n \"Geometry\": {\n \"totalQuestions\": 2,\n \"avgTime\": 94.60985369490261,\n \"avgScore\": 0.5946974668591679,\n \"count\": 2\n },\n \"Algebra\": {\n \"totalQuestions\": 2,\n \"avgTime\": 97.81673455859863,\n \"avgScore\": 1.3437821185130452,\n \"count\": 2\n },\n \"Applied Mathematics\": {\n \"totalQuestions\": 1,\n \"avgTime\": 18.422930839713867,\n \"avgScore\": 0.8159186535764376,\n \"count\": 1\n }\n }\n }\n};","import React, {useRef} from 'react';\nimport styled, {css} from 'styled-components';\nimport firstBy from 'thenby';\n\nimport {ReactComponent as Info} from '@bootcamp/shared/src/assets/svg/warning.svg';\n\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\n\nimport {StyledBody, StyledHeader, StyledLabel, StyledTable} from './shared';\nimport {SubjectCell, CellText, BarCell, BarCellText, MasteryCountCellText, CellSecondary, CellIcon, CellProgressBar, TopicCell, iconMap} from '@bootcamp/web/src/bootcamps/components/Performance/shared';\nimport {TableOverflowOuterWrapper, TableOverflowInnerWrapper} from '@bootcamp/web/src/bootcamps/components/Performance/shared';\nimport {AutoHeightParent} from '@bootcamp/web/src/components/AutoHeightParent';\n\nimport theme from '@bootcamp/shared/src/styles/theme';\n\nimport {averages, averagesWithPlusTests} from './averages';\n\n\nconst Container = styled.div`\n border-radius: 8px;\n`;\nconst SubjectTable = styled(StyledTable)`\n tr:first-child {\n td {\n white-space: nowrap;\n }\n }\n td:last-child {\n text-align: left;\n }\n`;\nconst SubjectHeader = styled(StyledHeader)`\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: ${({parentHasPadding}) => parentHasPadding ? '' : '0 16px'};\n }\n`;\n\nconst StyledTableOverflowOuterWrapper = styled(TableOverflowOuterWrapper)`\n\n`;\nconst StyledTableOverflowInnerWrapper = styled(TableOverflowInnerWrapper)`\n\n`;\n\nconst sumCounts = obj => Object.values(obj).reduce((acc, val) => acc + val, 0);\n\nconst getSubjectTotal = (counts, subject, hasPlusPackAccess) => {\n try {\n const {baseCounts, plusCounts} = counts || {};\n\n let total = 0;\n\n total = sumCounts(baseCounts[subject]);\n\n if (hasPlusPackAccess) {\n total += sumCounts(plusCounts[subject]);\n }\n\n return total;\n\n } catch (error) {\n return 0;\n }\n}\n\nconst getTopicTotal = (counts, subject, topic, hasPlusPackAccess) => {\n try {\n const {baseCounts, plusCounts} = counts || {};\n\n let total = 0;\n\n total = baseCounts[subject][topic];\n\n if (hasPlusPackAccess) {\n total += plusCounts[subject][topic];\n }\n\n return total || 0;\n\n } catch (error) {\n return 0;\n }\n}\n\nexport const Subject = ({dataBySubject=[], expandAll=false, parentHasPadding, subjectTopicCounts, mastery}) => {\n const tableWrapperRef = useRef(null);\n const {isBootcampPlusStudent} = useUserDataContext();\n const averagesObj = isBootcampPlusStudent ? averagesWithPlusTests : averages;\n\n const rows = dataBySubject\n .map(({testSubject, correct, total, timeSpent, topics}) => {\n const parentPercentage = Math.round((correct / total) * 100)\n const subjectTotal = getSubjectTotal(subjectTopicCounts, testSubject, isBootcampPlusStudent);\n const subjectAvgScore = Math.round(averagesObj?.[testSubject]?.avgScore / averagesObj?.[testSubject]?.totalQuestions * 100);\n const subjectAvgTagged = Math.round(subjectTotal * 0.75);\n const subjectMasteryTotal = mastery?.[testSubject]?.total|| 0;\n\n const subjectScoreSegments = [\n {count: subjectTotal * (correct / total), color: theme.colors.brandPalette.blue.default},\n ];\n\n const subjectMasterySegments = [\n {count: mastery?.[testSubject]?.mastered, spacing: 0},\n {count: mastery?.[testSubject]?.reviewing, spacing: 0},\n {count: mastery?.[testSubject]?.learning, spacing: 0},\n ];\n\n return {\n parent: [\n {content: (\n \n \n {testSubject}\n \n )},\n {content: (\n \n \n {total ? `${parentPercentage}%` : ' '}\n \n \n \n )},\n {content: {subjectAvgScore}%},\n {content: (\n \n {subjectMasteryTotal} / {subjectTotal}\n \n \n )},\n {content: {subjectAvgTagged} / {subjectTotal}},\n ],\n nested: Object\n .entries(topics)\n .sort(firstBy(([topic]) => topic))\n .map(([topic, dataBySubject]) => {\n const topicPercentage = Math.round(dataBySubject?.correct / dataBySubject?.total * 100);\n const topicTotal = getTopicTotal(subjectTopicCounts, testSubject, topic, isBootcampPlusStudent);\n\n const topicMasteryTotal = mastery?.[testSubject]?.topics?.[topic]?.total || 0;\n const topicAvgs = averagesObj?.[testSubject]?.systems?.[topic];\n const topicAvgScore = Math.round((topicAvgs?.avgScore / topicAvgs?.totalQuestions) * 100);\n\n const topicAvgTagged = Math.round(topicTotal * 0.75) || 0;\n\n const isRed = topicPercentage <= 50;\n\n const topicScoreSegments = [\n {count: topicTotal * (dataBySubject?.correct / dataBySubject?.total), color: theme.colors.brandPalette.blue.default}\n ];\n\n const topicMasterySegments = [\n {count: mastery?.[testSubject]?.topics?.[topic]?.mastered, spacing: 0},\n {count: mastery?.[testSubject]?.topics?.[topic]?.reviewing, spacing: 0},\n {count: mastery?.[testSubject]?.topics?.[topic]?.learning, spacing: 0},\n ];\n\n return {\n onClick: null,\n noHover: true,\n background: theme.colors.backgroundPalette.secondary,\n cells: [\n {content: ''},\n {content: {topic} {isRed ? : ''}},\n {content: (\n \n {topicPercentage}%\n \n \n )},\n {content: {topicAvgScore}%},\n {content: (\n \n {topicMasteryTotal} / {topicTotal}\n \n \n )},\n {content: {topicAvgTagged} / {topicTotal}},\n ]\n }\n })\n }\n })\n const totalsAcrossSubjects = dataBySubject.reduce((acc, {correct, total, timeSpent}) => ({\n correct: acc.correct + correct,\n total: acc.total + total,\n timeSpent: acc.timeSpent + timeSpent,\n }), {correct: 0, total: 0, timeSpent: 0})\n\n return (\n \n \n Subject Breakdown\n Increase your score in each subject by focusing on topics marked with a red  - that's where you can improve the most!\n {/* Topics marked with a red should receive additional attention.} lightMode/> */}\n \n \n \n \n \n \n \n \n \n );\n};\n\n\nSubject.defaultProps = {};\nSubject.propTypes = {};\n\nexport default Subject;","import React, { useState, useEffect } from 'react';\nimport styled from 'styled-components';\nimport { Label2, Label3 } from '../../../../components/Typography/next';\nimport { useUserDataContext } from '../../../../contexts/UserData';\nimport {Info} from '@styled-icons/fluentui-system-filled/Info';\n\n// Main Toggle Container\nconst ToggleContainer = styled.div`\n display: inline-flex;\n align-items: center;\n background: ${({lightMode, theme}) => lightMode ? 'rgba(255, 255, 255, 0.10)' : theme.colors.neutralsPalette.light};\n border-radius: 256px;\n padding: 4px;\n`;\n\n// Individual Toggle Option\nconst ToggleOption = styled(Label2)`\n display: flex;\n text-align: center;\n padding: 9px 12px;\n border-radius: 18px;\n cursor: pointer;\n user-select: none;\n font-weight: 400;\n transition: background 0.3s ease, color 0.3s ease;\n color: ${({theme, lightMode, isActive}) => !isActive && lightMode ? 'white' : theme.colors.typographyPalette.primary};\n\n\n ${({ isActive }) =>\n isActive\n ? `\n background: white;\n box-shadow: 0px 1px 4px 0px rgba(0, 0, 0, 0.10);\n `\n : `\n\n `}\n`;\nconst LinkWrapper = styled.a`\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: ne-resize;\n`;\n\nconst InfoIcon = styled(Info)`\n width: 14px;\n height: 14px;\n color: ${({theme, lightMode, isActive}) => (lightMode && !isActive) ? theme.colors.iconPalette.transparent : theme.colors.typographyPalette.tertiary};\n margin-left: 4px;\n\n &:hover {\n color: ${({theme, lightMode, isActive}) => !isActive ? theme.colors.neutralsPalette.extraLight : theme.colors.typographyPalette.secondary};\n }\n`;\n\nconst TextToggle = ({\n className,\n onChange,\n options=[],\n defaultOptionValue,\n lightMode\n}) => {\n const defaultState = options?.find(option => option.value === defaultOptionValue) || options[0];\n const [selectedOption, setSelectedOption] = useState(defaultState);\n\n const handleOptionChange = (option) => {\n setSelectedOption(option);\n onChange(option.value);\n };\n\n const renderIcon = (icon, isActive) => {\n const IconComponent = icon;\n\n return ;\n };\n\n useEffect(() => {\n if (selectedOption.value !== defaultOptionValue) {\n const defaultOption = options?.find(option => option?.value === defaultOptionValue);\n\n if (defaultOption) setSelectedOption(defaultOption);\n }\n }, [defaultOptionValue]);\n\n return (\n \n {options.map((option, index) => (\n handleOptionChange(option)}\n lightMode={lightMode}\n >\n {option.text}\n {option.icon && renderIcon(option.icon, selectedOption.value === option.value)}\n \n\n ))}\n \n );\n};\n\nconst InfoIconLink = ({lightMode, isActive}) => {\n const handleClick = e => {\n e.stopPropagation();\n };\n\n return (\n \n \n \n );\n}\n\nexport default TextToggle;\n","import React, {useRef} from 'react';\nimport styled, {css} from 'styled-components';\n\nimport {StyledBody, StyledHeader, StyledLabel, StyledTable} from './shared';\nimport {SubjectCell, CellText, CellSecondary, iconMap} from '@bootcamp/web/src/bootcamps/components/Performance/shared';\nimport {TableOverflowOuterWrapper, TableOverflowInnerWrapper, DivergentBar, CellIcon} from '@bootcamp/web/src/bootcamps/components/Performance/shared';\nimport {AutoHeightParent} from '@bootcamp/web/src/components/AutoHeightParent';\n\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {averages, averagesWithPlusTests} from './averages';\n\nimport {formatTimeSpent} from '@bootcamp/shared/src/util';\n\n\nconst Container = styled.div`\n border-radius: 8px;\n`;\nconst SubjectTable = styled(StyledTable)`\n td {\n min-width: 160px;\n }\n\n tr:first-child {\n td {\n width: 100%;\n white-space: nowrap;\n }\n }\n\n td:last-child {\n text-align: left;\n }\n`;\nconst SubjectHeader = styled(StyledHeader)`\n`;\n\nexport const TimeManagement = ({dataBySubject=[], subjectFilter=null, expandAll=false, parentHasPadding, subjectTopicCounts, mastery, subjectAverages}) => {\n const {isBootcampPlusStudent} = useUserDataContext();\n const tableWrapperRef = useRef(null);\n\n const averagesObj = isBootcampPlusStudent ? averagesWithPlusTests : averages;\n\n const rows = Object\n .keys(averagesObj)\n .filter(key => subjectFilter ? subjectFilter?.includes(key) : true)\n ?.map(subject => {\n const correspondingSubject = dataBySubject.find(({testSubject}) => testSubject === subject);\n const timePerQuestion = correspondingSubject?.timeSpent / correspondingSubject?.total;\n const avgTime = averagesObj[subject]?.avgTime / averagesObj[subject]?.totalQuestions;\n\n return {\n cells: [\n {content: (\n \n \n {subject}\n \n )},\n {content: formatTimeSpent(timePerQuestion)},\n {content: (\n {formatTimeSpent(avgTime)}\n )},\n {content: (\n \n )}\n ]\n };\n });\n\n return (\n \n \n Time Management\n Green means you're faster than average! Red shows where you can improve your pace.\n {/* Topics marked with a red should receive additional attention.} lightMode/> */}\n \n \n \n \n \n \n \n \n \n );\n};\n","import React, {useEffect, useState} from 'react';\nimport styled from 'styled-components';\nimport firstBy from 'thenby';\n\nimport {useBootcampConfigContext} from '@bootcamp/web/src/contexts/BootcampConfig';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\n\nimport {getTestProgressByUserIdHashTestIdForScoring, getTest} from '@bootcamp/shared/src/requests';\nimport {scoreResult} from '@bootcamp/shared/src/util/scoring';\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\n\nimport {useMasteryArray} from '@bootcamp/shared/src/util/hooks';\nimport {formatClassroomMasteryWithTopic} from '@bootcamp/shared/src/util/formatting';\nimport {fetchAllQuestionStats, getSubjectTopicCountsForDATPerformance} from '../../pages/ScoreReport/adminStats';\n\nimport PageContainer, {Wrapper} from '@bootcamp/web/src/bootcamps/pages/PageContainer';\nimport {H1, H2, Body2} from '@bootcamp/web/src/components/Typography/next';\nimport Breadcrumbs from '@bootcamp/web/src/components/NavBar/components/Breadcrumbs';\nimport {Element} from '@bootcamp/web/src/bootcamps/components/WebflowFAQs';\n\nimport Test from './Test';\nimport Subject from './Subject';\nimport {PerformanceChart} from './PerformanceChart';\nimport TextToggle from '../../pages/ScoreReport/components/TextToggle';\nimport { TimeManagement } from './Time';\n\n\nconst Container = styled(PageContainer)`\n ${Wrapper} {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n`;\nconst ElementWrapper = styled.div`\n padding: 0px 32px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 0px 16px;\n }\n`;\n\nconst Title = styled(H1)`\n color: white;\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n `;\nconst SubTitle = styled(Body2)`\n color: ${({theme}) => theme.colors.typographyPalette.transparent};\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n max-width: 750px;\n`;\nconst StyledBreadcrumbs = styled(Breadcrumbs)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n`;\nconst SettingsArea = styled.div`\n display: flex;\n gap: ${({theme}) => theme.layouts.spacing.ms};\n margin-bottom: 48px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 0px;\n flex-direction: column;\n align-items: flex-start;\n }\n`;\n\nconst getTestsByClassroom = (classrooms, isBootcampPlusStudent) => classrooms\n .filter(({name}) => name !== 'Application Services')\n .reduce((acc, {route, contentTypes}) => ({\n ...acc,\n [route]: contentTypes\n .filter(({name}) => isBootcampPlusStudent ? ['Practice Tests', 'Plus Tests'].includes(name) : name === 'Practice Tests')\n .reduce((acc, {content}) => [\n ...acc,\n ...content\n .reduce((acc, {content}) => [\n ...acc,\n ...content\n ?.reduce((acc, {id}) => [...acc, id], []) || []\n ], [])\n ], [])\n }), {});\n\nexport const restoreQuizProgress = quizProgress => {\n const uniqueBlockProgresses = quizProgress.blockProgresses.items\n .sort(firstBy('index'))\n .reduce((acc, blockProgress) => {\n if (blockProgress.questionProgresses?.items.length === 0) return acc;\n if (!acc.find(filteredBlockProgress => filteredBlockProgress.index === blockProgress.index)) {\n acc.push(blockProgress);\n }\n return acc;\n }, []);\n\n return uniqueBlockProgresses.map(blockProgress => {\n const { questionProgresses: { items: questionProgresses } } = blockProgress;\n\n const restoredQuestionProgresses = questionProgresses.map((questionProgress, index) => {\n const question = questionProgress.question || {};\n const { subject, topic } = question.tags && question.tags.items && question.tags.items.length > 0 ? (question.tags.items.find(({ tag }) => tag && !!tag.subject && !!tag.topic) || {}).tag || {} : {};\n\n return {\n subject,\n topic,\n ...questionProgress,\n };\n });\n\n return {\n index: blockProgress.index,\n questions: restoredQuestionProgresses\n };\n });\n};\n\nconst Performance = ({history}) => {\n const [userId, setUserId] = useState();\n\n const {config} = useBootcampConfigContext();\n const {isAdmin, isBootcampPlusStudent, DEFAULT_USER_ID, searchUserInteractions, saveUserInteraction, bootcamp} = useUserDataContext();\n\n useDocumentTitle(`${config.meta.siteTitle} | Performance`);\n\n const {sortOrder} = searchUserInteractions(`performance_order`, 'DESC');\n\n\n useEffect(() => {\n setUserId(DEFAULT_USER_ID);\n }, [DEFAULT_USER_ID]);\n\n const {fetching, dataByTest, dataBySubject, averages, testAverages, subjectAverages, subjectTopicCounts, mastery, refetch} = usePerformance(isBootcampPlusStudent, config, bootcamp, searchUserInteractions, userId, saveUserInteraction);\n\n const handleUpdateSortOrder = () => {\n const newSortOrder = sortOrder === 'ASC' ? 'DESC' : 'ASC';\n saveUserInteraction(`performance_order`, JSON.stringify({sortOrder: newSortOrder}));\n refetch(newSortOrder);\n };\n\n return (\n \n \n \n isAdmin && setUserId(window.prompt('Enter user ID to spoof') || DEFAULT_USER_ID)}>Performance\n Your performance reflects results from your completed practice tests only. Results from question banks or bites are not included.\n \n \n \n \n \n \n \n \n \n \n \n

FAQs

\n Your performance is based on the results of your completed practice tests.

\" />\n Unfortunately, you cannot reset your performance. However, you can take each practice test as many times as you’d like. Select Show latest attempt to only see your most recent attempt for each practice test.

\" />\n Unfortunately, you cannot reset or untag your tagged questions. Once a question is tagged, it remains tagged. However, you can review every question as many times as you'd like and change the tag each time.

\" />\n
\n
\n )\n}\n\nconst getAndFormatAverages = async (testIds) => {\n if (!testIds?.length) return null;\n\n try {\n const stats = await testIds.reduce(async (acc, id) => {\n const testStats = await fetchAllQuestionStats(id, []);\n const totals = testStats?.reduce((acc, curr) => {\n let update = acc;\n\n update.avgScore += curr?.avgScore;\n update.avgTime += curr?.avgTime;\n\n return update;\n }, {avgScore: 0, avgTime: 0});\n\n const averages = {\n avgScore: (totals?.avgScore / testStats?.length) || .66,\n avgTime: (totals?.avgTime / testStats?.length) || 0\n };\n\n const awaitedAcc = await acc;\n\n return {...awaitedAcc, [id]: averages};\n }, {});\n return stats;\n } catch (error) {\n return '';\n }\n};\n\nconst formatTestMastery = (masteryObj) => {\n return Object.values(masteryObj).reduce((acc, {byTopic}) => {\n let update = acc;\n\n Object\n .values(byTopic)\n .forEach(topic => {\n const {topic: topicName, subject: subjectName} = topic?.tag || {};\n\n if (!topic) return;\n\n const {learning, reviewing, mastered, total} = topic;\n\n update[subjectName] = {\n ...(update[subjectName] || {}),\n learning: (update[subjectName]?.learning || 0) + (learning || 0),\n reviewing: (update[subjectName]?.reviewing || 0) + (reviewing || 0),\n mastered: (update[subjectName]?.mastered || 0) + (mastered || 0),\n total: (update[subjectName]?.total || 0) + (total || 0),\n topics: {\n ...(update[subjectName]?.topics || {}),\n [topicName]: {\n ...(update[subjectName]?.topics?.[topicName] || {}),\n learning: (update[subjectName]?.topics?.[topicName]?.learning || 0) + (learning || 0),\n reviewing: (update[subjectName]?.topics?.[topicName]?.reviewing || 0) + (reviewing || 0),\n mastered: (update[subjectName]?.topics?.[topicName]?.mastered || 0) + (mastered || 0),\n total: (update[subjectName]?.topics?.[topicName]?.total || 0) + (total || 0),\n }\n }\n };\n })\n\n return update;\n }, {})\n};\n\nexport const usePerformance = (isBootcampPlusStudent, config, bootcamp, searchUserInteractions, DEFAULT_USER_ID, saveUserInteraction) => {\n const [fetching, setFetching] = useState(false);\n const [testAverages, setTestAverages] = useState({});\n const [subjectTopicCounts, setSubjectTopicCounts] = useState({});\n\n const {sortOrder} = searchUserInteractions(`performance_order`, {sortOrder: 'DESC'});\n const performanceRecord = searchUserInteractions(`${bootcamp}_performance`);\n const SUBJECTS = ['Biology', 'General Chemistry', 'Organic Chemistry', 'Perceptual Ability', 'Reading Comprehension', 'Quantitative Reasoning']\n const TESTS = Array.from({ length: isBootcampPlusStudent ? 15 : 10 }, (_, i) => (i + 1).toString());\n\n const testsByClassroom = getTestsByClassroom(config.classrooms, isBootcampPlusStudent);\n const practiceTestIds = Object.entries(testsByClassroom).reduce((acc, [classroom, testIds]) => [...acc, ...testIds], []);\n const fltIds = config.studyTools[0].content.map(({id}) => id);\n\n // TODO check to see if we need to add plus tests here...\n const testMastery = useMasteryArray([...practiceTestIds, ...fltIds], 'test', data => formatClassroomMasteryWithTopic(data, 'test'), null, null, DEFAULT_USER_ID, !DEFAULT_USER_ID);\n const formattedTestMastery = formatTestMastery(testMastery);\n\n const dataByTest = TESTS.map(testNumber => {\n const subjectResults = SUBJECTS.map(testSubject => {\n const record = performanceRecord?.results?.find(({testSubject: ts, testNumber: tn}) => ts === testSubject && tn === testNumber);\n\n if (!record) return {\n score: '-'\n };\n\n\n const {testId, testProgressId, score, createdAt} = record;\n\n return {score, testId, testProgressId, date: createdAt, testNumber, subject: testSubject};\n });\n\n const filteredSubjectResults = subjectResults.filter(({score}, index) => score != '-' && index !== 3);\n const getAcademicAverage = (subjectArray) => {\n const average = Math.round(subjectArray.reduce((acc, {score}) => acc + parseFloat(score), 0) / subjectArray.length);\n\n return Math.round(average / 10) * 10;\n };\n const academicAverage = filteredSubjectResults.length === 5\n ? getAcademicAverage(filteredSubjectResults)\n : '-';\n return [...subjectResults, {score: academicAverage}]\n })\n\n const dataBySubject = SUBJECTS.map(testSubject => {\n return TESTS.reduce((acc, testNumber) => {\n const record = performanceRecord?.results?.find(({testSubject: ts, testNumber: tn}) => ts === testSubject && tn === testNumber);\n if (!record) return acc;\n return record.topics.filter(({name}) => !['Geometry'].includes(name)).reduce((acc, {name, correct, total, timeSpent}) => {\n return {\n testSubject,\n total: acc.total + total,\n correct: acc.correct + correct,\n timeSpent: acc.timeSpent + parseFloat(timeSpent),\n topics: {\n ...acc.topics,\n [name]: acc.topics[name] ? {\n total: acc.topics[name].total + total,\n correct: acc.topics[name].correct + correct,\n timeSpent: acc.topics[name].timeSpent + parseFloat(timeSpent)\n } : {\n total,\n correct,\n timeSpent: parseFloat(timeSpent)\n }\n }\n }\n }, acc);\n }, {testSubject, total: 0, correct: 0, timeSpent: 0.0, topics: {}})\n });\n\n const averages = dataByTest?.[0].map((_, index) => {\n // transpose breakdown\n const subjectScores = dataByTest.map(test => test[index]).filter(({score}) => score !== '-');\n if (!subjectScores.length) return {content: '-'}\n const subjectAverage = subjectScores.reduce((acc, {score}) => acc + parseInt(score), 0) / subjectScores.length;\n\n return {\n content: Math.round(subjectAverage / 10) * 10\n }\n });\n\n // const averagesBySubject = dataByTest\n // ?.flat()\n // ?.reduce((acc, {subject, testId}) => {\n // let update = acc;\n\n // update[subject]\n // ? update[subject].push(testAverages[testId])\n // : update[subject] = [testAverages[testId]];\n\n // return update;\n // }, {});\n\n // const subjectAverages = Object.keys(averagesBySubject || {}).reduce((acc, subject) => {\n // const totals = averagesBySubject?.[subject]?.reduce((acc, curr) => {\n // const avgScore = curr?.avgScore || 0;\n // const avgTime = curr?.avgTime || 0;\n\n // let update = acc;\n\n // update.avgScore += avgScore;\n // update.avgTime += avgTime;\n\n // return update;\n // }, {avgScore: 0, avgTime: 0});\n\n // acc[subject] = {\n // avgScore: totals.avgScore / averagesBySubject[subject].length,\n // avgTime: totals.avgTime / averagesBySubject[subject].length\n // }\n // return acc;\n // }, {});\n\n const fetch = async (sortOrder) => {\n if (fetching) return;\n\n try {\n setFetching(true);\n\n const allTestIds = [...practiceTestIds, ...fltIds];\n\n // const testAverages = await getAndFormatAverages(allTestIds);\n const subjectTopicCounts = await getSubjectTopicCountsForDATPerformance(config);\n\n // setTestAverages(testAverages);\n setSubjectTopicCounts(subjectTopicCounts);\n\n if (performanceRecord.createdAt && performanceRecord.sortOrder === sortOrder) {\n return;\n }\n\n performanceRecord.createdAt = new Date().toISOString();\n performanceRecord.results = [];\n performanceRecord.sortOrder = sortOrder;\n\n const testFetchResults = await Promise.all(allTestIds.map(testId => getTestProgressByUserIdHashTestIdForScoring(`${DEFAULT_USER_ID}#${testId}`, true, sortOrder)));\n const testResults = testFetchResults.map(({ data }) => data.TestProgressByTestId.items[0]).filter(a => !!a);\n const tests = await Promise.all(testResults.map(({ testId }) => getTest(testId, 'getTestConfig')));\n const testsById = tests.reduce((acc, { data }) => ({ ...acc, [data.getTest.id]: data.getTest }), {});\n\n const statsReducer = (acc, quizProgress) => {\n const testConfig = testsById[quizProgress.testId];\n const testTitle = testConfig.config.title;\n const testSubject = testTitle.match(/([^#]+)( Test)/)[1];\n const testNumber = testTitle.match(/#(.*)/)[1];\n\n const restoredProgress = restoreQuizProgress(quizProgress);\n\n const stats = fltIds.includes(quizProgress.testId)\n ? SUBJECTS.map((subject, index) => {\n const testTitle = `${subject} Test #${testNumber}`;\n const startIndex = index >= 5 ? index + 2 : index;\n const endIndex = index >= 4 ? index + 3 : index + 1;\n const result = restoredProgress.slice(startIndex, endIndex);\n const stats = scoreResult(result, testTitle, subject, testNumber, quizProgress.createdAt);\n return { stats: { ...stats, testProgressId: quizProgress.id, testId: quizProgress.testId } };\n })\n : [{ stats: { ...scoreResult(restoredProgress, testTitle, testSubject, testNumber, quizProgress.createdAt), testProgressId: quizProgress.id, testId: quizProgress.testId } }];\n\n return [...acc, ...stats];\n };\n\n const testStats = testResults.reduce(statsReducer, []);\n\n for (const { stats } of testStats) {\n const matchingRecord = performanceRecord.results.find(({ testSubject, testNumber }) => testSubject === stats.testSubject && testNumber === stats.testNumber);\n if (!matchingRecord) {\n performanceRecord.results.push(stats);\n } else {\n if ((sortOrder === 'DESC' && matchingRecord.createdAt < stats.createdAt) || (sortOrder === 'ASC' && matchingRecord.createdAt > stats.createdAt)) {\n performanceRecord.results = performanceRecord.results.filter(({ testSubject, testNumber }) => !(testSubject === stats.testSubject && testNumber === stats.testNumber));\n performanceRecord.results.push(stats);\n }\n }\n }\n\n await saveUserInteraction(`${bootcamp}_performance`, JSON.stringify(performanceRecord));\n } catch (error) {\n console.log(error);\n } finally {\n setFetching(false);\n }\n };\n\n // this should only ever refetch on first load, on sortOrder change, and on scoring mode change.\n useEffect(() => {\n if (!DEFAULT_USER_ID) return;\n\n fetch(sortOrder);\n\n }, [DEFAULT_USER_ID]);\n\n return {dataByTest, dataBySubject, averages, testAverages, subjectTopicCounts, mastery: formattedTestMastery, fetching, refetch: fetch};\n}\n\nexport default Performance;","import React, {useRef} from 'react';\nimport styled from 'styled-components';\n\nimport {ChevronDown} from '@styled-icons/fluentui-system-filled/ChevronDown';\n\nimport {H4} from '../../../components/Typography';\n\nconst Container = styled.div`\n display: inline-flex;\n background: ${({theme}) => theme.overlays.opacity.light._100};\n border: 1px solid ${({theme}) => theme.overlays.opacity.light._50};\n border-radius: 8px;\n position: relative;\n z-index: 2;\n`;\nconst Input = styled(H4)`\n padding: ${({theme}) => theme.layouts.spacing.m};\n background: transparent;\n color: white;\n border: none;\n outline: none;\n appearance: none;\n cursor: pointer;\n flex: 1;\n font-size: ${({theme}) => theme.font.size.small};\n line-height: ${({theme}) => theme.font.height.small2};\n font-weight: ${({theme}) => theme.font.size.semibold};\n padding-right: calc(${({theme}) => theme.layouts.spacing.m} + 44px);\n z-index: 1;\n ${({theme}) => theme.mediaQueries.mobileL} {\n width: 100%;\n }\n`;\nconst Option = styled.option`\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n`;\nconst Icon = styled(ChevronDown)`\n position: absolute;\n stroke: white;\n top: calc(50% - 10px); /* calculating 50% - half the icon height to center*/\n right: 12px;\n cursor: pointer;\n z-index: -1;\n opacity: ${({disabled}) => disabled ? 0.7 : 1};\n`;\n\nexport const BareSelect = ({className, config, onChange, loading}) => {\n const inputRef = useRef();\n\n return (\n \n onChange(event.target.value)} disabled={loading}>\n {config.map(({name, value}) => (\n \n ))}\n \n \n \n );\n};\n\nconst Select = ({className, config, onChange, loading}) => {\n const inputRef = useRef();\n\n return (\n \n onChange(event.target.value)} disabled={loading}>\n \n {config.map(({name}) => (\n \n ))}\n \n \n \n );\n};\n\nexport const TopicSelect = ({className, config, onChange, subject}) => {\n const inputRef = useRef();\n\n return (\n inputRef?.current?.click()} key={subject}>\n onChange(event.target.value)}>\n \n {config.map(({tag}) => (\n \n ))}\n \n \n \n );\n};\n\nSelect.defaultProps = {};\nSelect.propTypes = {};\n\nexport default Select;\n","import React, {useMemo, useState, useEffect, useRef} from 'react';\nimport {useHistory} from 'react-router-dom';\nimport styled from 'styled-components';\nimport useForm from 'react-hook-form';\n\nimport {H4} from '../../../components/Typography';\nimport Breadcrumbs from '../../../components/NavBar/components/Breadcrumbs';\nimport Overview, {SubTitle} from '../../components/Cards/Overview';\n\nimport {LoadingSpinner} from '../../../components/Branding';\nimport {useTable, usePagination, useSortBy} from 'react-table';\nimport {getTestProgress, getTest, getTestProgressIdsByUserId, getTestProgressIdsByIdOverride} from '@bootcamp/shared/src/requests';\n\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {getInObj} from '@bootcamp/shared/src/util';\nimport moment from 'moment';\nimport {Helmet} from 'react-helmet';\n\nimport {findInConfigById, createPathFromConfigMatch} from '@bootcamp/shared/src/util';\nimport {getResults, getOATResults, aggregateBySection, aggregateByOATSection, getAcademicAverage, getOATAcademicAverage} from '@bootcamp/shared/src/util/scoring';\nimport {restoreQuizProgress} from '../../dat/Performance';\n\nimport {ChevronLeft} from '@styled-icons/fluentui-system-filled/ChevronLeft';\nimport {ChevronRight} from '@styled-icons/fluentui-system-filled/ChevronRight';\nimport {theme} from '@bootcamp/shared/src/styles/theme';\n\nimport Container, { resetScrollPosition } from '../PageContainer';\nimport {firstBy} from 'thenby';\n\nimport {BareSelect} from '../../components/MasteryReview/Select';\nimport { Label3 } from '../../../components/Typography/next';\n\nconst retrieveQuestionProgresses = testData => {\n const {blockProgresses: {items: blockProgressItems}} = testData || {blockProgresses: {items: []}};\n return blockProgressItems.reduce((acc, blockProgress) => [...acc, ...(blockProgress.questionProgresses.items || [])], []);\n}\n\nasync function getTestProgresses(userId) {\n const data = await getTestProgressIdsByUserId(userId);\n return getInObj(['data', 'getUser', 'testProgresses', 'items'], data, []);\n}\n\nasync function getDBCTestProgresses(userId) {\n const data = await getTestProgressIdsByIdOverride(userId);\n return getInObj(['data', 'getWordPressUserData', 'testProgresses', 'items'], data, []);\n}\n\nfunction filterAndSortProgresses(items, bootcamp, config) {\n try {\n switch (bootcamp) {\n case 'dat':\n case 'oat':\n return items\n ?.sort(firstBy('createdAt', -1))\n ?.reduce((acc, item) => {\n if (item.testId === '19c272d3-8413-4136-afbe-35a54242d725') return [...acc, {...item, route: '/sample-test'}];\n const configHit = findInConfigById(config, item.testId);\n const fltConfigHit = config?.studyTools?.[0]?.content?.find(({id}) => id === item.testId);\n\n const match = fltConfigHit ? [fltConfigHit] : configHit;\n const isValid = match?.[0]?.name?.match('Test #');\n const route = fltConfigHit\n ? `/full-length/${fltConfigHit?.route}`\n : createPathFromConfigMatch(match);\n\n return isValid\n ? [...acc, {...item, route}]\n : acc;\n }, []);\n default:\n return items;\n }\n\n } catch (error) {\n return items;\n }\n}\n\nconst StyledBreadcrumbs = styled(Breadcrumbs)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n`;\n\nconst StyledOverview = styled(Overview)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n background: none;\n border: none;\n box-shadow: none;\n padding: 0px;\n\n ${SubTitle} {\n margin-bottom: 0;\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-bottom: 0px;\n }\n`;\n\nconst SubjectPill = styled(Label3)`\n background: ${({palette}) => palette.light};\n color: ${({palette}) => palette.default};\n padding: 8px 12px;\n border-radius: 256px;\n width: auto;\n display: inline-block;\n`;\n\nconst PastTestResults = ({history, match}) => {\n const {DEFAULT_USER_ID, userModel, bootcamp, searchUserInteractions} = useUserDataContext();\n\n const {config} = useBootcampConfigContext();\n\n const [currentPage, setCurrentPage] = useState({pageIndex: 0, pageSize: 10});\n const [containerWidth, setContainerWidth] = useState(window.innerWidth);\n\n const [testsById, setTestsById] = useState({});\n const [progressById, setProgressById] = useState({});\n\n const [baseProgress, setBaseProgress] = useState([]);\n const [loading, setLoading] = useState(true);\n\n const pageCount = Math.ceil(baseProgress?.length / currentPage.pageSize);\n\n const {register, watch} = useForm();\n\n useEffect(() => {\n const handleResize = () => {\n setContainerWidth(window.innerWidth);\n };\n\n window.addEventListener('resize', handleResize);\n\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n async function fetchTests(results) {\n // fetch tests\n const defaultTestIds = bootcamp === 'dat' ? ['19c272d3-8413-4136-afbe-35a54242d725'] : []\n const testIdsToFetch = results.reduce((acc, {testId}) => (acc.includes(testId) || testsById[testId]) ? acc : [...acc, testId], defaultTestIds);\n const testPromises = testIdsToFetch.map(testId => getTest(testId, 'getTestConfig'));\n\n // fetch progress\n const progressIdsToFetch = results.reduce((acc, {id}) => (acc.includes(id) || progressById[id]) ? acc : [...acc, id], []);\n const progressPromises = progressIdsToFetch.map(id => getTestProgress(id, 'getTestProgress'));\n\n // short circuit if nothing to fetch\n if (!testIdsToFetch.length && !progressIdsToFetch.length) {\n setLoading(false);\n return;\n };\n\n setLoading(true);\n\n const testPromiseResults = await Promise.all(testPromises);\n const progressPromiseResults = await Promise.all(progressPromises);\n\n const fetchedProgress = progressPromiseResults.reduce((acc, curr) => {\n const progress = curr?.data?.getTestProgress;\n\n return progress?.id\n ? {...acc, [progress?.id]: progress}\n : acc\n }, {});\n\n const fetchedTests = testPromiseResults.reduce((acc, curr) => {\n const test = curr?.data?.getTest;\n\n return test?.id\n ? {...acc, [test?.id]: test}\n : acc\n }, {});\n\n setTestsById({...testsById, ...fetchedTests});\n setProgressById({...progressById, ...fetchedProgress});\n setLoading(false);\n }\n\n async function handleNextPage() {\n // when we're moving to the next page, just fetch the next page of test\n const nextPageIndex = currentPage.pageIndex + 1;\n const nextPage = baseProgress?.slice(nextPageIndex * currentPage.pageSize, (nextPageIndex + 1) * currentPage.pageSize);\n\n setCurrentPage({pageIndex: nextPageIndex, pageSize: currentPage.pageSize})\n fetchTests(nextPage);\n }\n\n async function handlePreviousPage() {\n setCurrentPage({pageIndex: currentPage.pageIndex - 1, pageSize: currentPage.pageSize});\n }\n\n async function handlePageSize(newPageSize) {\n const nextPage = baseProgress?.slice(0 * newPageSize, (1) * newPageSize);\n\n await fetchTests(nextPage);\n\n setCurrentPage({pageIndex: 0, pageSize: newPageSize});\n }\n\n function getScore(questionProgresses) {\n return (questionProgresses.filter(({didSelectCorrectAnswer}) => didSelectCorrectAnswer).length / questionProgresses.length) * 100;\n }\n\n function getSubjectFromTestTitle(testTitle) {\n if (testTitle === 'DAT Sample Test') return 'Multiple';\n const subjectString = testTitle\n ?.replace('DAT Bootcamp | ', '')\n ?.split('Test #')[0];\n const subject = subjectString?.match('Full Length') ? 'Multiple' : subjectString;\n\n return subject?.trim();\n }\n\n const columns = useMemo(\n () => [\n {\n Header: '#',\n Cell: ({row}) => {\n return baseProgress.length - row.index - (currentPage.pageIndex*currentPage.pageSize);\n }\n },\n {\n Header: 'Raw Score',\n Cell: ({row}) => {\n const questionProgresses = retrieveQuestionProgresses(row.original);\n return `${Math.round(getScore(questionProgresses))}%`\n },\n },\n {\n Header: 'Name',\n Cell: ({row}) => {\n const {testTitle} = row.original;\n return testTitle;\n }\n },\n {\n Header: 'Subject',\n Cell: ({row}) => {\n const {testTitle} = row.original;\n const subject = getSubjectFromTestTitle(testTitle);\n\n const palette = subject === 'Multiple'\n ? { default: theme.colors.neutralsPalette.grey, light: theme.colors.neutralsPalette.extraLight}\n : config?.classrooms?.find(({name}) => name === subject)?.themePalette;\n\n return {subject}\n\n },\n },\n {\n Header: 'Estimated Score',\n Cell: ({row}) => {\n const {testTitle} = row.original;\n const questionProgresses = retrieveQuestionProgresses(row.original);\n const score = getScore(questionProgresses);\n const subject = getSubjectFromTestTitle(testTitle);\n if (testTitle === 'DAT Sample Test') return `N/A`;\n if (subject === 'Multiple') {\n const quizProgress = restoreQuizProgress(row.original);\n const subjectScores = bootcamp === 'dat'\n ? aggregateBySection(quizProgress)\n : aggregateByOATSection(quizProgress);\n\n const fullLengthAcademicAverage = bootcamp === 'dat'\n ? getAcademicAverage(testTitle, subjectScores.statistics)\n : getOATAcademicAverage(testTitle, subjectScores.statistics);\n\n return fullLengthAcademicAverage;\n }\n\n const academicAverage = bootcamp === 'dat'\n ? getResults(score, testTitle, subject)?.score\n : getOATResults(score, testTitle, subject);\n return academicAverage;\n },\n },\n {\n Header: 'Date Taken',\n Cell: ({row}) => {\n const {createdAt} = row.original;\n return moment(createdAt).format('ll');\n },\n accessor: row => new Date(row.createdAt),\n sortType: 'datetime'\n },\n {\n Header: ' ',\n Cell: () => \n }\n ].filter(column => containerWidth < 768 ? !['Subject', 'Date Taken', ' '].includes(column.Header) : true),\n [baseProgress, currentPage, containerWidth]\n );\n\n const data = baseProgress\n ?.slice(currentPage.pageIndex * currentPage.pageSize, (currentPage.pageIndex + 1) * currentPage.pageSize)\n ?.reduce((acc, data, index) => {\n\n const {id, testId, route} = data;\n\n const progress = progressById[id];\n const test = testsById[testId];\n\n if (!progress || !data) return acc;\n\n const { config: { title: testTitle } } = test || { config: { title: '' } };\n\n // filters\n const { date, subject, score, search } = watch();\n\n const testDateOutsideFilter = moment(progress?.createdAt) < moment().subtract(date, 'days');\n if (date && testDateOutsideFilter) return acc;\n\n if (subject && !testTitle.match(subject)) return acc;\n\n try {\n\n const questionProgresses = retrieveQuestionProgresses(progress);\n const testScore = (questionProgresses.filter(({ didSelectCorrectAnswer }) => didSelectCorrectAnswer).length / questionProgresses.length).toFixed(3) * 100;\n if (score && testScore < score) return acc;\n\n if (search && !JSON.stringify(progress).match(search)) return acc;\n\n return [\n ...acc,\n {\n ...test,\n ...progress,\n route,\n testTitle\n }\n ]\n } catch (error) {\n return acc;\n }\n }, []);\n\n useEffect(() => {\n if (!DEFAULT_USER_ID) return;\n\n async function fetch() {\n const results = userModel.idOverride ? await getDBCTestProgresses(userModel.idOverride) : await getTestProgresses(DEFAULT_USER_ID);\n\n const filteredItems = filterAndSortProgresses(results, bootcamp, config);\n\n setBaseProgress(filteredItems);\n\n const firstPage = filteredItems?.slice(0, 10);\n\n fetchTests(firstPage);\n }\n\n fetch();\n\n }, [userModel, DEFAULT_USER_ID]);\n\n\n return (\n \n \n {config.meta.siteTitle} | Previous Tests\n \n \n \n \n \n \n )\n};\n\nconst TableStyles = styled.div`\n width: 100%;\n position: relative;\n background: white;\n border-radius: 8px;\n min-height: 400px;\n\n table {\n min-height: 400px;\n background: white;\n border-radius: 8px;\n overflow: hidden;\n width: 100%;\n border-collapse: collapse;\n\n box-shadow: 0px 8px 20px rgba(0, 0, 0, 0.12);\n\n th {\n cursor: default;\n background: #FAFAFA;\n\n &:first-child {\n font-weight: 700;\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n text-align: center;\n font-size: 16px;\n }\n\n font: bold 16px 'proxima-nova', sans-serif;\n text-shadow: none;\n border-width: 0;\n padding: 15px;\n min-height: 74px;\n text-align: left;\n border-bottom: 1px solid #EDEDF0;\n font-weight: 600;\n }\n tr {\n cursor: pointer;\n &:last-child {\n td {\n border-bottom: none;\n }\n }\n &:hover {\n background-color: ${({theme}) => theme.colors.neutralsPalette.offWhite};\n }\n }\n td {\n min-width: 50px;\n font-size: 16px;\n\n &:first-child {\n font-weight: 700;\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n text-align: center;\n }\n\n height: 50px;\n padding: 8px 15px;\n vertical-align: middle;\n font: 400 16px 'proxima-nova', sans-serif;\n text-align: left;\n border-bottom: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n position: relative;\n .editButton {\n position: absolute;\n margin: auto 8px;\n display: none;\n }\n &:hover {\n .editButton {\n display: inline;\n }\n }\n }\n }\n`;\n\nconst LoadingSpinnerContainer = styled.div`\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n border-radius: 8px;\n z-index: ${({visible}) => visible ? 1 : -1};\n overflow: hidden;\n transition: all 250ms ease;\n\n ${LoadingSpinner} {\n position: absolute;\n }\n `;\n\nconst LoadingOverlay = styled.div`\n flex: 1;\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n opacity: ${({visible}) => visible ? 0.6 : 0};\n transition: all 250ms ease;\n width: 100%;\n height: 100%;\n`;\n\nconst ResultsMessage = styled(H4)`\n text-align: center;\n padding: 25px;\n width: 100%\n`;\n\nconst TableWrapper = styled.div`\n`;\n\nconst PaginationWrapper = styled.div`\n padding-top: ${({theme}) => theme.layouts.spacing.l};\n display: flex;\n align-items: center;\n justify-content: flex-end;\n color: white;\n\n button {\n height: 42px;\n width: 42px;\n border-radius: 100%;\n border: 1px solid ${({theme}) => theme.overlays.opacity.light._100};\n background: ${({theme}) => theme.overlays.opacity.light._100};\n color: white;\n cursor: pointer;\n margin-right: 8px;\n\n &:hover {\n background: ${({theme}) => theme.overlays.opacity.light._200};\n }\n &:disabled {\n cursor: not-allowed;\n border: 1px solid ${({theme}) => theme.overlays.opacity.light._50};\n background: ${({theme}) => theme.overlays.opacity.light._50};\n color: ${({theme}) => theme.overlays.opacity.light._400};\n &:hover {\n background: ${({theme}) => theme.overlays.opacity.light._50};\n }\n }\n }\n span {\n display: flex;\n height: 40px;\n align-items: center;\n justify-content: center;\n padding: 16px;\n }\n\n`;\n\nconst StyledSelect= styled(BareSelect)`\n margin-left: 8px;\n select {\n padding: 12px;\n margin-right: 28px;\n }\n`;\n\nconst Table = ({columns, data, loading, pageCount, currentPage, onPreviousPage, onNextPage, onPageSize}) => {\n const {bootcamp} = useUserDataContext();\n const tableRef = useRef(null);\n const [height, setHeight] = useState(0);\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n prepareRow,\n page,\n canPreviousPage,\n canNextPage,\n pageOptions,\n // pageCount,\n gotoPage,\n nextPage,\n previousPage,\n setPageSize,\n state: { pageIndex, pageSize },\n } = useTable(\n {\n columns,\n data,\n initialState: { pageIndex: currentPage.pageIndex, sortBy: [{id: 'Date Taken', desc: true}] },\n disableSortRemove: true,\n pageCount,\n manualPagination: true,\n },\n useSortBy,\n usePagination\n );\n\n const {push} = useHistory();\n\n function handlePreviousPage() {\n previousPage();\n onPreviousPage();\n }\n\n function handleNextPage() {\n nextPage();\n onNextPage();\n }\n\n const hasResults = data.length > 0;\n\n useEffect(() => {\n if (!tableRef?.current || loading) return;\n\n setHeight(tableRef.current.clientHeight);\n\n }, [tableRef?.current?.clientHeight, loading]);\n\n useEffect(() => {\n resetScrollPosition();\n }, [pageIndex, pageSize]);\n\n return (\n \n \n \n \n {headerGroups.map(headerGroup => (\n \n {headerGroup.headers.map(column => (\n \n ))}\n \n ))}\n \n \n {page.map((row, i) => {\n const {id: progressId, testId, route} = row.original;\n const routeWithBootcamp = `/${bootcamp}${route}`;\n\n prepareRow(row);\n\n return (\n push({pathname: `/${bootcamp}${route}/review`, search: `?id=${encodeURIComponent(testId)}&testProgressId=${encodeURIComponent(progressId)}&testRoute=${encodeURIComponent(routeWithBootcamp)}`})}>\n {row.cells.map(cell => {\n return \n })}\n \n )\n })}\n \n
\n {column.render('Header')}\n
{cell.render('Cell')}
\n {!hasResults && !loading\n ? Nothing to see here yet!\n : null\n }\n \n \n \n \n
\n \n \n Page \n \n {pageIndex + 1} of {pageOptions.length}\n \n \n \n \n {\n await onPageSize(value);\n setPageSize(value);\n }}\n >\n {[10, 20, 30, 40, 50].map(pageSize => (\n \n ))}\n \n \n
\n );\n}\n\nexport {TableStyles};\nexport default PastTestResults;\n","import React, {useMemo, useState, useEffect, useCallback} from 'react';\nimport styled from 'styled-components';\nimport {useHistory, Link} from 'react-router-dom';\nimport {H1, Body2} from '../../../components/Typography';\n\nimport {LoadingSpinner} from '../../../components/Branding';\nimport {useTable, usePagination, useSortBy} from 'react-table';\nimport Breadcrumbs from '../../../components/NavBar/components/Breadcrumbs';\nimport {BareSelect} from '../../components/MasteryReview/Select';\n\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {useAsync} from '@bootcamp/shared/src/util/hooks';\nimport {getTestProgressByUserIdHashTestId} from '@bootcamp/shared/src/requests';\nimport moment from 'moment';\nimport {Helmet} from 'react-helmet';\nimport {Edit} from '@styled-icons/material-rounded/Edit';\nimport Storage from '@aws-amplify/storage';\n\nimport {ChevronLeft} from '@styled-icons/fluentui-system-filled/ChevronLeft';\nimport {ChevronRight} from '@styled-icons/fluentui-system-filled/ChevronRight';\nimport {PauseCircle} from '@styled-icons/fluentui-system-filled/PauseCircle';\nimport CreateTestButton from '@bootcamp/web/src/bootcamps/pages/CreateTest/components/CreateTestButton';\nimport {Blurb} from '../../components/Performance/shared';\nimport {Info} from '@styled-icons/fluentui-system-filled/Info';\nimport Container from '../PageContainer';\n\nconst StyledBreadcrumbs = styled(Breadcrumbs)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n`;\nconst Title = styled(H1)`\n color: white;\n margin-bottom: 16px;\n`;\nconst StyledBlurb = styled(Blurb)`\n margin-bottom: 16px;\n`;\nconst StyledLink = styled(Link)`\n color: white;\n`;\nconst PauseIcon = styled(PauseCircle)`\n width: 18px;\n height: 18px;\n fill: ${({theme}) => theme.colors.interfacePalette.yellow.default};\n`;\nconst StyledInfo = styled(Info)`\n width: 20px;\n height: 20px;\n margin-right: 16px;\n color: ${({theme}) => theme.overlays.opacity.light._300};\n`;\n\nconst retrieveQuestionProgresses = testData => {\n const {blockProgresses: {items: blockProgressItems}} = testData || {blockProgresses: {items: []}};\n return blockProgressItems.reduce((acc, blockProgress) => [...acc, ...(blockProgress.questionProgresses.items || [])], []);\n}\n\nconst CustomTests = ({}) => {\n const {DEFAULT_USER_ID, searchUserInteractions, bootcamp} = useUserDataContext();\n const [currentPage, setCurrentPage] = useState({pageIndex: 0, pageSize: 10});\n const savedTests = searchUserInteractions(`${DEFAULT_USER_ID}_${bootcamp}_savedTests`);\n\n const fetchSavedTests = useCallback(async () => {\n return await Promise.all(savedTests?.testList?.slice()?.reverse()?.slice(currentPage.pageIndex*currentPage.pageSize, (currentPage.pageIndex + 1) * currentPage.pageSize).map(async testStorageKey => {\n try {\n const result = await Storage.get(testStorageKey, {\n download: true,\n cacheControl: 'no-cache',\n contentType: 'application/json',\n })\n const testData = await new Response(result.Body).json();\n const testResults = testData.testId ? await getTestProgressByUserIdHashTestId(`${DEFAULT_USER_ID}#${testData.testId}`, true) : {data: {TestProgressByTestId: {items: []}}};\n return {testData, testResults}\n } catch (e) {\n console.log(e);\n }\n }));\n }, [DEFAULT_USER_ID, currentPage])\n\n const {value, pending, execute} = useAsync(fetchSavedTests);\n const data = value || [];\n\n function getScorePercentage(questionProgresses, overridingMaxScore) {\n const {score, maxScore} = questionProgresses.reduce((acc, curr) => {\n const answerState = JSON.parse(curr?.answerState || \"{}\");\n // TODO we'll probably have to pull max score out of the question like we're doing on the score report page since\n // it isn't always in answer state...\n return {\n score: acc.score + (answerState.score || (curr.didSelectCorrectAnswer && 1) || 0),\n maxScore: acc.maxScore + (answerState.maxScore || 1)\n }\n }, {score: 0, maxScore: 0});\n\n return `${Math.round(((score / (overridingMaxScore || maxScore)) || 0) * 100)}%`;\n }\n\n const columns = useMemo(\n () => {\n let columns = [\n {\n Header: '#',\n Cell: ({row}) => savedTests?.testList?.length - row.index - (currentPage.pageIndex*currentPage.pageSize),\n accessor: row => savedTests?.testList?.length - row.index - (currentPage.pageIndex*currentPage.pageSize)\n },\n {\n Header: 'Score',\n Cell: ({row}) => {\n const {data: {TestProgressByTestId: {items}}} = row.original.testResults;\n const {config: {maxScore}, submitted} = row.original.testData || {};\n\n if (items[0]) {\n const questionProgresses = retrieveQuestionProgresses(items[0]);\n return submitted ? getScorePercentage(questionProgresses, maxScore) : ;\n }\n return 'N/A'\n },\n },\n {\n Header: 'Name',\n Cell: ({row}) => {\n const {testTitle, testStorageKey, customTitle} = row.original.testData.config;\n const testName = `Previous Test #${savedTests?.testList?.length - row.index - (currentPage.pageIndex*currentPage.pageSize)}`\n return (\n
{customTitle || testName} {\n e.persist();\n e.preventDefault();\n e.stopPropagation();\n const newTitle = window.prompt('Rename test to...');\n if (!newTitle) return;\n const testData = row.original.testData;\n testData.config.customTitle = newTitle;\n await Storage.put(testStorageKey, JSON.stringify(testData), {contentType: 'application/json'});\n execute()\n return false;\n }} />
\n )\n }\n },\n {\n Header: 'Date Taken',\n Cell: ({row}) => {\n const {createdAt} = row.original.testData.config;\n return moment(createdAt).format('MMM Do, YYYY');\n },\n accessor: row => new Date(row.createdAt),\n sortType: 'datetime'\n },\n {\n Header: 'Type',\n Cell: ({row}) => {\n const testType = row.original.testData.config.type;\n switch (testType) {\n case 'preclinical':\n return 'Step 1 - Boards Style';\n case 'bites':\n return 'Bites';\n case 'anatomy':\n return 'Anatomy Bootcamp';\n default:\n return 'Custom';\n }\n }\n },\n {\n Header: 'Settings',\n Cell: ({row}) => {\n return `${row.original.testData.config.timed ? 'Timed' : 'Untimed'}, ${row.original.testData.config.tutorMode ? 'Tutored' : 'Untutored'}`\n }\n },\n {\n Header: 'Questions',\n Cell: ({row}) => {\n return row.original.testData.selectedQuestions.length\n }\n },\n {\n Header: ' ',\n Cell: () => \n }\n ]\n return columns\n },\n [data, execute]\n );\n\n const {config} = useBootcampConfigContext();\n const history = useHistory();\n return (\n \n \n {config.meta.siteTitle} | Previous Tests\n \n \n \n Previous Tests\n {bootcamp === 'nclex' &&\n } lightMode>\n Your Readiness Exam attempts can be reviewed on the Readiness Exams page.\n \n }\n \n \n )\n};\n\nconst TableStyles = styled.div`\n width: 100%;\n table {\n background: white;\n border-radius: ${({hasResults}) => hasResults ? '8px' : '8px 8px 0px 0px'};\n overflow: hidden;\n width: 100%;\n border-collapse: collapse;\n\n box-shadow: 0px 8px 20px rgba(0, 0, 0, 0.12);\n th {\n cursor: default;\n background: #FAFAFA;\n\n &:first-child {\n font-weight: 700;\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n text-align: center;\n font-size: 16px;\n }\n\n font: bold 16px 'proxima-nova', sans-serif;\n text-shadow: none;\n border-width: 0;\n padding: 15px;\n min-height: 74px;\n text-align: left;\n border-bottom: 1px solid #EDEDF0;\n font-weight: 600;\n }\n tr {\n cursor: pointer;\n &:last-child {\n td {\n border-bottom: none;\n }\n }\n &:hover {\n background-color: ${({theme}) => theme.colors.neutralsPalette.offWhite};\n }\n }\n td {\n min-width: 50px;\n font-size: 16px;\n\n &:first-child {\n font-weight: 700;\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n text-align: center;\n }\n &:last-child {\n text-align: right;\n }\n height: 50px;\n padding: 8px 15px;\n vertical-align: middle;\n font: 400 16px 'proxima-nova', sans-serif;\n text-align: left;\n border-bottom: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n position: relative;\n .editButton {\n position: absolute;\n margin: auto 8px;\n display: none;\n }\n &:hover {\n .editButton {\n display: inline;\n }\n }\n }\n }\n`;\n\nconst LoadingSpinnerContainer = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 50px;\n`;\nconst DataLoadingSpinner = (\n \n \n \n)\n\nconst ResultsMessage = styled(Body2)`\n text-align: center;\n padding: 24px;\n width: 100%;\n font-weight: 400;\n color: rgb(47, 48, 55);\n background: white;\n border-radius: 0px 0px 8px 8px;\n`;\n\nconst TableWrapper = styled.div`\n`;\n\nconst PaginationWrapper = styled.div`\n padding-top: ${({theme}) => theme.layouts.spacing.l};\n display: flex;\n align-items: center;\n justify-content: flex-end;\n color: white;\n\n button {\n height: 42px;\n width: 42px;\n border-radius: 100%;\n border: 1px solid ${({theme}) => theme.overlays.opacity.light._100};\n background: ${({theme}) => theme.overlays.opacity.light._100};\n color: white;\n cursor: pointer;\n margin-right: 8px;\n\n &:hover {\n background: ${({theme}) => theme.overlays.opacity.light._200};\n }\n &:disabled {\n cursor: not-allowed;\n border: 1px solid ${({theme}) => theme.overlays.opacity.light._50};\n background: ${({theme}) => theme.overlays.opacity.light._50};\n color: ${({theme}) => theme.overlays.opacity.light._400};\n &:hover {\n background: ${({theme}) => theme.overlays.opacity.light._50};\n }\n }\n }\n span {\n display: flex;\n height: 40px;\n align-items: center;\n justify-content: center;\n padding: 16px;\n }\n input {\n width: 80px;\n text-align: center;\n border: 1px solid ${({theme}) => theme.overlays.opacity.light._50};\n background: ${({theme}) => theme.overlays.opacity.light._50};\n font-family: 'proxima-nova';\n font-style: normal;\n font-weight: 600;\n font-size: 16px;\n line-height: 16px;\n color: white;\n height: 40px;\n border-radius: 8px;\n margin-left: ${({theme}) => theme.layouts.spacing.m};\n ::placeholder {\n color: ${({theme}) => theme.overlays.opacity.light._400};\n }\n }\n`;\nconst StyledCreateTestButton = styled(CreateTestButton)`\n margin: 0 auto;\n`;\n\nconst StyledSelect= styled(BareSelect)`\n margin-left: 8px;\n select {\n padding: 12px;\n margin-right: 28px;\n }\n`;\n\n\nconst Table = ({columns, pageCount, data, loaded, setCurrentPage}) => {\n const {bootcamp} = useUserDataContext();\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n prepareRow,\n page,\n canPreviousPage,\n canNextPage,\n pageOptions,\n // pageCount,\n gotoPage,\n nextPage,\n previousPage,\n setPageSize,\n state: { pageIndex, pageSize },\n } = useTable(\n {\n columns,\n data,\n initialState: { pageIndex: 0, sortBy: [{id: '#', desc: false}], hiddenColumns: document.documentElement.clientWidth <= 425 ? ['Date Taken', 'Settings', 'Type', 'Subjects', 'Questions'] : [] },\n disableSortRemove: true,\n manualPagination: true,\n pageCount,\n autoResetPage: false\n },\n useSortBy,\n usePagination\n )\n useEffect(() => setCurrentPage({pageIndex, pageSize}), [pageIndex, pageSize]);\n\n const {push} = useHistory();\n\n const hasResults = data.length > 0;\n\n const pagination = (\n \n \n Page {pageIndex + 1} of {pageOptions.length}\n \n \n \n {/* \n Go to page:\n {\n const page = e.target.value ? Number(e.target.value) - 1 : 0\n gotoPage(page)\n }}\n />\n */}\n {\n setPageSize(value);\n }}\n >\n {[10, 20, 30, 40, 50].map(pageSize => (\n \n ))}\n \n \n );\n\n const noResults = (\n \n
Tests you end or pause will appear here for you to review. Try creating a test.
\n \n
\n );\n return (\n \n \n
\n \n {headerGroups.map(headerGroup => (\n \n {headerGroup.headers.map(column => (\n \n ))}\n \n ))}\n \n \n {page.map((row, i) => {\n prepareRow(row)\n const {config: {testStorageKey}, submitted} = row.original.testData;\n\n return (\n push({pathname: submitted ? `/${bootcamp}/previous-tests/review` : `/${bootcamp}/custom-test` , search: `?key=${encodeURIComponent(testStorageKey)}`})} {...row.getRowProps()}>\n {row.cells.map(cell => {\n return \n })}\n \n )\n })}\n \n
\n {column.render('Header')}\n
{cell.render('Cell')}
\n {!loaded ? DataLoadingSpinner : !hasResults ? noResults : null}\n \n {hasResults && pagination}\n \n );\n}\n\nexport {TableStyles};\nexport default CustomTests;","import {getInObj} from '@bootcamp/shared/src/util';\n\nconst defaultCount = {\n learning: 0,\n reviewing: 0,\n mastered: 0,\n total: 0,\n};\n\nexport function formatChapterTestMastery(testProgressArray) {\n return testProgressArray.reduce((acc, curr) => {\n const masteryItems = getInObj(['data', 'QuestionMasteryByTestId', 'items'], curr);\n if (!masteryItems) return acc;\n const {testId} = curr;\n let accumulator = {...acc};\n\n masteryItems.forEach(({masteryLevel}) => {\n // accumulate progress by testId\n const currentCountByTest = accumulator.byTest[testId] || defaultCount;\n\n accumulator.byTest[testId] = {\n ...currentCountByTest,\n [masteryLevel]: currentCountByTest[masteryLevel] + 1,\n total: currentCountByTest.total + 1,\n };\n\n // accumulate totals\n accumulator.all = {\n ...accumulator.all,\n [masteryLevel]: accumulator.all[masteryLevel] + 1\n };\n });\n\n return accumulator;\n }, {byTest: {}, all: {...defaultCount}});\n}\n\nexport function formatChapterMastery({data}) {\n const mastery = data\n && data.QuestionMasteryBySubjectTagId\n && data.QuestionMasteryBySubjectTagId.items;\n\n if (!mastery) return [];\n\n return mastery.reduce((acc, {masteryLevel, userIdHashTopicTagId}) => {\n const topicTagId = userIdHashTopicTagId.split('#')[1];\n\n // accumulate total\n const all = {\n ...acc.all,\n [masteryLevel]: acc.all[masteryLevel] + 1,\n total: acc.all.total + 1,\n };\n\n // accumulate total for a given topic (chapter)\n const chapterTotal = {\n [topicTagId]: {\n ...(acc[topicTagId] ? acc[topicTagId] : defaultCount),\n [masteryLevel]: ((acc[topicTagId] && acc[topicTagId][masteryLevel]) || 0) + 1,\n total: (acc[topicTagId] && acc[topicTagId].total) ? acc[topicTagId].total + 1 : 1,\n }\n };\n\n return {\n ...acc,\n ...chapterTotal,\n all,\n };\n }, {\n all: defaultCount\n });\n}\n\nexport function formatQuestionCount(counts) {\n return counts.reduce((acc, {id, questionCount}) => ({\n ...acc,\n [id]: questionCount,\n all: acc.all + questionCount,\n }), {all: 0});\n}\n","import {getTest, getTestProgressByUserIdHashTestId, createTestProgress, createBlockProgress, updateBlockProgress, getBlockProgress} from '@bootcamp/shared/src/requests';\nimport {getInObj, getTestBlockConnections} from '@bootcamp/shared/src/util';\nimport nanoid from 'nanoid';\n\nfunction getBlockKey(block) {\n const blockTitle = block?.title?.trim()?.split(' ')?.join('-')?.toLowerCase();\n const blockType = block?.type;\n\n return `${blockTitle}#${blockType}`;\n}\n\n// TODO this block can be removed in 6-8 months or so when the current cohort is finished\nasync function syncQRVideoLessonData (baseVideoLessonData, config, DEFAULT_USER_ID, saveUserInteraction) {\n const oldCourseIds = [\n // '0ece99a6-3870-4ceb-b209-8af3c406d5b2',\n '5742007a-5041-4767-8bd3-e716232474da',\n '331110ef-cd03-4b00-96b9-90bc9373d3d0',\n // '5fa8df2f-1778-4c67-9b1f-446b4f4af39b',\n '04fbc660-5f86-4fd8-9b5b-8ccedbc97923',\n // '73e307e8-d3d6-4ae7-9c41-fd3bab40c201',\n ];\n\n try {\n const oldProgressByBlockTitle = await oldCourseIds.reduce(async (acc, courseId) => {\n const {data} = await getTest(courseId, 'getTestTile');\n const {data: {TestProgressByTestId}} = await getTestProgressByUserIdHashTestId(`${DEFAULT_USER_ID}#${courseId}`, true);\n\n const testBlocks = data?.getTest?.blockConnections?.items;\n\n const update = await acc;\n\n TestProgressByTestId\n ?.items\n ?.forEach(({blockProgresses}) => blockProgresses?.items?.forEach(block => {\n const blockMatch = testBlocks?.find(({testBlockConnectionTestBlockId}) => testBlockConnectionTestBlockId === block?.blockId)\n\n if (!blockMatch) return;\n\n const blockKey = getBlockKey(blockMatch?.testBlock);\n\n update[blockKey] = block;\n }))\n\n return update;\n }, []);\n\n const syncedQrBlockProgress = Object.keys(baseVideoLessonData).reduce((acc, testId) => {\n const testProgress = baseVideoLessonData[testId];\n\n return {\n ...acc,\n [testId]: {\n ...testProgress,\n quizProgress: testProgress.quizProgress.map(blockProgress => {\n\n const blockKey = getBlockKey(blockProgress);\n\n return {...blockProgress, status: oldProgressByBlockTitle[blockKey]?.status} || blockProgress;\n })\n }\n }\n }, {});\n\n const syncProgress = async ({progressId, quizProgress}) => {\n try {\n await Promise.all(quizProgress?.map(async ({blockProgressId, testBlockId, status, newBlockProgress}, index) => {\n await createBlockProgress(\n blockProgressId,\n progressId,\n testBlockId,\n {status}\n );\n }))\n } catch (error) {\n // console.log('error saving', error);\n }\n }\n\n await Promise.all(Object.values(syncedQrBlockProgress).map(syncProgress));\n\n saveUserInteraction('syncedQrCourseData', true);\n\n return syncedQrBlockProgress\n\n } catch (error) {\n // console.log('error syncing data', error);\n }\n}\n\nasync function fetchVideoLessonData (config, DEFAULT_USER_ID) {\n return await config.content\n .find(({type}) => type === 'Course').content\n .reduce(async (videoLessonData, lesson) => {\n const {id: videoLessonId} = lesson;\n const result = await getTest(videoLessonId, 'getTestQuestionIdsWithConfig');\n const test = getInObj(['data', 'getTest'], result, {});\n\n const testBlockConnections = getTestBlockConnections(test).map(({testBlock}) => testBlock);\n const blockTemplates = {\n startBlock: {\n blockProgressId: (block, userId) => `${block.id}#${userId}`,\n testBlockId: block => block.id,\n },\n text: {\n blockProgressId: (block, userId) => `${block.id}#${videoLessonId}#${userId}`,\n title: block => block.title,\n type: block => block.type,\n testBlockId: block => block.id,\n status: () => '',\n newBlockProgress: () => true,\n },\n passage: {\n blockProgressId: (block, userId) => `${block.id}#${userId}`,\n title: block => block.title,\n type: block => block.type,\n testBlockId: block => block.id,\n status: () => '',\n newBlockProgress: () => true,\n },\n lesson: {\n blockProgressId: (block, userId) => `${block.id}#${userId}`,\n title: block => block.title,\n type: block => block.type,\n testBlockId: block => block.id,\n status: () => '',\n newBlockProgress: () => true,\n },\n questionSet: {\n blockProgressId: (block, userId) => `${block.id}#${userId}`,\n title: block => block.title,\n type: block => block.type,\n testBlockId: block => block.id,\n status: () => '',\n newBlockProgress: () => true\n },\n endBlock: {\n blockProgressId: (block, userId) => `${block.id}#${userId}`,\n testBlockId: block => block.id,\n }\n }\n\n const userIdHashTestId = `${DEFAULT_USER_ID}#${videoLessonId}`;\n\n const baseProgress = await Promise.all(testBlockConnections.map(testBlock => {\n const blockTemplate = blockTemplates[testBlock.type] || {\n blockProgressId: (block, userId) => `${block.id}#${userId}`,\n testBlockId: block => block.id,\n status: () => '',\n newBlockProgress: () => true,\n };\n return Object.keys(blockTemplate)\n .reduce(async (acc, key) => ({...(await acc), [key]: await blockTemplate[key](testBlock, DEFAULT_USER_ID)}), {});\n }));\n\n // see if progress for this video lesson exists\n const data = await getTestProgressByUserIdHashTestId(userIdHashTestId, true);\n const progressId = getInObj(['data', 'TestProgressByTestId', 'items', 0, 'id'], data, null);\n if (!progressId) {\n const newProgressId = `${nanoid()}#${DEFAULT_USER_ID}`;\n // create testProgress if it hasn't been created yet\n const testProgress = await createTestProgress(newProgressId, DEFAULT_USER_ID, videoLessonId);\n\n const promises = baseProgress.map(async (blockProgress, index) => {\n if (config.name === 'Dermatology Videos') {\n const blockProgressId = `${blockProgress.testBlockId}#${DEFAULT_USER_ID}`;\n const {data: {getBlockProgress: existingBlockProgress}} = await getBlockProgress(blockProgressId);\n if (existingBlockProgress) {\n await updateBlockProgress(blockProgressId, {testProgressBlockProgressesId: newProgressId})\n }\n return {\n ...blockProgress,\n ...existingBlockProgress\n }\n }\n return blockProgress;\n });\n\n const quizProgress = await Promise.all(promises);\n\n return {\n ...(await videoLessonData),\n [videoLessonId]: {\n test,\n progressId: newProgressId,\n quizProgress\n }\n };\n }\n const testProgress = getInObj(['data', 'TestProgressByTestId', 'items', 0], data, null);\n const restoredProgressPromises = baseProgress.map(async (blockProgress, index) => {\n const savedProgress = testProgress.blockProgresses.items && testProgress.blockProgresses.items.find(savedBlockProgress => savedBlockProgress.blockId === blockProgress.testBlockId);\n if (savedProgress) {\n const {id, blockId, index, status} = savedProgress;\n return {\n ...blockProgress,\n blockProgressId: id,\n testBlockId: blockId,\n index,\n status,\n newBlockProgress: false\n }\n }\n\n return blockProgress;\n });\n\n const restoredProgress = await Promise.all(restoredProgressPromises);\n\n return {\n ...(await videoLessonData),\n [videoLessonId]: {\n test,\n progressId,\n quizProgress: restoredProgress\n }\n };\n }, {});\n}\n\n\nasync function getVideoLessonData(config, DEFAULT_USER_ID, setData, routeKey, searchUserInteractions, saveUserInteraction) {\n const {route, name} = config;\n const baseVideoLessonData = await fetchVideoLessonData(config, DEFAULT_USER_ID);\n\n const hasSyncedQrCourseData = searchUserInteractions('syncedQrCourseData') === true;\n\n const videoLessonData = ['QR Academy']?.includes(name) && !hasSyncedQrCourseData\n ? await syncQRVideoLessonData(baseVideoLessonData, config, DEFAULT_USER_ID, saveUserInteraction)\n : baseVideoLessonData;\n\n function saveBlockProgress (testId, value, blockIndexOverride) {\n function backendSaveRequest (progressId, quizProgress) {\n if (DEFAULT_USER_ID) {\n const {blockProgressId, testBlockId, newBlockProgress} = quizProgress[blockIndexOverride];\n if (newBlockProgress) {\n createBlockProgress(\n blockProgressId,\n progressId,\n testBlockId,\n {...value},\n blockIndexOverride\n );\n } else {\n updateBlockProgress(\n blockProgressId,\n {\n testProgressBlockProgressesId: progressId,\n blockId: testBlockId,\n index: blockIndexOverride,\n ...value\n }\n );\n }\n }\n }\n\n setData((data) => {\n // fetch current state data\n const {videoLessonData} = data[route];\n const {progressId, quizProgress} = videoLessonData[testId];\n\n // async save to backend\n backendSaveRequest(progressId, quizProgress);\n\n // create immutable state update\n const updatedQuizProgress = [\n ...quizProgress.slice(0, blockIndexOverride),\n {...quizProgress[blockIndexOverride], ...value, newBlockProgress: false},\n ...quizProgress.slice(blockIndexOverride + 1)\n ];\n\n // sync state update\n // return immutable\n return {\n ...data,\n [route]: {\n ...data[route],\n videoLessonData: {\n ...data[route].videoLessonData,\n [testId]: {\n ...data[route].videoLessonData[testId],\n quizProgress: updatedQuizProgress\n }\n }\n }\n }\n });\n }\n\n const refreshVideoLessonData = async (testId) => {\n const spoofedConfig = {content: [{type: 'Course', content: [{id: testId}]}]};\n const refreshedVideoLessonData = await fetchVideoLessonData(spoofedConfig, DEFAULT_USER_ID);\n // update state\n setData((data) => {\n return {\n ...data,\n [route]: {\n ...data[route],\n videoLessonData: {\n ...data[route].videoLessonData,\n [testId]: refreshedVideoLessonData[testId]\n }\n }\n }\n });\n }\n return {videoLessonData, saveBlockProgress, refreshVideoLessonData};\n}\n\nexport {getVideoLessonData};\n","import {getTest, getTestProgressByUserIdHashTestId, createTestProgress, createBlockProgress, updateBlockProgress, getAllQuestionMastery} from '@bootcamp/shared/src/requests';\nimport {getInObj} from '@bootcamp/shared/src/util';\n\nasync function fetchQBankCollectionData (config, DEFAULT_USER_ID) {\n // we could split qbank page data by subchapter, but there's no reason bc no testId overlap\n // so let's just fetch lesson data and store by test ID\n const urlParams = new URLSearchParams(window.location.search);\n const selectedSection = urlParams.get('section');\n const lessons = config.content[0].content.filter(({type, section}) => !selectedSection || selectedSection === 'all' ? type === 'Chapter Bank Dropdown' : type === 'Chapter Bank Dropdown' && selectedSection === section).reduce((acc, {lessons}) => [...acc, ...lessons], []);\n return await lessons.reduce(async (acc, lesson) => {\n const {testId: tId, id} = lesson;\n const testId = tId || id;\n\n const progressResult = await getAllQuestionMastery({userIdHashTestId: `${DEFAULT_USER_ID}#${testId}`}, 'testSmall');\n const mastery = getInObj(['data', 'QuestionMasteryByTestId', 'items'], progressResult);\n\n const testResult = await getTest(testId, 'getTestConfig');\n const test = getInObj(['data', 'getTest'], testResult, {});\n\n const userIdHashTestId = `${DEFAULT_USER_ID}#qbankCollection#${testId}`;\n\n const baseProgress = [{\n blockProgressId: userIdHashTestId,\n testBlockId: `${testId}-qbank-collection`,\n status: '',\n newBlockProgress: true,\n }];\n\n // see if progress for this video lesson exists\n const data = await getTestProgressByUserIdHashTestId(userIdHashTestId, true);\n const progressId = getInObj(['data', 'TestProgressByTestId', 'items', 0, 'id'], data, null);\n if (progressId) {\n const testProgress = getInObj(['data', 'TestProgressByTestId', 'items', 0], data, null);\n const restoredProgress = baseProgress.map(blockProgress => {\n const savedProgress = testProgress.blockProgresses.items && testProgress.blockProgresses.items.find(savedBlockProgress => savedBlockProgress.blockId === blockProgress.testBlockId);\n if (savedProgress) {\n const {id, blockId, index, status} = savedProgress;\n return {\n ...blockProgress,\n blockProgressId: id,\n testBlockId: blockId,\n index,\n status,\n newBlockProgress: false\n }\n }\n return blockProgress;\n });\n\n return {\n ...(await acc),\n [testId]: {\n test,\n mastery,\n progressId,\n quizProgress: restoredProgress\n }\n };\n };\n // create testProgress if it hasn't been created yet\n const testProgress = await createTestProgress(userIdHashTestId, `${DEFAULT_USER_ID}#qbankCollection`, testId);\n const newProgressId = getInObj(['data', 'createTestProgress', 'id'], testProgress, null);\n\n return {\n ...(await acc),\n [testId]: {\n test,\n mastery,\n progressId: newProgressId,\n quizProgress: baseProgress\n }\n };\n }, {});\n}\n\n\nasync function getQbankCollectionData (config, DEFAULT_USER_ID, setData) {\n const {route} = config;\n const qbankCollectionData = await fetchQBankCollectionData(config, DEFAULT_USER_ID);\n\n function saveBlockProgress (testId, value) {\n function backendSaveRequest (progressId, quizProgress) {\n if (DEFAULT_USER_ID) {\n const {blockProgressId, testBlockId, newBlockProgress} = quizProgress[0];\n if (newBlockProgress) {\n createBlockProgress(\n blockProgressId,\n progressId,\n testBlockId,\n {...value},\n 0\n );\n } else {\n updateBlockProgress(\n blockProgressId,\n {\n testProgressBlockProgressesId: progressId,\n blockId: testBlockId,\n index: 0,\n ...value\n }\n );\n }\n }\n }\n\n setData((data) => {\n // fetch current state data\n const {qbankCollectionData} = data[route];\n const {progressId, quizProgress} = qbankCollectionData[testId];\n\n // async save to backend\n backendSaveRequest(progressId, quizProgress);\n\n // create immutable state update\n const updatedQuizProgress = [{\n ...quizProgress[0],\n ...value,\n newBlockProgress: false\n }]\n\n // sync state update\n // return immutable\n return {\n ...data,\n [route]: {\n ...data[route],\n qbankCollectionData: {\n ...data[route].qbankCollectionData,\n [testId]: {\n ...data[route].qbankCollectionData[testId],\n quizProgress: updatedQuizProgress\n }\n }\n }\n }\n });\n }\n return {qbankCollectionData, saveBlockProgress};\n}\n\nexport {getQbankCollectionData};\n","import {useEffect, useState} from 'react';\n\nimport {useUserDataContext} from '../../../../contexts/UserData';\nimport {getTest, getAllQuestionMastery} from '@bootcamp/shared/src/requests';\nimport {getInObj} from '@bootcamp/shared/src/util';\n\nimport {formatChapterTestMastery, formatQuestionCount} from '../formatting';\nimport {getVideoLessonData} from './VideoLesson';\nimport {getQbankCollectionData} from './QBankCollection';\n\nexport async function getCounts(configArray) {\n const getCount = async ({name, id}) => {\n const result = await getTest(id, 'getTestConfig');\n const questionCount = getInObj(['data', 'getTest', 'config', 'questionCount'], result, 0);\n\n return {name, questionCount, id};\n };\n\n const counts = await Promise.all(\n configArray.map(getCount)\n );\n\n return formatQuestionCount(counts);\n}\n\nexport async function getProgress(configArray, userId) {\n const getResult = async ({id, oldIds}) => {\n let result = await getAllQuestionMastery({userIdHashTestId: `${userId}#${id}`}, 'testSmall');\n if (oldIds && oldIds.length > 0) {\n const oldResults = await Promise.all(oldIds.map(oldId => getAllQuestionMastery({userIdHashTestId: `${userId}#${oldId}`}, 'testSmall')));\n result.data.QuestionMasteryByTestId.items = oldResults.reduce((acc, curr) => [...acc, ...curr.data.QuestionMasteryByTestId.items], result.data.QuestionMasteryByTestId.items);\n }\n return {...result, testId: id};\n };\n\n const results = await Promise.all(configArray.map(getResult));\n\n return formatChapterTestMastery(results);\n}\n\nasync function getTestData(config, userId) {\n const testConfig = config.content.find(({name}) => name === 'Tests').content;\n\n const counts = await getCounts(testConfig);\n const progress = await getProgress(testConfig, userId);\n\n return {counts, progress};\n}\n\nasync function getQbData(config, userId, setData, routeKey) {\n const counts = await getCounts(config.content.reduce((acc, {content}) => {\n const filteredContent = content?.filter(({id}) => !!id);\n\n return [...acc, ...filteredContent];\n }, []));\n\n const progress = await getProgress(config.content.reduce((acc, {content}) => {\n const filteredContent = content?.filter(({id}) => !!id);\n\n return [...acc, ...filteredContent];\n }, []), userId);\n\n // hijacking the default setData call in getQbankCollectionData\n // so that we set data at the right position in the current route state\n const setNestedQbankCollectionData = (dataFn) => {\n setData(data => {\n const result = dataFn({[routeKey]: data?.[routeKey]?.collectionData});\n return ({...data, [routeKey]: {...data[routeKey], collectionData: result?.[routeKey]}})\n });\n };\n\n const collectionData = await getQbankCollectionData(config, userId, setNestedQbankCollectionData);\n\n return {counts, progress, collectionData};\n}\n\nasync function getPracticalsData(config, userId) {\n const counts = await getCounts(config.content.reduce((acc, {content}) => [...acc, ...content], []));\n\n return {counts};\n}\n\nconst getProgressByContentTypeMap = {\n 'qbanks': getQbData,\n 'board-banks': getQbData,\n 'identify-structures': getQbankCollectionData,\n 'qbank-collection': getQbankCollectionData,\n 'lectures': getQbData,\n 'lecture-style-questions': getQbankCollectionData,\n 'bites': getQbData,\n 'bio-bites': getQbData,\n 'plus-packs': getQbData,\n 'plus-tests': getTestData,\n 'rbites': getQbData,\n 'practice-tests': getTestData,\n 'videos': getVideoLessonData,\n 'practicals': getPracticalsData,\n 'anki': () => true,\n 'performance': () => true\n};\n\nexport function useContentTypeProgress(config, selectedSection) {\n const [data, setData] = useState({});\n const {DEFAULT_USER_ID, loading, searchUserInteractions, saveUserInteraction} = useUserDataContext();\n const {route} = config;\n const routeKey = `${route}-${selectedSection}`;\n const extendedConfig = {...config, route: routeKey};\n\n useEffect(() => {\n if (loading || data[routeKey] || !getProgressByContentTypeMap[route] || !selectedSection) return;\n\n async function getProgress () {\n const request = getProgressByContentTypeMap[route];\n const result = await request(extendedConfig, DEFAULT_USER_ID, setData, routeKey, searchUserInteractions, saveUserInteraction);\n setData(data => ({...data, [routeKey]: result}));\n }\n\n getProgress();\n }, [route, loading, routeKey]);\n\n return data;\n}\n","import React, {useCallback} from 'react';\n\nimport CreateTest from '../../pages/CreateTest';\nimport ChapterCard from './Chapter';\nimport {StyledBeginPracticeButton} from './components/Buttons'\n\nimport {useModalContext} from '../../../contexts/Modal';\nimport {getCounts, getProgress} from '../../api/progress/contentType';\nimport {useAsync} from '../../../hooks';\n\nimport styled from 'styled-components';\nimport { useUserDataContext } from '../../../contexts/UserData';\n\nconst StyledChapterCard = styled(ChapterCard)`\n background: white;\n border: none;\n overflow: inherit;\n`;\n\nconst FreeQuestions = ({id, themePalette}) => {\n const {DEFAULT_USER_ID} = useUserDataContext();\n const {modalDispatch} = useModalContext();\n\n const handleFreeQuestionCardClick = () => modalDispatch({\n type: 'open',\n component: CreateTest,\n componentProps: { defaults: { subject: 'Free Questions' } },\n enableClickClose: true,\n });\n\n const fetchCounts = useCallback(async () => {\n return await getCounts([{name: 'Free Questions', id}]);\n }, []);\n\n const fetchProgress = useCallback(async () => {\n return await getProgress([{name: 'Free Questions', id}], DEFAULT_USER_ID);\n }, [])\n\n const {value: counts} = useAsync(fetchCounts);\n const {value: progress} = useAsync(fetchProgress);\n\n return (\n ]}\n onClick={handleFreeQuestionCardClick}\n />\n );\n};\n\nexport default FreeQuestions;","import React from 'react';\nimport styled, {css} from 'styled-components';\nimport {H3, H2, Body4} from '../../components/Typography';\n\nexport const Well = styled.div`\n background: ${({theme}) => theme.colors.special.naturalDark};\n border: .5px solid ${({theme}) => theme.overlays.opacity.dark._100};\n box-shadow: ${({theme}) => theme.elevation.inner.progressLight};\n border-radius: 8px;\n padding: ${({theme}) => theme.layouts.spacing.xl};\n margin-bottom: 48px;\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 24px 16px;\n }\n`;\nexport const Title = styled(H3)`\n margin: 0 0 4px;\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n`;\nexport const Body = styled(Body4)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.xl};\n color: ${({theme}) => theme.overlays.opacity.light._400};\n max-width: 528px;\n`;\n\nconst ClassroomContentWrapper = ({className, title, body, children}) => (\n \n {title && }\n {body && <Body children={body}/>}\n {children}\n </Well>\n);\n\nconst SectionWrapper = styled.div`\n`;\nconst SectionTitle = styled(H2)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n\n ${({hasTitle}) => hasTitle && css`\n padding: ${({theme}) => `${theme.layouts.spacing.l} 0`};\n `}\n`;\n\n// TODO we may deprecate clasroom content wrapper with this at some point\nconst PageSection = ({innerRef, title, children}) => {\n return (\n <SectionWrapper ref={innerRef}>\n <SectionTitle hasTitle={!!title}>{title}</SectionTitle>\n {children}\n </SectionWrapper>\n );\n};\n\nexport {PageSection};\nexport default ClassroomContentWrapper;\n","import React, {useState, useEffect} from 'react';\nimport styled, {css} from 'styled-components';\n\nimport {Link} from 'react-router-dom';\nimport {Row, FlexBox} from '../../../components/Grid';\nimport {H3, H4} from '../../../components/Typography';\nimport {TableStyles} from '../../../bootcamps/pages/PastTestResults'\n\nimport {ChevronDown} from '@styled-icons/feather/ChevronDown';\nimport {ChevronUp} from '@styled-icons/feather/ChevronUp';\nimport {ChevronRight} from '@styled-icons/feather/ChevronRight';\n\nimport AnimateHeight from 'react-animate-height';\n\nconst HeadingLink = styled(Link)`\n text-decoration: none;\n`;\nconst Heading = styled.div`\n cursor: not-allowed;\n`;\n\nconst HeadingContainer = styled(FlexBox)`\n background: white;\n border-radius: 8px 8px 0px 0px;\n padding: 16px 24px;\n align-items: center;\n flex-direction: row;\n position: relative;\n z-index: 2;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n }\n\n`;\n\nconst ActionsWrapper = styled(Row)`\n align-items: center;\n justify-content: flex-end;\n width: auto;\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-top: 8px;\n width: 100%;\n }\n`\n\nconst TextContent = styled.div`\n width: 100%;\n max-width: 630px;\n`;\n\nconst Title = styled(H3)`\n margin-right: 16px;\n`;\n\nconst Container = styled.div`\n margin-bottom: 16px;\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n box-shadow: ${({theme}) => theme.elevation.shadow.medium};\n border-radius: 8px;\n &:first-child {\n margin-top: 0px;\n }\n transition: all .2s;\n\n ${({expanded}) => !expanded && css`\n &:hover {\n transition: all .2s;\n transform: scale(1.01);\n }\n `}\n`;\n\nconst DropdownTrigger = styled.div`\n padding: 16px 18px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n background: ${({theme}) => theme.colors.neutralsPalette.offWhite};\n border-radius: 0px 0px 8px 8px;\n border-top: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n transition: all 200ms;\n\n &:hover {\n background: ${({theme}) => theme.colors.neutralsPalette.extraLight};\n }\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n padding-left: 12px;\n }\n`;\n\nconst DropdownTriggerText = styled(H4)`\n margin-left: 16px;\n font-weight: 500;\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-left: 8px;\n }\n`;\n\nconst DropdownTriggerArrowUp = styled(ChevronUp).attrs(props => ({size: 24}))`\n color: ${({theme}) => theme.colors.neutralsPalette.grey}\n`;\nconst DropdownTriggerArrowDown = styled(ChevronDown).attrs(props => ({size: 24}))`\n color: ${({theme}) => theme.colors.neutralsPalette.grey}\n`;\n\nconst ContentWrapper = styled(Row)`\n align-items: center;\n margin-right: 16px;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n align-items: flex-start;\n margin-right: 16px;\n }\n`\n\nconst ChapterIndex = styled(H3)`\n align-self: flex-start;\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n margin-right: 16px;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-right: 16px;\n }\n`;\n\nconst DropdownContainer = styled(TableStyles)`\n width: 100%;\n min-height: 100px;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n flex-direction: column;\n padding: 0;\n\n th {\n display: none;\n }\n\n td {\n &:last-child {\n padding-right: ${({theme}) => theme.layouts.spacing.l};\n }\n }\n`;\n\nconst Dropdown = ({componentRef, index, name, route, actions, locked, defaultLocked, showText, hideText, children, textContent, expandOnChange}) => {\n const [expanded, setExpanded] = useState(false);\n useEffect(() => {\n if (expandOnChange && !expanded) setExpanded(true);\n if (!expandOnChange && expanded) setExpanded(false);\n }, [expandOnChange]);\n const HeadingWrapper = (locked || defaultLocked || !route) ? Heading : HeadingLink;\n\n const headingProps = route ? {to: route} : {onClick: () => setExpanded(!expanded), style: {cursor: 'pointer'}}\n return (\n <Container ref={componentRef} expanded={expanded}>\n <HeadingWrapper {...headingProps}>\n <HeadingContainer expanded={expanded}>\n <ContentWrapper>\n <ChapterIndex>\n {index}\n </ChapterIndex>\n <TextContent>\n <Title>{name}\n {textContent}\n \n \n \n \n \n \n \n {children}\n \n \n setExpanded(!expanded)}\n aria-expanded={ expanded }\n aria-controls={`dropdown-${index}-${name}`}\n >\n {expanded ? : }\n \n {expanded ? hideText : showText}\n \n \n
\n );\n}\n\nDropdown.defaultProps = {\n actions: [],\n children: () => true,\n showText: 'Show',\n hideText: 'Hide',\n}\n\nexport default Dropdown;\n","import React, {useState} from 'react';\nimport styled, {css} from 'styled-components';\nimport {Link} from 'react-router-dom';\n\n// import {useModalContext} from '../../../../contexts/Modal';\n\nimport { StyledBeginPracticeButton, StyledResetButton } from '@bootcamp/web/src/bootcamps/components/Cards/components/Buttons';\nimport {RoundButton} from '../../../../components/UI';\nimport {Row, Column, FlexBox} from '../../../../components/Grid';\nimport {H3, H4, H5, Label3} from '../../../../components/Typography';\nimport ProgressBar from '../../../../components/ProgressBar';\nimport {ReactComponent as Badge} from '@bootcamp/shared/src/assets/svg/badge.svg';\nimport {Play} from '@styled-icons/heroicons-solid/Play';\nimport {CheckCircle} from '@styled-icons/material-rounded/CheckCircle';\nimport {ArrowForwardOutline} from '@styled-icons/evaicons-outline/ArrowForwardOutline';\nimport {ResetButton} from '@bootcamp/web/src/bootcamps/components/Cards/components/Buttons';\nimport {deSlugify} from '@bootcamp/shared/src/util';\n\n\nconst IconArea = styled.span`\n display: flex;\n align-items: center;\n margin-left: auto;\n gap: 8px;\n\n ${({theme}) => theme.mediaQueries.mobileXl} {\n margin-top: 8px;\n width: 100%;\n }\n`;\nconst Wrapper = styled.div`\n display: flex;\n flex: 1;\n\n ${({theme}) => theme.mediaQueries.mobileXl} {\n flex-direction: column;\n }\n`;\nconst BadgeWrapper = styled.span`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 48px;\n height: 48px;\n`;\nconst StyledBadge = styled(Badge)`\n path {\n fill: ${({theme}) => theme.overlays.opacity.dark._400};\n }\n`;\nconst DetailText = styled(H5)`\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n margin-left: auto;\n transition: all .3s;\n`;\nconst PlayButtonIcon = styled(Play).attrs({size: 32})`\n color: ${({theme, themePalette}) => themePalette ? themePalette.default : theme.colors.brandPalette.violet.default};\n ${({theme}) => theme.mediaQueries.mobileXl} {\n width: 24px;\n height: 24px;\n }\n`;\nconst RowContainer = styled(Row)`\n align-items: center;\n min-height: 79px;\n ${({mobileOnly}) => mobileOnly && css`\n display: none;\n ${({theme}) => theme.mediaQueries.mobileXl} {\n display: flex;\n }\n `}\n`;\nconst RowLabel = styled(Label3)`\n color: ${({theme, themePalette}) => themePalette ? themePalette.dark : theme.colors.brandPalette.violet.dark};\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n display: none;\n ${({mobileOnly}) => mobileOnly && css`\n display: none !important;\n ${({theme}) => theme.mediaQueries.mobileXl} {\n margin-bottom: 0px;\n font-size: 14px;\n line-height: 14px;\n }\n `}\n`;\nconst RowTitleContainer = styled(Column)`\n width: 50%;\n margin-right: 16px;\n\n ${({theme}) => theme.mediaQueries.mobileXl} {\n width: 100%;\n }\n`;\nconst RowTitle = styled(H4)`\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n ${({theme}) => theme.mediaQueries.mobileXl} {\n font-weight: 600;\n margin-top: ${({theme}) => theme.layouts.spacing.s};\n }\n`;\n\nconst RowLink = styled(Link)`\n display: block;\n width: 100%;\n height: 100%;\n text-decoration: none;\n border-bottom: .5px solid ${({theme}) => theme.colors.neutralsPalette.light};\n\n padding: ${({locked}) => locked ? '22px 34px' : '12px 34px'};\n padding-left: 14px;\n background: white;\n transition: all .2s;\n border-radius: 0px;\n\n ${({locked}) => locked && `\n &:hover {\n ${OptionContainer} {\n display: none;\n }\n ${BlockNumberContainer} {\n display: none;\n }\n ${RowTitleContainer} {\n display: none;\n }\n ${UpgradeOverlayContainer} {\n display: flex;\n }\n ${BadgeWrapper} {\n margin-left: auto;\n }\n }\n `}\n\n ${({theme}) => theme.mediaQueries.mobileXl} {\n padding: 12px 16px;\n }\n\n &:hover {\n transform: scale(1.01);\n transition: all .2s;\n border-radius: 8px;\n background: ${({theme}) => theme.colors.neutralsPalette.extraLight};\n ${({dark}) => dark && css`\n background: ${({theme}) => theme.colors.neutralsPalette.light};\n `}\n }\n\n ${({dark}) => dark && css`\n background: ${({theme}) => theme.colors.neutralsPalette.light};\n border-bottom: .5px solid ${({theme}) => theme.overlays.opacity.dark._50};\n\n ${RowTitle} {\n color: ${({theme}) => theme.colors.neutralsPalette.dark};\n }\n`}\n\n ${({active}) => active && css`\n padding: 28px 34px;\n padding-left: 14px;\n background: white;\n border-radius: 8px;\n transition: all .3s;\n box-shadow: ${({theme}) => theme.elevation.shadow.medium};\n\n ${({theme}) => theme.mediaQueries.mobileXl} {\n padding: 16px;\n }\n\n\n &:hover {\n background: white;\n box-shadow: ${({theme}) => theme.elevation.shadow.high};\n\n ${PlayButtonIcon} {\n transform: scale(1.05);\n }\n }\n\n ${BlockNumberContainer} {\n background: ${({theme, themePalette}) => themePalette ? themePalette.light : theme.colors.brandPalette.violet.light};\n min-width: 64px;\n min-height: 64px;\n border: 2px solid white;\n ${({theme}) => theme.mediaQueries.mobileXl} {\n min-width: 32px;\n min-height: 32px;\n }\n\n ${BlockNumber} {\n color: ${({theme, themePalette}) => themePalette ? themePalette.dark : theme.colors.brandPalette.violet.dark}\n }\n }\n ${RowLabel} {\n display: block;\n ${({theme}) => theme.mediaQueries.mobileXl} {\n display: block !important;\n }\n\n }\n ${RowTitle} {\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n }\n ${OptionOuter} {\n border-color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n }\n ${PlayButtonIcon} {\n box-shadow: ${({theme}) => theme.elevation.shadow.medium};\n &:hover {\n background: ${({theme, themePalette}) => themePalette ? themePalette.hover : theme.colors.brandPalette.violet.hover};\n }\n }\n ${DetailText} {\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n }\n `}\n`;\n\nconst BlockNumberContainer = styled(FlexBox)`\n align-items: center;\n justify-content: center;\n width: auto;\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n border-radius: 8px;\n ${({theme}) => theme.mediaQueries.mobileXl} {\n margin-right: ${({theme}) => theme.layouts.spacing.s};\n }\n`;\n\nconst BlockNumber = styled(H3)`\n width: 22px;\n text-align: center;\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n ${({theme}) => theme.mediaQueries.mobileXl} {\n font-weight: 600;\n }\n`;\nconst OptionContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 10px;\n border-radius: 100px;\n margin-right: 8px;\n transition: all 100ms;\n &:hover {\n background: ${({theme}) => theme.colors.neutralsPalette.light};\n }\n ${({theme}) => theme.mediaQueries.mobileXl} {\n background: ${({theme}) => theme.colors.neutralsPalette.extraLight};\n border: .5px solid ${({theme}) => theme.overlays.opacity.dark._50};\n padding: 4px;\n margin-right: ${({theme}) => theme.layouts.spacing.s};\n }\n`;\nconst OptionOuter = styled.div`\n min-width: 20px;\n min-height: 20px;\n padding: 1px;\n border-radius: 100px;\n border: 1px solid ${({theme}) => theme.overlays.opacity.dark._200};\n ${({theme}) => theme.mediaQueries.mobileXl} {\n min-width: 16px;\n min-height: 16px;\n }\n`;\nconst OptionInner = styled.div`\n width: 100%;\n height: 100%;\n border-radius: 100px;\n background: none;\n`;\nconst OptionChecked = styled(CheckCircle).attrs(props => ({size: 24}))`\n fill: ${({theme, themePalette}) => themePalette ? themePalette.default : theme.colors.brandPalette.violet.default};\n ${({theme}) => theme.mediaQueries.mobileXl} {\n height: 16px;\n width: 16px;\n }\n`;\n\nconst Option = ({checked, onClick, themePalette}) => checked\n ? \n : }/>\n\nconst UpgradeOverlayContainer = styled.div`\n position: absolute;\n display: none;\n z-index: 10;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: ${({theme}) => theme.overlays.opacity.light._100};\n color: white;\n align-items: center;\n justify-content: center;\n`;\nconst UpgradeOverlayText = styled(H3)`\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n`;\nconst UpgradeOverlay = () => (\n \n Upgrade to unlock\n \n \n);\n\nconst Progress = styled(ProgressBar)`\n margin-top: 12px;\n width: 100%;\n`;\n\n\nconst QBankRow = ({index, lesson, routeParent, test, blockProgress, mastery, saveBlockProgress, active, themePalette, locked, bootcamp, route}) => {\n /* const {modalDispatch} = useModalContext(); */\n const [resetInitialized, setResetInitialized] = useState({});\n const {status} = blockProgress || {};\n const title = lesson.type ? deSlugify(lesson.type) : `Question Bank #${index+1}`;\n const number = index + 1\n\n const numQuestions = test?.config?.questionCount;\n const linkTo = locked\n ? `/${bootcamp}/upgrade`\n : lesson.type === 'Clinical Cases'\n ? `clinical-cases/${routeParent}/${lesson.route}`\n : lesson.type === 'application'\n ? `application/${routeParent}/${lesson.route}`\n : ['keyholes', 'tfe', 'pattern-folding'].includes(routeParent)\n ? `qbank-collection/${routeParent}/${lesson.route}`\n : lesson.type === 'lecture' || lesson.type === 'application' || lesson.route.includes('lecture')\n ? `lecture-style-questions/${routeParent}/${lesson.route}`\n : `identify-structures/${routeParent}/${lesson.route}`;\n\n const onClick = () => {\n // TODO: add handler for lockdown\n // modalDispatch({\n // type: 'open',\n // component: BootcampLockdown,\n // enableClickClose: true,\n // componentProps: {\n // isPremiumFeature: true,\n // showInteractions: false,\n // config: bootcamp === 'anatomy' ? anatomyConfig : chemistryConfig\n // },\n // modalContainerStyle: theme => `\n // background: ${theme.overlays.opacity.dark._300};\n // padding: 10vh 10vw;\n // align-items: flex-start;\n // ${theme.mediaQueries.tablet} {\n // padding: 0;\n // }\n // `\n // })\n };\n\n const onOptionClick = e => {\n e.persist();\n e.preventDefault();\n e.stopPropagation();\n saveBlockProgress({status: status === 'complete' ? '' : 'complete'})\n };\n\n const progress = mastery?.reduce((acc, {masteryLevel}) => ({...acc, [masteryLevel]: acc[masteryLevel] + 1, total: acc.total + 1}), {\n learning: 0,\n reviewing: 0,\n mastered: 0,\n total: 0,\n });\n\n const {reviewing, learning, mastered} = progress || {};\n\n const progressSegments = [\n {count: mastered},\n {count: reviewing},\n {count: learning}\n ];\n\n return (\n \n \n \n \n \n \n {number}\n \n {index === 1 ? 'Get started' : 'Dive back in'}\n \n \n {index === 1 ? 'Get started' : 'Dive back in'}\n {title}\n \n \n {locked\n ? (\n \n {numQuestions && {numQuestions} question{numQuestions !== 1 ? 's' : ''}}\n \n \n \n \n )\n : (\n \n \n Start\n \n )\n }\n \n \n \n )\n}\n\nexport default QBankRow;\n","import React, {useRef, useEffect} from 'react';\nimport styled from 'styled-components';\n\nimport Dropdown from '../Dropdown';\nimport Row from './Row';\n\nimport {Button} from '../../../../components/Branding/Buttons';\nimport ProgressBar from '../../../../components/ProgressBar';\nimport {H5} from '../../../../components/Typography';\nimport {Row as FlexRow} from '../../../../components/Grid';\nimport {useUserDataContext} from '../../../../contexts/UserData';\n\nconst Details = styled(H5)`\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n margin: 0 !important;\n line-height: 21px;\n`;\nconst Progress = styled(ProgressBar)`\n ${({theme}) => theme.mediaQueries.mobileL} {\n align-items: flex-start;\n margin: ${({theme}) => theme.layouts.spacing.m} 0 0;\n }\n`;\nconst CTAWrapper = styled(FlexRow)`\n align-items: center;\n justify-content: flex-end;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n flex-direction: row-reverse;\n width: 32px;\n margin-left: 16px;\n margin-top: 0px;\n }\n`;\n\nconst ProgressBarWrapper = styled.div`\n margin-top: 8px;\n width: 100%;\n ${({hidden}) => hidden && `visibility: hidden;`}\n`;\n\n\nconst QBankCollection = props => {\n const {\n config: {name, route, lessons},\n qbankCollectionData,\n saveBlockProgress,\n searchTerm,\n themePalette,\n chapterIndex,\n scrollIntoView\n } = props;\n\n const ref = useRef(null);\n const {isUpgraded, bootcamp} = useUserDataContext();\n\n useEffect(() => {\n if (scrollIntoView && ref?.current) {\n ref?.current?.scrollIntoView();\n }\n }, [scrollIntoView, ref?.current]);\n\n const rows = lessons.map((lesson, index) => (\n saveBlockProgress(lesson.testId || lesson.id, value)}\n themePalette={themePalette}\n route={lesson.route}\n bootcamp={bootcamp}\n locked={!isUpgraded && index > 0}\n />\n ));\n\n const testIds = lessons.map(lesson => lesson.testId || lesson.id);\n const progress = !qbankCollectionData ? {} : testIds.reduce((acc, testId) => {\n const data = qbankCollectionData[testId].mastery;\n const testMastery = data.reduce((acc, {masteryLevel}) => {\n return {\n ...acc,\n [masteryLevel]: acc[masteryLevel] + 1\n }\n }, acc);\n return {\n ...testMastery,\n totalTagged: acc.totalTagged + data.length,\n total: acc.total + qbankCollectionData[testId].test.config.questionCount\n }\n }, {learning: 0, reviewing: 0, mastered: 0, totalTagged: 0, total: 0});\n\n const collectionSlug = window.location.pathname.match('qbank-collection') || window.location.pathname.match('identify-structures')\n ? 'identify-structures'\n // NOTE this case is only for keyholes and TFE banks which appears on the qbanks content route alongside normal qbs\n : window.location.pathname.match('qbanks')\n ? 'qbank-collection'\n : 'lecture-style-questions';\n const activeLesson = !qbankCollectionData ? '' : lessons.find(({testId, id}) => qbankCollectionData[testId || id].quizProgress[0].status === '');\n const blockLink = !qbankCollectionData ? '#' : activeLesson ? `${collectionSlug}/${route}/${activeLesson.route}` : `${collectionSlug}/${route}/${lessons[0].route}`;\n\n return (\n \n {progress.totalTagged} {`of ${progress.total} questions tagged`}}\n lightMode\n />\n
\n
\n \n )}\n actions={[\n // \n // \n // \n ]}\n {...props}\n >\n {rows}\n \n );\n};\n\nexport default QBankCollection;\n","import React, {useRef, useState, useEffect} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ChapterCard from '../Cards/Chapter';\nimport FreeQuestionsCard from '../Cards/FreeQuestions';\n\nimport Callout from '../Cards/Callout';\nimport {PageSection} from '../ClassroomContentWrapper';\nimport {StyledBeginPracticeButton, StyledUpgradeButton, StyledResetButton} from '../Cards/components/Buttons'\nimport QBankCollection from '../Cards/QBankCollection';\nimport CreateTest from '../../pages/CreateTest';\n\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {useModalContext} from '../../../contexts/Modal';\n\nimport styled from 'styled-components';\n\nconst Container = styled.div`\n`;\n\nconst StyledChapterCard = styled(ChapterCard)`\n background: white;\n border: none;\n overflow: inherit;\n`;\n\nconst QuestionBanks = ({content, themePalette, data, calloutText, allow, subject}) => {\n const plusRef = useRef();\n const {userModel, isUpgraded, bootcamp} = useUserDataContext();\n const {config} = useBootcampConfigContext();\n const {modalDispatch} = useModalContext();\n const [resetInitialized, setResetInitialized] = useState({});\n\n const activeMembershipGroups = userModel?.memberships?.items?.reduce((acc, membership) => (\n membership.status === 'active' ? [...acc, ...membership.groups] : acc\n ), []) || [];\n\n const {counts, progress, collectionData} = data;\n const [banks] = content;\n const isPlusPack = window.location.pathname.match('plus');\n const isQbank = window.location.pathname.match('qbanks') || window.location.pathname.match('board-banks') || window.location.pathname.match('bites') || window.location.pathname.match('lectures');\n\n const alwaysLocked = ['nclex'].includes(bootcamp);\n const openInModal = [''].includes(bootcamp) && isQbank;\n\n const hasAccess = !allow || allow?.some(group => activeMembershipGroups.includes(group));\n const freeBanks = config?.additionalContent?.find(({name}) => name === 'Free Tests');\n\n const openTestInModal = (system) => modalDispatch({\n type: 'open',\n component: CreateTest,\n componentProps: {defaults: {subject, system}},\n enableClickClose: true,\n });\n\n const urlParams = new URLSearchParams(window.location.search)\n const selectedSection = urlParams.get('section') || 'all'\n\n useEffect(() => {\n if (isPlusPack) {\n plusRef.current?.scrollIntoView({behavior: 'smooth'});\n }\n }, [window.location.pathname]);\n\n const filteredContent = banks.content.filter(item => selectedSection === 'all' || item.section === selectedSection || window.location.pathname.includes('med-school/microbiology/board-banks'));\n\n return (\n \n \n {calloutText && }\n {!isUpgraded && !['inbde'].includes(bootcamp) && freeBanks && freeBanks?.testIds?.map((id) => (\n \n ))}\n {filteredContent.map((item, index) => {\n const unlocked = (['dat', 'oat'].includes(bootcamp) && (index < 3 && (window.location.pathname.match(/(biology|general-chemistry|organic-chemistry)/)))) || (['mcat'].includes(bootcamp) && index < 3);\n return (\n item?.lessons\n ? \n : openTestInModal(item.name) : null}\n id={item.id}\n comingSoon={item.comingSoon}\n index={\n banks?.hasOwnProperty('startingIndex')\n ? banks?.startingIndex + index\n : item?.hasOwnProperty('index')\n ? item.index\n : index + 1\n }\n questionCount={counts[item.id]}\n progress={progress && progress.byTest ? progress.byTest[item.id] : 'loading'}\n themePalette={themePalette}\n defaultLocked={alwaysLocked ? !isUpgraded : (!isUpgraded && ((index > 0 && !unlocked) || item.upgradeRequired)) || !hasAccess}\n actions={!hasAccess ? : [\n ((isQbank || isPlusPack) && (isUpgraded || (index === 0 || unlocked))) && ,\n (alwaysLocked ? !isUpgraded : !isUpgraded && ((index > 0 && !unlocked) || item.upgradeRequired)) &&\n ,\n (isUpgraded || ((index === 0 || unlocked) && !item.upgradeRequired && !alwaysLocked)) &&\n \n ]} />\n\n );\n })}\n \n \n );\n};\n\nQuestionBanks.propTypes = {\n content: PropTypes.array,\n themePalette: PropTypes.object.isRequired,\n data: PropTypes.shape({\n counts: PropTypes.shape({}),\n progress: PropTypes.shape({})\n }),\n};\nQuestionBanks.defaultProps = {\n content: [],\n data: {counts: {}, progress: {}},\n};\n\nexport default QuestionBanks;\n","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ChapterCard, {Left, Wrapper} from '../Cards/Chapter';\nimport Callout from '../Cards/Callout';\nimport {PageSection} from '../ClassroomContentWrapper';\nimport {StyledBeginPracticeButton, StyledUpgradeButton, StyledResetButton} from '@bootcamp/web/src/bootcamps/components/Cards/components/Buttons';\n\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nimport styled from 'styled-components';\n\nconst Container = styled.div`\n`;\nconst StyledChapterCard = styled(ChapterCard)`\n background: white;\n border: none;\n overflow: inherit;\n align-items: center;\n\n ${Wrapper} {\n align-items: center;\n }\n\n ${Left} {\n ${({theme}) => theme.mediaQueries.mobileXl} {\n align-self: flex-start;\n }\n }\n`;\n\nconst PracticalExams = ({content, themePalette, data, calloutText, allow}) => {\n const {userModel, isUpgraded} = useUserDataContext();\n const [resetInitialized, setResetInitialized] = useState({});\n const activeMembershipGroups = userModel?.memberships?.items?.reduce((acc, membership) => (\n membership.status === 'active' ? [...acc, ...membership.groups] : acc\n ), []) || [];\n\n const practicals = content[0].content;\n const {counts} = data;\n const hasAccess = !allow || allow?.some(group => activeMembershipGroups.includes(group));\n\n return (\n \n \n {calloutText && }\n {practicals.map((item, index) => (\n 0) || !hasAccess}\n actions={!hasAccess ? : [\n ,\n (!isUpgraded && index > 0) &&\n ,\n (isUpgraded || index === 0) &&\n \n ]}\n />\n ))}\n \n \n );\n};\n\nPracticalExams.propTypes = {\n content: PropTypes.array,\n themePalette: PropTypes.object.isRequired,\n data: PropTypes.shape({\n counts: PropTypes.shape({}),\n progress: PropTypes.shape({})\n }),\n};\nPracticalExams.defaultProps = {\n content: [],\n data: {counts: {}}\n};\n\nexport default PracticalExams;\n","import React, {useEffect, useState} from 'react';\nimport {getInObj} from '@bootcamp/shared/src/util';\nimport {getTestProgressByUserIdHashTestId, getAllTestProgressByUserIdHashTestId} from '@bootcamp/shared/src/requests';\n\nimport Chapter, {Wrapper as CardWrapper, Right, Left} from './Chapter';\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {Label2, Label3} from '../../../components/Typography/next';\nimport {getResults, getOATResults} from '@bootcamp/shared/src/util/scoring';\nimport {restoreQuizProgress} from '@bootcamp/web/src/bootcamps/dat/Performance';\n\nimport {CalendarLtr} from '@styled-icons/fluentui-system-regular/CalendarLtr';\nimport {TargetArrow} from '@styled-icons/fluentui-system-regular/TargetArrow';\nimport {CheckmarkCircle} from '@styled-icons/fluentui-system-regular/CheckmarkCircle';\n\nimport {UpgradeButton, RoundButton} from '@bootcamp/web/src/components/UI';\nimport {Button, LinkButton} from '@bootcamp/web/src/components/Branding/Buttons';\n\nimport moment from 'moment';\nimport styled, {css} from 'styled-components';\nimport {API, graphqlOperation} from '@aws-amplify/api';\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\nimport {SubmitAnatomyCase} from '@bootcamp/web/src/components/Modal';\nimport theme from '@bootcamp/shared/src/styles/theme';\nimport {Info} from '@styled-icons/fluentui-system-filled/Info';\nimport {ArrowRepeatAll} from '@styled-icons/fluentui-system-regular/ArrowRepeatAll';\n\nconst Wrapper = styled.div`\n border-radius: 8px;\n box-shadow: ${({theme}) => theme.elevation.shadow.low};\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n overflow: hidden;\n transition: all 100ms ease;\n\n ${({locked, theme}) => locked ? css`\n opacity: 0.7;\n ` : css`\n &:hover {\n transform: scale(1.01);\n }\n `}\n`;\nconst ChapterCard = styled(Chapter)`\n margin-bottom: 0;\n display: flex;\n box-shadow: none;\n transition: none;\n border-radius: 0;\n border: none;\n background: white;\n\n &:hover {\n transform: none;\n }\n\n ${Left} {\n ${({theme}) => theme.mediaQueries.tablet} {\n align-self: flex-start;\n }\n }\n\n ${CardWrapper} {\n align-items: center;\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n }\n }\n ${Right} {\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 0px 16px;\n margin-top: 8px;\n width: 100%;\n }\n }\n`;\nconst colorMap = {\n 'Low': theme.colors.interfacePalette.red.default,\n 'Borderline': theme.colors.interfacePalette.yellow.default,\n 'High': theme.colors.interfacePalette.green.default,\n 'Very High': theme.colors.interfacePalette.green.dark,\n}\nconst IconWrapper = styled.div`\n display: flex;\n color: ${({theme, color}) => color ? colorMap[color] || theme.colors.typographyPalette.primary : theme.colors.neutralsPalette.extraDark};\n border-radius: 100px;\n width: 16px;\n height: 16px;\n order: 1;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-right: 8px;\n color: ${theme.colors.neutralsPalette.extraDark};\n }\n`;\nconst ResultContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-self: stretch;\n margin-right: 16px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: row;\n width: 100%;\n margin-right: 0;\n margin-top: 16px;\n flex-direction: column;\n background: ${({theme}) => theme.colors.backgroundPalette.secondary};\n padding: 8px 16px;\n border-radius: 8px;\n }\n /* width: 234px; */\n`;\nconst ResultItem = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 56px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: row;\n width: 100%;\n }\n`;\nconst Divider = styled.div`\n background: ${({theme}) => theme.colors.borderPalette.primary};\n width: 1px;\n margin: 0px 8px;\n\n ${({mobileHidden}) => mobileHidden && css`\n ${({theme}) => theme.mediaQueries.tablet} {\n display: none;\n }\n `}\n ${({theme}) => theme.mediaQueries.tablet} {\n width: auto;\n height: 1px;\n margin: 8px 0px;\n }\n`;\nconst ResultItemText = styled(Label3)`\n color: ${({theme, color}) => color ? colorMap[color] || theme.colors.typographyPalette.primary : theme.colors.typographyPalette.primary};\n font-weight: 700;\n margin-top: 8px;\n order: 3;\n white-space: nowrap;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-top: 0;\n }\n\n\n `;\nconst ResultItemSubText = styled(ResultItemText)`\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n font-weight: 400;\n margin-top: 4px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n order: 2;\n flex: 1;\n margin-top: 0;\n }\n\n\n`;\nconst Placeholder = styled(Label2)`\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 12px;\n width: 189px;\n background: ${({theme}) => theme.colors.backgroundPalette.secondary};\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n height: 64px;\n ${({theme}) => theme.mediaQueries.tablet} {\n height: 40px;\n margin: 0 auto;\n }\n`;\nconst StyledUpgradeButton = styled(UpgradeButton)`\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: 14px;\n flex: 1;\n height: 32px;\n padding: 0;\n ${({hideOnMobile}) => hideOnMobile && css`display: none;`}\n }\n`;\nconst StyledBeginPracticeButton = styled(RoundButton)`\n ${({theme}) => theme.mediaQueries.tablet} {\n display: ${({attempted}) => attempted ? 'flex' : 'none'};\n font-size: 14px;\n flex: 1;\n height: 32px;\n padding: 0;\n }\n`;\nconst StyledButton = styled(Button)`\n ${({theme}) => theme.mediaQueries.tablet} {\n flex: 1;\n font-size: 14px;\n height: 32px;\n padding: 0;\n }\n`;\n\nconst RetakeButton = styled(LinkButton)`\n ${({theme}) => theme.mediaQueries.tablet} {\n flex: 1;\n button {\n flex: 1;\n font-size: 14px;\n height: 32px;\n padding: 0;\n }\n }\n`;\n\n\nconst Result = ({score, scoreText, attemptDate, resultDetails, attemptsCount, loading}) => {\n if (loading) {\n return (\n \n Loading...\n \n )\n }\n if (!score) {\n return (\n \n \n \n \n \n \n {attemptsCount}\n Attempt{attemptsCount === 1 ? '' : 's'}\n \n \n \n )\n }\n\n return (\n \n \n \n \n \n \n {moment(attemptDate).format(\"MMM D\")}\n Date\n \n {resultDetails?.result && resultDetails?.text &&\n <>\n \n \n \n \n \n {resultDetails.result}\n {resultDetails.text}\n \n \n }\n \n \n \n {resultDetails?.result ? : }\n \n {scoreText.score}\n {scoreText.label}\n \n \n \n \n \n \n {attemptsCount}\n Attempt{attemptsCount === 1 ? '' : 's'}\n \n \n \n );\n}\n\nconst AlertIcon = styled(Info)`\n color: ${({theme}) => theme.colors.interfacePalette.red.default};\n`;\nconst AlertContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 100px;\n background-color: ${({theme}) => theme.colors.interfacePalette.red.default}3A;\n padding: 12px;\n width: fit-content;\n height: auto;\n margin: 0 auto;\n margin-bottom: 16px;\n`;\n\nconst ResetButton = ({testProgressId, themePalette, setLastAttempt, testId}) => {\n const {modalDispatch} = useModalContext();\n const {bootcamp, DEFAULT_USER_ID} = useUserDataContext();\n\n const onClick = () => modalDispatch({\n type: 'open',\n component: SubmitAnatomyCase,\n componentProps: {\n icon: ,\n textAlign: 'center',\n headerText: 'Reset this exam?',\n bodyText: ['dat', 'oat'].includes(bootcamp)\n ? 'Resetting will clear your previous test attempt results. Your question tags will remain.'\n : 'This will reset your answered questions and pass prediction. Your question tags will remain. Keep in mind your first attempt is your most accurate pass prediction.',\n confirmConfig: {\n onConfirm: async () => {\n // use API.graphql to set userIdHashTestId to null\n\n const resetRequest = async (progressId) => {\n try {\n await API.graphql(graphqlOperation(`\n mutation UpdateTestProgress($input: UpdateTestProgressInput!) {\n updateTestProgress(input: $input) {\n id\n }\n }`, {input: {id: progressId, didReset: true}}))\n } catch (error) {\n console.log('error resetting test', error);\n }\n };\n \n await resetRequest(testProgressId);\n\n // if (['dat', 'oat'].includes(bootcamp)) {\n // // rest all test progress for dat / oat\n // const result = await getAllTestProgressByUserIdHashTestId(`${DEFAULT_USER_ID}#${testId}`);\n // const resetProgress = await Promise.all(result?.data?.TestProgressByTestId?.items.map(async ({id}) => resetRequest(id)));\n // // console.log(`reset ${resetProgress?.length} attempts`);\n // } else {\n // await resetRequest(testProgressId);\n // }\n\n setLastAttempt();\n },\n colorConfig: theme.colors.interfacePalette.red,\n text: 'Yes, reset this exam'\n },\n cancelConfig: {\n text: 'No, don\\'t reset'\n },\n },\n enableClickClose: true,\n modalContainerStyle: theme => `\n background: ${theme.overlays.opacity.dark._300};\n padding: 10vh 10vw;\n align-items: flex-start;\n ${theme.mediaQueries.tablet} {\n background: ${theme.overlays.opacity.dark._400};\n padding: 0;\n }\n `\n });\n\n if (!testProgressId) return null;\n\n return (\n {\n e.stopPropagation();\n e.preventDefault();\n onClick();\n return false;\n }}\n />\n\n )\n};\n\n\nconst PracticeTest = ({\n showTestResults,\n progressSegments,\n progress,\n questionCount,\n label,\n actions,\n locked,\n testReviewRoute='test-review',\n formatScore,\n testRouteParam,\n name,\n testTitle,\n formatResultDetails,\n formatScoreText,\n startText,\n reviewText,\n isLocked,\n simLocked,\n ...props\n}) => {\n const [lastAttempt, setLastAttempt] = useState(null);\n const [attemptsCount, setAttemptsCount] = useState(0);\n const {DEFAULT_USER_ID, isUpgraded, loading, bootcamp, searchUserInteractions} = useUserDataContext();\n\n const testSlug = props.route.split('/')[1];\n const testRoute = testRouteParam || `${window.location.pathname.replace('plus-tests', 'practice-tests').replace('full-length-plus', 'full-length')}/${testSlug}`;\n const testId = props.id;\n\n useEffect(() => {\n if (!showTestResults || loading || !props.id || props.defaultLocked || !!lastAttempt || lastAttempt === false) return;\n\n const fetchLastAttempt = async () => {\n try {\n const {data: {TestProgressByTestId: {items: testProgressArray}}} = await getTestProgressByUserIdHashTestId(`${DEFAULT_USER_ID}#${props.id}`, true);\n const attempt = getInObj(['blockProgresses', 'items'], testProgressArray[0], false);\n\n const attemptId = testProgressArray[0]?.id;\n const attemptDate = testProgressArray[0]?.createdAt;\n\n const score = formatScore\n ? formatScore(attempt)\n : attempt?.length && attempt\n .map(block => block.questionProgresses.items)\n .flat()\n .reduce((acc, { didSelectCorrectAnswer }) => ({ correct: acc.correct + !!didSelectCorrectAnswer, total: acc.total + 1 }), { correct: 0, total: 0 });\n\n setLastAttempt({attemptId, attemptDate, score, attempt});\n const result = await getAllTestProgressByUserIdHashTestId(`${DEFAULT_USER_ID}#${props.id}`);\n const attempts = result?.data?.TestProgressByTestId?.items;\n setAttemptsCount(attempts?.length || 0);\n } catch (e) {\n console.log(e);\n setLastAttempt(false);\n }\n }\n\n fetchLastAttempt();\n\n }, [props.defaultLocked, lastAttempt, props.id, loading]);\n const cardLocked = (simLocked && !lastAttempt?.attemptId) || (props.defaultLocked ? props.defaultLocked :(!isUpgraded && props.index > 1));\n\n const cardActions = actions || [\n cardLocked &&\n ,\n !cardLocked && lastAttempt?.attemptId && ['next-gen-readiness-exams/review', 'self-assessment/review', 'previous-tests/review', 'simulation-exam/review', 'practice-tests/review', 'test-review'].includes(testReviewRoute) && ,\n // !cardLocked && lastAttempt?.attemptId && ['dat', 'oat'].includes(bootcamp) && (testRoute?.match('practice-tests') || testRoute?.match('full-length')) && ,\n (!cardLocked && (isUpgraded || props.index === 1)) &&\n \n ];\n\n const baseRoute = ['dat', 'oat', 'mcat'].includes(bootcamp)\n ? `${testRoute}/review`\n : `/${bootcamp}/${testReviewRoute}`;\n const route = lastAttempt?.attemptId && lastAttempt?.score\n ? `${baseRoute}?id=${props.id}&testProgressId=${encodeURIComponent(lastAttempt?.attemptId)}&testRoute=${testRoute}`\n : props.route;\n\n const defaultFormatResultDetails = () => {\n try {\n const testSubject = name.match(/([^#]+)( Test)/)[1] || '';\n const testNumber = name.match(/#(.*)/)[1];\n if (testSubject === 'Full Length') {\n if (!lastAttempt?.attempt) return null;\n if (bootcamp === 'dat') {\n const result = restoreQuizProgress({blockProgresses: {items: lastAttempt?.attempt}})\n const restoredProgress = result.filter(blockProgress => blockProgress.questions && blockProgress.questions.length);\n const bioResult = {testTitle: `Biology Test #${testNumber}`, result: restoredProgress.slice(0, 1)};\n const gcResult = {testTitle: `General Chemistry Test #${testNumber}`, result: restoredProgress.slice(1, 2)};\n const ocResult = {testTitle: `Organic Chemistry Test #${testNumber}`, result: restoredProgress.slice(2, 3)};\n // ignore pat\n // const patResult = {testTitle: `Perceptual Ability Test #${testNumber}`, result: restoredProgress.slice(3, 4)};\n const rcResult = {testTitle: `Reading Comprehension Test #${testNumber}`, result: restoredProgress.slice(4, 7)};\n const qrResult = {testTitle: `Quantitative Reasoning Test #${testNumber}`, result: restoredProgress.slice(7, 8)};\n const splitResults = [bioResult, gcResult, ocResult, rcResult, qrResult].map(({testTitle, result: selectedResult}) => {\n const totalQuestions = selectedResult.reduce((acc, {questions}) => acc += questions.length, 0);\n const totalCorrect = selectedResult.reduce((acc, {questions}) => acc += questions.reduce((acc, {didSelectCorrectAnswer}) => acc += !!didSelectCorrectAnswer, 0), 0);\n const testSubject = testTitle.match(/([^#]+)( Test)/)[1] || '';\n const results = getResults((totalCorrect / totalQuestions) * 100, testTitle, testSubject);\n\n return {stats: {score: results.score.replace('<', '')}};\n })\n\n const rawAvgScore = Math.round(splitResults.reduce((acc, {stats}) => acc += parseInt(stats.score), 0) / splitResults.length);\n\n // avg score from stats\n const avgScore = Math.round(rawAvgScore / 10) * 10;\n\n return {result: `${avgScore}AA`, text: 'Estimate'};\n }\n\n if (bootcamp === 'oat') {\n const result = restoreQuizProgress({blockProgresses: {items: lastAttempt?.attempt}})\n const restoredProgress = result.filter(blockProgress => blockProgress.questions && blockProgress.questions.length);\n const bioResult = {testTitle: `Biology Test #${testNumber}`, result: restoredProgress.slice(0, 1)};\n const gcResult = {testTitle: `General Chemistry Test #${testNumber}`, result: restoredProgress.slice(1, 2)};\n const ocResult = {testTitle: `Organic Chemistry Test #${testNumber}`, result: restoredProgress.slice(2, 3)};\n const rcResult = {testTitle: `Reading Comprehension Test #${testNumber}`, result: restoredProgress.slice(3, 6)};\n const physResult = {testTitle: `Physics Test #${testNumber}`, result: restoredProgress.slice(6, 7)};\n const qrResult = {testTitle: `Quantitative Reasoning Test #${testNumber}`, result: restoredProgress.slice(7, 8)};\n const splitResults = [bioResult, gcResult, ocResult, rcResult, physResult, qrResult].map(({testTitle, result: selectedResult}) => {\n const totalQuestions = selectedResult.reduce((acc, {questions}) => acc += questions.length, 0);\n const totalCorrect = selectedResult.reduce((acc, {questions}) => acc += questions.reduce((acc, {didSelectCorrectAnswer}) => acc += !!didSelectCorrectAnswer, 0), 0);\n const testSubject = testTitle.match(/([^#]+)( Test)/)[1] || '';\n const results = getOATResults((totalCorrect / totalQuestions) * 100, testTitle, testSubject);\n return {stats: {score: results}}\n })\n // avg score from stats\n const avgScore = Math.round(splitResults.reduce((acc, {stats}) => acc += parseInt(stats.score), 0) / splitResults.length);\n\n return {result: avgScore, text: 'Estimate'};\n }\n }\n const percentage = (lastAttempt?.score?.correct / lastAttempt?.score?.total) * 100;\n let estimate;\n if (bootcamp === 'oat') {\n estimate = getOATResults(percentage, name, testSubject);\n } else {\n const {score} = getResults(percentage, name, testSubject);\n estimate = score\n }\n return {result: estimate, text: 'Score'};\n } catch (error) {\n console.log(error);\n return null;\n }\n };\n\n const defaultFormatScoreText = (score) => {\n if (!score) return;\n return {score: `${score?.correct} / ${score?.total}`, label: 'Score'}\n };\n\n const resultDetails = formatResultDetails ? formatResultDetails(lastAttempt) : defaultFormatResultDetails();\n const scoreText = formatScoreText ? formatScoreText(lastAttempt?.score) : defaultFormatScoreText(lastAttempt?.score);\n\n return (\n \n \n {!cardLocked && showTestResults &&\n \n }\n \n \n );\n};\n\nexport default PracticeTest;\n","import React, {useRef, useEffect} from 'react';\nimport PropTypes from 'prop-types';\n\nimport styled from 'styled-components';\n\nimport Callout from '../Cards/Callout';\n\nimport PracticeTestCard from '../Cards/PracticeTest';\nimport {PageSection} from '../ClassroomContentWrapper';\nimport {UpgradeButton, BeginPracticeButton} from '../Cards/components/Buttons';\nimport {Element as FAQElement, Heading as FAQHeading} from '@bootcamp/web/src/bootcamps/components/WebflowFAQs';\n\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nimport {getInObj} from '@bootcamp/shared/src/util';\n\n\nconst Container = styled.div`\n`;\nconst FAQWrapper = styled.div`\n margin-top: 32px;\n`;\nconst StyledFAQHeading = styled(FAQHeading)`\n margin-top: ${({theme}) => theme.layouts.spacing.l};\n`;\n\nconst datPracticeTestFAQs = [\n {\n title: 'How representative are DAT Bootcamp practice tests of the real DAT?',\n text: 'DAT Bootcamp has the most representative practice tests available, which is part of the reason why more students choose DAT Bootcamp than any other product. To ensure our tests reflect the current DAT, we update them weekly using data from thousands of recent students who have taken the test. Our practice tests also feature Prometric Mode, which simulates the exact same test interface you’ll see in the Prometric test center on test day.'\n },\n {\n title: 'How accurate is my estimated AA?',\n text: \"More students use DAT Bootcamp than any other product. We’ve helped 90%+ of predental students for the last 5+ years and we have access to more data than anyone else. This allows us to make better, more accurate predictions. Check out the performance page to see an estimate of your DAT score.\"\n },\n {\n title: 'I have testing accommodations. Can I change the test timer?',\n text: \"Yes! When you're about to take a practice test, you'll see a setting for Test Accommodations, which increases the amount of time you'll have available. If you need more time, right-click the test timer during the test to set a custom time limit.\"\n },\n {\n title: 'How do the Subject Practice Tests (like Biology Test #1) relate to the Full Length Tests?',\n text: \"Each Full Length Test is a compilation of the Practice Tests from every subject. For example, if you've taken Biology Test #2, you'll see the same biology questions in Full Length Test #2. If you’re following the Study Schedule, we’ll provide recommendations on how you can approach taking the Subject and Full Length Tests.\"\n },\n]\n\nconst PracticeTests = ({subject, content, themePalette, data, calloutText}) => {\n const topicRef = useRef();\n\n const tests = content.find(({name}) => name === 'Tests').content;\n\n const {isUpgraded, bootcamp} = useUserDataContext();\n const {counts, progress} = data;\n\n const showDATFaqs = bootcamp === 'dat' && !!window?.location?.pathname?.match('practice-tests');\n\n useEffect(() => {\n if (window.location.pathname.match('progress')) {\n topicRef.current?.scrollIntoView({behavior: 'smooth'});\n }\n }, [window.location.pathname])\n\n return (\n \n \n {calloutText && }\n {tests.map((item, index) => (\n 0}\n />\n ))}\n \n {showDATFaqs &&\n \n FAQs\n {datPracticeTestFAQs.map(({ title, text }) => (\n \n ))}\n \n }\n \n );\n};\n\nPracticeTests.propTypes = {\n content: PropTypes.array,\n themePalette: PropTypes.object.isRequired,\n data: PropTypes.shape({}),\n};\nPracticeTests.defaultProps = {\n content: [],\n data: {},\n};\n\nexport default PracticeTests;\n","import React from 'react';\nimport styled, {css} from 'styled-components';\nimport {Link} from 'react-router-dom';\n\nimport {useModalContext} from '../../../../contexts/Modal';\nimport Upgrade from '../../../../components/Modal/components/Upgrade';\n\nimport {Row, Column, FlexBox} from '../../../../components/Grid';\nimport {H3, H4, H5, Label3} from '../../../../components/Typography';\n\nimport {ReactComponent as Badge} from '@bootcamp/shared/src/assets/svg/badge.svg';\nimport {Play} from '@styled-icons/heroicons-solid/Play';\nimport {CheckCircle} from '@styled-icons/material-rounded/CheckCircle';\nimport {ArrowForwardOutline} from '@styled-icons/evaicons-outline/ArrowForwardOutline';\nimport {Flag} from '@styled-icons/evaicons-solid/Flag';\n\nimport {findByRenderType, parseVideoDuration} from '@bootcamp/shared/src/util';\n\n\nconst IconArea = styled.span`\n display: flex;\n align-items: center;\n margin-left: auto;\n`;\nconst BadgeWrapper = styled.span`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 34px;\n height: 34px;\n`;\nconst StyledBadge = styled(Badge)`\n path {\n fill: ${({theme}) => theme.overlays.opacity.dark._400};\n }\n`;\nconst DetailText = styled(H5)`\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n margin-right: ${({theme, padded}) => padded ? '4px' : theme.layouts.spacing.m};\n margin-left: auto;\n transition: all .3s;\n`;\nconst PlayButtonIcon = styled(Play).attrs({size: 32})`\n color: ${({theme, themePalette}) => themePalette ? themePalette.default : theme.colors.brandPalette.violet.default};\n ${({theme}) => theme.mediaQueries.mobileL} {\n width: 24px;\n height: 24px;\n }\n`;\nconst FlagButtonIcon = styled(Flag).attrs({size: 20})`\n color: ${({theme, themePalette}) => themePalette ? themePalette.default : theme.colors.brandPalette.violet.default};\n`;\nconst RowContainer = styled(Row)`\n align-items: center;\n min-height: 48px;\n ${({mobileOnly}) => mobileOnly && css`\n display: none;\n ${({theme}) => theme.mediaQueries.mobileL} {\n display: flex;\n }\n `}\n`;\nconst RowLabel = styled(Label3)`\n color: ${({theme, themePalette}) => themePalette ? themePalette.dark : theme.colors.brandPalette.violet.dark};\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n display: none;\n ${({mobileOnly}) => mobileOnly && css`\n display: none !important;\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: 0px;\n font-size: 14px;\n line-height: 14px;\n }\n `}\n`;\nconst RowTitleContainer = styled(Column)`\n width: auto;\n ${({desktopOnly}) => desktopOnly && css`\n ${({theme}) => theme.mediaQueries.mobileL} {\n display: none;\n }\n `}\n`;\nconst RowTitle = styled(H4)`\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n ${({theme}) => theme.mediaQueries.mobileL} {\n font-weight: 600;\n }\n`;\n\nconst RowLink = styled(Link)`\n display: block;\n width: 100%;\n height: 100%;\n text-decoration: none;\n min-height: 56px;\n padding: 4px 24px;\n background: white;\n transition: all .2s;\n border-radius: 0px;\n\n ${({locked}) => locked && `\n &:hover {\n ${OptionContainer} {\n display: none;\n }\n ${BlockNumberContainer} {\n display: none;\n }\n ${RowTitleContainer} {\n display: none;\n }\n ${DetailText} {\n display: none;\n }\n ${UpgradeOverlayContainer} {\n display: flex;\n }\n ${BadgeWrapper} {\n margin-left: auto;\n }\n }\n `}\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n padding: 8px 16px;\n display: flex;\n }\n\n &:hover {\n transform: scale(1.01);\n transition: all .1s ease 0s;\n border-radius: 8px;\n background: ${({theme}) => theme.colors.neutralsPalette.extraLight};\n ${({dark}) => dark && css`\n background: ${({theme}) => theme.colors.neutralsPalette.light};\n `}\n }\n\n ${({dark}) => dark && css`\n background: ${({theme}) => theme.colors.neutralsPalette.light};\n border-bottom: .5px solid ${({theme}) => theme.overlays.opacity.dark._50};\n\n ${RowTitle} {\n color: ${({theme}) => theme.colors.neutralsPalette.dark};\n }\n`}\n\n ${({active}) => active && css`\n padding: 28px 34px;\n padding-left: 14px;\n background: white;\n border-radius: 8px;\n transition: all .3s;\n box-shadow: ${({theme}) => theme.elevation.shadow.medium};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n padding: 16px;\n }\n\n\n &:hover {\n background: white;\n box-shadow: ${({theme}) => theme.elevation.shadow.high};\n\n ${PlayButtonIcon} {\n transform: scale(1.05);\n }\n }\n\n ${BlockNumberContainer} {\n background: ${({theme, themePalette}) => themePalette ? themePalette.light : theme.colors.brandPalette.violet.light};\n border: 2px solid white;\n ${({theme}) => theme.mediaQueries.mobileL} {\n min-width: 32px;\n min-height: 32px;\n }\n\n ${BlockNumber} {\n color: ${({theme, themePalette}) => themePalette ? themePalette.dark : theme.colors.brandPalette.violet.dark}\n }\n }\n ${RowLabel} {\n display: block;\n ${({theme}) => theme.mediaQueries.mobileL} {\n display: block !important;\n }\n }\n ${RowTitle} {\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n }\n ${OptionOuter} {\n border-color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n }\n ${PlayButtonIcon} {\n box-shadow: ${({theme}) => theme.elevation.shadow.medium};\n &:hover {\n background: ${({theme, themePalette}) => themePalette ? themePalette.hover : theme.colors.brandPalette.violet.hover};\n }\n }\n ${DetailText} {\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n }\n `}\n`;\n\nconst BlockNumberContainer = styled(FlexBox)`\n align-items: center;\n width: auto;\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n border-radius: 8px;\n min-width: 48px;\n min-height: 48px;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-right: ${({theme}) => theme.layouts.spacing.s};\n min-width: 30px;\n min-height: 30px;\n }\n`;\n\nconst BlockNumber = styled(H3)`\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n ${({theme}) => theme.mediaQueries.mobileL} {\n font-weight: 600;\n font-size: 14px;\n }\n`;\nconst Duration = styled(H4)`\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n margin-right: ${({theme}) => theme.layouts.spacing.s};\n ${({theme}) => theme.mediaQueries.mobileL} {\n font-weight: 600;\n white-space: pre;\n }\n`;\n\nconst OptionContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 10px;\n border-radius: 100px;\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n transition: all 100ms;\n &:hover {\n background: ${({theme}) => theme.colors.neutralsPalette.light};\n }\n ${({theme}) => theme.mediaQueries.mobileL} {\n background: ${({theme}) => theme.colors.neutralsPalette.extraLight};\n border: .5px solid ${({theme}) => theme.overlays.opacity.dark._50};\n padding: 4px;\n margin-right: ${({theme}) => theme.layouts.spacing.s};\n }\n`;\nconst OptionOuter = styled.div`\n min-width: 20px;\n min-height: 20px;\n padding: 1px;\n border-radius: 100px;\n border: 1px solid ${({theme}) => theme.overlays.opacity.dark._200};\n ${({theme}) => theme.mediaQueries.mobileL} {\n min-width: 16px;\n min-height: 16px;\n }\n`;\nconst OptionInner = styled.div`\n width: 100%;\n height: 100%;\n border-radius: 100px;\n background: none;\n`;\nconst OptionChecked = styled(CheckCircle).attrs(props => ({size: 24}))`\n fill: ${({theme, themePalette}) => themePalette ? themePalette.default : theme.colors.brandPalette.violet.default};\n ${({theme}) => theme.mediaQueries.mobileL} {\n height: 16px;\n width: 16px;\n }\n`;\n\nconst Option = ({checked, onClick, themePalette}) => checked\n ? \n : }/>\n\nconst UpgradeOverlayContainer = styled.div`\n position: absolute;\n display: none;\n z-index: 10;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: ${({theme}) => theme.overlays.opacity.light._100};\n color: white;\n align-items: center;\n justify-content: center;\n`;\nconst UpgradeOverlayText = styled(H3)`\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n`;\nconst UpgradeOverlay = () => (\n \n Upgrade to unlock\n \n \n);\n\nfunction getDuration(testBlock) {\n try {\n const json = findByRenderType(testBlock.components, 'video');\n const rawDuration = JSON.parse(json).duration;\n return parseVideoDuration(rawDuration);\n\n } catch(error) {\n return '';\n }\n}\n\nconst VideoRow = ({index, testBlock, blockProgress, saveBlockProgress, active, themePalette, locked, bootcamp, route}) => {\n const {modalDispatch} = useModalContext();\n const {status} = blockProgress || {};\n const title = testBlock && testBlock.title;\n const number = testBlock.type === 'text'\n ? findByRenderType(testBlock.components, 'contentType', 'Info')\n : findByRenderType(testBlock.components, 'number', ['questionSet', 'passage'].includes(testBlock?.type) ? 'Quiz' : '');\n const duration = getDuration(testBlock);\n const numQuestions = testBlock.type === 'questionSet' ? testBlock.questionConnections.items.length : null;\n const linkTo = locked ? `#` : `videos/${route}?index=${index}`;\n\n\n const onClick = !locked\n ? () => {}\n : ['oat', 'dat', 'inbde', 'anatomy'].includes(bootcamp)\n ? () => modalDispatch({\n type: 'open',\n component: Upgrade,\n enableClickClose: true,\n modalContainerStyle: theme => `\n background: ${theme.overlays.opacity.dark._300};\n padding: 10vh 10vw;\n align-items: flex-start;\n ${theme.mediaQueries.tablet} {\n background: ${theme.overlays.opacity.dark._400};\n padding: 0;\n }\n `\n })\n : () => window.location = `https://bootcamp.com/${bootcamp}/upgrade`;\n\n const onOptionClick = e => {\n e.persist();\n e.preventDefault();\n e.stopPropagation();\n saveBlockProgress({status: status === 'complete' ? '' : 'complete'}, index)\n };\n\n return (\n \n \n \n \n \n \n {number}\n \n {index === 1 ? 'Get started' : 'Dive back in'}\n\n \n {index === 1 ? 'Get started' : 'Dive back in'}\n {title}\n \n {locked\n ? (\n \n {numQuestions && {numQuestions} question{numQuestions !== 1 ? 's' : ''}}\n {duration && {duration}}\n \n \n \n \n )\n : (\n \n {numQuestions && 0}>{numQuestions} question{numQuestions !== 1 ? 's' : ''}}\n {duration && {duration}}\n {!['text', 'questionSet'].includes(testBlock.type) && \n }\n \n )\n }\n \n \n )\n}\n\nexport default VideoRow;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport Dropdown from '../Dropdown';\nimport Row from './Row';\n\nimport {RoundButton} from '../../../../components/UI';\nimport ProgressBar from '../../../../components/ProgressBar';\nimport {H5} from '../../../../components/Typography';\nimport {Row as FlexRow} from '../../../../components/Grid';\nimport {getTestBlockConnections, getRuntime} from '@bootcamp/shared/src/util';\nimport {useUserDataContext} from '../../../../contexts/UserData';\nimport moment from 'moment';\nimport {Info} from '@styled-icons/fluentui-system-filled/Info';\nimport {SubmitAnatomyCase} from '../../../../components/Modal';\nimport {useModalContext} from '../../../../contexts/Modal';\nimport API, {graphqlOperation} from '@aws-amplify/api';\nimport theme from '@bootcamp/shared/src/styles/theme';\nimport {Button} from '@bootcamp/web/src/components/Branding/Buttons';\nconst AlertIcon = styled(Info)`\n color: ${({theme}) => theme.colors.interfacePalette.red.default};\n`;\nconst AlertContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 100px;\n background-color: ${({theme}) => theme.colors.interfacePalette.red.default}3A;\n padding: 12px;\n width: fit-content;\n height: auto;\n margin: 0 auto;\n margin-bottom: 16px;\n`;\n\nconst Details = styled(H5)`\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n margin: 0 !important;\n line-height: 21px;\n`;\nconst Progress = styled(ProgressBar)`\n max-width: 630px;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n align-items: flex-start;\n margin: ${({theme}) => theme.layouts.spacing.m} 0 0;\n }\n`;\nconst CTAWrapper = styled(FlexRow)`\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n padding: 0 8px 0 16px;\n\n`;\n\nconst ProgressBarWrapper = styled.div`\n margin-top: 8px;\n width: 100%;\n ${({hidden}) => hidden && `visibility: hidden;`}\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-top: 8px;\n }\n`;\nconst StyledButton = styled(Button)`\n min-width: 98px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n width: 50%;\n }\n\n ${theme.mediaQueries.mobileL} {\n height: 32px;\n }\n`;\nconst StyledRoundButton = styled(Button)`\n min-width: 98px;\n height: 42px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n width: 50%;\n\n display: ${({attempted}) => attempted ? 'flex' : 'none'};\n }\n padding: 0;\n\n ${theme.mediaQueries.mobileL} {\n height: 32px;\n }\n`;\n\n\nconst VideoLesson = props => {\n const {config: {route, name, id, section}, videoLessonData: {test, quizProgress, progressId}, refreshVideoLessonData, saveBlockProgress, searchTerm, themePalette, locked, chapterIndex, classroomName, displayIndex} = props;\n const {isUpgraded, bootcamp} = useUserDataContext();\n // if (!test || !quizProgress) return null;\n const {modalDispatch} = useModalContext();\n\n // if (!test || !quizProgress) return } />\n const testBlockConnections = getTestBlockConnections(test) || [];\n const testBlocks = testBlockConnections.reduce((acc, {testBlock}) => testBlock ? [...acc, testBlock] : acc, []);\n\n const completed = quizProgress?.reduce((acc, blockProgress) => blockProgress.status === 'complete' ? acc + 1 : acc, 0) || 0\n const total = testBlocks.filter(testBlock => !['startBlock', 'endBlock'].includes(testBlock.type)).length\n\n const activeBlock = quizProgress?.findIndex(blockProgress => blockProgress.status === '');\n\n function isFilteredBlock (testBlock) {\n if (['startBlock', 'endBlock'].includes(testBlock.type) || !testBlock.title) return false;\n if (!searchTerm) return true;\n const testBlockKeywords = testBlock.components.find(({renderType}) => renderType === 'keywords')?.contents || '';\n return testBlock.title.toLowerCase().includes(searchTerm.toLowerCase()) || name.toLowerCase().includes(searchTerm.toLowerCase()) || searchTerm.toLowerCase().split(' ').every(key => testBlockKeywords.toLowerCase().includes(key));\n }\n\n if (testBlocks.length > 0 && !testBlocks.some(testBlock => isFilteredBlock(testBlock))) {\n return null;\n }\n const targetIndex = searchTerm ? testBlocks.findIndex(testBlock => isFilteredBlock(testBlock)) : activeBlock > -1 ? activeBlock : 1;\n const blockLink = locked ? '#' : `videos/${route}?index=${targetIndex}`;\n\n const urlParams = new URLSearchParams(window.location.search);\n const selectedSection = urlParams.get('section');\n if (selectedSection && selectedSection !== 'all' && selectedSection !== section) return null;\n const unlockLimit = 3;\n const displayLimit = ['Quantitative Reasoning'].includes(classroomName) ? 1 : 0;\n const rows = testBlocks.reduce((acc, testBlock, index) =>\n isFilteredBlock(testBlock)\n ? [\n ...acc,\n saveBlockProgress(id, value, blockIndex)}\n themePalette={themePalette}\n route={route}\n locked={bootcamp === 'mcat' ? !isUpgraded : bootcamp === 'nclex' ? false : ['dat', 'oat'].includes(bootcamp) && (displayIndex <= displayLimit || (displayIndex < unlockLimit && ['Biology', 'General Chemistry', 'Organic Chemistry'].includes(classroomName))) ? false : (bootcamp !== 'inbde' && !isUpgraded && index > 2 && !window.location.pathname.includes('application-services'))}\n bootcamp={bootcamp}\n />\n ] : acc, []);\n const ResetButton = completed > 0 && (\n {\n e.preventDefault();\n e.stopPropagation();\n modalDispatch({\n type: 'open',\n component: SubmitAnatomyCase,\n componentProps: {\n icon: ,\n textAlign: 'center',\n headerText: 'Reset this video lesson?',\n bodyText: 'This will reset all progress for this lesson. Your question tags will remain.',\n confirmConfig: {\n onConfirm: async () => {\n await API.graphql(graphqlOperation(`\n mutation UpdateTestProgress($input: UpdateTestProgressInput!) {\n updateTestProgress(input: $input) {\n id\n }\n }`, {input: {id: progressId, didReset: true}}))\n await refreshVideoLessonData(id);\n },\n colorConfig: theme.colors.interfacePalette.red,\n text: 'Yes, reset this video lesson'\n },\n cancelConfig: {\n text: 'No, don\\'t reset'\n },\n },\n enableClickClose: true,\n modalContainerStyle: theme => `\n background: ${theme.overlays.opacity.dark._300};\n padding: 10vh 10vw;\n align-items: flex-start;\n ${theme.mediaQueries.tablet} {\n background: ${theme.overlays.opacity.dark._400};\n padding: 0;\n }\n `\n })\n return false;\n }}>\n Reset\n \n )\n return (\n \n {completed > total ? total : completed} {`of ${total} lessons completed ${getRuntime(testBlocks)}`}}\n lightMode\n />\n
\n
\n \n )}\n actions={[\n \n {ResetButton}\n 0}>\n {bootcamp === 'mcat' && !isUpgraded ? 'Upgrade' : completed > 0 ? 'Resume' : 'Start'}\n \n \n ]}\n {...props}\n locked={(bootcamp === 'mcat' && !isUpgraded) || locked}\n >\n {rows}\n \n );\n};\n\nexport default VideoLesson;\n","import React, {useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport {MagnifyingGlass} from '@styled-icons/heroicons-outline/MagnifyingGlass';\nimport {XMark as X} from '@styled-icons/heroicons-outline/XMark';\n\nconst Container = styled.div`\n width: 100%;\n margin-bottom: 16px;\n position: relative;\n color: white;\n`;\nconst Input = styled.input`\n color: white;\n font-family: 'proxima-nova';\n background: ${({theme}) => theme.overlays.opacity.light._100};\n background-repeat: no-repeat;\n background-position: center right 16px;\n background-size: 18px;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n display: inline-block;\n transition: box-shadow .4s ease, background .4s ease;\n border-radius: 100px;\n box-shadow: rgb(255 255 255 / 10%) 0px 0px 0px 1px inset;\n border: none;\n padding: 16px;\n height: auto;\n vertical-align: middle;\n white-space: normal;\n font-size: 18px;\n width: 100%;\n line-height: 27px;\n padding: 16px 32px 16px 64px;\n outline: none;\n\n ::placeholder {\n color: ${({theme}) => theme.overlays.opacity.light._400};\n }\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 12px 24px 12px 60px;\n }\n`;\nconst Icon = styled(MagnifyingGlass).attrs(props => ({size: 24}))`\n position: absolute;\n z-index: 10;\n user-select: none;\n left: 24px;\n top: 0px;\n bottom: 0px;\n margin: auto 0px;\n color: ${({theme}) => theme.overlays.opacity.light._400};\n ${({theme}) => theme.mediaQueries.tablet} {\n left: 24px;\n }\n`;\nconst ClearIcon = styled(X).attrs(props => ({size: 24}))`\n position: absolute;\n z-index: 10;\n user-select: none;\n right: 32px;\n top: 0px;\n bottom: 0px;\n margin: auto 0px;\n color: ${({theme}) => theme.overlays.opacity.light._400};\n cursor: pointer;\n`;\n\nconst SearchBar = ({className, ...props}) => {\n const ref = useRef();\n\n // useEffect(() => {\n // ref?.current?.focus();\n // }, []);\n\n return (\n \n \n \n {props.value && }\n \n );\n}\n\n\nSearchBar.propTypes = {\n onChange: PropTypes.func,\n clear: PropTypes.func,\n value: PropTypes.node,\n placeholder: PropTypes.string,\n};\n\nexport default SearchBar;\n","import React, {useState, useEffect, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {useHistory} from 'react-router-dom';\n\nimport VideoLessonCard from '../Cards/VideoLesson';\nimport SearchBar from '../SearchBar';\nimport {useDebounce} from '@bootcamp/shared/src/util/hooks';\nimport styled, {css} from 'styled-components';\nimport Callout from '../Cards/Callout';\nconst Container = styled.div`\n`;\n\n// const Callout = styled(Body2)`\n// background: rgba(255, 255, 255, 0.1);\n// border: 0.5px solid rgba(255, 255, 255, 0.05);\n// margin-bottom: 16px;\n// border-radius: 8px;\n// padding: ${({theme}) => theme.layouts.spacing.xl};\n// color: white;\n// `;\nconst SectionSelectorOption = styled.div`\n font-family: 'proxima-nova';\n font-style: normal;\n font-size: 14px;\n line-height: 110%;\n background: none;\n border-radius: 24px;\n color: white;\n background: #FFFFFF1A;\n border-radius: 8px;\n height: 32px;\n padding: 8px 12px;\n margin-bottom: 16px;\n margin-right: 8px;\n cursor: pointer;\n text-transform: capitalize;\n display: inline-block;\n ${({active}) => active && css`\n background: white;\n color: #2F3037;\n `}\n\n &:last-child {\n margin-right: 0;\n }\n`;\n\nconst VideoLessons = ({subject, content, themePalette, data, calloutText}) => {\n const [searchTerm, setSearchTerm] = useState('');\n const courseContent = content.find(({type}) => type === 'Course');\n\n const {content: lessonsArray, callouts, startingIndex} = courseContent;\n const indexPadding = startingIndex !== undefined\n ? startingIndex\n : 1;\n\n const urlParams = new URLSearchParams(window.location.search)\n const selectedSection = urlParams.get('section')\n\n const history = useHistory();\n const debouncedSearchTerm = useDebounce(searchTerm, 300);\n\n useEffect(() => {\n if (!searchTerm || !selectedSection) return;\n\n history.replace({\n pathname: window.location.pathname,\n search: `?${urlParams}`\n });\n }, [debouncedSearchTerm]);\n\n\n\n const SearchResults = useMemo(() => lessonsArray.map((item, index) => (\n \n )), [debouncedSearchTerm, data]);\n\n return (\n \n {calloutText && }\n {callouts && callouts.map((text, index) => {text})}\n setSearchTerm(e.target.value)} value={searchTerm} placeholder={`Start typing to filter the lessons`} clear={() => setSearchTerm('')}/>\n {window.location.pathname.includes('gross-anatomy') && \n {\n history.replace({\n pathname: window.location.pathname,\n search: `?section=all`\n });\n setSearchTerm('Clinical')\n }} active={searchTerm === 'Clinical'} children=\"Clinical\"/>\n {\n history.replace({\n pathname: window.location.pathname,\n search: `?section=all`\n });\n setSearchTerm('Radiology')\n }} active={searchTerm === 'Radiology'} children=\"Radiology\"/>\n }\n {SearchResults}\n \n );\n};\n\nVideoLessons.propTypes = {\n content: PropTypes.array,\n themePalette: PropTypes.object.isRequired,\n data: PropTypes.shape({}),\n};\nVideoLessons.defaultProps = {\n content: [],\n data: {},\n};\n\nexport default VideoLessons;\n","import React, {useState, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {useHistory} from 'react-router-dom';\n\nimport styled from 'styled-components';\n\nimport QBankCollectionCard from '../Cards/QBankCollection';\nimport CalloutCard from '../Cards/Callout';\nimport SearchBar from '../SearchBar';\n\nconst Container = styled.div`\n`;\n\nconst QBankCollection = ({content, themePalette, data}) => {\n const [searchTerm, setSearchTerm] = useState('');\n const urlParams = new URLSearchParams(window.location.search)\n const scrollToChapter = urlParams.get('subject');\n const selectedSection = urlParams.get('section')\n\n const history = useHistory();\n\n useEffect(() => {\n if (!searchTerm || !selectedSection) return;\n urlParams.set('section', 'all');\n history.replace({\n pathname: window.location.pathname,\n search: `?${urlParams}`\n });\n }, [searchTerm]);\n\n if (!content) return null;\n const lessonSets = content[0].content;\n\n const filteredLessonSets = lessonSets.reduce((acc, item, index) => {\n const {name, section, lessons} = item;\n\n if (lessons?.length === 0) return acc;\n if (searchTerm && !name.toLowerCase().includes(searchTerm.toLowerCase())) return acc;\n if (selectedSection && selectedSection !== 'all' && selectedSection !== section) return acc;\n\n return [\n ...acc,\n 0 && !isUpgraded}\n />\n ];\n }, []);\n\n return (\n \n setSearchTerm(e.target.value)} value={searchTerm} placeholder={`Start typing to filter the question banks`}/>\n\n {filteredLessonSets}\n\n {filteredLessonSets.length === 0 && (\n \n )}\n \n );\n};\n\nQBankCollection.propTypes = {\n content: PropTypes.array,\n themePalette: PropTypes.object.isRequired,\n data: PropTypes.shape({}),\n};\nQBankCollection.defaultProps = {\n content: [],\n data: {},\n};\n\nexport default QBankCollection;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styled from 'styled-components';\n\nimport {PageSection} from '../ClassroomContentWrapper';\nimport {DownloadButton} from '../Cards/components/Buttons';\nimport Download from '../Cards/Download';\nimport Callout from '../Cards/Callout';\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nconst Container = styled.div`\n`;\n\n\nconst Downloads = ({content, themePalette, calloutText}) => {\n const downloads = content.find(({name}) => name === 'Downloads').content;\n const urlParams = new URLSearchParams(window.location.search)\n const selectedSection = urlParams.get('section')\n const {isUpgraded, bootcamp} = useUserDataContext();\n const gatesUp = !isUpgraded && bootcamp === 'inbde';\n\n return (\n \n \n {calloutText && }\n {(gatesUp ? downloads.sort((a, b) => a.freeAccess ? -1 : 1) : downloads).filter(item => item.ignoreSections ? true : selectedSection && selectedSection !== 'all' ? item.section === selectedSection : true).map((item, index) => (\n window.open(item.route, '_blank')}\n themePalette={themePalette}\n actions={[\n \n ]}\n />\n ))}\n \n \n );\n};\n\nDownloads.propTypes = {\n content: PropTypes.array,\n themePalette: PropTypes.object.isRequired,\n data: PropTypes.shape({}),\n};\nDownloads.defaultProps = {\n content: [],\n data: {},\n};\n\nexport default Downloads;\n","import React, {useState, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {useHistory, useLocation} from 'react-router-dom';\n\nimport styled from 'styled-components';\n\nimport {PageSection} from '../ClassroomContentWrapper';\nimport {DownloadButton} from '../Cards/components/Buttons';\nimport Download from '../Cards/Download';\nimport CalloutCard from '../Cards/Callout';\nimport SearchBar from '../SearchBar';\n\nconst Container = styled.div`\n`;\n\nconst Downloads = ({content, themePalette}) => {\n const [searchTerm, setSearchTerm] = useState();\n\n const history = useHistory();\n const location = useLocation();\n\n const urlParams = new URLSearchParams(location.search);\n const selectedSection = urlParams.get('section');\n\n const filteredDownloads = content\n .find(({name}) => name === 'Downloads').content\n .filter(item => selectedSection && selectedSection !== 'all' ? item.section === selectedSection : true)\n .filter(item => searchTerm ? item.name.toLowerCase().includes(searchTerm.toLowerCase()) : true);\n\n useEffect(() => {\n if (!searchTerm || !selectedSection) return;\n urlParams.set('section', 'all');\n history.replace({\n pathname: window.location.pathname,\n search: `?${urlParams}`\n });\n }, [searchTerm]);\n\n\n return (\n \n setSearchTerm(e.target.value)} value={searchTerm} placeholder={`Start typing to filter`}/>\n\n \n {filteredDownloads.map((item, index) => (\n window.open(item.route, '_blank')}\n actions={[\n \n ]}\n />\n ))}\n {filteredDownloads.length === 0 && (\n \n )}\n \n \n );\n};\n\nDownloads.propTypes = {\n content: PropTypes.array,\n themePalette: PropTypes.object.isRequired,\n data: PropTypes.shape({}),\n};\nDownloads.defaultProps = {\n content: [],\n data: {},\n};\n\nexport default Downloads;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styled from 'styled-components';\n\nimport {PageSection} from '../ClassroomContentWrapper';\nimport {DownloadButton} from '../Cards/components/Buttons';\nimport Download from '../Cards/Download';\nimport Callout from '../Cards/Callout';\n\nimport {CircleStack} from '@styled-icons/heroicons-outline/CircleStack';\n\nconst Container = styled.div`\n`;\n\nconst StyledCollection = styled(CircleStack)`\n color: ${({theme, themePalette}) => themePalette?.default || theme.colors.neutralsPalette.lightGrey};\n width: 42px;\n height: 42px;\n padding: 6px;\n border-radius: 64px;\n background: ${({themePalette}) => themePalette?.light || '#f6f9fc'} ;\n`;\n\n\n\nconst Flashcards = ({content, themePalette, calloutText}) => {\n const flashcards = content.find(({name}) => name === 'Flashcards').content;\n return (\n \n {calloutText && }\n \n {flashcards.map((item, index) => (\n }\n themePalette={themePalette}\n description={item.description}\n onClick={() => window.open(item.route, '_blank')}\n actions={[\n \n ]}\n />\n ))}\n \n \n );\n};\n\nFlashcards.propTypes = {\n content: PropTypes.array,\n themePalette: PropTypes.object.isRequired,\n data: PropTypes.shape({}),\n};\nFlashcards.defaultProps = {\n content: [],\n data: {},\n};\n\nexport default Flashcards;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styled from 'styled-components';\n\nimport {PageSection} from '../ClassroomContentWrapper';\nimport {DownloadButton} from '../Cards/components/Buttons';\nimport Download from '../Cards/Download';\nimport Callout from '../Cards/Callout';\n\nconst Container = styled.div`\n`;\n\nconst Anki = ({content, themePalette}) => {\n const decks = content.find(({name}) => name === 'Anki').content;\n return (\n \n Anki decks? Click here to learn how to use Anki.`}/>\n \n {decks.map((item, index) => (\n window.open(item.route, '_blank')}\n actions={[\n \n ]}\n />\n ))}\n \n \n );\n};\n\nAnki.propTypes = {\n content: PropTypes.array,\n themePalette: PropTypes.object.isRequired,\n data: PropTypes.shape({}),\n};\nAnki.defaultProps = {\n content: [],\n data: {},\n};\n\nexport default Anki;\n","import React, {useEffect, useState} from 'react';\nimport PropTypes from 'prop-types';\n\nimport styled from 'styled-components';\n\nimport {PageSection} from '../ClassroomContentWrapper';\nimport {DownloadButton} from '../Cards/components/Buttons';\nimport Download from '../Cards/Download';\n\nimport API from '@aws-amplify/api';\nimport { Cache } from 'aws-amplify';\n\nconst Container = styled.div`\n`;\n\nconst Blogposts = ({subject, themePalette}) => {\n // const [loading, setLoading] = useState(true); // TODO this loading state isn't currently used\n const [blogposts, setBlogposts] = useState(Cache.getItem(`${subject}-blogposts`) || []);\n\n useEffect(() => {\n const fetch = async () => {\n try {\n const result = await API.get('webflow', '/posts', {\n 'queryStringParameters': {\n 'offset': '0',\n 'subject': subject\n }\n });\n const blogposts = result?.items?.items || [];\n setBlogposts(blogposts);\n\n if (blogposts.length > 0) {\n const expires = (new Date()).getTime() + (60 * 1000) // in a minute\n Cache.setItem(`${subject}-blogposts`, blogposts, {expires});\n }\n } catch (e) {\n console.log(e);\n } finally {\n // setLoading(false);\n }\n }\n blogposts.length === 0 && fetch();\n }, []);\n\n return (\n \n \n {blogposts.map((item, index) => (\n window.open(`https://bootcamp.com/blog/${item.slug}`, '_blank')}\n actions={[\n \n ]}\n />\n ))}\n \n \n );\n};\n\nBlogposts.propTypes = {\n content: PropTypes.array,\n themePalette: PropTypes.object.isRequired,\n data: PropTypes.shape({}),\n};\nBlogposts.defaultProps = {\n content: [],\n data: {},\n};\n\nexport default Blogposts;\n","import React from 'react';\nimport styled from 'styled-components';\nimport Chapter, {Wrapper as ChapterWrapper} from '../Cards/Chapter';\nimport Callout from '../Cards/Callout';\n\nimport {resolveIconPath} from '@bootcamp/web/src/helpers';\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nimport {BeginPracticeButton, UpgradeButton} from '../Cards/components/Buttons';\n\nconst Container = styled.div`\n`;\n\nconst Wrapper = styled.div`\n`;\nconst Card = styled(Chapter)`\n background: white;\n ${ChapterWrapper} {\n align-items: center;\n }\n`;\n\nconst Image = styled.img`\n width: 36px;\n height: 36px;\n ${({theme}) => theme.mediaQueries.mobileL} {\n width: 32px;\n height: 32px;\n }\n`;\n\nconst Generators = ({content, themePalette, calloutText}) => {\n const {isUpgraded} = useUserDataContext();\n // TODO add icons here\n return (\n \n {calloutText && }\n {content.map(({name, icon, route}, index) => {\n const hasAccess = isUpgraded || (!isUpgraded && index === 0);\n return (\n \n }\n showProgress={false}\n defaultLocked={!hasAccess}\n themePalette={themePalette}\n route={route}\n onClick={() => window.location.href = `/dat/perceptual-ability/generators/${route}`}\n actions={hasAccess ? : } />\n\n \n );\n })}\n \n );\n};\n\nGenerators.defaultProps = {};\nGenerators.propTypes = {};\n\nexport default Generators;\n","import React from 'react';\nimport styled from 'styled-components';\nimport Chapter, {Wrapper as ChapterWrapper} from '../Cards/Chapter';\nimport Callout from '../Cards/Callout';\nimport {BeginPracticeButton} from '../Cards/components/Buttons';\n\nconst Container = styled.div`\n`;\n\nconst Wrapper = styled.a`\n cursor: pointer;\n display: flex;\n transition: all 100ms ease;\n text-decoration: none;\n &:hover {\n transform: scale(1.01);\n }\n`;\nconst Card = styled(Chapter)`\n pointer-events: none;\n ${ChapterWrapper} {\n align-items: center;\n }\n`;\n\nconst Trainer = ({content, themePalette, calloutText}) => {\n return (\n \n {calloutText && }\n \n }\n />\n \n\n \n );\n};\n\nTrainer.defaultProps = {};\nTrainer.propTypes = {};\n\nexport default Trainer;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport {Link} from 'react-router-dom';\n\nimport {H2, H4, Label1, Label2} from '@bootcamp/web/src/components/Typography/next';\nimport {Heading, Blurb, BlurbText} from '@bootcamp/web/src/bootcamps/components/Performance/shared';\nimport ProgressBar from '../../../components/ProgressBar';\nimport {ChevronRight} from '@styled-icons/feather/ChevronRight';\n\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {useModalContext} from '../../../contexts/Modal';\nimport {resolveIconPath} from '@bootcamp/web/src/helpers';\nimport CreateTest from '@bootcamp/web/src/bootcamps/pages/CreateTest';\n\nimport theme from '@bootcamp/shared/src/styles/theme';\n\nimport fieldsOfDentistry from '@bootcamp/shared/src/assets/icons/inbde/fields_of_dentistry.png';\nimport oralPathology from '@bootcamp/shared/src/assets/icons/inbde/oral_pathology.png';\nimport medicine from '@bootcamp/shared/src/assets/icons/inbde/medicine.png';\nimport pharmacology from '@bootcamp/shared/src/assets/icons/inbde/pharmacology.png';\nimport patientManagement from '@bootcamp/shared/src/assets/icons/inbde/patient_management.png';\nimport anatomyPhysiology from '@bootcamp/shared/src/assets/icons/inbde/anatomy_physiology.png';\nimport research from '@bootcamp/shared/src/assets/icons/inbde/research.png';\nimport {TargetArrow} from '@styled-icons/fluentui-system-filled/TargetArrow';\n\nimport AdultHealthImg from '@bootcamp/shared/src/assets/icons/nclex/AdultHealth.png'\nimport ChildHealthImg from '@bootcamp/shared/src/assets/icons/nclex/ChildHealth.png'\nimport CriticalCareImg from '@bootcamp/shared/src/assets/icons/nclex/CriticalCare.png'\nimport FundamentalsImg from '@bootcamp/shared/src/assets/icons/nclex/Fundamentals.png'\nimport MaternalandNewbornHealthImg from '@bootcamp/shared/src/assets/icons/nclex/MaternalandNewbornHealth.png'\nimport MentalHealthImg from '@bootcamp/shared/src/assets/icons/nclex/MentalHealth.png'\nimport PharmacologyImg from '@bootcamp/shared/src/assets/icons/nclex/Pharmacology.png'\nimport ManagementofCareImg from '@bootcamp/shared/src/assets/icons/nclex/ManagementofCare.png'\n\n\nconst classroomIconsByBootcamp = {\n 'inbde': [\n fieldsOfDentistry,\n oralPathology,\n medicine,\n pharmacology,\n patientManagement,\n anatomyPhysiology,\n research,\n ],\n 'nclex': [\n AdultHealthImg,\n ChildHealthImg,\n CriticalCareImg,\n FundamentalsImg,\n MaternalandNewbornHealthImg,\n MentalHealthImg,\n PharmacologyImg,\n ManagementofCareImg\n ]\n};\n\nconst feedbackByBootcamp = {\n 'inbde': '98% of INBDE Bootcamp students who meet both targets pass the INBDE.',\n 'med-school': '98% of Med School Bootcamp students who meet both targets pass Step 1.',\n 'nclex': '99% of NCLEX Bootcamp students who meet both targets pass the NCLEX.'\n};\n\nconst Container = styled.div`\n margin-bottom: ${({theme}) => theme.layouts.spacing.xl};\n`;\nconst StyledBlurb = styled(Blurb)`\n margin-top: ${({theme}) => theme.layouts.spacing.m};\n ${BlurbText} {\n margin: 0;\n }\n`;\nconst StyledLabel = styled(H2)`\n color: white;\n`;\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 16px;\n`;\nconst OverallWrapper = styled.div`\n margin-bottom: ${({theme}) => theme.layouts.spacing.xl};\n`;\nconst CardHeader = styled.div`\n margin-bottom: ${({theme}) => theme.layouts.spacing.ms};\n`;\nconst CardTitle = styled(H4)`\n text-decoration: none;\n`;\nconst CardIconWrapper = styled.div`\n display: flex;\n align-items: center;\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n`;\nconst CardIcon = styled.img`\n width: 24px;\n height: 24px;\n`;\nconst Left = styled.div`\n display: flex;\n flex-direction: column;\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n flex: 2;\n`;\nconst BarContainer = styled.div`\n display: flex;\n gap: ${({theme}) => theme.layouts.spacing.m};\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n }\n`;\nconst BarWrapper = styled.div`\n position: relative;\n display: flex;\n flex: 1;\n flex-direction: column;\n`;\nconst BarTopLabel = styled.span`\n font-family: 'proxima-nova';\n margin-bottom: 8px;\n font-size: 16px;\n line-height: 16px;\n font-weight: 400;\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n`;\nconst BarBottomLabel = styled.div`\n display: flex;\n font-family: 'proxima-nova';\n font-size: 16px;\n line-height: 16px;\n font-weight: 400;\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n margin-top: 8px;\n`;\nconst TargetHeader = styled(Label1)`\n margin-bottom: 4px;\n`;\nconst TargetBody = styled(Label2)`\n text-align: center;\n`;\nconst Right = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n flex: 1;\n background: ${({complete, theme}) => complete ? theme.colors.interfacePalette.green.light : theme.colors.neutralsPalette.offWhite};\n align-self: center;\n border-radius: 8px;\n padding: ${({theme}) => `${theme.layouts.spacing.l} ${theme.layouts.spacing.m}`};\n font-family: 'proxima-nova';\n\n ${TargetHeader} {\n color: ${({complete, theme}) => complete ? theme.colors.interfacePalette.green.dark : theme.colors.neutralsPalette.extraDark};\n }\n\n ${TargetBody} {\n color: ${({complete, theme}) => complete ? theme.colors.interfacePalette.green.default : theme.colors.neutralsPalette.grey};\n }\n`;\nconst Chevron = styled(ChevronRight)`\n width: 24px;\n height: 24px;\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n margin: auto 0 auto ${({theme}) => theme.layouts.spacing.m};\n`;\nconst CardContainer = styled(Link)`\n cursor: pointer;\n display: flex;\n background: white;\n padding: ${({theme}) => `${theme.layouts.spacing.m} ${theme.layouts.spacing.l}`};\n border-radius: 8px;\n text-decoration: none;\n transition: all 100ms ease;\n\n ${({isOverallCard}) => !isOverallCard ? `\n &:hover {\n transform: scale(1.01);\n }\n ` : `\n cursor: default;\n `}\n\n ${CardHeader} {\n ${CardIcon} {\n display: none;\n }\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n\n ${CardIcon} {\n display: none;\n }\n\n ${Right} {\n margin-top: 24px;\n width: 100%;\n }\n\n ${BarContainer} {\n margin: 0;\n }\n\n ${CardHeader} {\n display: flex;\n align-items: center;\n\n ${CardIcon} {\n display: flex;\n margin-right: 4px;\n }\n }\n\n ${Chevron} {\n display: none;\n }\n }\n`;\n\nconst SmallCardContainer = styled(CardContainer)`\n flex: 1;\n cursor: default;\n transform: none;\n\n &:hover {\n transform: none;\n }\n\n\n ${BarTopLabel} {\n font-weight: 700;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n }\n`;\n\nconst SmallCard = ({\n name,\n barSegments,\n total,\n label,\n loading\n}) => {\n\n return (\n \n \n {name}\n \n {loading ? 'loading...' : label}\n \n }\n lightMode\n bareLabel\n loading={loading}\n withMargin={false}\n // targetNumber={targets?.averageScorePercentage}\n // targetLabel={!stillCollecting && `${targets?.averageScorePercentage}%`}\n // targetMet={!stillCollecting && scoreTargetMet}\n />\n \n \n\n );\n}\n\nconst ProgressLabel = styled(Label2)`\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n`;\nconst Numerator = styled.span`\n font-weight: bold;\n`;\nconst Denomenator = styled.span`\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n`;\n\nexport const Card = ({\n name,\n route,\n totalQuestions=463,\n mastery,\n performance,\n targets,\n index,\n masteryLoaded,\n performanceLoaded,\n icon,\n className,\n disableClick\n}) => {\n const {bootcamp} = useUserDataContext();\n\n const percentage = Math.round(((performance?.correct / performance?.attempts) || 0) * 100);\n const scoreTargetMet = percentage >= targets?.averageScorePercentage;\n const taggedQuestionTargetMet = mastery?.total >= targets?.totalTagged;\n\n // NOTE this is a little misleading b/c we track max points in attempts for nclex so 3 points on a 3 pointer = 3 attempts\n const stillCollecting = performance?.attempts < 10;\n const targetsMet = [scoreTargetMet && !stillCollecting, taggedQuestionTargetMet].filter(target => !!target).length;\n\n const targetText = targetsMet === 2\n ? \"Nice work! You've met the targets.\"\n : targetsMet === 1 && taggedQuestionTargetMet\n ? \"Try to improve your score!\"\n : targetsMet === 1 && scoreTargetMet\n ? \"You’re doing great! Keep going!\"\n : \"Just getting started. You got this!\";\n\n const {modalDispatch} = useModalContext();\n const openCreateTest = (subject, system) => modalDispatch({\n type: 'open',\n component: CreateTest,\n componentProps: {defaults: {subject, system}},\n enableClickClose: true,\n })\n const isOverallCard = name === 'Overall'\n\n return (\n bootcamp === 'nclex' && !isOverallCard ? openCreateTest(name) : null}>\n {!isOverallCard && \n \n }\n \n \n {!isOverallCard && }\n {name}\n \n \n \n Your Score\n \n {!performanceLoaded\n ? 'loading...'\n : stillCollecting\n ? answer {10 - performance?.attempts} more questions\n : <>\n {percentage}%\n \n }\n \n }\n lightMode\n bareLabel\n loading={!performanceLoaded}\n withMargin={false}\n targetNumber={targets?.averageScorePercentage}\n targetLabel={!stillCollecting && `${targets?.averageScorePercentage}%`}\n targetMet={!stillCollecting && scoreTargetMet}\n />\n \n \n Questions Tagged\n \n {!masteryLoaded\n ? 'loading...'\n : {Math.min(mastery?.total, totalQuestions) || 0} of {totalQuestions}\n }\n \n }\n lightMode\n bareLabel\n loading={!masteryLoaded}\n withMargin={false}\n targetNumber={(targets?.totalTagged / totalQuestions) * 100}\n targetLabel={targets?.totalTagged}\n targetMet={taggedQuestionTargetMet}\n />\n \n \n \n {isOverallCard && \n {targetsMet} of 2 targets met\n {targetText}\n }\n {(!isOverallCard && !disableClick) && }\n \n );\n}\n\nconst Overall = ({performanceData, educator}) => {\n const {bootcamp} = useUserDataContext();\n const feedback = feedbackByBootcamp[bootcamp];\n\n const {byClassroom: performance, overall, videos} = performanceData;\n\n const allTargets = performance.reduce((acc, record) => {\n const {targets, performance, mastery} = record;\n const percentage = Math.round(((performance?.correct / performance?.attempts) || 0) * 100);\n const scoreTargetMet = percentage >= targets?.averageScorePercentage;\n const taggedQuestionTargetMet = mastery?.total >= targets?.totalTagged;\n\n const stillCollecting = performance?.attempts < 10;\n const targetsMet = [scoreTargetMet && !stillCollecting, taggedQuestionTargetMet].filter(target => !!target).length;\n return acc + targetsMet;\n }, 0);\n\n const totalTaggedTargets = performance.reduce((acc, {targets}) => acc + targets.totalTagged, 0);\n const overallAverageScorePercentage = Math.round(performance.reduce((acc, {targets}) => acc + (targets.averageScorePercentage || 0), 0) / performance.length);\n const overallTargets = (overall.mastery.total >= totalTaggedTargets ? 1 : 0) + ((Math.round((overall.correct / overall.attempts) * 100)) >= overallAverageScorePercentage ? 1 : 0);\n\n return (\n \n \n {['med-school']?.includes(bootcamp) ? 'Step 1 - ' : ''}Pass Targets\n You've met {overallTargets} of 2 overall targets (). {feedback}} lightMode />\n \n \n \n \n {/* \n {['med-school']?.includes(bootcamp) ? 'Step 1 - ' : ''}Subject Performance\n You've met {allTargets} of {performance.length * 2} targets ().} lightMode />\n */}\n {/* \n {performance.map(Card)}\n */}\n \n );\n};\n\nOverall.defaultProps = {};\nOverall.propTypes = {};\n\nexport default Overall;","export const scoringTargets = {\n 'nclex': {\n \"Adult Health\": {\n \"Cardiovascular\": 64,\n \"Endocrine\": 57,\n \"Gastrointestinal\": 54,\n \"Hematologic\": 56,\n \"Immune/Infectious Disease\": 63,\n \"Integumentary\": 65,\n \"Multisystem\": 58,\n \"Musculoskeletal\": 61,\n \"Neurologic\": 55,\n \"Reproductive\": 46,\n \"Respiratory\": 58,\n \"Urinary and Renal\": 50,\n \"Visual and Auditory\": 60\n },\n \"Child Health\": {\n \"Cardiovascular\": 43,\n \"Endocrine\": 41,\n \"Gastrointestinal\": 47,\n \"Growth and Development\": 56,\n \"Hematologic\": 46,\n \"Immune/Infectious Disease\": 48,\n \"Integumentary\": 53,\n \"Multisystem\": 62,\n \"Musculoskeletal\": 47,\n \"Neurologic\": 57,\n \"Reproductive\": 35,\n \"Respiratory\": 55,\n \"Urinary and Renal\": 58,\n \"Visual and Auditory\": 58\n },\n \"Critical Care\": {\n \"Critical Care\": 49\n },\n \"Fundamentals\": {\n \"Fluid, electrolytes, and acid-base balance\": 57,\n \"Safety and Infection Control\": 53,\n \"Basic Care and Comfort\": 57,\n \"Nutrition and Elimination\": 55\n },\n \"Maternal & Newborn Health\": {\n \"Antepartum\": 38,\n \"Labor & Delivery\": 45,\n \"Newborn\": 46,\n \"Postpartum\": 41\n },\n \"Mental Health\": {\n \"Anxiety Disorders, Trauma, and Addiction\": 54,\n \"Cognitive and Developmental Disorders\": 50,\n \"Foundations and Therapeutic Communication\": 69,\n \"Mood and Personality Disorders\": 46\n },\n \"Pharmacology\": {\n \"Cardiovascular\": 58,\n \"Endocrine\": 58,\n \"Gastrointestinal\": 56,\n \"Hematologic/Oncologic\": 50,\n \"Immune\": 48,\n \"Integumentary\": 58,\n \"Musculoskeletal\": 55,\n \"Neurologic\": 57,\n \"Psychiatric\": 46,\n \"Reproductive\": 41,\n \"Respiratory\": 45,\n \"Urinary and Renal\": 42,\n \"Medication administration\": 61,\n \"Visual and Auditory\": 53\n },\n \"Management of Care\": {\n \"Assignment and Delegation\": 68,\n \"Management Concepts\": 61,\n \"Prioritization\": 55\n }\n },\n 'inbde': {\n \"Fields of Dentistry\": {\n \"Operative Dentistry\": 63,\n \"Pediatric Dentistry\": 62,\n \"Periodontics\": 63,\n \"Oral Surgery\": 65,\n \"Endodontics\": 65,\n \"Orthodontics\": 61,\n \"Prosthodontics\": 62,\n \"Preventive Dentistry\": 64\n },\n \"Oral Pathology and Oral Radiology\": {\n \"Oral Pathology\": 63,\n \"Oral Radiology\": 68\n },\n \"Medicine\": {\n \"Pathology\": 61,\n \"Microbiology\": 57,\n \"Developmental Disorders\": 61\n },\n \"Pharmacology\": {\n \"Anesthesia and Pain Management\": 60,\n \"Antibiotics, Antifungals, and Antivirals\": 61,\n \"Systems Pharmacology\": 56\n },\n \"Clinical Management\": {\n \"Patient Management\": 65,\n \"Practice Management\": 56,\n \"Ethics, Law, and Behavioral Science\": 71,\n \"Medical Complications\": 63\n },\n \"Anatomy and Physiology\": {\n \"Head and Neck Anatomy\": 63,\n \"Dental Anatomy and Occlusion\": 65,\n \"Temporomandibular Joint\": 58,\n \"Physiology\": 62\n },\n \"Research\": {\n \"Evidence Based Dentistry\": 62,\n \"Interpreting Graphical Data\": 61,\n \"Biostatistics\": 55,\n \"Applied Research\": 61\n },\n \"Case Sets\": {\n \"Anesthesia and Pain Management\": 78,\n \"Antibiotics, Antifungals, and Antivirals\": 87,\n \"Applied Research\": 67,\n \"Biostatistics\": 63,\n \"Clinical Management\": 68,\n \"Dental Anatomy and Occlusion\": 76,\n \"Developmental Disorders\": 66,\n \"Endodontics\": 65,\n \"Ethics, Law, and Behavioral Science\": 89,\n \"Genetics\": 78,\n \"Head and Neck Anatomy\": 67,\n \"Medical Complications\": 82,\n \"Microbiology\": 39,\n \"Operative Dentistry\": 76,\n \"Oral Pathology\": 70,\n \"Oral Radiology\": 78,\n \"Oral Surgery\": 68,\n \"Orthodontics\": 68,\n \"Pathology\": 64,\n \"Pediatric Dentistry\": 68,\n \"Periodontics\": 61,\n \"Physiology\": 76,\n \"Practice Management\": 78,\n \"Preventive Dentistry\": 72,\n \"Prosthodontics\": 72,\n \"Systems Pharmacology\": 63,\n \"Temporomandibular Joint\": 57,\n },\n \"Simulation Exam\": {\n \"Anesthesia and Pain Management\": 62,\n \"Antibiotics, Antifungals, and Antivirals\": 68,\n \"Applied Research\": 67,\n \"Biostatistics\": 63,\n \"Clinical Management\": 69,\n \"Dental Anatomy and Occlusion\": 63,\n \"Developmental Disorders\": 71,\n \"Endodontics\": 72,\n \"Ethics, Law, and Behavioral Science\": 69,\n \"Evidence Based Dentistry\": 60,\n \"Genetics\": 46,\n \"Head & Neck Anatomy\": 82,\n \"Medical Complications\": 74,\n \"Microbiology\": 76,\n \"Operative Dentistry\": 62,\n \"Oral Pathology\": 74,\n \"Oral Radiology\": 76,\n \"Oral Surgery\": 65,\n \"Orthodontics\": 65,\n \"Pathology\": 74,\n \"Pediatric Dentistry\": 60,\n \"Periodontics\": 69,\n \"Physiology\": 79,\n \"Practice Management\": 63,\n \"Preventive Dentistry\": 57,\n \"Prosthodontics\": 66,\n \"Systems Pharmacology\": 66,\n \"Temporomandibular Joint\": 57,\n }\n },\n 'med-school': {\n \"Biochemistry\": {\n \"Cellular\": 49,\n \"Laboratory Techniques\": 52,\n \"Metabolism\": 51,\n \"Molecular\": 47,\n \"Nutrition\": 57\n },\n \"Biostatistics\": {\n \"Biostatistics and Epidemiology\": 50\n },\n \"Cardiology\": {\n \"Anatomy\": 53,\n \"Pathology\": 56,\n \"Pathophysiology\": 52,\n \"Pharmacology\": 57,\n \"Physiology\": 52\n },\n \"Dermatology\": {\n \"Pathology\": 58,\n \"Pathophysiology\": 59,\n \"Pharmacology\": 41\n },\n \"Endocrinology\": {\n \"Pathology\": 61,\n \"Pathophysiology\": 53,\n \"Pharmacology\": 58,\n \"Physiology\": 60\n },\n \"Gastroenterology\": {\n \"Anatomy\": 42,\n \"Pathology\": 53,\n \"Pathophysiology\": 53,\n \"Pharmacology\": 57\n },\n \"Genetics\": {\n \"Clinical Genetics\": 56,\n \"DNA Structure, Replication, and Repair\": 46,\n \"Gene Expression and Regulation\": 50\n },\n \"Hematology & Oncology\": {\n \"Histology\": 35,\n \"Pathology\": 58,\n \"Pathophysiology\": 60,\n \"Pharmacology\": 59,\n \"Physiology\": 67\n },\n \"Immunology\": {\n \"Immunology\": 68,\n \"Pathology\": 65,\n \"Pharmacology\": 60,\n \"Pathophysiology\": 65\n },\n \"Microbiology\": {\n \"Antimicrobials\": 46,\n \"Basic Bacteriology\": 47,\n \"Clinical Bacteriology\": 53,\n \"Mycology\": 62,\n \"Parasitology\": 54,\n \"Systems\": 57,\n \"Virology\": 54\n },\n \"Musculoskeletal\": {\n \"Anatomy\": 49,\n \"Pathology\": 57,\n \"Pathophysiology\": 53,\n \"Pharmacology\": 62,\n \"Physiology\": 62\n },\n \"Nephrology\": {\n \"Histology\": 52,\n \"Pathology\": 59,\n \"Pathophysiology\": 53,\n \"Pharmacology\": 43,\n \"Physiology\": 56\n },\n \"Neurology\": {\n \"Anatomy\": 54,\n \"Pathology\": 53,\n \"Pathophysiology\": 58,\n \"Pharmacology\": 49\n },\n \"Pharmacology (Principles)\": {\n \"Pharmacokinetics and Pharmacodynamics\": 40,\n \"Toxicities and Adverse Effects\": 46\n },\n \"Psychiatry\": {\n \"Behavioral Science\": 65,\n \"Pathology\": 62,\n \"Pathophysiology\": 74,\n \"Pharmacology\": 57\n },\n \"Public Health Sciences\": {\n \"Ethics and Communications\": 60,\n \"Social Sciences\": 54\n },\n \"Pulmonology\": {\n \"Anatomy\": 64,\n \"Pathology\": 57,\n \"Pathophysiology\": 57,\n \"Pharmacology\": 64,\n \"Physiology\": 54\n },\n \"Reproduction\": {\n \"Anatomy\": 56,\n \"Pathology\": 56,\n \"Pathophysiology\": 56,\n \"Pharmacology\": 59\n }\n }\n};\n\n","import React, {useState, useRef} from 'react';\nimport styled, {css} from 'styled-components';\nimport {AutoHeightParent} from '@bootcamp/web/src/components/AutoHeightParent';\n\nimport {useHistory} from 'react-router-dom';\n\nimport {H2} from '@bootcamp/web/src/components/Typography/next';\nimport {Heading, SubTitle, Blurb, BlurbText, Table, TableRow, TableOverflowOuterWrapper, TableOverflowInnerWrapper, MasteryCountCellText, SubjectCell, TopicCell, CellIcon, BarCell, BarCellText, CellProgressBar, CellSecondary, CellText, iconMap} from '@bootcamp/web/src/bootcamps/components/Performance/shared';\nimport CreateTest from '@bootcamp/web/src/bootcamps/pages/CreateTest';\nimport {TextTooltip} from '../CreateTest/components/shared';\n\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {useModalContext} from '../../../contexts/Modal';\n\nimport {scoringTargets} from './targets'\n\nimport {slugify} from '@bootcamp/shared/src/util';\n\nimport {AddSquare} from '@styled-icons/fluentui-system-filled/AddSquare';\nimport {ReactComponent as Info} from '@bootcamp/shared/src/assets/svg/warning.svg';\n\nimport theme from '@bootcamp/shared/src/styles/theme';\n\n\nconst Container = styled.div`\n`;\nconst StyledHeading = styled(Heading)`\n padding: 0 32px;\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: ${({parentHasPadding}) => parentHasPadding ? '' : '0 16px'};\n }\n`;\nconst StyledBlurb = styled(Blurb)`\n ${BlurbText} {\n margin: 0;\n }\n`;\nconst StyledLabel = styled(H2)`\n color: white;\n`;\nconst InfoIcon = styled(Info)`\n width: 20px;\n height: 20px;\n color: ${({theme, alert}) => alert ? theme.colors.interfacePalette.red.default : theme.overlays.opacity.light._300};\n margin-right: ${({theme, alert}) => alert ? 0 : theme.layouts.spacing.m};\n`;\nconst ScoreWrapper = styled.span`\n display: flex;\n align-items: center;\n`;\nconst InfoIconWrapper = styled.span`\n position: relative;\n display: inline-block;\n width: 12px;\n height: 12px;\n border-radius: 10px;\n margin: 0px 4px;\n\n ${InfoIcon} {\n position: absolute;\n width: 16px;\n height: 16px;\n top: -2px;\n left: -3px;\n bottom: 0;\n right: 0;\n }\n`;\nconst StyledTable = styled(Table)`\n border-radius: 8px;\n overflow: hidden;\n background: white;\n\n ${TableRow} {\n svg {\n width: 16px;\n }\n }\n`;\n\nconst StyledAddSquare = styled(AddSquare)`\n width: 16px;\n height: 16px;\n color: white;\n`;\nconst StyledTopicCell = styled(TopicCell)`\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n`;\nconst RowButtonContainer = styled.div`\n width: 32px;\n height: 32px;\n display: flex;\n justify-content: center;\n align-items: center;\n background: ${({theme}) => theme.colors.brandPalette.royal.default};\n border-radius: 50%;\n cursor: pointer;\n\n &:hover {\n background: ${({theme}) => theme.colors.brandPalette.royal.hover};\n transform: translateY(-1px);\n }\n`;\n\nconst ButtonElement = ({onClick, disabled}) => {\n\n return (\n \n \n \n );\n};\n\n\nexport const AlertIcon = () => (\n \n \n \n);\n\nconst Subject = ({performanceData, educator, config, hideHeader=false, defaultExpanded=null, headerText, headerTitle, loading, parentHasPadding}) => {\n const {bootcamp} = useUserDataContext();\n const {modalDispatch} = useModalContext();\n const history = useHistory();\n const tableWrapperRef = useRef();\n\n const {byClassroom: performance, overall} = performanceData;\n\n function handleRowClick(event, subject, topic) {\n\n event.preventDefault();\n event.stopPropagation();\n\n if (['nclex', 'med-school', 'inbde'].includes(bootcamp) && !['Case Sets', 'Simulation Exam'].includes(subject)) {\n modalDispatch({\n type: 'open',\n component: CreateTest,\n componentProps: {defaults: {subject, system: topic}},\n enableClickClose: true,\n });\n } else if (bootcamp === 'inbde' && subject === 'Case Sets') {\n history.push(`/${bootcamp}/${slugify(subject)}/qbanks/case-set-1`);\n } else if (bootcamp === 'inbde' && subject === 'Simulation Exam') {\n history.push(`/${bootcamp}/${slugify(subject)}/qbanks`);\n } else {\n history.push(`/${bootcamp}/${slugify(subject)}/qbanks/${slugify(topic)}`);\n }\n }\n\n\n const rows = performance\n // .filter(({name, mastery, performance, byTopic, totalQuestions}) => !!name && !!Object.keys(byTopic || {}).length)\n .map(({name, mastery, performance, byTopic, displayTopics, totalQuestions, route}) => {\n const rawPercentage = Math.round((performance?.correct / performance?.attempts) * 100) || 0;\n const subjectPercentage = totalQuestions * (rawPercentage / 100)\n\n const subjectTargetScore = Math.round(Object.values(scoringTargets?.[bootcamp]?.[name] || {})?.reduce((acc, val) => acc + val, 0) / Object.keys((scoringTargets?.[bootcamp]?.[name] || {}))?.length);\n\n const subjectTargetTagged = Math.round(totalQuestions * .85);\n\n const subjectScoreSegments = [\n {count: subjectPercentage, color: theme.colors.brandPalette.blue.gradient},\n ];\n\n const subjectMasterySegments = [\n {count: mastery?.mastered, spacing: 0},\n {count: mastery?.reviewing, spacing: 0},\n {count: mastery?.learning, spacing: 0},\n ];\n\n const stillCollecting = (performance?.attempts || 0) < 10;\n const collectingCountdown = 10 - (performance?.attempts || 0);\n\n return {\n onClick: (event) => handleRowClick(event, name),\n parent: [\n {content: (\n \n \n {name}\n \n )},\n {content: (\n \n {stillCollecting\n ? `Answer ${collectingCountdown} more questions`\n : <>\n \n {rawPercentage}%\n \n \n \n }\n \n )},\n {content: {subjectTargetScore}%},\n {content: (\n \n \n {loading\n ? ''\n : `${mastery?.total || 0} / ${totalQuestions}`\n }\n \n \n \n )},\n {content: (\n \n {loading\n ? ''\n : `${subjectTargetTagged} / ${totalQuestions}`\n }\n \n )},\n ],\n nested: displayTopics\n // .filter(({name: topicName, performance}) => !!topicName && !!Object.keys(performance).length)\n ?.sort((a, b) => a.name?.localeCompare(b.name))\n ?.map(({name: topicName, totalQuestions}) => {\n const {performance, mastery} = Object.values(byTopic).find(({name}) => name === topicName) || {};\n const scorePercentage = Math.round((performance?.correct / performance?.attempts) * 100) || 0;\n const topicPercentage = totalQuestions * (scorePercentage / 100);\n\n const topicExists = config.find(({name: subject}) => name === subject)?.contentTypes?.find(({name}) => ['Board Style Questions'].includes(name))?.content?.[0]?.content?.find(({name}) => name === topicName);\n\n // the ternary in topicAvgScore variable is to handle missing topic targets for inbde case set and sim exams, can remove once we have those values\n const topicAvgScore = scoringTargets?.[bootcamp]?.[name?.trim()]?.[topicName?.trim()] || 0;\n const topicAvgTagged = Math.round(totalQuestions * .85);\n\n const collectionBoundary = Math.round(Math.min(10, totalQuestions * .5));\n const stillCollecting = (performance?.attempts || 0) < collectionBoundary;\n const collectingCountdown = collectionBoundary - (performance?.attempts || 0);\n\n const topicScoreSegments = [\n {count: topicPercentage, color: theme.colors.brandPalette.blue.gradient}\n ];\n\n const topicMasterySegments = [\n {count: mastery?.mastered, spacing: 0},\n {count: mastery?.reviewing, spacing: 0},\n {count: mastery?.learning, spacing: 0},\n ];\n\n // TODO figure out what to do with progress bar displays for deprecated topics\n if (bootcamp === 'med-school' && !topicExists) return {\n noHover: true,\n cells: [\n {content: ''},\n {\n content: (\n \n {topicName}\n \n ),\n disabled: true\n },\n {content: (\n \n {/* {scorePercentage}% */}\n {/* */}\n \n )},\n {content: (\n \n {/* {topicAvgScore}% */}\n \n )},\n {content: (\n \n {/* {mastery?.total} / {totalQuestions} */}\n {/* */}\n \n )},\n {content: (\n \n {/* {topicAvgTagged} / {totalQuestions} */}\n \n )},\n ]\n }\n\n return {\n onClick: (event) => handleRowClick(event, name, topicName),\n noHover: true,\n cells: [\n {content: ''},\n {\n content: (\n {topicName} {scorePercentage < 50 && !stillCollecting && }\n ),\n disabled: true\n },\n {content: (\n \n {stillCollecting\n ? `Answer ${collectingCountdown} more questions`\n : <>\n \n {scorePercentage}%\n \n \n \n }\n \n )},\n {content: {topicAvgScore}%},\n {content: (\n \n {mastery?.total|| 0} / {totalQuestions}\n \n \n )},\n {content: {topicAvgTagged} / {totalQuestions}},\n ]\n };\n })\n };\n });\n\n const headerRows = [{ content: '' }, { content: bootcamp === 'med-school' ? 'System' : 'Subject' }, { content: 'Score' }, {content: 'Target', disabled: true}, {content: 'Questions Tagged'}, {content: 'Target', disabled: true}, {content: ''}];\n\n const title = bootcamp === 'med-school'\n ? 'Step 1 - System Pass Targets'\n : 'Subject Pass Targets';\n\n const subtitleFragment = bootcamp === 'med-school'\n ? 'Increase your score in each system by focusing on subjects'\n : bootcamp === 'nclex'\n ? 'Increase your score in each subject by focusing on systems'\n : 'Increase your score in each subject by focusing on topics';\n\n return (\n \n \n {headerTitle && {headerTitle}}\n {!headerTitle && {title}}\n {subtitleFragment} marked with a red - that's where you can improve the most!\n \n \n \n \n \n // Score\n // \n // Score tracks every question attempt including reattempts.\n // \n // )},\n ]},\n ...rows\n ]}\n />\n \n \n \n \n );\n};\n\nSubject.defaultProps = {};\nSubject.propTypes = {};\n\nexport default Subject;","import React, {createContext, useEffect, useState, useCallback, useContext} from 'react';\nimport styled from 'styled-components';\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\n\nimport PageContainer, {Wrapper as PageWrapper} from '@bootcamp/web/src/bootcamps/pages/PageContainer';\n// import {H1, H2} from '@bootcamp/web/src/components/Typography';\nimport {H1, H2, Body2} from '@bootcamp/web/src/components/Typography/next';\nimport Breadcrumbs from '@bootcamp/web/src/components/NavBar/components/Breadcrumbs';\nimport {Element as FAQElement} from '@bootcamp/web/src/bootcamps/components/WebflowFAQs';\n\n\nimport Overall from './Overall';\nimport Subject from './Subject';\n\nimport {useBootcampConfigContext} from '@bootcamp/web/src/contexts/BootcampConfig';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\n\nimport {getTestsByClassroom, slugify} from '@bootcamp/shared/src/util';\nimport {useMasteryArray, useTestProgressArray} from '@bootcamp/web/src/hooks';\nimport {createTestProgressWithBlocks, createTestProgressWithBlocksAndQuestions, getTestProgressSimple, getTestProgressPerformance, getClassroomQuestionCounts, getTag, createBlockProgress, trackQuestionPerformance, getClassroomCourseBlockCounts, getNCLEXReadinessExamAndCaseStudySubjectCounts, getReadinessExamAndCaseStudySubjectCounts, getINBDESimExamAndCaseSetSubjectTopicCounts} from '@bootcamp/shared/src/requests';\nimport {formatClassroomMasteryWithTopic} from '@bootcamp/shared/src/util/formatting';\n\nimport ari from '@bootcamp/shared/src/assets/educators/ari.gif';\nimport emily from '@bootcamp/shared/src/assets/educators/emily_giddings.jpeg';\nimport anthony from '@bootcamp/shared/src/assets/images/inbde/anthony_roviso.jpeg';\n\nimport {useAsync} from '@bootcamp/web/src/hooks';\n\nimport {Chiclet} from '@bootcamp/web/src/components/UI';\nimport {PlayCircle} from '@styled-icons/fluentui-system-filled/PlayCircle';\n\nconst Container = styled(PageContainer)`\n ${PageWrapper} {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n`;\nconst ElementWrapper = styled.div`\n padding: 0px 32px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 0px 16px;\n }\n`;\n\nconst Title = styled(H1)`\n color: white;\n`;\nconst SubTitle = styled(Body2)`\n color: ${({theme}) => theme.colors.typographyPalette.transparent};\n`;\nconst StyledBreadcrumbs = styled(Breadcrumbs)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n`;\nconst FAQHeader = styled(H2)`\n color: white;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n`;\n\n\nconst educatorsByBootcamp = {\n inbde: ari,\n nclex: emily,\n 'med-school': anthony,\n};\n\nconst scorePercentageBySubjectByBootcamp = {\n 'inbde': {\n 'Fields of Dentistry': 64,\n 'Oral Pathology and Oral Radiology': 65,\n 'Medicine': 61,\n 'Pharmacology': 60,\n 'Clinical Management': 63,\n 'Anatomy and Physiology': 64,\n 'Research': 60,\n 'Case Sets': 67,\n 'Simulation Exam': 68\n },\n 'med-school': {\n 'Biochemistry': 56,\n 'Biostatistics': 56,\n 'Cardiology': 54,\n 'Dermatology': 56,\n 'Endocrinology': 58,\n 'Gastroenterology': 54,\n 'Hematology & Oncology': 64,\n 'Immunology': 65,\n 'Microbiology': 55,\n 'Musculoskeletal': 55,\n 'Nephrology': 52,\n 'Neurology': 55,\n 'Psychiatry': 60,\n 'Public Health Sciences': 58,\n 'Pharmacology (Principles)': 58,\n 'Pulmonology': 58,\n 'Reproduction': 60,\n 'Genetics': 55,\n },\n 'nclex': {\n 'Adult Health': 61,\n 'Child Health': 59,\n 'Critical Care': 59,\n 'Fundamentals': 63,\n 'Maternal & Newborn Health': 54,\n 'Mental Health': 62,\n 'Pharmacology': 60,\n 'Management of Care': 68,\n },\n 'dat': {\n\n },\n};\n\nconst faqItems = (bootcamp) => {\n switch (bootcamp) {\n case 'inbde':\n case 'med-school':\n return [\n {\n title: 'How is my score calculated?',\n text: 'Your score is calculated based on the result of every question you attempt (excluding Bites questions). You can answer each question as many times as you’d like. Every correct answer will increase your average score.'\n },\n {\n title: 'Are Bites / Video Quiz Questions counted towards my score or questions tagged?',\n text: 'Not at the moment. Bites / Video Quiz questions are meant to reinforce your understanding of concepts, but are not counted towards your score or questions tagged targets on this page.'\n },\n // {\n // title: 'How can I improve my score in each subject?',\n // text: 'Focus on strengthening weak topics, indicated by a red icon in the Topic Breakdown table, to increase your overall subject score over time.'\n // },\n // {\n // title: 'What if I meet less than 10 targets?',\n // text: 'That\\'s OK! Many students pass without meeting 10 targets. Aim to meet at least 7 targets before your INBDE.'\n // },\n {\n title: 'Can I reset my score for each subject?',\n text: 'Not at the moment. However, you can answer each question as many times as you’d like. Every correct answer will increase your average score.'\n },\n {\n title: 'Can I reset or untag my tagged questions?',\n text: \"Not at the moment. Once a question is tagged, it remains tagged. However, you can answer each question as many times as you'd like and change the tag each time.\"\n }\n ]\n case 'nclex':\n return [\n {\n title: 'How is my score calculated?',\n text: 'Your score is calculated based on the result of every question you attempt. You can answer each question as many times as you’d like. Every correct answer will increase your average score.'\n },\n // {\n // title: 'What if I meet less than 10 targets?',\n // text: 'That\\'s OK! Many students pass without meeting 10 targets. Aim to meet at least 7 .'\n // },\n {\n title: 'Can I reset my score for each subject?',\n text: 'Not at the moment. However, you can answer each question as many times as you’d like. Every correct answer will increase your average score.'\n },\n {\n title: 'Can I reset or untag my tagged questions?',\n text: \"Not at the moment. Once a question is tagged, it remains tagged. However, you can answer each question as many times as you'd like and change the tag each time.\"\n },\n {\n title: 'Are Case Studies and Readiness Exam included in my performance?',\n text: \"Yes, Case Studies and Readiness Exam scores and question tagging are included.\"\n },\n ]\n default:\n return [];\n }\n}\n\nfunction getContentIdsFromName(contentTypes, name, bootcamp) {\n try {\n switch (bootcamp) {\n case 'med-school':\n\n if (!name) return;\n\n const msbMatch = contentTypes\n .filter(({name}) => name === 'Board Style Questions')\n ?.[0]\n ?.content\n ?.[0]\n ?.content\n ?.find(({name: topicName}) => topicName === name)\n ?.id;\n\n return [msbMatch];\n\n case 'nclex':\n if (!name) return;\n\n return contentTypes\n ?.reduce((acc, curr) => {\n const contentMatch = curr?.content?.[0]?.content\n .find(({name: topicName}) => topicName === name)\n\n if (!contentMatch) return acc\n\n return [...acc, contentMatch?.id];\n\n }, []);\n case 'inbde':\n // still need to get this working for case sets & sim exam\n if (!name) return;\n\n const inbdeMatch = contentTypes\n .filter(({name}) => name === 'Question Banks')\n ?.[0]\n ?.content\n ?.[0]\n ?.content\n ?.find(({name: topicName}) => topicName === name)\n ?.id;\n\n return [inbdeMatch];\n default:\n break;\n }\n\n } catch (error) {\n console.log('error getting name');\n }\n}\n\nfunction getDisplayTopics(classroom, questionCounts, bootcamp) {\n const filter = ['nclex', 'med-school'].includes(bootcamp) ? ['Board Style Questions'] : ['Question Banks'];\n\n try {\n // for inbde case sets and sim exam we're using our topic counts objects to populate the display topics\n // so that we can get a complete list of all available topics - this is really the only way to get\n // all topics displayed because topics for these two content types aren't represented in config like\n // they are for other subjects\n if (bootcamp === 'inbde' && ['Case Sets', 'Simulation Exam'].includes(classroom.name)) {\n const auxiliaryTopicCounts = questionCounts?.auxiliaryCounts?.[classroom?.route] || {};\n const result = Object\n .entries(auxiliaryTopicCounts)\n .map(([key, count]) => ({name: key, totalQuestions: count}));\n\n return result;\n } else {\n return classroom\n ?.contentTypes\n ?.find(({name}) => filter.includes(name))\n ?.content\n ?.[0]\n ?.content\n ?.map(content => {\n const topicQuestionCount = Object.keys(questionCounts?.questionCountsByTest?.[content.id] || {}).length;\n const contentKey = content?.name;\n\n const auxiliaryTopicCounts = questionCounts?.auxiliaryCounts?.[classroom?.route]?.[contentKey] || 0;\n\n return ({\n ...content,\n totalQuestions: topicQuestionCount + auxiliaryTopicCounts\n });\n });\n }\n } catch (error) {\n return [];\n }\n}\n\n// this goes classroom by classroom, but we need to incorporate case studies into\nfunction formatPerformanceObject(config, mastery, progress, questionCounts, tags, masteryLoaded, bootcamp) {\n return config.reduce((acc, classroom, index) => {\n try {\n const {tagId, tagIds} = classroom;\n\n if (!tagId && !tagIds) throw new Error();\n\n const allTags = (tagIds ? [tagId, ...tagIds.filter(tagId => ![\n '47dc56f4-1159-45f1-8f2c-b863e3858fd4',\n 'cedc26ad-70e2-4fc7-bd4b-d89924f86e86',\n 'cb030e2b-4777-4c94-9eeb-1783a9591f1e',\n '2e707878-33ba-48f7-8e0f-79be39da176b',\n 'bfb4f691-60c1-45f1-a2c5-d9cf67e3d927',\n '1505dd17-a88a-4dde-a7bf-a3a79dfafb4d',\n 'bf8d83c5-0ce3-4902-bd38-d2aba900301a',\n '25e3bcd7-2ac8-4c89-ac33-88825924d965',\n '738b7ff7-3502-4894-8d4d-4193f939766e',\n '8f5e08ad-f30b-4a64-b0af-24b12ad97497',\n '163640c8-3e6e-450c-8edd-6935175d224f',\n '7e8f2c34-eed0-4439-a797-8fa5b141630e',\n 'e3999743-fedd-43bd-bea3-dbb9e79a28b9', // remove tagId\n '94fb101c-ee2f-4182-95d9-7c55299a0569',\n 'fe4787d2-942d-4d6f-95a9-da5a67a49bf7',\n '0843ec65-11e2-4217-a12a-f726af76b082'\n ].includes(tagId))] : [tagId]).filter((id, index) => !!id);\n\n const totalQuestions = questionCounts?.classroomQuestionCounts?.[classroom?.route];\n const classroomPerformance = allTags.reduce((acc, subjectTagId) => {\n const topicPerformance = progress?.[subjectTagId] || {};\n const masteryStats = bootcamp === 'nclex'\n ? mastery[subjectTagId]?.bySystem || {}\n : mastery[subjectTagId]?.byTopic || {}\n\n const combinedTopicKeys = Object.keys({...(topicPerformance || {}), ...(masteryStats || {})});\n\n const combinedTopicPerformance = combinedTopicKeys.reduce((acc, topicId) => {\n const topicName = tags?.[topicId]?.topic;\n const systemName = tags?.[topicId]?.system;\n\n if (topicName?.match('N/A')) return acc;\n const name = bootcamp === 'nclex' ? systemName?.replace('(N/A) ', '').replace('/', ' / ') : topicName;\n const contentIds = getContentIdsFromName(classroom.contentTypes, bootcamp === 'nclex' ? name : topicName, bootcamp);\n const totalTopicQuestions = contentIds?.reduce((acc, curr) => acc + Object.keys(questionCounts?.questionCountsByTest?.[curr] || {}).length, 0);\n\n // separate totaling of case studies and readiness exams\n const auxiliaryTopicKey = bootcamp === 'nclex' ? systemName : topicName;\n const auxiliaryTopicCounts = questionCounts?.auxiliaryCounts?.[classroom?.route]?.[auxiliaryTopicKey] || 0\n\n return {\n ...acc,\n [topicId]: {\n ...acc[topicId],\n performance: (topicPerformance[topicId] || {}),\n mastery: (masteryStats?.[topicId] || {}),\n totalQuestions: totalTopicQuestions + auxiliaryTopicCounts,\n name,\n }\n };\n }, {});\n\n const subjectPerformance = Object.values(combinedTopicPerformance).reduce((acc, curr) => ({\n ...acc,\n mastery: {\n learning: (acc?.mastery?.learning || 0) + (curr?.mastery?.learning || 0),\n reviewing: (acc?.mastery?.reviewing || 0) + (curr?.mastery?.reviewing || 0),\n mastered: (acc?.mastery?.mastered || 0) + (curr?.mastery?.mastered || 0),\n total: (acc?.mastery?.total || 0) + (curr?.mastery?.total || 0),\n bookmarked: (acc?.mastery?.bookmarked || 0) + (curr?.mastery?.bookmarked || 0),\n },\n performance: {\n correct: (acc?.performance?.correct || 0) + (curr?.performance?.correct || 0),\n attempts: (acc?.performance?.attempts || 0) + (curr?.performance?.attempts || 0),\n },\n }), {mastery: {}, performance: {}});\n\n return {\n ...acc,\n mastery: {\n learning: (acc?.mastery?.learning || 0) + (subjectPerformance?.mastery?.learning || 0),\n reviewing: (acc?.mastery?.reviewing || 0) + (subjectPerformance?.mastery?.reviewing || 0),\n mastered: (acc?.mastery?.mastered || 0) + (subjectPerformance?.mastery?.mastered || 0),\n total: (acc?.mastery?.total || 0) + (subjectPerformance?.mastery?.total || 0),\n bookmarked: (acc?.mastery?.bookmarked || 0) + (subjectPerformance?.mastery?.bookmarked || 0),\n },\n performance: {\n correct: (acc?.performance?.correct || 0) + (subjectPerformance?.performance?.correct || 0),\n attempts: (acc?.performance?.attempts || 0) + (subjectPerformance?.performance?.attempts || 0),\n },\n byTopic: {\n ...(acc?.byTopic || {}),\n ...combinedTopicPerformance\n }\n }\n }, {});\n\n return {\n ...acc,\n overall: {\n performanceLoaded: !!progress,\n masteryLoaded: masteryLoaded,\n attempts: acc.overall.attempts + (classroomPerformance?.performance?.attempts || 0),\n correct: acc.overall.correct + (classroomPerformance?.performance?.correct || 0),\n mastery: {\n learning: acc.overall.mastery.learning + (classroomPerformance?.mastery?.learning || 0),\n reviewing: acc.overall.mastery.reviewing + (classroomPerformance?.mastery?.reviewing || 0),\n mastered: acc.overall.mastery.mastered + (classroomPerformance?.mastery?.mastered || 0),\n total: acc.overall.mastery.total + (classroomPerformance?.mastery?.learning || 0) + (classroomPerformance?.mastery?.reviewing || 0) + (classroomPerformance?.mastery?.mastered || 0),\n },\n totalQuestions: acc.overall.totalQuestions + (totalQuestions || 0),\n },\n byClassroom: [\n ...acc.byClassroom,\n {\n name: classroom.name,\n route: classroom.route,\n icon: classroom.icon,\n displayTopics: getDisplayTopics(classroom, questionCounts, bootcamp),\n index,\n masteryLoaded,\n performanceLoaded: !!progress,\n totalQuestions,\n targets: {\n totalTagged: Math.round((totalQuestions * .9) || 0),\n averageScorePercentage: scorePercentageBySubjectByBootcamp[bootcamp][classroom.name],\n },\n ...classroomPerformance\n }\n ]\n }\n } catch (error) {\n // progress or mastery not loaded yet\n return {\n ...acc,\n byClassroom: [\n ...acc.byClassroom,\n {name: classroom.name, index, mastery: {}, performance: {}}\n ]\n }\n }\n }, {\n byClassroom: [],\n overall: {\n attempts: 0,\n correct: 0,\n totalQuestions: 0,\n mastery: {\n learning: 0,\n reviewing: 0,\n mastered: 0,\n total: 0\n }\n },\n });\n}\n\nasync function fetchTags(performance, callback) {\n try {\n const tagIds = performance\n .reduce((acc, curr) => ([...acc, ...Object.keys(curr?.byTopic || {})]), [])\n .filter(key => key !== 'undefined')\n .map(async key => getTag(key));\n\n const tags = await Promise.all(tagIds);\n const formattedTags = tags.reduce((acc, curr) => {\n const tag = curr?.data?.getTag;\n\n return {\n ...acc,\n [tag.id]: tag,\n }\n }, {});\n\n callback(formattedTags);\n\n } catch (error) {\n // console.log('error fetching tags', error);\n callback([]);\n }\n}\n\nexport function filterClassroomsByBootcampForPerformance(bootcamp, config, filter) {\n switch (bootcamp) {\n case 'inbde':\n return config.classrooms.filter(({route, name}) => !['review-videos'].includes(route) && (filter ? filter.includes(name) : true));\n case 'med-school':\n return config.classrooms.filter(({route}) => !['gross-anatomy', 'neuroanatomy', 'histology', 'embryology', 'high-yield-step-1-anatomy', 'pathology', 'omm'].includes(route));\n case 'nclex':\n return config.classrooms.filter(({testing, name, route}) => !testing && !['next-gen-strategy-course', 'free-questions'].includes(route));\n default:\n return config.classrooms;\n }\n}\n\nexport function filterClassroomsByBootcampForDisplay(bootcamp, config, filter) {\n switch (bootcamp) {\n case 'inbde':\n return config.classrooms.filter(({route, name}) => !['review-videos'].includes(route) && (filter ? filter.includes(name) : true));\n case 'med-school':\n return config.classrooms.filter(({route}) => !['gross-anatomy', 'neuroanatomy', 'histology', 'embryology', 'high-yield-step-1-anatomy', 'pathology', 'omm', 'osteopathy'].includes(route));\n case 'nclex':\n return config.classrooms.filter(({testing, name, route}) => !testing && !['next-gen-strategy-course', 'free-questions', 'next-gen-cases', 'next-gen-readiness-exams'].includes(route));\n default:\n return config.classrooms;\n }\n}\n\nconst subtitlesByBootcamp = {\n 'nclex': 'Performance tracks every question attempt for case studies, standalone questions, and readiness exams.',\n 'med-school': 'Performance tracks every question attempt for the Step 1 Qbank only. Bites are not included.',\n 'inbde': 'Performance tracks every question attempt for the INBDE Question Bank only. Bites are not included.',\n};\n\nconst VideoContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n padding: ${({theme}) => theme.layouts.spacing.xl};\n\n ${({theme}) => theme.mediaQueries.laptop} {\n padding: 72px 0px 0px;\n }\n ${({theme}) => theme.mediaQueries.tablet} {\n border-radius: 8px 8px 0px 0px;\n }\n`;\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n position: relative;\n background: rgb(0,0,0,.25);\n width: 100%;\n /* height: 100%; */\n max-width: 960px;\n aspect-ratio: 16 / 9;\n width: 100%;\n border-radius: 8px;\n /* overflow: hidden; */\n box-shadow: rgb(0 0 0 / 12%) 0px 8px 20px;\n /* transition: all 120ms cubic-bezier(0.175, 0.885, 0.320, 1.275); easeOutBack */\n /* transform: ${({mounted}) => mounted ? 'scale(1)' : 'scale(.95)'}; */\n iframe {\n aspect-ratio: 16 / 9;\n width: 100%;\n }\n ${({theme}) => theme.mediaQueries.tablet} {\n border-radius: 8px 8px 0px 0px;\n }\n`;\n\nconst VideoPlayer = () => (\n \n e.stopPropagation()}>\n \n \n \n)\n\nconst StyledButton = styled(Chiclet)`\n margin-bottom: 20px;\n`\n\nconst Header = styled.div`\n display: flex;\n flex-direction: column;\n margin-bottom: 32px;\n gap: 8px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n align-items: flex-start;\n margin-bottom: 0px;\n flex-direction: column;\n }\n`;\n\nexport const getFAQs = (bootcamp) => faqItems(bootcamp).map((item, index) => );\n\nconst PerformanceContext = createContext();\n\nexport const PerformanceProvider = ({children, classroomFilter}) => {\n const [testProgress, setTestProgress] = useState(null);\n const [masteryLoaded, setMasteryLoaded] = useState(false);\n const [tags, setTags] = useState(null);\n const {modalDispatch} = useModalContext();\n const {bootcamp, DEFAULT_USER_ID, isAdmin} = useUserDataContext();\n const [userId, setUserId] = useState(DEFAULT_USER_ID);\n const {config, questionCounts: questionCountsByTest} = useBootcampConfigContext();\n\n useDocumentTitle(`${config.meta.siteTitle} | Performance`);\n\n const performanceClassrooms = filterClassroomsByBootcampForPerformance(bootcamp, config, classroomFilter);\n const displayClassrooms = filterClassroomsByBootcampForDisplay(bootcamp, config, classroomFilter);\n\n // question count loading\n const testsByClassroom = getTestsByClassroom(performanceClassrooms, [], [], false, ['Question Banks', 'Board Style Questions', 'Case Studies']);\n // const coursesByClassroom = getTestsByClassroom(config?.classrooms, [], ['Course']);\n // const getCourseBlockCounts = useCallback(() => getClassroomCourseBlockCounts(bootcamp, coursesByClassroom), []);\n const getQuestionCounts = useCallback(async () => {\n try {\n const classroomQuestionCounts = await getClassroomQuestionCounts(bootcamp, testsByClassroom);\n\n if (bootcamp === 'nclex') {\n const readinessExamAndCaseSetTopicCounts = await getNCLEXReadinessExamAndCaseStudySubjectCounts();\n classroomQuestionCounts.classroomQuestionCounts = Object.keys(classroomQuestionCounts.classroomQuestionCounts).reduce((acc, key) => {\n return ({\n ...acc,\n [key]: classroomQuestionCounts.classroomQuestionCounts[key] + Object.values(readinessExamAndCaseSetTopicCounts[key] || {}).reduce((acc, curr) => acc + curr, 0)\n });\n }, {});\n\n\n classroomQuestionCounts.auxiliaryCounts = readinessExamAndCaseSetTopicCounts;\n\n } else if (bootcamp === 'inbde') {\n const simExamCaseSetTopicCounts = await getINBDESimExamAndCaseSetSubjectTopicCounts();\n classroomQuestionCounts.auxiliaryCounts = simExamCaseSetTopicCounts;\n }\n\n return classroomQuestionCounts;\n } catch (error) {\n console.log(error);\n }\n }, []);\n\n // const {value: courseBlockCounts} = useAsync(getCourseBlockCounts);\n const {value: questionCounts} = useAsync(getQuestionCounts);\n\n const classroomTestIds = Object.values(testsByClassroom).flat();\n // const classroomCourseIds = Object.values(coursesByClassroom).flat();\n\n const questionCountsByTestByClassroom = Object.keys(testsByClassroom).reduce((acc, classroomName) => {\n const testIds = testsByClassroom[classroomName];\n const classroomQuestionCounts = testIds.reduce((acc1, testId) => {\n const testQuestionCounts = Object.values(questionCountsByTest?.[testId] || {}).length;\n return acc1 + testQuestionCounts;\n }, 0);\n\n return {\n ...acc,\n classroomQuestionCounts: {\n ...acc.classroomQuestionCounts,\n [classroomName]: classroomQuestionCounts,\n }\n }\n }, {classroomQuestionCounts: {}, questionCountsByTest});\n\n // mastery loading\n const testMastery = useMasteryArray(classroomTestIds, 'test', data => formatClassroomMasteryWithTopic(data, 'test'), null, () => setMasteryLoaded(true), userId);\n // const videoLessonProgress = useTestProgressArray(classroomCourseIds, formatClassroomVideoProgress, DEFAULT_USER_ID);\n\n // const videoLessonPerformance = {\n // complete: videoLessonProgress[0],\n // total: Object.values(courseBlockCounts?.classroomCourseBlockCounts || {})?.reduce((acc, curr) => acc + curr, 0),\n // };\n\n\n const subjectMastery = classroomTestIds.reduce((acc, id) => {\n const masteryObj = testMastery?.[id];\n\n const newAcc = {...acc};\n\n const mastery = bootcamp === 'nclex'\n ? masteryObj?.bySystem || {}\n : masteryObj?.byTopic || {};\n\n Object.entries(mastery).forEach(([masteryId, topicMastery]) => {\n const subjectTagId = topicMastery?.tag?.subjectTagId;\n const masteryKey = bootcamp === 'nclex'\n ? 'bySystem'\n : 'byTopic';\n\n newAcc[subjectTagId] = {\n ...(acc[subjectTagId] || {}),\n learning: (newAcc?.[subjectTagId]?.learning || 0) + (topicMastery?.learning || 0),\n reviewing: (newAcc?.[subjectTagId]?.reviewing || 0) + (topicMastery?.reviewing || 0),\n mastered: (newAcc?.[subjectTagId]?.mastered || 0) + (topicMastery?.mastered || 0),\n total: (newAcc?.[subjectTagId]?.total || 0) + (topicMastery?.total || 0),\n [masteryKey]: {\n ...(newAcc?.[subjectTagId]?.[masteryKey] || {}),\n [masteryId]: {\n learning: (newAcc?.[subjectTagId]?.[masteryKey]?.[masteryId]?.learning || 0) + (topicMastery?.learning || 0),\n reviewing: (newAcc?.[subjectTagId]?.[masteryKey]?.[masteryId]?.reviewing || 0) + (topicMastery?.reviewing || 0),\n mastered: (newAcc?.[subjectTagId]?.[masteryKey]?.[masteryId]?.mastered || 0) + (topicMastery?.mastered || 0),\n total: (newAcc?.[subjectTagId]?.[masteryKey]?.[masteryId]?.total || 0) + (topicMastery?.total || 0),\n }\n },\n };\n });\n\n return newAcc;\n }, {});\n\n // loading flag\n const loadingPerformance = !testProgress || !masteryLoaded;\n\n // performance object formatting\n const performance = formatPerformanceObject(displayClassrooms, subjectMastery, testProgress, bootcamp === 'med-school' ? questionCountsByTestByClassroom : {...questionCounts, questionCountsByTest}, tags, masteryLoaded, bootcamp);\n // const questionCountsByTopicName = indexQuestionCountsByTopic(displayClassrooms, questionCountsByTest);\n\n useEffect(() => {\n if (loadingPerformance || tags) return;\n\n // once tags are fetched, we can set loading false\n fetchTags(performance?.byClassroom, setTags);\n }, [loadingPerformance]);\n\n useEffect(() => {\n if (userId === DEFAULT_USER_ID) return;\n setUserId(DEFAULT_USER_ID)\n }, [DEFAULT_USER_ID]);\n\n useEffect(() => {\n if (!!testProgress || !userId) return;\n\n async function init() {\n const trackingTestProgressId = `${userId}#${bootcamp}_Tracking`\n try {\n const result = await getTestProgressSimple(trackingTestProgressId);\n if (!result.data.getTestProgress.id) throw new Error('no data');\n } catch (error) {\n // THIS SHOULD ONLY RUN ONCE PER USER\n // create blockProgress for each testId in testsByClassroom object values\n let blockProgressIds = Object.values(testsByClassroom).reduce((acc, curr) => ([...acc, ...curr]), []).map(testId => `tracking#${userId}#${testId}`);\n if (bootcamp === 'nclex') {\n // need to add more testIds for nclex\n // because we condensed a bunch of tests\n blockProgressIds = [...blockProgressIds, ...[\n \"48cb0b76-23dd-483d-ad57-fcaf2aaab9cc\",\n \"81b0fbfe-a247-4b21-b86e-9a6c320c8647\",\n \"8ad8a606-ab59-4264-b0fd-fbe621476b8f\",\n \"f8e918fb-fd39-4bc8-a9ac-ddba9e30c0e9\",\n \"83586273-c651-40d9-8c05-1ee94c08fba4\",\n \"a155a0b0-4d57-4ede-8950-2f9517146db9\",\n \"383b2a45-2311-4a3e-8057-f8d2a0cb5f38\",\n \"ba7355b6-8be5-4712-802a-f54327688dbf\",\n \"e7480c0c-183a-4684-a4d5-c9a139fd3041\",\n \"0e87ce48-af62-468b-a656-e44f1848d41b\",\n \"5492fb01-749e-4c91-8cfe-a188b100d697\",\n \"b76abd5e-e4c9-42f6-b873-5045be1fde8c\",\n \"3d2af34b-3679-4985-a2f3-32ca336d94e0\",\n \"f3c0598b-b8d3-483d-bd19-840f0c230ca7\",\n \"ead2020c-0f6d-4eac-80b2-e99a8800b87c\",\n \"dae69d9e-1bd9-4862-b043-e3c805804737\",\n \"31ba7476-1f0b-4040-a40c-2e1bd09ebb41\",\n \"d54aa6d5-eb12-4fbc-bb96-54b4e90ac1e8\",\n \"7747f976-565c-4c02-b674-73ff6ba8bd9d\",\n \"83e31c24-3a1e-4d62-a6a7-04c80de65017\",\n \"dcdb8918-fda9-4a7e-8fec-68ca31ba5b9f\",\n \"bf5b9541-12f4-49d1-874e-a5a761c6ca3d\",\n \"3cebd8eb-8556-43ab-9e6c-be90dc5c2629\",\n \"7fbfe429-78c1-4950-9d4d-3e6b54a47479\",\n \"30b8a74f-62fa-46df-9daa-84f14e9a0710\",\n \"2efe2c30-c7b0-4f69-af1a-b451f6e99fe7\",\n \"7348e65a-01a2-4f50-9f3b-43c3b1bf43fb\",\n \"b1c3b1f5-5e58-498b-9293-ba0b9e7d4ed8\",\n \"c287115b-d7b7-4dd8-94bb-73a0adc7cba3\",\n \"34874ffc-ba94-4356-b34e-399d1847f6e3\",\n ].map(testId => `tracking#${userId}#${testId}`)]\n }\n const promises = blockProgressIds.map(blockProgressId => createBlockProgress(blockProgressId, trackingTestProgressId, 'null'));\n await Promise.all(promises);\n // create testProgress for trackingTestProgressId\n // now that we have a testProgress, we can consolidate and update blockProgresses for each subject#topic\n await createTestProgressWithBlocksAndQuestions(trackingTestProgressId, `null`);\n }\n\n const testProgressId = `${userId}#${bootcamp}_Performance`;\n let testProgress;\n try {\n const fetchResult = await getTestProgressPerformance(testProgressId);\n testProgress = fetchResult.data.getTestProgress;\n if (!testProgress) throw new Error('no data');\n } catch (error) {\n const createTestProgressResult = await createTestProgressWithBlocks(testProgressId, testProgressId);\n testProgress = createTestProgressResult.data.createTestProgress;\n // console.log(error)\n } finally {\n // each blockProgress in testProgress.blockProgresses.items has an ID in the format subject#topic\n // create an object such that each subject has an array of topic objects\n // each topic object should contain the parsed json status of the blockProgress, containing the properties attempts and correct\n const subjectTopics = {};\n testProgress.blockProgresses.items.forEach(blockProgress => {\n const [userId, subject, topic] = blockProgress.id.split('#');\n if (!subjectTopics[subject]) {\n subjectTopics[subject] = {};\n }\n subjectTopics[subject][topic] = JSON.parse(blockProgress.status);\n });\n setTestProgress(subjectTopics)\n }\n }\n init()\n }, [userId]);\n\n return \n}\n\nexport const usePerformance = () => useContext(PerformanceContext);\n\nconst Performance = ({history}) => {\n const {isAdmin, setTestProgress, setTags, setUserId, loadingPerformance, bootcamp, displayClassrooms, performance} = usePerformance();\n\n return (\n \n \n \n
\n {\n if (!isAdmin) return;\n setTestProgress(null);\n setTags(null)\n setUserId(window.prompt('Enter User ID to fetch'))\n }}>Performance\n {subtitlesByBootcamp[bootcamp]}\n {/* {bootcamp === 'inbde' && } onClick={() => modalDispatch({type: 'open', component: VideoPlayer, enableClickClose: true})}>Watch Tutorial} */}\n
\n \n
\n \n \n FAQs\n {getFAQs(bootcamp)}\n \n
\n );\n};\n\nconst PerformanceWrapper = ({history}) => (\n \n \n \n);\n\nexport default PerformanceWrapper;","import React from 'react';\nimport styled from 'styled-components';\n\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {PerformanceProvider, getFAQs, usePerformance} from '@bootcamp/web/src/bootcamps/pages/Performance';\nimport {H2} from '@bootcamp/web/src/components/Typography';\n\nimport Subject, {AlertIcon} from '@bootcamp/web/src/bootcamps/pages/Performance/Subject';\nimport {Card} from '@bootcamp/web/src/bootcamps/pages/Performance/Overall';\n\nconst Container = styled.div`\n`;\n\nconst StyledCard = styled(Card)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.xl};\n`;\n\nconst Header = styled(H2)`\n color: white;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n`;\n\n\nconst SubjectPerformance = ({parentHasPadding}) => {\n const {bootcamp} = useUserDataContext();\n const {performance, displayClassrooms, loadingPerformance,} = usePerformance();\n const subject = performance?.byClassroom?.[0] || {};\n\n return (\n \n
Subject Performance
\n \n \n Topics marked with a red should receive additional attention.\n \n }\n />\n
FAQs
\n {getFAQs(bootcamp)}\n
\n );\n};\n\nconst ContextWrapper = (props) => {\n return (\n \n \n \n );\n};\n\nexport default ContextWrapper;","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styled from 'styled-components';\n\nimport {PageSection} from '../ClassroomContentWrapper';\nimport {usePerformance} from '@bootcamp/web/src/bootcamps/dat/Performance';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {PerformanceChart} from '@bootcamp/web/src/bootcamps/dat/Performance/PerformanceChart';\nimport {TimeManagement} from '@bootcamp/web/src/bootcamps/dat/Performance/Time';\nimport {Subject} from '@bootcamp/web/src/bootcamps/dat/Performance/Subject';\nimport SubjectPerformance from './SubjectPerformance';\nimport {useBootcampConfigContext} from '@bootcamp/web/src/contexts/BootcampConfig';\n\n\nconst Container = styled.div`\n`;\n\nconst DATPerformance = ({subject, content, themePalette, parentHasPadding}) => {\n const {isBootcampPlusStudent, bootcamp, searchUserInteractions, DEFAULT_USER_ID, saveUserInteraction} = useUserDataContext();\n\n const {config} = useBootcampConfigContext();\n const {dataBySubject, dataByTest, fetching, subjectTopicCounts, mastery, subjectAverages} = usePerformance(isBootcampPlusStudent, config, bootcamp, searchUserInteractions, DEFAULT_USER_ID, saveUserInteraction);\n const averages = dataByTest[0].map((_, index) => {\n // transpose breakdown\n const subjectScores = dataByTest.map(test => test[index]).filter(({score}) => score !== '-');\n if (!subjectScores.length) return {content: '-'}\n const subjectAverage = subjectScores.reduce((acc, {score}) => acc + parseInt(score), 0) / subjectScores.length;\n return {content: Math.round(subjectAverage)}\n })\n\n return (\n \n \n \n
\n testSubject === subject)} expandAll parentHasPadding={parentHasPadding} />\n testSubject == subject)}\n expandAll={false}\n subjectTopicCounts={subjectTopicCounts}\n mastery={mastery}\n subjectAverages={subjectAverages}\n subjectFilter={[subject]}\n parentHasPadding={parentHasPadding}\n />\n \n \n );\n};\n\nconst Wrapper = props => {\n const {bootcamp} = useUserDataContext();\n const Component = bootcamp === 'inbde' ? SubjectPerformance : DATPerformance;\n return ;\n};\n\nWrapper.propTypes = {\n};\nWrapper.defaultProps = {\n};\n\nexport default Wrapper;\n","import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\n\n// TODO add more content types here as needed\nimport QuestionBanks from './QuestionBanks';\nimport PracticalExams from './PracticalExams';\nimport PracticeTests from './PracticeTests';\nimport VideoLessons from './VideoLessons';\nimport QBankCollection from './QBankCollection';\nimport Downloads from './Downloads';\nimport SearchableDownloads from './SearchableDownloads';\nimport Flashcards from './Flashcards';\nimport Anki from './Anki';\nimport Blogposts from './Blogposts';\nimport Generators from './Generators';\nimport Trainer from './Trainer';\nimport Performance from './Performance';\n\n\nconst ContentTypes = ({subject, config, themePalette, overviewData, calloutText}) => {\n const {route} = config;\n const Content = {\n 'qbanks': QuestionBanks,\n 'generators': Generators,\n 'board-banks': QuestionBanks,\n 'identify-structures': QBankCollection,\n 'lecture-style-questions': QBankCollection,\n 'qbank-collection': QBankCollection,\n 'lectures': QuestionBanks,\n 'practicals': PracticalExams,\n 'bites': QuestionBanks,\n 'bio-bites': QuestionBanks,\n 'plus-packs': QuestionBanks,\n 'plus-tests': PracticeTests,\n 'practice-tests': PracticeTests,\n 'videos': VideoLessons,\n 'rbites': QuestionBanks,\n 'downloads': Downloads,\n 'notes': Downloads,\n 'bio-notes': Downloads,\n 'atlas': SearchableDownloads,\n 'flashcards': Flashcards,\n 'anki': Anki,\n 'strategy': Blogposts,\n 'review-videos': VideoLessons,\n 'resources': Downloads,\n 'reference': Downloads,\n 'guide': Downloads,\n 'blog': Blogposts,\n 'trainer': Trainer,\n 'performance': Performance,\n }[route];\n\n return useMemo(() => , [overviewData, route])\n}\n\nContentTypes.propTypes = {\n config: PropTypes.shape({\n content: PropTypes.array,\n route: PropTypes.string,\n }).isRequired,\n themePalette: PropTypes.shape({}).isRequired,\n overviewData: PropTypes.shape({}),\n};\nContentTypes.defaultProps = {\n};\n\nexport default ContentTypes;\n","import React, {useState, useEffect, useCallback} from 'react';\nimport {Redirect} from 'react-router-dom';\nimport {Helmet} from 'react-helmet';\n\nimport styled, {css} from 'styled-components';\n\nimport {useContentTypeProgress} from '../../api/progress/contentType';\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\n\nimport Breadcrumbs from '../../../components/NavBar/components/Breadcrumbs';\nimport Overview from '../../components/Cards/Overview';\nimport PageTabs from '../../components/PageTabs';\nimport ContentTypes from '../../components/ContentTypes';\nimport {Row} from '../../../components/Grid';\nimport Container, {resetScrollPosition} from '../PageContainer';\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {getTestBlockConnections, parseVideoDuration, findByRenderType, getTestsByClassroom} from '@bootcamp/shared/src/util';\nimport {getClassroomQuestionCounts, getClassroomCourseBlockCounts} from '@bootcamp/shared/src/requests';\nimport {useAsync} from '@bootcamp/web/src/hooks';\nimport Storage from '@aws-amplify/storage';\n\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n border: none;\n\n ${({theme}) => theme.mediaQueries.laptop} {\n padding-left: 0;\n }\n`;\nconst StyledOverview = styled(Overview)`\n margin-bottom: 8px;\n background: none;\n border: none;\n box-shadow: none;\n padding: 0px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-bottom: 0px;\n }\n`;\nconst StyledBreadcrumbs = styled(Breadcrumbs)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n`;\nconst SectionSelectorContainer = styled(Row)`\n flex-wrap: wrap;\n`;\nconst SectionSelectorOption = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n font-family: 'proxima-nova';\n font-style: normal;\n font-size: 16px;\n line-height: 16px;\n background: #FFFFFF1A;\n border-radius: 8px;\n color: white;\n height: 42px;\n padding: 12px 16px;\n margin-bottom: 16px;\n margin-right: 16px;\n cursor: pointer;\n text-transform: capitalize;\n\n ${({active}) => active && css`\n background: white;\n color: #2F3037;\n `}\n\n &:last-child {\n margin-right: 0;\n }\n`;\nfunction getDuration(testBlock) {\n try {\n const json = findByRenderType(testBlock.components, 'video');\n const rawDuration = JSON.parse(json).duration;\n return parseVideoDuration(rawDuration);\n\n } catch (error) {\n return '';\n }\n}\n\nconst Classroom = ({match, history, location}) => {\n const {userModel, interactions, saveUserInteraction, loading, isAdmin, isUpgraded, isBootcampPlusStudent} = useUserDataContext();\n\n const activeMembershipGroups = userModel?.memberships?.items?.reduce((acc, membership) => (\n membership.status === 'active' ? [...acc, ...membership.groups] : acc\n ), []) || [];\n\n const {bootcamp, classroom, contentType} = match.params;\n\n const {config} = useBootcampConfigContext();\n\n const [activeTab, setActiveTab] = useState(contentType);\n const {name, contentTypes: unfilteredContentTypes, themePalette, classroomDescription, educators, contentSections, route} = config.classrooms.find(configClassroom => configClassroom.route === classroom);\n // only show contentTypes that are allowed based on user\n const extendedContentTypes = ['dat', 'inbde'].includes(bootcamp) && !['application-services', 'review-videos'].includes(route)\n ? [...unfilteredContentTypes, {name: 'Performance', route: 'performance'}]\n : unfilteredContentTypes;\n\n const contentTypes = extendedContentTypes.filter(({allow}) => !allow || allow?.some(group => activeMembershipGroups.includes(group)) || isAdmin);\n\n const urlParams = new URLSearchParams(location.search);\n const selectedSubject = urlParams.get('subject');\n\n const selectedSection = contentSections && !selectedSubject ? urlParams.get('section') : 'all';\n\n // TODO since we are loading data here in the overview, we can passs progress data to PTP and QB cards to prevent additional fetches\n const contentTypeConfig = contentTypes.find(type => type.route && (type.route === activeTab)) || contentTypes?.[0];\n const overviewData = useContentTypeProgress(contentTypeConfig, selectedSection)[`${contentTypeConfig.route}-${selectedSection}`];\n\n const hasProgress = overviewData?.progress\n ? !!Object.values(overviewData?.progress?.all).find(value => !!value)\n : overviewData?.qbankCollectionData\n ? !!Object.values(overviewData?.qbankCollectionData).find(value => !!value?.mastery?.length)\n : null;\n\n // sum the duration of each video lesson\n const {value: duration} = useAsync(useCallback(async () => {\n try {\n if (duration) return duration;\n const result = await Storage.get(`json/${bootcamp}/videoDurations/${classroom}-duration.json`, {download: true});\n // if result is over 7 days old, refetch\n if ((!result || result.lastModified < Date.now() - 604800000) && contentType === 'videos') {\n console.log('Refetch')\n throw new Error('Refetch');\n }\n return JSON.parse(await result.Body.text());\n } catch (e) {\n if (!overviewData?.videoLessonData) return '';\n const testBlocks = Object.values(overviewData?.videoLessonData || {})?.reduce((acc, {test}) => [...acc, ...getTestBlockConnections(test).map(({testBlock}) => testBlock)], []);\n\n const totalDuration = testBlocks.reduce((acc, testBlock) => {\n const duration = getDuration(testBlock);\n if (!duration) return acc;\n // duration is a timestamp in the form \"HH:MM:SS\"\n // timestamp could also be in the form \"MM:SS\"\n // parse and sum the total duration in seconds\n const durationSplit = duration.split(':').map(Number);\n if (durationSplit.length === 2) {\n const [minutes, seconds] = durationSplit.map(Number);\n return acc + minutes * 60 + seconds;\n } else if (durationSplit.length === 3) {\n const [hours, minutes, seconds] = durationSplit.map(Number);\n return acc + hours * 3600 + minutes * 60 + seconds;\n }\n }, 0);\n // format totalDuration in the form \"Hh Mm Sss\"\n const hours = Math.floor(totalDuration / 3600);\n const minutes = Math.floor((totalDuration % 3600) / 60);\n const duration = `${hours ? `${hours}h ` : ''}${minutes ? `${minutes}m ` : ''}`;\n await Storage.put(`json/${bootcamp}/videoDurations/${classroom}-duration.json`, JSON.stringify(duration), {contentType: 'application/json'});\n return duration;\n }\n }, [overviewData]));\n\n const coursesByClassroom = getTestsByClassroom(config?.classrooms, [], ['Course']);\n const {value: questionCounts} = useAsync(useCallback(() => getClassroomQuestionCounts(bootcamp, [], isBootcampPlusStudent && ['dat', 'oat'].includes(bootcamp)), []));\n const {value: courseCounts} = useAsync(useCallback(() => getClassroomCourseBlockCounts(bootcamp, coursesByClassroom), []));\n useEffect(() => {\n if (!contentType) return;\n\n setActiveTab(contentType);\n resetScrollPosition();\n\n if (contentSections && !selectedSection && !selectedSubject && !loading) {\n const defaultDestination = interactions.find(({id}) => id.match(`${route}-classroom-section`))?.value || 'all';\n history.replace({\n pathname: location.pathname,\n search: `?section=${encodeURIComponent(defaultDestination)}`\n });\n }\n }, [contentType, loading]);\n\n // TODO redirect here when there is no content type match from config\n if (!contentTypeConfig.route) return ;\n if (!contentTypes.find(type => type.route && (type.route === contentType))) return ;\n\n const SectionSelector = ({contentSections}) => {\n if (!contentSections || contentType === 'practicals' || contentType === 'reference' || (name === 'Microbiology' && contentType != 'videos')) return null;\n const sectionClickHandler = sectionTitle => {\n const isDeselecting = selectedSection === sectionTitle;\n if (!isDeselecting) {\n saveUserInteraction(`${route}-classroom-section`, sectionTitle);\n }\n return history.replace({\n pathname: location.pathname,\n search: `?section=${isDeselecting ? 'all' : encodeURIComponent(sectionTitle)}`\n });\n };\n return (\n \n {['all', ...contentSections].map(contentSectionTitle => sectionClickHandler(contentSectionTitle)}>{contentSectionTitle})}\n \n )\n };\n\n return (\n \n \n {config.meta.siteTitle} | {name}\n \n \n \n \n route === 'videos')}\n duration={duration}\n showingCourseCount={courseCounts?.classroomCourseBlockCounts?.[classroom] > 0}\n courseCount={courseCounts?.classroomCourseBlockCounts?.[classroom]}\n showingTotalQuestionCount={questionCounts?.classroomQuestionCounts?.[classroom] > 0}\n totalQuestionCount={questionCounts?.classroomQuestionCounts?.[classroom]}\n />\n \n \n \n \n \n );\n}\n\nClassroom.propTypes = {};\nClassroom.defaultProps = {};\n\nexport default Classroom;\n","import React from 'react';\nimport {Link} from 'react-router-dom';\n\nimport {IconButton} from '../../../components/Branding/Buttons';\nimport {H2, Label3} from '../../../components/Typography';\n\nimport {ArrowRight} from '@styled-icons/heroicons-outline/ArrowRight';\n\nimport styled, {css} from 'styled-components';\n\n\nconst Background = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n`;\nconst Button = styled(IconButton).attrs(props => ({size: 8}))`\n width: 56px;\n height: 56px;\n min-width: 56px;\n box-shadow: none;\n background: ${({theme}) => theme.overlays.opacity.light._100};\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n padding: 0px;\n transition: all 100ms ease;\n\n &:hover {\n box-shadow: none;\n background: ${({theme}) => theme.overlays.opacity.light._200};\n }\n`;\n\nconst Container = styled(Link)`\n flex: 1;\n color: white;\n border-radius: 8px;\n margin-right: ${({theme}) => theme.layouts.spacing.xl};\n position: relative;\n overflow: hidden;\n text-decoration: none;\n transition: all 100ms ease;\n\n ${Background} {\n opacity: ${({active}) => active ? 0.15 : 1};\n background: ${({backgroundColor, theme, active}) => active ? backgroundColor : theme.colors.special.naturalDark};\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-bottom: ${({theme}) => `${theme.layouts.spacing.m}`};\n margin-right: 0;\n }\n\n &:hover {\n transform: scale(1.01);\n box-shadow: ${({theme}) => theme.elevation.shadow.high};\n\n ${Button} {\n box-shadow: none;\n background: ${({theme}) => theme.overlays.opacity.light._200};\n }\n }\n\n &:last-child {\n margin: 0;\n }\n\n ${({active}) => !active && css`\n cursor: default;\n box-shadow: ${({theme}) => theme.elevation.inner.medium};\n &:hover {\n transform: scale(1);\n box-shadow: ${({theme}) => theme.elevation.inner.medium};\n }\n `}\n`;\nconst Wrapper = styled.div`\n margin: 1px;\n padding: ${({theme}) => theme.layouts.spacing.l};\n border-radius: 8px;\n\n ${({theme}) => theme.mediaQueries.laptop} {\n padding: ${({theme}) => `${theme.layouts.spacing.l}`};\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: ${({theme}) => `${theme.layouts.spacing.l} ${theme.layouts.spacing.xl}`};\n }\n`;\nconst Bottom = styled.div`\n display: flex;\n flex-direction: column;\n`;\nconst TextWrapper = styled.div`\n margin-right: auto;\n align-self: center;\n`;\nconst Text = styled(Label3)`\n color: ${({theme}) => theme.overlays.opacity.light._400};\n font-weight: ${({theme}) => theme.font.weight.semibold};\n text-transform: uppercase;\n`;\nconst SubText = styled(H2)`\n color: ${({theme}) => theme.overlays.opacity.light._500};\n`;\nconst Top = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n margin-bottom: ${({theme}) => theme.layouts.spacing.xl};\n\n ${({textLayout}) => textLayout === 'row' && css`\n margin-bottom: 0;\n\n ${TextWrapper} {\n margin-left: ${({theme}) => theme.layouts.spacing.l};\n }\n `}\n\n ${({theme}) => theme.mediaQueries.laptop} {\n /* flex-direction: column; */\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: row;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\n\nconst Generic = ({className, icon, linkTo, active, color, backgroundColor, text, subText, textLayout='column', useAnchor=false}) => {\n const containerProps = useAnchor ? {href: active && linkTo} : {to: active && linkTo}\n return (\n \n \n \n \n {icon}\n {textLayout === 'row' &&\n \n {subText}\n {text}\n \n }\n {active && (\n \n )}\n \n {textLayout === 'column' &&\n \n {/*!!progress\n ? Review {progress} questions\n : (\n \n Once you tag questions as {deSlugify(level)} you can study them here.\n \n )\n */}\n \n {text}\n {subText}\n \n \n }\n \n \n );\n}\n\nGeneric.defaultProps = {};\nGeneric.propTypes = {};\n\nexport default Generic;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport NewReviewingMasteryIcon from '@bootcamp/shared/src/assets/icons/MasteryIcon/reviewing-new.svg';\nimport NewLearningMasteryIcon from '@bootcamp/shared/src/assets/icons/MasteryIcon/learning-new.svg';\nimport NewMasteredMasteryIcon from '@bootcamp/shared/src/assets/icons/MasteryIcon/mastered-new.svg';\nimport UntaggedMasteryIcon from '@bootcamp/shared/src/assets/icons/MasteryIcon/untagged.svg';\nimport {Tag} from '@styled-icons/feather/Tag';\nimport {Bookmark} from '@styled-icons/feather/Bookmark';\n\nimport SquaredReviewingMasteryIcon from '@bootcamp/shared/src/assets/icons/SquaredMasteryIcon/MasteryIcon/reviewing.png';\nimport SquaredLearningMasteryIcon from '@bootcamp/shared/src/assets/icons/SquaredMasteryIcon/MasteryIcon/learning.png';\nimport SquaredMasteredMasteryIcon from '@bootcamp/shared/src/assets/icons/SquaredMasteryIcon/MasteryIcon/mastered.png';\nimport SquaredUntaggedMasteryIcon from '@bootcamp/shared/src/assets/icons/SquaredMasteryIcon/MasteryIcon/untagged.png';\nimport SquaredUntaggedSelectedMasteryIcon from '@bootcamp/shared/src/assets/icons/SquaredMasteryIcon/MasteryIcon/untagged-selected.png';\nimport SquaredBookmarkedMasteryIcon from '@bootcamp/shared/src/assets/icons/SquaredMasteryIcon/MasteryIcon/bookmarked.png';\n\nconst masteryLevelToIcon = {\n learning: NewLearningMasteryIcon,\n reviewing: NewReviewingMasteryIcon,\n mastered: NewMasteredMasteryIcon,\n untagged: UntaggedMasteryIcon,\n bookmarked: Bookmark,\n}\n\nconst squaredMasteryLevelToIcon = {\n learning: SquaredLearningMasteryIcon,\n reviewing: SquaredReviewingMasteryIcon,\n mastered: SquaredMasteredMasteryIcon,\n untagged: SquaredUntaggedMasteryIcon,\n none: SquaredUntaggedMasteryIcon,\n untaggedSelected: SquaredUntaggedSelectedMasteryIcon,\n marked: SquaredBookmarkedMasteryIcon,\n}\n\nconst MasteryIconWrapper = styled.img`\n width: 64px;\n height: 64px;\n`;\n\nconst BareIcon = styled.div`\n display: flex;\n background: linear-gradient(180deg, rgba(255, 255, 255, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);\n min-width: 64px;\n height: 64px;\n padding: 4px;\n border-radius: 100px;\n overflow: hidden;\n margin-right: 10px;\n`;\nconst BareIconWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);\n color: white;\n background: ${({theme, color}) => color || theme.colors.brandPalette.royal.gradient};\n border-radius: 100px;\n width: 100%;\n height: 100%;\n\n svg {\n width: 28px;\n }\n`;\n\nconst MasteryIcon = ({color, className, level, squared}) => {\n const icon = squared\n ? squaredMasteryLevelToIcon[level]\n : masteryLevelToIcon[level];\n\n return level === 'all'\n ? \n \n \n \n \n : level === 'bookmarked'\n ? \n \n \n \n \n : \n};\n\nMasteryIcon.defaultProps = {\n level: 'mastered',\n squared: false\n};\nMasteryIcon.propTypes = {};\n\nexport default MasteryIcon;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport Chapter from '@bootcamp/web/src/bootcamps/components/Cards/Chapter'\nimport {H4} from '../../../components/Typography';\nimport Generic from '../Cards/Generic';\nimport TagIcon from '../MasteryIcon';\nimport CreateTestButton from '@bootcamp/web/src/bootcamps/pages/CreateTest/components/CreateTestButton';\n\nimport {Tag} from '@styled-icons/fluentui-system-filled/Tag';\nimport {Bookmark} from '@styled-icons/fluentui-system-filled/Bookmark'\n\nimport {capitalize} from '@bootcamp/shared/src/util';\n\n\nconst Card = styled(Generic)`\n display: block;\n margin-right: 24px;\n &:last-child {\n margin-right: 0px;\n }\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-right: 0;\n }\n`;\n\nconst InactiveText = styled(H4)`\n color: ${({theme}) => theme.overlays.opacity.light._500};\n font-weight: 500;\n\n span {\n color: ${({color}) => color};\n }\n`;\nconst StyledChapterCard = styled(Chapter)`\n cursor: ${({disabled}) => disabled ? 'not-allowed' : 'pointer'};\n`;\nconst TagContainer = styled.div`\n margin: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n background: ${({color}) => color};\n color: white;\n padding: 4px;\n border-radius: 6px;\n`;\n\nconst MasteryCard = ({color, backgroundColor, level, count, activeFilter, bootcamp, textLayout, linkTo, datStyling}) => {\n return (\n }\n text={count\n ? `${count} Question${count === 1 ? '' : 's'}`\n : Once you tag questions as {capitalize(level)} you can study them here.\n }\n subText={!!count && capitalize(level)}\n linkTo={linkTo}\n textLayout={textLayout}\n useAnchor={datStyling}\n />\n );\n}\n\nexport const NCLEXMasteryCard = ({\n color,\n level,\n count,\n questionCount,\n onClick,\n}) => {\n\n const buttonProps = !count\n ? {disabled: true, children: 'No Questions', IconComponent: null}\n : {}\n\n return (\n \n {level === 'bookmarked' ? : }\n \n }\n questionCount={questionCount}\n progressSegments={[{count, color}]}\n showProgress\n actions={[]}\n rawRoute\n disabled={!count}\n onClick={!!count ? onClick : () => {}}\n />\n );\n}\n\nMasteryCard.defaultProps = {};\nMasteryCard.propTypes = {};\n\nexport default MasteryCard;\n","import React, {useState, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nimport {H2} from '../../../components/Typography';\nimport Select, {TopicSelect} from './Select';\nimport MasteryCard from './Card';\n\nimport styled, {css} from 'styled-components';\nimport {colors} from '@bootcamp/shared/src/styles/theme';\n\nconst Container = styled.div`\n margin-bottom: ${({theme}) => theme.layouts.spacing.xxl};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.xl};\n }\n\n ${({datStyling}) => datStyling && css`\n width: 100%;\n margin-bottom: 0;\n `}\n`;\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: row;\n width: 100%;\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n }\n\n ${({datStyling}) => datStyling && css`\n padding: 1.167%;\n `}\n\n`;\nconst Header = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n margin-bottom: ${({theme}) => theme.layouts.spacing.xl};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n align-items: flex-start;\n flex-direction: column;\n }\n\n ${({datStyling}) => datStyling && css`\n margin: 0em 0em 1em;\n `}\n`;\nconst Title = styled(H2)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n }\n\n ${({datStyling}) => datStyling && css`\n font: 600 24px 'proxima-nova', sans-serif;\n text-shadow: 0 1px 1px rgb(0 0 0 / 10%);\n `}\n`;\nconst SelectWrapper = styled.div`\n display: flex;\n gap: 8px;\n`;\n\nfunction defaultFormatCardLink(baseUrl, subjectRoute, masteryLevel) {\n return subjectRoute\n ? `${baseUrl}/${subjectRoute}/tagged-questions/${masteryLevel}`\n : `${baseUrl}/tagged-questions/${masteryLevel}`;\n}\n\n\n\nconst MasteryReview = ({config, loading, inRouter, match, baseUrl, formatCardLink, datStyling, title}) => {\n const {bootcamp} = useUserDataContext();\n const [filter, setFilter] = useState(null);\n\n const masteryLevelProgress = useMemo(() => config.reduce((acc, {name, progress}) => {\n const shouldFilter = filter && filter !== 'all' && filter !== name;\n\n if (!name || !progress || shouldFilter) return acc;\n\n return {\n learning: acc.learning + (progress.learning || 0),\n reviewing: acc.reviewing + (progress.reviewing || 0),\n mastered: acc.mastered + (progress.mastered || 0),\n bookmarked: acc.bookmarked + (progress.bookmarked || 0),\n total: acc.total + (progress.total || 0),\n }\n }, {\n learning: 0,\n reviewing: 0,\n mastered: 0,\n bookmarked: 0,\n total: 10,\n }),\n [config, filter]\n );\n\n const activeClassroomFilter = filter !== 'all' ? config.find(({name}) => name === filter) : null;\n\n return (\n \n
\n Tagged Questions\n \n {activeClassroomFilter && !loading &&\n \n }\n \n
\n \n \n \n \n \n \n
\n );\n};\n\nMasteryReview.defaultProps = {\n loading: true,\n inRouter: true,\n baseUrl: 'home',\n formatCardLink: defaultFormatCardLink,\n datStyling: false,\n title: 'Review Banks',\n};\n\nMasteryReviewWithTopic.defaultProps = {\n loading: true,\n inRouter: true,\n baseUrl: 'home',\n formatCardLink: defaultFormatCardLink,\n datStyling: false,\n title: 'Review Banks',\n};\n\nMasteryReview.propTypes = {\n progress: PropTypes.shape({}),\n loading: PropTypes.bool,\n inRouter: PropTypes.bool,\n baseUrl: PropTypes.string,\n formatCardLink: PropTypes.func,\n datStyling: PropTypes.bool,\n title: PropTypes.string,\n};\n\nexport default MasteryReview;\n","import React, {useState, useEffect} from 'react';\n\nimport {ChevronRight} from '@styled-icons/feather/ChevronRight';\nimport {H1, H3, Body3} from '../../components/Typography';\nimport {Label3} from '../../components/Typography/next';\nimport {Column, Row} from '../../components/Grid';\nimport {ProfilePicture} from '../pages/AccountPage/components/Cards/PersonalDetails';\nimport {CalendarLtr} from '@styled-icons/fluentui-system-filled/CalendarLtr';\n\nimport {Tooltip} from 'react-tooltip';\nimport {IntercomAPI} from 'react-intercom';\n\nimport styled, {css} from 'styled-components';\n\nimport {useUserDataContext} from '../../contexts/UserData';\nimport {getStreakDetails} from '@bootcamp/shared/src/util';\nimport {LocalFireDepartment} from '@styled-icons/material/LocalFireDepartment';\nimport {CheckmarkOutline} from '@styled-icons/evaicons-outline/CheckmarkOutline';\nimport {getUnixTimestamp, findStartAndEndDates} from '@bootcamp/shared/src/util';\nimport moment from 'moment';\nimport {ReactComponent as Badge} from '@bootcamp/shared/src/assets/svg/badge.svg';\nimport {useHistory} from 'react-router-dom';\n\nconst Title = styled(H1)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n margin-bottom: 8px;\n`;\n\nconst Container = styled.div`\n display: flex;\n column-gap: 16px;\n row-gap: 16px;\n margin-bottom: 32px;\n width: 100%;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n display: flex;\n flex-direction: column;\n padding: 0;\n border-radius: 8px;\n margin-bottom: ${({theme}) => theme.layouts.spacing.xl};\n }\n`;\nconst Wrapper = styled.div`\n`;\nconst PillWrapper = styled.div`\n display: flex;\n flex-direction: row;\n gap: 8px;\n`;\nconst AvatarImage = styled.img`\n width: 100%;\n height: 100%;\n border-radius: 40px;\n`;\nconst StyledDefaultProfilePicture = styled(ProfilePicture)`\n`;\nconst CardContainer = styled.a`\n display: flex;\n align-items: center;\n background: ${({theme}) => theme.colors.special.pearl};\n padding: ${({theme}) => theme.layouts.spacing.ms} ${({theme}) => theme.layouts.spacing.m};\n width: 100%;\n border-radius: 8px;\n text-decoration: none;\n cursor: pointer;\n box-shadow: ${({theme}) => theme.elevation.shadow.medium};\n transition: all 100ms ease;\n cursor: pointer;\n\n &:hover {\n transform: scale(1.01);\n box-shadow: ${({theme}) => theme.elevation.shadow.high};\n }\n\n\n ${({complete}) => complete && css`\n background: transparent;\n border: 1px solid ${({theme}) => theme.overlays.opacity.light._200};\n box-shadow: none;\n &:hover {\n transform: scale(1);\n background: ${({theme}) => theme.overlays.opacity.light._50};\n box-shadow: none;\n }\n\n ${IconText} {\n color: white;\n }\n ${TextWrapper} {\n display: none;\n }\n `}\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: 0px;\n box-shadow: none;\n }\n\n`;\nconst ContentWrapper = styled.div`\n margin-left: ${({theme}) => theme.layouts.spacing.s};\n display: flex;\n align-items: flex-start;\n flex-direction: column;\n`;\nconst StyledIcon = styled.svg`\n width: 24px;\n height: 24px;\n min-width: 24px;\n fill: ${({theme, themeColor}) => themeColor ? theme.colors.brandPalette[themeColor].dark : theme.colors.neutralsPalette.extraDark};\n`;\nconst IconText = styled(H3)`\n`;\nconst TextWrapper = styled(Body3)`\n color: #86858E;\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n\n\n ${({theme}) => theme.mediaQueries.tablet} {\n display: none;\n }\n`;\nconst Arrow = styled(ChevronRight).attrs(props => ({size: 24}))`\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n margin-left: auto;\n`;\n\nconst Checkmark = styled(CheckmarkOutline).attrs(props => ({size: 24}))`\n color: white;\n margin-left: auto;\n`;\n\nconst BadgeIcon = styled(Badge).attrs(props => ({size: 24}))`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n margin-right: 8px;\n height: 16px;\n width: 16px;\n path {\n fill: white;\n }\n\n`;\n\nconst Pill = styled(Label3)`\n background: ${({theme}) => theme.overlays.opacity.light._100};\n padding: 8px 12px;\n height: 32px;\n border-radius: 100px;\n color: ${({theme}) => theme.overlays.opacity.light._500};\n display: flex;\n align-items: center;\n transition: all 100ms ease 0s;\n cursor: pointer;\n\n &:hover {\n background: rgba(255,255,255,.2);\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 8px 16px;\n }\n`;\n\nconst TitleBar = styled(Row)`\n align-items: center;\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\n\nconst DateString = styled(Pill)`\n ${({theme}) => theme.mediaQueries.tablet} {\n border: none;\n padding: 0;\n background: transparent;\n }\n ${({theme}) => theme.mediaQueries.tablet} {\n display: none;\n }\n`;\nconst StreakWrapper = styled.div`\n`;\n\nconst StreakString = styled(Pill)`\n cursor: pointer;\n &:hover {\n background: ${({theme}) => theme.overlays.opacity.light._100};\n }\n ${({theme}) => theme.mediaQueries.tablet} {\n ${({left}) => left && css`\n border-radius: 8px 0px 0px 8px;\n `}\n }\n ${({theme}) => theme.mediaQueries.tablet} {\n display: none;\n }\n`;\n\nconst StreakFailWarning = styled(Pill)`\n color: ${({theme}) => theme.colors.brandPalette.orange.default};\n margin-left: ${({theme}) => theme.layouts.spacing.s};\n height: 50px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n height: 46px;\n margin-left: 0;\n border-radius: 0px 8px 8px 0px;\n }\n`;\n\nconst FireIcon = styled(LocalFireDepartment).attrs(props => ({size: 18}))`\n color: ${({theme, streakActive}) => streakActive ? theme.colors.brandPalette.orange.default : `rgba(255, 255, 255, 1)`};\n margin-right: 8px;\n`;\n\nconst TestDateContainer = styled(Pill)`\n position: relative;\n input {\n width: 95%;\n cursor: pointer;\n position: absolute;\n opacity: 0;\n border: none;\n outline: none;\n }\n`;\nconst CalendarIcon = styled(CalendarLtr).attrs(props => ({size: 18}))`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n margin-right: 8px;\n`;\n\nconst TestDatePicker = () => {\n const {bootcamp, searchUserInteractions, saveUserInteraction} = useUserDataContext();\n\n const testDateKey = ['nclex'].includes(bootcamp) ? `${bootcamp}_testDate` : 'testDate'\n const currentTestDate = searchUserInteractions(testDateKey);\n const hasCurrentTestDate = typeof currentTestDate === 'string';\n\n const [testDate, setTestDate] = useState(currentTestDate);\n const ref = React.useRef(null);\n\n function handleClick() {\n ref?.current?.showPicker();\n }\n\n function formatDate(date) {\n const formattedDate = moment(date).format('MMM Do');\n return formattedDate;\n }\n\n async function handleInputChange(e) {\n const updatedTestDate = e.target.value;\n\n setTestDate(updatedTestDate);\n\n try {\n await saveUserInteraction(testDateKey, JSON.stringify(updatedTestDate));\n await IntercomAPI('update', { [`${bootcamp}_test_date`]: getUnixTimestamp(updatedTestDate)});\n } catch (error) {\n console.log('erroring', error);\n }\n }\n\n useEffect(() => {\n hasCurrentTestDate && setTestDate(currentTestDate);\n }, [currentTestDate]);\n\n return (\n \n \n {hasCurrentTestDate ? `Test date: ${formatDate(testDate)}` : 'Add Test Date'}\n \n \n )\n}\n\n\nconst Card = ({icon, text, interactionKey, containerProps, checkIfComplete}, index) => {\n const {interactions, cognitoUser} = useUserDataContext();\n // if (!cognitoUser || Object.keys(cognitoUser).length === 0) return;\n // const interaction = interactions?.find(({id}) => id === `${cognitoUser && cognitoUser?.getUsername()}-${interactionKey}`) || {};\n const complete = false;\n const Icon = icon.component;\n\n return (\n \n \n \n \n \n \n {complete\n ? \n : \n }\n \n );\n}\n\nconst StyledColumn = styled(Column)`\n height: auto;\n`;\n\nconst StyledTooltip = styled(Tooltip)`\n z-index: 1000000000;\n background: rgba(21,26,30,1);\n`;\n\nconst currentHour = new Date().getHours();\nconst greetingMessage =\n currentHour >= 4 && currentHour < 12 ? // after 4:00AM and before 12:00PM\n 'Good morning' :\n currentHour >= 12 && currentHour <= 17 ? // after 12:00PM and before 6:00pm\n 'Good afternoon' :\n currentHour > 17 || currentHour < 4 ? // after 5:59pm or before 4:00AM (to accommodate night owls)\n 'Good evening' :\n 'Hello!'\n\nconst GettingStarted = ({title=greetingMessage, actions, hideStreak}) => {\n const {interactions, bootcamp, searchUserInteractions, cognitoUser, saveUserInteraction, userModel, bootcampMembershipGroup} = useUserDataContext();\n const {streak, date} = searchUserInteractions(`Streak-DWU-${bootcamp}`);\n const name = cognitoUser?.attributes?.name;\n const {push} = useHistory();\n if (!interactions) return null;\n\n const {streakLength, timeRunningOut} = getStreakDetails(streak, date);\n\n const currentDate = moment().format('MMMM').length <= 4 // if full formatted date is 4 characters or fewer don't format with \".\"\n ? moment().format('MMM Do')\n : moment().format('MMM. Do')\n\n const {endDate, latestEnd} = findStartAndEndDates(userModel?.memberships, bootcampMembershipGroup);\n if (!actions?.length) {\n return (\n \n \n \n \n \n <PillWrapper>\n <TestDatePicker bootcamp={bootcamp} saveUserInteraction={saveUserInteraction} />\n {latestEnd && <StreakWrapper onClick={() => push(`/${bootcamp}/account/memberships`)}>\n <DateString>\n <BadgeIcon />Membership expires: {moment(endDate).format('MMM Do, YYYY')}</DateString>\n </StreakWrapper>}\n {!hideStreak &&\n <StreakWrapper>\n <StreakString left={timeRunningOut} data-tooltip-id={'streak-tooltip'}>\n <FireIcon streakActive={streakLength > 0} /> {streakLength} day streak\n <StyledTooltip id={'streak-tooltip'} content={'Log in each day to keep your streak going!'} place={'right'} />\n </StreakString>\n </StreakWrapper>\n }\n </PillWrapper>\n </Wrapper>\n </TitleBar>\n </StyledColumn>\n )\n }\n return !!actions.length &&\n <StyledColumn>\n <TitleBar>\n <StyledDefaultProfilePicture size={78} showPrompt={false} imgComponent={AvatarImage}/>\n <Wrapper>\n <Title children={`${title}${name ? `, ${name}!` : '!'}`} />\n <PillWrapper>\n <TestDatePicker bootcamp={bootcamp} saveUserInteraction={saveUserInteraction}/>\n {latestEnd && <StreakWrapper onClick={() => push(`/${bootcamp}/account/memberships`)}>\n <DateString>\n <BadgeIcon />Membership expires: {moment(endDate).format('MMM Do, YYYY')}</DateString>\n </StreakWrapper>}\n {!hideStreak &&\n <StreakWrapper>\n <StreakString left={timeRunningOut} data-tooltip-id={'streak-tooltip'}>\n <FireIcon streakActive={streakLength > 0} /> {streakLength} day streak\n <StyledTooltip id={'streak-tooltip'} content={'Log in each day to keep your streak going!'} place={'right'}/>\n </StreakString>\n </StreakWrapper>\n }\n </PillWrapper>\n </Wrapper>\n </TitleBar>\n <Container>\n {actions.map((props) => !props.hide && <Card {...props} />)}\n </Container>\n </StyledColumn>\n}\n\nGettingStarted.propTypes = {};\nGettingStarted.defaultProps = {\n title: greetingMessage\n};\n\nexport default GettingStarted;\n","import React, {useState, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport firstBy from 'thenby';\nimport debounce from 'lodash.debounce';\n\nimport {FlexBox} from '../../../components/Grid';\n\nconst Container = styled(FlexBox)`\n height: auto;\n flex-direction: column;\n margin-bottom: ${({theme}) => theme.layouts.spacing.xxl};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.xl};\n }\n`;\nconst Row = styled.div`\n display: flex;\n flex-direction: row;\n width: 100%;\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n\n &:last-child {\n margin-bottom: 0;\n }\n\n ${({theme}) => theme.mediaQueries.laptop} {\n flex-direction: column;\n margin-bottom: 0px;\n }\n`;\n\nconst Placeholder = styled.div`\n flex: 1;\n`;\n\nfunction findMatchingBreakpoint(breakpoints) {\n const match = Object\n .keys(breakpoints)\n .sort(firstBy(Number, 'asc'))\n .find(breakpoint => window.innerWidth < parseInt(breakpoint));\n\n return breakpoints[parseInt(match)];\n}\n\nfunction getPlaceholders(numItems, itemsPerRow) {\n return Array.from(new Array(itemsPerRow - numItems)).map(() => <Placeholder/>);\n}\n\nconst Grid = ({items, itemsPerRow, renderItem, breakpoints}) => {\n // TODO extend this to work for 'items' array with odd numbers\n const initialPerRow = findMatchingBreakpoint(breakpoints) || itemsPerRow;\n const [perRow, setPerRow] = useState(initialPerRow);\n\n useEffect(() => {\n // don't set event listeners if there are no breakpoints to listen for\n if (!Object.keys(breakpoints).length) return;\n\n const onResize = debounce(() => {\n const updatedPerRow = findMatchingBreakpoint(breakpoints) || itemsPerRow;\n\n if (updatedPerRow === perRow) return;\n\n setPerRow(updatedPerRow);\n\n }, 275);\n\n window.addEventListener('resize', onResize);\n\n return () => window.removeEventListener('resize', onResize);\n\n }, [breakpoints, perRow, setPerRow]);\n\n const numRows = Math.ceil(items.length / perRow);\n const createRow = (n, index) => items.slice(index * perRow, (index * perRow) + perRow);\n\n const rows = Array\n .from(new Array(numRows))\n .map(createRow);\n return (\n <Container>\n {rows.map((items, index) => (\n <Row key={`grid-row-${index}`}>{[...items.map(renderItem), ...getPlaceholders(items.length, perRow)]}</Row>\n ))}\n </Container>\n );\n};\n\nGrid.propTypes = {\n items: PropTypes.array,\n itemsPerRow: PropTypes.number,\n renderItem: PropTypes.func,\n breakpoints: PropTypes.object,\n};\nGrid.defaultProps = {\n items: [],\n itemsPerRow: 2,\n renderItem: () => null,\n breakpoints: {},\n};\n\nexport default Grid;\n","import React from 'react';\n\nimport {Link} from 'react-router-dom';\nimport SVG from 'react-inlinesvg';\n\nimport styled, {css} from 'styled-components';\n\nimport {resolveIconPath} from '@bootcamp/web/src/helpers';\n\nimport IconButton from '../../../components/Branding/Buttons/IconButton';\nimport {FlexBox, Column, Row} from '../../../components/Grid';\nimport {H2, H3, Label2} from '../../../components/Typography';\n\nimport ProgressBar from '../../../components/ProgressBar';\nimport {ExpertEducators} from '../../../components/ExpertEducators';\n\nimport {ArrowForwardOutline} from '@styled-icons/evaicons-outline/ArrowForwardOutline';\nimport {LocalFireDepartment} from '@styled-icons/material/LocalFireDepartment';\nimport theme from '@bootcamp/shared/src/styles/theme';\n\nconst LinkWrapper = styled(Link)`\n align-self: stretch;\n text-decoration: none;\n background: ${({theme, color, lightMode, whiteMode, backgroundImg}) => backgroundImg ? `linear-gradient(180deg, rgba(0, 0, 0, 0.25) 0%, rgba(0, 0, 0, 0.5) 100%), url(${backgroundImg})` : (lightMode || whiteMode) ? theme.colors.neutralsPalette.white : color};\n background-repeat: no-repeat;\n background-size: cover;\n height: auto;\n\n border-radius: 8px;\n transition: all 100ms ease;\n overflow: hidden;\n\n ${({locked}) => !locked && css`\n &:hover {\n transform: scale(1.01);\n box-shadow: ${({theme}) => theme.elevation.shadow.high};\n\n & ${StyledIconButton} {\n background-color: ${({theme, lightMode, color}) => lightMode ? color : theme.overlays.opacity.light._100};\n }\n }\n `}\n\n ${({locked}) => locked && css`\n &:hover {\n cursor: not-allowed;\n\n }\n `}\n ${({theme}) => theme.mediaQueries.laptop} {\n width: 100%;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst StyledIconButton = styled(IconButton)`\n ${({lightMode}) => lightMode && css`\n width: 56px;\n height: 56px;\n background: ${({color}) => color};\n `}\n\n ${({whiteMode}) => whiteMode && css`\n width: 56px;\n height: 56px;\n background: ${({theme}) => theme.colors.neutralsPalette.extraLight};\n `}\n`\n\nconst Container = styled(FlexBox)`\n position: relative;\n box-shadow: ${({theme}) => theme.elevation.shadow.medium};\n flex-direction: column;\n box-shadow: ${({theme}) => theme.elevation.shadow.medium};\n border-radius: 8px;\n\n &:hover {\n ${StyledIconButton} {\n background: ${({theme, whiteMode, themePalette}) => whiteMode ? themePalette.default : theme.overlays.opacity.light._200};\n svg {\n fill: white;\n }\n }\n\n }\n\n ${({theme}) => theme.mediaQueries.laptop} {\n flex-direction: row;\n max-width: 100%;\n\n & ${StyledIconButton} {\n display: none;\n }\n }\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n min-height: auto;\n flex-direction: column;\n height: 100%;\n }\n\n ${({locked, theme}) => locked && css`\n background: ${theme.colors.special.naturalDark};\n border: 1px solid ${theme.overlays.opacity.dark._50};\n box-shadow: ${theme.elevation.inner.progressDark};\n\n & ${StyledIconButton} {\n display: none;\n }\n\n &:hover {\n transform: none;\n cursor: not-allowed;\n }\n `}\n`;\n\nconst Header = styled(Column)`\n padding: ${({theme}) => theme.layouts.spacing.l} ${({theme}) => theme.layouts.spacing.l} ${({withPadding}) => withPadding ? '' : 0};\n\n ${({theme}) => theme.mediaQueries.laptop} {\n justify-content: space-between;\n padding-bottom: ${({theme}) => theme.layouts.spacing.l};\n }\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n min-height: auto;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst Title = styled(H2)`\n width: 100%;\n color: ${({theme, lightMode}) => (lightMode) ? theme.colors.neutralsPalette.extraDark : theme.colors.neutralsPalette.white};\n\n ${({theme}) => theme.mediaQueries.laptop} {\n height: auto;\n }\n`;\nconst TitleSmall = styled(H3)`\n width: 100%;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n height: 62px;\n\n ${({theme}) => theme.mediaQueries.laptop} {\n height: auto;\n }\n`;\n\n\nconst ArrowForward = styled(ArrowForwardOutline)`\n color: ${({theme, lightMode, whiteMode, color}) => lightMode\n ? color\n : whiteMode\n ? theme.colors.neutralsPalette.lightGrey\n : theme.colors.neutralsPalette.white};\n height: 24px;\n width: 24px;\n`\n\nconst IconsWrapper = styled(Row)`\n height: auto;\n justify-content: space-between;\n margin-bottom: ${({theme, lightMode}) => theme.layouts.spacing.m};\n`\n\nconst Details = styled(Column)`\n border-top: ${({theme, withBorder}) => withBorder ? `1px solid ${theme.overlays.opacity.dark._100}` : 'none'};\n padding: ${({theme}) => theme.layouts.spacing.m} ${({theme}) => theme.layouts.spacing.l} ${({theme}) => theme.layouts.spacing.l};\n flex-direction: ${({detailsOrientation}) => detailsOrientation === 'horizontal' ? 'row' : 'column'};\n align-items: center;\n justify-content: center;\n`;\nconst Progress = styled(ProgressBar)`\n order: 1;\n width: 100%;\n margin-top: ${({theme, detailsOrientation}) => detailsOrientation === 'horizontal' ? 0 : theme.layouts.spacing.m};\n\n ${({theme}) => theme.mediaQueries.laptop} {\n align-items: flex-end;\n }\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n order: 2;\n align-items: flex-start;\n margin-bottom: 0;\n }\n`;\nconst ExpertEducatorsContainer = styled(ExpertEducators)`\n order: 2;\n justify-content: space-between;\n\n ${({theme}) => theme.mediaQueries.laptop} {\n justify-content: flex-end;\n }\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n justify-content: flex-start;\n order: 1;\n }\n`;\nconst Icon = styled.div`\n background: ${({lightMode, color}) => lightMode ? color : 'none'};\n border-radius: 100px;\n\n svg {\n width: 42px;\n height: 42px;\n stroke: ${({theme}) => theme.overlays.opacity.light._100};\n }\n\n ${({lightMode}) => lightMode && css`\n padding: 16px;\n\n svg {\n width: 24px;\n height: 24px;\n }\n `}\n\n ${({whiteMode}) => whiteMode && css`\n svg > path {\n fill: ${({theme, whiteMode, themePalette}) => whiteMode ? themePalette.default : theme.overlays.opacity.light._100};\n }\n\n svg > g > path {\n stroke: ${({theme, whiteMode, themePalette}) => whiteMode ? themePalette.default : theme.overlays.opacity.light._100};\n }\n `}\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n }\n`;\nconst Arrow = styled(IconButton)`\n order: 1;\n margin-left: ${({theme}) => theme.layouts.spacing.l};\n align-self: ${({detailsOrientation}) => detailsOrientation === 'horizontal' ? 'center' : 'flex-end'};\n`;\n\nconst defaultProgress = {\n reviewing: 0,\n learning: 0,\n mastered: 0,\n total: 0,\n};\n\nfunction getLaunchDate (name) {\n switch (name) {\n case 'General Chemistry':\n return 'Spring 2021';\n default:\n return 'Fall 2021'\n }\n}\n\nconst NewReleaseBannerContainer = styled.div`\n width: 191px;\n background: white;\n border-radius: 8px;\n padding: ${({theme}) => `${theme.layouts.spacing.s} ${theme.layouts.spacing.l}`};\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n box-shadow: ${({theme}) => theme.elevation.shadow.low};\n\n position: absolute;\n top: -17px;\n left: 0;\n right: 0;\n margin: 0 auto;\n z-index: 2;\n ${({theme}) => theme.mediaQueries.laptop} {\n display: none;\n }\n ${({theme}) => theme.mediaQueries.mobileL} {\n position: relative;\n top: 0;\n width: 149px;\n margin-right: 0;\n display: flex;\n border-radius: 100px;\n padding: ${({theme}) => `${theme.layouts.spacing.s} ${theme.layouts.spacing.m}`};\n }\n`\n\nconst NewReleaseBannerText = styled(Label2)`\n font-weight: 600;\n color: ${({theme, themePalette}) => (themePalette && themePalette.dark) || theme.colors.brandPalette.pink.dark};\n`;\n\nconst NewReleaseBannerIcon = styled(LocalFireDepartment).attrs(props => ({size: 16}))`\n color: ${({theme, themePalette}) => (themePalette && themePalette.dark) || theme.colors.brandPalette.pink.dark};\n margin-right: ${({theme}) => theme.layouts.spacing.s};\n`;\n\nconst NewReleaseBanner = ({themePalette}) => (\n <NewReleaseBannerContainer>\n <NewReleaseBannerIcon themePalette={themePalette}/>\n <NewReleaseBannerText themePalette={themePalette}>New Release</NewReleaseBannerText>\n </NewReleaseBannerContainer>\n)\n\nconst ClassroomCard = ({\n name,\n backgroundImg,\n icon,\n lightMode,\n className,\n route,\n themePalette,\n newRelease,\n questionCount,\n locked,\n showProgress,\n educators,\n showExpertEducators,\n showArrowButton,\n detailsOrientation,\n detailsBorder=true,\n progress,\n solo,\n educatorLayout,\n expertEducatorOrientation,\n withHeaderPadding=true,\n whiteMode=false,\n label=null,\n progressLabel,\n showVideoProgress,\n videoLessonCount,\n videoLessonProgress,\n}) => {\n\n\n const loadingProgress = (progress === null || videoLessonProgress === null) && !locked;\n\n const {reviewing, learning, mastered} = progress || defaultProgress;\n\n const progressSegments = [\n {count: mastered},\n {count: reviewing},\n {count: learning}\n ];\n\n const containerProps = locked\n ? {as: FlexBox, color: 'transparent'}\n : {as: Link, to: route, color: themePalette.gradient};\n\n return (\n <LinkWrapper {...containerProps} className={className} locked={locked} solo={solo} lightMode={lightMode} whiteMode={whiteMode} backgroundImg={backgroundImg}>\n <Container locked={locked} whiteMode={whiteMode} themePalette={themePalette}>\n <Header lightMode={lightMode} withPadding={withHeaderPadding}>\n <IconsWrapper lightMode={lightMode}>\n {icon &&\n <Icon\n lightMode={lightMode}\n color={themePalette.gradient}\n children={<SVG src={resolveIconPath(icon)}/>}\n themePalette={themePalette}\n whiteMode={whiteMode}\n />\n }\n {newRelease && <NewReleaseBanner themePalette={themePalette}/>}\n <StyledIconButton type={'secondary'} size={'small'} lightMode={lightMode} whiteMode={whiteMode} color={themePalette.light}>\n <ArrowForward lightMode={lightMode} whiteMode={whiteMode} color={themePalette.default}/>\n </StyledIconButton>\n </IconsWrapper>\n {whiteMode\n ? <TitleSmall>\n {name}\n </TitleSmall>\n : <Title as={whiteMode ? H3 : H2} lightMode={lightMode} whiteMode={whiteMode}>\n {name}\n \n }\n {showProgress &&\n \n }\n {showVideoProgress &&\n {{`${videoLessonProgress || 0}`}} of {`${videoLessonCount} lessons completed`}\n }\n detailsOrientation={detailsOrientation}\n />\n }\n
\n
\n {showExpertEducators &&\n \n }\n {showArrowButton &&\n \n \n \n }\n {label && label}\n
\n
\n \n );\n}\n\nexport default ClassroomCard;\n","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgCoffee(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 100,\n height: 100,\n viewBox: \"0 0 100 100\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.5167 51.2225C12.3959 50.0915 10.454 48.6529 8.75426 46.9535C6.1262 44.4068 4.25521 41.1817 3.34893 37.6362C2.08392 32.4055 3.71941 26.8982 7.63424 23.2057C9.9523 20.6768 13.3535 19.4301 16.7567 19.8619C20.9933 20.43 24.6618 23.5791 27.2265 26.5658L22.438 33.5132C21.206 31.5694 19.5529 29.9273 17.6008 28.7085C16.6105 28.1528 15.4312 28.0423 14.3549 28.4042C13.2785 28.7661 12.4055 29.5666 11.952 30.6076C9.32239 35.5747 13.072 40.7041 17.2275 43.3986L14.5167 51.2225Z\",\n fill: \"#C03A2B\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M78.2281 57.2609C74.3323 60.2314 68.7484 62.0169 61.6225 61.6436C56.4444 61.3676 53.4739 60.1989 51.7695 58.4296C47.0947 53.6086 51.9319 44.4537 46.9648 37.7985C43.1119 32.8989 37.0362 30.2889 30.83 30.8673C29.4178 27.4098 29.0931 24.6666 30.0671 23.0596C30.0671 23.0434 30.0671 23.0434 30.0833 23.0271V23.0109C30.2059 22.8238 30.3473 22.6498 30.5053 22.4915C34.6283 18.3685 50.2924 27.3611 65.5182 42.5707C70.1196 47.1396 74.3683 52.0504 78.2281 57.2609Z\",\n fill: \"#BDC3C7\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M85.0294 78.0219C78.6177 83.5408 46.6889 108.685 23.0386 85.0342C12.4065 74.4183 11.6436 62.1143 14.5167 51.2225C15.2245 48.5507 16.1306 45.9355 17.2275 43.3986C18.7161 39.9784 20.4577 36.6741 22.438 33.5131C24.1262 30.7861 25.8143 28.4162 27.2265 26.5658C28.3952 25.0399 29.3692 23.855 30.0672 23.0596C29.0932 24.6666 29.4179 27.4098 30.8301 30.8673C33.6545 37.8309 40.8454 47.7488 50.5847 57.4881C50.9418 57.8452 51.2989 58.1861 51.656 58.5432C65.9079 72.5029 80.3059 80.8788 85.0294 78.0219Z\",\n fill: \"#E64C3C\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M78.2281 57.2609C74.3683 52.0504 70.1196 47.1396 65.5182 42.5707C50.2924 27.3611 34.6283 18.3685 30.5053 22.4915C30.3473 22.6498 30.2059 22.8238 30.0833 23.0109V23.0271C30.0671 23.0434 30.0671 23.0434 30.0671 23.0596C29.0931 24.6666 29.4178 27.4098 30.83 30.8673C33.6544 37.8309 40.8453 47.7488 50.5846 57.4881C50.9417 57.8452 51.2988 58.1861 51.6559 58.5432C65.9078 72.5029 80.3058 80.8788 85.0294 78.0219L78.2281 57.2609Z\",\n fill: \"#BDC3C7\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M76.9796 21.919C78.881 20.0176 77.8534 15.9072 74.6843 12.7381C71.5153 9.56904 67.4048 8.54142 65.5034 10.4429C63.602 12.3443 64.6296 16.4547 67.7986 19.6238C70.9677 22.7929 75.0781 23.8205 76.9796 21.919Z\",\n fill: \"#A56A43\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43.686 78.1842C39.1572 82.7292 32.924 84.0116 28.9309 81.4956C31.7878 78.4926 29.6127 76.2201 32.6156 73.2334C35.6673 70.1655 37.956 72.4542 41.0239 69.4026C44.0106 66.3996 41.8355 64.1433 44.7086 61.1404C45.1661 61.4349 45.5905 61.7778 45.9747 62.163C49.7568 65.9614 48.7504 73.136 43.686 78.1842Z\",\n fill: \"#F29C1F\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.7085 61.1404C41.8354 64.1434 44.0105 66.3996 41.0238 69.4026C37.9559 72.4543 35.6671 70.1655 32.6155 73.2334C29.6125 76.2201 31.7876 78.4926 28.9308 81.4956C28.4733 81.2011 28.0489 80.8582 27.6647 80.473C23.8663 76.6746 24.8889 69.5 29.9534 64.4518C34.4822 59.9068 40.7154 58.6244 44.7085 61.1404Z\",\n fill: \"#E57E25\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M51.7696 58.4296L51.656 58.5433C51.2989 58.1861 50.9418 57.8453 50.5847 57.4882C40.8454 47.7488 33.6545 37.8309 30.8301 30.8673C37.0362 30.2889 43.112 32.8989 46.9649 37.7985C51.932 44.4537 47.0948 53.6087 51.7696 58.4296Z\",\n fill: \"#A56A43\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M78.2281 57.2609C74.3683 52.0504 70.1196 47.1396 65.5182 42.5707C50.2924 27.3611 34.6283 18.3685 30.5053 22.4915C30.3473 22.6498 30.2059 22.8238 30.0833 23.0109V23.0271C30.0671 23.0434 30.0671 23.0434 30.0671 23.0596C29.0931 24.6666 29.4178 27.4098 30.83 30.8673C33.6544 37.8309 40.8453 47.7488 50.5846 57.4881C50.9417 57.8452 51.2988 58.1861 51.6559 58.5432C65.9078 72.5029 80.3058 80.8788 85.0294 78.0219C86.6997 76.8126 84.2664 72.6815 84.2664 72.6815L78.2281 57.2609ZM53.9284 56.222L52.8733 55.1994C51.7209 54.0469 50.6171 52.8944 49.5133 51.7257C42.6146 44.3076 37.0632 36.6947 34.3848 30.9322C34.1901 30.494 33.9953 30.0719 33.833 29.6499C33.1049 28.1953 32.7427 26.585 32.7779 24.9588L33.0051 24.764C33.1447 24.7418 33.2858 24.7309 33.4271 24.7315C38.102 24.7315 50.1301 31.7925 63.2295 44.8757C67.5858 49.2092 71.6219 53.853 75.3063 58.7705L75.4037 59.0464L80.6304 75.0027C76.1503 73.7853 68.4076 69.1591 59.6259 61.4813C57.7592 59.8743 55.8601 58.105 53.9284 56.222Z\",\n fill: \"#ECF0F1\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M97.025 51.1413C96.7999 57.9395 94.9224 64.5805 91.5547 70.4901C89.8561 73.3272 86.8446 75.1199 83.5409 75.2608H83.4841C82.4293 75.3225 81.3716 75.2078 80.3545 74.9215C78.3786 74.2822 76.4746 73.439 74.6732 72.4055C73.4883 71.74 72.2222 70.9771 70.8749 70.1006C66.9268 67.4962 63.1678 64.6159 59.626 61.4812C60.259 61.5462 60.9246 61.6111 61.6225 61.6436C68.7485 62.0169 74.3324 60.2314 78.2281 57.2609C84.8606 52.4703 86.6485 43.3607 82.3186 36.4187C75.5498 25.0724 98.356 24.9101 97.025 51.1413Z\",\n fill: \"#A56A43\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M85.3379 65.1984C82.5377 68.5627 78.8392 71.0621 74.6733 72.4055C73.4884 71.74 72.2223 70.9771 70.875 70.1006C75.5415 69.2048 79.7621 66.7423 82.8381 63.1207C83.4119 62.4304 84.4366 62.3359 85.1269 62.9097C85.8172 63.4834 85.9117 64.5081 85.3379 65.1984Z\",\n fill: \"#805333\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCoffee);\nexport default __webpack_public_path__ + \"static/media/coffee.9367b990.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _defs;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgCalendarGold(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 36,\n height: 36,\n viewBox: \"0 0 36 36\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 10.5V4.5V10.5ZM24 10.5V4.5V10.5ZM10.5 16.5H25.5H10.5ZM7.5 31.5H28.5C29.2956 31.5 30.0587 31.1839 30.6213 30.6213C31.1839 30.0587 31.5 29.2956 31.5 28.5V10.5C31.5 9.70435 31.1839 8.94129 30.6213 8.37868C30.0587 7.81607 29.2956 7.5 28.5 7.5H7.5C6.70435 7.5 5.94129 7.81607 5.37868 8.37868C4.81607 8.94129 4.5 9.70435 4.5 10.5V28.5C4.5 29.2956 4.81607 30.0587 5.37868 30.6213C5.94129 31.1839 6.70435 31.5 7.5 31.5Z\",\n stroke: \"url(#paint0_linear)\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear\",\n x1: 18,\n y1: 4.5,\n x2: 18,\n y2: 31.5,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#F4C24F\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.515625,\n stopColor: \"#F59B25\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#DF8A35\"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCalendarGold);\nexport default __webpack_public_path__ + \"static/media/Calendar-gold.54a328be.svg\";\nexport { ForwardRef as ReactComponent };","import React, {useCallback} from 'react';\n\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\nimport {Link} from 'react-router-dom';\n\nimport MasteryReview from '../../components/MasteryReview';\nimport GettingStarted from '../../components/GettingStarted';\n\nimport {H2} from '../../../components/Typography';\nimport FAQs from '../../components/WebflowFAQs';\nimport Grid from '../../components/Grid';\nimport ClassroomCard from '../../components/Cards/Classroom';\nimport {People} from '@styled-icons/fluentui-system-filled/People'\n\nimport {useMastery, useTestProgressArray} from '../../../hooks';\n\nimport {ReactComponent as Coffee} from '@bootcamp/shared/src/assets/svg/coffee.svg';\nimport {ReactComponent as Calendar} from '@bootcamp/shared/src/assets/icons/Calendar-gold.svg';\n\nimport {formatClassroomMastery, formatClassroomVideoProgress} from '@bootcamp/shared/src/util/formatting';\nimport {getStreakDetails, getTestsByClassroom} from '@bootcamp/shared/src/util';\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {getClassroomQuestionCounts, getClassroomCourseBlockCounts} from '@bootcamp/shared/src/requests';\nimport {useAsync} from '@bootcamp/web/src/hooks';\n\nimport Container from '../../pages/PageContainer';\n\nimport styled from 'styled-components';\nimport theme from '@bootcamp/shared/src/styles/theme';\n\nconst Title = styled(H2)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst StyledClassroomCard = styled(ClassroomCard)`\n flex: 1;\n margin-right: ${({theme}) => theme.layouts.spacing.l};\n color: black;\n\n &:last-child {\n margin-right: 0;\n }\n\n ${({theme}) => theme.mediaQueries.laptop} {\n margin-right: 0px;\n margin-bottom: 0 0 ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst StyledCalendar = styled(Calendar)`\n fill: transparent !important;\n`;\n\nconst Home = props => {\n const {isUpgraded, isBootcampPlusStudent} = useUserDataContext();\n const {config} = useBootcampConfigContext();\n useDocumentTitle(` ${config.meta.siteTitle} | Home`);\n\n const bootcamp = 'oat';\n const bootcampTitle = bootcamp.toUpperCase();\n\n const testsByClassroom = getTestsByClassroom(config?.classrooms);\n const coursesByClassroom = getTestsByClassroom(config?.classrooms, [], ['Course']);\n\n const getQuestionCounts = useCallback(() => getClassroomQuestionCounts(bootcamp, testsByClassroom, isBootcampPlusStudent), [isBootcampPlusStudent])\n const getCourseBlockCounts = useCallback(() => getClassroomCourseBlockCounts(bootcamp, coursesByClassroom), []);\n\n const {value: courseBlockCounts} = useAsync(getCourseBlockCounts);\n const {value: questionCounts} = useAsync(getQuestionCounts);\n\n const todayActions = [\n {\n interactionKey: `Streak-DWU-${bootcamp}`,\n icon: {\n component: Coffee,\n text: 'Daily Warmup', themeColor: 'royal'\n },\n text: isUpgraded ? 'Study 10 unused questions' : 'Free members limited to 100 q\\'s',\n containerProps: {\n as: Link,\n to: `/${bootcamp}/quick-study`,\n },\n checkIfComplete: interactionObj => {\n const {streak, date: streakDate} = JSON.parse((interactionObj || {}).value || '{}');\n const {streakCompletedToday} = getStreakDetails(streak, streakDate);\n return streakCompletedToday;\n }\n },\n {\n icon: {\n component: StyledCalendar,\n text: 'Question of the Day', themeColor: 'royal'\n },\n text: `Try out today's question`,\n containerProps: {\n as: 'a',\n href: `https://bootcamp.com/${bootcamp}/question-of-the-day`,\n target: '_blank'\n }\n },\n {\n icon: {\n component: People,\n text: 'Study Group', themeColor: 'royal'\n },\n text: `Join 1700 fellow students`,\n containerProps: {\n as: 'a',\n href: 'https://www.facebook.com/groups/oatbootcamp',\n target: '_blank'\n }\n },\n ]\n\n const [biologyProgress] = useMastery(config.classrooms[0].tagId, 'subject', data => formatClassroomMastery(data, 'subject'));\n const [gcProgress] = useMastery(config.classrooms[1].tagId, 'subject', data => formatClassroomMastery(data, 'subject'));\n const [ocProgress] = useMastery(config.classrooms[2].tagId, 'subject', data => formatClassroomMastery(data, 'subject'));\n const [rcProgress] = useMastery(config.classrooms[3].tagId, 'subject', data => formatClassroomMastery(data, 'subject'));\n const [physicsProgress] = useMastery(config.classrooms[4].tagId, 'subject', data => formatClassroomMastery(data, 'subject'));\n const [qrProgress] = useMastery(config.classrooms[5].tagId, 'subject', data => formatClassroomMastery(data, 'subject'));\n\n const progressMap = {\n 'Biology': biologyProgress,\n 'General Chemistry': gcProgress,\n 'Organic Chemistry': ocProgress,\n 'Physics': physicsProgress,\n 'Quantitative Reasoning': qrProgress,\n 'Reading Comprehension': rcProgress,\n };\n\n const [biologyVideoProgress] = useTestProgressArray(coursesByClassroom['biology'], formatClassroomVideoProgress);\n const [gcVideoProgress] = useTestProgressArray(coursesByClassroom['general-chemistry'], formatClassroomVideoProgress);\n const [ocVideoProgress] = useTestProgressArray(coursesByClassroom['organic-chemistry'], formatClassroomVideoProgress);\n const [rcVideoProgress] = useTestProgressArray(coursesByClassroom['reading-comprehension'], formatClassroomVideoProgress);\n const [qrVideoProgress] = useTestProgressArray(coursesByClassroom['quantitative-reasoning'], formatClassroomVideoProgress);\n\n const videoProgressMap = {\n 'biology': biologyVideoProgress,\n 'general-chemistry': gcVideoProgress,\n 'organic-chemistry': ocVideoProgress,\n 'reading-comprehension': rcVideoProgress,\n 'quantitative-reasoning': qrVideoProgress,\n };\n\n const loading = !biologyProgress || !gcProgress || !ocProgress || !physicsProgress || !qrProgress || !rcProgress;\n\n const classroomMasteryConfig = config.classrooms\n .filter(({locked}) => !locked)\n .map(({name, route}) => ({name, route, progress: progressMap[name]}));\n\n return (\n \n \n \n Subjects\n \n (\n \n )}\n />\n \n \n );\n}\n\nHome.propTypes = {};\nHome.defaultProps = {};\n\nexport default Home;\n","import React, {useCallback} from 'react';\n\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\nimport {Link} from 'react-router-dom';\n\n// import MasteryReview from '../../components/MasteryReview';\nimport GettingStarted from '../../components/GettingStarted';\n\nimport {H2} from '../../../components/Typography';\nimport FAQs from '../../components/WebflowFAQs';\nimport Grid from '../../components/Grid';\nimport ClassroomCardFull from '../../components/Cards/Classroom';\n\nimport {useMastery, useTestProgressArray} from '../../../hooks';\n\nimport {ReactComponent as DailyWarmupIcon} from '@bootcamp/shared/src/assets/svg/coffee.svg';\nimport {People} from '@styled-icons/fluentui-system-filled/People'\n\nimport {formatClassroomMastery, formatClassroomVideoProgress} from '@bootcamp/shared/src/util/formatting';\nimport {getStreakDetails, getTestsByClassroom} from '@bootcamp/shared/src/util';\nimport {getClassroomQuestionCounts, getClassroomCourseBlockCounts} from '@bootcamp/shared/src/requests';\nimport {useAsync} from '@bootcamp/web/src/hooks';\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nimport Container from '../../pages/PageContainer';\nimport {Bolt} from '@styled-icons/heroicons-solid/Bolt';\nimport styled from 'styled-components';\nimport theme from '@bootcamp/shared/src/styles/theme';\n\nconst Title = styled(H2)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\n\nconst StyledClassroomCard = styled(ClassroomCardFull)`\n flex: 1;\n margin-right: ${({theme}) => theme.layouts.spacing.l};\n\n &:last-child {\n margin-right: 0;\n }\n\n ${({theme}) => theme.mediaQueries.laptop} {\n margin-right: 0px;\n margin-bottom: 0 0 ${({theme}) => theme.layouts.spacing.m};\n }\n\n`;\nconst StyledBookmark = styled(Bolt)`\n fill: rgba(254, 205, 108, 1);\n`;\n\nconst Home = props => {\n const {isUpgraded, isBootcampPlusStudent} = useUserDataContext();\n const {config} = useBootcampConfigContext();\n useDocumentTitle(` ${config.meta.siteTitle} | Home`);\n\n const bootcamp = 'dat';\n const bootcampTitle = bootcamp.toUpperCase();\n\n const testsByClassroom = getTestsByClassroom(config?.classrooms);\n const coursesByClassroom = getTestsByClassroom(config?.classrooms, [], ['Course']);\n const getQuestionCounts = useCallback(() => getClassroomQuestionCounts(bootcamp, testsByClassroom, isBootcampPlusStudent), [isBootcampPlusStudent]);\n const getCourseBlockCounts = useCallback(() => getClassroomCourseBlockCounts(bootcamp, coursesByClassroom), []);\n\n const {value: courseBlockCounts} = useAsync(getCourseBlockCounts);\n const {value: questionCounts} = useAsync(getQuestionCounts);\n\n const todayActions = [\n {\n interactionKey: `Streak-DWU-${bootcamp}`,\n icon: {\n component: DailyWarmupIcon,\n text: 'Daily Warmup', themeColor: 'royal'\n },\n text: 'New questions brewed daily',\n containerProps: {\n as: Link,\n to: `/${bootcamp}/warmup`,\n },\n checkIfComplete: interactionObj => {\n const {streak, date: streakDate} = JSON.parse((interactionObj || {}).value || '{}');\n const {streakCompletedToday} = getStreakDetails(streak, streakDate);\n return streakCompletedToday;\n }\n },\n {\n interactionKey: `Streak-DWU-${bootcamp}`,\n icon: {\n component: StyledBookmark,\n text: 'Quick Study', themeColor: 'royal'\n },\n text: isUpgraded ? 'Study 10 unused questions' : 'Upgrade for unlimited access',\n containerProps: {\n as: Link,\n to: `/${bootcamp}/quick-study`,\n },\n checkIfComplete: interactionObj => {\n const {streak, date: streakDate} = JSON.parse((interactionObj || {}).value || '{}');\n const {streakCompletedToday} = getStreakDetails(streak, streakDate);\n return streakCompletedToday;\n }\n },\n {\n icon: {\n component: People,\n text: 'Study Group', themeColor: 'royal'\n },\n text: `Join 30k fellow students`,\n containerProps: {\n as: 'a',\n href: 'https://www.facebook.com/groups/datbootcamp',\n target: '_blank'\n }\n },\n ];\n\n const [biologyProgress] = useMastery(config.classrooms[0].tagId, 'subject', data => formatClassroomMastery(data, 'subject'));\n const [gcProgress] = useMastery(config.classrooms[1].tagId, 'subject', data => formatClassroomMastery(data, 'subject'));\n const [ocProgress] = useMastery(config.classrooms[2].tagId, 'subject', data => formatClassroomMastery(data, 'subject'));\n const [patProgress] = useMastery(config.classrooms[3].tagId, 'subject', data => formatClassroomMastery(data, 'subject'));\n const [rcProgress] = useMastery(config.classrooms[4].tagId, 'subject', data => formatClassroomMastery(data, 'subject'));\n const [qrProgress] = useMastery(config.classrooms[5].tagId, 'subject', data => formatClassroomMastery(data, 'subject'));\n\n const [biologyVideoProgress] = useTestProgressArray(coursesByClassroom['biology'], formatClassroomVideoProgress);\n const [gcVideoProgress] = useTestProgressArray(coursesByClassroom['general-chemistry'], formatClassroomVideoProgress);\n const [ocVideoProgress] = useTestProgressArray(coursesByClassroom['organic-chemistry'], formatClassroomVideoProgress);\n const [patVideoProgress] = useTestProgressArray(coursesByClassroom['perceptual-ability'], formatClassroomVideoProgress);\n const [rcVideoProgress] = useTestProgressArray(coursesByClassroom['reading-comprehension'], formatClassroomVideoProgress);\n const [qrVideoProgress] = useTestProgressArray(coursesByClassroom['quantitative-reasoning'], formatClassroomVideoProgress);\n\n const videoProgressMap = {\n 'Biology': biologyVideoProgress,\n 'General Chemistry': gcVideoProgress,\n 'Organic Chemistry': ocVideoProgress,\n 'Perceptual Ability': patVideoProgress,\n 'Reading Comprehension': rcVideoProgress,\n 'Quantitative Reasoning': qrVideoProgress,\n };\n\n const loading = !biologyProgress || !gcProgress || !ocProgress || !patProgress || !qrProgress || !rcProgress;\n\n const progressMap = {\n 'Biology': biologyProgress,\n 'General Chemistry': gcProgress,\n 'Organic Chemistry': ocProgress,\n 'Perceptual Ability': patProgress,\n 'Reading Comprehension': rcProgress,\n 'Quantitative Reasoning': qrProgress,\n };\n\n const classroomMasteryConfig = config.classrooms\n .filter(({locked, hideOnHome, route}) => !locked && !hideOnHome && !['reading-comprehension'].includes(route))\n .map(({name, route}) => ({name, route, progress: progressMap[name]}));\n\n return (\n \n \n \n Subjects\n \n {/* {config\n .classrooms\n .filter(({hideOnHome}) => !hideOnHome)\n .map(({icon, themePalette, name, route, tagId, locked, educators}) => (\n \n ))\n } */}\n !hideOnHome)}\n itemsPerRow={3}\n breakpoints={{\n 1440: 2\n }}\n renderItem={({icon, themePaletteString, name, route, tagId, locked, educators}) => (\n \n )}\n />\n \n \n );\n}\n\nHome.propTypes = {};\nHome.defaultProps = {};\n\nexport default Home;\n","import rangy from 'rangy/lib/rangy-core';\nimport rangyClassApplier from 'rangy/lib/rangy-classapplier';\nimport rangyHighlighter from 'rangy/lib/rangy-highlighter';\n\n\nrangy.init();\nrangyClassApplier.init();\nrangyHighlighter.init();\n\nfunction unwrap(element) {\n // get the element's parent node\n var parent = element.parentNode;\n\n // move all children out of the element\n while (element.firstChild) parent.insertBefore(element.firstChild, element);\n\n // try to remove the empty element\n try {\n parent.removeChild(element);\n } catch (error) {\n console.log(error);\n }\n}\n\nfunction clearSelection() {\n if (window.getSelection) {\n if (window.getSelection().empty) { // Chrome\n window.getSelection().empty();\n } else if (window.getSelection().removeAllRanges) { // Firefox\n window.getSelection().removeAllRanges();\n }\n } else if (document.selection) { // IE?\n document.selection.empty();\n }\n}\n\nfunction getTooltipPosition(event, offsetLeft, offsetTop) {\n const selection = window.getSelection();\n\n if (selection.type !== 'Range') return {};\n\n return {\n top: event.clientY - offsetTop,\n left: event.clientX - offsetLeft\n };\n}\n\nfunction setupEventListeners(listener, handler) {\n window.addEventListener(listener, handler);\n return () => window.removeEventListener(listener, handler);\n}\n\nfunction syncClassApplierWithHighlighter(className, highlighter, containerElementId) {\n const parent = document.getElementById(containerElementId);\n const elements = parent.getElementsByClassName(className);\n\n Array.from(elements).forEach(element => {\n let range = rangy.createRange();\n range.selectNodeContents(element);\n let selection = rangy.getSelection();\n selection.setSingleRange(range);\n\n highlighter.highlightSelection(className, {selection, exclusive: false, containerElementId});\n\n clearSelection();\n });\n}\n\nfunction createHighlighter(containerElementId) {\n const highlighter = rangyHighlighter.createHighlighter();\n const highlightApplier = rangyClassApplier.createClassApplier('highlight');\n const blueHighlightApplier = rangyClassApplier.createClassApplier('highlight-blue');\n const strikethroughApplier = rangyClassApplier.createClassApplier('strikethrough');\n\n highlighter.addClassApplier(highlightApplier);\n highlighter.addClassApplier(strikethroughApplier);\n highlighter.addClassApplier(blueHighlightApplier);\n\n return {\n restoreHighlights: (serializedString) => {\n try {\n return highlighter.deserialize(serializedString);\n } catch (error) {\n // console.log('unable to restore highlights', error);\n }\n },\n getSerializedHighlights: () => {\n return ({\n [containerElementId]: highlighter.serialize('highlight')\n });\n },\n syncSerializedHighlights: (containerId) => {\n // here we're creating a fresh highlighter to do the synchronization process so that we don't interfere with the active highlighter\n const serializationHighlighter = rangyHighlighter.createHighlighter();\n const serializationHighlightApplier = rangyClassApplier.createClassApplier('highlight');\n const serializationBlueHighlightApplier = rangyClassApplier.createClassApplier('highlight-blue');\n const serializationStrikethroughApplier = rangyClassApplier.createClassApplier('strikethrough');\n\n serializationHighlighter.addClassApplier(serializationHighlightApplier);\n serializationHighlighter.addClassApplier(serializationStrikethroughApplier);\n serializationHighlighter.addClassApplier(serializationBlueHighlightApplier);\n\n const parentId = containerId || containerElementId;\n\n\n syncClassApplierWithHighlighter('highlight', serializationHighlighter, parentId);\n syncClassApplierWithHighlighter('highlight-blue', serializationHighlighter, parentId);\n syncClassApplierWithHighlighter('strikethrough', serializationHighlighter, parentId);\n\n return ({\n [parentId]: serializationHighlighter.serialize('highlight')\n });\n },\n highlight: () => {\n highlighter.highlightSelection('highlight', {containerElementId})\n\n clearSelection();\n },\n getHighlightsInSelection: () => {\n return highlighter.getHighlightsInSelection();\n },\n addHighlights: (className='highlight') => {\n if (className === 'highlight') {\n const hasStrikethrough = strikethroughApplier.isAppliedToSelection();\n highlightApplier.applyToSelection();\n hasStrikethrough && strikethroughApplier.applyToSelection();\n } else if (className === 'highlight-blue') {\n const hasStrikethrough = strikethroughApplier.isAppliedToSelection();\n blueHighlightApplier.applyToSelection();\n hasStrikethrough && strikethroughApplier.applyToSelection();\n } else {\n const hasHighlight = highlightApplier.isAppliedToSelection();\n strikethroughApplier.toggleSelection();\n hasHighlight && highlightApplier.applyToSelection();\n }\n\n clearSelection();\n },\n removeHighlights: (className='highlight') => {\n if (['highlight'].includes(className)) {\n const hasStrikethrough = strikethroughApplier.isAppliedToSelection();\n highlightApplier.undoToSelection();\n blueHighlightApplier.undoToSelection();\n hasStrikethrough && strikethroughApplier.applyToSelection();\n } else {\n strikethroughApplier.undoToSelection();\n }\n\n clearSelection();\n },\n dehighlight: event => {\n if (event.target.nodeName === 'SPAN' && event.target.classList.contains('highlight')) {\n const highlight = highlighter.getHighlightForElement(event.target);\n\n highlight\n ? highlighter.removeHighlights([highlight])\n : unwrap(event.target);\n\n return true;\n }\n\n return null;\n }\n };\n}\n\nexport {\n unwrap,\n createHighlighter,\n clearSelection,\n setupEventListeners,\n getTooltipPosition,\n};\n","import React, {useState, useCallback, useEffect, useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport highlightIcon from '@bootcamp/shared/src/assets/icons/highlight_icon.png';\n\nimport {\n clearSelection,\n setupEventListeners,\n getTooltipPosition,\n createHighlighter,\n} from './helpers';\n\nimport styled, {css} from 'styled-components';\nimport { useHotkeys } from 'react-hotkeys-hook';\nimport {safeParse} from '@bootcamp/shared/src/util';\n\n\nconst Container = styled.div`\n position: relative;\n outline: none;\n width: 100%;\n\n span.highlight {\n cursor: ${({bootcamp}) => bootcamp === 'mcat' ? 'text' : 'pointer'};\n }\n`;\nconst Tooltip = styled.img.attrs({\n src: highlightIcon,\n})`\n display: flex;\n background: ${({position: {transparent}}) => transparent ? 'transparent' : 'yellow'};\n width: ${({position: {width}}) => width ? width : 26}px;\n height: ${({position: {transparent}}) => transparent ? 32 : 26}px;\n position: ${({position: {transparent}}) => transparent ? 'fixed' : 'absolute'};\n top: ${({position: {top, transparent}}) => transparent ? top + 5 : top}px;\n left: ${({position: {left}}) => left}px;\n\n z-index: 10000000000;\n\n visibility: ${({position}) => Object.keys(position).length ? 'visible' : 'hidden'};\n color: black;\n border: ${({position: {transparent}}) => transparent ? 'none' : '1px solid red'};\n cursor: pointer;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n`;\nconst StrikethroughTooltip = styled(Tooltip)`\n display: flex;\n width: ${({position: {width}}) => width}px;\n`;\n\nconst TooltipWrapper = styled.div`\n position: relative;\n display: flex;\n width: 100%;\n height: 100%;\n`;\n\nconst Left = styled.div`\n width: 32px;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n\n`;\nconst Right = styled.div`\n flex: 1;\n`;\nconst HighlightDropdown = styled.div`\n position: absolute;\n visibility: ${({showingDropdown}) => showingDropdown ? 'visible' : 'hidden'};\n top: 100%;\n left: 0;\n right: 0;\n width: 202px;\n background: ${({theme, mcatTheme}) => mcatTheme === 'salmon' ? '#FDD3C5' : mcatTheme === 'black' ? 'black' : theme.colors.prometricPalette.mcat.dark};\n display: flex;\n flex-direction: column;\n padding: 4px;\n ${({mcatTheme}) => mcatTheme === 'salmon' && css`\n border: 1px solid black;\n ${OptionWrapper} {\n color: black;\n }\n `}\n ${({mcatTheme}) => mcatTheme === 'black' && css`\n border: 1px solid white;\n `}\n`;\nconst AddWrapper = styled.div`\n display: flex;\n flex-direction: row;\n`;\nconst Add = styled.div`\n width: 23px;\n height: 23px;\n background: ${({theme}) => theme.colors.prometricPalette.mcat.highlight};\n margin-bottom: 2px;\n margin-right: 6px;\n`;\nconst AddBlue = styled(Add)`\n background: ${({theme}) => theme.colors.prometricPalette.mcat.highlightBlue};\n`;\nconst Remove = styled(Add)`\n background: transparent;\n border: 2px solid white;\n`;\nconst OptionWrapper = styled.div`\n display: flex;\n color: white;\n align-items: center;\n padding: 2px;\n`;\n\nfunction determineMCATSelectionParentId() {\n const selection = window.getSelection();\n const selectionElement = selection?.focusNode;\n\n let containerId = null;\n\n const passageContainer = document.getElementById('passage-block-passage-wrapper');\n const questionContainer = document.getElementById('question-wrapper');\n const solutionContainer = document.getElementById('question-solution-wrapper');\n\n if (selectionElement) {\n [passageContainer, questionContainer, solutionContainer].forEach(container => {\n if (container?.contains(selectionElement)) {\n containerId = container.id;\n }\n });\n }\n\n return containerId;\n}\n\nconst HighlightMenuTooltip = ({\n onTooltipClick,\n active,\n mode,\n setMode,\n showingDropdown,\n setShowingDropdown,\n tooltipRef,\n ...props\n}) => {\n\n const handleLeftClick = (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n setShowingDropdown(!showingDropdown);\n return false;\n }\n\n const handleClick = (event) => {\n event.preventDefault();\n event.stopPropagation();\n return false;\n };\n\n const preventDefaults = {\n onMouseDown: handleClick,\n onMouseUp: handleClick,\n onClick: handleClick,\n };\n\n const handleMouseUp = (event, color) => {\n event.preventDefault();\n event.stopPropagation();\n\n const highlightKey = color ? `highlight-${color}` : 'highlight';\n const highlightMode = color ? `add-${color}` : 'add';\n\n onTooltipClick(null, highlightKey, false, 'add');\n setShowingDropdown(!showingDropdown);\n setMode(highlightMode);\n };\n\n const handleRightMouseUp = (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n const onlyRemove = mode === 'remove';\n const highlightKey = mode === 'add-blue' ? 'highlight-blue' : 'highlight';\n\n onTooltipClick(null, highlightKey, onlyRemove, mode);\n setShowingDropdown(false);\n };\n\n const handleRemove = (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n const highlightKey = mode === 'add-blue' ? 'highlight-blue' : 'highlight';\n\n onTooltipClick(null, highlightKey, true, 'remove');\n setShowingDropdown(!showingDropdown);\n setMode('remove');\n };\n\n const handleMouseOver = (event) => {\n if (!tooltipRef?.current) return;\n tooltipRef.current.style.color = 'yellow';\n }\n const handleMouseLeave = (event) => {\n if (!tooltipRef?.current) return;\n tooltipRef.current.style.color = 'unset';\n }\n\n useEffect(() => {\n if (!active) {\n setShowingDropdown(false);\n }\n }, [active]);\n\n return (\n \n \n \n {\n \n \n \n handleMouseUp(e, '')}/>\n handleMouseUp(e, 'blue')}/>\n \n \n \n Remove Highlight\n \n \n }\n \n \n \n \n );\n};\n\nconst Highlightable = ({\n className,\n children,\n htmlString,\n setHighlights,\n type,\n disableToolTip=false,\n highlights,\n questionHighlights,\n solutionHighlights,\n strikethroughs,\n tooltipRef,\n strikethroughTooltipRef,\n onlyQbankProp,\n enableKeyboardShortcuts=false,\n mcatTheme,\n onModeChange=() => {},\n}) => {\n const containerRef = useRef(null);\n const containerId = `highlightable-${type}`;\n const {bootcamp} = useUserDataContext();\n\n const [mode, setMode] = useState('add');\n const [active, setActive] = useState(false);\n const [tooltipMenuActive, setTooltipMenuActive] = useState(false);\n const [highlighter, setHighlighter] = useState(createHighlighter(containerId));\n const [tooltipPosition, setTooltipPosition] = useState({});\n const [strikethroughTooltipPosition, setStrikethroughTooltipPosition] = useState({});\n\n const tooltipActive = !tooltipRef?.current && Object.keys(tooltipPosition).length;\n const strikethroughTooltipActive = Object.keys(strikethroughTooltipPosition).length;\n\n useEffect(() => { // reset highlighter whenever the question changes\n const freshHighlighter = createHighlighter(containerId);\n const parsedHighlights = safeParse(highlights, highlights);\n const highlightsToRestore = typeof parsedHighlights === 'object' ? parsedHighlights?.[containerId] : parsedHighlights;\n\n // next two variables are mcat specific since we're using a single highlightable for both the passage and the question / solution\n const questionHighlightsToRestore = safeParse(questionHighlights, questionHighlights);\n const solutionHighlightsToRestore = safeParse(solutionHighlights, solutionHighlights);\n\n let timeouts = [];\n\n [highlightsToRestore, questionHighlightsToRestore, solutionHighlightsToRestore].forEach((serialized, index) => {\n if (!serialized) return;\n\n const contentContainerId = index === 0 ? containerId : index === 1 ? 'question-wrapper' : 'question-solution-wrapper';\n\n try {\n // this set timeout is a bit of a hack to get around some of our dynamic html rendering\n // eg. hyperlink nodes are dynamically updated via JS, and if the highlights are deserialized before\n // the hyperlink markup is fully settled, we get a mismatch between the serialized and actual html\n // resulting in inconsistent highlight restoration\n const timeout = setTimeout(() => freshHighlighter.restoreHighlights(serialized, contentContainerId), 500);\n\n timeouts.push(timeout);\n } catch (error) {\n console.log('error deserializing', error);\n }\n });\n\n setHighlighter(freshHighlighter);\n\n return () => timeouts.forEach(timeout => clearTimeout(timeout));\n\n }, [htmlString, questionHighlights, solutionHighlights, highlights]);\n\n\n const handleTooltipClick = useCallback((event, className='highlight', onlyRemove, selectedMode) => {\n if (!tooltipRef?.current) {\n setTooltipPosition({});\n setStrikethroughTooltipPosition({});\n }\n\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n const containerId = determineMCATSelectionParentId();\n\n if (onlyRemove || selectedMode === 'remove') {\n console.log('removing..', className);\n highlighter.removeHighlights(className, containerId);\n } else {\n ['mcat'].includes(bootcamp)\n ? highlighter.addHighlights(className)\n : highlighter.highlight();\n }\n\n if (bootcamp === 'mcat') {\n setHighlights(highlighter.syncSerializedHighlights(containerId), containerId);\n } else {\n setHighlights({highlights: highlighter.syncSerializedHighlights()});\n }\n }, [setHighlights, highlights]);\n\n const elementInBounds = target => {\n return (\n containerRef &&\n containerRef.current &&\n containerRef.current.contains &&\n containerRef.current.contains(target)\n ) || (\n containerRef &&\n containerRef.current &&\n (containerRef.current === target)\n )\n };\n\n const handleMouseUp = (event) => {\n if (!active || event.target?.nodeName === 'INPUT') return;\n setActive(false);\n setTooltipMenuActive(false);\n\n const selection = window.getSelection();\n const focusNode = selection.focusNode;\n const hasMadeSelection = selection.toString().length;\n\n if (!elementInBounds(event.target) || (focusNode && !elementInBounds(focusNode))) {\n if (!tooltipRef?.current) {\n setTooltipPosition({});\n setStrikethroughTooltipPosition({});\n }\n clearSelection();\n\n return;\n };\n // if we have an active tooltip (implying a click on a selected area outside of the tooltip) OR\n // the selection type isn't Range (implying a single click on an already highlighted range)\n // dehighlight the range / reset selection and toolitp\n if (tooltipActive || selection.type !== 'Range' || !hasMadeSelection) {\n\n if (!tooltipRef?.current) {\n setTooltipPosition({});\n setStrikethroughTooltipPosition({});\n }\n clearSelection();\n\n if (tooltipRef?.current || strikethroughTooltipRef?.current) return;\n\n highlighter.dehighlight(event);\n\n setHighlights({highlights: highlighter.getSerializedHighlights()});\n\n return;\n }\n\n if (disableToolTip) {\n return handleTooltipClick(event);\n } else if (tooltipRef?.current) {\n return;\n }\n\n // otherwise set the tooltip position (offset by container ref's left / top positions)\n const {left, top} = containerRef.current.getBoundingClientRect();\n setTooltipPosition(getTooltipPosition(event, left, top));\n };\n\n const handleMouseDown = (event, id) => {\n // right now the event.detail > 2 condition is preventing the entire block of text\n // from being selected (with a quad or triple) click because errant elements\n // outside of the highlightable container were being included in the selection and were\n // subsequently being highlighted - just need to decide whether or not this is good UI\n // there might be a better way of handling this;\n if (event.target?.nodeName === 'INPUT') return;\n if (tooltipActive || event.detail > 2) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n const handleSetMode = (mode) => {\n setMode(mode);\n onModeChange(mode);\n };\n\n useEffect(() => {\n if (strikethroughTooltipRef?.current) {\n const {left, top, width} = strikethroughTooltipRef.current.getBoundingClientRect();\n setStrikethroughTooltipPosition({top: top - 6, left, width, transparent: true});\n }\n\n if (tooltipRef?.current) {\n const {left, top, width} = tooltipRef.current.getBoundingClientRect();\n setTooltipPosition({top: top - 6, left, width, transparent: true});\n }\n }, [tooltipRef?.current, strikethroughTooltipRef?.current])\n\n useEffect(() => setupEventListeners('mouseup', handleMouseUp), [tooltipActive, strikethroughTooltipActive, active]);\n useEffect(() => setupEventListeners('mousedown', handleMouseDown), [tooltipActive, strikethroughTooltipActive, active]);\n\n const highlightKey = mode === 'add-blue' ? 'highlight-blue' : 'highlight';\n\n useHotkeys('option+h', event => enableKeyboardShortcuts && handleTooltipClick(null, highlightKey, mode === 'remove', mode), [mode, setHighlights]);\n useHotkeys('option+s', event => enableKeyboardShortcuts && handleTooltipClick(null, 'strikethrough'), [setHighlights]);\n\n return (\n setActive(true)} className={className} bootcamp={bootcamp}>\n {tooltipRef?.current\n ? \n : {\n e.preventDefault();\n e.stopPropagation();\n }}\n />\n }\n {!!strikethroughTooltipActive &&\n handleTooltipClick(e, 'strikethrough')}\n onMouseOver={(event) => {\n if (!strikethroughTooltipRef?.current) return;\n strikethroughTooltipRef.current.style.color = 'yellow';\n try {\n const svg = strikethroughTooltipRef?.current?.getElementsByTagName('path')?.[0];\n svg.style.stroke = 'yellow';\n } catch (error) {\n // console.log('error setting fill', error);\n }\n\n }}\n onMouseLeave={(event) => {\n if (!strikethroughTooltipRef?.current) return;\n strikethroughTooltipRef.current.style.color = 'unset';\n try {\n const svg = strikethroughTooltipRef?.current?.getElementsByTagName('path')?.[0];\n svg.style.stroke = 'white';\n } catch (error) {\n // console.log('error setting fill', error);\n }\n }}\n />\n }\n {children}\n \n );\n};\n\nconst Wrapper = ({disable, ...props}) => disable\n ? props.children\n : ;\n\n\nHighlightable.defaultProps = {\n children: null,\n type: 'text',\n htmlString: '',\n setHighlights: () => {},\n};\n\nHighlightable.propTypes = {\n children: PropTypes.node,\n type: PropTypes.string,\n htmlString: PropTypes.string,\n setHighlights: PropTypes.func, // used for coordinating storage of highlights in parent components\n};\n\nexport default Wrapper;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {Menu} from '../Form';\n\n\nfunction renderTestOptions(tags) {\n return [\n ,\n ,\n ...tags.map((tag, index) => (\n \n {tag.test}\n \n ))\n ];\n}\n\n\nfunction renderTopicOptions(tags) {\n const qbTags = tags.filter(tag => tag.contentType === 'questionBank');\n const ptTags = tags.filter(tag => tag.contentType === 'practiceTest');\n const otherTags = tags.filter(tag => !['questionBank', 'practiceTest'].includes(tag.contentType));\n\n return [\n ,\n ,\n ...otherTags.map((tag, index) => (\n \n {tag.topic}\n \n )),\n qbTags.length && ,\n ...qbTags.map((tag, index) => (\n \n {tag.topic}\n \n )),\n ptTags.length && ,\n ...ptTags.map((tag, index) => (\n \n {tag.topic}\n \n )),\n ];\n}\n\nfunction renderSubjectOptions(tags) {\n return [\n ,\n ,\n ...tags.map((tag, index) => (\n \n {tag.subject}\n \n ))\n ];\n}\n\nfunction renderCategoryOptions(tags) {\n return [\n ,\n ,\n ...tags.map((tag, index) => (\n \n {tag.topic}\n \n ))\n ];\n}\n\nconst renderers = {\n test: renderTestOptions,\n subject: renderSubjectOptions,\n topic: renderTopicOptions,\n category: renderCategoryOptions,\n};\n\nconst TagMenu = ({type, tags, name, disabled, minWidth}) => {\n return (\n renderers[type](options)}\n minWidth={minWidth}\n />\n );\n}\n\nTagMenu.propTypes = {\n type: PropTypes.oneOf(['test', 'subject', 'topic']),\n disabled: PropTypes.bool,\n tags: PropTypes.array,\n name: PropTypes.string,\n minWidth: PropTypes.number,\n};\n\nTagMenu.defaultProps = {\n type: 'test',\n disabled: false,\n tags: [],\n name: 'default',\n minWidth: 0,\n};\n\nexport default TagMenu;\n","import React from 'react';\nimport {Link} from 'react-router-dom';\nimport styled, {css} from 'styled-components';\n\nconst Container = styled.div`\n display: inline-flex;\n flex-flow: row wrap;\n white-space: nowrap;\n padding: 4px;\n background-color: ${({ theme }) => theme.lightGrey};\n border-radius: 10px;\n`;\nconst BaseTag = styled.div`\n border-radius: 10px;\n color: white;\n margin: 2px;\n font-size: 10px;\n padding: 6px;\n font-weight: 500;\n letter-spacing: .2px;\n ${({color}) => {\n switch (color) {\n case 'blue':\n return css`\n background: #5096E4;\n `\n case 'purple':\n return css`\n background: #7869E1;\n `\n case 'melon':\n return css`\n background: #F49400;\n `\n case 'green':\n return css`\n background: #00A170;\n `\n case 'red':\n return css`\n background: #E45051;\n `\n case 'pink':\n return css`\n background: #BA5BC7;\n `\n case 'orange':\n return css`\n background: #FFBD68;\n `\n case 'grey':\n return css`\n background: #8F8F8F;\n `\n default:\n return css`\n background: #5096E4;\n `\n }\n }}\n`;\nconst TestTag = styled(BaseTag)`\n background: #22A8F0;\n`;\nconst SubjectTag = styled(BaseTag)`\n background: #3547F2;\n`;\nconst TopicTag = styled(BaseTag)`\n background: #838EF5;\n`;\nconst CategoryTag = styled(BaseTag)`\n background: #838EF5;\n`;\nconst ExamTag = styled(BaseTag)`\n background-color: ${({ theme }) => theme.lightGrey};\n color: ${({ theme }) => theme.darkTextColor};\n`;\nconst StatusTag = styled(BaseTag)`\n background-color: ${({ theme }) => theme.lightGrey};\n color: ${({ theme }) => theme.darkTextColor};\n`;\n\nconst Tag = ({tag, className}) => {\n return (\n \n {tag.test && {tag.test}}\n {tag.subject && {tag.subject}}\n {tag.topic && {tag.topic}}\n {tag.category && {tag.category}}\n {tag.exam && {tag.exam}}\n {tag.status && {tag.status}}\n \n );\n}\n\nconst TagLinksContainer = styled(Container)`\n flex: 1;\n`;\n\nexport const TagLinks = ({tags}) => (\n \n {tags.map(tag => (\n \n {tag.title}\n \n ))}\n \n)\n\nexport const DefaultTag = ({tagName, className}) => (\n \n \n \n)\n\nexport default Tag;\n","import React, {useRef} from 'react';\nimport Vimeo from '@u-wave/react-vimeo';\nimport {useHotkeys} from 'react-hotkeys-hook';\n\nconst VideoPlayer = ({vimeoId, locked, autoplay=false, color=null, onEnd}) => {\n const playerRef = useRef();\n\n useHotkeys('space', async () => {\n try {\n if (await playerRef.current.getPaused()) {\n playerRef.current.play();\n } else {\n playerRef.current.pause();\n }\n } catch (error) {\n console.log('error', error)\n }\n }, [playerRef]);\n\n const onReady = player => {\n playerRef.current = player;\n const defaultPlaybackRate = parseFloat(window.localStorage.getItem('jwplayer-playbackRate')) || 1;\n playerRef.current.setPlaybackRate(defaultPlaybackRate);\n\n const defaultQuality = window.localStorage.getItem('jwplayer-quality') || 'auto';\n playerRef.current.setQuality(defaultQuality);\n\n const defaultText = JSON.parse(window.localStorage.getItem('jwplayer-textTrack') || '{}');\n defaultText?.language && playerRef.current.enableTextTrack(defaultText.language, defaultText.kind);\n }\n\n const onPlaybackRateChange = async () => {\n if (!playerRef.current) return;\n const playbackRate = await playerRef.current.getPlaybackRate();\n window.localStorage.setItem('jwplayer-playbackRate', playbackRate);\n }\n\n const onTextTrackChange = async textTrack => {\n if (!playerRef.current) return;\n window.localStorage.setItem('jwplayer-textTrack', JSON.stringify(textTrack));\n }\n\n const onPlaying = async () => {\n if (!playerRef.current) return;\n const quality = await playerRef.current.getQuality();\n window.localStorage.setItem('jwplayer-quality', quality);\n }\n\n const onError = e => console.log(e);\n\n return (\n \n )\n}\n\nexport default VideoPlayer;\n","import React from 'react';\nimport styled from 'styled-components';\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {Row} from '../../../components/Grid';\n\nconst AdminRow = styled(Row)`\n gap: 8px;\n height: auto;\n width: auto;\n align-items: center;\n`;\n\nconst AdminLink = styled.a.attrs({target: '_blank'})`\n padding: 12px;\n border-radius: 8px;\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n text-decoration: none;\n color: ${({theme}) => theme.brandBlue};\n text-align: center;\n vertical-align: middle;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 6px 8px;\n font-size: 12px;\n width: 48px;\n }\n`;\n\nconst Alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'];\n\nconst AdminButtons = ({className, questionId, correctAnswerIndex}) => {\n const {HAS_EDIT_CAPABILITY, bootcamp} = useUserDataContext();\n\n // NOTE hiding admin buttons in mcat for now b/c they'll be recording videos soon\n if (!HAS_EDIT_CAPABILITY || !questionId) return null;\n\n return (\n \n View\n Edit\n
Correct Answer: {Alphabet[correctAnswerIndex] || correctAnswerIndex}
\n
\n )\n}\n\nexport default AdminButtons;\n","import React, {useCallback, useEffect, useState, useRef} from 'react';\nimport styled from 'styled-components';\nimport {getQuestionBaseWithFaqOnly} from '@bootcamp/shared/src/requests';\nimport {IntercomAPI} from 'react-intercom';\nimport {Button} from '../../Branding/Buttons';\nimport {H4, H3, Body2} from '../../Typography';\nimport {preventDefault} from '../helpers';\nimport {useModalContext} from '../../../contexts/Modal';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {useAsync} from '@bootcamp/shared/src/util/hooks';\nimport {Send} from '@styled-icons/fluentui-system-filled/Send'\nimport {invokeStreamingLambda} from '@bootcamp/shared/src/requests';\nimport {ArrowCircleUp} from '@styled-icons/fluentui-system-filled/ArrowCircleUp';\nimport theme from '@bootcamp/shared/src/styles/theme';\nconst Container = styled.div`\n height: 100%;\n width: 100%;\n max-width: 768px;\n background: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n overflow-y: scroll;\n transition: transform .4s;\n ${({visible}) => visible\n ? `\n transform: none;\n `\n : `\n transform: translateX(100%);\n `\n }\n\n padding: 16px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n max-width: 100%;\n ${({visible}) => visible\n ? `\n transform: none;\n `\n : `\n transform: translateY(100%);\n `\n }\n }\n`;\n\nconst CommentContainer = styled.div`\n width: 100%;\n border-radius: 8px;\n margin-bottom: 16px;\n border: 1px solid ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.borderPrimary : theme.colors.neutralsPalette.light};\n border-radius: 8px;\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n * {\n font-family: proxima-nova !important;\n }\n z-index: 5;\n`;\n\nconst Label = styled(H4)`\n font-weight: 600;\n font-family: proxima-nova;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n border-bottom: 1px solid ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.borderPrimary : theme.colors.neutralsPalette.light};\n height: 56px;\n display: flex;\n align-items: center;\n padding: 0 16px;\n font-size: 18px;\n`;\nconst BootcampAILabel = styled(H3)`\n display: flex;\n align-items: center;\n padding: 12px 16px;\n border-bottom: 1px solid ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.borderPrimary : theme.colors.neutralsPalette.light};\n height: 56px;\n`;\n\nconst Content = styled(Body2)`\n font-family: proxima-nova;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n margin-bottom: 16px;\n`;\n\nconst ConversationContent = styled(Body2)`\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n padding: 16px;\n border-radius: 24px;\n position: relative;\n > :first-child {\n margin-top: 0;\n }\n > :last-child {\n margin-bottom: 0;\n }\n flex: 0;\n p {\n margin: 0;\n }\n`\n\nconst UserContent = styled(ConversationContent)`\n background-color: ${({theme}) => theme.darkModeEnabled ? '#2C2C2C' : `#F0EFFC`};\n align-self: flex-end;\n margin-right: 52px;\n &::after {\n background-image: url(${({profilePicture}) => profilePicture});\n background-repeat: no-repeat;\n border-radius: 100px;\n content: '';\n width: 36px;\n height: 36px;\n background-size: cover;\n position: absolute;\n right: -52px;\n top: 8px;\n }\n\n`;\n\nconst BotContent = styled(ConversationContent)`\n background-color: ${({theme}) => theme.darkModeEnabled ? '#414141' : '#FAFAFA'};\n align-self: flex-start;\n margin-left: 52px;\n &::before {\n background-image: url('https://dekni9rgkrcu0.cloudfront.net/assets/icons/bootcamp-glyph-black.png');\n background-color: white;\n content: '';\n width: 36px;\n height: 36px;\n background-size: contain;\n position: absolute;\n left: -52px;\n top: 8px;\n border-radius: 100px;\n }\n .dots {\n width: 50px;\n height: 20px;\n border-radius: 10px;\n margin: 10px;\n transform: scale(0);\n animation: overall-scale 8s infinite;\n }\n\n .dot {\n animation-timing-function: ease-in;\n animation-iteration-count: infinite;\n animation-name: dot-scale;\n animation-duration: 1s;\n \n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 5px 0px;\n border-radius: 10px;\n background-color: #444;\n transform: scale(0.65);\n \n &:first-of-type {\n margin-left: 6px\n }\n &:nth-of-type(2) {\n animation-delay: 0.15s;\n }\n &:nth-of-type(3) {\n animation-delay: 0.3s;\n }\n }\n\n @keyframes dot-scale {\n 0%, 70% { transform: scale(0.65); }\n 35% { transform: scale(1); }\n }\n\n @keyframes overall-scale {\n 0%, 95% { transform: scale(0); }\n 5%, 90% { transform: scale(1); }\n }\n\n`;\n\nconst CloseButton = styled(Button).attrs(props => ({type: 'primary', size: 'large'}))`\n margin-bottom: 16px;\n`\n\nconst BotInput = styled.input`\n width: 100%;\n border-radius: 24px;\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n padding: 11px 16px;\n font-size: 18px;\n line-height: 24px;\n color: ${({theme}) => theme.darkModeEnabled ? 'white' : theme.colors.neutralsPalette.darkGrey};\n background: white;\n box-sizing: border-box;\n outline: none;\n position: relative;\n background: ${({theme}) => theme.darkModeEnabled ? '#1E1E1E' : '#FAFAFA'};\n padding-right: 48px;\n`;\n\nconst SendButton = styled(ArrowCircleUp).attrs(props => ({size: 32}))``;\n\nconst SendButtonContainer = styled.div`\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n margin: auto;\n padding: 16px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n`\nconst SubmitButton = styled(Button).attrs(props => ({type: 'primary', size: 'large'}))`\n margin-bottom: 16px;\n`\n\nconst IntercomButton = styled(Button).attrs(props => ({type: 'primary', size: 'large'}))`\n margin: 16px 0px;\n`\n\nconst Disclaimer = styled.span`\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n font-size: 12px;\n line-height: 18px;\n text-align: center;\n display: block;\n`\n\nconst Comment = ({content=''}) => {\n const [question, answer] = content.split(' [SEPARATE] ');\n\n return (\n \n \n \n \n \n \n )\n}\n\nconst HeaderImage = styled.img`\n width: 24px;\n height: 24px;\n border-radius: 100px;\n margin-right: 12px;\n background: white;\n`;\n\nexport const BootcampBot = ({questionId, blockId, isVideo=false, extraDetails=null, placeholder}) => {\n const [query, setQuery] = useState();\n const [model, setModel] = useState('gpt-4o');\n const [conversation, setConversation] = useState([]);\n const [conversationId, setConversationId] = useState();\n const [systemPromptOverride, setSystemPromptOverride] = useState();\n const inputRef = useRef();\n const {bootcamp, profPicUrl, cognitoUser, isAdmin} = useUserDataContext();\n const username = cognitoUser?.username;\n const streamLambdaRequest = useCallback(async () => {\n if (!query) return;\n setConversation(prev => [...prev, query, '']);\n setQuery('');\n await IntercomAPI('trackEvent', 'asked-bootcamp-ai', {bootcamp});\n const events = await invokeStreamingLambda('BootBot-Streaming-Conversation', {query, questionId, model, conversationId, returnHTML: true, isVideo, extraDetails, systemPromptOverride, blockId});\n const decoder = new TextDecoder();\n for await (const event of events) {\n if (event.InvokeComplete) {\n if (event.InvokeComplete.ErrorCode) {\n console.log(\"Error Code:\", event.InvokeComplete.ErrorCode);\n console.log(\"Details:\", event.InvokeComplete.ErrorDetails);\n }\n break;\n }\n if (event.PayloadChunk) {\n const chunk = decoder.decode(event.PayloadChunk.Payload);\n if (chunk.startsWith('{\"conversationId\":')) {\n const {conversationId} = JSON.parse(chunk);\n setConversationId(conversationId);\n continue;\n }\n setConversation(conversation => {\n const last = conversation[conversation.length - 1];\n return [...conversation.slice(0, -1), last + chunk]\n });\n }\n }\n }, [query, model]);\n const {pending, error, execute} = useAsync(streamLambdaRequest, false);\n\n useEffect(() => {\n const handleEnter = (event) => {\n if (event.key === 'Enter' && !pending && query) {\n execute();\n inputRef.current.value = '';\n }\n };\n window.addEventListener('keydown', handleEnter);\n return () => {\n window.removeEventListener('keydown', handleEnter);\n };\n }, [pending, execute]);\n\n const typingDots = `\n
\n
\n
\n
\n
\n `\n return (\n \n Ask Bootcamp AI\n {conversation.length > 0 && !error && \n {[...conversation].reverse().map((content, index) => index % 2 === 1 ? : )}\n }\n
\n
\n setQuery(e.target.value)} />\n {!pending && (\n execute()}>\n \n \n )}\n
\n {\n if (!isAdmin) return;\n setSystemPromptOverride();\n const systemPromptOverride = window.prompt('Enter system prompt override:');\n if (systemPromptOverride) {\n setSystemPromptOverride(systemPromptOverride);\n }\n }}>Can't find the answer to your question? Chat with Bootcamp AI to get instant help!\n
\n
\n )\n}\n\nconst ConversationContainer = styled.div`\n display: flex;\n flex-direction: column-reverse;\n gap: 16px;\n max-height: 50vh;\n overflow-y: auto;\n padding: 16px;\n max-width: 1000px;\n margin: 0 auto;\n`;\n\n\nconst QuestionFAQs = ({questionId, intercomQuestionString, close}) => {\n const [visible, setVisible] = useState()\n const [comments, setComments] = useState([]);\n const {modalDispatch} = useModalContext();\n const {bootcamp} = useUserDataContext();\n useEffect(() => {\n async function fetch () {\n const {data: {getQuestionBase: {comments}}} = await getQuestionBaseWithFaqOnly(questionId) || {data: {getQuestionBase: {comments: {items: []}}}};\n if (comments.items.length || (['dat', 'oat'].includes(bootcamp) && !window.location.pathname.includes('perceptual-ability'))) {\n modalDispatch({type: 'style', modalContainerStyle: theme => `\n background: ${theme.overlays.opacity.dark._300};\n align-items: flex-start;\n justify-content: flex-end;\n z-index: 10;\n ${theme.mediaQueries.tablet} {\n background: ${theme.overlays.opacity.dark._400};\n }\n `});\n setVisible(true);\n setComments(comments.items);\n } else {\n close();\n IntercomAPI('showNewMessage', intercomQuestionString);\n }\n }\n fetch();\n }, []);\n\n return (\n \n \n Close FAQs\n \n \n {comments.map(comment => )}\n \n )\n}\n\nexport default QuestionFAQs;","import React, {useState, useEffect, useMemo, useRef} from 'react';\nimport ReactDOM from 'react-dom';\nimport styled from 'styled-components';\nimport {IntercomAPI} from 'react-intercom';\nimport Highlightable from '../../components/Highlightable';\nimport {TagLinks} from '../../components/Tags';\nimport {Column} from '../../components/Grid';\nimport moment from 'moment';\nimport VideoPlayer from '../../components/VideoPlayer';\nimport shortcode from 'shortcode-parser';\nimport AdminButtons from './components/AdminButtons';\nimport {useModalContext} from '../../contexts/Modal';\nimport QuestionFAQs from '../../components/Modal/components/QuestionFAQs';\nimport {determineColorFromTitle} from '@bootcamp/shared/src/util';\n\nshortcode.add('toggle', (buff, opts) => {\n return `\n
\n

${opts.title_open}

\n

\n ${buff}\n
\n
\n `;\n});\n\nconst ChoiceContainer = styled.label`\n min-height: 30px;\n height: auto;\n border-radius: 2px;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n background-color: ${({isCorrect, isIncorrect}) => isCorrect ? 'rgba(123, 213, 110, 0.5)' : isIncorrect ? 'rgba(251, 126, 122, 0.5)' : null};\n font-weight: ${({isCorrect}) => isCorrect && 'bold'};\n margin-bottom: .5em;\n user-select: none;\n text-decoration: ${({isCrossed}) => isCrossed ? 'line-through' : 'none'};\n opacity: ${({isCrossed}) => isCrossed ? 0.6 : 1};\n &:last-child {\n margin-bottom: 0;\n }\n cursor: pointer;\n`\nconst Option = styled.input.attrs({ type: 'radio', name: 'answer' })`\n cursor: pointer;\n`\nconst LabelText = styled.span`\n padding-left: 5px;\n * {\n max-width: 100%;\n font-size: 16px !important;\n display: inline;\n }\n p {\n margin: 0;\n }\n img {\n height: auto;\n }\n .sup, .sub, sup, sub {\n font-size: 12px !important;\n }\n .sup {\n vertical-align: sup;\n }\n .sub {\n vertical-align: sub;\n }\n .fr-dib, .fr-dii {\n margin: 0 !important;\n display: inline !important;\n vertical-align: middle !important;\n }\n max-width: 100%;\n font-size: 16px !important;\n display: inline;\n`\n\nconst alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\n\nconst AnswerChoice = ({answer, isCrossed, isSelected, setSelectedAnswerIndex, updateCrossedAnswerIndexes, showingExplanation, answerIndex}) => {\n const [answerText, answerCorrect] = answer;\n\n const isCorrect = answerCorrect && showingExplanation;\n const isIncorrect = !answerCorrect && isSelected && showingExplanation;\n\n function handleContextMenu(event) {\n event.preventDefault();\n event.stopPropagation();\n\n updateCrossedAnswerIndexes();\n }\n\n const answerLetter = alphabet[answerIndex];\n\n const letteredAnswerText = `${answerLetter}. ${answerText}`;\n\n return (\n \n {\n setSelectedAnswerIndex();\n isCrossed && updateCrossedAnswerIndexes();\n }}\n />\n {useMemo(() => , [letteredAnswerText])}\n \n )\n}\n\nconst AnswerBoxContainer = styled.form`\n border: 1px solid #e1e8ed;\n border-radius: 5px;\n padding: .75em 1em;\n clear: both;\n width: 100%;\n`;\n\nconst AnswerBox = ({\n answers,\n selectedAnswerIndex,\n setSelectedAnswerIndex,\n showingExplanation,\n crossedAnswerIndexes,\n updateCrossedAnswerIndexes,\n}) => {\n\n return (\n \n {answers.map((answer, index) => {\n return (\n setSelectedAnswerIndex(index)}\n updateCrossedAnswerIndexes={() => updateCrossedAnswerIndexes(index)}\n isSelected={selectedAnswerIndex === index}\n isCrossed={crossedAnswerIndexes.indexOf(index) > -1}\n answer={answer}\n showingExplanation={showingExplanation}\n answerIndex={index}\n />\n )\n })}\n \n )\n}\n\n\n const Container = styled(Column)`\n transform: translate3d(0,0,0);\n padding: 1em 0;\n align-items: flex-start;\n height: auto;\n\n img {\n display: block;\n margin: 12px 0px;\n }\n `;\n const Prompt = styled.div`\n * {\n max-width: 100%;\n font-size: 18px !important;\n line-height: 1.5em;\n font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;\n margin: 0;\n }\n p {\n margin: 0;\n }\n ol, ul {\n margin: 1em 0;\n }\n .sup, .sub, sup, sub {\n font-size: 12px !important;\n }\n .sup {\n vertical-align: sup;\n }\n .sub {\n vertical-align: sub;\n }\n img {\n height: auto;\n }\n margin: 1em 0px;\n max-width: 100%;\n width: 100%;\n font-size: 18px !important;\n line-height: 1.5em;\n font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;\n `\n const Solution = styled.div`\n * {\n max-width: 100%;\n font-size: 16px !important;\n line-height: 1.6em;\n font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;\n margin: 0;\n }\n p {\n margin: 0;\n }\n ol, ul {\n margin: 1em 0;\n padding-left: 40px;\n }\n ol {\n list-style: decimal;\n }\n ul {\n list-style: disc;\n }\n hr {\n margin: 40px 0 30px;\n border: 0;\n border-bottom: 1px solid #eee;\n height: 1px;\n }\n .sup, .sub, sup, sub {\n font-size: 12px !important;\n }\n .sup {\n vertical-align: sup;\n }\n .sub {\n vertical-align: sub;\n }\n max-width: 100%;\n font-size: 16px !important;\n line-height: 1.6em;\n font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;\n img {\n height: auto;\n }\n .img-airtable-import {\n max-width: 75%;\n }\n table {\n margin: 0 auto;\n }\n blockquote.callout {\n padding: 15px;\n margin: 0 0 1em 0;\n font-family: 'proxima-nova', sans-serif;\n font-weight: inherit;\n font-size: inherit;\n line-height: inherit;\n background: #F9f9f9;\n color: #333;\n border-left: solid 5px #0F6292;\n }\n blockquote.callout p {\n margin-bottom: 0 !important;\n }\n .toggle-trigger {\n color: grey;\n text-decoration: underline;\n }\n table {\n margin: 0 auto;\n }\n `\n const SolutionBox = styled.div`\n margin: 1em 0 3em;\n border: 1px solid #e1e8ed;\n border-radius: 5px;\n padding: 1.5em;\n width: 100%;\n position: relative;\n `\n const SolutionText = styled.div`\n color: ${({correct}) => correct ? '#7BD46F' : '#FB7E7B'};\n font-weight: 600;\n margin-bottom: 15px;\n `\n const TopicText = styled.span`\n display: block;\n font-weight: 600;\n margin: 1em 0em;\n `;\n const IntercomButtons = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n margin: 45px 0px 10px;\n `;\n\n const IntercomButton = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n background: transparent;\n padding: .75em;\n border: 1px solid #e1e8ed;\n border-radius: 1em;\n margin-right: 2em;\n color: #777;\n text-decoration: none;\n flex-grow: 1;\n text-align: left;\n font: 400 16px;\n cursor: pointer;\n margin-right: 2em;\n &:last-child {\n margin-right: 0;\n }\n opacity: .75;\n transition: opacity .4s;\n &:hover {\n opacity: 1;\n transition: opacity .4s;\n }\n `;\n\n const QuestionReviewInformation = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n display: flex;\n flex-direction: row;\n padding: 1.5em;\n `;\n\n const Time = styled.div`\n `;\n\n const Mark = styled.div`\n color: #FB7E7B;\n margin-right: 15px;\n `;\n\n // const UpdatedAtText = styled.div`\n // display: block;\n // margin-top: 2em;\n // font-size: 14px;\n // color: #777777;\n // `;\n\n\n function getQuestionReviewUrl(questionId, answerIndex) { // to load question review route for tbc locally use /question-review instead\n return `https://admin.bootcamp.com/tbc-question-review?questionId=${questionId}&answerIndex=${answerIndex}`;\n }\n\n const SolutionContainer = ({solution, citations, didSelectCorrectAnswer, didNotAnswer, selectedAnswerIndex, showFeedback, questionId, tags, didMark, time, solutionRef, updatedAt}) => {\n const {modalDispatch} = useModalContext();\n const {subject, topic} = tags.find(tag => !!tag.topic && tag.contentType !== 'auxiliaryAnatomy') || {};\n const {topic: category} = tags.find(tag => !!tag.topic && tag.contentType === 'auxiliaryAnatomy') || {};\n const questionReviewUrl = getQuestionReviewUrl(questionId, selectedAnswerIndex);\n const parsedSolution = shortcode.parse(solution || '');\n const intercomQuestionString = `I have a content question on ${subject} ${questionReviewUrl}. Specifically:`;\n\n useEffect(() => {\n const handler = event => {\n if (event.target.classList.contains('toggle-trigger')) {\n event.target.parentNode.querySelector('.toggle-content').style.display = 'block';\n }\n }\n solutionRef.current?.addEventListener('click', handler);\n return () => solutionRef.current?.removeEventListener('click', handler);\n }, []);\n const citationsBox = citations ? `\n
\n
\n

View Source(s)

\n
\n ${citations?.replace(/\n
\n ` : ''\n return (\n \n \n {didMark ? \"Marked\" : \"\"}\n \n \n {didNotAnswer ? 'Not Answered' : didSelectCorrectAnswer ? 'Correct' : 'Incorrect'}\n \n {topic && Topic: {topic}}\n {category && Category: {category}}\n {/*updatedAt && Last Updated: {updatedAt}*/}\n {showFeedback && (\n \n subject === 'Perceptual Ability' ?\n IntercomAPI('showNewMessage', intercomQuestionString) :\n modalDispatch({type: 'open', component: QuestionFAQs, componentProps: {questionId, intercomQuestionString}, enableClickClose: true, modalContainerStyle: theme => `\n align-items: flex-start;\n background: transparent;\n justify-content: flex-end;\n z-index: 1;\n `})\n }>\n I have a question about this explanation\n \n IntercomAPI('showNewMessage', `I have content feedback on ${subject} ${questionReviewUrl}. Specifically:`)}>\n I have feedback about this explanation\n \n \n )}\n \n );\n }\n\n\nconst QuestionView = ({\n prompt,\n answers,\n explanation,\n caseset,\n xray,\n clinicalPhoto,\n citations,\n updatedAt,\n tags,\n didSubmitAnswer,\n testBlockName,\n alwaysShowingExplanation,\n onSelectAnswerIndex,\n didSubmitAnswerIndex,\n showFeedback,\n questionId,\n enableHighlighting,\n disableVideos,\n setHighlights,\n highlights,\n questionIndex,\n didMark,\n time,\n savedCrossedAnswerIndexes,\n onCrossedAnswerIndexesUpdate,\n viewKey\n}) => {\n const [selectedAnswerIndex, setSelectedAnswerIndex] = useState(didSubmitAnswerIndex);\n const [crossedAnswerIndexes, setCrossedAnswerIndexes] = useState(savedCrossedAnswerIndexes);\n const solutionRef = useRef();\n\n const filteredAnswers = answers.filter(Array.isArray);\n\n const correctAnswerIndex = filteredAnswers\n .map(([answerText, answerCorrect]) => answerCorrect)\n .indexOf(true);\n // const correctAnswerLetter = alphabet[correctAnswerIndex];\n const didSelectCorrectAnswer = selectedAnswerIndex === correctAnswerIndex;\n const showingExplanation = didSubmitAnswer || alwaysShowingExplanation;\n const didNotAnswer = selectedAnswerIndex === -1;\n\n // selectedAnswerIndex hook\n useEffect(() => {\n if (!filteredAnswers?.length) return;\n if (selectedAnswerIndex !== -1) {\n onSelectAnswerIndex(selectedAnswerIndex, didSelectCorrectAnswer);\n }\n\n alwaysShowingExplanation && setSelectedAnswerIndex(didSubmitAnswerIndex || correctAnswerIndex);\n }, [selectedAnswerIndex]);\n\n function updateCrossedAnswerIndexes(index) {\n if (showingExplanation) return;\n\n const indexes = crossedAnswerIndexes.indexOf(index) > -1\n ? crossedAnswerIndexes.filter(i => i !== index)\n : [...crossedAnswerIndexes, index];\n onCrossedAnswerIndexesUpdate(indexes);\n setCrossedAnswerIndexes(indexes);\n }\n\n useEffect(() => {\n if (!disableVideos && solutionRef.current && showingExplanation) {\n const vimeoNodes = solutionRef.current.querySelectorAll(':not(del) > .video-thumb');\n\n const vimeoIds = new Set([...vimeoNodes].map(node => node.dataset.vimeoId));\n\n [...vimeoIds].forEach(async vimeoId => {\n try {\n vimeoNodes.forEach((node, index) => {\n if (node.dataset.vimeoId === vimeoId) {\n const videoContainer = document.createElement('div');\n videoContainer.className = \"videoContainer\";\n videoContainer.style.marginBottom = '1em';\n if (node.classList.contains('video-lock')) {\n node.insertAdjacentElement('afterEnd',videoContainer);\n } else {\n if (node.parentNode && node.parentNode.children.length === 1 && node.parentNode.children[0].classList.contains('video-thumb') && node.parentNode !== solutionRef.current) {\n node.parentNode.remove();\n } else {\n node.remove();\n }\n\n if (solutionRef.current) solutionRef.current.insertAdjacentElement('afterBegin',videoContainer);\n }\n const videoPlayer = ;\n ReactDOM.render(videoPlayer, videoContainer);\n }\n })\n } catch (e) {\n console.log(e);\n }\n })\n const gifs = solutionRef.current.querySelectorAll('.rubgif');\n\n [...gifs].forEach(gif => {\n gif.style.display = 'none';\n const gifPlayer = document.createElement('gif-player');\n const gifSrc = gif.getAttribute('src');\n gifPlayer.setAttribute('src', gifSrc+'?version=gifplayer');\n gifPlayer.setAttribute('speed', '1');\n gifPlayer.setAttribute('play', true);\n gif.insertAdjacentElement('afterend', gifPlayer);\n });\n }\n return () => {\n if (solutionRef.current) {\n solutionRef.current.querySelectorAll('.videoContainer').forEach(node => node.remove());\n }\n }\n }, [explanation, showingExplanation]);\n\n return (\n \n \n {testBlockName &&\n \n }\n {caseset &&\n \n }\n {xray &&\n \n }\n {clinicalPhoto &&\n \n }\n \n \n \n \n {showingExplanation &&\n \n \n \n }\n \n )\n}\n\nQuestionView.defaultProps = {\n prompt: '',\n answers: '[]',\n explanation: '',\n updatedAt: '',\n onSelectAnswerIndex: () => true,\n alwaysShowingExplanation: false,\n didSubmitAnswerIndex: -1,\n showFeedback: false,\n questionId: '',\n tags: [],\n enableHighlighting: false,\n setHighlights: () => {},\n highlights: null, // this should be a serialized highlight string,\n didMark: false,\n time: \"\",\n savedCrossedAnswerIndexes: [],\n onCrossedAnswerIndexesUpdate: () => true\n}\n\nexport default QuestionView;\n","import React from 'react';\nimport styled, {css} from 'styled-components';\nimport {useHotkeys} from 'react-hotkeys-hook';\nimport Draggable from 'react-draggable';\n\nimport {PopupButton, CloseIcon} from './shared';\n\n\nconst PopupContainer = styled.div`\n background: white;\n box-shadow: 0px 16px 30px rgba(0, 0, 0, 0.24);\n border-radius: 8px;\n color: white;\n resize: both;\n overflow: auto;\n height: auto;\n display: flex;\n flex-direction: column;\n touch-action: none;\n\n ${({noSize}) => !noSize && css`\n width: 50%;\n min-height: 283px;\n min-width: 375px;\n max-height: 80vh;\n max-width: 80vw;\n `}\n\n ${({fullSize}) => fullSize && css`\n height: 80vh;\n width: 80vw;\n `}\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n height: 20vh;\n }\n\n font-size: 14px;\n`;\n\nconst PopupHeader = styled.div`\n background: ${({color}) => color || '#006DAA'};\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 8px;\n cursor: grabbing;\n font-size: 16px;\n`;\nconst PopupFooter = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 8px;\n background: ${({color}) => color || '#006DAA'};\n`;\n\nexport const DraggablePopup = ({\n innerRef,\n close,\n headerContent,\n footerContent,\n children,\n fullSize=false,\n noSize=false,\n className,\n color,\n fixed,\n positionProps={},\n showHeader=true,\n showFooter=true,\n}) => {\n\n useHotkeys('esc', close, [close]);\n\n const draggableProps = fixed\n ? {positionOffset: {x: 0, y: '-50vh'}}\n : {};\n\n const popupContainerProps = fixed\n ? {style: {position: 'fixed', zIndex: 10000000}}\n : {};\n\n return (\n \n e.stopPropagation()} noSize={noSize} fullSize={fullSize} className={className} {...popupContainerProps}>\n \n {headerContent}\n \n \n \n \n {children}\n \n {footerContent}\n Close\n \n \n \n )\n};\n\nconst Wrapper = styled.div`\n position: fixed;\n z-index: 10000000;\n width: 50%;\n resize: horizontal;\n overflow: auto;\n\n ${({noSize}) => noSize && css`\n width: auto;\n overflow: initial;\n `}\n`;\n\nconst InnerWrapper = styled.div`\n width: 100%;\n height: 100%;\n`;\n\nexport const DraggableAndResizablePopup = ({children, noSize}) => {\n return (\n \n \n \n {children}\n \n \n \n );\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport {Times} from '@styled-icons/fa-solid/Times';\nimport {DraggableAndResizablePopup} from '../../Modal/components/DraggablePopup';\n\nconst Frame = styled.iframe.attrs({\n scrolling: 'no',\n frameborder: '1',\n marginheight: '0px',\n marginwidth: '0px',\n height: '228px',\n width: '316px'\n})`\n border:0px #FFFFFF none;\n`;\n\nconst Wrapper = styled.div`\n position: relative;\n overflow: visible;\n max-width: 242px;\n z-index: 10;\n`;\n\nconst Title = styled.div`\n position: absolute;\n background: #000080;\n top: 0;\n width: 100%;\n height: 23px;\n color: white;\n font-size: 9pt;\n font-weight: bold;\n font-family: Arial;\n text-align: center;\n line-height: 23px;\n cursor: grab;\n`;\n\nconst CloseButton = styled(Times)`\n position: absolute;\n top: 0;\n right: 0;\n width: 23px;\n height: 23px;\n text-align: center;\n background: red;\n color: white;\n`;\n\nconst Calculator = ({onCloseExhibit, defaultPosition}) => (\n \n \n Calculator\n \n \n \n \n);\n\nexport default Calculator;\n","import React from 'react';\nimport styled from 'styled-components';\nimport {CalculatorIcon} from '@bootcamp/web/src/components/NCLEXQBank/shared';\nimport {DraggablePopup} from '@bootcamp/web/src/components/Modal/components/DraggablePopup';\n\nconst Frame = styled.iframe.attrs({\n scrolling: 'no',\n frameborder: '1',\n marginheight: '0px',\n marginwidth: '0px',\n})`\n border:0px #FFFFFF none;\n height: 488px;\n width: 250px;\n background: url(\"https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/0.16.1/images/loader-small.gif\") no-repeat center;\n`;\n\nconst Calculator = ({onCloseExhibit, defaultPosition}) => (\n \n Calculator\n
\n }\n footerContent={
}>\n \n \n);\n\nexport default Calculator;\n","import React from 'react';\nimport styled from 'styled-components';\nimport {Times} from '@styled-icons/fa-solid/Times';\nimport { DraggableAndResizablePopup } from '../../Modal/components/DraggablePopup';\n\nconst Wrapper = styled.div`\n z-index: 11;\n background: white;\n position: relative;\n overflow: visible;\n border: 1px solid #ccc;\n margin-top: 23px;\n`;\nconst Image = styled.img.attrs({draggable: false})`\n width: 100%;\n height: auto;\n`;\n\nconst CloseButton = styled(Times)`\n position: absolute;\n top: -23px;\n right: 0;\n width: 23px;\n height: 23px;\n text-align: center;\n background: red;\n color: white;\n cursor: pointer;\n`;\n\nconst PeriodicTable = ({onCloseExhibit, template}) => (\n \n \n \n \n \n \n);\n\nexport default PeriodicTable;\n","import firstBy from 'thenby';\n\nexport const loadMoreMasteryIntoBlock = (test, blockIndex, masteryArray, nextToken) => {\n\n let updatedTest = Object.assign({}, test);;\n\n updatedTest.blockConnections.items[blockIndex].testBlock = {\n ...test.blockConnections.items[blockIndex].testBlock,\n questionConnections: {\n items: [...test.blockConnections.items[blockIndex].testBlock.questionConnections.items, ...masteryArray]\n },\n nextToken,\n };\n\n return updatedTest;\n}\n\nexport function getTestReviewBlockConnections (test, quizProgress) {\n const blocks = getTestBlockConnections(test);\n\n if (!quizProgress) return [];\n\n return quizProgress.reduce((acc, blockProgress, index) => {\n let blockConnection = {}\n switch (index) {\n case 0:\n blockConnection = {\n testBlock: {type: 'startReview'},\n index\n };\n break;\n\n case quizProgress.length - 1:\n blockConnection = {\n testBlock: {type: 'endReview'},\n index\n }\n break;\n\n default:\n const testBlock = (blocks[index] || {}).testBlock || {type: 'questionSet'};\n\n const savedProgressQuestionConnections = blockProgress.questions.map((questionProgress, index) => (\n {\n index,\n question: questionProgress.question\n }\n ));\n\n blockConnection = {\n testBlock: {\n ...testBlock,\n questionConnections: {\n items: savedProgressQuestionConnections\n }\n },\n index\n }\n break;\n }\n return [\n ...acc,\n blockConnection\n ];\n\n }, []);\n}\n\nexport const getTestBlockConnections = (test) => {\n return (!!test && !!test.blockConnections && test.blockConnections.items.slice().sort(firstBy('index'))) || [];\n};\n","import {useEffect, useState} from 'react';\n\nimport {useUserDataContext} from '../UserData';\nimport {useBootcampConfigContext} from '../BootcampConfig';\nimport {getTestBlockConnections} from './helpers';\n\nimport {getTestBlockQuestions, getRevisions, getTagType, getInObj, calculateAnswerPercentage, getQuestionParts, getQuestionPartsAsync, safeParse} from '@bootcamp/shared/src/util';\nimport {insertAtIndex, getTags, safeStringify} from '@bootcamp/shared/src/util';\nimport {calculateMaxScore} from '@bootcamp/shared/src/util/scoring/NCLEX';\nimport {saveTestProgress, createBlockProgress, createQuestionProgress, updateQuestionProgress, updateBlockProgress, updateQuestionMastery, getAllQuestionMastery, getQuestionAnswerData, getTestProgress, getTestProgressByUserIdHashTestId, trackFirstQuestionAttempt, getQuestionBaseTests, trackQuizProgressPerformance, trackNCLEXQuizProgressPerformance} from '@bootcamp/shared/src/requests';\nimport nanoid from 'nanoid';\nimport firstBy from 'thenby';\nimport Storage from '@aws-amplify/storage';\nimport * as Sentry from '@sentry/react'; // TODO set up sentry for app.bootcamp\n\nconst generateId = (userId) => `${nanoid()}_${userId}`;\n\nconst questionProgressTemplate = {\n customTest: {\n selectedAnswerIndex: -1,\n didSelectCorrectAnswer: false,\n didSkip: true,\n didMark: false,\n didCheck: false,\n time: \"0\",\n highlights: '',\n masteryLevel: 'none',\n bookmarked: false,\n isSequentialSet: false,\n isSequentialStart: false,\n isSequentialEnd: false,\n seen: false\n },\n questionSearchBank: {\n selectedAnswerIndex: -1,\n didSelectCorrectAnswer: false,\n didSkip: true,\n didMark: false,\n didCheck: false,\n time: \"0\",\n highlights: '',\n masteryLevel: 'none',\n bookmarked: false,\n isSequentialSet: false,\n isSequentialStart: false,\n isSequentialEnd: false,\n seen: false\n },\n practiceTest: {\n selectedAnswerIndex: -1,\n didSelectCorrectAnswer: false,\n didSkip: true,\n didMark: false,\n time: \"0\",\n current: false,\n highlights: '',\n masteryLevel: 'none',\n crossedAnswerIndexes: []\n },\n coursePlayer: {\n selectedAnswerIndex: -1,\n didSelectCorrectAnswer: false,\n didSkip: true,\n didMark: false,\n didCheck: false,\n time: \"0\",\n current: false,\n highlights: '',\n crossedAnswerIndexes: []\n },\n tbcQuestionBank: {\n selectedAnswerIndex: -1,\n didSelectCorrectAnswer: false,\n didSkip: true,\n didMark: false,\n didCheck: false,\n time: \"0\",\n highlights: '',\n masteryLevel: 'none',\n bookmarked: false,\n },\n tbcSavedBank: {\n selectedAnswerIndex: -1,\n didSelectCorrectAnswer: false,\n didSkip: true,\n didMark: false,\n didCheck: false,\n time: \"0\",\n highlights: '',\n masteryLevel: 'none',\n bookmarked: false,\n },\n quickReview: {\n selectedAnswerIndex: -1,\n didSelectCorrectAnswer: false,\n didSkip: true,\n didMark: false,\n didCheck: false,\n time: \"0\",\n highlights: '',\n masteryLevel: 'none',\n bookmarked: false,\n },\n masteryReview: {\n selectedAnswerIndex: -1,\n didSelectCorrectAnswer: false,\n didSkip: true,\n didMark: false,\n didCheck: false,\n time: \"0\",\n highlights: '',\n masteryLevel: 'none',\n bookmarked: false,\n },\n bookmarkedQuestionReview: {\n selectedAnswerIndex: -1,\n didSelectCorrectAnswer: false,\n didSkip: true,\n didMark: false,\n didCheck: false,\n time: \"0\",\n highlights: '',\n masteryLevel: 'none',\n bookmarked: true,\n },\n testReview: {\n selectedAnswerIndex: -1,\n didSelectCorrectAnswer: false,\n didSkip: true,\n didMark: false,\n time: \"0\",\n highlights: '',\n masteryLevel: 'none',\n bookmarked: false,\n }\n};\n\nconst progressTemplate = {\n practiceTest: {\n startBlock: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n passage: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n highlights: () => '',\n questions: (block, userId) => getQuestionProgressArray(questionProgressTemplate.practiceTest, block, userId, 'practiceTest')\n },\n questionSet: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n highlights: () => '',\n questions: (block, userId) => getQuestionProgressArray(questionProgressTemplate.practiceTest, block, userId, 'practiceTest'),\n },\n endBlock: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n },\n coursePlayer: {\n startBlock: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n text: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n status: () => '',\n newBlockProgress: () => true\n },\n lesson: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n highlights: () => '',\n status: () => '',\n newBlockProgress: () => true\n },\n passage: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n highlights: () => '',\n status: () => '',\n questions: (block, userId) => getQuestionProgressArray(questionProgressTemplate.coursePlayer, block, userId),\n newBlockProgress: () => true\n },\n questionSet: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n highlights: () => '',\n questions: (block, userId) => getQuestionProgressArray(questionProgressTemplate.coursePlayer, block, userId),\n status: () => '',\n newBlockProgress: () => true\n },\n endBlock: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n },\n tbcQuestionBank: {\n startBlock: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n questionSet: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n highlights: () => '',\n isSequentialSet: (block) => {return JSON.parse(block.components?.find(component => component.renderType === 'config')?.contents || 'null')?.isSequentialSet},\n questions: (block, userId, masteryMap) => getQuestionProgressArray(questionProgressTemplate.tbcQuestionBank, block, userId, 'tbcQuestionBank', masteryMap),\n },\n caseQuestionSet: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n highlights: () => '',\n questions: (block, userId, masteryMap) => getQuestionProgressArray(questionProgressTemplate.practiceTest, block, userId, 'tbcQuestionBank', masteryMap),\n },\n passage: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n highlights: () => '',\n questions: (block, userId, masteryMap) => getQuestionProgressArray(questionProgressTemplate.tbcQuestionBank, block, userId, 'tbcQuestionBank', masteryMap)\n },\n endBlock: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n },\n tbcSavedBank: {\n startBlock: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n questionSet: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n highlights: () => '',\n isSequentialSet: (block) => {return JSON.parse(block.components?.find(component => component.renderType === 'config')?.contents || 'null')?.isSequentialSet},\n questions: (block, userId, masteryMap) => getQuestionProgressArray(questionProgressTemplate.tbcQuestionBank, block, userId, 'tbcQuestionBank', masteryMap),\n },\n caseQuestionSet: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n highlights: () => '',\n questions: (block, userId, masteryMap) => getQuestionProgressArray(questionProgressTemplate.practiceTest, block, userId, 'tbcQuestionBank', masteryMap),\n },\n passage: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n highlights: () => '',\n questions: (block, userId, masteryMap) => getQuestionProgressArray(questionProgressTemplate.tbcQuestionBank, block, userId, 'tbcQuestionBank', masteryMap)\n },\n endBlock: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n sectionBreak: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n },\n questionSearchBank: {\n startBlock: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n questionSet: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n highlights: () => '',\n isSequentialSet: (block) => {return JSON.parse(block.components?.find(component => component.renderType === 'config')?.contents || 'null')?.isSequentialSet},\n questions: (block, userId, masteryMap) => getQuestionProgressArray(questionProgressTemplate.tbcQuestionBank, block, userId, 'tbcQuestionBank', masteryMap),\n },\n caseQuestionSet: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n highlights: () => '',\n questions: (block, userId, masteryMap) => getQuestionProgressArray(questionProgressTemplate.practiceTest, block, userId, 'tbcQuestionBank', masteryMap),\n },\n passage: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n highlights: () => '',\n questions: (block, userId, masteryMap) => getQuestionProgressArray(questionProgressTemplate.tbcQuestionBank, block, userId, 'tbcQuestionBank', masteryMap)\n },\n endBlock: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n sectionBreak: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n },\n customTest: {\n startBlock: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n startCustomTest: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: (block, userId) => generateId(userId),\n },\n questionSet: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: (block, userId) => generateId(userId),\n highlights: () => '',\n questions: (block, userId, masteryMap) => getQuestionProgressArray(questionProgressTemplate.customTest, block, userId, 'customTest', masteryMap),\n },\n endBlock: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: (block, userId) => generateId(userId),\n },\n },\n quickReview: {\n startQuickReview: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n questionSet: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n highlights: () => '',\n questions: (block, userId) => getQuestionProgressArray(questionProgressTemplate.quickReview, block, userId, 'quickReview'),\n },\n endBlock: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n },\n masteryReview: {\n startMasteryReview: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n questionSet: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n highlights: () => '',\n questions: (block, userId) => getQuestionProgressArray(questionProgressTemplate.masteryReview, block, userId, 'masteryReview'),\n },\n endBlock: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n },\n bookmarkedQuestionReview: {\n startBookmarkedQuestionReview: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n questionSet: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n highlights: () => '',\n questions: (block, userId) => getQuestionProgressArray(questionProgressTemplate.masteryReview, block, userId, 'masteryReview'),\n },\n endBlock: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n },\n testReview: {\n startReview: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n passage: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n highlights: () => '',\n questions: (block, userId) => getQuestionProgressArray(questionProgressTemplate.practiceTest, block, userId)\n },\n questionSet: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n highlights: () => '',\n questions: (block, userId) => getQuestionProgressArray(questionProgressTemplate.practiceTest, block, userId)\n },\n endReview: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n },\n fullLengthTest: {\n startFullLength: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n passage: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n highlights: () => '',\n questions: (block, userId) => getQuestionProgressArray(questionProgressTemplate.practiceTest, block, userId, 'fullLengthTest'),\n },\n questionSet: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n highlights: () => '',\n questions: (block, userId) => getQuestionProgressArray(questionProgressTemplate.practiceTest, block, userId, 'fullLengthTest'),\n },\n sectionBreak: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n sectionStart: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n sectionReview: {\n blockProgressId: (block, userId) => generateId(userId),\n testBlockId: block => block.id,\n },\n }\n};\n\nasync function getMasteryMap (userId, questions, template, testId) {\n // these templates don't need mastery in progress: no map required\n if (['practiceTest', 'fullLengthTest'].includes(template)) return {};\n\n // these templates have mastery embedded in questionbases: index by questionBaseId\n if (['quickReview', 'masteryReview'].includes(template)) {\n return questions.reduce((acc, question) => ({...acc, [question.id]: question}), {});\n }\n // otherwise, create masteryMap by indexing questionMastery per questionBaseId\n const questionMasteryPromises = questions.map(question => getAllQuestionMastery({userIdHashQuestionBaseId: `${userId}#${question.id}`}));\n const userQuestionMasteryResult = await Promise.all(questionMasteryPromises);\n return userQuestionMasteryResult.reduce((acc, {data: {getQuestionMastery: questionMastery}}) => questionMastery ? {...acc, [questionMastery.userIdHashQuestionBaseId.replace(`${userId}#`, '')]: questionMastery } : acc, {});\n}\n\nasync function getQuestionProgressArray(progressTemplate, testBlock, userId, template, masteryMap) {\n const questions = getTestBlockQuestions(testBlock, template === 'customTest');\n\n const userQuestionMasteryMap = masteryMap || await getMasteryMap(userId, questions, template);\n\n return Array.from({length: questions.length}).map((__, index) => {\n const question = questions[index];\n const questionRevisions = getRevisions(question);\n const {prompt, type, answers, answerGroups, answerMatrix, tags} = getQuestionParts(question);\n const {id: questionRevisionId} = questionRevisions[questionRevisions.length - 1] || {};\n const {masteryLevel, bookmarked} = userQuestionMasteryMap[question.id] || {};\n const testTag = tags?.find((tag) => tag && tag.type === 'test')?.test;\n progressTemplate.masteryLevel = masteryLevel || 'none';\n progressTemplate.bookmarked = bookmarked;\n progressTemplate.didMark = !!bookmarked;\n\n const [subject, topic] = getTags(testTag === 'NCLEX' ? 'nclex' : '', question.tags.items);\n if (template === 'customTest' || template === 'masteryReview') {\n progressTemplate.subject = subject;\n progressTemplate.topic = topic;\n progressTemplate.subjectTopic = `${subject}##${topic}`;\n }\n\n progressTemplate.answerState = {\n score: 0,\n maxScore: calculateMaxScore(prompt, type, answers, answerGroups, answerMatrix),\n type,\n };\n\n if (template === 'customTest') {\n progressTemplate.isSequentialSet = question.isSequentialSet\n progressTemplate.isSequentialStart = question.isSequentialStart\n progressTemplate.isSequentialEnd = question.isSequentialEnd\n }\n\n function getOriginalTestId () {\n const {originalTestId} = question; // originalTestId stored in questionbase when creating QuickReview test\n if (originalTestId) return originalTestId;\n if (template === 'fullLengthTest') {\n const blockSubject = testBlock.type === 'passage' ? 'Reading' : getInObj(['title'], testBlock, '').split(' ')[0];\n const originalTestBlock = blockSubject\n ? testBlock?.blockConnections?.items.find(({test}) => {\n const testTitle = getInObj(['config', 'title'], test, '');\n if (testTitle.includes('Plus Pack')) return false; // skip plus pack attribution for DAT questions\n return testTitle.match(blockSubject)\n })\n : {};\n return getInObj(['test', 'id'], originalTestBlock, null);\n }\n }\n\n return {...progressTemplate, originalTestId: getOriginalTestId(), questionProgressId: generateId(userId), questionBaseId: question.id, questionRevisionId, questionIndex: index, question};\n });\n}\n\nconst useProgress = (test, testResultId, template, blockIndex, match, isReadinessExam, customTestConfig) => {\n const [quizProgress, setQuizProgress] = useState([]);\n const [testProgressId, setTestProgressId] = useState();\n const [restoringProgress, setRestoringProgress] = useState(false);\n const [answerData, setAnswerData] = useState({});\n const {config} = useBootcampConfigContext();\n const {testProgress, setTestProgress, fetchTestProgress, DEFAULT_USER_ID, bootcamp, cognitoUser, isAdmin} = useUserDataContext();\n const getAnswerDataUploadKey = questionId => `answerData/question/${questionId}.json`;\n\n const urlParams = new URLSearchParams(window.location.search);\n const isReview = urlParams.get('review');\n\n const getAnswerDataForQuestion = async (questionId, revisionId, formatter) => {\n if (!questionId || answerData[questionId]) return;\n\n const answerDataUploadKey = getAnswerDataUploadKey(questionId);\n\n try {\n const data = await getQuestionAnswerData(questionId, answerDataUploadKey, formatter);\n\n setAnswerData(currentState => ({...currentState, [questionId]: data?.[revisionId] || {}}));\n\n } catch (error) {\n // console.log('error fetching answer data');\n }\n };\n\n const updateQuizProgress = (blockProgress, blockIndexOverride=blockIndex) => {\n return setQuizProgress(quizProgress => ([\n ...quizProgress.slice(0, blockIndexOverride),\n {...quizProgress[blockIndexOverride], ...blockProgress},\n ...quizProgress.slice(blockIndexOverride + 1)\n ]))\n };\n\n const instantiateBlockProgressFromTemplate = (testBlock, masteryMap) => {\n const blockTemplate = progressTemplate[template][testBlock.type];\n\n const newBlockProgress = Object.keys(blockTemplate)\n .reduce(async (acc, key) => ({...(await acc), [key]: await blockTemplate[key](testBlock, DEFAULT_USER_ID, masteryMap)}), {});\n\n return newBlockProgress;\n };\n\n const instantiateQuestionProgressFromArray = (startIndex, questionArray) => {\n const progressTemplate = questionProgressTemplate[template];\n return questionArray\n .filter(({question}) => question?.id) // filter out any dead-end questions\n .map(({question, ...questionProgress}, index) => ({...progressTemplate, ...questionProgress, questionBaseId: question.id, index: startIndex + index, questionIndex: startIndex + index}));\n };\n\n const syncProgress = async (testProgress) => {\n if (!testProgress || !test) return;\n // we need to synchronize the test structure with the saved test progress, and if there are discrepancies, we need to update the saved testProgress\n const testBlockConnections = getTestBlockConnections(test);\n\n const allQuestions = testBlockConnections.reduce((acc, {testBlock}) => [...acc, ...getTestBlockQuestions(testBlock)], []);\n const allQuestionProgresses = testProgress.blockProgresses.items.reduce((acc, blockProgress) => [...acc, ...(blockProgress.questionProgresses?.items || [])], []);\n\n const questionMasteryPromises = allQuestions.map(question => getAllQuestionMastery({userIdHashQuestionBaseId: `${DEFAULT_USER_ID}#${question.id}`}));\n const userQuestionMasteryResult = await Promise.all(questionMasteryPromises);\n const userQuestionMasteryMap = userQuestionMasteryResult.reduce((acc, {data: {getQuestionMastery: questionMastery}}) => questionMastery ? {...acc, [questionMastery.userIdHashQuestionBaseId.replace(`${DEFAULT_USER_ID}#`, '')]: questionMastery} : acc, []);\n\n const restoredProgress = testBlockConnections.reduce(async (acc, {testBlock}, index) => {\n let blockProgress = testProgress.blockProgresses.items.find(blockProgress => blockProgress.blockId === testBlock.id);\n if (!blockProgress) {\n blockProgress = await instantiateBlockProgressFromTemplate(testBlock, []);\n blockProgress.id = blockProgress.blockProgressId\n await createBlockProgress(blockProgress.id, testProgress.id, testBlock.id, {}, index);\n blockProgress.questionProgresses = {items: []};\n }\n const {id: blockProgressId, blockId, highlights, status} = blockProgress;\n\n const isSequentialBlock = JSON.parse(testBlock?.components?.find(component => component.renderType === 'config')?.contents || \"{}\")?.isSequentialSet;\n\n const blockSubject = testBlock.type === 'passage' ? 'Reading' : getInObj(['title'], testBlock, '').split(' ')[0];\n const originalTestBlock = blockSubject\n ? testBlock?.blockConnections?.items.find(({test}) => {\n const testTitle = getInObj(['config', 'title'], test, '');\n if (bootcamp === 'dat' && testTitle.includes('Plus Pack')) return false; // skip plus pack attribution for DAT questions\n return testTitle.match(blockSubject)\n })\n : {};\n const originalTestId = getInObj(['test', 'id'], originalTestBlock, null);\n\n const questions = getTestBlockQuestions(testBlock);\n\n const restoredQuestionProgresses = await questions.reduce(async (questionProgressesAcc, question, index) => {\n const questionRevisionId = question.latestRevisions.items[0].id;\n const questionProgress = allQuestionProgresses.find(questionProgress => questionProgress?.question?.id === question?.id);\n if (!questionProgress) {\n const progressTemplate = questionProgressTemplate[template];\n const [subject, topic] = getTags(bootcamp, question.tags.items);\n const {masteryLevel, bookmarked} = userQuestionMasteryMap[question.id] || {};\n const questionProgressId = generateId(DEFAULT_USER_ID);\n await createQuestionProgress(questionProgressId, blockProgressId, question.id, questionRevisionId, {index, masteryLevel: masteryLevel || 'none', selectedAnswerIndex: -1, didSelectCorrectAnswer: false, didSkip: true, didMark: false, time: \"0\", highlights: ''}, index);\n return [\n ...(await questionProgressesAcc),\n {\n ...progressTemplate,\n questionProgressId,\n questionBaseId: question.id,\n questionRevisionId,\n index,\n questionIndex: index,\n subject,\n topic,\n subjectTopic: `${subject}##${topic}`,\n masteryLevel: masteryLevel || 'none',\n bookmarked,\n originalTestId: originalTestId || question.originalTestId,\n isSequentialSet: isSequentialBlock,\n isSequentialStart: isSequentialBlock && index === 0,\n isSequentialEnd: isSequentialBlock && index === questions.length - 1,\n didMark: bookmarked,\n answerState: {},\n }\n ];\n }\n\n const originalTestIdFromQuestion = question.originalTestId;\n const {id: questionProgressId, answerState, crossedAnswerIndexes, ...questionProgressObj} = questionProgress;\n const {masteryLevel, bookmarked} = userQuestionMasteryMap[question.id] || {};\n const [subject, topic] = getTags(bootcamp, question.tags.items);\n const questionAnswerState = JSON.parse(answerState || '{}');\n const didAnswerNclexQuestion = !!questionAnswerState?.answerState && questionProgress?.didCheck;\n\n const nclexProgressProps = bootcamp === 'nclex' ?\n {\n fullCredit: !!didAnswerNclexQuestion && !!questionAnswerState?.score && !!questionAnswerState?.maxScore && questionAnswerState?.score === questionAnswerState?.maxScore,\n partialCredit: !!didAnswerNclexQuestion && questionAnswerState?.score > 0 && (questionAnswerState?.score !== questionAnswerState?.maxScore),\n noCredit: (!questionAnswerState?.score || questionAnswerState?.score === 0),\n isSequentialSet: isSequentialBlock,\n isSequentialStart: isSequentialBlock && index === 0,\n isSequentialEnd: isSequentialBlock && index === questions.length - 1,\n didCheck: didAnswerNclexQuestion,\n didSelectCorrectAnswer: null,\n } : {\n didCheck: questionProgressObj.didCheck,\n isSequentialSet: isSequentialBlock,\n isSequentialStart: isSequentialBlock && index === 0,\n isSequentialEnd: isSequentialBlock && index === questions.length - 1,\n };\n\n const restoredQuestionProgress = {\n questionProgressId,\n subject,\n topic,\n subjectTopic: `${subject}##${topic}`,\n ...questionProgressObj,\n questionRevisionId: !questionProgressObj.didCheck || isAdmin ? questionRevisionId : questionProgressObj.questionRevisionId,\n masteryLevel: masteryLevel || 'none',\n bookmarked,\n originalTestId: originalTestId || originalTestIdFromQuestion,\n questionIndex: index,\n answerState: questionAnswerState,\n ...nclexProgressProps,\n didMark: bookmarked,\n crossedAnswerIndexes: crossedAnswerIndexes ? JSON.parse(crossedAnswerIndexes) : []\n };\n\n return [\n ...(await questionProgressesAcc),\n restoredQuestionProgress\n ];\n }, []);\n\n return [\n ...(await acc),\n {\n blockId,\n blockProgressId,\n highlights,\n questions: restoredQuestionProgresses,\n status\n }\n ]\n }, []);\n const awaitedRestoredProgress = await restoredProgress;\n\n const allRestoredQuestionProgresses = awaitedRestoredProgress.reduce((acc, blockProgress) => [...acc, ...(blockProgress?.questions || [])], []);\n // now, if there are any allQuestionProgress items that are not in allRestoredQuestionProgresses, we need to update them to unlink from blockProgress\n\n const questionProgressesToRemove = allQuestionProgresses.filter(questionProgress => !allRestoredQuestionProgresses.find(restoredQuestionProgress => restoredQuestionProgress?.question?.id === questionProgress?.question?.id));\n const questionProgressesToRemovePromises = questionProgressesToRemove.map(questionProgress => updateQuestionProgress(questionProgress.id, {blockProgressQuestionProgressesId: null}));\n await Promise.all(questionProgressesToRemovePromises);\n // now, if there are any blockProgress items that are not in the restoredProgress, we need to update them to unlink from testProgress\n const blockProgressesToRemove = testProgress.blockProgresses.items.filter(blockProgress => !awaitedRestoredProgress.find(restoredBlockProgress => restoredBlockProgress.blockProgressId === blockProgress.id));\n const blockProgressesToRemovePromises = blockProgressesToRemove.map(blockProgress => updateBlockProgress(blockProgress.id, {testProgressBlockProgressesId: null}));\n await Promise.all(blockProgressesToRemovePromises);\n return setQuizProgress(awaitedRestoredProgress);\n }\n\n const restoreProgress = async (testProgress) => {\n if (!testProgress) return [];\n\n const restoredProgress = testProgress.blockProgresses.items.sort(firstBy('index'))\n .reduce((acc, blockProgress) => acc.find(filteredBlockProgress => filteredBlockProgress.index === blockProgress.index) ? acc : [...acc, blockProgress], []) // only one blockProgress for each index will be used for quizProgress\n .reduce(async (acc, blockProgress, index) => {\n try {\n const {id: blockProgressId, blockId, highlights, questionProgresses: {items: questionProgresses}, status} = blockProgress;\n\n const {testBlock} = test.blockConnections.items.find(connection => connection.index === index);\n const isSequentialBlock = JSON.parse(testBlock?.components?.find(component => component.renderType === 'config')?.contents || \"{}\")?.isSequentialSet;\n\n const blockSubject = testBlock.type === 'passage' ? 'Reading' : getInObj(['title'], testBlock, '').split(' ')[0];\n const originalTestBlock = blockSubject\n ? testBlock?.blockConnections?.items.find(({test}) => {\n const testTitle = getInObj(['config', 'title'], test, '');\n if (bootcamp === 'dat' && testTitle.includes('Plus Pack')) return false; // skip plus pack attribution for DAT questions\n return testTitle.match(blockSubject)\n })\n : {};\n const originalTestId = getInObj(['test', 'id'], originalTestBlock, null);\n\n questionProgresses.sort(firstBy('index'));\n\n const questions = questionProgresses.filter(questionProgress => questionProgress.question).map(questionProgress => questionProgress.question);\n const questionMasteryPromises = questions.map(question => getAllQuestionMastery({userIdHashQuestionBaseId: `${DEFAULT_USER_ID}#${question.id}`}));\n const userQuestionMasteryResult = await Promise.all(questionMasteryPromises);\n const userQuestionMasteryMap = userQuestionMasteryResult.reduce((acc, {data: {getQuestionMastery: questionMastery}}) => questionMastery ? {...acc, [questionMastery.userIdHashQuestionBaseId.replace(`${DEFAULT_USER_ID}#`, '')]: questionMastery } : acc, []);\n\n const restoredQuestionProgresses = await questionProgresses.reduce(async (questionProgressesAcc, questionProgress, index) => {\n // NOTE this variable is handling custom test original test id attribution\n const originalTestIdFromQuestion = testBlock?.questionConnections?.items?.[index]?.question?.originalTestId;\n const {id: questionProgressId, answerState, didSelectCorrectAnswer, crossedAnswerIndexes, ...questionProgressObj} = questionProgress;\n const question = questionProgress.question || {};\n const {masteryLevel, bookmarked} = userQuestionMasteryMap[question.id] || {};\n const [subject, topic] = getTags(bootcamp, question.tags.items);\n const questionAnswerState = JSON.parse(answerState || '{}');\n const tutorMode = customTestConfig?.config?.tutorMode;\n const didAnswerNclexQuestion = !!questionAnswerState?.answerState && questionProgress?.didCheck;\n const {answers} = await getQuestionPartsAsync(question, questionProgressObj.questionRevisionId);\n const correctAnswerIndex = answers?.reduce((acc, [answerText, answerCorrect], index) => answerCorrect ? `${acc}${index}` : acc, '') || -1;\n const answeredCorrectly = correctAnswerIndex == questionProgress.selectedAnswerIndex;\n if (answeredCorrectly != didSelectCorrectAnswer && template === 'testReview') {\n await updateQuestionProgress(questionProgressId, {didSelectCorrectAnswer: answeredCorrectly});\n }\n const nclexProgressProps = bootcamp === 'nclex' ?\n {\n fullCredit: !!didAnswerNclexQuestion && !!questionAnswerState?.score && !!questionAnswerState?.maxScore && questionAnswerState?.score === questionAnswerState?.maxScore,\n partialCredit: !!didAnswerNclexQuestion && questionAnswerState?.score > 0 && (questionAnswerState?.score !== questionAnswerState?.maxScore),\n noCredit: (!questionAnswerState?.score || questionAnswerState?.score === 0),\n isSequentialSet: isSequentialBlock,\n isSequentialStart: isSequentialBlock && index === 0,\n isSequentialEnd: isSequentialBlock && index === questionProgresses.length - 1,\n didCheck: template === 'customTest' && !tutorMode ? false : didAnswerNclexQuestion,\n didSelectCorrectAnswer: null,\n } : {\n didCheck: template === 'testReview' ? true : questionProgressObj.didCheck,\n isSequentialSet: isSequentialBlock,\n isSequentialStart: isSequentialBlock && index === 0,\n isSequentialEnd: isSequentialBlock && index === questionProgresses.length - 1,\n };\n\n const restoredQuestionProgress = {\n questionProgressId,\n subject,\n topic,\n subjectTopic: `${subject}##${topic}`,\n ...questionProgressObj,\n didSelectCorrectAnswer: template === 'testReview' ? answeredCorrectly : didSelectCorrectAnswer,\n masteryLevel: masteryLevel || 'none',\n bookmarked,\n originalTestId: originalTestId || originalTestIdFromQuestion,\n questionIndex: index,\n answerState: questionAnswerState,\n ...nclexProgressProps,\n didMark: bookmarked,\n crossedAnswerIndexes: crossedAnswerIndexes ? JSON.parse(crossedAnswerIndexes) : []\n };\n\n return [\n ...(await questionProgressesAcc),\n restoredQuestionProgress\n ];\n }, []);\n return [\n ...(await acc),\n {\n blockId,\n blockProgressId,\n highlights,\n questions: restoredQuestionProgresses,\n status\n }\n ]\n } catch (error) {\n return [\n ...(await acc),\n blockProgress\n ]\n }\n }, []);\n\n setQuizProgress(await restoredProgress);\n };\n\n const saveQuestionProgresses = async (questionProgresses) => {\n try {\n const questionProgressesPromises = questionProgresses.map(async ({questionProgressId, question, ...questionProgress}, questionIndex) => {\n if (!question || !question.id) return null;\n const {masteryLevel, bookmarked, originalTestId} = questionProgress;\n\n async function getTestIdOverride () {\n try {\n if (template === 'questionSearchBank') {\n // we need to look up the question's connections to determine the originalTestId\n const tests = await getQuestionBaseTests(question.id);\n const testIds = tests?.data?.getQuestionBase?.connections?.items.map(({block}) => block?.blockConnections.items[0]?.test?.id);\n const filteredTestIds = testIds.filter(testId => testId != 'd5f4ed45-1950-40e7-ae31-6cf43deb3a7a');\n const test = filteredTestIds[0];\n return test;\n }\n if (template === 'coursePlayer') {\n const pathParams = window.location.pathname.split('/');\n // locate corresponding qbank for this courseplayer bite\n if (pathParams?.[3] === 'videos') {\n if (bootcamp === 'dat' || bootcamp === 'oat' || pathParams?.[2] === 'gross-anatomy' || pathParams?.[2] === 'neuroanatomy') {\n\n // these are classrooms within dat that have shared questions between topic qbs & course player quizzes\n // eg. course player quizzes in the biology classroom correspond to the topic qbs\n const linkedContent = {\n 'biology': 'bio-bites',\n 'organic-chemistry': 'qbanks',\n 'general-chemistry': 'qbanks',\n 'gross-anatomy': 'bites',\n 'neuroanatomy': 'bites',\n };\n const classroomRouteParam = pathParams?.[2];\n const classroomConfig = config.classrooms.find(({route}) => route === classroomRouteParam);\n let courseIndex = classroomConfig.contentTypes.find(({route}) => route === 'videos').content[0].content.findIndex(({route}) => route === pathParams?.[4]);\n const correspondingQbank = classroomConfig.contentTypes.find(({route}) => linkedContent[classroomRouteParam] === route).content[0].content[courseIndex];\n return correspondingQbank?.id || originalTestId;\n }\n if (bootcamp === 'inbde') {\n const classroomConfig = config.classrooms.find(({route}) => route === pathParams?.[2]);\n const correspondingQbank = classroomConfig.contentTypes.find(({route}) => route === 'bites')?.content\n .find(({name}) => name === 'Question Banks')?.content\n .find(({route}) => route === pathParams?.[4]);\n return correspondingQbank?.id || originalTestId;\n }\n const classroomConfig = config.classrooms.find(({route}) => route === pathParams?.[2]);\n const correspondingQbank = classroomConfig.contentTypes.find(({route}) => route === 'qbanks')?.content\n .find(({name}) => name === 'Question Banks')?.content\n .find(({route}) => route === pathParams?.[4]);\n return correspondingQbank?.id || originalTestId;\n }\n }\n return originalTestId\n } catch (e) {\n return originalTestId;\n }\n }\n\n const testIdOverride = await getTestIdOverride();\n\n const {data: {getQuestionMastery: questionMastery}} = await getAllQuestionMastery({userIdHashQuestionBaseId: `${DEFAULT_USER_ID}#${question.id}`}) || {data: {getQuestionMastery: null}};\n const tagIds = question.tags.items?.filter(({tag}) => !['nclexPlan', 'nclexConcept'].includes(tag?.contentType)).reduce((acc, {tag}) => ({[getTagType(tag)]: tag.id, ...acc}), {test: test.id});\n const userIdHashTestId = !testIdOverride && !test.id && questionMastery && questionMastery?.userIdHashTestId?.replace(`${DEFAULT_USER_ID}#`, '') !== 'undefined'\n ? questionMastery.userIdHashTestId\n : `${DEFAULT_USER_ID}#${testIdOverride || test.id}`;\n\n const masteryInput = {\n wordPressUserDataQuestionMasteryId: DEFAULT_USER_ID,\n userIdHashQuestionBaseId: `${DEFAULT_USER_ID}#${question.id}`,\n userIdHashTestTagId: `${DEFAULT_USER_ID}#${tagIds.bootcamp}`,\n userIdHashSubjectTagId: `${DEFAULT_USER_ID}#${tagIds.subject}`,\n userIdHashTopicTagId: `${DEFAULT_USER_ID}#${tagIds.topic}`,\n userIdHashTestId: userIdHashTestId,\n wpUserId: DEFAULT_USER_ID,\n questionMasteryQuestionId: question.id,\n masteryLevel,\n bookmarked,\n }\n const createOrUpdateQuestionMasteryPromise = updateQuestionMastery(masteryInput, !questionMastery);\n\n return createOrUpdateQuestionMasteryPromise;\n });\n\n const resolvedPromises = await Promise.all(questionProgressesPromises);\n const filteredPromises = resolvedPromises.filter(promise => promise !== null);\n return filteredPromises;\n } catch (error) {\n console.error(error);\n return [];\n }\n };\n\n async function saveBlockProgress (value, blockIndexOverride=blockIndex) {\n updateQuizProgress({...value, newBlockProgress: false}, blockIndexOverride);\n const {blockProgressId, testBlockId, newBlockProgress} = quizProgress[blockIndexOverride];\n\n if (!testProgressId) {\n const localStorageBlockProgressKey = `${test.id}#${testBlockId}`;\n const blockProgress = {...quizProgress[blockIndexOverride], ...value, newBlockProgress: false};\n window.localStorage.setItem(localStorageBlockProgressKey, JSON.stringify(blockProgress));\n\n const localStorageArrayKey = `blockProgressKeyArray`;\n const blockProgressKeyArray = JSON.parse(window.localStorage.getItem(localStorageArrayKey) || '[]');\n // don't add duplicate keys to KeyArray\n if (blockProgressKeyArray.includes(localStorageBlockProgressKey)) return;\n\n const newBlockProgressKeyArray = [...blockProgressKeyArray, localStorageBlockProgressKey];\n window.localStorage.setItem(localStorageArrayKey, JSON.stringify(newBlockProgressKeyArray));\n } else {\n if (newBlockProgress) {\n await createBlockProgress(\n blockProgressId,\n testProgressId,\n testBlockId,\n {...value},\n blockIndexOverride\n );\n } else {\n await updateBlockProgress(\n blockProgressId,\n {\n testProgressBlockProgressesId: testProgressId,\n blockId: testBlockId,\n index: blockIndexOverride,\n ...value\n }\n );\n }\n }\n }\n\n const updateAverages = async () => {\n const {totalTime, totalScore, totalCount} = quizProgress.reduce((acc, {questions}) => {\n if (!questions?.length) return acc;\n return {\n ...acc,\n ...questions.reduce((acc, {didSelectCorrectAnswer}) => ({...acc, totalScore: didSelectCorrectAnswer ? acc.totalScore += 1 : acc.totalScore}), {totalScore: acc.totalScore}),\n totalCount: acc.totalCount + questions.length\n }\n }, {totalScore: 0, totalCount: 0});\n\n const testAverage = totalScore / totalCount;\n\n if (!testAverage) return;\n\n const uploadKey = `testresults/averages/${test.id}.json`\n let existingAverages = {totalAverage: 0, totalCount: 0};\n\n try {\n const existingAveragesFetch = await Storage.get(uploadKey, {\n download: true,\n cacheControl: 'no-cache',\n });\n existingAverages = JSON.parse(await existingAveragesFetch.Body.text());\n } catch (e) {\n console.log(e);\n } finally {\n existingAverages.totalAverage += testAverage;\n existingAverages.totalCount += 1;\n await Storage.put(uploadKey, JSON.stringify(existingAverages, null, 2), {contentType: 'application/json'});\n }\n };\n\n const saveProgress = async () => {\n try {\n const filteredProgress = quizProgress.map(({questions, ...rest}) => ({...rest, questions: questions?.map(({question, ...rest}) => ({...rest}))}));\n } catch (error) {\n console.log(error)\n }\n\n const filteredProgress = quizProgress\n .map(({questions, highlights,...rest}) => ({\n ...rest,\n highlights: safeStringify(highlights),\n questions: questions?.map(({question, highlights, ...rest}) => ({...rest, highlights: isReadinessExam ? '' : safeStringify(highlights)}))\n }));\n\n try {\n await saveTestProgress({testProgressId, userId: DEFAULT_USER_ID, testId: test.id, quizProgress: filteredProgress, isDATorOAT: ['dat', 'oat'].includes(bootcamp)});\n } catch (e) {\n console.log(e);\n Sentry.captureException(e);\n }\n const submissionJSON = {\n quizProgress: filteredProgress,\n testProgressId,\n userId: DEFAULT_USER_ID,\n testId: test.id,\n }\n\n await Storage.put(`testresults/${DEFAULT_USER_ID}/${test.id}/${testProgressId}_${(new Date()).toISOString()}.json`, JSON.stringify(submissionJSON, null, 2), {contentType: 'application/json'});\n try {\n await updateAverages();\n } catch (e) {\n console.log(e);\n }\n return testProgressId;\n };\n\n const saveAndTrackProgress = async () => {\n const filteredProgress = quizProgress\n .map(({questions, ...rest}) => ({\n ...rest,\n questions: questions?.map(({question, highlights, ...rest}) => ({...rest, highlights: safeStringify(highlights)})) || []\n }));\n\n try {\n await saveTestProgress({testProgressId, userId: DEFAULT_USER_ID, testId: test.id, quizProgress: filteredProgress}, cognitoUser?.signInUserSession?.idToken?.jwtToken);\n const trackingFunction = bootcamp === 'nclex' ? trackNCLEXQuizProgressPerformance : trackQuizProgressPerformance;\n await trackingFunction(DEFAULT_USER_ID, quizProgress, `${DEFAULT_USER_ID}#${bootcamp}_Performance`);\n // track question attempts here\n // const questionProgresses = filteredProgress.map(({questions}) => questions).flat();\n\n // await Promise.all(questionProgresses.map(async (questionProgress, index) => {\n // const {\n // blockArrayIndex,\n // questionProgressId,\n // questionBaseId,\n // questionRevisionId,\n // current,\n // crossedAnswerIndexes,\n // bookmarked,\n // originalTestId,\n // questionIndex: currentQuestionIndex,\n // subject,\n // topic,\n // subjectTopic,\n // question,\n // isSequentialStart,\n // isSequentialEnd,\n // isSequentialSet,\n // answerState,\n // seen,\n // fullCredit,\n // partialCredit,\n // noCredit,\n // highlights, // not saving these for now b/c there's an issue with restoration from the new object format they're being saved in\n // ...filteredQuestionProgress\n // } = questionProgress || {};\n\n // const wasAttempted = !!answerState?.answerState || (questionProgress.selectedAnswerIndex !== -1);\n // const stringifiedAnswerState = JSON.stringify(answerState || '');\n // const questionProgressToSave = {...filteredQuestionProgress, answerState: stringifiedAnswerState, index};\n\n // // skip tracking if question was not attempted\n // if (!wasAttempted) return;\n\n // try {\n // await trackFirstQuestionAttempt(DEFAULT_USER_ID, test.id, questionBaseId, questionRevisionId, questionProgressToSave);\n // } catch (error) {\n // console.log('error saving attempt', error);\n // }\n // }))\n\n } catch (e) {\n console.log(e);\n Sentry.captureException(e);\n }\n const submissionJSON = {\n quizProgress: filteredProgress,\n testProgressId,\n userId: DEFAULT_USER_ID,\n testId: test.id,\n }\n\n await Storage.put(`testresults/${DEFAULT_USER_ID}/${test.id}/${testProgressId}_${(new Date()).toISOString()}.json`, JSON.stringify(submissionJSON, null, 2), {contentType: 'application/json'});\n\n // removing test average updating for now since saveAndTrackProgress is only used in NCLEX readiness exams and the averaging logic operates\n // using didSubmitCorrectAnswer - it needs to be updated to work with answer data before average tracking works for readiness exams\n\n // try {\n // await updateAverages();\n // } catch (e) {\n // console.log(e);\n // }\n return testProgressId;\n };\n\n const updateQuestionProgressState = params => {\n const {questions: questionProgresses} = quizProgress[blockIndex];\n const questionIndex = questionProgresses.findIndex(({current}) => current);\n\n const updatedQuestionProgress = {...questionProgresses[questionIndex], ...params};\n updateQuizProgress({\n questions: insertAtIndex(\n questionProgresses,\n questionIndex,\n updatedQuestionProgress\n )\n });\n return updatedQuestionProgress;\n };\n\n const markQuestion = () => {\n const {questions: questionProgresses} = quizProgress[blockIndex];\n const questionIndex = questionProgresses.findIndex(({current}) => current);\n\n const didMark = !questionProgresses[questionIndex]?.didMark || !questionProgresses[questionIndex]?.bookmarked;\n // update question progress locally\n const {questionProgressId} = updateQuestionProgressState({didMark, bookmarked: didMark});\n\n // update question progress in backend\n if (template === 'customTest') {\n updateQuestionProgress(questionProgressId, {didMark});\n }\n\n // update bookmarked status\n const updatedBookmark = {...questionProgresses[questionIndex], bookmarked: didMark};\n saveQuestionProgresses([updatedBookmark]);\n };\n\n const instantiateProgress = async (test) => {\n const testBlocks = getTestBlockConnections(test).map(({testBlock}) => testBlock);\n\n let masteryMap;\n if (test?.id) {\n const {data: {QuestionMasteryByTestId: {items: questionMasteryByTestId}}} = await getAllQuestionMastery({userIdHashTestId: `${DEFAULT_USER_ID}#${test.id}`}, 'testSmall');\n masteryMap = questionMasteryByTestId.reduce((acc, record) => record.questionMasteryQuestionId ? {...acc, [record.questionMasteryQuestionId]: record} : acc, {})\n }\n const baseProgress = await Promise.all(testBlocks.map(testBlock => instantiateBlockProgressFromTemplate(testBlock, masteryMap)));\n\n setQuizProgress(baseProgress);\n setTestProgressId(generateId(DEFAULT_USER_ID));\n };\n\n const instantiateCourseProgress = async (test) => {\n if (!testProgress || restoringProgress || quizProgress.length > 0) return [];\n\n setRestoringProgress(true);\n\n setTestProgressId(testResultId);\n const testBlocks = getTestBlockConnections(test).map(({testBlock}) => testBlock);\n\n const baseProgress = await Promise.all(testBlocks.map(instantiateBlockProgressFromTemplate));\n // IF NECESSARY, RESTORE SAVED PROGRESS\n const restoredProgress = baseProgress.map(blockProgress => {\n // if blockProgress has been saved to backend, restore now\n if (testProgress) {\n const savedProgress = testProgress.blockProgresses.items && testProgress.blockProgresses.items.find(savedBlockProgress => savedBlockProgress.blockId === blockProgress.testBlockId);\n if (savedProgress) {\n const {id, blockId, index, status} = savedProgress;\n return {\n ...blockProgress, // TODO: QUESTION PROGRESS WILL NOT BE RESTORED\n blockProgressId: id,\n testBlockId: blockId,\n index,\n status,\n newBlockProgress: false\n }\n };\n } else {\n // if blockProgress has been saved to browser, restore now\n const savedProgress = window.localStorage.getItem(`${test.id}#${blockProgress.blockProgressId}`);\n if (savedProgress) return JSON.parse(savedProgress);\n }\n return blockProgress;\n });\n\n setQuizProgress(restoredProgress);\n setRestoringProgress(false);\n };\n const instantiateTestProgress = async (test) => {\n const testBlocks = getTestBlockConnections(test).map(({testBlock}) => testBlock);\n\n try {\n\n const progressIdResult = await getTestProgressByUserIdHashTestId(`${DEFAULT_USER_ID}#${test.id}`);\n const progressId = progressIdResult?.data?.TestProgressByTestId?.items?.[0]?.id;\n if (isReadinessExam) {\n if (progressId) {\n window.alert(`Heads up: It looks like you've already submitted this exam. If you'd like to take it again, please reset your previous attempt on the next page. We're going to redirect you now. Thanks!`);\n window.location.href = window.location.pathname.split('/').slice(0, 3).join('/');\n return;\n }\n throw new Error('create progress')\n }\n\n if (!progressId) throw new Error('no progress');\n\n const progressResult = await getTestProgress(progressId);\n const progress = progressResult?.data?.getTestProgress;\n if (template === 'customTest') {\n try {\n const customTestQuestionProgresses = (progress.blockProgresses.items?.find(item => item?.index === 1)?.questionProgresses?.items || []).sort(firstBy('index'));\n const correspondingQuestions = testBlocks?.[1]?.questionConnections?.items;\n for (var i = 0; i < customTestQuestionProgresses.length; i++) {\n try {\n let questionProgress = customTestQuestionProgresses[i];\n questionProgress.questionBaseId = questionProgress.question.id\n const correspondingQuestion = correspondingQuestions[i];\n questionProgress.isSequentialSet = correspondingQuestion.isSequentialSet\n questionProgress.isSequentialStart = correspondingQuestion.isSequentialStart\n questionProgress.isSequentialEnd = correspondingQuestion.isSequentialEnd\n questionProgress.seen = questionProgress.time !== '0';\n } catch (e) {\n console.log(e, 'unable to restore sequential display');\n }\n }\n } catch (e) {\n console.log(e)\n }\n }\n if (['tbcSavedBank', 'coursePlayer'].includes(template)) {\n syncProgress(progress);\n } else {\n restoreProgress(progress);\n }\n\n setTestProgressId(progressId);\n } catch (error) {\n const newProgressId = generateId(DEFAULT_USER_ID);\n const baseProgress = await Promise.all(testBlocks.map(testBlock => instantiateBlockProgressFromTemplate(testBlock, isReadinessExam ? [] : null)));\n const filteredBaseProgress = baseProgress.map(({questions, ...rest}) => ({\n ...rest,\n ...(questions ? {questions: questions?.map(({question, highlights, ...values}) => ({...values}))} : {})\n }));\n // create progress for custom test if it doesn't exist yet\n const result = await saveTestProgress({testProgressId: newProgressId, userId: DEFAULT_USER_ID, testId: test.id, quizProgress: filteredBaseProgress});\n if (!result) {\n const retry = window.prompt('An error has occurred. Retry? Otherwise, please contact Bootcamp.com support.');\n if (retry) {\n window.location.reload();\n }\n } else {\n setQuizProgress(baseProgress);\n setTestProgressId(newProgressId);\n }\n }\n };\n\n const syncQuestionSearchProgress = async (test) => {\n if (!test) return;\n\n const testBlocks = getTestBlockConnections(test).map(({testBlock}) => testBlock);\n\n const baseProgress = await Promise.all(testBlocks.map(testBlock => instantiateBlockProgressFromTemplate(testBlock, null)));\n\n if (quizProgress.length > 0) {\n // if there is already progress, we need to sync the new progress with the old progress\n const newProgress = baseProgress.map((blockProgress, index) => {\n const oldBlockProgress = quizProgress[index];\n if (!oldBlockProgress) return blockProgress;\n\n const newQuestions = blockProgress.questions?.map((questionProgress, questionIndex) => {\n const oldQuestionProgress = oldBlockProgress.questions[questionIndex];\n if (!oldQuestionProgress) return questionProgress;\n\n return {\n ...questionProgress,\n ...oldQuestionProgress\n }\n });\n\n return {\n ...blockProgress,\n questions: newQuestions\n }\n });\n return setQuizProgress(newProgress);\n }\n\n setQuizProgress(baseProgress);\n };\n\n const handleSetHighlights = async (highlights, block) => {\n const {questions: questionProgresses} = quizProgress[blockIndex];\n const currentQuestion = questionProgresses.find(({current}) => current);\n\n if (block) {\n updateQuizProgress(highlights);\n saveBlockProgress({highlights: safeStringify(highlights.highlights)});\n } else {\n const previous = safeParse(currentQuestion.highlights);\n const update = {...previous, ...highlights.highlights};\n if (JSON.stringify(previous) === JSON.stringify(update)) return;\n const {questionProgressId, highlights: updatedHighlights} = updateQuestionProgressState({highlights: update});\n await updateQuestionProgress(questionProgressId, {highlights: safeStringify(updatedHighlights)});\n }\n };\n\n\n // fetch test progress if need be on mount\n useEffect(() => {\n const resultId = urlParams.get('testProgressId') || testResultId;\n\n resultId && fetchTestProgress(resultId.replace(' ', '+'));\n\n }, [DEFAULT_USER_ID, testResultId]);\n\n useEffect(() => {\n if (!test) return;\n\n switch (template) {\n case 'questionSearchBank':\n syncQuestionSearchProgress(test);\n break;\n case 'testReview':\n restoreProgress(testProgress);\n break;\n case 'coursePlayer':\n instantiateTestProgress(test);\n break;\n case 'customTest':\n instantiateTestProgress(test);\n break\n case 'tbcSavedBank':\n if (isReadinessExam && ['med-school', 'inbde', 'nclex', 'mcat'].includes(bootcamp)) return;\n if (bootcamp === 'nclex' && isReview) {\n syncProgress(testProgress);\n } else {\n instantiateTestProgress(test);\n }\n break;\n default:\n if (bootcamp === 'nclex' && (match?.params?.classroom === 'next-gen-cases')) {\n instantiateTestProgress(test);\n } else if (quizProgress.length === 0) {\n instantiateProgress(test);\n }\n }\n\n\n }, [test, template, testProgress, testResultId]);\n\n useEffect(() => {\n return () => {\n setTestProgress();\n }\n }, []);\n\n return {\n methods: {\n setQuizProgress,\n updateQuizProgress,\n saveProgress,\n saveAndTrackProgress,\n saveQuestionProgresses,\n saveBlockProgress,\n instantiateBlockProgressFromTemplate,\n instantiateQuestionProgressFromArray,\n getAnswerDataForQuestion,\n markQuestion,\n instantiateTestProgress,\n handleSetHighlights,\n syncQuestionSearchProgress,\n },\n variables: {\n quizProgress,\n testProgressId,\n answerData,\n }\n }\n}\n\nexport default useProgress;\n","import React, {createContext, useContext, useState} from 'react';\nimport {useBeforeUnload} from '@bootcamp/shared/src/util/hooks';\nimport {Prompt} from 'react-router-dom';\n\n\nconst ReloadBlockerContext = createContext();\n\nfunction ReloadBlocker({reloadBlocked}) {\n return \n}\n\nconst ReloadBlockerProvider = props => {\n const [enabled, setEnabled] = useState(false);\n\n useBeforeUnload(enabled);\n\n // this ReloadBlocker component is a fallback react-router url state changes.\n const children = (\n <>\n \n {props.children}\n \n );\n\n\n return \n}\n\nconst useReloadBlockerContext = () => useContext(ReloadBlockerContext);\n\nexport {ReloadBlockerContext, ReloadBlockerProvider, useReloadBlockerContext};\n","import {getQuestionParts} from '@bootcamp/shared/src/util';\n\n// this gets sectiong bounds using current index as a reference,\n// so for example if we have question blocks at indexes 1, 2, 3 and the current\n// block index is 3, this should return [1, 3]\nfunction getSectionBounds(testBlockConnections, currentBlockIndex) {\n return testBlockConnections.reduce((acc, curr, index) => {\n return (curr.testBlock.type === 'sectionStart' && index < currentBlockIndex) || (index === 0) ? [index + 1, currentBlockIndex] : acc;\n }, [0, currentBlockIndex]);\n}\n\nfunction getNextReviewBlock(testBlockConnections, currentBlockIndex) {\n return testBlockConnections.find(({testBlock}, index) => ((index > currentBlockIndex) && !['questionSet', 'passage', 'caseQuestionSet'].includes(testBlock.type)));\n}\n\nfunction getNextQuestionBlockIndex(testBlockConnections, currentBlockIndex) {\n return testBlockConnections.findIndex(({testBlock}, index) => ((index > currentBlockIndex) && ['questionSet', 'passage', 'caseQuestionSet'].includes(testBlock.type)));\n}\n\nfunction getSectionWindow(testBlockConnections, currentBlockIndex) {\n const start = testBlockConnections.slice().reverse().find(({index: testBlockIndex, testBlock: {type}}) => ((type === 'sectionStart' || type === 'startFullLength' || type === 'sectionBreak') && testBlockIndex <= currentBlockIndex)) || {index: 0};\n const end = testBlockConnections.find(({index: testBlockIndex, testBlock: {type}}) => (['sectionReview', 'endBlock'].includes(type) && testBlockIndex >= currentBlockIndex)) || {index: 0};\n\n return [\n start.index,\n end.index,\n ];\n}\n\nfunction getFirstFilterMatch(block, filter) {\n try {\n if (!block || !block.questions) return null;\n const index = block.questions.findIndex(progressObject => {\n if (filter.key === 'search') {\n const {prompt, answers, explanation, questionHeader} = getQuestionParts(progressObject.question);\n const search = [prompt, answers, explanation, questionHeader].join(' ').toLowerCase();\n return search.includes(filter.value.toLowerCase());\n }\n\n return Array.isArray(filter.value)\n ? filter.value.includes(progressObject[filter.key])\n : progressObject[filter.key] === filter.value\n });\n\n return index !== -1 ? index : null;\n } catch (error) {\n return null;\n }\n\n}\n\nfunction getLastFilterMatch(block, filter) {\n if (!block.questions) return null;\n\n const index = block.questions.slice().reverse().findIndex(progressObject => {\n if (filter.key === 'search') {\n const {prompt, answers, explanation, questionHeader} = getQuestionParts(progressObject.question);\n const search = [prompt, answers, explanation, questionHeader].join(' ').toLowerCase();\n return search.includes(filter.value.toLowerCase());\n }\n\n return progressObject[filter.key] === filter.value\n });\n const adjustedIndex = block.questions.length - index - 1;\n\n return index !== -1 ? adjustedIndex : null;\n}\n\nfunction getFirstFiltered(quizProgress, sectionBounds, filter) {\n if (!filter) return null;\n\n return quizProgress\n .reduce((acc, block, index) => {\n const firstFiltered = block.questions && getFirstFilterMatch(block, filter);\n\n if (acc.length || (index < sectionBounds[0]) || index > sectionBounds[1]) {\n return acc;\n } else if (firstFiltered !== null) {\n return [index, firstFiltered];\n } else {\n return acc;\n }\n }, []);\n}\n\nfunction getLastFiltered(quizProgress, sectionBounds, filter) {\n if (!filter) return null;\n\n return quizProgress\n .reduce((acc, block, index) => {\n const lastFiltered = block.questions && getLastFilterMatch(block, filter);\n\n if ((index < sectionBounds[0]) || index > sectionBounds[1]) {\n return acc;\n } else if (lastFiltered !== null) {\n return [index, lastFiltered];\n } else {\n return acc;\n }\n }, []);\n\n}\n\nfunction getDefaults(action, currentBlockIndex, testBlockConnections, quizProgress, filter, setters) {\n const {setBlockIndex, setCurrentIndex: setQuestionIndex, clearCurrentIndex} = setters;\n\n return {\n firstQuestionSet: () => {\n const firstIndexWithQuestions = testBlockConnections.findIndex(({testBlock}) => testBlock && testBlock.questionConnections && testBlock.questionConnections.items && !!testBlock.questionConnections.items.length);\n setBlockIndex(firstIndexWithQuestions);\n setQuestionIndex(firstIndexWithQuestions, 0);\n },\n start: () => {\n clearCurrentIndex();\n setBlockIndex(0);\n },\n begin: () => {\n setBlockIndex(currentBlockIndex + 1);\n setQuestionIndex(currentBlockIndex + 1, 0);\n },\n previous: () => {\n const previousBlockIndex = Math.max(currentBlockIndex - 1, 0);\n const lastQuestionIndex = testBlockConnections[previousBlockIndex] && testBlockConnections[previousBlockIndex].testBlock && testBlockConnections[previousBlockIndex].testBlock.questionConnections.items.length - 1;\n const questionIndex = getLastFilterMatch(quizProgress[previousBlockIndex], filter) || lastQuestionIndex;\n\n setBlockIndex(previousBlockIndex);\n setQuestionIndex(previousBlockIndex, questionIndex);\n },\n next: () => {\n // this doesnt work for question banks for now because start/end blocks aren't actually in the backend so testBlockConnections isn't reliable\n // handling in a qb specific 'next' transition for now but can use this default once it has start/end structure blocks in the backend\n const nextBlockIndex = currentBlockIndex + 1;\n const shouldUpdateQuestionIndex = ['questionSet', 'passage', 'caseQuestionSet'].includes(testBlockConnections[nextBlockIndex].testBlock.type);\n const questionIndex = getFirstFilterMatch(quizProgress[nextBlockIndex], filter) || 0;\n\n setBlockIndex(nextBlockIndex);\n\n if (shouldUpdateQuestionIndex) {\n setQuestionIndex(nextBlockIndex, questionIndex);\n }\n },\n reviewAll: () => {\n const [startIndex] = getSectionWindow(testBlockConnections, currentBlockIndex);\n setBlockIndex(startIndex + 1);\n setQuestionIndex(startIndex + 1, 0);\n },\n firstFilterActive: () => {\n const [blockIndex, questionIndex] = quizProgress\n .reduce((acc, block, index) => {\n const firstFiltered = block.questions && block.questions.findIndex(progressObject => progressObject[filter.key] === filter.value);\n\n if (!acc.length && firstFiltered !== undefined && firstFiltered !== -1) {\n return [index, firstFiltered];\n } else {\n return acc;\n }\n }, []);\n\n // if the quizProgress reducer is unable to find match, do nothing\n if (blockIndex === undefined && questionIndex === undefined) return;\n\n setQuestionIndex(blockIndex, questionIndex);\n },\n nextFilterActive: () => {\n if (filter.key === 'blockFilter') {\n const nextIndex = testBlockConnections.findIndex(({testBlock}, index) => (((filter.value === 'videos' && testBlock.type === 'lesson') || (filter.value === 'quizzes' && testBlock.type === 'questionSet')) && index > currentBlockIndex));\n if (nextIndex != -1) {\n if (filter.value === 'videos') {\n setBlockIndex(nextIndex);\n } else {\n setQuestionIndex(nextIndex, 0);\n }\n return;\n }\n }\n if (filter.key === 'search') {\n const nextIndex = testBlockConnections.findIndex(({testBlock}, index) => testBlock.title && testBlock.title.toLowerCase().includes(filter.value.toLowerCase()) && index > currentBlockIndex);\n if (nextIndex != -1) {\n setBlockIndex(nextIndex);\n if (testBlockConnections[nextIndex]?.testBlock?.type === 'questionSet') {\n setQuestionIndex(nextIndex, 0);\n }\n return;\n }\n }\n const {index: nextReviewIndex} = getNextReviewBlock(testBlockConnections, currentBlockIndex);\n\n const sectionBounds = [currentBlockIndex + 1, nextReviewIndex];\n\n const [blockIndex, questionIndex] = getFirstFiltered(quizProgress, sectionBounds, filter);\n\n if (!blockIndex) {\n setBlockIndex(nextReviewIndex);\n } else {\n setBlockIndex(blockIndex);\n Number.isInteger(questionIndex) && setQuestionIndex(blockIndex, questionIndex);\n }\n },\n previousFilterActive: () => {\n if (filter.key === 'blockFilter') {\n const previousBlock = testBlockConnections.slice(0, currentBlockIndex).reverse().find(({testBlock}, index) => ((filter.value === 'videos' && testBlock.type === 'lesson') || (filter.value === 'quizzes' && testBlock.type === 'questionSet')) && index < currentBlockIndex);\n if (previousBlock) {\n if (filter.value === 'videos') {\n setBlockIndex(previousBlock.index);\n } else {\n setQuestionIndex(previousBlock.index, 0);\n }\n return;\n }\n }\n if (filter.key === 'search') {\n const previousBlock = testBlockConnections.slice(0, currentBlockIndex).reverse().find(({testBlock}, index) => testBlock.title && testBlock.title.toLowerCase().includes(filter.value.toLowerCase()) && index < currentBlockIndex);\n if (previousBlock) {\n setBlockIndex(previousBlock.index);\n if (testBlockConnections[previousBlock.index]?.testBlock?.type === 'questionSet') {\n setQuestionIndex(previousBlock.index, 0);\n }\n return;\n }\n }\n\n const sectionBounds = [0, currentBlockIndex - 1];\n\n const [blockIndex, questionIndex] = getLastFiltered(quizProgress, sectionBounds, filter);\n\n if (blockIndex) {\n setBlockIndex(blockIndex);\n Number.isInteger(questionIndex) && setQuestionIndex(blockIndex, questionIndex);\n }\n },\n };\n}\n\nfunction practiceTest(action, currentBlockIndex, testBlockConnections, quizProgress, filter, setters) {\n const defaults = getDefaults(action, currentBlockIndex, testBlockConnections, quizProgress, filter, setters);\n const {setBlockIndex, setCurrentIndex: setQuestionIndex} = setters;\n const filterActive = !!filter.key;\n\n const transitions = {\n ...defaults,\n review: () => {\n const index = testBlockConnections.length - 1;\n setBlockIndex(index);\n },\n reviewSkipped: () => {\n const bounds = [1, testBlockConnections.length - 1];\n const [blockIndex, questionIndex] = getFirstFiltered(quizProgress, bounds, {key: 'didSkip', value: true});\n\n setBlockIndex(blockIndex);\n setQuestionIndex(blockIndex, questionIndex);\n },\n reviewMarked: () => {\n const bounds = [1, testBlockConnections.length - 1];\n const [blockIndex, questionIndex] = getFirstFiltered(quizProgress, bounds, {key: 'didMark', value: true});\n\n setBlockIndex(blockIndex);\n setQuestionIndex(blockIndex, questionIndex);\n },\n };\n\n const transition = (filterActive && transitions[`${action}FilterActive`]) ? transitions[`${action}FilterActive`] : transitions[action];\n return transition();\n}\n\n// TODO might be able to just use quizProgress instead of testBlockConnections\n// TALKING POINT if a question is marked, and then unmarked when reviewing marked, it doesn't show up in review skipped\nfunction fullLengthTest(action, currentBlockIndex, testBlockConnections, quizProgress, filter, setters) {\n const defaults = getDefaults(action, currentBlockIndex, testBlockConnections, quizProgress, filter, setters);\n const {setBlockIndex, setCurrentIndex: setQuestionIndex} = setters;\n const sectionBounds = getSectionBounds(testBlockConnections, currentBlockIndex);\n const filterActive = !!filter.key;\n\n const transitions = {\n ...defaults,\n sectionReview: () => {\n const nextIndex = testBlockConnections\n .find(({testBlock}, index) => (testBlock.type === 'sectionReview') && index > currentBlockIndex);\n\n setBlockIndex(nextIndex.index);\n\n },\n reviewSkipped: () => {\n const [blockIndex, questionIndex] = getFirstFiltered(quizProgress, sectionBounds, {key: 'didSkip', value: true});\n\n setBlockIndex(blockIndex);\n setQuestionIndex(blockIndex, questionIndex);\n },\n reviewMarked: () => {\n const [blockIndex, questionIndex] = getFirstFiltered(quizProgress, sectionBounds, {key: 'didMark', value: true});\n\n setBlockIndex(blockIndex);\n setQuestionIndex(blockIndex, questionIndex);\n },\n jumpToNextSection: () => {\n const nextSectionStart = testBlockConnections.slice(currentBlockIndex).find(({testBlock}) => ['sectionStart', 'sectionBreak'].includes(testBlock.type));\n if (nextSectionStart && nextSectionStart.index && nextSectionStart.index === currentBlockIndex) {\n const nextSectionStart = testBlockConnections.slice(currentBlockIndex+1).find(({testBlock}) => ['sectionStart', 'sectionBreak'].includes(testBlock.type));\n return nextSectionStart && nextSectionStart.index && setBlockIndex(nextSectionStart.index);\n }\n nextSectionStart && nextSectionStart.index && setBlockIndex(nextSectionStart.index);\n }\n }\n\n const transition = (filterActive && transitions[`${action}FilterActive`]) ? transitions[`${action}FilterActive`] : transitions[action];\n return transition();\n}\n\nfunction questionBank(action, currentBlockIndex, testBlockConnections, quizProgress, filter, setters, endBlockIndex) {\n const defaults = getDefaults(action, currentBlockIndex, testBlockConnections, quizProgress, filter, setters);\n const {setBlockIndex, setCurrentIndex: setQuestionIndex, clearCurrentIndex} = setters;\n const filterActive = !!filter.key;\n\n const transitions = {\n ...defaults,\n next: () => {\n const nextBlockIndex = getNextQuestionBlockIndex(testBlockConnections, currentBlockIndex);\n\n if (nextBlockIndex === -1) {\n clearCurrentIndex();\n setBlockIndex(endBlockIndex);\n return;\n } else {\n setBlockIndex(nextBlockIndex);\n }\n\n const shouldUpdateQuestionIndex = ['questionSet', 'passage', 'caseQuestionSet'].includes(testBlockConnections[nextBlockIndex].testBlock.type);\n const questionIndex = getFirstFilterMatch(quizProgress[nextBlockIndex], filter) || 0;\n\n setBlockIndex(nextBlockIndex);\n\n if (shouldUpdateQuestionIndex) {\n setQuestionIndex(nextBlockIndex, questionIndex);\n }\n },\n previous: () => {\n const previousBlockIndex = Math.max(currentBlockIndex - 1, 0);\n const lastQuestionIndex = testBlockConnections?.[previousBlockIndex] && testBlockConnections?.[previousBlockIndex]?.testBlock && testBlockConnections?.[previousBlockIndex]?.testBlock?.questionConnections?.items?.length - 1;\n const questionIndex = getLastFilterMatch(quizProgress?.[previousBlockIndex], filter) || lastQuestionIndex;\n\n if (previousBlockIndex === 0) return;\n\n setBlockIndex(previousBlockIndex);\n setQuestionIndex(previousBlockIndex, questionIndex);\n },\n nextUntagged: () => {\n const sectionBounds = [1, endBlockIndex - 1];\n const [blockIndexMatch, questionIndexMatch] = getFirstFiltered(quizProgress, sectionBounds, {key: 'masteryLevel', value: 'none'}) || [0, 0];\n\n const blockIndex = blockIndexMatch || sectionBounds[0];\n const questionIndex = questionIndexMatch || 0;\n\n setBlockIndex(blockIndex);\n setQuestionIndex(blockIndex, questionIndex);\n },\n nextUnanswered: () => {\n const sectionBounds = [1, endBlockIndex - 1];\n const [blockIndexMatch, questionIndexMatch] = getFirstFiltered(quizProgress, sectionBounds, {key: 'didCheck', value: [false, null, undefined]}) || [0, 0];\n const blockIndex = blockIndexMatch || sectionBounds[0];\n const questionIndex = questionIndexMatch || 0;\n\n setBlockIndex(blockIndex);\n setQuestionIndex(blockIndex, questionIndex);\n },\n review: () => {\n const index = testBlockConnections.length - 1;\n setBlockIndex(index);\n },\n reviewSkipped: () => {\n const bounds = [1, testBlockConnections.length - 1];\n const [blockIndex, questionIndex] = getFirstFiltered(quizProgress, bounds, {key: 'didSkip', value: true});\n\n setBlockIndex(blockIndex);\n setQuestionIndex(blockIndex, questionIndex);\n },\n reviewIncomplete: () => {\n const bounds = [1, testBlockConnections.length - 1];\n const [blockIndex, questionIndex] = getFirstFiltered(quizProgress, bounds, {key: 'selectedAnswerIndex', value: -1});\n\n setBlockIndex(blockIndex);\n setQuestionIndex(blockIndex, questionIndex);\n },\n reviewMarked: () => {\n const bounds = [1, testBlockConnections.length - 1];\n const [blockIndex, questionIndex] = getFirstFiltered(quizProgress, bounds, {key: 'didMark', value: true});\n\n setBlockIndex(blockIndex);\n setQuestionIndex(blockIndex, questionIndex);\n },\n reviewUnseen: () => {\n const bounds = [1, testBlockConnections.length - 1];\n const [blockIndex, questionIndex] = getFirstFiltered(quizProgress, bounds, {key: 'seen', value: false});\n\n setBlockIndex(blockIndex);\n setQuestionIndex(blockIndex, questionIndex);\n },\n }\n\n const transition = (filterActive && transitions[`${action}FilterActive`]) ? transitions[`${action}FilterActive`] : transitions[action];\n return transition();\n}\n\nfunction testReview(action, currentBlockIndex, testBlockConnections, quizProgress, filter, setters, endBlockIndex) {\n const defaults = getDefaults(action, currentBlockIndex, testBlockConnections, quizProgress, filter, setters);\n const {setBlockIndex, setCurrentIndex: setQuestionIndex, clearCurrentIndex} = setters;\n const filterActive = !!filter.key;\n\n const transitions = {\n ...defaults,\n review: () => {\n const index = testBlockConnections.length - 1;\n setBlockIndex(index);\n },\n reviewSkipped: () => {\n const bounds = [1, testBlockConnections.length - 1];\n const [blockIndex, questionIndex] = getFirstFiltered(quizProgress, bounds, {key: 'didSkip', value: true});\n\n setBlockIndex(blockIndex);\n setQuestionIndex(blockIndex, questionIndex);\n },\n reviewMarked: () => {\n const bounds = [1, testBlockConnections.length - 1];\n const [blockIndex, questionIndex] = getFirstFiltered(quizProgress, bounds, {key: 'didMark', value: true});\n\n setBlockIndex(blockIndex);\n setQuestionIndex(blockIndex, questionIndex);\n },\n nextFilterActive: () => {\n const sectionBounds = [currentBlockIndex + 1, testBlockConnections.length];\n\n const [blockIndex, questionIndex] = getFirstFiltered(quizProgress, sectionBounds, filter);\n\n if (!blockIndex) {\n setBlockIndex(0);\n } else {\n setBlockIndex(blockIndex);\n Number.isInteger(questionIndex) && setQuestionIndex(blockIndex, questionIndex);\n }\n },\n next: () => {\n const nextBlockIndex = getNextQuestionBlockIndex(testBlockConnections, currentBlockIndex);\n\n if (nextBlockIndex === -1) {\n clearCurrentIndex();\n setBlockIndex(endBlockIndex);\n return;\n } else {\n setBlockIndex(nextBlockIndex);\n }\n\n const shouldUpdateQuestionIndex = ['questionSet', 'passage', 'caseQuestionSet'].includes(testBlockConnections[nextBlockIndex].testBlock.type);\n const questionIndex = getFirstFilterMatch(quizProgress[nextBlockIndex], filter) || 0;\n\n\n if (shouldUpdateQuestionIndex) {\n setQuestionIndex(nextBlockIndex, questionIndex);\n }\n }\n }\n\n const transition = (filterActive && transitions[`${action}FilterActive`]) ? transitions[`${action}FilterActive`] : transitions[action];\n return transition();\n}\n\nfunction anatomyCase(...args) {\n return practiceTest(...args);\n}\n\nfunction anatomyCaseReview(...args) {\n return testReview(...args);\n}\n\nfunction coursePlayer(...args) {\n return practiceTest(...args);\n}\n\nfunction tbcQuestionBank(...args) {\n return questionBank(...args);\n}\nfunction tbcSavedBank(...args) {\n return questionBank(...args);\n}\n\nfunction quickReview(...args) {\n return questionBank(...args);\n}\n\nfunction masteryReview(...args) {\n return questionBank(...args);\n}\n\nfunction bookmarkedQuestionReview(...args) {\n return questionBank(...args);\n}\n\nfunction customTest(...args) {\n return questionBank(...args);\n}\n\nfunction questionSearchBank(...args) {\n return questionBank(...args);\n}\n\nexport {practiceTest, anatomyCase, anatomyCaseReview, fullLengthTest, customTest, questionBank, tbcQuestionBank, tbcSavedBank, getSectionBounds, getSectionWindow, testReview, coursePlayer, quickReview, masteryReview, bookmarkedQuestionReview, questionSearchBank};\n","import React, {useCallback, createContext, useContext, useEffect, useState} from 'react';\nimport {useHistory} from 'react-router-dom';\n\nimport {useTestContext} from '../TestBase';\nimport {useUserDataContext} from '../UserData';\nimport useProgress from './useProgress';\n\nimport {ReloadBlockerProvider, useReloadBlockerContext} from '../ReloadBlocker';\nimport {getTestBlockConnections, getTestReviewBlockConnections, loadMoreMasteryIntoBlock} from './helpers';\nimport {insertAtIndex, getTestBlockQuestions, getQuestionParts} from '@bootcamp/shared/src/util';\n\nimport {loadMastery} from '@bootcamp/shared/src/requests';\nimport * as blockTransitions from './transitions';\nimport firstBy from 'thenby';\nconst TestNavigatorContext = createContext();\n\n\nconst useTestNavigator = (template, match, testId, progressId, interactionKey, skipStartBlock, type, disableDarkMode) => {\n const [loading, setLoading] = useState(true);\n const [updating, setUpdating] = useState(false);\n const [blockIndex, setBlockIndex] = useState(0);\n const [shuffled, setShuffled] = useState(false);\n const [navigationFilter, setNavigationFilter] = useState({});\n const [timeMultiplier, setTimeMultiplier] = useState(1);\n const {params: {id: urlParamTestId}} = match;\n\n // use ids from props instead of match if possible\n const id = testId || urlParamTestId;\n\n // INTERACTIVE PAGE ELEMENTS\n const [leftButtons, setLeftButtons] = useState([]);\n const [centerButtons, setCenterButtons] = useState([]);\n const [rightButtons, setRightButtons] = useState([]);\n\n const {toggleReloadBlocker} = useReloadBlockerContext();\n const {push, goBack, action} = useHistory();\n const {fetchTest, reset, test, setTest, customTestConfig} = useTestContext();\n const {DEFAULT_USER_ID, bootcamp, searchUserInteractions, toggleDarkMode, saveUserInteraction} = useUserDataContext();\n\n const isReadinessExam = type === 'readinessExam';\n const tutorMode = (isReadinessExam && template !== 'testReview') ? false : (!customTestConfig || test?.config?.tutorMode);\n\n const {mcatTheme} = searchUserInteractions('mcatTheme') || {mcatTheme: 'default'};\n const setMcatTheme = async (theme) => {\n await saveUserInteraction('mcatTheme', JSON.stringify({mcatTheme: theme}));\n }\n const {\n methods: {\n setQuizProgress,\n updateQuizProgress,\n saveProgress,\n saveAndTrackProgress,\n saveQuestionProgresses,\n saveBlockProgress,\n instantiateBlockProgressFromTemplate,\n instantiateQuestionProgressFromArray,\n getAnswerDataForQuestion,\n markQuestion,\n instantiateTestProgress,\n handleSetHighlights,\n syncQuestionSearchProgress,\n },\n variables: {\n quizProgress,\n testProgressId,\n answerData,\n }\n } = useProgress(test, progressId, template, blockIndex, match, isReadinessExam, customTestConfig);\n\n const testBlockConnections = template === 'testReview' ? getTestReviewBlockConnections(test, quizProgress) : getTestBlockConnections(test);\n const startBlockIndex = 0;\n const endBlockIndex = testBlockConnections.length - 1;\n const currentQuestionIndex = quizProgress?.[blockIndex]?.questions?.findIndex(({current}) => current);\n const currentQuestion = getTestBlockQuestions(testBlockConnections[blockIndex]?.testBlock)[currentQuestionIndex];\n const {answers} = getQuestionParts(currentQuestion);\n const correctAnswerIndex = answers?.reduce((acc, [answerText, answerCorrect], index) => answerCorrect ? `${acc}${index}` : acc, '') || -1;\n const totalQuestions = quizProgress?.reduce((acc, {questions}) => questions ? acc + (questions?.length || 0) : acc, 0);\n const globalQuestionIndex = quizProgress?.slice(0, blockIndex)?.reduce((questionCount, blockProgress) => {\n if (!blockProgress?.questions) return questionCount;\n return questionCount + (blockProgress?.questions || []).length;\n }, 0) + currentQuestionIndex + 1;\n\n const shuffleArray = array => {\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const temp = array[i];\n array[i] = array[j];\n array[j] = temp;\n }\n return array\n }\n\n const toggleQuestionProgressShuffle = () => {\n setQuizProgress(quizProgress => {\n const savedQuestions = [...(quizProgress?.[1]?.questions || [])];\n return quizProgress.reduce((acc, blockProgress, index) => {\n if (shuffled) {\n // if we're already shuffled, we want to unshuffle -- sort questions back into blockProgresses\n blockProgress.questions = savedQuestions.filter(({blockArrayIndex}) => blockArrayIndex === index).sort(firstBy('questionIndex'))\n } else {\n if (index === 1) {\n const allProgress = quizProgress.reduce((acc, blockProgress, index) => {\n const testBlock = testBlockConnections[index] && testBlockConnections[index].testBlock;\n const isSequentialBlock = testBlock?.components?.[0]?.contents?.includes('\"isSequentialSet\":true');\n const questions = getTestBlockQuestions(testBlock, template === 'customTest');\n return blockProgress.questions ? [...acc, ...blockProgress.questions.map((question, questionIndex) => ({...question, isSequentialBlock, blockArrayIndex: index, question: {...questions[questionIndex], overallIndex: acc.length + questionIndex, connections: {items: [{block: testBlock}]}}, }))] : acc\n }, [])\n const filteredProgress = allProgress.filter(({isSequentialBlock}) => isSequentialBlock);\n blockProgress.questions = [...shuffleArray(allProgress.filter(({isSequentialBlock}) => !isSequentialBlock)), ...filteredProgress];\n } else {\n blockProgress.questions = []\n }\n }\n return [...acc, blockProgress];\n }, [])\n });\n setShuffled(!shuffled);\n }\n\n function clearCurrentIndex () {\n setQuizProgress(quizProgress =>\n quizProgress.map(blockProgress => ({\n ...blockProgress,\n ...(!!blockProgress.questions\n ? {\n questions: blockProgress.questions.map(questionProgress => ({\n ...questionProgress,\n ...template === 'questionBank' ? {didCheck: false, selectedAnswerIndex: -1} : {},\n current: false\n }))\n }\n : {})\n })));\n }\n\n function setCurrentIndex(blockIndex, questionIndex) {\n clearCurrentIndex();\n setQuizProgress(quizProgress => {\n setBlockIndex(blockIndex);\n\n const blockProgress = quizProgress[blockIndex];\n const blockHasQuestions = !!blockProgress.questions;\n\n const updatedBlockProgress = blockHasQuestions && Number.isInteger(questionIndex)\n ? {...blockProgress, questions: blockProgress.questions.map((question, index) => ({...question, current: index === questionIndex, seen: question.seen || index === questionIndex}))}\n : blockProgress;\n\n return insertAtIndex(quizProgress, blockIndex, updatedBlockProgress);\n });\n };\n\n function transitionBlock(action) {\n // this has been implemented as a singular action based block updater rather than having\n // in favor of update block index / semaphore\n const setters = {setBlockIndex, setCurrentIndex, clearCurrentIndex};\n blockTransitions[template](action, blockIndex, testBlockConnections, quizProgress, navigationFilter, setters, endBlockIndex);\n }\n\n function initPositionFromUrlParam(blockId, questionId) {\n const blockIndexMatch = quizProgress.findIndex(({blockId: testBlockId}) => testBlockId === blockId);\n const blockIndex = blockIndexMatch === -1 ? 1 : blockIndexMatch;\n const questionIndex = quizProgress?.[blockIndex]?.questions?.find(({questionBaseId, question}) => (questionBaseId || question?.id) === questionId)?.index\n\n setCurrentIndex(blockIndex, questionIndex);\n }\n\n const loadMoreForBlock = useCallback(async (block, blockIndex) => {\n const {nextToken, masteryLevel, tagIds} = block;\n\n if (!nextToken) return;\n setUpdating(true);\n\n // TODO move loadMastery into separate request function so that it can be reused between here and MasteryBank\n // TODO there is a situation here specifically for bookmarkedQuestionReview banks wherein the load mastery request returns no results but DOES return a nextToken\n // this is because we are enforcing a filter (bookmarked: true) and appsync filters the result after the limit is enforced.. FIX\n const bookmarksOnly = template === 'bookmarkedQuestionReview';\n const {mastery, nextToken: nextNextToken} = await loadMastery(masteryLevel, tagIds, DEFAULT_USER_ID, nextToken, bootcamp, bookmarksOnly, type);\n\n const updatedTest = loadMoreMasteryIntoBlock(test, blockIndex, mastery, nextNextToken); // TODO test this with different block sizes\n\n const updatedBlock = {\n ...block,\n nextToken: nextNextToken,\n questionConnections: {\n items: [\n ...block.questionConnections.items,\n ...mastery\n ]\n }\n };\n const filteredQuestions = updatedBlock.questionConnections.items.filter((question) => {\n if (!navigationFilter.key) return true;\n if (navigationFilter.key === 'search') {\n const {prompt, answers, explanation} = getQuestionParts(question);\n const questionString = `${prompt} ${answers.map(({text}) => text).join(' ')} ${explanation}`;\n return questionString.toLowerCase().includes(navigationFilter.value.toLowerCase());\n }\n return (navigationFilter.key === 'masteryLevel' && navigationFilter.value === question.masteryLevel) ||\n // question answer outcome doesn't match answered filter\n (navigationFilter.key === 'didSelectCorrectAnswer' && navigationFilter.value === question.didSelectCorrectAnswer) ||\n (navigationFilter.key === 'bookmarked' && question.bookmarked)\n\n });\n if (filteredQuestions.length <= 20 && nextNextToken) {\n return await loadMoreForBlock(updatedBlock, blockIndex);\n }\n\n setTest(updatedTest);\n\n }, [DEFAULT_USER_ID, test, setTest, navigationFilter]);\n\n async function autoTagOnSubmit () {\n try {\n const updates = quizProgress.reduce((acc, {questions}) => !questions ? acc : [...acc, ...questions.map(currentQuestionProgress => {\n const credit = {\n full: (!!currentQuestionProgress?.answerState?.score && !!currentQuestionProgress?.answerState?.maxScore && currentQuestionProgress?.answerState?.score === currentQuestionProgress?.answerState?.maxScore) || currentQuestionProgress?.didSelectCorrectAnswer,\n partial: currentQuestionProgress?.answerState?.score > 0 && (currentQuestionProgress?.answerState?.score !== currentQuestionProgress?.answerState?.maxScore),\n none: (!currentQuestionProgress?.answerState?.score || currentQuestionProgress?.answerState?.score === 0),\n };\n const autoTag = credit.full\n ? 'mastered'\n : credit.partial\n ? 'reviewing'\n : 'learning';\n return {...currentQuestionProgress, masteryLevel: autoTag, question: {...currentQuestionProgress.question, masteryLevel: autoTag}, }\n })], [])\n\n // only save progresses for 'seen' untagged questions\n const filteredUpdates = updates\n .filter(({seen, didCheck}) => seen && !didCheck);\n\n await saveQuestionProgresses(filteredUpdates);\n } catch (error) {\n console.error(error);\n }\n }\n\n function handleGoBack() {\n try {\n\n const handler = () => {\n const canGoBack = action !== 'POP';\n const urlParts = window.location.pathname.split('/');\n const previousPath = urlParts\n .slice(0,2)\n .join('/');\n\n if (urlParts[2] === 'custom-test') {\n push(`${previousPath}/previous-tests/review?key=${encodeURIComponent(test.config.testStorageKey)}`);\n } else if (canGoBack) {\n goBack();\n } else {\n push(previousPath);\n }\n }\n\n toggleReloadBlocker(false);\n setTimeout(handler, 100);\n } catch (error) {\n // console.log('error going back');\n }\n };\n\n // reset test in TestBase when component unmounts\n useEffect(() => reset, []);\n\n useEffect(() => {\n window.scroll(0, 0);\n\n if (template === 'questionSearchBank') {\n const scaffoldedTest = {\n config: {\n name: 'test',\n },\n id: testId,\n blockConnections: {\n items: [\n {testBlock: {type: 'startBlock'}, index: 0},\n {\n testBlock: {\n type: 'questionSet',\n questionConnections: {\n items: []\n }\n },\n index: 1\n },\n {testBlock: {type: 'endBlock'}, index: 2}\n ]\n }\n }\n setTest(scaffoldedTest);\n return;\n };\n\n if (!test && id && DEFAULT_USER_ID) {\n fetchTest(id, template === 'testReview' ? \"getTestNoQuestions\" : \"getTest\")\n }\n }, [id, template, progressId, DEFAULT_USER_ID]);\n\n useEffect(() => {\n\n\n if (!!test && !quizProgress.length && isReadinessExam && template === 'tbcSavedBank' && ['inbde', 'med-school', 'nclex', 'mcat'].includes(bootcamp)) {\n return setLoading(false);\n }\n\n\n\n if (!!test && !!quizProgress.length && loading) {\n const blockId = new URLSearchParams(window.location.search).get('blockId');\n const questionId = new URLSearchParams(window.location.search).get('questionId');\n\n if (blockId || questionId) {\n initPositionFromUrlParam(blockId, questionId);\n } else if (test.config?.suspended && test.config?.questionIndex) {\n setCurrentIndex(1, test.config?.questionIndex);\n } else if (skipStartBlock) {\n transitionBlock(['tbcSavedBank', 'tbcQuestionBank'].includes(template) && !isReadinessExam ? 'nextUnanswered' : 'next');\n }\n\n const darkModeEnabled = searchUserInteractions('darkModeEnabled') === true;\n\n !disableDarkMode && toggleDarkMode(darkModeEnabled);\n setLoading(false);\n }\n }, [quizProgress, test, skipStartBlock]);\n\n return {\n methods: {\n setBlockIndex,\n setLeftButtons,\n setCenterButtons,\n setRightButtons,\n setNavigationFilter,\n setQuizProgress,\n saveProgress,\n saveAndTrackProgress,\n updateQuizProgress,\n saveQuestionProgresses,\n clearCurrentIndex,\n setCurrentIndex,\n transitionBlock,\n setUpdating,\n saveBlockProgress,\n instantiateBlockProgressFromTemplate,\n instantiateQuestionProgressFromArray,\n loadMoreForBlock,\n getAnswerDataForQuestion,\n toggleQuestionProgressShuffle,\n getSectionWindow: blockTransitions.getSectionWindow,\n autoTagOnSubmit,\n markQuestion,\n handleGoBack,\n setTimeMultiplier,\n instantiateTestProgress,\n setLoading,\n handleSetHighlights,\n setTest,\n syncQuestionSearchProgress,\n setMcatTheme\n },\n variables: {\n answerData,\n test,\n testBlockConnections,\n startBlockIndex,\n endBlockIndex,\n loading,\n updating,\n blockIndex,\n quizProgress,\n leftButtons,\n centerButtons,\n rightButtons,\n navigationFilter,\n template,\n testProgressId,\n shuffled,\n interactionKey,\n skipStartBlock,\n customTestConfig,\n tutorMode,\n type,\n timeMultiplier,\n correctAnswerIndex,\n totalQuestions,\n globalQuestionIndex,\n currentQuestionIndex,\n mcatTheme\n }\n }\n}\n\nconst TestNavigatorProviderBase = ({\n match,\n children,\n template,\n testId,\n progressId,\n onExitTest,\n interactionKey,\n enableReloadBlocker=true,\n skipStartBlock,\n type,\n disableDarkMode,\n}) => {\n const testNavigatorProps = useTestNavigator(template, match, testId, progressId, interactionKey, skipStartBlock, type, disableDarkMode);\n const {variables: {startBlockIndex, blockIndex}} = testNavigatorProps;\n const {toggleReloadBlocker} = useReloadBlockerContext();\n\n useEffect(() => {\n if (startBlockIndex === blockIndex) return;\n\n // enable reload blocker after moving past start block\n enableReloadBlocker && toggleReloadBlocker(true);\n }, [startBlockIndex, blockIndex]);\n\n return (\n \n {children}\n \n );\n}\n\n\nconst TestNavigatorProvider = props => (\n \n \n \n);\n\n\nconst useTestNavigatorContext = () => useContext(TestNavigatorContext);\n\nexport {useTestNavigatorContext, TestNavigatorProvider};\n","import React from 'react';\nimport Calculator from './Calculator';\nimport TICalculator from './TICalculator';\nimport PeriodicTable from './PeriodicTable';\nimport PropTypes from 'prop-types';\nimport useHotkeys from '@reecelucas/react-use-hotkeys';\n\nimport {useTestNavigatorContext} from '@bootcamp/web/src/contexts/TestNavigator';\n\nconst typeMap = {\n 'calculator': Calculator,\n 'ticalc': TICalculator,\n 'periodic': PeriodicTable\n}\n\nconst Exhibit = ({type, onCloseExhibit, defaultPosition}) => {\n const {variables: {template}} = useTestNavigatorContext() || {variables: {template: ''}};\n const SelectedExhibit = typeMap[type];\n\n useHotkeys('Escape', onCloseExhibit, [onCloseExhibit]);\n\n return \n}\n\nExhibit.propTypes = {\n type: PropTypes.oneOf(['calculator', 'periodic'])\n};\n\nexport default Exhibit;\n","import React from 'react';\nimport styled from 'styled-components';\nconst StreakText = styled.span`\n position: absolute;\n bottom: 100%;\n left: 0;\n right: 0;\n padding-bottom: .5em;\n margin: auto;\n text-align: center;\n font-size: 11px;\n font-weight: bold;\n text-transform: uppercase;\n color: white;\n`;\n\nconst StreakAlert = ({progress}) => {\n let streak = 0;\n\n [...progress].reverse().some(progressObj => {\n if (!progressObj.didSubmitCorrectAnswer) {\n return true;\n }\n ++streak;\n return false;\n });\n\n if (streak === 0) {\n return null;\n }\n\n const encouragement = ['Awesome!', 'Great Work!', 'That\\'s Right!'];\n // const encouragementIndex = Math.floor(Math.random() * encouragement.length);\n\n if (streak === 1) {\n return (\n {encouragement[0]}\n )\n }\n\n return (\n {streak} in a row\n )\n};\n\n\nexport default StreakAlert;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport StreakAlert from '../StreakAlert';\n\nconst BarContainer = styled.div`\n width: 100%;\n height: 15px;\n background-color: rgba(0, 0, 0, 0.1);\n border-radius: 15px;\n`;\n\nconst BarInner = styled(BarContainer)`\n width: ${({progress, total}) => !total ? 0 : (progress/total) * 100}%;\n background-color: #43E5B4;\n transition: width 2s;\n position: relative;\n`;\n\nconst NumericContainer = styled.div`\n color: white;\n font-weight: 600;\n`;\n\nconst Bar = ({progress, answerStats, total}) => (\n \n \n \n \n \n);\n\nconst Numeric = ({progress, total}) => (\n \n {`${progress + 1} of ${total}`}\n \n);\n\nconst Progress = ({displayStyle, answerStats, progress, total}) => {\n const ProgressComponent = displayStyle === 'bar' ? Bar : Numeric;\n return ;\n}\n\n\nProgress.propTypes = {\n displayStyle: PropTypes.oneOf(['bar', 'numeric']),\n answerStats: PropTypes.shape({}).isRequired,\n progress: PropTypes.number.isRequired,\n total: PropTypes.number.isRequired,\n};\n\nProgress.defaultProps = {\n displayStyle: 'bar',\n};\n\nexport default Progress;\n","export default __webpack_public_path__ + \"static/media/dailywarmup.61608edb.svg\";","import React, {useState, useEffect} from 'react';\nimport styled from 'styled-components';\nimport {GutterRow} from '../../../../components/Spacing';\nimport dailywarmup from './images/dailywarmup.svg';\n\nconst FrontPageContainer = styled(GutterRow)`\n overflow: visible;\n`;\n\nconst Image = styled.img`\n opacity: ${({loading}) => loading ? '0' : '1'};\n transform: ${({loading}) => loading ? 'translateY(100px)' : 'translateY(0px)'};\n transition: opacity .8s, transform 1s;\n width: 100%;\n max-width: 450px;\n margin: auto;\n`;\n\nconst FrontPage = () => {\n const [loading, setLoading] = useState(true);\n useEffect(() => {\n setTimeout(() => setLoading(false), 1);\n }, [])\n return (\n \n \n \n )\n}\n\nexport default FrontPage;\n","import React from 'react';\nimport styled from 'styled-components';\nimport {GutterRow} from '../../../../components/Spacing';\n\nconst LastPageContainer = styled(GutterRow)``;\n\nconst TextContainer = styled.div`\n line-height: 1.75;\n font-size: 28px;\n`;\n\nconst StatisticText = styled.span`\n color: #5096E4;\n font-weight: 500;\n margin: 0 5px;\n border-bottom: 1px dotted #5096E4;\n`;\n\nconst LastPage = ({progress, startTime, endTime}) => {\n const questionsCorrect = progress.reduce((correctCount, {didSubmitCorrectAnswer}) => didSubmitCorrectAnswer ? ++correctCount : correctCount, 0);\n const timeElapsed = new Date(endTime.current - startTime.current);\n const minutesElapsed = timeElapsed.toISOString().substr(14, 2);\n const secondsElapsed = timeElapsed.toISOString().substr(17, 2);\n const averagePace = Math.round((timeElapsed.getTime() / 1000) / progress.length);\n return (\n \n \n Way to go! You finished today's warmup. You answered {questionsCorrect} question{questionsCorrect === 1 ? '' : 's'} correctly in {!!parseInt(minutesElapsed) && `${minutesElapsed}m`} {secondsElapsed}s, with an average pace of {averagePace} seconds per question. See you tomorrow!\n \n \n )\n\n}\n\nexport default LastPage;\n","import React, {useState, useEffect, useRef} from 'react';\nimport styled, {css} from 'styled-components';\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\nimport moment from 'moment';\nimport firstBy from 'thenby';\n// DATA\nimport {getQuestionParts} from '@bootcamp/shared/src/util';\n\n// DISPLAY\n// extra\nimport QuestionView from '../../components/QuestionView';\nimport {GutterColumn, GutterRow, GutterInner} from '../../components/Spacing';\nimport {RaisedButton, LoadingSpinner, FixedBar} from '../../components/Branding';\nimport {Column, Row} from '../../components/Grid';\nimport {Close} from '@styled-icons/material/Close';\nimport Exhibit from '../../components/Exhibit';\nimport SubmitAnatomyCase from '../Modal/components/SubmitAnatomyCase';\nimport {useModalContext} from '../../contexts/Modal';\n\n// intra\nimport Progress from './components/Progress';\nimport FrontPage from './components/FrontPage';\nimport LastPage from './components/LastPage';\nimport {useHistory} from 'react-router-dom';\n\n// VARS\nconst barHeight = 75;\n\n\n// STYLE\nconst Bar = styled(FixedBar).attrs({barHeight})`\n background: #5096E4;\n`\n\nconst TopBar = styled(Bar).attrs({barHeight, size: 1, position: 'top'})`\n box-shadow: 0px 1px 0px #3c82d0;\n`\n\nconst CloseButton = styled(Close).attrs({ size: 24 })`\n color: white;\n cursor: pointer;\n margin-right: 1em;\n`;\nconst BottomBar = styled(Bar).attrs({barHeight, size: 1.5, position: 'bottom'})`\n background: white;\n box-shadow: 0px -1px 0px #d4d8d9;\n`;\n\nconst ContentArea = styled(GutterColumn)`\n margin-top: ${barHeight}px;\n padding-bottom: ${barHeight * 3}px;\n min-height: calc(100vh - ${barHeight}px);\n overflow-y: scroll;\n background: ${({currentPage}) => currentPage === 0 ? 'linear-gradient(-180deg,#5096e4,#2F80ED)' : 'white'};\n ${GutterInner} > ${Column} {\n flex: 1;\n ${({centered}) => css`\n justify-content: ${centered ? 'center' : 'flex-start'};\n height: ${centered ? '100%' : 'auto'};\n padding-bottom: ${centered ? '0px' : `${barHeight * 1.5}px`};\n `}\n }\n`;\n\nconst Container = styled(Column)``;\n\nconst BarWrapper = styled(GutterRow)`\n ${GutterInner} > ${Row} {\n align-items: center;\n }\n`;\n\nconst ControlButton = styled(RaisedButton)``;\n\nconst ButtonGroup = styled(Row)`\n align-items: center;\n ${ControlButton} {\n min-width: 150px;\n text-transform: uppercase;\n font-weight: bold;\n margin-left: 15px;\n &:first-child {\n margin-left: 0px;\n }\n }\n`;\n\nconst ExamControls = ({blueButton, greyButton, exhibitButton}) => {\n return (\n \n {greyButton && }\n {blueButton && }\n {exhibitButton && }\n \n )\n}\n\nconst OffscreenLoader = styled.div`\n position: absolute;\n transform: translate(-10000px, -10000px);\n height: 0;\n width: 0;\n overflow: hidden;\n`;\n\nconst CurrentDateContainer = styled.div`\n color: white;\n font-weight: bold;\n text-align: center;\n margin: 0 20px 0 auto;\n`;\n\nconst CurrentDate = () => {moment().format(\"dddd, MMMM Do, YYYY\")};\n\nconst FrontQuiz = ({location, loading, test}) => {\n // QUIZ STATE\n const [currentPage, setCurrentPage] = useState(0);\n const [quizProgress, setQuizProgress] = useState([]);\n const [questionIndex, setQuestionIndex] = useState(0);\n const startTime = useRef(null);\n const endTime = useRef(null);\n const nextQuestionIndex = questionIndex + 1;\n const {goBack} = useHistory();\n const {modalDispatch} = useModalContext();\n //TODO: use Router w/ questionIndex to allow using browserhistory\n\n // QUESTION STATE\n const [didSubmitAnswer, setDidSubmitAnswer] = useState(false);\n\n // INTERACTIVE PAGE ELEMENTS\n const [blueButton, setBlueButton] = useState();\n const [greyButton, setGreyButton] = useState();\n const [exhibitButton, setExhibitButton] = useState();\n const [showingExhibit, setShowingExhibit] = useState(false);\n\n // DATA\n useDocumentTitle(`team bootcamp | warmup`);\n const testBlockConnections = (!!test.blockConnections && test.blockConnections.items.sort(firstBy('index'))) || [];\n const questionConnections = testBlockConnections.reduce((acc, {testBlock: {questionConnections}}) => !!questionConnections && !!questionConnections.items ? acc.concat(questionConnections.items.sort(firstBy('index'))) : acc, []) || [];\n // questionConnection has question @connection field\n const questions = questionConnections.reduce((questions, {question}) => (question && questions.concat(question)), []);\n\n // CURRENT DATA\n const currentQuestion = questions[questionIndex] || {};\n const questionParts = getQuestionParts(currentQuestion);\n const {subject} = questionParts.tags.find(tag => !!tag.subject) || {};\n const periodicTableSubjects = ['Organic Chemistry', 'General Chemistry', 'Biology'];\n const calculatorSubjects = ['Quantitative Reasoning'];\n const exhibitType = periodicTableSubjects.includes(subject) ? 'periodic' : calculatorSubjects.includes(subject) ? 'calculator' : null;\n\n // PREFETCHED DATA\n const nextQuestion = questions[nextQuestionIndex] || {};\n const nextQuestionParts = getQuestionParts(nextQuestion);\n\n // PREFETCH\n // during quiz, prefetch nextRevision; before/after quiz, fetch currentRevision\n const prefetchQuestionParts = [1,3].includes(currentPage) ? nextQuestionParts : questionParts;\n const offscreenQuestion = (\n \n \n \n );\n\n // HANDLERS\n const handleSelectAnswerIndex = (selectedAnswerIndex, didSelectCorrectAnswer) => {\n setBlueButton({\n children: 'Check',\n onClick: () => handleSubmitAnswerClick(selectedAnswerIndex, didSelectCorrectAnswer)\n })\n }\n\n const handleSubmitAnswerClick = (submittedAnswerIndex, didSubmitCorrectAnswer) => {\n setDidSubmitAnswer(true);\n\n // track quiz progress & score here\n // use array so we can track the most recent answers (\"X in a row\")\n const quizProgressElement = {questionIndex, submittedAnswerIndex, didSubmitCorrectAnswer};\n setQuizProgress([...quizProgress, quizProgressElement]);\n\n // if the final question has been answered, we need to mark the endTime.\n if (nextQuestionIndex === questions.length) {\n endTime.current = new Date();\n }\n\n setBlueButton({\n children: 'Next',\n onClick: handleNextQuestionClick\n });\n setGreyButton();\n }\n\n const handleNextQuestionClick = () => {\n setDidSubmitAnswer(false);\n setShowingExhibit(false)\n setQuestionIndex(nextQuestionIndex);\n }\n\n const handleExhibitToggle = () => setShowingExhibit(showingExhibit => !showingExhibit);\n\n const quizProgressByQuestionIndex = questionIndex => quizProgress.find(quizProgressElement => quizProgressElement.questionIndex === questionIndex) || {};\n\n const pages = [\n ,\n ,\n ,\n ,\n ];\n\n const ExamComponent = pages[currentPage];\n // HOOKS:\n // changing pages hook\n useEffect(() => {\n switch (currentPage) {\n case 0:\n setQuestionIndex(0);\n setQuizProgress([]);\n setDidSubmitAnswer(false);\n setBlueButton(!loading ? {\n children: Loading... \n } : {\n children: 'Start',\n onClick: () => {\n setCurrentPage(1);\n startTime.current = new Date();\n }\n });\n setGreyButton(false);\n break;\n case 1:\n setBlueButton({\n children: 'Check',\n disabled: true\n });\n setExhibitButton(exhibitType && {\n children: 'Exhibit',\n onClick: handleExhibitToggle\n });\n break;\n case 2:\n setBlueButton({\n children: 'Review',\n onClick: () => setCurrentPage(3)\n });\n setGreyButton();\n setExhibitButton();\n setQuestionIndex(0);\n break;\n case 3:\n setBlueButton({\n children: 'Next',\n onClick: handleNextQuestionClick\n });\n setExhibitButton(exhibitType && {\n children: 'Exhibit',\n onClick: handleExhibitToggle\n });\n setGreyButton(questionIndex > 0 && {\n children: 'Previous',\n onClick: () => setQuestionIndex(questionIndex - 1)\n });\n break;\n default:\n return\n }\n }, [currentPage, questionIndex, loading, exhibitType])\n\n // end of test hook\n useEffect(() => {\n if ([1,3].includes(currentPage) && questionIndex === questions.length) {\n setCurrentPage(2);\n setShowingExhibit(false);\n }\n }, [currentPage, questionIndex, questions]);\n\n function handleCloseClick () {\n if (document.getElementById('wp-root')) {\n if (window.confirm('Would you like to end the quiz and return to the Classroom page?')) {\n window.location.pathname = '/classroom';\n }\n } else {\n modalDispatch({\n type: 'open',\n component: SubmitAnatomyCase,\n enableClickClose: true,\n componentProps: {\n headerText: 'Would you like to end your warmup?',\n bodyText: '',\n cancelConfig: {\n text: 'Keep Reviewing',\n onCancel: () => {\n modalDispatch({type: 'close'});\n },\n shouldRedirect: false,\n\n },\n confirmConfig: {\n text: 'End Review',\n color: '#5096E4',\n onConfirm: () => {\n setTimeout(() => goBack(), 100);\n },\n shouldRedirect: false,\n }\n },\n })\n }\n }\n\n return (\n \n {offscreenQuestion}\n \n {currentPage > 0\n ? (\n \n \n \n \n )\n : \n }\n \n \n {ExamComponent}\n \n \n \n \n {(showingExhibit && exhibitType) && setShowingExhibit(false)} />}\n \n \n \n )\n}\n\nexport default FrontQuiz;\n","import React, {useCallback, useEffect} from 'react';\nimport {getTest, getQuestionForTest} from '@bootcamp/shared/src/requests';\n\nimport FrontTest from '../../../components/FrontTest';\nimport {useAsync} from '@bootcamp/shared/src/util/hooks';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport moment from 'moment';\nimport {getStreakDetails} from '@bootcamp/shared/src/util';\nimport firstBy from 'thenby';\nconst NUMBER_OF_QUESTIONS = 5;\n\nconst WarmupTest = ({location}) => {\n const fetchTest = useCallback(async () => {\n try {\n const test = await getTest('830d3a5d-8ce4-46cb-a6d5-1417fb4b50c3', 'getTestQuestionIds');\n const questionConnections = test.data.getTest.blockConnections.items[1].testBlock.questionConnections.items.sort(firstBy('index'));\n const totalDWUDays = Math.ceil(questionConnections.length / NUMBER_OF_QUESTIONS);\n // which day are we on?\n const originDate = moment('12/14/21');\n const startIndex = (moment().diff(originDate, 'days') % totalDWUDays) * NUMBER_OF_QUESTIONS;\n const idsToFetch = questionConnections\n .slice(startIndex, startIndex + NUMBER_OF_QUESTIONS)\n .map(({question}) => question.id);\n\n const promises = idsToFetch.map(getQuestionForTest);\n const resolvedPromises = await Promise.all(promises);\n const questions = resolvedPromises.map(promise => promise.data.getQuestionBase);\n const questionSets = [\n {\n index: 1,\n testBlock: {\n questionConnections: {\n items: questions.map(question => ({question}))\n }\n }\n }\n ]\n return {\n config: {\n title: `Daily Warmup`\n },\n id: '',\n blockConnections: {\n items: [\n {testBlock: {type: 'startQuickReview'}, index: 0},\n ...questionSets,\n {testBlock: {type: 'endBlock'}, index: questionSets.length + 1}\n ]\n }\n }\n } catch (e) {\n return {}\n }\n }, []);\n const {value: test} = useAsync(fetchTest);\n const {bootcamp, cognitoUser, interactions, saveUserInteraction} = useUserDataContext();\n\n useEffect(() => {\n if (!cognitoUser) return;\n const interactionKey = `Streak-DWU-${bootcamp}`;\n const previousInteraction = interactions.find(({id}) => id === `${cognitoUser?.getUsername()}-${interactionKey}`);\n const {streak, longestStreak, date: streakDate} = JSON.parse((previousInteraction || {}).value || '{}');\n\n const {today, streakCompletedToday, streakActive} = getStreakDetails(streak, streakDate);\n if (streakCompletedToday) return;\n\n const streakData = {\n streak: streak > 0 && streakActive ? streak + 1 : 1,\n date: today.format('M/D/YYYY'),\n longestStreak: streak + 1 > longestStreak && streakActive ? streak + 1 : (longestStreak || streak + 1)\n }\n saveUserInteraction(interactionKey, JSON.stringify(streakData))\n\n }, [cognitoUser])\n return (\n \n );\n}\n\nexport default WarmupTest;\n","import React from 'react';\n\nimport {Link} from 'react-router-dom';\n\nimport styled from 'styled-components';\n\nimport {resolveIconPath} from '@bootcamp/web/src/helpers';\n\nimport {H3} from '../../../components/Typography';\n\nimport ProgressBar from '../../../components/ProgressBar';\nimport {ExpertEducators} from '../../../components/ExpertEducators';\n\nimport {ChevronRight} from '@styled-icons/feather/ChevronRight';\nimport theme from '@bootcamp/shared/src/styles/theme';\n\nimport {formatClassroomVideoProgress} from '@bootcamp/shared/src/util/formatting';\nimport {useTestProgressArray} from '@bootcamp/shared/src/util/hooks';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\n\nconst Container = styled(Link)`\n display: flex;\n width: 100%;\n padding: 16px ${({theme}) => theme.layouts.spacing.l};\n background: linear-gradient(180deg,#FFFFFF 0%,#FFFFFF 50.68%,#F5F5F5 100%);\n text-decoration: none;\n border-radius: 8px;\n transition: all 100ms ease;\n align-items: center;\n user-select: none;\n &:hover {\n transform: scale(1.01);\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst ComingSoonContainer = styled(Container)`\n transition: none;\n cursor: default;\n &:hover {\n transform: none;\n }\n opacity: .9;\n`;\nconst Index = styled(H3)`\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n margin-right: ${({theme}) => theme.layouts.spacing.l};\n align-self: flex-start;\n ${({theme}) => theme.mediaQueries.tablet} {\n display: none;\n }\n`;\nconst Body = styled.div`\n width: 100%;\n max-width: 630px;\n`;\nconst Title = styled(H3)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n }\n`;\nconst StyledProgressBar = styled(ProgressBar)`\n &:nth-child(2) {\n margin-left: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst ProgressWrapper = styled.div`\n display: flex;\n margin-right: ${({theme}) => theme.layouts.spacing.l};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n gap: 8px;\n margin-right: ${({theme}) => theme.layouts.spacing.s};\n\n ${StyledProgressBar} {\n margin: 0;\n }\n }\n`;\nconst Educators = styled(ExpertEducators)`\n width: auto;\n margin-left: auto;\n justify-content: flex-end;\n\n h4 {\n max-width: 150px;\n text-align: right;\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n display: none;\n }\n`;\nconst ArrowWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n`;\nconst Arrow = styled(ChevronRight)`\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n`;\n\nconst Icon = styled.img`\n width: 24px;\n height: 24px;\n margin-right: 16px;\n display: ${({mobile}) => mobile ? 'none' : 'initial'};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\n\n\nconst defaultProgress = {\n reviewing: 0,\n learning: 0,\n mastered: 0,\n total: 0,\n};\n\nconst ClassroomRow = ({\n className,\n name,\n route,\n questionCount,\n locked,\n educators,\n progress,\n index,\n comingSoon,\n showProgress,\n showVideoProgress,\n videoLessonCount,\n detailsOrientation,\n iconPath,\n educatorNameLayout,\n courses\n}) => {\n\n const {DEFAULT_USER_ID} = useUserDataContext();\n const videoLessonProgress = useTestProgressArray(courses, formatClassroomVideoProgress, DEFAULT_USER_ID);\n\n const loadingProgress = (progress === null || videoLessonProgress === null || questionCount === 'loading' || videoLessonCount === 'loading') && !locked;\n\n const {reviewing, learning, mastered} = progress || defaultProgress;\n\n const progressSegments = [\n {count: mastered},\n {count: reviewing},\n {count: learning}\n ];\n\n if (comingSoon) {\n return (\n \n {index}\n \n {name} (coming soon)\n \n \n {/* \n \n */}\n \n )\n }\n\n return (\n \n {iconPath && }\n {index && {index}}\n \n {iconPath && }\n {name}\n \n {showProgress && (!loadingProgress && questionCount > 0) &&\n \n }\n {showVideoProgress &&\n {{`${videoLessonProgress > videoLessonCount ? videoLessonCount : videoLessonProgress || 0}`}} of {`${videoLessonCount} sections completed`}}\n detailsOrientation={detailsOrientation}\n lightMode\n />\n }\n \n \n \n \n \n \n \n );\n};\n\nClassroomRow.defaultProps = {};\nClassroomRow.propTypes = {};\n\nexport default ClassroomRow;\n","import React, {useCallback} from 'react';\nimport {Link} from 'react-router-dom';\n\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\n\nimport MasteryReview from '../../components/MasteryReview';\nimport GettingStarted from '../../components/GettingStarted';\n\nimport {H2} from '../../../components/Typography';\nimport FAQs from '../../components/WebflowFAQs';\nimport ClassroomCard from '../../components/Cards/ClassroomRow';\nimport FullClassroomCard from '../../components/Cards/Classroom';\nimport CreateTest from '../../pages/CreateTest';\n\nimport {useMasteryArray, useTestProgressArray} from '../../../hooks';\n\nimport {ReactComponent as Coffee} from '@bootcamp/shared/src/assets/svg/coffee.svg';\nimport reviewVideoBackground from '@bootcamp/shared/src/assets/images/inbde/review_video_background.jpg';\nimport {AddCircle} from '@styled-icons/fluentui-system-filled/AddCircle';\n\nimport {getClassroomQuestionCounts, getClassroomCourseBlockCounts} from '@bootcamp/shared/src/requests';\nimport {formatClassroomMastery, formatReviewVideoProgress} from '@bootcamp/shared/src/util/formatting'\nimport {getTestsByClassroom} from '@bootcamp/shared/src/util';\nimport {useAsync} from '../../../hooks';\nimport {People} from '@styled-icons/fluentui-system-filled/People'\n\n\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {useModalContext} from '../../../contexts/Modal';\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nimport Container from '../../pages/PageContainer';\n\nimport styled from 'styled-components';\n\nconst Title = styled(H2)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst CardWrapper = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n margin-bottom: ${({theme}) => theme.layouts.spacing.xxl};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.xl};\n }\n`;\nconst StyledClassroomCard = styled(ClassroomCard)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n\n &:last-child {\n margin-bottom: 0;\n }\n`;\nconst ReviewVideos = styled(FullClassroomCard)`\n display: block;\n margin-bottom: ${({theme}) => theme.layouts.spacing.xxl};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst StyledAddCircle = styled(AddCircle)`\n color: ${({theme}) => theme.colors.brandPalette.royal.default};\n width: 24px;\n height: 24px;\n min-width: 24px;\n min-height: 24px;\n`;\n\n\nconst Home = () => {\n const {config} = useBootcampConfigContext();\n const {isUpgraded} = useUserDataContext();\n const {modalDispatch} = useModalContext();\n\n useDocumentTitle(` ${config.meta.siteTitle} | Home`);\n\n const bootcamp = 'inbde';\n const bootcampTitle = bootcamp.toUpperCase();\n\n const todayActions = [\n {\n interactionKey: `Streak-${bootcamp}-Create-Test`,\n icon: {\n component: () => ,\n text: 'Create Test'\n },\n text: isUpgraded ? 'Study up to 100 questions at a time' : `Free users can study up to 40 questions. Upgrade your membership to get instant access to all content and features.`,\n containerProps: {\n onClick: () => modalDispatch({\n type: 'open',\n component: CreateTest,\n componentProps: !!isUpgraded ? {} : {defaults: {subject: 'Free Questions'}},\n enableClickClose: true,\n }),\n }\n },\n {\n interactionKey: `Streak-DWU-${bootcamp}`,\n hide: !isUpgraded,\n icon: {\n component: Coffee,\n text: 'Quick Study', themeColor: 'royal'\n },\n text: 'Study 10 random questions',\n containerProps: {\n as: Link,\n to: `/${bootcamp}/quick-study`,\n },\n checkIfComplete: interactionObj => {\n // TODO we'll probably want to do something with streak completion for dwu\n // check to see if they completed a warmup today and if there's a custom warmup test\n // for the day, load that review page or resume test etc...\n\n // const {streak, date: streakDate} = JSON.parse((interactionObj || {}).value || '{}');\n // const {streakCompletedToday} = getStreakDetails(streak, streakDate);\n // return streakCompletedToday;\n\n return false;\n }\n },\n {\n icon: {\n component: People,\n text: 'Study Group', themeColor: 'royal'\n },\n text: `Join 8k fellow students`,\n containerProps: {\n as: 'a',\n href: 'https://www.facebook.com/groups/inbdebootcamp',\n target: '_blank'\n }\n },\n\n ];\n\n const reviewVideos = config.classrooms.find(({route})=> route === 'review-videos');\n const classrooms = config.classrooms.filter(({route}) => route !== 'review-videos');\n const reviewVideoIds = reviewVideos.contentTypes[0].content[0].content.map(({id}) => id);\n\n const coursesByClassroom = getTestsByClassroom(config?.classrooms, [], ['Course']);\n const testsByClassroom = getTestsByClassroom(config?.classrooms, [], [], false, ['Question Banks']);\n\n const getQuestionCounts = useCallback(() => getClassroomQuestionCounts(bootcamp, testsByClassroom), [])\n const getCourseBlockCounts = useCallback(() => getClassroomCourseBlockCounts(bootcamp, coursesByClassroom), []);\n\n const {value: courseBlockCounts} = useAsync(getCourseBlockCounts);\n const {value: questionCounts} = useAsync(getQuestionCounts);\n\n const classroomTestIds = Object.values(testsByClassroom).flat();\n\n const progresses = useMasteryArray(classroomTestIds, 'testSmall', data => formatClassroomMastery(data, 'test'));\n const [reviewVideoProgress] = useTestProgressArray(reviewVideoIds, formatReviewVideoProgress);\n const loading = !progresses;\n\n // realign progresses with classrooms?\n const subjectProgress = classrooms.reduce((acc, {tagId, route}) => {\n const testIds = testsByClassroom[route];\n\n const mastery = testIds.reduce((acc, id) => ({\n learning: acc.learning + (progresses[id]?.learning || 0),\n reviewing: acc.reviewing + (progresses[id]?.reviewing || 0),\n mastered: acc.mastered + (progresses[id]?.mastered || 0),\n bookmarked: acc.bookmarked + (progresses[id]?.bookmarked || 0),\n }), {\n learning: 0,\n reviewing: 0,\n mastered: 0,\n bookmarked: 0\n });\n\n return {\n ...acc,\n [tagId]: mastery\n }\n }, {});\n\n const classroomMasteryConfig = classrooms\n .filter(({locked}) => !locked)\n .map(({name, route, tagId}) => ({name, route, progress: subjectProgress[tagId]}));\n\n return (\n \n \n \n Subjects\n \n \n {classrooms.map(({themePalette, name, route, tagId, tagIds, locked, questionCount, educators, comingSoon, icon}, index) => (\n ({\n learning: acc.learning + subjectProgress[tagId].learning,\n reviewing: acc.reviewing + subjectProgress[tagId].reviewing,\n mastered: acc.mastered + subjectProgress[tagId].mastered\n }), {learning: 0, reviewing: 0, mastered: 0})\n : subjectProgress[tagId]\n }\n comingSoon={comingSoon}\n />\n ))}\n \n \n {bootcampTitle} Review Videos\n \n {{`${reviewVideoProgress?.length || 0}`}} of {`352 lessons completed`}}\n questionCount={187}\n showExpertEducators\n educatorLayout={'column'}\n detailsBorder={false}\n backgroundImg={reviewVideoBackground}\n showProgress\n />\n \n \n );\n}\n\nHome.propTypes = {};\nHome.defaultProps = {};\n\nexport default Home;\n","import React from 'react';\n\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\nimport {Link} from 'react-router-dom';\n\nimport Grid from '../../components/Grid';\nimport MasteryReview from '../../components/MasteryReview';\nimport GettingStarted from '../../components/GettingStarted';\nimport FAQs from '../../components/WebflowFAQs';\n\nimport {H1, H2} from '../../../components/Typography';\nimport FullClassroomCard from '../../components/Cards/Classroom';\n\nimport {useMasteryArray} from '../../../hooks';\n\nimport {ReactComponent as Coffee} from '@bootcamp/shared/src/assets/svg/coffee.svg';\n\nimport {formatClassroomMastery} from '@bootcamp/shared/src/util/formatting'\nimport {getStreakDetails} from '@bootcamp/shared/src/util';\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\n\nimport Container from '../../pages/PageContainer';\n\nimport styled from 'styled-components';\n\nconst PageTitle = styled(H1)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n font-size: 48px;\n line-height: normal;\n letter-spacing: 0.25px;\n ${({theme}) => theme.mediaQueries.laptop} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n font-size: 36px;\n line-height: 44px;\n }\n`;\nconst Title = styled(H2)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n margin-bottom: ${({theme}) => theme.layouts.spacing.xl};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst StyledClassroomCard = styled(FullClassroomCard)`\n flex: 1;\n margin-right: ${({theme}) => theme.layouts.spacing.l};\n color: black;\n\n &:last-child {\n margin-right: 0;\n }\n\n ${({theme}) => theme.mediaQueries.laptop} {\n margin-right: 0px;\n margin-bottom: 0 0 ${({theme}) => theme.layouts.spacing.m};\n }\n\n svg {\n width: 42px;\n height: 42px;\n }\n`;\n\nconst Home = props => {\n const {config} = useBootcampConfigContext();\n\n useDocumentTitle(` ${config.meta.siteTitle} | Home`);\n\n const bootcamp = 'step-1';\n\n const todayActions = [\n {\n interactionKey: `Streak-DWU-${bootcamp}`,\n icon: {\n component: Coffee,\n text: 'Daily Warmup', themeColor: 'royal'\n },\n text: 'New questions brewed daily just for you',\n containerProps: {\n as: Link,\n to: `/${bootcamp}/quick-study`,\n },\n checkIfComplete: interactionObj => {\n const {streak, date: streakDate} = JSON.parse((interactionObj || {}).value || '{}');\n const {streakCompletedToday} = getStreakDetails(streak, streakDate);\n return streakCompletedToday;\n }\n },\n ];\n\n // const {DEFAULT_USER_ID} = useUserDataContext();\n // const [testProgressCount, setTestProgressCount] = useState(null);\n\n // wire this up to progress load\n const progresses = useMasteryArray(config.classrooms.map(({tagId}) => tagId), 'subject', data => formatClassroomMastery(data, 'subject'));\n const loading = !progresses;\n\n const classroomMasteryConfig = config.classrooms\n .filter(({locked}) => !locked)\n .map(({name, route, tagId}) => ({name, route, progress: progresses[tagId]}));\n\n //\n // const totalBookmarked = !loading\n // ? Object.values(progresses).reduce((acc, {bookmarked}) => bookmarked ? acc += bookmarked : acc, 0)\n // : 0;\n //\n // const studyToolDisplayData = {\n // bookmarks: {\n // count: totalBookmarked,\n // text: totalBookmarked === 1 ? 'Question' : 'Questions',\n // },\n // 'past-test-results': {\n // count: testProgressCount > 100 ? `${testProgressCount}+ ` : testProgressCount,\n // text: testProgressCount === 1 ? 'Attempt' : 'Attempts',\n // }\n // };\n //\n // const studyToolConfig = config.studyTools.map(({route, ...rest}) => ({route, ...studyToolDisplayData[route], ...rest}));\n // useEffect(() => {\n // if(!DEFAULT_USER_ID) return;\n //\n // async function fetchTestProgressCount() {\n // const count = await getTestProgressCount(DEFAULT_USER_ID);\n // setTestProgressCount(count);\n // }\n //\n // fetchTestProgressCount();\n //\n // }, [DEFAULT_USER_ID]);\n\n return (\n \n \n Home\n \n \n \n Step 1 Subjects\n \n (\n \n )}\n />\n \n \n );\n}\n\nHome.propTypes = {};\nHome.defaultProps = {};\n\nexport default Home;\n","import React, {useCallback} from 'react';\n\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\nimport {Link} from 'react-router-dom';\n\nimport Grid from '../../components/Grid';\nimport MasteryReview from '../../components/MasteryReview';\nimport GettingStarted from '../../components/GettingStarted';\nimport FAQs from '../../components/WebflowFAQs';\n\nimport {H2} from '../../../components/Typography';\nimport FullClassroomCard from '../../components/Cards/Classroom';\n\nimport {useMasteryArray, useTestProgressArray} from '../../../hooks';\n\nimport {ReactComponent as Coffee} from '@bootcamp/shared/src/assets/svg/coffee.svg';\n\nimport {formatClassroomMastery, formatClassroomVideoProgress} from '@bootcamp/shared/src/util/formatting';\nimport {getStreakDetails, getTestsByClassroom} from '@bootcamp/shared/src/util';\nimport {getClassroomQuestionCounts, getClassroomCourseBlockCounts} from '@bootcamp/shared/src/requests';\nimport {useAsync} from '@bootcamp/web/src/hooks';\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\n\nimport Container from '../../pages/PageContainer';\n\nimport styled from 'styled-components';\n\nconst Title = styled(H2)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst StyledClassroomCard = styled(FullClassroomCard)`\n flex: 1;\n margin-right: ${({theme}) => theme.layouts.spacing.l};\n color: black;\n\n &:last-child {\n margin-right: 0;\n }\n\n ${({theme}) => theme.mediaQueries.laptop} {\n margin-right: 0px;\n margin-bottom: 0 0 ${({theme}) => theme.layouts.spacing.m};\n }\n\n svg {\n width: 42px;\n height: 42px;\n }\n`;\n\nconst Home = () => {\n const {config} = useBootcampConfigContext();\n\n useDocumentTitle(` ${config.meta.siteTitle} | Home`);\n\n const bootcamp = 'dental-school';\n\n const testsByClassroom = getTestsByClassroom(config?.classrooms);\n const getQuestionCounts = useCallback(() => getClassroomQuestionCounts(bootcamp, testsByClassroom), [])\n const {value: questionCounts} = useAsync(getQuestionCounts);\n\n const todayActions = [\n {\n interactionKey: `Streak-DWU-${bootcamp}`,\n icon: {\n component: Coffee,\n text: 'Daily Warmup', themeColor: 'royal'\n },\n text: 'New questions brewed daily just for you',\n containerProps: {\n as: Link,\n to: `/${bootcamp}/quick-study`,\n },\n checkIfComplete: interactionObj => {\n const {streak, date: streakDate} = JSON.parse((interactionObj || {}).value || '{}');\n const {streakCompletedToday} = getStreakDetails(streak, streakDate);\n return streakCompletedToday;\n }\n },\n ];\n\n const coursesByClassroom = getTestsByClassroom(config?.classrooms, [], ['Course']);\n const getCourseBlockCounts = useCallback(() => getClassroomCourseBlockCounts(bootcamp, coursesByClassroom), []);\n const {value: courseBlockCounts} = useAsync(getCourseBlockCounts);\n\n const progresses = useMasteryArray(config.classrooms.reduce((acc, {tagId, tagIds}) => tagIds ? [...acc, ...tagIds] : [...acc, tagId], []), 'subject', data => formatClassroomMastery(data, 'subject'));\n const loading = !progresses;\n\n const classroomMasteryConfig = config.classrooms\n .filter(({locked}) => !locked)\n .map(({name, route, tagId, tagIds}) => ({\n name,\n route,\n progress: tagIds\n ? Object.keys(progresses)\n .reduce((acc, tagId) => tagIds.includes(tagId)\n ? {\n learning: (acc.learning || 0) + progresses[tagId].learning,\n reviewing: (acc.reviewing || 0) + progresses[tagId].reviewing,\n mastered: (acc.mastered || 0) + progresses[tagId].mastered,\n }\n : acc, {})\n : progresses[tagId]\n })\n );\n\n const [dentalAnatomyVideoProgress] = useTestProgressArray(coursesByClassroom[\"dental-anatomy\"], formatClassroomVideoProgress);\n const [grossAnatomyVideoProgress] = useTestProgressArray(coursesByClassroom[\"gross-anatomy\"], formatClassroomVideoProgress);\n const [neuroAnatomyVideoProgress] = useTestProgressArray(coursesByClassroom[\"neuroanatomy\"], formatClassroomVideoProgress);\n const [histoVideoProgress] = useTestProgressArray(coursesByClassroom[\"histology\"], formatClassroomVideoProgress);\n const [embryoVideoProgress] = useTestProgressArray(coursesByClassroom[\"embryology\"], formatClassroomVideoProgress);\n\n const videoProgressMap = {\n \"dental-anatomy\": dentalAnatomyVideoProgress,\n \"gross-anatomy\": grossAnatomyVideoProgress,\n \"neuroanatomy\": neuroAnatomyVideoProgress,\n \"histology\": histoVideoProgress,\n \"embryology\": embryoVideoProgress,\n };\n\n return (\n \n \n \n Dental School Courses\n \n (\n ({\n learning: acc.learning + progresses[tagId].learning,\n reviewing: acc.reviewing + progresses[tagId].reviewing,\n mastered: acc.mastered + progresses[tagId].mastered\n }), {learning: 0, reviewing: 0, mastered: 0})\n : progresses[tagId]\n }\n showExpertEducators\n educatorLayout={'column'}\n expertEducatorOrientation={'column'}\n educators={educators}\n detailsBorder={false}\n withHeaderPadding={false}\n />\n )}\n />\n \n \n );\n}\n\nHome.propTypes = {};\nHome.defaultProps = {};\n\nexport default Home;\n","import React from 'react';\n\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\nimport FAQs from '../../components/WebflowFAQs';\nimport {H2, H3, Body3} from '../../../components/Typography';\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {Column} from '../../../components/Grid';\nimport Chapter, {Wrapper as ChapterWrapper, Right} from '@bootcamp/web/src/bootcamps/components/Cards/Chapter'\nimport Download from '@bootcamp/web/src/bootcamps/components/Cards/Download'\nimport Container from '../../pages/PageContainer';\n\nimport {useContentTypeProgress} from '@bootcamp/web/src/bootcamps/api/progress/contentType'\nimport styled from 'styled-components';\n\nimport CreateTestButton from '@bootcamp/web/src/bootcamps/pages/CreateTest/components/CreateTestButton';\n\nimport PlayImg from '@bootcamp/shared/src/assets/icons/nclex/Play.png'\nimport ReadinessImg from '@bootcamp/shared/src/assets/icons/nclex/Readiness.png'\nimport BookImg from '@bootcamp/shared/src/assets/icons/mcat/book.png'\nimport TextImg from '@bootcamp/shared/src/assets/icons/mcat/text.png'\nimport FirstAidImg from '@bootcamp/shared/src/assets/icons/nclex/FirstAid.png'\nimport {People} from '@styled-icons/fluentui-system-filled/People'\nimport {CalendarLtr} from '@styled-icons/fluentui-system-filled/CalendarLtr';\nimport {ArrowUpRight} from '@styled-icons/fluentui-system-filled/ArrowUpRight';\n\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {AddCircle} from '@styled-icons/fluentui-system-filled/AddCircle';\nimport GettingStarted from '../../components/GettingStarted';\nimport CreateTest from '../../pages/CreateTest';\n\nimport {useModalContext} from '../../../contexts/Modal';\n\n\nconst Wrapper = styled.div`\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n display: flex;\n flex-direction: column;\n`;\n\nconst IntroContainer = styled.div`\n width: 100%;\n background: linear-gradient(180deg, rgba(21, 26, 30, 0.1) 0%, rgba(255, 255, 255, 0) 100%);\n box-shadow: inset 0px 2px 8px -6px rgba(21, 26, 30, 0.1);\n border-radius: 8px;\n padding: 24px;\n display: flex;\n flex-direction: column;\n align-content: center;\n justify-content: center;\n text-align: center;\n margin-bottom: 16px;\n`;\nconst IntroHeader = styled(H3)`\n color: white;\n margin-bottom: 8px;\n font-size: 20px;\n text-overflow: ellipsis;\n width: 100%;\n overflow: hidden;\n white-space: nowrap;\n`;\nconst IntroBody = styled(Body3)`\n color: rgba(255,255,255,.9);\n max-width: 750px;\n margin: 0 auto 16px;\n`;\nconst StyledCreateTestButton = styled(CreateTestButton)`\n margin: 0 auto;\n transform: scale(1);\n box-shadow: ${({theme}) => theme.elevation.shadow.medium};\n transition: all 100ms ease;\n &:hover {\n transform: scale(1.02);\n }\n`;\nconst Intro = () => {\n const {cognitoUser} = useUserDataContext();\n\n return (\n \n \n Let's get started{cognitoUser && cognitoUser?.getUsername && `, ${cognitoUser?.getUsername()}`}\n \n \n You have a free membership. The best way to get started is to create a test. When you're ready, upgrade your membership to get instant access to all content and features.\n \n \n \n )\n}\nconst StyledAddCircle = styled(AddCircle)`\n color: ${({theme}) => theme.colors.brandPalette.royal.default};\n width: 24px;\n height: 24px;\n`;\nconst Title = styled(H2)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst StyledCalendar = styled(CalendarLtr)`\n fill: ${({theme}) => theme.colors.brandPalette.teal.default};\n`;\n\nconst StyledPeople = styled(People)`\n fill: ${({theme}) => theme.colors.brandPalette.magenta.default};\n`;\n\nconst CarsPassages = () => {\n const {isUpgraded} = useUserDataContext();\n const {config} = useBootcampConfigContext();\n\n const {contentTypes: caseQuestions} = config.classrooms.find(({route}) => route === 'cars-passages');\n const caseQuestionsConfig = caseQuestions?.[0];\n const caseQuestionsData = useContentTypeProgress(caseQuestionsConfig, 'all')['qbanks-all'];\n\n return (\n }\n questionCount={caseQuestionsData?.counts?.all}\n fullWidthProgress\n showProgress={!!isUpgraded}\n progress={caseQuestionsData ? caseQuestionsData?.progress?.all : 'loading'}\n />\n )\n}\n\nconst CarsPracticeTests = () => {\n const {isUpgraded} = useUserDataContext();\n const {config} = useBootcampConfigContext();\n\n const {contentTypes: caseQuestions} = config.classrooms.find(({route}) => route === 'cars-practice-tests');\n\n const caseQuestionsConfig = caseQuestions?.[0];\n const caseQuestionsData = useContentTypeProgress(caseQuestionsConfig, 'cars')['practice-tests-cars']\n\n return (\n }\n questionCount={caseQuestionsData?.counts?.all}\n fullWidthProgress\n showProgress={!!isUpgraded}\n progress={caseQuestionsData ? caseQuestionsData?.progress?.all : 'loading'}\n />\n )\n}\nconst StyledChapterCard = styled(Chapter)`\n${({theme}) => theme.mediaQueries.mobileXl} {\n ${ChapterWrapper} {\n flex-direction: row;\n }\n ${Right} {\n margin-top: 0;\n width: auto;\n }\n`;\n\nconst VideosCard = () => {\n const {isUpgraded} = useUserDataContext();\n const {config} = useBootcampConfigContext();\n\n const {contentTypes: aamcExplanations} = config.classrooms.find(({name}) => name === 'AAMC Explanations');\n const aamcExplanationsConfig = aamcExplanations?.[0];\n\n const aamcExplanationsData = useContentTypeProgress(aamcExplanationsConfig, 'all')['videos-all'];\n\n const collectedVideosData = (Object.values(aamcExplanationsData?.videoLessonData || {}) || []).reduce((acc, {quizProgress, test}) => {\n return {\n complete: acc.complete + quizProgress.reduce((acc, {status}) => acc + (!!status ? 1 : 0), 0),\n total: acc.total + test?.blockConnections?.items?.reduce((acc, {testBlock}) => acc + (testBlock?.type === 'lesson' ? 1 : 0), 0)\n }\n }, {complete: 0, total: 0});\n\n return (\n }\n showVideoProgress\n fullWidthProgress\n videoLessonCount={collectedVideosData?.total}\n progress={aamcExplanationsData ? {mastered: collectedVideosData?.complete} : 'loading'}\n />\n )\n}\n\nconst LinkIcon = styled(ArrowUpRight)`\n width: 20px;\n height: 20px;\n`;\n\nconst Home = () => {\n const {bootcamp} = useUserDataContext();\n const {config} = useBootcampConfigContext();\n const {modalDispatch} = useModalContext();\n\n const isUpgraded = true;\n\n useDocumentTitle(` ${config.meta.siteTitle} | Home`);\n\n // const {contentTypes: freeQuestions} = config.classrooms.find(({name}) => name === 'Free Questions');\n // const freeQuestionsConfig = freeQuestions?.[0];\n // const {counts} = useContentTypeProgress(freeQuestionsConfig, 'all')?.['qbanks-all'] || {};\n\n const todayActions = [\n {\n interactionKey: `Streak-${bootcamp}-Create-Test`,\n icon: {\n component: () => ,\n text: 'Create Test'\n },\n text: isUpgraded ? 'Study up to 85 questions at a time' : `Upgrade for unlimited access`,\n containerProps: {\n onClick: () => modalDispatch({\n type: 'open',\n component: CreateTest,\n componentProps: !!isUpgraded ? {} : {defaults: {subject: 'Free Questions'}},\n enableClickClose: true,\n }),\n },\n },\n {\n icon: {\n component: StyledCalendar,\n text: 'Question of the Day', themeColor: 'royal'\n },\n text: `Try out today's question`,\n containerProps: {\n as: 'a',\n href: `https://bootcamp.com/${bootcamp}/question-of-the-day`,\n target: '_blank'\n }\n },\n {\n icon: {\n component: StyledPeople,\n text: 'Study Group', themeColor: 'royal'\n },\n text: `Join 6k fellow students`,\n containerProps: {\n as: 'a',\n href: 'https://www.facebook.com/groups/2169829559872032',\n target: '_blank'\n }\n },\n ];\n\n return (\n \n \n {/* \n {moment().format('dddd, MMM D')}\n \n Start Studying\n \n \n {!isUpgraded && } */}\n MCAT Resources\n \n window.open('https://bootcamp.com/blog/the-ultimate-tactical-guide-to-cars', '_blank')}\n name={'The Ultimate Tactical Guide to CARS'}\n description={'Learn how to master the CARS section of the MCAT'}\n actions={}\n />\n \n \n \n }\n comingSoonText={'CARS Strategy Course'}\n description={'Coming soon!'}\n onClick={() => {}}\n actions={[]}\n />\n \n \n \n );\n}\n\nHome.propTypes = {};\nHome.defaultProps = {};\n\nexport default Home;\n","import React, {useCallback} from 'react';\n\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\nimport {Link} from 'react-router-dom';\n\nimport MasteryReview from '../../components/MasteryReview';\nimport GettingStarted from '../../components/GettingStarted';\nimport FAQs from '../../components/WebflowFAQs';\n\nimport {H2} from '../../../components/Typography';\nimport FullClassroomCard from '../../components/Cards/ClassroomRow';\nimport CreateTest from '../../pages/CreateTest';\n\nimport {useMasteryArray} from '../../../hooks';\n\nimport anatomyIcon from '@bootcamp/shared/src/assets/icons/msb/anatomy.png';\nimport heartIcon from '@bootcamp/shared/src/assets/icons/msb/heart.png';\nimport {AddCircle} from '@styled-icons/fluentui-system-filled/AddCircle';\n\nimport {getTestsByClassroom} from '@bootcamp/shared/src/util';\nimport {getClassroomQuestionCounts, getClassroomCourseBlockCounts} from '@bootcamp/shared/src/requests';\nimport {useAsync} from '@bootcamp/web/src/hooks';\nimport {formatClassroomMastery} from '@bootcamp/shared/src/util/formatting';\n\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {useModalContext} from '../../../contexts/Modal';\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nimport Container from '../../pages/PageContainer';\n\nimport styled from 'styled-components';\n\nconst Title = styled(H2)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst StyledClassroomCard = styled(FullClassroomCard)`\n flex: 1;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n`;\n\nconst CardWrapper = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n margin-bottom: ${({theme}) => theme.layouts.spacing.xl};\n`;\n\nconst CardIcon = styled.img`\n height: 24px;\n width: 24px;\n`;\nconst StyledAddCircle = styled(AddCircle)`\n color: ${({theme}) => theme.colors.brandPalette.royal.default};\n width: 24px;\n height: 24px;\n`;\n\nconst Home = props => {\n const {config} = useBootcampConfigContext();\n const {modalDispatch} = useModalContext();\n const {isUpgraded} = useUserDataContext()\n\n useDocumentTitle(` ${config.meta.siteTitle} | Home`);\n\n const bootcamp = 'med-school';\n\n const coursesByClassroom = getTestsByClassroom(config?.classrooms, [], ['Course']);\n const testsByClassroom = getTestsByClassroom(config?.classrooms);\n\n const getQuestionCounts = useCallback(() => getClassroomQuestionCounts(bootcamp, testsByClassroom), [])\n const getCourseBlockCounts = useCallback(() => getClassroomCourseBlockCounts(bootcamp, coursesByClassroom), []);\n\n const {value: courseBlockCounts} = useAsync(getCourseBlockCounts);\n const {value: questionCounts} = useAsync(getQuestionCounts);\n\n const todayActions = [\n {\n interactionKey: `Streak-${bootcamp}-Create-Test`,\n icon: {\n component: () => ,\n text: 'Create Test'\n },\n text: 'Study up to 40 questions',\n containerProps: {\n // as: Link,\n // to: `/${bootcamp}/quick-study/bites`,\n onClick: () => modalDispatch({\n type: 'open',\n component: CreateTest,\n enableClickClose: true,\n }),\n },\n // checkIfComplete: interactionObj => {\n // const {streak, date: streakDate} = JSON.parse((interactionObj || {}).value || '{}');\n // const {streakCompletedToday} = getStreakDetails(streak, streakDate);\n // return streakCompletedToday;\n // }\n },\n {\n interactionKey: `Streak-${bootcamp}-Review-Board`,\n icon: {\n component: () => ,\n text: 'Step 1 Qbank'\n },\n text: 'Study 10 random questions',\n containerProps: {\n as: Link,\n to: `/${bootcamp}/quick-study/board`,\n },\n // checkIfComplete: interactionObj => {\n // const {streak, date: streakDate} = JSON.parse((interactionObj || {}).value || '{}');\n // const {streakCompletedToday} = getStreakDetails(streak, streakDate);\n // return streakCompletedToday;\n // }\n },\n {\n interactionKey: `Streak-${bootcamp}-Review-Anatomy`,\n icon: {\n component: () => ,\n text: 'Gross Anatomy Qbank'\n },\n text: 'Study 10 random questions',\n containerProps: {\n as: Link,\n to: `/${bootcamp}/quick-study/anatomy`,\n },\n // checkIfComplete: interactionObj => {\n // const {streak, date: streakDate} = JSON.parse((interactionObj || {}).value || '{}');\n // const {streakCompletedToday} = getStreakDetails(streak, streakDate);\n // return streakCompletedToday;\n // }\n },\n ];\n\n // const {DEFAULT_USER_ID} = useUserDataContext();\n // const [testProgressCount, setTestProgressCount] = useState(null);\n\n // wire this up to progress load\n const progresses = useMasteryArray(config.classrooms.reduce((acc, {tagId, tagIds}) => tagIds ? [...acc, ...tagIds] : [...acc, tagId], []), 'subject', data => formatClassroomMastery(data, 'subject'));\n const loading = Object.keys(progresses).length === 0;\n\n const classroomMasteryConfig = config.classrooms\n .filter(({locked}) => !locked)\n .map(({name, route, tagId, tagIds}) => ({\n name,\n route,\n progress: tagIds\n ? Object.keys(progresses)\n .reduce((acc, tagId) => tagIds.includes(tagId)\n ? {\n learning: (acc.learning || 0) + progresses[tagId].learning,\n reviewing: (acc.reviewing || 0) + progresses[tagId].reviewing,\n mastered: (acc.mastered || 0) + progresses[tagId].mastered,\n bookmarked: (acc.bookmarked || 0) + progresses[tagId].bookmarked,\n }\n : acc, {})\n : progresses[tagId]\n })\n );\n\n const renderClassroomCard = ({icon, themePalette, name, route, tagId, tagIds, locked, comingSoon, showVideoProgress, videoLessonCount, questionCount, educators}) => (\n ({\n learning: acc.learning + progresses[tagId].learning,\n reviewing: acc.reviewing + progresses[tagId].reviewing,\n mastered: acc.mastered + progresses[tagId].mastered\n }), {learning: 0, reviewing: 0, mastered: 0})\n : progresses[tagId]\n }\n showExpertEducators\n educatorLayout={'column'}\n educatorNameLayout={'column'}\n educators={educators}\n detailsBorder={false}\n withHeaderPadding={false}\n />\n )\n return (\n \n \n \n Step 1 - Preclinical\n \n \n {config.classrooms.filter(({section}) => section === 'step1').map(renderClassroomCard)}\n \n \n Anatomy\n \n \n {config.classrooms.filter(({section}) => section !== 'step1').map(renderClassroomCard)}\n \n \n \n );\n}\n\nHome.propTypes = {};\nHome.defaultProps = {};\n\nexport default Home;\n","import {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport styled from 'styled-components';\nimport {useHistory} from 'react-router-dom';\n\nimport {RoundButton} from '@bootcamp/web/src/components/UI';\nimport {ReactComponent as Badge} from '@bootcamp/shared/src/assets/svg/badge.svg';\nimport {H1, Body2, H4, Body3} from '@bootcamp/web/src/components/Typography';\nimport {ExpertEducators} from '../../components/ExpertEducators';\nimport Breadcrumbs from '@bootcamp/web/src/components/NavBar/components/Breadcrumbs';\n\nimport {useBootcampConfigContext} from '@bootcamp/web/src/contexts/BootcampConfig';\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\nimport CreateTest from '@bootcamp/web/src/bootcamps/pages/CreateTest';\nimport {useContentTypeProgress} from '../api/progress/contentType';\n\nimport Chapter from '@bootcamp/web/src/bootcamps/components/Cards/Chapter';\nimport {StyledBeginPracticeButton} from '@bootcamp/web/src/bootcamps/components/Cards/components/Buttons';\n\n\nconst Title = styled(H1)`\n color: white;\n margin-bottom: 8px;\n`;\nconst Body = styled(Body2)`\n color: ${({theme}) => theme.overlays.opacity.light._400};\n margin-bottom: ${({theme}) => theme.layouts.spacing.ms};\n max-width: 750px;\n`;\n\nconst UpgradeCardContainer = styled.div`\n background: rgba(237, 150, 37, 0.1);\n\n border: 1px solid ${({theme}) => theme.colors.brandPalette.orange.default};\n box-shadow: 0px 8px 20px rgba(0, 0, 0, 0.12);\n border-radius: 8px;\n padding: 16px 24px;\n width: 100%;\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 16px;\n`;\n\nconst UpgradeCardContent = styled.div`\n margin-right: 16px;\n`;\nconst UpgradeCardIcon = styled.div`\n margin-right: 16px;\n position: relative;\n user-select: none;\n`;\nconst UpgradeCardHeading = styled(H4)`\n color: white;\n font-size: 20px;\n line-height: 20px;\n margin-bottom: 4px;\n`;\nconst UpgradeCardBody = styled(Body3)`\n color: rgba(255, 255, 255, 0.7);\n`\nconst UpgradeCardButton = styled(RoundButton)``\n\nconst DefaultProfilePictureContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 42px;\n width: 42px;\n border-radius: 100%;\n padding: 3px;\n position: relative;\n min-width: 42px;\n min-height: 42px;\n`;\n\nconst ProfilePictureDot = styled.div`\n position: absolute;\n bottom: 0;\n right: 0;\n height: 22px;\n width: 18px;\n opacity: .9;\n`;\n\nconst ProfilePictureImage = styled.img`\n width: 100%;\n height: 100%;\n border-radius: 100%;\n object-fit: cover;\n`;\n\nconst UpgradeIcon = styled(Badge)`\n height: 16px;\n width: 16px;\n path {\n fill: white;\n }\n`\n\nconst LargeUpgradeIcon = styled(Badge)`\n height: 24px;\n width: 24px;\n path {\n fill: white;\n }\n`\n\nexport const UpgradeCard = () => {\n const {bootcamp} = useUserDataContext();\n return (\n \n \n \n \n \n \n Upgrade Your Membership\n \n \n As a free member, you only have access to 31 questions and our Next Gen strategy course. Upgrade your membership to get more questions and instant access to all content and features.\n \n \n } iconPosition=\"left\">\n Upgrade\n \n \n )\n}\n\nconst StyledBreadcrumbs = styled(Breadcrumbs)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n`;\n\nconst StyledExpertEducators = styled(ExpertEducators)`\n width: auto;\n p {\n align-self: flex-start;\n ${({theme}) => theme.mediaQueries.tablet} {\n align-self: flex-end;\n }\n ${({theme}) => theme.mediaQueries.mobileL} {\n align-self: flex-start;\n }\n }\n div {\n ${({theme}) => theme.mediaQueries.mobileL} {\n justify-content: flex-start;\n }\n }\n`;\n\nexport const Heading = ({name, description, educators=[], showEducators=true}) => {\n const history = useHistory();\n\n return (\n <>\n \n {name}\n {description}\n {showEducators &&\n \n }\n \n );\n}\n\nexport const FreeQuestionsCard = () => {\n const {config} = useBootcampConfigContext();\n const {modalDispatch} = useModalContext();\n const openCreateTest = (subject, system) => modalDispatch({\n type: 'open',\n component: CreateTest,\n componentProps: {defaults: {subject, system}},\n enableClickClose: true,\n })\n\n const {contentTypes: freeQuestions} = config.classrooms.find(({name}) => name === 'Free Questions');\n const freeQuestionsConfig = freeQuestions?.[0];\n const {progress, counts} = useContentTypeProgress(freeQuestionsConfig, 'all')?.['qbanks-all'] || {};\n return (\n openCreateTest('Free Questions', 'Free Questions')}\n name={'Free Questions'}\n fullWidthProgress\n progress={progress ? progress.all : 'loading'}\n questionCount={counts ? counts.all : 'loading'}\n actions={[]}\n />\n )\n}\n","import React, {useState, useEffect, createContext, useContext} from 'react';\nimport {useHistory} from 'react-router-dom';\nimport {firstBy} from 'thenby';\nimport Storage from '@aws-amplify/storage';\n\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nimport {fetchAllQuestionStats, fetchAllQuestionStatsForFLT} from './adminStats';\n\nimport {\n formatScoringBreakdown,\n formatReadinessExamScoringBreakdown,\n getSubjectTestIdsForFLT,\n deSlugify,\n} from '@bootcamp/shared/src/util';\n\nimport {getTestProgressByUserIdHashTestId, getTestProgress, getTest} from '@bootcamp/shared/src/requests';\n\nconst useConfigContext = () => {\n const [testConfig, setTestConfig] = useState({});\n\n const {DEFAULT_USER_ID, bootcamp} = useUserDataContext();\n const history = useHistory();\n\n const searchParams = new URLSearchParams(history?.location?.search);\n\n const testStorageKey = searchParams.get('key');\n const attempt = searchParams.get('attempt');\n const testRoute = searchParams.get('testRoute');\n\n let testProgressId = searchParams.get('testProgressId');\n const testId = searchParams.get('id');\n\n const isMCATExam = bootcamp === 'mcat';\n const isPracticeTest = ['dat', 'oat'].includes(bootcamp);\n const isReadinessExam = !!testRoute?.match('next-gen-readiness-exams') || [\n 'b21f76dd-8a20-4a71-9bf6-839e7b4d7faa',\n '6ed36c4c-25ff-417e-b004-cc63471fdf8a',\n '8e61fa1d-88ae-4650-a7e5-b5540c1cd5d3',\n '8e6eb0ba-6162-41fb-bd69-3de3c58da932',\n 'f7b7ac19-1130-43a0-818c-5c42269ad4dc',\n '3a147a25-d1e4-4462-86bb-ae4824325446',\n 'b7246a32-9b27-4a44-921f-9fac4c5f36c4',\n ].includes(testId);\n\n async function getTestConfig() {\n try {\n const result = await Storage.get(testStorageKey, {\n download: true,\n cacheControl: 'no-cache',\n contentType: 'application/json',\n });\n\n const json = await new Response(result.Body).json();\n\n const progressIdResult = await getTestProgressByUserIdHashTestId(`${DEFAULT_USER_ID}#${json.testId}`);\n const progressId = progressIdResult?.data?.TestProgressByTestId?.items?.[0]?.id;\n\n const progress = await getTestProgress(progressId);\n const scoring = await formatScoringBreakdown(progress?.data?.getTestProgress, json, DEFAULT_USER_ID, bootcamp);\n\n setTestConfig({...json, attempt, scoring, bootcamp});\n\n } catch (error) {\n console.log('error fetching test config', error);\n }\n }\n\n async function getReadinessExamConfig() {\n try {\n if (!testProgressId) {\n const progressIdResult = await getTestProgressByUserIdHashTestId(`${DEFAULT_USER_ID}#${testId}`);\n testProgressId = progressIdResult?.data?.TestProgressByTestId?.items?.[0]?.id;\n }\n\n const progress = await getTestProgress(testProgressId);\n const test = await getTest(testId, \"getTestStructureOnlyWithBlockConnections\");\n\n const selectedQuestions = progress?.data?.getTestProgress?.blockProgresses?.items?.sort(firstBy('index'))?.reduce((acc, curr) => {\n try {\n const testBlockQuestions = curr?.questionProgresses?.items?.sort(firstBy('index')).map(({question}) => question?.id);\n return [...acc, ...testBlockQuestions];\n } catch (error) {\n return acc;\n }\n }, []);\n\n let progressWithSequentialBlockData = progress?.data?.getTestProgress\n\n progressWithSequentialBlockData.blockProgresses = {\n items: progress?.data?.getTestProgress?.blockProgresses?.items?.map(blockProgress => {\n\n try {\n const block = test?.data?.getTest?.blockConnections?.items?.find(({testBlock}) => testBlock.id === blockProgress.blockId);\n const isSequentialSet = JSON.parse(block?.testBlock?.components?.find(component => component.renderType === 'config')?.contents || 'null')?.isSequentialSet;\n\n if (isSequentialSet) {\n return {\n ...blockProgress,\n questionProgresses: {\n items: blockProgress?.questionProgresses?.items?.map((questionProgress, index) => ({\n ...questionProgress,\n isSequentialSet: true,\n isSequentialStart: questionProgress.index === 0,\n isSequentialEnd: (blockProgress.questionProgresses.length - 1) === questionProgress.index\n }))\n }\n }\n }\n\n } catch (error) {\n return blockProgress\n }\n\n return blockProgress;\n })\n };\n\n const config = {\n selectedQuestions,\n testLength: selectedQuestions.length,\n tutorMode: false,\n testId,\n testRoute,\n testProgressId,\n config: {\n timed: true,\n customTitle: deSlugify(testRoute?.split('/').slice(-1)[0]),\n createdAt: progress?.data?.getTestProgress?.createdAt,\n testLength: selectedQuestions.length,\n },\n };\n\n let statOverride = null;\n\n if (['dat', 'oat'].includes(bootcamp)) {\n\n let adminStats;\n const isFullLength = testRoute?.includes('full-length');\n\n\n // there still stands to be stat mismatches between subject and full length tests using the 'admin stat' s3 caching flow\n // basically as subject / flts deviate in date taken, the greater the chance that progresses associated with those attempts\n // will be out of sync with the latest question data - this is mostly a result of questions being moved around in the containers\n // for example if a subject test was taken last year and a full length test was taken today\n // there will likely be a mismatch in avg score / avg time because the subject test will probably have had questions removed so the\n // question ids its pulling stats for will be different than the question ids that the more recent full length test is referencing\n // this should be resolved once we have dat/oat on the updated #tracking question progress system\n if (isFullLength) {\n const subjectBlocks = getSubjectTestIdsForFLT(test, testRoute, bootcamp, progress);\n\n const questionsByTestId = subjectBlocks.reduce((acc, curr) => {\n const {testId, blockId} = curr;\n const testBlockQuestions = progress?.data?.getTestProgress?.blockProgresses?.items?.find(blockProgress => blockProgress.blockId === blockId)?.questionProgresses?.items?.sort(firstBy('index'));\n return {\n ...acc,\n [testId]: [...(acc[testId] || []), ...testBlockQuestions],\n }\n }, {});\n\n const testStats = await fetchAllQuestionStatsForFLT(questionsByTestId);\n const formattedTestStats = testStats.reduce((acc, curr) => [...acc, ...curr], []);\n\n adminStats = formattedTestStats;\n } else {\n const questions = progress?.data?.getTestProgress?.blockProgresses?.items?.sort(firstBy('index'))?.reduce((acc, curr) => {\n const testBlockQuestions = curr?.questionProgresses?.items?.sort(firstBy('index'));\n return [...acc, ...testBlockQuestions];\n }, []);\n\n const practiceTestAdminStats = await fetchAllQuestionStats(testId, questions);\n\n adminStats = practiceTestAdminStats;\n }\n\n const statsByQuestionId = adminStats.reduce((acc, {questionId, ...stats}) => ({\n ...acc,\n [questionId]: stats,\n }), {});\n\n statOverride = statsByQuestionId;\n }\n\n\n const scoring = await formatReadinessExamScoringBreakdown(progressWithSequentialBlockData, config, DEFAULT_USER_ID, bootcamp, statOverride);\n\n // OVERRIDE AVG SCORE FOR MSB ASSESSMENT\n // TODO: REMOVE THIS ONCE THE ASSESSMENT IS READY\n if (bootcamp === 'med-school') {\n scoring.overview.avgScore = 100.8;\n } else if (bootcamp === 'mcat') {\n scoring.overview.avgScore = (scoring.overview.maxScore * .64);\n scoring.overview.avgTime = 5332;\n }\n\n setTestConfig({...config, attempt, scoring, bootcamp, isReadinessExam, isMCATExam, isPracticeTest});\n\n } catch (error) {\n console.log('error fetching test config', error);\n }\n }\n\n async function getDATTestConfig() {\n try {\n const config = await getReadinessExamConfig();\n return config\n } catch (error) {\n console.log('error fetching dat test config', error);\n }\n }\n\n useEffect(() => {\n if (!DEFAULT_USER_ID) return;\n\n (isReadinessExam || isMCATExam)\n ? getReadinessExamConfig()\n : isPracticeTest\n ? getDATTestConfig()\n : getTestConfig();\n }, [DEFAULT_USER_ID]);\n\n return testConfig;\n};\n\nconst ConfigState = createContext();\n\nconst ConfigProvider = ({children}) => {\n const value = useConfigContext();\n\n return (\n \n {children}\n \n );\n};\n\nconst useConfigState = () => useContext(ConfigState);\n\nexport {ConfigProvider, useConfigState};","import React, {useEffect, useRef, useState} from 'react';\nimport styled from 'styled-components';\nimport {Doughnut} from 'react-chartjs-2';\n\nimport {Label2,} from '@bootcamp/web/src/components/Typography/next';\nimport {LineLabelContainer, LineLabelWrapper} from '../../../components/Performance/shared';\n\nimport theme from '@bootcamp/shared/src/styles/theme';\n\n\nconst Container = styled.div`\n`;\nconst Wrapper = styled.div`\n position: relative;\n height: 242px;\n canvas {\n width: 266px !important;\n }\n`;\nconst Label = styled.div`\n position: absolute;\n top: 55%;\n left: 50%;\n transform: translate(-50%, -50%);\n`;\nconst Top = styled.div`\n color: ${({theme}) => theme.colors.brandPalette.blue.default};\n font-family: proxima-nova;\n font-size: 52.878px;\n font-style: normal;\n font-weight: 700;\n line-height: 100%; /* 52.878px */\n letter-spacing: -1.259px;\n text-align: center;\n`;\nconst Bottom = styled(Label2)`\n text-align: center;\n color: ${({theme}) => theme.colors.brandPalette.blue.default};\n font-weight: 700;\n white-space: nowrap;\n`;\n\n\nconst overlap = 0;\nconst circumference = 290;\nconst rotation = circumference / 2;\n\nfunction easeOutQuad(t) {\n return t * (2 - t);\n}\n\nfunction easeInQuad(t) {\n return t * t;\n}\n\nfunction interpolateValue(x, value = 10) {\n const minX = 125;\n const midX = 270;\n const maxX = 415;\n\n let t;\n\n if (x < minX) {\n return value; // Below the minimum range\n } else if (x <= midX) {\n // Ease-out from value to 0\n t = (x - minX) / (midX - minX);\n t = easeOutQuad(t);\n return value + t * (0 - value);\n } else if (x <= maxX) {\n // Ease-in from 0 to value\n t = (x - midX) / (maxX - midX);\n t = easeInQuad(t);\n return 0 + t * (value - 0);\n } else {\n return value; // Above the maximum range\n }\n}\nconst averageLinePlugin = (avgScore, maxValue) => ({\n id: 'averageLine',\n beforeDraw: (chart, args, options) => {\n const { ctx } = chart;\n\n const percentage = (avgScore / maxValue);\n const value = (circumference * percentage);\n const circumfrenceOffset = (360 - circumference) / 2;\n const angle = rotation + value - 20;\n const chartHeight = chart.height + circumfrenceOffset;\n\n // interpolate value to get more accurate avg line draw\n const offset = interpolateValue(angle, 12);\n\n ctx.beginPath();\n ctx.moveTo(chart.width / 2, ((chartHeight) / 2));\n\n const radians = angle * (Math.PI / (180)); // 45 degrees in radians\n const lineLength = 118 - offset // (Math.min(chart.width, chart.height) / 2) - offset;\n\n const endX = chart.width / 2 + Math.cos(radians) * (lineLength);\n const endY = (chartHeight / 2) + Math.sin(radians) * (lineLength);\n\n\n const secondEndX = (endX + (Math.cos(radians)) * 19);\n const secondEndY = (endY + (Math.sin(radians)) * 19);\n\n ctx.moveTo(endX, endY);\n ctx.lineTo(secondEndX, secondEndY)\n\n ctx.strokeStyle = theme.colors.borderPalette.secondary; // Set the color of the line\n ctx.lineWidth = 2; // Set the width of the line\n ctx.stroke();\n\n ctx.lineCap = 'round';\n ctx.lineJoin = 'round';\n\n ctx.globalCompositeOperation = 'destination-over';\n }\n});\n\nconst LineLabel = ({\n avgScore,\n avgScoreLabel,\n avgScoreText='Avg. Score',\n maxValue,\n}) => {\n const ref = useRef(null);\n\n useEffect(() => {\n if (!ref?.current) return;\n\n const refDimensions = ref.current.getBoundingClientRect();\n const chart = {width: 266, height: 242};\n const percentage = (avgScore / maxValue);\n const value = (circumference * percentage);\n const circumfrenceOffset = (360 - circumference) / 2;\n const angle = rotation + value - 20;\n const chartHeight = chart.height + circumfrenceOffset;\n\n const labelOffsetX = percentage <= .45\n ? -(refDimensions.width) - 4\n : percentage >= .55\n ? 4\n : -(refDimensions.width / 2);\n\n const labelOffsetY = percentage <= .45\n ? (percentage / .5) + refDimensions.height + 4\n : percentage >= .55\n ? (percentage / .5) + refDimensions.height + 4\n : refDimensions.height + 8;\n\n const radians = angle * (Math.PI / (180)); // 45 degrees in radians\n const lineLength = (Math.min(chart.width, chart.height) / 2);\n\n const endX = chart.width / 2 + Math.cos(radians) * (lineLength);\n const endY = (chartHeight / 2) + Math.sin(radians) * (lineLength);\n\n const secondEndX = (endX + (Math.cos(radians)) * 19);\n const secondEndY = (endY + (Math.sin(radians)) * 19);\n\n ref.current.style.top = (secondEndY - labelOffsetY) + 'px';\n ref.current.style.left = (secondEndX + labelOffsetX) + 'px';\n\n }, [ref?.current]);\n\n return (\n \n {avgScoreText} {avgScoreLabel}\n \n );\n}\n\nfunction getGradient(ctx, value) {\n const orientation = value > 50\n ? [0, 0, ctx.chart.width , 0]\n : [0, ctx.chart.height, 0 , 0]\n const gradient = ctx.chart.ctx.createLinearGradient(...orientation);\n const {gradientStart, gradientMid, dark} = theme.colors.brandPalette.blue;\n\n gradient.addColorStop(0, dark);\n gradient.addColorStop(.5, gradientMid);\n gradient.addColorStop(1, gradientStart);\n\n return [gradient, theme.colors.neutralsPalette.light];\n}\nconst GaugeChart = ({\n value,\n avgScore,\n avgScoreLabel,\n avgScoreText,\n showLineLabel,\n labelTop,\n labelBottom,\n maxValue=100\n}) => {\n // const [avgScore, setAvgScore] = useState(avgScore);\n const scoreSegment = value === 0 ? 0 : Math.max(value, 5);\n const areaSegment = value === maxValue ? 0 : Math.max(4, maxValue - value);\n\n const plugin = averageLinePlugin(avgScore, maxValue);\n\n const data = {\n datasets: [\n {\n data: [scoreSegment, areaSegment],\n backgroundColor: ctx => getGradient(ctx, value),\n borderColor: ctx => getGradient(ctx, value),\n cutout: '85%',\n rotation: -(rotation),\n spacing: -(overlap),\n circumference,\n hoverOffset: 0, // Remove hover effect\n borderRadius: [\n {outerStart: 10, innerStart: 10, innerEnd: value === maxValue ? 10 : 0, outerEnd: value === maxValue ? 10 : 0},\n {outerStart: value === 0 ? 10 : 0, outerEnd: 10, innerEnd: 10, innerStart: value === 0 ? 10 : 0}\n ]\n },\n ],\n };\n\n const options = {\n responsive: true,\n labels: [],\n maintainAspectRatio: false,\n events: [],\n layout: {\n padding: 0\n },\n plugins: {\n tooltip: {\n enabled: false,\n },\n legend: {\n display: false, // hide legends\n },\n },\n };\n\n return (\n \n \n \n \n {showLineLabel &&\n \n \n \n }\n \n {/* \n */}\n \n );\n};\n\nexport default GaugeChart;","import {getResults, getOATResults, getAcademicAverage, getOATAcademicAverage} from '@bootcamp/shared/src/util/scoring';\n\n\nexport function getAnalysis(title, scoring) {\n const subject = title.match(/([^#]+)( Test)/)[1];\n const percentage = (scoring.overview.score / scoring.overview.maxScore) * 100;\n const avgPercentage = (scoring.overview.avgScore / scoring.overview.maxScore) * 100;\n const {score, analysis} = getResults(percentage, title, subject);\n const {score: avgScore} = getResults(avgPercentage, title, subject);\n\n return {\n feedback: (\n \n {analysis}

\n Based on your results, I'd estimate a DAT {subject} score of {score}. Don't focus too much on the estimate - instead, continue to review your areas of knowledge.\n
\n
\n Starting March 1, 2025, the DAT switched to a 3-digit scoring scale (200-600).
Learn more here.\n \n ),\n score,\n avgScore,\n subject\n }\n}\n\nexport function getOATAnalysis(title, scoring) {\n const subject = title.match(/([^#]+)( Test)/)[1];\n const percentage = (scoring.overview.score / scoring.overview.maxScore) * 100;\n const avgPercentage = (scoring.overview.avgScore / scoring.overview.maxScore) * 100;\n const score = getOATResults(percentage, title, subject);\n const avgScore = getOATResults(avgPercentage, title, subject);\n\n return {\n feedback: (\n \n Based on your results, I'd estimate a OAT {subject} score of {score}. Don't focus too much on the estimate - instead, continue to review your areas of knowledge.\n \n ),\n score,\n avgScore,\n subject\n }\n}\n// this translates our new scoring object into something the old scoring\n// helpers can understand\nfunction formatFullLengthStatistics(scoring, useAvg=false, title, bootcamp='dat') {\n try {\n const snsSubjects = ['Biology', 'General Chemistry', 'Organic Chemistry'];\n const subjects = scoring?.subjectBreakdown;\n const testNumber = title?.match(/#(.*)/)?.[1];\n const nonSNSSubjects = Object\n .keys(subjects)\n .filter(subject => !snsSubjects.includes(subject));\n\n const formatSubject = (name, subject) => {\n const subjectTestName = `${name} Test #${testNumber}`;\n const percentage = (subject.score / subject.maxScore) * 100;\n const score = bootcamp === 'dat'\n ? getResults(percentage, subjectTestName, name).score\n : getOATResults(percentage, subjectTestName, name);\n\n return {\n name,\n subjectTestName: subjectTestName,\n total: subject.maxScore,\n correct: useAvg ? subject.avgScore : subject.score,\n score,\n }\n }\n\n const groups = [\n {\n name: 'Survey of Natural Sciences',\n subjectStatistics: snsSubjects.map(subject => formatSubject(subject, subjects[subject]))\n },\n ...nonSNSSubjects.map(subject => ({\n name: subject,\n subjectStatistics: [\n formatSubject(subject, subjects[subject]),\n ]\n }))\n ];\n\n return groups;\n } catch (error) {\n console.log('error formatting', error);\n return [];\n }\n}\nexport function getFullLengthAnalysis(title, scoring) {\n const formattedStatistics = formatFullLengthStatistics(scoring, false, title, 'dat');\n const formattedStatisticsAvg = formatFullLengthStatistics(scoring, true, '', 'dat');\n const subjectStatistics = formattedStatistics.reduce((acc, statistic) => [...acc, ...statistic.subjectStatistics], []);\n\n const academicAverage = getAcademicAverage(title, formattedStatistics);\n const avgAcademicAverage = getAcademicAverage(title, formattedStatisticsAvg);\n\n return {\n feedback: (\n Based on your results, I'd estimate an AA score of {academicAverage}. Don't focus too much on the estimate - instead, continue to review your areas of knowledge.\n
\n
\n Starting March 1, 2025, the DAT switched to a 3-digit scoring scale (200-600). Learn more here.\n
\n ),\n score: academicAverage,\n avgScore: avgAcademicAverage,\n subjectStatistics\n }\n}\n\nexport function getOATFullLengthAnalysis(title, scoring) {\n const formattedStatistics = formatFullLengthStatistics(scoring, false, title, 'oat');\n const formattedStatisticsAvg = formatFullLengthStatistics(scoring, true, title, 'oat');\n const subjectStatistics = formattedStatistics.reduce((acc, statistic) => [...acc, ...statistic.subjectStatistics], []);\n\n\n const academicAverage = getOATAcademicAverage(title, formattedStatistics);\n const avgAcademicAverage = getOATAcademicAverage(title, formattedStatisticsAvg);\n\n return {\n feedback: (\n Based on your results, I'd estimate an AA score of {academicAverage}. Don't focus too much on the estimate - instead, continue to review your areas of knowledge.\n ),\n score: academicAverage,\n avgScore: avgAcademicAverage,\n subjectStatistics\n }\n}\n\n// export function getSnsChartData(bio, gc, oc) {\n// const bioTime = getInObj(['result', 0, 'questions'], bio, []).reduce((acc, {time}) => acc + parseFloat(time), 0);\n// const gcTime = getInObj(['result', 0, 'questions'], gc, []).reduce((acc, {time}) => acc + parseFloat(time), 0);\n// const ocTime = getInObj(['result', 0, 'questions'], oc, []).reduce((acc, {time}) => acc + parseFloat(time), 0);\n\n// return [\n// ['Subject', 'Time'],\n// [`Biology ${moment.utc(bioTime * 1000).format('HH:mm:ss')}`, bioTime],\n// [`General Chemistry ${moment.utc(gcTime * 1000).format('HH:mm:ss')}`, gcTime],\n// [`Organic Chemistry ${moment.utc(ocTime * 1000).format('HH:mm:ss')}`, ocTime]\n// ]\n// }\n\n// export function getTopicChartData(statistics) {\n// return [\n// ['Time Spent', 'Topic'],\n// ...statistics.map(({name, timeSpent}) => [`${name} ${moment.utc(timeSpent * 1000).format('HH:mm:ss')}`, timeSpent])\n// ];\n// }","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport { Pie } from 'react-chartjs-2';\n\nimport Chart from 'chart.js/auto';\n\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n margin-bottom: 24px;\n `;\nconst Wrapper = styled.div`\n align-self: center;\n height: 320px;\n width: 60%;\n`;\nconst Title = styled.h3`\n font-size: 16px;\n line-height: 32px;\n text-transform: uppercase;\n border-bottom: 2px solid ${({ theme }) => theme.colors.neutralsPalette.lightGrey};\n color: ${({ theme }) => theme.colors.neutralsPalette.grey};\n`;\n\nconst PieChart = ({ data, title }) => {\n\n const dataset = {\n labels: data.slice(1).map(([label, value]) => label),\n datasets: [{\n label: 'Time Spent',\n data: data.slice(1).map(([label, value]) => value),\n }]\n };\n\n const options = {\n maintainAspectRatio: false,\n plugins: {\n legend: {\n position: 'left'\n }\n },\n };\n\n return (\n \n {title && }\n <Wrapper>\n <Pie data={dataset} options={options} />\n </Wrapper>\n </Container>\n );\n};\n\nPieChart.propTypes = {\n data: PropTypes.object,\n title: PropTypes.string,\n};\n\nPieChart.defaultProps = {\n data: {\n labels: ['Bob', 'Jenny'],\n datasets: [\n {\n label: 'Age',\n data: [22, 34],\n backgroundColor: ['#FF6384', '#36A2EB'],\n },\n ],\n },\n};\n\nexport default PieChart;\n","import React, {useState, useEffect, createContext, useContext} from 'react';\nimport {utc} from 'moment';\n\nexport const TimerContext = createContext();\n\nexport const useMinuteTimer = (minutes, autoStart, disabled) => {\n const [limit, setLimit] = useState(minutes);\n const [timeElapsed, setTimeElapsed] = useState(0);\n const [startTime, setStartTime] = useState(0);\n const [isActive, setIsActive] = useState(autoStart);\n const [timeUp, setTimeUp] = useState(false);\n\n const minutesAsSeconds = limit * 60;\n const difference = minutesAsSeconds - timeElapsed;\n const milliseconds = difference * 1000;\n const format = limit >= 60 ? 'HH:mm:ss' : 'm:ss';\n const formattedTimeLeft = utc(milliseconds).format(format);\n const longTimeLeft = utc(milliseconds).format('HH:mm:ss');\n\n useEffect(() => {\n if (limit === null && minutes) {\n setLimit(minutes);\n }\n }, [minutes]);\n\n function reset() {\n setTimeElapsed(0);\n setIsActive(false);\n }\n\n function updateTimeLimit(minutes) {\n setStartTime(Date.now());\n setTimeElapsed(0);\n setLimit(minutes);\n setTimeUp(false);\n setIsActive(false);\n }\n\n useEffect(() => {\n // always need a limit for minute timer\n if (!limit || disabled) return;\n\n let interval = null;\n if (isActive && !startTime) {\n const millisecondsElapsed = timeElapsed * 1000;\n setStartTime(Date.now() - millisecondsElapsed);\n } else if (isActive) {\n interval = setInterval(() => {\n const now = Date.now();\n const secondsElapsed = Math.round((now - startTime) / 1000);\n if (secondsElapsed < minutesAsSeconds) {\n setTimeElapsed(secondsElapsed);\n } else {\n setTimeElapsed(secondsElapsed);\n setIsActive(false);\n setTimeUp(true);\n }\n }, 1000);\n } else if (!isActive && timeElapsed !== 0) {\n clearInterval(interval);\n setStartTime(0);\n }\n return () => clearInterval(interval);\n }, [isActive, startTime, minutesAsSeconds]);\n\n return {\n timeLeft: formattedTimeLeft,\n longTimeLeft,\n timerActive: isActive,\n toggleTimer: (onOrOff) => {\n if (!isActive && timeElapsed === 0) {\n setStartTime(0);\n }\n setIsActive(isActive => onOrOff || !isActive)\n },\n resetTimer: reset,\n timeUp,\n updateTimeLimit,\n disabled\n }\n}\n\nexport const useStopwatch = (disabled) => {\n const [timeElapsed, setTimeElapsed] = useState(0);\n const [startTime, setStartTime] = useState(0);\n const [isActive, setIsActive] = useState(false);\n\n const milliseconds = timeElapsed * 1000;\n const format = 'HH:mm:ss';\n const formattedTimeElapsed = utc(milliseconds).format(format);\n\n function reset() {\n setTimeElapsed(0);\n setStartTime(Date.now())\n setIsActive(false);\n }\n\n useEffect(() => {\n if (disabled) return;\n\n let interval = null;\n if (isActive && !startTime) {\n const millisecondsElapsed = timeElapsed * 1000;\n setStartTime(Date.now() - millisecondsElapsed);\n } else if (isActive) {\n interval = setInterval(() => {\n const now = Date.now();\n const secondsElapsed = Math.round((now - startTime) / 1000);\n setTimeElapsed(secondsElapsed);\n }, 500);\n } else if (!isActive && timeElapsed !== 0) {\n clearInterval(interval);\n setStartTime(0);\n }\n return () => clearInterval(interval);\n }, [isActive, startTime]);\n\n return {\n timeElapsed: formattedTimeElapsed,\n timerActive: isActive,\n toggleTimer: (onOrOff) => {\n if (!isActive && timeElapsed === 0) {\n setStartTime(0);\n }\n setIsActive(isActive => onOrOff || !isActive)\n },\n resetTimer: reset,\n disabled\n }\n}\n\nexport const useTimerContext = () => useContext(TimerContext);\n","import React, {useState, useEffect} from 'react';\nimport styled from 'styled-components';\nimport {TimerContext, useTimerContext, useStopwatch, useMinuteTimer} from '@bootcamp/shared/src/util/contexts/Timer';\n\nconst Timer = styled.div`\n cursor: pointer;\n text-align: right;\n`;\n\nconst Time = styled.span`\n /* width: 45px; */\n text-align: left;\n display: inline-block;\n`;\n\nconst HideMobile = styled.span`\n ${({theme}) => theme.mediaQueries.tablet} {\n display: none;\n }\n`\n\nconst TestTimer = () => {\n const {timeLeft, toggleTimer, timerActive, stopwatch, timeElapsed, updateTimeLimit, disabled} = useTimerContext();\n if (disabled) return null;\n\n return (\n <Timer onClick={() => toggleTimer()} onContextMenu={e => {\n const newTimer = window.prompt('Set new timer duration (minutes), or click cancel');\n if (!newTimer || !parseInt(newTimer) || parseInt(newTimer) <= 0 || stopwatch) return;\n updateTimeLimit(newTimer);\n toggleTimer();\n }}>\n <HideMobile>{timerActive ?`Time ${stopwatch ? 'elapsed' : 'remaining'}:` : `Timer paused:`}</HideMobile> <Time>{timeLeft || timeElapsed}</Time>\n </Timer>\n );\n}\n\n\nconst TimerProvider = ({timeLimit, stopwatch, children, autoStart = false, disabled, questionIndex}) => {\n const [questionStartTime, setQuestionStartTime] = useState(null);\n\n const useStopwatchProps = useStopwatch(disabled);\n const useMinuteTimerProps = useMinuteTimer(timeLimit, autoStart, disabled);\n\n const timerProps = stopwatch ? useStopwatchProps : useMinuteTimerProps;\n const contextValue = {...timerProps, questionStartTime, stopwatch, timeLimit};\n\n useEffect(() => {\n if (!disabled && timerProps.timerActive) {\n setQuestionStartTime(new Date());\n }\n }, [questionIndex, timerProps.timerActive]);\n\n return (\n <TimerContext.Provider value={contextValue}>\n {children}\n </TimerContext.Provider>\n );\n}\n\nexport {TestTimer, useTimerContext, TimerProvider};\n","import React, {useEffect, useMemo, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {useHistory} from 'react-router-dom';\nimport {firstBy} from 'thenby';\n\nimport {useModalContext} from '../../contexts/Modal';\nimport {useUserDataContext} from '../../contexts/UserData';\n\nimport {SubmitAnatomyCase} from '../Modal';\nimport {Row} from '@bootcamp/web/src/components/Grid';\nimport {H4, H5, Body3} from '@bootcamp/web/src/components/Typography';\nimport {TextTooltip} from '@bootcamp/web/src/bootcamps/pages/CreateTest/components/shared';\nimport Switch from 'rc-switch';\nimport \"rc-switch/assets/index.css\";\n\nimport {useReloadBlockerContext} from '@bootcamp/web/src/contexts/ReloadBlocker';\nimport {useTestNavigatorContext} from '@bootcamp/web/src/contexts/TestNavigator';\nimport {useTimerContext} from '@bootcamp/web/src/contexts/TestTimer';\n\nimport {IconButton} from '@bootcamp/web/src/components/Branding/Buttons';\nimport {ToggleSidebar} from '@bootcamp/web/src/components/Branding/Buttons/iconButtons';\n\nimport {CircleHalfFill as Partial} from '@styled-icons/fluentui-system-filled/CircleHalfFill'\nimport {Dismiss} from '@styled-icons/fluentui-system-filled/Dismiss';\nimport {Bars4 as ViewList} from '@styled-icons/heroicons-solid/Bars4';\nimport {Squares2x2 as ViewGrid} from '@styled-icons/heroicons-solid/Squares2x2';\nimport {Shuffle} from '@styled-icons/ionicons-solid/Shuffle';\nimport {Settings} from '@styled-icons/ionicons-outline/Settings';\nimport {Timeline} from '@styled-icons/fluentui-system-filled/Timeline';\nimport {Checkmark} from '@styled-icons/fluentui-system-filled/Checkmark';\nimport {DismissCircle} from '@styled-icons/fluentui-system-filled/DismissCircle';\nimport {MagnifyingGlass as Search} from '@styled-icons/heroicons-outline/MagnifyingGlass';\nimport {Tag} from '@styled-icons/fluentui-system-filled/Tag';\nimport {ChevronUp} from '@styled-icons/feather/ChevronUp';\nimport MasteryIcon from '../../bootcamps/components/MasteryIcon';\n\nimport styled, {css} from 'styled-components';\nimport {getTitleConfig, getTags} from '@bootcamp/shared/src/util';\nimport Storage from '@aws-amplify/storage';\n\nimport {updateQuestionProgressData} from '@bootcamp/web/src/helpers';\nimport {trackQuizProgressPerformance} from '@bootcamp/shared/src/requests';\n\nimport {aggregateByTopic, aggregateBySubject} from '@bootcamp/shared/src/util/scoring';\n\nimport theme from '@bootcamp/shared/src/styles/theme';\nimport ProgressBar from '@bootcamp/web/src/components/ProgressBar';\n\nexport const CloseButton = styled(IconButton)`\n height: 56px;\n width: 56px;\n padding: 16px;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n height: 40px;\n width: 40px;\n padding: 10px;\n }\n`;\n\nexport const CloseIcon = styled(Dismiss).attrs(props => ({size: 20, color: 'white'}))`\n ${({theme}) => theme.mediaQueries.mobileL} {\n height: 20px;\n width: 20px;\n }\n`;\n\nconst Container = styled.div`\n width: 100%;\n background: ${({background}) => background};\n position: relative;\n`;\n\nconst Type = styled(H4)`\n color: ${({theme}) => theme.overlays.opacity.light._400};\n margin-bottom: ${({theme}) => theme.layouts.spacing.xs};\n font-weight: 400;\n line-height: 100%;\n`;\n\nconst Title = styled(H4)`\n color: ${theme.colors.neutralsPalette.white};\n font-weight: 700;\n line-height: 100%;\n font-size: 18px;\n`;\n\nconst ButtonsContainer = styled(Row)`\n height: auto;\n align-items: center;\n justify-content: space-between;\n`;\n\nconst TitleContainer = styled.div`\n padding: 16px 0px 0px;\n`;\n\nexport const FilterSelector = styled.select`\n cursor: pointer;\n font-family: 'proxima-nova';\n border: none;\n width: 100%;\n min-width: 100%;\n appearance: none;\n background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTciIHZpZXdCb3g9IjAgMCAxNyAxNyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTkuMDk4MzYgMi4zNjg4M0M5LjA1MTcyIDIuMzIwNDQgOC45OTU4IDIuMjgxOTUgOC45MzM5NSAyLjI1NTY2QzguODcyMDkgMi4yMjkzNyA4LjgwNTU3IDIuMjE1ODIgOC43MzgzNiAyLjIxNTgyQzguNjcxMTUgMi4yMTU4MiA4LjYwNDYzIDIuMjI5MzcgOC41NDI3OCAyLjI1NTY2QzguNDgwOTIgMi4yODE5NSA4LjQyNSAyLjMyMDQ0IDguMzc4MzYgMi4zNjg4M0w0LjIwNTAzIDYuNzAyMTdDNC4xNTcyIDYuNzQ4OTYgNC4xMTkyNCA2LjgwNDg4IDQuMDkzNDIgNi44NjY2MUM0LjA2NzYgNi45MjgzNSA0LjA1NDQzIDYuOTk0NjMgNC4wNTQ2OSA3LjA2MTU1QzQuMDU0OTYgNy4xMjg0NiA0LjA2ODY1IDcuMTk0NjUgNC4wOTQ5NiA3LjI1NjE3QzQuMTIxMjcgNy4zMTc3IDQuMTU5NjcgNy4zNzMzMiA0LjIwNzg3IDcuNDE5NzNDNC4yNTYwNyA3LjQ2NjE1IDQuMzEzMDkgNy41MDI0MSA0LjM3NTU3IDcuNTI2MzlDNC40MzgwNCA3LjU1MDM2IDQuNTA0NjkgNy41NjE1NSA0LjU3MTU3IDcuNTU5MjlDNC42Mzg0NSA3LjU1NzAzIDQuNzA0MTkgNy41NDEzNiA0Ljc2NDkxIDcuNTEzMjNDNC44MjU2MiA3LjQ4NTEgNC44ODAwNyA3LjQ0NTA2IDQuOTI1MDMgNy4zOTU1TDguNzM4MzYgMy40MzU1TDEyLjUzODQgNy4zOTU1QzEyLjU4MzkgNy40NDM2NSAxMi42Mzg0IDcuNDgyMzYgMTIuNjk4OSA3LjUwOTQzQzEyLjc1OTQgNy41MzY0OSAxMi44MjQ2IDcuNTUxMzggMTIuODkwOSA3LjU1MzI0QzEyLjk1NzEgNy41NTUwOSAxMy4wMjMxIDcuNTQzODkgMTMuMDg1IDcuNTIwMjVDMTMuMTQ2OSA3LjQ5NjYyIDEzLjIwMzUgNy40NjEwMiAxMy4yNTE3IDcuNDE1NUMxMy4yOTk4IDcuMzY5OTcgMTMuMzM4NiA3LjMxNTQxIDEzLjM2NTYgNy4yNTQ5M0MxMy4zOTI3IDcuMTk0NDQgMTMuNDA3NiA3LjEyOTIxIDEzLjQwOTQgNy4wNjI5OEMxMy40MTEzIDYuOTk2NzQgMTMuNDAwMSA2LjkzMDc4IDEzLjM3NjQgNi44Njg4N0MxMy4zNTI4IDYuODA2OTYgMTMuMzE3MiA2Ljc1MDMyIDEzLjI3MTcgNi43MDIxN0w5LjA5ODM2IDIuMzY4ODNaTTkuMDk4MzYgMTUuMzk1NUM5LjA1MTcyIDE1LjQ0MzkgOC45OTU4IDE1LjQ4MjQgOC45MzM5NSAxNS41MDg3QzguODcyMDkgMTUuNTM1IDguODA1NTcgMTUuNTQ4NSA4LjczODM2IDE1LjU0ODVDOC42NzExNSAxNS41NDg1IDguNjA0NjMgMTUuNTM1IDguNTQyNzggMTUuNTA4N0M4LjQ4MDkyIDE1LjQ4MjQgOC40MjUgMTUuNDQzOSA4LjM3ODM2IDE1LjM5NTVMNC4yMTE2OSAxMS4wNjIyQzQuMTYzODYgMTEuMDE1NCA0LjEyNTkxIDEwLjk1OTQgNC4xMDAwOSAxMC44OTc3QzQuMDc0MjYgMTAuODM2IDQuMDYxMDkgMTAuNzY5NyA0LjA2MTM2IDEwLjcwMjhDNC4wNjE2MiAxMC42MzU5IDQuMDc1MzIgMTAuNTY5NyA0LjEwMTYzIDEwLjUwODJDNC4xMjc5NCAxMC40NDY2IDQuMTY2MzMgMTAuMzkxIDQuMjE0NTMgMTAuMzQ0NkM0LjI2MjczIDEwLjI5ODIgNC4zMTk3NiAxMC4yNjE5IDQuMzgyMjQgMTAuMjM3OUM0LjQ0NDcxIDEwLjIxNCA0LjUxMTM2IDEwLjIwMjggNC41NzgyNCAxMC4yMDVDNC42NDUxMiAxMC4yMDczIDQuNzEwODYgMTAuMjIzIDQuNzcxNTcgMTAuMjUxMUM0LjgzMjI5IDEwLjI3OTIgNC44ODY3NCAxMC4zMTkzIDQuOTMxNjkgMTAuMzY4OEw4LjczODM2IDE0LjMyODhMMTIuNTM4NCAxMC4zNjg4QzEyLjYzMDMgMTAuMjcxNiAxMi43NTcxIDEwLjIxNDggMTIuODkwOSAxMC4yMTExQzEzLjAyNDcgMTAuMjA3MyAxMy4xNTQ0IDEwLjI1NjkgMTMuMjUxNyAxMC4zNDg4QzEzLjM0ODkgMTAuNDQwOCAxMy40MDU3IDEwLjU2NzYgMTMuNDA5NCAxMC43MDE0QzEzLjQxMzIgMTAuODM1MSAxMy4zNjM2IDEwLjk2NDkgMTMuMjcxNyAxMS4wNjIyTDkuMDk4MzYgMTUuMzk1NVoiIGZpbGw9IndoaXRlIiBmaWxsLW9wYWNpdHk9IjAuNyIvPgo8L3N2Zz4K) no-repeat 95% 50%;\n background-size: 18px;\n background-position: calc(100% - 5px) center;\n background-repeat: no-repeat;\n background-color: ${({theme}) => theme.overlays.opacity.light._100};\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n font-size: 14px;\n padding: 8px 12px;\n border-radius: 8px;\n margin-bottom: 0;\n margin-top: 8px;\n outline-width: 0px;\n color: ${({theme, light}) => light ? theme.colors.neutralsPalette.white : theme.colors.neutralsPalette.extraDark};\n option {\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n }\n`;\nconst IconWrapper = styled.div`\n`;\nconst IncorrectIcon = styled(Dismiss)`\n width: 14px;\n`;\n\nconst TopicFilterSelector = styled(FilterSelector)`\n color: ${({theme, light}) => light ? theme.colors.neutralsPalette.white : theme.colors.neutralsPalette.extraDark};\n`;\n\nconst ProgressContainer = styled(Row)`\n height: auto;\n align-items: flex-start;\n justify-content: center;\n`;\n\nconst ToggleBackground = styled.div`\n background: ${({theme}) => theme.overlays.opacity.light._100};\n border-radius: 8px;\n padding: 4px;\n height: 32px;\n`;\n\nconst ToggleContainer = styled(Row)`\n position: relative;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n flex: 1;\n`;\n\nconst ToggleActive = styled.div`\n background: ${({theme}) => theme.overlays.opacity.light._100};\n position: absolute;\n left: ${({value, numOptions}) => value ? `${(100 / numOptions) * value}%` : 0};\n top: 0;\n height: 100%;\n width: ${({numOptions}) => `${100 / numOptions}%`};\n transition: left .3s;\n border-radius: 8px;\n box-shadow: ${({theme}) => theme.elevation.shadow.low};\n`;\n\nconst IconContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n`;\n\nconst FilterContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n color: white;\n font-family: proxima-nova;\n font-weight: 400px;\n font-size: 14px;\n`;\n\nexport const QbankFilterToggle = ({visibleFilter, setVisibleFilter, setNavigationFilter, category}) => {\n return (\n <ToggleBackground>\n <ToggleContainer>\n <FilterContainer onClick={() => {\n setVisibleFilter();\n setNavigationFilter({});\n }}>\n All\n </FilterContainer>\n <FilterContainer active={visibleFilter === 'status'} onClick={() => {\n setVisibleFilter('status');\n setNavigationFilter({});\n }}>\n Status\n </FilterContainer>\n {category && <FilterContainer active={visibleFilter === 'category'} onClick={() => {\n setVisibleFilter('category');\n setNavigationFilter({});\n }}>\n {category}\n </FilterContainer>}\n <ToggleActive onClick={() => {\n setVisibleFilter();\n setNavigationFilter({});\n }} numOptions={category ? 3 : 2} value={[undefined, 'status', 'category'].indexOf(visibleFilter)} />\n </ToggleContainer>\n </ToggleBackground>\n )\n}\nexport const CourseFilterToggle = ({navigationFilter, setNavigationFilter}) => {\n const {key, value} = navigationFilter;\n return (\n <ToggleBackground>\n <ToggleContainer>\n <FilterContainer active={key !== 'blockFilter' || !value} onClick={() => setNavigationFilter({})}>\n All\n </FilterContainer>\n <FilterContainer active={key === 'blockFilter' && value === 'videos'} onClick={() => setNavigationFilter({key: 'blockFilter', value: 'videos'})}>\n Videos\n </FilterContainer>\n <FilterContainer active={key === 'blockFilter' && value === 'quizzes'} onClick={() => setNavigationFilter({key: 'blockFilter', value: 'quizzes'})}>\n Quizzes\n </FilterContainer>\n <ToggleActive numOptions={3} value={key != 'blockFilter' || !value ? 0 : ['', 'videos', 'quizzes'].indexOf(value)} />\n </ToggleContainer>\n </ToggleBackground>\n )\n}\n\nexport const GridToggle = ({value, setValue, themePalette}) => {\n return (\n <ToggleContainer onClick={() => setValue(!value)}>\n <IconContainer>\n <ListIcon active={!value} themePalette={themePalette} />\n </IconContainer>\n <IconContainer>\n <GridIcon active={value} themePalette={themePalette} />\n </IconContainer>\n <ToggleActive value={value} />\n </ToggleContainer>\n )\n}\n\nconst GridIcon = styled(ViewGrid).attrs(props => ({size: 18}))`\n color: ${({themePalette, active}) => !active ? 'white' : themePalette.default};\n z-index: 2;\n transition: color .3s;\n width: 18px;\n height: 18px;\n`;\n\nconst ListIcon = styled(ViewList).attrs(props => ({size: 18}))`\n color: ${({themePalette, active}) => !active ? 'white' : themePalette.default};\n z-index: 2;\n transition: color .3s;\n width: 18px;\n height: 18px;\n`;\n\nconst SettingsToggle = styled(Settings)`\n color: white;\n`;\n\nconst ProgressCount = styled(H5)`\n white-space: nowrap;\n width: auto;\n margin-left: 8px;\n margin-top: 0;\n display: flex;\n align-items: center;\n line-height: normal;\n color: white;\n font-weight: 400;\n line-height: 100%;\n font-size: 14px;\n margin-right: 12px;\n`;\n\nconst Section = styled.div`\n padding: 12px 16px;\n border-bottom: 1px solid ${({theme}) => theme.overlays.opacity.dark._100};\n`;\n\nconst TitleRow = styled(Row)`\n align-items: center;\n justify-content: flex-start;\n width: 100%;\n`;\n\nconst ProgressButtonWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n border: 1px solid ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.borderPrimary : theme.overlays.opacity.dark._50};\n background: ${({theme, toggled}) => toggled ? 'white' : theme.darkModeEnabled ? theme.colors.darkModePalette.surfaceSecondary : theme.overlays.opacity.light._100};\n transition: background .2s ease-in-out;\n border-radius: 8px;\n cursor: pointer;\n svg {\n width: 14px;\n height: 14px;\n color: ${({toggled, themePalette}) => toggled ? '#2F3037' : 'white'};\n }\n\n ${({toggled, theme}) => !toggled && css`\n &:hover {\n background: ${theme.darkModeEnabled ? theme.colors.darkModePalette.surfaceTertiary : 'rgba(255, 255, 255, 0.2)'}\n }\n `}\n margin-left: 4px;\n padding: 8px;\n`;\n\nconst ShuffleIcon = styled(Shuffle).attrs(props => ({size: 18}))`\n`;\nconst ProgressRow = styled.div`\n width: 100%;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n`;\nconst SettingsArea = styled.div`\n width: 100%;\n max-height: ${({toggled}) => toggled ? '300px' : '0px'};\n overflow: hidden;\n transition: max-height .4s ease-in-out;\n border-bottom: ${({toggled}) => toggled ? `1px solid ${({theme}) => theme.overlays.opacity.dark._100}` : 'none'};\n`;\nconst StyledTextTooltip = styled(TextTooltip).attrs(props => ({maxWidth: 244}))`\n`;\n\nconst OptionBox = styled.div`\n box-sizing: border-box;\n padding: 8px 16px;\n width: 100%;\n`;\n\nconst OptionTitle = styled(H4)`\n color: white;\n margin: 0;\n font-size: 14px;\n font-weight: 400;\n`;\n\nconst StyledSwitch = styled(Switch)`\n margin-left: auto;\n &:after {\n transform: none !important;\n animation-name: none !important;\n }\n`;\n\nconst Option = styled.div`\n display: flex;\n justify-content: flex-start;\n align-items: center;\n flex-direction: row;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n padding: 8px 0px;\n &:first-child {\n padding-top: 0;\n }\n &:last-child {\n border-bottom: none;\n padding-bottom: 0;\n }\n`;\n\nconst OpenIndicator = styled(ChevronUp)`\n color: white;\n margin-left: auto;\n margin-right: 0;\n transition: .15s transform;\n transform: rotate(${({open}) => open ? '0deg' : '-180deg'});\n`;\n\nconst FilterSection = styled.div`\n background: #FFFFFF1A;\n border-radius: 8px;\n padding: 0px 12px;\n margin-top: 8px;\n`;\n\nconst FilterRow = styled.div`\n padding: 8px 0px;\n border-bottom: 1px solid #0000001A;\n &:first-child {\n padding-top: 12px;\n }\n &:last-child {\n padding-bottom: 12px;\n border-bottom: none;\n }\n display: flex;\n align-items: center;\n font-size: 14px;\n font-style: normal;\n font-weight: ${({isActive}) => isActive ? 700 : 400};\n line-height: 100%; /* 14px */\n color: white;\n cursor: pointer;\n font-family: proxima-nova;\n ${({isVisible, isActive}) => !isVisible && !isActive && css`display: none;`}\n`;\n\nconst FilterText = styled.span`\n margin-left: 8px;\n margin-right: auto;\n`;\nconst FilterCount = styled.span`\n margin-left: auto;\n margin-right: 0;\n`\nconst MasteryTag = styled(MasteryIcon)`\n display: ${({level}) => !!level ? 'inline-block' : 'none'};\n max-width: 16px;\n height: 16px;\n`;\n\nconst ButtonRow = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n`\n\nconst SearchInput = styled.input`\n width: 100%;\n border: none;\n border-radius: 8px;\n padding: 8px;\n padding-left: 32px;\n background: ${({theme}) => theme.overlays.opacity.light._100};\n color: white;\n font-family: proxima-nova;\n font-weight: 400;\n font-size: 14px;\n line-height: 100%;\n &::placeholder {\n color: ${({theme}) => theme.overlays.opacity.light._400};\n }\n`;\nconst Top = ({\n title,\n parentTitle,\n setShowingSidebar,\n showingSidebar,\n visibleFilterState,\n progressBar,\n grid,\n setGrid,\n themePalette,\n classroom,\n showExitButton=true,\n hideQuestionList,\n hide=[],\n onSearch,\n hideSettings,\n openWithSettingsShowing,\n right\n}) => {\n const [settingsToggled, setSettingsToggled] = useState(false);\n const [visibleFilter, setVisibleFilter] = visibleFilterState || [];\n const {modalDispatch} = useModalContext();\n const {toggleReloadBlocker} = useReloadBlockerContext();\n const {saveUserInteraction, bootcamp, DEFAULT_USER_ID, searchUserInteractions, toggleDarkMode, darkModeEnabled} = useUserDataContext();\n const hideAnswerData = searchUserInteractions('hideAnswerData') === true;\n const hideTimer = searchUserInteractions('hideTimer') === true;\n const splitScreenSolutions = searchUserInteractions('splitScreenSolutions') === true;\n const showKeyboardShortcuts = searchUserInteractions('showKeyboardShortcuts') === true;\n const prometricDelay = searchUserInteractions('prometricDelay') === true;\n const autoPlayEnabled = searchUserInteractions('autoPlayEnabled') === true;\n const autoTag = true;\n\n useEffect(() => {\n if (showingSidebar && openWithSettingsShowing) {\n setSettingsToggled(true);\n }\n }, [showingSidebar]);\n\n const {\n methods: {\n setNavigationFilter,\n transitionBlock,\n setCurrentIndex,\n toggleQuestionProgressShuffle,\n updateQuizProgress,\n autoTagOnSubmit\n },\n variables: {\n testBlockConnections,\n navigationFilter,\n blockIndex,\n template,\n type,\n test,\n shuffled,\n customTestConfig,\n quizProgress\n }\n } = useTestNavigatorContext();\n const {questions: questionProgresses} = quizProgress?.[blockIndex] || {};\n\n const {timeLeft, timeUp, questionStartTime} = useTimerContext();\n const {push, goBack, action} = useHistory();\n\n const canGoBack = action !== 'POP';\n const urlParts = window.location.pathname.split('/');\n const previousPath = urlParts\n .slice(0, 2)\n .join('/');\n\n const {questions: blockQuestionProgress} = {questions: [], ...quizProgress[blockIndex]};\n const questionIndex = blockQuestionProgress.findIndex(({current}) => current);\n\n const isFullLengthTestReview = template === 'testReview' && test?.config?.title.includes('Full Length');\n const isFullLengthOATTestReview = isFullLengthTestReview && test?.config?.title.includes('OAT');\n const [datTopics, datSubjects] = useMemo(() => {\n if (!['oat', 'dat'].includes(bootcamp) || template !== 'testReview' || !quizProgress) return [];\n return [aggregateByTopic(quizProgress), aggregateBySubject(quizProgress)]\n }, []);\n const questions = quizProgress.map(block => block.questions || []).flat();\n const {testSubjects, testTopics} = questions.reduce((acc, {question}) => {\n if (!question) return acc;\n const [subject, topic] = getTags(bootcamp, question.tags.items);\n // count the number of questions for each subject and topic within that subject\n acc.testSubjects[subject] = (acc.testSubjects[subject] || 0) + 1;\n acc.testTopics[subject] = acc.testTopics[subject] || {};\n acc.testTopics[subject][topic] = (acc.testTopics[subject][topic] || 0) + 1;\n\n return acc;\n }, {testSubjects: {}, testTopics: {}});\n\n const topicsBySubject = questions.reduce((acc, {question}) => {\n if (!question) return acc;\n const [subject, topic] = getTags(bootcamp, question.tags.items);\n acc[subject] = acc[subject] || [];\n if (!acc[subject].includes(topic)) acc[subject].push(topic);\n return acc;\n }, {});\n\n const activeSubjectFilter = Object.keys(testSubjects).length == 1 ? Object.keys(testSubjects)[0] : navigationFilter.key === 'subject' ? navigationFilter.value : navigationFilter.key === 'subjectTopic' ? navigationFilter.value.split('##')?.[0] : null;\n const activeTopics = Object.keys(testSubjects).length == 1 ? topicsBySubject[Object.keys(testSubjects)[0]] : navigationFilter.key === 'subject' ? topicsBySubject[navigationFilter.value] : navigationFilter.key === 'subjectTopic' ? topicsBySubject[navigationFilter.value.split('##')?.[0]] : [];\n\n // METHODS\n const handleGoBack = () => {\n if (['testReview'].includes(template) && ['dat', 'oat'].includes(bootcamp)) {\n const urlParams = new URLSearchParams(window.location.search);\n const testRoute = urlParams.get('testRoute');\n const testId = urlParams.get('id');\n const testProgressId = urlParams.get('testProgressId');\n const reviewRoute = `${testRoute}/review?id=${testId}&testProgressId=${encodeURIComponent(testProgressId)}&testRoute=${testRoute}`;\n testRoute && testId && testProgressId ? push(reviewRoute) : goBack();\n\n } else if (canGoBack && !['questionSearchBank'].includes(template)) {\n goBack();\n } else {\n push(previousPath);\n }\n };\n\n const questionCount = questions.length;\n\n const mastery = questions.reduce((acc, {masteryLevel}) => ({\n ...acc,\n ...((masteryLevel && masteryLevel !== 'none') ? {[masteryLevel]: acc[masteryLevel] + 1, total: acc.total + 1} : {}),\n }), {\n learning: 0,\n reviewing: 0,\n mastered: 0,\n total: 0\n });\n\n const completeLessons = quizProgress.reduce((acc, blockProgress) => blockProgress.status === 'complete' ? acc + 1 : acc, 0);\n const totalLessons = testBlockConnections.length - 2;\n\n const handleFilterChange = event => {\n if (parseInt(event.target.value)) {\n setNavigationFilter({});\n setVisibleFilter && setVisibleFilter();\n const blockTarget = parseInt(event.target.value);\n setCurrentIndex(blockTarget, 0);\n return;\n }\n\n const questionFilter = event.target.value;\n\n if (questionFilter) {\n\n const filterKey = questionFilter.match('topic') || questionFilter.match('subject')\n ? questionFilter.split('###')[0]\n : questionFilter === 'bookmarked'\n ? 'bookmarked'\n : (questionFilter === 'correct' || questionFilter === 'incorrect')\n ? 'didSelectCorrectAnswer'\n : ['fullCredit', 'partialCredit', 'noCredit'].includes(questionFilter)\n ? questionFilter\n : 'masteryLevel';\n\n const filterValue = questionFilter.match('topic') || questionFilter.match('subject')\n ? questionFilter.split('###')[1]\n : filterKey === 'bookmarked'\n ? true\n : filterKey === 'masteryLevel'\n ? questionFilter\n : ['fullCredit', 'partialCredit', 'noCredit'].includes(questionFilter)\n ? true\n : questionFilter === 'correct';\n if (filterKey === navigationFilter.key && filterValue === navigationFilter.value) {\n return setNavigationFilter({});\n }\n setNavigationFilter({ key: filterKey, value: filterValue });\n } else {\n setNavigationFilter({});\n }\n };\n\n const handleSuspendClick = async () => {\n const testStorageKey = customTestConfig?.config?.testStorageKey;\n\n try {\n // update custom test config to indicate suspension\n const updatedConfig = {\n ...customTestConfig,\n suspended: true,\n timeLeft: timeLeft?.length <= 5 ? `00:${timeLeft}` : timeLeft,\n questionIndex\n };\n\n await Storage.put(testStorageKey, JSON.stringify(updatedConfig), { contentType: 'application/json' });\n\n if (template === 'customTest' && !customTestConfig.submitted && !questionProgresses?.[questionIndex]?.didCheck) {\n await updateQuestionProgressData(updateQuizProgress, questionStartTime, questionProgresses, questionIndex);\n }\n\n toggleReloadBlocker(false);\n setTimeout(() => push(`/med-school/previous-tests`), 100);\n } catch (err) {\n console.log('error suspending test', err);\n }\n };\n\n const handleExitClick = async () => {\n const testStorageKey = customTestConfig?.config?.testStorageKey;\n\n try {\n // update custom test config to indicate suspension\n const updatedConfig = {\n ...customTestConfig,\n suspended: false,\n timeLeft: null,\n submitted: true,\n };\n\n await Storage.put(testStorageKey, JSON.stringify(updatedConfig), {contentType: 'application/json' });\n\n } catch (error) {\n console.log('error marking test as submitted', error);\n }\n\n if (template === 'customTest' && !questionProgresses?.[questionIndex]?.didCheck) {\n await updateQuestionProgressData(updateQuizProgress, questionStartTime, questionProgresses, questionIndex);\n }\n\n if (customTestConfig?.config && !customTestConfig.submitted) {\n if (!customTestConfig?.config?.tutorMode) {\n await trackQuizProgressPerformance(DEFAULT_USER_ID, quizProgress, `${DEFAULT_USER_ID}#${bootcamp}_Performance`);\n }\n\n await autoTagOnSubmit();\n }\n\n toggleReloadBlocker(false);\n setTimeout(() => push(`/${bootcamp}/previous-tests/review?key=${encodeURIComponent(customTestConfig?.config?.testStorageKey)}`), 100);\n };\n\n // USE EFFECTS\n useEffect(() => {\n // console.log('working here?', navigationFilter, blockIndex);\n if (!navigationFilter || !['masteryLevel', 'fullCredit', 'partialCredit', 'noCredit', 'topic', 'didSelectCorrectAnswer'].includes(navigationFilter.key) || blockIndex === 0) return;\n navigationFilter.value === 'all' ? transitionBlock('firstQuestionSet') : transitionBlock('firstFilterActive');\n }, [navigationFilter.key, navigationFilter.value]);\n\n useEffect(() => {\n if (timeUp && showExitButton) {\n modalDispatch({\n type: 'open',\n component: SubmitAnatomyCase,\n enableClickClose: true,\n componentProps: {\n headerText: 'No Time Remaining',\n bodyText: 'You have no more time remaining. You can review your test results from the previous tests page.',\n cancelConfig: {\n text: ''\n },\n confirmConfig: {\n text: 'View Test Results',\n colorConfig: themePalette,\n onConfirm: handleExitClick,\n shouldRedirect: false,\n }\n },\n })\n };\n }, [timeUp]);\n\n const titleConfig = getTitleConfig(title, classroom, template, customTestConfig);\n\n const exitProps = template === 'quickReview' ?\n {\n headerText: `Nice work! You’ve reached the end of your review.`,\n bodyText: `Would you like to keep reviewing or complete your review?`,\n cancelConfig: {\n text: 'Keep Reviewing',\n onCancel: () => {\n modalDispatch({type: 'close'});\n },\n shouldRedirect: false,\n\n },\n confirmConfig: {\n text: 'Complete Review',\n colorConfig: themePalette,\n onConfirm: () => {\n toggleReloadBlocker(false);\n setTimeout(() => handleGoBack(), 100);\n },\n shouldRedirect: false,\n }\n\n }\n : template === 'customTest' && !customTestConfig?.submitted ? {\n headerText: 'End Test',\n bodyText: 'Do you want to end this test? Once ended you can review your test results from the previous tests page.',\n cancelConfig: {\n text: 'Pause Test',\n onCancel: handleSuspendClick,\n shouldRedirect: false,\n },\n confirmConfig: {\n text: 'End Test',\n colorConfig: themePalette,\n onConfirm: handleExitClick,\n shouldRedirect: false,\n }\n } : {\n headerText: 'Would you like to end your review?',\n bodyText: 'You’ll be able to resume your review whenever you’re ready. Your tagged questions are automatically saved.',\n cancelConfig: {\n text: 'Return to Review',\n onCancel: () => {\n modalDispatch({type: 'close'});\n },\n shouldRedirect: false,\n\n },\n confirmConfig: {\n text: 'End Review',\n colorConfig: themePalette,\n onConfirm: () => {\n toggleReloadBlocker(false);\n setTimeout(() => handleGoBack(), 100);\n },\n shouldRedirect: false,\n }\n };\n const isUntutoredAndUnsubmitted = !!customTestConfig && !customTestConfig?.config?.tutorMode && !customTestConfig?.submitted;\n const {correct, incorrect, bookmarked, fullCredit, partialCredit, noCredit} = quizProgress.reduce((acc, blockProgress) => blockProgress?.questions ? blockProgress.questions.reduce((acc, question) => isUntutoredAndUnsubmitted ? acc : ({\n ...acc,\n correct: acc.correct + (question.didSelectCorrectAnswer && (question.didCheck || template == 'testReview' || type === 'readinessExam' || customTestConfig?.submitted) ? 1 : 0),\n incorrect: acc.incorrect + (!question.didSelectCorrectAnswer && (question.didCheck || template == 'testReview' || type === 'readinessExam' || customTestConfig?.submitted) ? 1 : 0),\n bookmarked: acc.bookmarked + (question.bookmarked ? 1 : 0),\n fullCredit: acc.fullCredit + (question.fullCredit && (question.didCheck || template == 'testReview' || type === 'readinessExam' || customTestConfig?.submitted) ? 1 : 0),\n partialCredit: acc.partialCredit + (question.partialCredit && (question.didCheck || template == 'testReview' || type === 'readinessExam' || customTestConfig?.submitted) ? 1 : 0),\n noCredit: acc.noCredit + (question.noCredit ? 1 : 0),\n }), acc) : acc, {\n correct: 0,\n incorrect: 0,\n bookmarked: 0,\n fullCredit: 0,\n partialCredit: 0,\n noCredit: 0,\n });\n\n const FilterRowOptions = [\n bootcamp === 'nclex' ? [\n {label: 'Full Credit', value: fullCredit, filterKey: 'fullCredit', filterValue: true, onClick: () => handleFilterChange({target: {value: 'fullCredit'}}), iconComponent: <Checkmark color={'white'} size={14} />},\n {label: 'Partial Credit', value: partialCredit, filterKey: 'partialCredit', filterValue: true, onClick: () => handleFilterChange({target: {value: 'partialCredit'}}), iconComponent: <Partial color={'white'} size={14} />},\n {label: 'No Credit', value: noCredit, filterKey: 'noCredit', filterValue: true, onClick: () => handleFilterChange({target: {value: 'noCredit'}}), iconComponent: <IconWrapper><IncorrectIcon color={'white'} size={11} /></IconWrapper>},\n ] : template !== 'questionSearchBank' ? [\n {label: 'Correct', value: correct, filterKey: 'didSelectCorrectAnswer', filterValue: true, onClick: () => handleFilterChange({target: {value: 'correct'}}), iconComponent: <Checkmark color={'white'} size={14} />},\n {label: 'Incorrect', value: incorrect, filterKey: 'didSelectCorrectAnswer', filterValue: false, onClick: () => handleFilterChange({target: {value: 'incorrect'}}), iconComponent: <IconWrapper><IncorrectIcon color={'white'} size={11} /></IconWrapper>},\n ] : [],\n [\n {label: 'Unused', value: questionCount - mastery.total, filterKey: 'masteryLevel', filterValue: 'none', onClick: () => handleFilterChange({target: {value: 'none'}}), iconComponent: <MasteryTag level={'none'} squared />},\n {label: 'Learning', value: mastery.learning, filterKey: 'masteryLevel', filterValue: 'learning', onClick: () => handleFilterChange({target: {value: 'learning'}}), iconComponent: <MasteryTag level={'learning'} squared />},\n {label: 'Reviewing', value: mastery.reviewing, filterKey: 'masteryLevel', filterValue: 'reviewing', onClick: () => handleFilterChange({target: {value: 'reviewing'}}), iconComponent: <MasteryTag level={'reviewing'} squared />},\n {label: 'Mastered', value: mastery.mastered, filterKey: 'masteryLevel', filterValue: 'mastered', onClick: () => handleFilterChange({target: {value: 'mastered'}}), iconComponent: <MasteryTag level={'mastered'} squared />},\n {label: 'Bookmarked', value: bookmarked, filterKey: 'bookmarked', filterValue: true, onClick: () => handleFilterChange({target: {value: 'bookmarked'}}), iconComponent: <MasteryTag level={'marked'} squared />},\n ]\n ]\n const FilterOptionComponent = ({label, value, filterKey, filterValue, onClick, iconComponent}) => (!navigationFilter.key || navigationFilter.key === filterKey && navigationFilter.value === filterValue) ? (\n <FilterRow key={label} isVisible={!navigationFilter.key} isActive={navigationFilter.key === filterKey && navigationFilter.value === filterValue} onClick={onClick}>\n {iconComponent}\n <FilterText>{label}</FilterText>\n <FilterCount>{value}</FilterCount>\n </FilterRow>\n ) : null\n const ScoreFilterRowComponents = FilterRowOptions[0].map(FilterOptionComponent).filter(Boolean);\n const MasteryFilterRowComponents = FilterRowOptions[1].map(FilterOptionComponent).filter(Boolean);\n\n const progressCount = questions.filter(question => question.selectedAnswerIndex > -1 || question.answerState?.answerState).length;\n const trackingProgressOnly = (customTestConfig && !customTestConfig?.config?.tutorMode && !customTestConfig?.submitted)\n const progressProps = {\n showLabel: false,\n withMargin: false,\n total: template === 'coursePlayer' ? totalLessons : questionCount,\n segments: template === 'coursePlayer' ? [{\n count: completeLessons\n }] : trackingProgressOnly ? [{\n count: progressCount,\n color: themePalette.light,\n }] : [\n {count: mastery.mastered},\n {count: mastery.reviewing},\n {count: mastery.learning},\n ]\n }\n const urlParams = new URLSearchParams(window.location.search);\n const searchQuery = urlParams.get('searchQuery')\n\n return (\n <Container onClick={() => !openWithSettingsShowing && setSettingsToggled(false)}>\n <Section style={{paddingTop: '16px'}}>\n <ButtonsContainer style={{justifyContent: 'space-between'}}>\n {showExitButton &&\n <CloseButton\n onClick={template === 'coursePlayer' ? handleGoBack : () => {\n modalDispatch({\n type: 'open',\n component: SubmitAnatomyCase,\n enableClickClose: true,\n componentProps: exitProps,\n })\n }}\n type={'secondary'}\n size={'large'}\n children={<CloseIcon />}\n />\n }\n <ToggleSidebar showingSidebar={showingSidebar} onClick={() => setShowingSidebar(!showingSidebar)} right={right} />\n </ButtonsContainer>\n <TitleContainer>\n <Type>{parentTitle || titleConfig.type}</Type>\n <Title>{titleConfig.title}\n \n \n {!hide?.includes('questions') && !hideSettings &&\n
\n \n {template === 'coursePlayer' ? 'Lessons Completed' : trackingProgressOnly ? 'Questions Answered' : 'Questions Tagged'}\n \n \n \n \n \n {template === 'coursePlayer' ? `${completeLessons}/${totalLessons}` : trackingProgressOnly ? `${progressCount}/${questionCount}` : `${mastery.total}/${questionCount}`}\n \n {\n ['tbcQuestionBank', 'tbcSavedBank', 'masteryReview', 'bookmarkedQuestionReview', 'quickReview', 'customTest'].includes(template) && !['nclex'].includes(bootcamp) && !hide?.includes('questions') && (\n {\n toggleQuestionProgressShuffle();\n setCurrentIndex(1, 0);\n }}\n children={}\n />\n )\n }\n {\n event.stopPropagation();\n setSettingsToggled(!settingsToggled);\n }}>\n \n \n \n \n
\n }\n {!hideSettings &&\n e.stopPropagation()}>\n \n {bootcamp !== 'chemistry' &&\n \n }\n {(!hide.includes('timer') && template !== 'testReview') &&\n \n }\n {!hide.includes('shortcuts') &&\n \n }\n {template != 'coursePlayer' && bootcamp === 'nclex' &&\n \n }\n {template != 'coursePlayer' &&\n \n }\n {template === 'coursePlayer' &&\n \n }\n {!hide.includes('toggleDarkMode') &&\n \n }\n {!hide.includes('splitScreenSolutions') && !['mcat', 'nclex'].includes(bootcamp) &&\n \n }\n \n \n }\n\n {!hide?.includes('questions') &&\n
\n {template === 'coursePlayer'\n ? \n : 1 && bootcamp === 'med-school'\n ? 'Systems'\n : Object.keys(testSubjects).length === 1 && bootcamp === 'med-school'\n ? 'Subjects'\n : Object.keys(testSubjects).length > 1\n ? 'Subjects'\n : 'Topics'}\n />\n }\n {!visibleFilter && navigationFilter.key != 'blockFilter' &&\n
\n \n {\n const value = e.target.value;\n\n // if onSearch prop is passed, use that function to handle search\n if (typeof onSearch === 'function') {\n if (value.length >= 1) {\n urlParams.set('searchQuery', value);\n } else {\n urlParams.delete('searchQuery');\n }\n push({search: urlParams.toString()});\n onSearch(value);\n setNavigationFilter({ key: 'search', value });\n return;\n }\n\n if (value.length >= 1) {\n setNavigationFilter({ key: 'search', value });\n setVisibleFilter && setVisibleFilter();\n } else {\n setNavigationFilter({});\n }\n }} />\n {(navigationFilter.key == 'search' || searchQuery) &&\n {\n urlParams.delete('searchQuery');\n push({search: urlParams.toString()});\n setNavigationFilter({});\n onSearch && onSearch('');\n }}>\n \n \n }\n
\n }\n {visibleFilter === 'status' && [\n ScoreFilterRowComponents.length > 0 && ,\n MasteryFilterRowComponents.length > 0 && \n ]}\n {visibleFilter === 'category' && Object.keys(testSubjects).length > 1 &&\n \n \n {Object.entries(testSubjects).map(([subject, count]) => {\n const filterSubject = navigationFilter.key === 'subjectTopic' ? navigationFilter.value.split('##')[0] : navigationFilter.key === 'subject' ? navigationFilter.value : null;\n return (\n \n );\n })}\n \n }\n {(navigationFilter.key === 'subject' || navigationFilter.key === 'subjectTopic' || Object.keys(testSubjects).length === 1) && visibleFilter === 'category' &&\n \n \n {\n activeTopics\n ?.sort()\n ?.map(topic => {\n const filterTopic = navigationFilter.key === 'subjectTopic' ? navigationFilter.value.split('##')[1] : null;\n return (\n \n );\n })\n }\n \n }\n
\n }\n
\n );\n}\n\nTop.propTypes = {\n title: PropTypes.string\n};\nTop.defaultProps = {\n title: '',\n};\n\nexport default Top;\n","export const breakdown = {\n \"Biology Test #1\": {\n \"0\": 0,\n \"1\": 7,\n \"2\": 5,\n \"3\": 2,\n \"4\": 4,\n \"5\": 2,\n \"6\": 2,\n \"7\": 9,\n \"8\": 12,\n \"9\": 27,\n \"10\": 18,\n \"11\": 25,\n \"12\": 30,\n \"13\": 35,\n \"14\": 49,\n \"15\": 53,\n \"16\": 60,\n \"17\": 71,\n \"18\": 81,\n \"19\": 93,\n \"20\": 95,\n \"21\": 100,\n \"22\": 103,\n \"23\": 103,\n \"24\": 100,\n \"25\": 92,\n \"26\": 87,\n \"27\": 85,\n \"28\": 75,\n \"29\": 68,\n \"30\": 66,\n \"31\": 58,\n \"32\": 57,\n \"33\": 45,\n \"34\": 35,\n \"35\": 30,\n \"36\": 24,\n \"37\": 14,\n \"38\": 12,\n \"39\": 9,\n \"40\": 4,\n \"totalAttempts\": 1931,\n \"totalQuestions\": 40\n },\n \"Biology Test #2\": {\n \"0\": 0,\n \"1\": 7,\n \"2\": 5,\n \"3\": 2,\n \"4\": 4,\n \"5\": 2,\n \"6\": 2,\n \"7\": 9,\n \"8\": 12,\n \"9\": 27,\n \"10\": 18,\n \"11\": 32,\n \"12\": 47,\n \"13\": 47,\n \"14\": 53,\n \"15\": 60,\n \"16\": 77,\n \"17\": 88,\n \"18\": 91,\n \"19\": 86,\n \"20\": 98,\n \"21\": 100,\n \"22\": 103,\n \"23\": 103,\n \"24\": 109,\n \"25\": 92,\n \"26\": 87,\n \"27\": 85,\n \"28\": 82,\n \"29\": 68,\n \"30\": 66,\n \"31\": 58,\n \"32\": 55,\n \"33\": 50,\n \"34\": 42,\n \"35\": 37,\n \"36\": 24,\n \"37\": 14,\n \"38\": 12,\n \"39\": 10,\n \"40\": 6,\n \"totalAttempts\": 2077,\n \"totalQuestions\": 40\n },\n \"Biology Test #3\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 2,\n \"3\": 1,\n \"4\": 1,\n \"5\": 2,\n \"6\": 6,\n \"7\": 6,\n \"8\": 11,\n \"9\": 20,\n \"10\": 26,\n \"11\": 29,\n \"12\": 39,\n \"13\": 51,\n \"14\": 62,\n \"15\": 67,\n \"16\": 70,\n \"17\": 75,\n \"18\": 81,\n \"19\": 96,\n \"20\": 99,\n \"21\": 103,\n \"22\": 95,\n \"23\": 93,\n \"24\": 95,\n \"25\": 86,\n \"26\": 84,\n \"27\": 78,\n \"28\": 71,\n \"29\": 60,\n \"30\": 52,\n \"31\": 49,\n \"32\": 43,\n \"33\": 40,\n \"34\": 33,\n \"35\": 32,\n \"36\": 24,\n \"37\": 18,\n \"38\": 14,\n \"39\": 10,\n \"40\": 4,\n \"totalAttempts\": 1898,\n \"totalQuestions\": 40\n },\n \"Biology Test #4\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 1,\n \"3\": 1,\n \"4\": 1,\n \"5\": 2,\n \"6\": 1,\n \"7\": 2,\n \"8\": 6,\n \"9\": 13,\n \"10\": 14,\n \"11\": 18,\n \"12\": 30,\n \"13\": 35,\n \"14\": 45,\n \"15\": 48,\n \"16\": 61,\n \"17\": 65,\n \"18\": 68,\n \"19\": 78,\n \"20\": 90,\n \"21\": 83,\n \"22\": 98,\n \"23\": 92,\n \"24\": 86,\n \"25\": 105,\n \"26\": 93,\n \"27\": 88,\n \"28\": 75,\n \"29\": 65,\n \"30\": 60,\n \"31\": 58,\n \"32\": 42,\n \"33\": 33,\n \"34\": 32,\n \"35\": 26,\n \"36\": 23,\n \"37\": 19,\n \"38\": 11,\n \"39\": 6,\n \"40\": 4,\n \"totalAttempts\": 1717,\n \"totalQuestions\": 40\n },\n \"Biology Test #5\": {\n \"0\": 0,\n \"1\": 8,\n \"2\": 2,\n \"3\": 1,\n \"4\": 2,\n \"5\": 2,\n \"6\": 1,\n \"7\": 5,\n \"8\": 4,\n \"9\": 5,\n \"10\": 9,\n \"11\": 8,\n \"12\": 17,\n \"13\": 28,\n \"14\": 28,\n \"15\": 39,\n \"16\": 36,\n \"17\": 45,\n \"18\": 50,\n \"19\": 58,\n \"20\": 73,\n \"21\": 83,\n \"22\": 84,\n \"23\": 92,\n \"24\": 94,\n \"25\": 85,\n \"26\": 87,\n \"27\": 84,\n \"28\": 85,\n \"29\": 82,\n \"30\": 73,\n \"31\": 55,\n \"32\": 44,\n \"33\": 35,\n \"34\": 36,\n \"35\": 30,\n \"36\": 18,\n \"37\": 16,\n \"38\": 15,\n \"39\": 10,\n \"40\": 5,\n \"totalAttempts\": 1549,\n \"totalQuestions\": 40\n },\n \"Biology Test #6\": {\n \"0\": 0,\n \"1\": 3,\n \"2\": 3,\n \"3\": 4,\n \"4\": 1,\n \"5\": 5,\n \"6\": 2,\n \"7\": 1,\n \"8\": 3,\n \"9\": 6,\n \"10\": 5,\n \"11\": 7,\n \"12\": 15,\n \"13\": 24,\n \"14\": 26,\n \"15\": 36,\n \"16\": 38,\n \"17\": 43,\n \"18\": 47,\n \"19\": 48,\n \"20\": 48,\n \"21\": 51,\n \"22\": 52,\n \"23\": 57,\n \"24\": 56,\n \"25\": 50,\n \"26\": 48,\n \"27\": 49,\n \"28\": 44,\n \"29\": 41,\n \"30\": 33,\n \"31\": 32,\n \"32\": 30,\n \"33\": 26,\n \"34\": 24,\n \"35\": 20,\n \"36\": 17,\n \"37\": 14,\n \"38\": 12,\n \"39\": 9,\n \"40\": 4,\n \"totalAttempts\": 1132,\n \"totalQuestions\": 40\n },\n \"Biology Test #7\": {\n \"0\": 0,\n \"1\": 3,\n \"2\": 3,\n \"3\": 1,\n \"4\": 2,\n \"5\": 2,\n \"6\": 1,\n \"7\": 3,\n \"8\": 1,\n \"9\": 3,\n \"10\": 7,\n \"11\": 7,\n \"12\": 5,\n \"13\": 15,\n \"14\": 20,\n \"15\": 23,\n \"16\": 28,\n \"17\": 39,\n \"18\": 40,\n \"19\": 42,\n \"20\": 46,\n \"21\": 46,\n \"22\": 47,\n \"23\": 48,\n \"24\": 53,\n \"25\": 52,\n \"26\": 54,\n \"27\": 51,\n \"28\": 45,\n \"29\": 40,\n \"30\": 36,\n \"31\": 33,\n \"32\": 30,\n \"33\": 28,\n \"34\": 24,\n \"35\": 22,\n \"36\": 20,\n \"37\": 15,\n \"38\": 13,\n \"39\": 12,\n \"40\": 6,\n \"totalAttempts\": 1032,\n \"totalQuestions\": 40\n },\n \"Biology Test #8\": {\n \"0\": 0,\n \"1\": 4,\n \"2\": 4,\n \"3\": 3,\n \"4\": 1,\n \"5\": 3,\n \"6\": 1,\n \"7\": 4,\n \"8\": 4,\n \"9\": 2,\n \"10\": 6,\n \"11\": 11,\n \"12\": 17,\n \"13\": 18,\n \"14\": 19,\n \"15\": 22,\n \"16\": 27,\n \"17\": 31,\n \"18\": 37,\n \"19\": 39,\n \"20\": 43,\n \"21\": 43,\n \"22\": 44,\n \"23\": 45,\n \"24\": 46,\n \"25\": 52,\n \"26\": 50,\n \"27\": 48,\n \"28\": 45,\n \"29\": 39,\n \"30\": 33,\n \"31\": 30,\n \"32\": 31,\n \"33\": 26,\n \"34\": 23,\n \"35\": 22,\n \"36\": 20,\n \"37\": 15,\n \"38\": 13,\n \"39\": 10,\n \"40\": 7,\n \"totalAttempts\": 972,\n \"totalQuestions\": 40\n },\n \"Biology Test #9\": {\n \"0\": 0,\n \"1\": 3,\n \"2\": 2,\n \"3\": 1,\n \"4\": 1,\n \"5\": 4,\n \"6\": 1,\n \"7\": 3,\n \"8\": 1,\n \"9\": 2,\n \"10\": 2,\n \"11\": 8,\n \"12\": 7,\n \"13\": 9,\n \"14\": 17,\n \"15\": 22,\n \"16\": 25,\n \"17\": 23,\n \"18\": 26,\n \"19\": 32,\n \"20\": 34,\n \"21\": 36,\n \"22\": 38,\n \"23\": 46,\n \"24\": 48,\n \"25\": 50,\n \"26\": 52,\n \"27\": 45,\n \"28\": 42,\n \"29\": 40,\n \"30\": 39,\n \"31\": 34,\n \"32\": 33,\n \"33\": 26,\n \"34\": 22,\n \"35\": 20,\n \"36\": 19,\n \"37\": 15,\n \"38\": 14,\n \"39\": 11,\n \"40\": 3,\n \"totalAttempts\": 905,\n \"totalQuestions\": 40\n },\n \"Biology Test #10\": {\n \"0\": 0,\n \"1\": 4,\n \"2\": 4,\n \"3\": 1,\n \"4\": 2,\n \"5\": 3,\n \"6\": 1,\n \"7\": 5,\n \"8\": 5,\n \"9\": 5,\n \"10\": 7,\n \"11\": 10,\n \"12\": 10,\n \"13\": 14,\n \"14\": 19,\n \"15\": 20,\n \"16\": 22,\n \"17\": 29,\n \"18\": 34,\n \"19\": 37,\n \"20\": 39,\n \"21\": 42,\n \"22\": 40,\n \"23\": 43,\n \"24\": 41,\n \"25\": 39,\n \"26\": 37,\n \"27\": 36,\n \"28\": 33,\n \"29\": 32,\n \"30\": 31,\n \"31\": 30,\n \"32\": 26,\n \"33\": 21,\n \"34\": 15,\n \"35\": 13,\n \"36\": 11,\n \"37\": 10,\n \"38\": 10,\n \"39\": 7,\n \"40\": 6,\n \"totalAttempts\": 851,\n \"totalQuestions\": 40\n },\n \"General Chemistry Test #1\": {\n \"0\": 0,\n \"1\": 14,\n \"2\": 23,\n \"3\": 13,\n \"4\": 13,\n \"5\": 15,\n \"6\": 36,\n \"7\": 28,\n \"8\": 52,\n \"9\": 65,\n \"10\": 65,\n \"11\": 80,\n \"12\": 111,\n \"13\": 114,\n \"14\": 128,\n \"15\": 152,\n \"16\": 153,\n \"17\": 139,\n \"18\": 130,\n \"19\": 120,\n \"20\": 110,\n \"21\": 94,\n \"22\": 89,\n \"23\": 74,\n \"24\": 68,\n \"25\": 61,\n \"26\": 51,\n \"27\": 29,\n \"28\": 22,\n \"29\": 9,\n \"30\": 6,\n \"totalAttempts\": 2168,\n \"totalQuestions\": 30\n },\n \"General Chemistry Test #2\": {\n \"0\": 0,\n \"1\": 4,\n \"2\": 4,\n \"3\": 6,\n \"4\": 7,\n \"5\": 7,\n \"6\": 17,\n \"7\": 26,\n \"8\": 45,\n \"9\": 65,\n \"10\": 90,\n \"11\": 100,\n \"12\": 128,\n \"13\": 145,\n \"14\": 149,\n \"15\": 154,\n \"16\": 157,\n \"17\": 149,\n \"18\": 130,\n \"19\": 100,\n \"20\": 85,\n \"21\": 70,\n \"22\": 59,\n \"23\": 44,\n \"24\": 23,\n \"25\": 23,\n \"26\": 15,\n \"27\": 12,\n \"28\": 4,\n \"29\": 6,\n \"30\": 1,\n \"totalAttempts\": 1952,\n \"totalQuestions\": 30\n },\n \"General Chemistry Test #3\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 2,\n \"3\": 3,\n \"4\": 6,\n \"5\": 5,\n \"6\": 4,\n \"7\": 5,\n \"8\": 19,\n \"9\": 22,\n \"10\": 38,\n \"11\": 43,\n \"12\": 54,\n \"13\": 65,\n \"14\": 81,\n \"15\": 93,\n \"16\": 97,\n \"17\": 118,\n \"18\": 103,\n \"19\": 113,\n \"20\": 115,\n \"21\": 105,\n \"22\": 100,\n \"23\": 95,\n \"24\": 88,\n \"25\": 75,\n \"26\": 63,\n \"27\": 48,\n \"28\": 32,\n \"29\": 27,\n \"30\": 14,\n \"totalAttempts\": 1762,\n \"totalQuestions\": 30\n },\n \"General Chemistry Test #4\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 2,\n \"3\": 3,\n \"4\": 6,\n \"5\": 7,\n \"6\": 11,\n \"7\": 15,\n \"8\": 33,\n \"9\": 29,\n \"10\": 46,\n \"11\": 68,\n \"12\": 82,\n \"13\": 88,\n \"14\": 97,\n \"15\": 109,\n \"16\": 123,\n \"17\": 122,\n \"18\": 115,\n \"19\": 118,\n \"20\": 105,\n \"21\": 82,\n \"22\": 89,\n \"23\": 73,\n \"24\": 58,\n \"25\": 42,\n \"26\": 35,\n \"27\": 19,\n \"28\": 12,\n \"29\": 6,\n \"30\": 6,\n \"totalAttempts\": 1615,\n \"totalQuestions\": 30\n },\n \"General Chemistry Test #5\": {\n \"0\": 0,\n \"1\": 6,\n \"2\": 5,\n \"3\": 1,\n \"4\": 3,\n \"5\": 6,\n \"6\": 5,\n \"7\": 14,\n \"8\": 24,\n \"9\": 34,\n \"10\": 50,\n \"11\": 60,\n \"12\": 70,\n \"13\": 94,\n \"14\": 111,\n \"15\": 120,\n \"16\": 116,\n \"17\": 113,\n \"18\": 110,\n \"19\": 95,\n \"20\": 83,\n \"21\": 75,\n \"22\": 57,\n \"23\": 45,\n \"24\": 35,\n \"25\": 23,\n \"26\": 19,\n \"27\": 12,\n \"28\": 4,\n \"29\": 1,\n \"30\": 3,\n \"totalAttempts\": 1417,\n \"totalQuestions\": 30\n },\n \"General Chemistry Test #6\": {\n \"0\": 0,\n \"1\": 5,\n \"2\": 4,\n \"3\": 4,\n \"4\": 3,\n \"5\": 9,\n \"6\": 6,\n \"7\": 15,\n \"8\": 23,\n \"9\": 25,\n \"10\": 35,\n \"11\": 40,\n \"12\": 49,\n \"13\": 52,\n \"14\": 59,\n \"15\": 65,\n \"16\": 62,\n \"17\": 60,\n \"18\": 61,\n \"19\": 58,\n \"20\": 49,\n \"21\": 45,\n \"22\": 40,\n \"23\": 34,\n \"24\": 26,\n \"25\": 22,\n \"26\": 20,\n \"27\": 14,\n \"28\": 12,\n \"29\": 6,\n \"30\": 4,\n \"totalAttempts\": 925,\n \"totalQuestions\": 30\n },\n \"General Chemistry Test #7\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 1,\n \"3\": 2,\n \"4\": 8,\n \"5\": 2,\n \"6\": 4,\n \"7\": 3,\n \"8\": 7,\n \"9\": 10,\n \"10\": 18,\n \"11\": 19,\n \"12\": 22,\n \"13\": 25,\n \"14\": 35,\n \"15\": 40,\n \"16\": 45,\n \"17\": 46,\n \"18\": 48,\n \"19\": 53,\n \"20\": 51,\n \"21\": 48,\n \"22\": 46,\n \"23\": 44,\n \"24\": 35,\n \"25\": 33,\n \"26\": 25,\n \"27\": 22,\n \"28\": 14,\n \"29\": 10,\n \"30\": 6,\n \"totalAttempts\": 794,\n \"totalQuestions\": 30\n },\n \"General Chemistry Test #8\": {\n \"0\": 0,\n \"1\": 3,\n \"2\": 2,\n \"3\": 4,\n \"4\": 1,\n \"5\": 2,\n \"6\": 4,\n \"7\": 5,\n \"8\": 6,\n \"9\": 10,\n \"10\": 15,\n \"11\": 19,\n \"12\": 23,\n \"13\": 25,\n \"14\": 29,\n \"15\": 34,\n \"16\": 40,\n \"17\": 45,\n \"18\": 52,\n \"19\": 51,\n \"20\": 45,\n \"21\": 39,\n \"22\": 33,\n \"23\": 28,\n \"24\": 25,\n \"25\": 19,\n \"26\": 14,\n \"27\": 11,\n \"28\": 9,\n \"29\": 6,\n \"30\": 2,\n \"totalAttempts\": 697,\n \"totalQuestions\": 30\n },\n \"General Chemistry Test #9\": {\n \"0\": 0,\n \"1\": 4,\n \"2\": 1,\n \"3\": 3,\n \"4\": 1,\n \"5\": 5,\n \"6\": 4,\n \"7\": 11,\n \"8\": 9,\n \"9\": 14,\n \"10\": 18,\n \"11\": 21,\n \"12\": 25,\n \"13\": 27,\n \"14\": 33,\n \"15\": 37,\n \"16\": 45,\n \"17\": 46,\n \"18\": 43,\n \"19\": 40,\n \"20\": 35,\n \"21\": 30,\n \"22\": 26,\n \"23\": 24,\n \"24\": 20,\n \"25\": 16,\n \"26\": 14,\n \"27\": 12,\n \"28\": 10,\n \"29\": 7,\n \"30\": 3,\n \"totalAttempts\": 633,\n \"totalQuestions\": 30\n },\n \"General Chemistry Test #10\": {\n \"0\": 0,\n \"1\": 3,\n \"2\": 3,\n \"3\": 3,\n \"4\": 1,\n \"5\": 3,\n \"6\": 2,\n \"7\": 4,\n \"8\": 8,\n \"9\": 11,\n \"10\": 12,\n \"11\": 20,\n \"12\": 24,\n \"13\": 29,\n \"14\": 36,\n \"15\": 40,\n \"16\": 42,\n \"17\": 41,\n \"18\": 39,\n \"19\": 38,\n \"20\": 37,\n \"21\": 32,\n \"22\": 26,\n \"23\": 21,\n \"24\": 20,\n \"25\": 16,\n \"26\": 13,\n \"27\": 12,\n \"28\": 6,\n \"29\": 5,\n \"30\": 4,\n \"totalAttempts\": 576,\n \"totalQuestions\": 30\n },\n \"Organic Chemistry Test #1\": {\n \"0\": 0,\n \"1\": 15,\n \"2\": 10,\n \"3\": 11,\n \"4\": 9,\n \"5\": 17,\n \"6\": 31,\n \"7\": 38,\n \"8\": 56,\n \"9\": 60,\n \"10\": 66,\n \"11\": 83,\n \"12\": 95,\n \"13\": 122,\n \"14\": 126,\n \"15\": 134,\n \"16\": 132,\n \"17\": 146,\n \"18\": 126,\n \"19\": 117,\n \"20\": 102,\n \"21\": 102,\n \"22\": 85,\n \"23\": 75,\n \"24\": 63,\n \"25\": 59,\n \"26\": 53,\n \"27\": 31,\n \"28\": 21,\n \"29\": 11,\n \"30\": 6,\n \"totalAttempts\": 2039,\n \"totalQuestions\": 30\n },\n \"Organic Chemistry Test #2\": {\n \"0\": 0,\n \"1\": 8,\n \"2\": 6,\n \"3\": 2,\n \"4\": 10,\n \"5\": 15,\n \"6\": 26,\n \"7\": 36,\n \"8\": 45,\n \"9\": 58,\n \"10\": 65,\n \"11\": 79,\n \"12\": 98,\n \"13\": 110,\n \"14\": 121,\n \"15\": 124,\n \"16\": 115,\n \"17\": 127,\n \"18\": 110,\n \"19\": 105,\n \"20\": 92,\n \"21\": 86,\n \"22\": 76,\n \"23\": 62,\n \"24\": 50,\n \"25\": 40,\n \"26\": 33,\n \"27\": 15,\n \"28\": 13,\n \"29\": 8,\n \"30\": 2,\n \"totalAttempts\": 1849,\n \"totalQuestions\": 30\n },\n \"Organic Chemistry Test #3\": {\n \"0\": 0,\n \"1\": 6,\n \"2\": 3,\n \"3\": 7,\n \"4\": 5,\n \"5\": 12,\n \"6\": 16,\n \"7\": 27,\n \"8\": 41,\n \"9\": 51,\n \"10\": 75,\n \"11\": 94,\n \"12\": 88,\n \"13\": 107,\n \"14\": 118,\n \"15\": 124,\n \"16\": 117,\n \"17\": 125,\n \"18\": 121,\n \"19\": 107,\n \"20\": 93,\n \"21\": 72,\n \"22\": 54,\n \"23\": 47,\n \"24\": 48,\n \"25\": 25,\n \"26\": 16,\n \"27\": 11,\n \"28\": 9,\n \"29\": 1,\n \"30\": 1,\n \"totalAttempts\": 1668,\n \"totalQuestions\": 30\n },\n \"Organic Chemistry Test #4\": {\n \"0\": 0,\n \"1\": 5,\n \"2\": 1,\n \"3\": 1,\n \"4\": 4,\n \"5\": 6,\n \"6\": 12,\n \"7\": 17,\n \"8\": 18,\n \"9\": 24,\n \"10\": 26,\n \"11\": 42,\n \"12\": 49,\n \"13\": 46,\n \"14\": 60,\n \"15\": 82,\n \"16\": 79,\n \"17\": 87,\n \"18\": 91,\n \"19\": 93,\n \"20\": 100,\n \"21\": 95,\n \"22\": 90,\n \"23\": 76,\n \"24\": 70,\n \"25\": 61,\n \"26\": 51,\n \"27\": 40,\n \"28\": 30,\n \"29\": 17,\n \"30\": 6,\n \"totalAttempts\": 1521,\n \"totalQuestions\": 30\n },\n \"Organic Chemistry Test #5\": {\n \"0\": 0,\n \"1\": 3,\n \"2\": 2,\n \"3\": 3,\n \"4\": 6,\n \"5\": 12,\n \"6\": 15,\n \"7\": 25,\n \"8\": 30,\n \"9\": 45,\n \"10\": 51,\n \"11\": 58,\n \"12\": 62,\n \"13\": 76,\n \"14\": 82,\n \"15\": 83,\n \"16\": 89,\n \"17\": 99,\n \"18\": 86,\n \"19\": 79,\n \"20\": 84,\n \"21\": 75,\n \"22\": 63,\n \"23\": 58,\n \"24\": 38,\n \"25\": 22,\n \"26\": 16,\n \"27\": 12,\n \"28\": 6,\n \"29\": 4,\n \"30\": 1,\n \"totalAttempts\": 1318,\n \"totalQuestions\": 30\n },\n \"Organic Chemistry Test #6\": {\n \"0\": 0,\n \"1\": 7,\n \"2\": 2,\n \"3\": 2,\n \"4\": 1,\n \"5\": 2,\n \"6\": 3,\n \"7\": 9,\n \"8\": 8,\n \"9\": 15,\n \"10\": 23,\n \"11\": 21,\n \"12\": 29,\n \"13\": 34,\n \"14\": 38,\n \"15\": 50,\n \"16\": 47,\n \"17\": 55,\n \"18\": 58,\n \"19\": 54,\n \"20\": 53,\n \"21\": 50,\n \"22\": 48,\n \"23\": 44,\n \"24\": 37,\n \"25\": 33,\n \"26\": 25,\n \"27\": 14,\n \"28\": 10,\n \"29\": 6,\n \"30\": 3,\n \"totalAttempts\": 875,\n \"totalQuestions\": 30\n },\n \"Organic Chemistry Test #7\": {\n \"0\": 0,\n \"1\": 1,\n \"2\": 3,\n \"3\": 1,\n \"4\": 2,\n \"5\": 3,\n \"6\": 4,\n \"7\": 3,\n \"8\": 10,\n \"9\": 16,\n \"10\": 20,\n \"11\": 21,\n \"12\": 25,\n \"13\": 28,\n \"14\": 33,\n \"15\": 39,\n \"16\": 43,\n \"17\": 45,\n \"18\": 44,\n \"19\": 40,\n \"20\": 39,\n \"21\": 37,\n \"22\": 35,\n \"23\": 34,\n \"24\": 30,\n \"25\": 25,\n \"26\": 20,\n \"27\": 15,\n \"28\": 13,\n \"29\": 9,\n \"30\": 4,\n \"totalAttempts\": 747,\n \"totalQuestions\": 30\n },\n \"Organic Chemistry Test #8\": {\n \"0\": 0,\n \"1\": 1,\n \"2\": 2,\n \"3\": 2,\n \"4\": 4,\n \"5\": 2,\n \"6\": 3,\n \"7\": 9,\n \"8\": 12,\n \"9\": 15,\n \"10\": 20,\n \"11\": 28,\n \"12\": 32,\n \"13\": 34,\n \"14\": 37,\n \"15\": 39,\n \"16\": 42,\n \"17\": 44,\n \"18\": 43,\n \"19\": 45,\n \"20\": 41,\n \"21\": 33,\n \"22\": 30,\n \"23\": 23,\n \"24\": 20,\n \"25\": 16,\n \"26\": 14,\n \"27\": 11,\n \"28\": 8,\n \"29\": 5,\n \"30\": 4,\n \"totalAttempts\": 683,\n \"totalQuestions\": 30\n },\n \"Organic Chemistry Test #9\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 1,\n \"3\": 1,\n \"4\": 2,\n \"5\": 2,\n \"6\": 4,\n \"7\": 6,\n \"8\": 9,\n \"9\": 15,\n \"10\": 24,\n \"11\": 26,\n \"12\": 29,\n \"13\": 33,\n \"14\": 36,\n \"15\": 38,\n \"16\": 43,\n \"17\": 49,\n \"18\": 46,\n \"19\": 41,\n \"20\": 33,\n \"21\": 28,\n \"22\": 27,\n \"23\": 23,\n \"24\": 22,\n \"25\": 14,\n \"26\": 13,\n \"27\": 10,\n \"28\": 6,\n \"29\": 4,\n \"30\": 2,\n \"totalAttempts\": 626,\n \"totalQuestions\": 30\n },\n \"Organic Chemistry Test #10\": {\n \"0\": 0,\n \"1\": 5,\n \"2\": 3,\n \"3\": 1,\n \"4\": 2,\n \"5\": 2,\n \"6\": 4,\n \"7\": 6,\n \"8\": 7,\n \"9\": 11,\n \"10\": 12,\n \"11\": 13,\n \"12\": 17,\n \"13\": 24,\n \"14\": 26,\n \"15\": 28,\n \"16\": 33,\n \"17\": 35,\n \"18\": 34,\n \"19\": 36,\n \"20\": 37,\n \"21\": 33,\n \"22\": 30,\n \"23\": 26,\n \"24\": 22,\n \"25\": 20,\n \"26\": 17,\n \"27\": 14,\n \"28\": 11,\n \"29\": 7,\n \"30\": 3,\n \"totalAttempts\": 562,\n \"totalQuestions\": 30\n },\n \"Perceptual Ability Test #1\": {\n \"0\": 0,\n \"1\": 13,\n \"2\": 5,\n \"3\": 5,\n \"4\": 10,\n \"5\": 5,\n \"6\": 7,\n \"7\": 1,\n \"8\": 7,\n \"9\": 6,\n \"10\": 10,\n \"11\": 5,\n \"12\": 4,\n \"13\": 7,\n \"14\": 5,\n \"15\": 3,\n \"16\": 5,\n \"17\": 4,\n \"18\": 9,\n \"19\": 10,\n \"20\": 5,\n \"21\": 8,\n \"22\": 6,\n \"23\": 5,\n \"24\": 11,\n \"25\": 9,\n \"26\": 12,\n \"27\": 12,\n \"28\": 15,\n \"29\": 14,\n \"30\": 16,\n \"31\": 23,\n \"32\": 23,\n \"33\": 27,\n \"34\": 25,\n \"35\": 25,\n \"36\": 27,\n \"37\": 30,\n \"38\": 30,\n \"39\": 34,\n \"40\": 35,\n \"41\": 47,\n \"42\": 38,\n \"43\": 51,\n \"44\": 48,\n \"45\": 45,\n \"46\": 51,\n \"47\": 48,\n \"48\": 57,\n \"49\": 48,\n \"50\": 46,\n \"51\": 42,\n \"52\": 54,\n \"53\": 49,\n \"54\": 52,\n \"55\": 46,\n \"56\": 43,\n \"57\": 49,\n \"58\": 46,\n \"59\": 38,\n \"60\": 43,\n \"61\": 44,\n \"62\": 34,\n \"63\": 40,\n \"64\": 34,\n \"65\": 34,\n \"66\": 30,\n \"67\": 24,\n \"68\": 30,\n \"69\": 21,\n \"70\": 29,\n \"71\": 13,\n \"72\": 25,\n \"73\": 15,\n \"74\": 12,\n \"75\": 16,\n \"76\": 13,\n \"77\": 8,\n \"78\": 3,\n \"79\": 7,\n \"80\": 6,\n \"81\": 5,\n \"82\": 4,\n \"83\": 3,\n \"84\": 4,\n \"85\": 1,\n \"86\": 1,\n \"87\": 1,\n \"88\": 1,\n \"89\": 1,\n \"90\": 1,\n \"totalAttempts\": 1933,\n \"totalQuestions\": 90\n },\n \"Perceptual Ability Test #2\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 3,\n \"3\": 2,\n \"4\": 1,\n \"5\": 3,\n \"6\": 2,\n \"7\": 5,\n \"8\": 4,\n \"9\": 1,\n \"10\": 1,\n \"11\": 1,\n \"12\": 1,\n \"13\": 2,\n \"14\": 2,\n \"15\": 2,\n \"16\": 1,\n \"17\": 3,\n \"18\": 1,\n \"19\": 1,\n \"20\": 1,\n \"21\": 4,\n \"22\": 1,\n \"23\": 1,\n \"24\": 4,\n \"25\": 5,\n \"26\": 6,\n \"27\": 6,\n \"28\": 3,\n \"29\": 6,\n \"30\": 5,\n \"31\": 8,\n \"32\": 9,\n \"33\": 7,\n \"34\": 8,\n \"35\": 13,\n \"36\": 12,\n \"37\": 7,\n \"38\": 11,\n \"39\": 15,\n \"40\": 23,\n \"41\": 14,\n \"42\": 26,\n \"43\": 21,\n \"44\": 25,\n \"45\": 24,\n \"46\": 20,\n \"47\": 32,\n \"48\": 27,\n \"49\": 28,\n \"50\": 36,\n \"51\": 32,\n \"52\": 50,\n \"53\": 48,\n \"54\": 51,\n \"55\": 48,\n \"56\": 34,\n \"57\": 46,\n \"58\": 51,\n \"59\": 44,\n \"60\": 42,\n \"61\": 57,\n \"62\": 42,\n \"63\": 47,\n \"64\": 39,\n \"65\": 45,\n \"66\": 34,\n \"67\": 34,\n \"68\": 47,\n \"69\": 26,\n \"70\": 28,\n \"71\": 29,\n \"72\": 38,\n \"73\": 24,\n \"74\": 20,\n \"75\": 16,\n \"76\": 19,\n \"77\": 7,\n \"78\": 14,\n \"79\": 10,\n \"80\": 5,\n \"81\": 4,\n \"82\": 4,\n \"83\": 10,\n \"84\": 3,\n \"85\": 5,\n \"86\": 1,\n \"87\": 1,\n \"88\": 1,\n \"89\": 1,\n \"90\": 1,\n \"totalAttempts\": 1507,\n \"totalQuestions\": 90\n },\n \"Perceptual Ability Test #3\": {\n \"0\": 0,\n \"1\": 1,\n \"2\": 1,\n \"3\": 1,\n \"4\": 2,\n \"5\": 2,\n \"6\": 3,\n \"7\": 1,\n \"8\": 3,\n \"9\": 2,\n \"10\": 3,\n \"11\": 2,\n \"12\": 2,\n \"13\": 3,\n \"14\": 1,\n \"15\": 2,\n \"16\": 1,\n \"17\": 3,\n \"18\": 2,\n \"19\": 3,\n \"20\": 2,\n \"21\": 2,\n \"22\": 2,\n \"23\": 3,\n \"24\": 2,\n \"25\": 3,\n \"26\": 1,\n \"27\": 3,\n \"28\": 4,\n \"29\": 2,\n \"30\": 8,\n \"31\": 3,\n \"32\": 3,\n \"33\": 7,\n \"34\": 6,\n \"35\": 10,\n \"36\": 9,\n \"37\": 3,\n \"38\": 15,\n \"39\": 11,\n \"40\": 12,\n \"41\": 14,\n \"42\": 18,\n \"43\": 22,\n \"44\": 24,\n \"45\": 23,\n \"46\": 19,\n \"47\": 20,\n \"48\": 19,\n \"49\": 33,\n \"50\": 31,\n \"51\": 33,\n \"52\": 34,\n \"53\": 33,\n \"54\": 34,\n \"55\": 30,\n \"56\": 36,\n \"57\": 44,\n \"58\": 31,\n \"59\": 38,\n \"60\": 40,\n \"61\": 46,\n \"62\": 33,\n \"63\": 41,\n \"64\": 42,\n \"65\": 35,\n \"66\": 37,\n \"67\": 27,\n \"68\": 33,\n \"69\": 28,\n \"70\": 26,\n \"71\": 21,\n \"72\": 20,\n \"73\": 14,\n \"74\": 15,\n \"75\": 21,\n \"76\": 9,\n \"77\": 16,\n \"78\": 10,\n \"79\": 11,\n \"80\": 5,\n \"81\": 9,\n \"82\": 5,\n \"83\": 3,\n \"84\": 4,\n \"85\": 4,\n \"86\": 1,\n \"87\": 1,\n \"88\": 1,\n \"89\": 1,\n \"90\": 1,\n \"totalAttempts\": 1240,\n \"totalQuestions\": 90\n },\n \"Perceptual Ability Test #4\": {\n \"0\": 0,\n \"1\": 1,\n \"2\": 1,\n \"3\": 2,\n \"4\": 1,\n \"5\": 2,\n \"6\": 1,\n \"7\": 1,\n \"8\": 1,\n \"9\": 1,\n \"10\": 2,\n \"11\": 2,\n \"12\": 5,\n \"13\": 2,\n \"14\": 1,\n \"15\": 2,\n \"16\": 2,\n \"17\": 2,\n \"18\": 2,\n \"19\": 3,\n \"20\": 2,\n \"21\": 2,\n \"22\": 2,\n \"23\": 1,\n \"24\": 2,\n \"25\": 2,\n \"26\": 1,\n \"27\": 4,\n \"28\": 2,\n \"29\": 2,\n \"30\": 2,\n \"31\": 1,\n \"32\": 2,\n \"33\": 4,\n \"34\": 3,\n \"35\": 8,\n \"36\": 4,\n \"37\": 2,\n \"38\": 4,\n \"39\": 7,\n \"40\": 6,\n \"41\": 14,\n \"42\": 10,\n \"43\": 12,\n \"44\": 14,\n \"45\": 13,\n \"46\": 16,\n \"47\": 25,\n \"48\": 15,\n \"49\": 20,\n \"50\": 27,\n \"51\": 22,\n \"52\": 24,\n \"53\": 31,\n \"54\": 26,\n \"55\": 28,\n \"56\": 29,\n \"57\": 28,\n \"58\": 34,\n \"59\": 35,\n \"60\": 36,\n \"61\": 37,\n \"62\": 33,\n \"63\": 27,\n \"64\": 35,\n \"65\": 32,\n \"66\": 33,\n \"67\": 35,\n \"68\": 33,\n \"69\": 30,\n \"70\": 30,\n \"71\": 22,\n \"72\": 23,\n \"73\": 19,\n \"74\": 21,\n \"75\": 18,\n \"76\": 18,\n \"77\": 16,\n \"78\": 13,\n \"79\": 14,\n \"80\": 6,\n \"81\": 8,\n \"82\": 5,\n \"83\": 3,\n \"84\": 3,\n \"85\": 4,\n \"86\": 3,\n \"87\": 1,\n \"88\": 1,\n \"89\": 1,\n \"90\": 1,\n \"totalAttempts\": 1020,\n \"totalQuestions\": 90\n },\n \"Perceptual Ability Test #5\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 3,\n \"3\": 2,\n \"4\": 1,\n \"5\": 3,\n \"6\": 2,\n \"7\": 5,\n \"8\": 4,\n \"9\": 1,\n \"10\": 1,\n \"11\": 1,\n \"12\": 1,\n \"13\": 3,\n \"14\": 2,\n \"15\": 3,\n \"16\": 1,\n \"17\": 3,\n \"18\": 1,\n \"19\": 2,\n \"20\": 1,\n \"21\": 3,\n \"22\": 1,\n \"23\": 1,\n \"24\": 4,\n \"25\": 2,\n \"26\": 5,\n \"27\": 6,\n \"28\": 3,\n \"29\": 6,\n \"30\": 5,\n \"31\": 7,\n \"32\": 9,\n \"33\": 7,\n \"34\": 8,\n \"35\": 12,\n \"36\": 13,\n \"37\": 7,\n \"38\": 12,\n \"39\": 15,\n \"40\": 23,\n \"41\": 18,\n \"42\": 24,\n \"43\": 24,\n \"44\": 25,\n \"45\": 27,\n \"46\": 23,\n \"47\": 32,\n \"48\": 28,\n \"49\": 28,\n \"50\": 37,\n \"51\": 31,\n \"52\": 51,\n \"53\": 48,\n \"54\": 52,\n \"55\": 47,\n \"56\": 49,\n \"57\": 47,\n \"58\": 52,\n \"59\": 45,\n \"60\": 43,\n \"61\": 53,\n \"62\": 43,\n \"63\": 48,\n \"64\": 38,\n \"65\": 44,\n \"66\": 32,\n \"67\": 35,\n \"68\": 38,\n \"69\": 26,\n \"70\": 27,\n \"71\": 28,\n \"72\": 34,\n \"73\": 23,\n \"74\": 21,\n \"75\": 17,\n \"76\": 18,\n \"77\": 8,\n \"78\": 13,\n \"79\": 11,\n \"80\": 5,\n \"81\": 3,\n \"82\": 4,\n \"83\": 9,\n \"84\": 3,\n \"85\": 5,\n \"86\": 1,\n \"87\": 2,\n \"88\": 1,\n \"89\": 1,\n \"90\": 1,\n \"totalAttempts\": 1507,\n \"totalQuestions\": 90\n },\n \"Perceptual Ability Test #6\": {\n \"0\": 0,\n \"1\": 1,\n \"2\": 2,\n \"3\": 1,\n \"4\": 3,\n \"5\": 2,\n \"6\": 2,\n \"7\": 1,\n \"8\": 2,\n \"9\": 3,\n \"10\": 2,\n \"11\": 3,\n \"12\": 2,\n \"13\": 3,\n \"14\": 1,\n \"15\": 3,\n \"16\": 2,\n \"17\": 3,\n \"18\": 2,\n \"19\": 2,\n \"20\": 2,\n \"21\": 2,\n \"22\": 2,\n \"23\": 2,\n \"24\": 2,\n \"25\": 3,\n \"26\": 1,\n \"27\": 3,\n \"28\": 4,\n \"29\": 5,\n \"30\": 7,\n \"31\": 3,\n \"32\": 4,\n \"33\": 7,\n \"34\": 7,\n \"35\": 10,\n \"36\": 9,\n \"37\": 8,\n \"38\": 15,\n \"39\": 12,\n \"40\": 13,\n \"41\": 14,\n \"42\": 18,\n \"43\": 23,\n \"44\": 25,\n \"45\": 24,\n \"46\": 25,\n \"47\": 27,\n \"48\": 30,\n \"49\": 34,\n \"50\": 32,\n \"51\": 35,\n \"52\": 33,\n \"53\": 32,\n \"54\": 35,\n \"55\": 31,\n \"56\": 37,\n \"57\": 43,\n \"58\": 32,\n \"59\": 37,\n \"60\": 41,\n \"61\": 45,\n \"62\": 37,\n \"63\": 42,\n \"64\": 43,\n \"65\": 34,\n \"66\": 36,\n \"67\": 26,\n \"68\": 34,\n \"69\": 27,\n \"70\": 25,\n \"71\": 22,\n \"72\": 21,\n \"73\": 15,\n \"74\": 16,\n \"75\": 17,\n \"76\": 9,\n \"77\": 15,\n \"78\": 11,\n \"79\": 12,\n \"80\": 5,\n \"81\": 8,\n \"82\": 5,\n \"83\": 4,\n \"84\": 4,\n \"85\": 3,\n \"86\": 1,\n \"87\": 1,\n \"88\": 1,\n \"89\": 1,\n \"90\": 1,\n \"totalAttempts\": 1240,\n \"totalQuestions\": 90\n },\n \"Perceptual Ability Test #7\": {\n \"0\": 0,\n \"1\": 1,\n \"2\": 1,\n \"3\": 2,\n \"4\": 1,\n \"5\": 2,\n \"6\": 2,\n \"7\": 1,\n \"8\": 2,\n \"9\": 1,\n \"10\": 2,\n \"11\": 2,\n \"12\": 4,\n \"13\": 2,\n \"14\": 1,\n \"15\": 2,\n \"16\": 2,\n \"17\": 2,\n \"18\": 3,\n \"19\": 3,\n \"20\": 4,\n \"21\": 2,\n \"22\": 2,\n \"23\": 2,\n \"24\": 2,\n \"25\": 3,\n \"26\": 1,\n \"27\": 1,\n \"28\": 2,\n \"29\": 1,\n \"30\": 2,\n \"31\": 1,\n \"32\": 3,\n \"33\": 4,\n \"34\": 4,\n \"35\": 8,\n \"36\": 5,\n \"37\": 2,\n \"38\": 3,\n \"39\": 7,\n \"40\": 5,\n \"41\": 13,\n \"42\": 11,\n \"43\": 12,\n \"44\": 13,\n \"45\": 14,\n \"46\": 16,\n \"47\": 19,\n \"48\": 15,\n \"49\": 21,\n \"50\": 26,\n \"51\": 23,\n \"52\": 24,\n \"53\": 25,\n \"54\": 24,\n \"55\": 22,\n \"56\": 22,\n \"57\": 24,\n \"58\": 27,\n \"59\": 26,\n \"60\": 29,\n \"61\": 38,\n \"62\": 34,\n \"63\": 28,\n \"64\": 36,\n \"65\": 32,\n \"66\": 34,\n \"67\": 35,\n \"68\": 34,\n \"69\": 30,\n \"70\": 32,\n \"71\": 21,\n \"72\": 24,\n \"73\": 18,\n \"74\": 20,\n \"75\": 18,\n \"76\": 16,\n \"77\": 16,\n \"78\": 13,\n \"79\": 14,\n \"80\": 5,\n \"81\": 7,\n \"82\": 8,\n \"83\": 4,\n \"84\": 3,\n \"85\": 5,\n \"86\": 3,\n \"87\": 2,\n \"88\": 1,\n \"89\": 1,\n \"90\": 1,\n \"totalAttempts\": 1020,\n \"totalQuestions\": 90\n },\n \"Perceptual Ability Test #8\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 3,\n \"3\": 2,\n \"4\": 1,\n \"5\": 3,\n \"6\": 1,\n \"7\": 4,\n \"8\": 5,\n \"9\": 2,\n \"10\": 1,\n \"11\": 2,\n \"12\": 1,\n \"13\": 2,\n \"14\": 1,\n \"15\": 2,\n \"16\": 1,\n \"17\": 2,\n \"18\": 1,\n \"19\": 2,\n \"20\": 1,\n \"21\": 3,\n \"22\": 1,\n \"23\": 1,\n \"24\": 4,\n \"25\": 2,\n \"26\": 6,\n \"27\": 4,\n \"28\": 3,\n \"29\": 5,\n \"30\": 6,\n \"31\": 8,\n \"32\": 7,\n \"33\": 9,\n \"34\": 8,\n \"35\": 14,\n \"36\": 12,\n \"37\": 15,\n \"38\": 12,\n \"39\": 15,\n \"40\": 24,\n \"41\": 18,\n \"42\": 26,\n \"43\": 22,\n \"44\": 25,\n \"45\": 23,\n \"46\": 22,\n \"47\": 33,\n \"48\": 28,\n \"49\": 29,\n \"50\": 37,\n \"51\": 31,\n \"52\": 51,\n \"53\": 47,\n \"54\": 52,\n \"55\": 45,\n \"56\": 35,\n \"57\": 46,\n \"58\": 51,\n \"59\": 43,\n \"60\": 42,\n \"61\": 58,\n \"62\": 42,\n \"63\": 47,\n \"64\": 39,\n \"65\": 46,\n \"66\": 34,\n \"67\": 35,\n \"68\": 47,\n \"69\": 27,\n \"70\": 29,\n \"71\": 27,\n \"72\": 35,\n \"73\": 25,\n \"74\": 20,\n \"75\": 17,\n \"76\": 19,\n \"77\": 8,\n \"78\": 14,\n \"79\": 11,\n \"80\": 5,\n \"81\": 4,\n \"82\": 4,\n \"83\": 7,\n \"84\": 2,\n \"85\": 3,\n \"86\": 2,\n \"87\": 1,\n \"88\": 1,\n \"89\": 1,\n \"90\": 1,\n \"totalAttempts\": 1507,\n \"totalQuestions\": 90\n },\n \"Perceptual Ability Test #9\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 2,\n \"3\": 1,\n \"4\": 2,\n \"5\": 2,\n \"6\": 2,\n \"7\": 1,\n \"8\": 2,\n \"9\": 2,\n \"10\": 2,\n \"11\": 3,\n \"12\": 2,\n \"13\": 3,\n \"14\": 1,\n \"15\": 2,\n \"16\": 1,\n \"17\": 3,\n \"18\": 2,\n \"19\": 2,\n \"20\": 2,\n \"21\": 2,\n \"22\": 2,\n \"23\": 3,\n \"24\": 2,\n \"25\": 3,\n \"26\": 5,\n \"27\": 3,\n \"28\": 4,\n \"29\": 3,\n \"30\": 6,\n \"31\": 3,\n \"32\": 3,\n \"33\": 7,\n \"34\": 6,\n \"35\": 3,\n \"36\": 9,\n \"37\": 3,\n \"38\": 15,\n \"39\": 14,\n \"40\": 12,\n \"41\": 14,\n \"42\": 16,\n \"43\": 23,\n \"44\": 24,\n \"45\": 25,\n \"46\": 19,\n \"47\": 21,\n \"48\": 19,\n \"49\": 34,\n \"50\": 32,\n \"51\": 33,\n \"52\": 35,\n \"53\": 34,\n \"54\": 36,\n \"55\": 30,\n \"56\": 39,\n \"57\": 47,\n \"58\": 31,\n \"59\": 33,\n \"60\": 44,\n \"61\": 45,\n \"62\": 32,\n \"63\": 43,\n \"64\": 44,\n \"65\": 35,\n \"66\": 34,\n \"67\": 25,\n \"68\": 36,\n \"69\": 29,\n \"70\": 27,\n \"71\": 21,\n \"72\": 22,\n \"73\": 16,\n \"74\": 14,\n \"75\": 20,\n \"76\": 9,\n \"77\": 15,\n \"78\": 10,\n \"79\": 10,\n \"80\": 5,\n \"81\": 7,\n \"82\": 5,\n \"83\": 3,\n \"84\": 2,\n \"85\": 4,\n \"86\": 1,\n \"87\": 1,\n \"88\": 1,\n \"89\": 1,\n \"90\": 1,\n \"totalAttempts\": 1240,\n \"totalQuestions\": 90\n },\n \"Perceptual Ability Test #10\": {\n \"0\": 0,\n \"1\": 1,\n \"2\": 2,\n \"3\": 2,\n \"4\": 1,\n \"5\": 2,\n \"6\": 2,\n \"7\": 1,\n \"8\": 1,\n \"9\": 2,\n \"10\": 2,\n \"11\": 2,\n \"12\": 4,\n \"13\": 2,\n \"14\": 1,\n \"15\": 2,\n \"16\": 2,\n \"17\": 2,\n \"18\": 3,\n \"19\": 4,\n \"20\": 2,\n \"21\": 2,\n \"22\": 1,\n \"23\": 1,\n \"24\": 2,\n \"25\": 1,\n \"26\": 1,\n \"27\": 3,\n \"28\": 2,\n \"29\": 2,\n \"30\": 2,\n \"31\": 1,\n \"32\": 2,\n \"33\": 4,\n \"34\": 3,\n \"35\": 4,\n \"36\": 4,\n \"37\": 3,\n \"38\": 4,\n \"39\": 5,\n \"40\": 6,\n \"41\": 12,\n \"42\": 10,\n \"43\": 12,\n \"44\": 11,\n \"45\": 13,\n \"46\": 16,\n \"47\": 23,\n \"48\": 18,\n \"49\": 20,\n \"50\": 25,\n \"51\": 22,\n \"52\": 23,\n \"53\": 27,\n \"54\": 24,\n \"55\": 29,\n \"56\": 25,\n \"57\": 26,\n \"58\": 25,\n \"59\": 27,\n \"60\": 29,\n \"61\": 35,\n \"62\": 33,\n \"63\": 30,\n \"64\": 35,\n \"65\": 34,\n \"66\": 33,\n \"67\": 35,\n \"68\": 34,\n \"69\": 30,\n \"70\": 25,\n \"71\": 21,\n \"72\": 22,\n \"73\": 19,\n \"74\": 21,\n \"75\": 19,\n \"76\": 18,\n \"77\": 16,\n \"78\": 12,\n \"79\": 10,\n \"80\": 8,\n \"81\": 6,\n \"82\": 5,\n \"83\": 3,\n \"84\": 2,\n \"85\": 3,\n \"86\": 2,\n \"87\": 1,\n \"88\": 1,\n \"89\": 1,\n \"90\": 1,\n \"totalAttempts\": 1020,\n \"totalQuestions\": 90\n },\n \"Quantitative Reasoning Test #1\": {\n \"0\": 0,\n \"1\": 16,\n \"2\": 14,\n \"3\": 11,\n \"4\": 15,\n \"5\": 6,\n \"6\": 16,\n \"7\": 16,\n \"8\": 21,\n \"9\": 22,\n \"10\": 17,\n \"11\": 32,\n \"12\": 38,\n \"13\": 41,\n \"14\": 46,\n \"15\": 54,\n \"16\": 75,\n \"17\": 72,\n \"18\": 77,\n \"19\": 82,\n \"20\": 84,\n \"21\": 85,\n \"22\": 87,\n \"23\": 95,\n \"24\": 82,\n \"25\": 81,\n \"26\": 67,\n \"27\": 61,\n \"28\": 69,\n \"29\": 53,\n \"30\": 46,\n \"31\": 44,\n \"32\": 45,\n \"33\": 46,\n \"34\": 34,\n \"35\": 38,\n \"36\": 30,\n \"37\": 26,\n \"38\": 14,\n \"39\": 4,\n \"40\": 2,\n \"totalAttempts\": 1845,\n \"totalQuestions\": 40\n },\n \"Quantitative Reasoning Test #2\": {\n \"0\": 0,\n \"1\": 13,\n \"2\": 6,\n \"3\": 3,\n \"4\": 2,\n \"5\": 3,\n \"6\": 6,\n \"7\": 13,\n \"8\": 12,\n \"9\": 15,\n \"10\": 15,\n \"11\": 22,\n \"12\": 30,\n \"13\": 43,\n \"14\": 44,\n \"15\": 54,\n \"16\": 52,\n \"17\": 61,\n \"18\": 69,\n \"19\": 83,\n \"20\": 80,\n \"21\": 75,\n \"22\": 90,\n \"23\": 79,\n \"24\": 76,\n \"25\": 84,\n \"26\": 88,\n \"27\": 67,\n \"28\": 68,\n \"29\": 57,\n \"30\": 49,\n \"31\": 38,\n \"32\": 41,\n \"33\": 37,\n \"34\": 31,\n \"35\": 22,\n \"36\": 23,\n \"37\": 8,\n \"38\": 9,\n \"39\": 4,\n \"40\": 1,\n \"totalAttempts\": 1620,\n \"totalQuestions\": 40\n },\n \"Quantitative Reasoning Test #3\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 3,\n \"3\": 2,\n \"4\": 2,\n \"5\": 5,\n \"6\": 1,\n \"7\": 2,\n \"8\": 5,\n \"9\": 6,\n \"10\": 8,\n \"11\": 10,\n \"12\": 16,\n \"13\": 15,\n \"14\": 18,\n \"15\": 20,\n \"16\": 32,\n \"17\": 41,\n \"18\": 44,\n \"19\": 47,\n \"20\": 57,\n \"21\": 66,\n \"22\": 74,\n \"23\": 70,\n \"24\": 72,\n \"25\": 74,\n \"26\": 72,\n \"27\": 78,\n \"28\": 81,\n \"29\": 79,\n \"30\": 75,\n \"31\": 61,\n \"32\": 56,\n \"33\": 44,\n \"34\": 38,\n \"35\": 35,\n \"36\": 33,\n \"37\": 33,\n \"38\": 23,\n \"39\": 10,\n \"40\": 2,\n \"totalAttempts\": 1395,\n \"totalQuestions\": 40\n },\n \"Quantitative Reasoning Test #4\": {\n \"0\": 0,\n \"1\": 3,\n \"2\": 2,\n \"3\": 2,\n \"4\": 2,\n \"5\": 1,\n \"6\": 4,\n \"7\": 4,\n \"8\": 4,\n \"9\": 7,\n \"10\": 3,\n \"11\": 4,\n \"12\": 8,\n \"13\": 4,\n \"14\": 11,\n \"15\": 14,\n \"16\": 20,\n \"17\": 16,\n \"18\": 22,\n \"19\": 34,\n \"20\": 38,\n \"21\": 48,\n \"22\": 53,\n \"23\": 61,\n \"24\": 70,\n \"25\": 62,\n \"26\": 68,\n \"27\": 63,\n \"28\": 59,\n \"29\": 72,\n \"30\": 64,\n \"31\": 63,\n \"32\": 56,\n \"33\": 48,\n \"34\": 40,\n \"35\": 38,\n \"36\": 22,\n \"37\": 14,\n \"38\": 11,\n \"39\": 6,\n \"40\": 5,\n \"totalAttempts\": 1153,\n \"totalQuestions\": 40\n },\n \"Quantitative Reasoning Test #5\": {\n \"0\": 0,\n \"1\": 5,\n \"2\": 5,\n \"3\": 2,\n \"4\": 2,\n \"5\": 3,\n \"6\": 2,\n \"7\": 2,\n \"8\": 3,\n \"9\": 11,\n \"10\": 3,\n \"11\": 4,\n \"12\": 9,\n \"13\": 11,\n \"14\": 14,\n \"15\": 19,\n \"16\": 19,\n \"17\": 21,\n \"18\": 24,\n \"19\": 33,\n \"20\": 37,\n \"21\": 40,\n \"22\": 44,\n \"23\": 57,\n \"24\": 53,\n \"25\": 50,\n \"26\": 52,\n \"27\": 50,\n \"28\": 47,\n \"29\": 45,\n \"30\": 47,\n \"31\": 41,\n \"32\": 47,\n \"33\": 40,\n \"34\": 32,\n \"35\": 30,\n \"36\": 20,\n \"37\": 14,\n \"38\": 14,\n \"39\": 3,\n \"40\": 1,\n \"totalAttempts\": 987,\n \"totalQuestions\": 40\n },\n \"Quantitative Reasoning Test #6\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 1,\n \"3\": 2,\n \"4\": 2,\n \"5\": 2,\n \"6\": 2,\n \"7\": 1,\n \"8\": 2,\n \"9\": 3,\n \"10\": 2,\n \"11\": 2,\n \"12\": 5,\n \"13\": 4,\n \"14\": 7,\n \"15\": 9,\n \"16\": 15,\n \"17\": 19,\n \"18\": 24,\n \"19\": 27,\n \"20\": 23,\n \"21\": 28,\n \"22\": 27,\n \"23\": 30,\n \"24\": 29,\n \"25\": 32,\n \"26\": 34,\n \"27\": 32,\n \"28\": 27,\n \"29\": 24,\n \"30\": 22,\n \"31\": 20,\n \"32\": 21,\n \"33\": 18,\n \"34\": 12,\n \"35\": 10,\n \"36\": 7,\n \"37\": 8,\n \"38\": 4,\n \"39\": 5,\n \"40\": 2,\n \"totalAttempts\": 579,\n \"totalQuestions\": 40\n },\n \"Quantitative Reasoning Test #7\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 1,\n \"3\": 1,\n \"4\": 2,\n \"5\": 1,\n \"6\": 3,\n \"7\": 1,\n \"8\": 2,\n \"9\": 2,\n \"10\": 2,\n \"11\": 3,\n \"12\": 1,\n \"13\": 4,\n \"14\": 7,\n \"15\": 6,\n \"16\": 8,\n \"17\": 11,\n \"18\": 13,\n \"19\": 16,\n \"20\": 20,\n \"21\": 19,\n \"22\": 22,\n \"23\": 25,\n \"24\": 20,\n \"25\": 24,\n \"26\": 25,\n \"27\": 26,\n \"28\": 28,\n \"29\": 22,\n \"30\": 19,\n \"31\": 23,\n \"32\": 20,\n \"33\": 22,\n \"34\": 19,\n \"35\": 17,\n \"36\": 12,\n \"37\": 11,\n \"38\": 9,\n \"39\": 5,\n \"40\": 2,\n \"totalAttempts\": 482,\n \"totalQuestions\": 40\n },\n \"Quantitative Reasoning Test #8\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 3,\n \"3\": 1,\n \"4\": 2,\n \"5\": 1,\n \"6\": 1,\n \"7\": 4,\n \"8\": 2,\n \"9\": 2,\n \"10\": 1,\n \"11\": 2,\n \"12\": 2,\n \"13\": 1,\n \"14\": 3,\n \"15\": 3,\n \"16\": 4,\n \"17\": 3,\n \"18\": 5,\n \"19\": 7,\n \"20\": 7,\n \"21\": 11,\n \"22\": 11,\n \"23\": 13,\n \"24\": 12,\n \"25\": 15,\n \"26\": 18,\n \"27\": 21,\n \"28\": 26,\n \"29\": 21,\n \"30\": 24,\n \"31\": 26,\n \"32\": 25,\n \"33\": 23,\n \"34\": 21,\n \"35\": 18,\n \"36\": 12,\n \"37\": 10,\n \"38\": 9,\n \"39\": 3,\n \"40\": 2,\n \"totalAttempts\": 405,\n \"totalQuestions\": 40\n },\n \"Quantitative Reasoning Test #9\": {\n \"0\": 0,\n \"1\": 3,\n \"2\": 2,\n \"3\": 2,\n \"4\": 3,\n \"5\": 2,\n \"6\": 2,\n \"7\": 3,\n \"8\": 1,\n \"9\": 1,\n \"10\": 5,\n \"11\": 4,\n \"12\": 8,\n \"13\": 7,\n \"14\": 8,\n \"15\": 9,\n \"16\": 14,\n \"17\": 16,\n \"18\": 17,\n \"19\": 15,\n \"20\": 18,\n \"21\": 17,\n \"22\": 19,\n \"23\": 22,\n \"24\": 20,\n \"25\": 19,\n \"26\": 21,\n \"27\": 18,\n \"28\": 18,\n \"29\": 15,\n \"30\": 14,\n \"31\": 13,\n \"32\": 12,\n \"33\": 10,\n \"34\": 9,\n \"35\": 7,\n \"36\": 6,\n \"37\": 5,\n \"38\": 3,\n \"39\": 2,\n \"40\": 1,\n \"totalAttempts\": 382,\n \"totalQuestions\": 40\n },\n \"Quantitative Reasoning Test #10\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 3,\n \"3\": 4,\n \"4\": 1,\n \"5\": 1,\n \"6\": 1,\n \"7\": 2,\n \"8\": 2,\n \"9\": 1,\n \"10\": 3,\n \"11\": 4,\n \"12\": 5,\n \"13\": 4,\n \"14\": 5,\n \"15\": 7,\n \"16\": 8,\n \"17\": 9,\n \"18\": 11,\n \"19\": 15,\n \"20\": 12,\n \"21\": 13,\n \"22\": 17,\n \"23\": 18,\n \"24\": 17,\n \"25\": 19,\n \"26\": 21,\n \"27\": 18,\n \"28\": 16,\n \"29\": 18,\n \"30\": 14,\n \"31\": 13,\n \"32\": 12,\n \"33\": 10,\n \"34\": 7,\n \"35\": 8,\n \"36\": 6,\n \"37\": 5,\n \"38\": 4,\n \"39\": 2,\n \"40\": 1,\n \"totalAttempts\": 376,\n \"totalQuestions\": 40\n },\n \"Physics Test #1\": {\n \"0\": 0,\n \"1\": 16,\n \"2\": 14,\n \"3\": 11,\n \"4\": 15,\n \"5\": 6,\n \"6\": 16,\n \"7\": 16,\n \"8\": 21,\n \"9\": 22,\n \"10\": 17,\n \"11\": 32,\n \"12\": 38,\n \"13\": 41,\n \"14\": 46,\n \"15\": 54,\n \"16\": 75,\n \"17\": 72,\n \"18\": 77,\n \"19\": 82,\n \"20\": 84,\n \"21\": 85,\n \"22\": 87,\n \"23\": 95,\n \"24\": 82,\n \"25\": 81,\n \"26\": 67,\n \"27\": 61,\n \"28\": 69,\n \"29\": 53,\n \"30\": 46,\n \"31\": 44,\n \"32\": 45,\n \"33\": 46,\n \"34\": 34,\n \"35\": 38,\n \"36\": 30,\n \"37\": 26,\n \"38\": 14,\n \"39\": 4,\n \"40\": 2,\n \"totalAttempts\": 1845,\n \"totalQuestions\": 40\n },\n \"Physics Test #2\": {\n \"0\": 0,\n \"1\": 13,\n \"2\": 6,\n \"3\": 3,\n \"4\": 2,\n \"5\": 3,\n \"6\": 6,\n \"7\": 13,\n \"8\": 12,\n \"9\": 15,\n \"10\": 15,\n \"11\": 22,\n \"12\": 30,\n \"13\": 43,\n \"14\": 44,\n \"15\": 54,\n \"16\": 52,\n \"17\": 61,\n \"18\": 69,\n \"19\": 83,\n \"20\": 80,\n \"21\": 75,\n \"22\": 90,\n \"23\": 79,\n \"24\": 76,\n \"25\": 84,\n \"26\": 88,\n \"27\": 67,\n \"28\": 68,\n \"29\": 57,\n \"30\": 49,\n \"31\": 38,\n \"32\": 41,\n \"33\": 37,\n \"34\": 31,\n \"35\": 22,\n \"36\": 23,\n \"37\": 8,\n \"38\": 9,\n \"39\": 4,\n \"40\": 1,\n \"totalAttempts\": 1620,\n \"totalQuestions\": 40\n },\n \"Physics Test #3\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 3,\n \"3\": 2,\n \"4\": 2,\n \"5\": 5,\n \"6\": 1,\n \"7\": 2,\n \"8\": 5,\n \"9\": 6,\n \"10\": 8,\n \"11\": 10,\n \"12\": 16,\n \"13\": 15,\n \"14\": 18,\n \"15\": 20,\n \"16\": 32,\n \"17\": 41,\n \"18\": 44,\n \"19\": 47,\n \"20\": 57,\n \"21\": 66,\n \"22\": 74,\n \"23\": 70,\n \"24\": 72,\n \"25\": 74,\n \"26\": 72,\n \"27\": 78,\n \"28\": 81,\n \"29\": 79,\n \"30\": 75,\n \"31\": 61,\n \"32\": 56,\n \"33\": 44,\n \"34\": 38,\n \"35\": 35,\n \"36\": 33,\n \"37\": 33,\n \"38\": 23,\n \"39\": 10,\n \"40\": 2,\n \"totalAttempts\": 1395,\n \"totalQuestions\": 40\n },\n \"Physics Test #4\": {\n \"0\": 0,\n \"1\": 3,\n \"2\": 2,\n \"3\": 2,\n \"4\": 2,\n \"5\": 1,\n \"6\": 4,\n \"7\": 4,\n \"8\": 4,\n \"9\": 7,\n \"10\": 3,\n \"11\": 4,\n \"12\": 8,\n \"13\": 4,\n \"14\": 11,\n \"15\": 14,\n \"16\": 20,\n \"17\": 16,\n \"18\": 22,\n \"19\": 34,\n \"20\": 38,\n \"21\": 48,\n \"22\": 53,\n \"23\": 61,\n \"24\": 70,\n \"25\": 62,\n \"26\": 68,\n \"27\": 63,\n \"28\": 59,\n \"29\": 72,\n \"30\": 64,\n \"31\": 63,\n \"32\": 56,\n \"33\": 48,\n \"34\": 40,\n \"35\": 38,\n \"36\": 22,\n \"37\": 14,\n \"38\": 11,\n \"39\": 6,\n \"40\": 5,\n \"totalAttempts\": 1153,\n \"totalQuestions\": 40\n },\n \"Physics Test #5\": {\n \"0\": 0,\n \"1\": 5,\n \"2\": 5,\n \"3\": 2,\n \"4\": 2,\n \"5\": 3,\n \"6\": 2,\n \"7\": 2,\n \"8\": 3,\n \"9\": 11,\n \"10\": 3,\n \"11\": 4,\n \"12\": 9,\n \"13\": 11,\n \"14\": 14,\n \"15\": 19,\n \"16\": 19,\n \"17\": 21,\n \"18\": 24,\n \"19\": 33,\n \"20\": 37,\n \"21\": 40,\n \"22\": 44,\n \"23\": 57,\n \"24\": 53,\n \"25\": 50,\n \"26\": 52,\n \"27\": 50,\n \"28\": 47,\n \"29\": 45,\n \"30\": 47,\n \"31\": 41,\n \"32\": 47,\n \"33\": 40,\n \"34\": 32,\n \"35\": 30,\n \"36\": 20,\n \"37\": 14,\n \"38\": 14,\n \"39\": 3,\n \"40\": 1,\n \"totalAttempts\": 987,\n \"totalQuestions\": 40\n },\n \"Physics Test #6\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 1,\n \"3\": 2,\n \"4\": 2,\n \"5\": 2,\n \"6\": 2,\n \"7\": 1,\n \"8\": 2,\n \"9\": 3,\n \"10\": 2,\n \"11\": 2,\n \"12\": 5,\n \"13\": 4,\n \"14\": 7,\n \"15\": 9,\n \"16\": 15,\n \"17\": 19,\n \"18\": 24,\n \"19\": 27,\n \"20\": 23,\n \"21\": 28,\n \"22\": 27,\n \"23\": 30,\n \"24\": 29,\n \"25\": 32,\n \"26\": 34,\n \"27\": 32,\n \"28\": 27,\n \"29\": 24,\n \"30\": 22,\n \"31\": 20,\n \"32\": 21,\n \"33\": 18,\n \"34\": 12,\n \"35\": 10,\n \"36\": 7,\n \"37\": 8,\n \"38\": 4,\n \"39\": 5,\n \"40\": 2,\n \"totalAttempts\": 579,\n \"totalQuestions\": 40\n },\n \"Physics Test #7\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 1,\n \"3\": 1,\n \"4\": 2,\n \"5\": 1,\n \"6\": 3,\n \"7\": 1,\n \"8\": 2,\n \"9\": 2,\n \"10\": 2,\n \"11\": 3,\n \"12\": 1,\n \"13\": 4,\n \"14\": 7,\n \"15\": 6,\n \"16\": 8,\n \"17\": 11,\n \"18\": 13,\n \"19\": 16,\n \"20\": 20,\n \"21\": 19,\n \"22\": 22,\n \"23\": 25,\n \"24\": 20,\n \"25\": 24,\n \"26\": 25,\n \"27\": 26,\n \"28\": 28,\n \"29\": 22,\n \"30\": 19,\n \"31\": 23,\n \"32\": 20,\n \"33\": 22,\n \"34\": 19,\n \"35\": 17,\n \"36\": 12,\n \"37\": 11,\n \"38\": 9,\n \"39\": 5,\n \"40\": 2,\n \"totalAttempts\": 482,\n \"totalQuestions\": 40\n },\n \"Physics Test #8\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 3,\n \"3\": 1,\n \"4\": 2,\n \"5\": 1,\n \"6\": 1,\n \"7\": 4,\n \"8\": 2,\n \"9\": 2,\n \"10\": 1,\n \"11\": 2,\n \"12\": 2,\n \"13\": 1,\n \"14\": 3,\n \"15\": 3,\n \"16\": 4,\n \"17\": 3,\n \"18\": 5,\n \"19\": 7,\n \"20\": 7,\n \"21\": 11,\n \"22\": 11,\n \"23\": 13,\n \"24\": 12,\n \"25\": 15,\n \"26\": 18,\n \"27\": 21,\n \"28\": 26,\n \"29\": 21,\n \"30\": 24,\n \"31\": 26,\n \"32\": 25,\n \"33\": 23,\n \"34\": 21,\n \"35\": 18,\n \"36\": 12,\n \"37\": 10,\n \"38\": 9,\n \"39\": 3,\n \"40\": 2,\n \"totalAttempts\": 405,\n \"totalQuestions\": 40\n },\n \"Physics Test #9\": {\n \"0\": 0,\n \"1\": 3,\n \"2\": 2,\n \"3\": 2,\n \"4\": 3,\n \"5\": 2,\n \"6\": 2,\n \"7\": 3,\n \"8\": 1,\n \"9\": 1,\n \"10\": 5,\n \"11\": 4,\n \"12\": 8,\n \"13\": 7,\n \"14\": 8,\n \"15\": 9,\n \"16\": 14,\n \"17\": 16,\n \"18\": 17,\n \"19\": 15,\n \"20\": 18,\n \"21\": 17,\n \"22\": 19,\n \"23\": 22,\n \"24\": 20,\n \"25\": 19,\n \"26\": 21,\n \"27\": 18,\n \"28\": 18,\n \"29\": 15,\n \"30\": 14,\n \"31\": 13,\n \"32\": 12,\n \"33\": 10,\n \"34\": 9,\n \"35\": 7,\n \"36\": 6,\n \"37\": 5,\n \"38\": 3,\n \"39\": 2,\n \"40\": 1,\n \"totalAttempts\": 382,\n \"totalQuestions\": 40\n },\n \"Physics Test #10\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 3,\n \"3\": 4,\n \"4\": 1,\n \"5\": 1,\n \"6\": 1,\n \"7\": 2,\n \"8\": 2,\n \"9\": 1,\n \"10\": 3,\n \"11\": 4,\n \"12\": 5,\n \"13\": 4,\n \"14\": 5,\n \"15\": 7,\n \"16\": 8,\n \"17\": 9,\n \"18\": 11,\n \"19\": 15,\n \"20\": 12,\n \"21\": 13,\n \"22\": 17,\n \"23\": 18,\n \"24\": 17,\n \"25\": 19,\n \"26\": 21,\n \"27\": 18,\n \"28\": 16,\n \"29\": 18,\n \"30\": 14,\n \"31\": 13,\n \"32\": 12,\n \"33\": 10,\n \"34\": 7,\n \"35\": 8,\n \"36\": 6,\n \"37\": 5,\n \"38\": 4,\n \"39\": 2,\n \"40\": 1,\n \"totalAttempts\": 376,\n \"totalQuestions\": 40\n },\n \"Reading Comprehension Test #1\": {\n \"0\": 0,\n \"1\": 10,\n \"2\": 4,\n \"3\": 4,\n \"4\": 9,\n \"5\": 15,\n \"6\": 14,\n \"7\": 17,\n \"8\": 16,\n \"9\": 19,\n \"10\": 23,\n \"11\": 20,\n \"12\": 28,\n \"13\": 26,\n \"14\": 29,\n \"15\": 27,\n \"16\": 20,\n \"17\": 17,\n \"18\": 21,\n \"19\": 20,\n \"20\": 23,\n \"21\": 35,\n \"22\": 34,\n \"23\": 38,\n \"24\": 66,\n \"25\": 66,\n \"26\": 70,\n \"27\": 84,\n \"28\": 106,\n \"29\": 104,\n \"30\": 115,\n \"31\": 114,\n \"32\": 125,\n \"33\": 136,\n \"34\": 164,\n \"35\": 158,\n \"36\": 169,\n \"37\": 166,\n \"38\": 157,\n \"39\": 184,\n \"40\": 163,\n \"41\": 161,\n \"42\": 176,\n \"43\": 168,\n \"44\": 132,\n \"45\": 147,\n \"46\": 91,\n \"47\": 85,\n \"48\": 50,\n \"49\": 28,\n \"50\": 6,\n \"totalAttempts\": 3688,\n \"totalQuestions\": 50\n },\n \"Reading Comprehension Test #2\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 5,\n \"3\": 3,\n \"4\": 3,\n \"5\": 3,\n \"6\": 3,\n \"7\": 2,\n \"8\": 5,\n \"9\": 5,\n \"10\": 4,\n \"11\": 7,\n \"12\": 8,\n \"13\": 19,\n \"14\": 14,\n \"15\": 17,\n \"16\": 18,\n \"17\": 15,\n \"18\": 25,\n \"19\": 27,\n \"20\": 41,\n \"21\": 44,\n \"22\": 49,\n \"23\": 48,\n \"24\": 52,\n \"25\": 54,\n \"26\": 69,\n \"27\": 67,\n \"28\": 89,\n \"29\": 81,\n \"30\": 77,\n \"31\": 97,\n \"32\": 120,\n \"33\": 105,\n \"34\": 100,\n \"35\": 122,\n \"36\": 124,\n \"37\": 118,\n \"38\": 128,\n \"39\": 132,\n \"40\": 106,\n \"41\": 98,\n \"42\": 90,\n \"43\": 87,\n \"44\": 68,\n \"45\": 60,\n \"46\": 42,\n \"47\": 31,\n \"48\": 22,\n \"49\": 10,\n \"50\": 2,\n \"totalAttempts\": 2522,\n \"totalQuestions\": 50\n },\n \"Reading Comprehension Test #3\": {\n \"0\": 0,\n \"1\": 5,\n \"2\": 2,\n \"3\": 2,\n \"4\": 2,\n \"5\": 2,\n \"6\": 3,\n \"7\": 2,\n \"8\": 2,\n \"9\": 2,\n \"10\": 10,\n \"11\": 4,\n \"12\": 10,\n \"13\": 7,\n \"14\": 5,\n \"15\": 6,\n \"16\": 10,\n \"17\": 7,\n \"18\": 7,\n \"19\": 14,\n \"20\": 10,\n \"21\": 16,\n \"22\": 19,\n \"23\": 30,\n \"24\": 29,\n \"25\": 26,\n \"26\": 43,\n \"27\": 35,\n \"28\": 45,\n \"29\": 53,\n \"30\": 74,\n \"31\": 71,\n \"32\": 74,\n \"33\": 88,\n \"34\": 85,\n \"35\": 112,\n \"36\": 120,\n \"37\": 123,\n \"38\": 118,\n \"39\": 102,\n \"40\": 110,\n \"41\": 102,\n \"42\": 83,\n \"43\": 78,\n \"44\": 59,\n \"45\": 57,\n \"46\": 46,\n \"47\": 23,\n \"48\": 15,\n \"49\": 9,\n \"50\": 1,\n \"totalAttempts\": 1983,\n \"totalQuestions\": 50\n },\n \"Reading Comprehension Test #4\": {\n \"0\": 0,\n \"1\": 3,\n \"2\": 1,\n \"3\": 2,\n \"4\": 3,\n \"5\": 4,\n \"6\": 7,\n \"7\": 2,\n \"8\": 2,\n \"9\": 8,\n \"10\": 2,\n \"11\": 3,\n \"12\": 12,\n \"13\": 6,\n \"14\": 10,\n \"15\": 3,\n \"16\": 9,\n \"17\": 10,\n \"18\": 10,\n \"19\": 11,\n \"20\": 10,\n \"21\": 20,\n \"22\": 18,\n \"23\": 30,\n \"24\": 31,\n \"25\": 33,\n \"26\": 35,\n \"27\": 43,\n \"28\": 46,\n \"29\": 49,\n \"30\": 50,\n \"31\": 62,\n \"32\": 70,\n \"33\": 79,\n \"34\": 94,\n \"35\": 84,\n \"36\": 82,\n \"37\": 77,\n \"38\": 74,\n \"39\": 81,\n \"40\": 75,\n \"41\": 67,\n \"42\": 72,\n \"43\": 56,\n \"44\": 43,\n \"45\": 27,\n \"46\": 20,\n \"47\": 7,\n \"48\": 3,\n \"49\": 1,\n \"50\": 1,\n \"totalAttempts\": 1563,\n \"totalQuestions\": 50\n },\n \"Reading Comprehension Test #5\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 2,\n \"3\": 2,\n \"4\": 2,\n \"5\": 1,\n \"6\": 1,\n \"7\": 2,\n \"8\": 1,\n \"9\": 1,\n \"10\": 1,\n \"11\": 4,\n \"12\": 2,\n \"13\": 1,\n \"14\": 3,\n \"15\": 4,\n \"16\": 3,\n \"17\": 2,\n \"18\": 1,\n \"19\": 2,\n \"20\": 4,\n \"21\": 3,\n \"22\": 3,\n \"23\": 8,\n \"24\": 7,\n \"25\": 7,\n \"26\": 10,\n \"27\": 14,\n \"28\": 8,\n \"29\": 16,\n \"30\": 14,\n \"31\": 23,\n \"32\": 27,\n \"33\": 33,\n \"34\": 43,\n \"35\": 53,\n \"36\": 58,\n \"37\": 72,\n \"38\": 67,\n \"39\": 68,\n \"40\": 78,\n \"41\": 89,\n \"42\": 92,\n \"43\": 73,\n \"44\": 68,\n \"45\": 58,\n \"46\": 55,\n \"47\": 36,\n \"48\": 20,\n \"49\": 10,\n \"50\": 6,\n \"totalAttempts\": 1177,\n \"totalQuestions\": 50\n },\n \"Reading Comprehension Test #6\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 6,\n \"3\": 4,\n \"4\": 3,\n \"5\": 2,\n \"6\": 3,\n \"7\": 2,\n \"8\": 4,\n \"9\": 5,\n \"10\": 5,\n \"11\": 7,\n \"12\": 9,\n \"13\": 16,\n \"14\": 15,\n \"15\": 17,\n \"16\": 19,\n \"17\": 15,\n \"18\": 24,\n \"19\": 26,\n \"20\": 43,\n \"21\": 45,\n \"22\": 51,\n \"23\": 48,\n \"24\": 52,\n \"25\": 55,\n \"26\": 72,\n \"27\": 76,\n \"28\": 65,\n \"29\": 75,\n \"30\": 77,\n \"31\": 96,\n \"32\": 115,\n \"33\": 100,\n \"34\": 105,\n \"35\": 120,\n \"36\": 120,\n \"37\": 102,\n \"38\": 125,\n \"39\": 130,\n \"40\": 107,\n \"41\": 99,\n \"42\": 90,\n \"43\": 86,\n \"44\": 68,\n \"45\": 62,\n \"46\": 41,\n \"47\": 31,\n \"48\": 26,\n \"49\": 11,\n \"50\": 5,\n \"totalAttempts\": 2522,\n \"totalQuestions\": 50\n },\n \"Reading Comprehension Test #7\": {\n \"0\": 0,\n \"1\": 5,\n \"2\": 2,\n \"3\": 2,\n \"4\": 2,\n \"5\": 3,\n \"6\": 3,\n \"7\": 5,\n \"8\": 2,\n \"9\": 3,\n \"10\": 7,\n \"11\": 5,\n \"12\": 10,\n \"13\": 4,\n \"14\": 5,\n \"15\": 7,\n \"16\": 11,\n \"17\": 7,\n \"18\": 9,\n \"19\": 14,\n \"20\": 12,\n \"21\": 17,\n \"22\": 18,\n \"23\": 31,\n \"24\": 28,\n \"25\": 25,\n \"26\": 44,\n \"27\": 37,\n \"28\": 44,\n \"29\": 52,\n \"30\": 76,\n \"31\": 72,\n \"32\": 73,\n \"33\": 87,\n \"34\": 84,\n \"35\": 113,\n \"36\": 121,\n \"37\": 126,\n \"38\": 112,\n \"39\": 101,\n \"40\": 113,\n \"41\": 100,\n \"42\": 82,\n \"43\": 78,\n \"44\": 62,\n \"45\": 40,\n \"46\": 43,\n \"47\": 20,\n \"48\": 12,\n \"49\": 9,\n \"50\": 1,\n \"totalAttempts\": 1983,\n \"totalQuestions\": 50\n },\n \"Reading Comprehension Test #8\": {\n \"0\": 0,\n \"1\": 12,\n \"2\": 4,\n \"3\": 5,\n \"4\": 10,\n \"5\": 14,\n \"6\": 17,\n \"7\": 15,\n \"8\": 17,\n \"9\": 18,\n \"10\": 24,\n \"11\": 21,\n \"12\": 26,\n \"13\": 25,\n \"14\": 27,\n \"15\": 28,\n \"16\": 23,\n \"17\": 18,\n \"18\": 23,\n \"19\": 22,\n \"20\": 24,\n \"21\": 36,\n \"22\": 34,\n \"23\": 39,\n \"24\": 69,\n \"25\": 67,\n \"26\": 71,\n \"27\": 89,\n \"28\": 105,\n \"29\": 104,\n \"30\": 115,\n \"31\": 114,\n \"32\": 123,\n \"33\": 135,\n \"34\": 164,\n \"35\": 155,\n \"36\": 168,\n \"37\": 165,\n \"38\": 159,\n \"39\": 183,\n \"40\": 161,\n \"41\": 161,\n \"42\": 174,\n \"43\": 167,\n \"44\": 133,\n \"45\": 146,\n \"46\": 91,\n \"47\": 82,\n \"48\": 25,\n \"49\": 12,\n \"50\": 6,\n \"totalAttempts\": 3688,\n \"totalQuestions\": 50\n },\n \"Reading Comprehension Test #9\": {\n \"0\": 0,\n \"1\": 3,\n \"2\": 1,\n \"3\": 3,\n \"4\": 3,\n \"5\": 4,\n \"6\": 7,\n \"7\": 5,\n \"8\": 2,\n \"9\": 9,\n \"10\": 2,\n \"11\": 4,\n \"12\": 11,\n \"13\": 7,\n \"14\": 11,\n \"15\": 5,\n \"16\": 7,\n \"17\": 11,\n \"18\": 10,\n \"19\": 12,\n \"20\": 11,\n \"21\": 21,\n \"22\": 10,\n \"23\": 30,\n \"24\": 31,\n \"25\": 32,\n \"26\": 35,\n \"27\": 45,\n \"28\": 46,\n \"29\": 49,\n \"30\": 50,\n \"31\": 62,\n \"32\": 73,\n \"33\": 79,\n \"34\": 94,\n \"35\": 84,\n \"36\": 83,\n \"37\": 78,\n \"38\": 76,\n \"39\": 82,\n \"40\": 92,\n \"41\": 69,\n \"42\": 73,\n \"43\": 58,\n \"44\": 44,\n \"45\": 28,\n \"46\": 22,\n \"47\": 8,\n \"48\": 5,\n \"49\": 1,\n \"50\": 2,\n \"totalAttempts\": 1563,\n \"totalQuestions\": 50\n },\n \"Reading Comprehension Test #10\": {\n \"0\": 0,\n \"1\": 2,\n \"2\": 2,\n \"3\": 2,\n \"4\": 2,\n \"5\": 1,\n \"6\": 2,\n \"7\": 2,\n \"8\": 2,\n \"9\": 1,\n \"10\": 2,\n \"11\": 5,\n \"12\": 2,\n \"13\": 1,\n \"14\": 2,\n \"15\": 4,\n \"16\": 2,\n \"17\": 2,\n \"18\": 1,\n \"19\": 2,\n \"20\": 5,\n \"21\": 3,\n \"22\": 4,\n \"23\": 8,\n \"24\": 7,\n \"25\": 9,\n \"26\": 11,\n \"27\": 15,\n \"28\": 14,\n \"29\": 17,\n \"30\": 16,\n \"31\": 24,\n \"32\": 28,\n \"33\": 31,\n \"34\": 41,\n \"35\": 51,\n \"36\": 55,\n \"37\": 60,\n \"38\": 66,\n \"39\": 69,\n \"40\": 77,\n \"41\": 89,\n \"42\": 91,\n \"43\": 72,\n \"44\": 67,\n \"45\": 56,\n \"46\": 50,\n \"47\": 36,\n \"48\": 22,\n \"49\": 12,\n \"50\": 6,\n \"totalAttempts\": 1177,\n \"totalQuestions\": 50\n }\n};","import React, {useRef} from 'react';\nimport {breakdown} from './data/datScoringBreakdown';\nimport {Bar} from 'react-chartjs-2';\n\nimport Chart from 'chart.js/auto';\nimport styled from 'styled-components';\n\nimport theme from '@bootcamp/shared/src/styles/theme';\nimport {Label2} from '../Typography/next';\n\n\nconst BarContainer = styled.div`\n position: relative;\n background: ${({theme}) => theme.darkModeEnabled ? 'transparent' : 'white'};\n height: 320px;\n padding-top: 32px;\n`;\nconst YourScore = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n top: 0;\n right: 0;\n `;\nconst Swath = styled.div`\n width: 8px;\n height: 8px;\n background: ${({theme}) => theme.colors.brandPalette.blue.default};\n margin-right: 4px;\n `;\nconst SwathText = styled(Label2)`\n color: ${({theme}) => theme.colors.brandPalette.blue.default};\n font-weight: 700;\n`;\n\nfunction getAdjustedName(name) {\n try {\n const testNumber = name.match(/#(.*)/)[1];\n const adjustedName = parseInt(testNumber) > 10\n ? name.replace(`#${testNumber}`, `#10`)\n : name;\n\n return adjustedName;\n } catch (error) {\n return name;\n }\n}\n\nconst ScoreDistributionChart = ({name, options, score}) => {\n const ref = useRef(null);\n\n // NOTE the breakdown is pulling from our DAT data only - do we want to create a separate breakdown for OAT?\n // also right now physics is using the same breakdowns as Qantitative reasoning eg. Quantitative Reasoning Test #1 === Physics Test #1\n // Calculate frequencies\n const adjustedName = getAdjustedName(name);\n let {totalAttempts, totalQuestions, ...frequencies} = breakdown[adjustedName] || {};\n\n const scores = Object\n .entries(frequencies)\n const summedAttempts = scores.reduce((acc, curr) => acc + curr[1], 0);\n\n const filledScores = scores\n .reduce((acc, [score, occurance]) => {\n return [...acc, ...Array(occurance).fill(score)];\n }, [])\n\n let labels = Object.keys(frequencies).sort((a, b) => a - b);\n let frequencyData = labels.map(label => frequencies[label] / summedAttempts);\n\n // Calculate mean and standard deviation\n let mean = Object.entries(frequencies).reduce((acc, [score, occurance]) => acc + (score * occurance), 0) / summedAttempts;\n let stdDev = Math.sqrt(filledScores.map(x => Math.pow(x - mean, 2)).reduce((acc, val) => acc + val, 0) / filledScores.length);\n\n // Normal Distribution Data Calculation\n const calculateNormalDistribution = () => {\n // let min = mean - 3 * stdDev;\n // let max = mean + 3 * stdDev;\n\n let min = 0\n let max = scores.length;\n\n let step = (max - min) / scores.length; // Adjust the step based on your data density\n\n let normalDistribution = [];\n for (let x = min; x <= max; x += step) {\n let pdfValue = (1 / (stdDev * Math.sqrt(2 * Math.PI))) * Math.exp(-0.5 * Math.pow((x - mean) / stdDev, 2));\n normalDistribution.push(pdfValue);\n }\n\n return normalDistribution;\n };\n\n const backgroundColors = labels.map((value, index) => {\n if (parseInt(value) === parseInt(score)) {\n return theme.colors.brandPalette.blue.default;\n } else {\n return 'rgba(59, 130, 246, 0.2)';\n }\n });\n\n const hoverBackgroundColors = labels.map((value, index) => {\n if (parseInt(value) === parseInt(score)) {\n return theme.colors.brandPalette.blue.default;\n } else {\n return `${theme.colors.brandPalette.blue.default}99`;\n }\n });\n\n const borderColors = labels.map((value, index) => {\n if (parseInt(value) === parseInt(score)) {\n return theme.colors.brandPalette.blue.default;\n } else {\n return 'transparent';\n }\n });\n\n\n const borderWidths = labels.map((value, index) => {\n return 1;\n });\n\n const xMax = labels.length - 0.5;\n\n\n const data = {\n labels,\n datasets: [\n {\n label: 'Frequency',\n data: frequencyData,\n borderWidth: borderWidths,\n type: 'bar',\n backgroundColor: backgroundColors,\n hoverBackgroundColor: hoverBackgroundColors,\n borderColor: borderColors,\n order: 1,\n },\n {\n label: 'Normal Distribution',\n data: calculateNormalDistribution(),\n pointRadius: 0,\n type: 'line',\n fill: false,\n borderColor: 'rgba(59, 130, 246, 0.5)',\n tension: 0.1,\n order: 1,\n },\n {\n label: '', // handling this manually for better positioning,\n data: [],\n type: 'line',\n fill: false,\n backgroundColor: theme.colors.interfacePalette.green.default,\n borderWidth: 0,\n tension: 0.1\n }\n ]\n };\n\n\n return (\n \n ({\n ...dataset,\n data: dataset.data.map(value => value * 100),\n }))\n }}\n options={{\n maintainAspectRatio: false,\n plugins: {\n legend: {\n display: true,\n position: 'top',\n align: 'end',\n onClick: () => {},\n labels: {\n filter: (legendItem) => legendItem.text === 'Your Correct / Total',\n borderWidth: 0,\n drawBorder: false,\n font: {\n family: 'proxima-nova',\n size: 12\n }\n }\n },\n tooltip: {\n callbacks: {\n title: context => {\n return `${context?.[0]?.label} / ${totalQuestions}`;\n },\n label: context => {\n return context.dataset.label + ': ' + context.parsed.y.toFixed(2) + '%';\n },\n footer: context => {\n return context[0].parsed.x === score ? 'Your Correct / Total' : '';\n }\n }\n }\n },\n scales: {\n y: {\n beginAtZero: true,\n title: {\n display: true,\n text: 'Frequency',\n font: {\n family: 'proxima-nova',\n size: 12\n }\n },\n border: {\n display: false,\n dash: [2, 2],\n },\n grid: {\n tickBorderDash: [2, 2],\n tickBorderDashOffset: 0,\n color: function(context) {\n if (context.tick.value === 0) {\n return 'transparent'; // Hide gridline for value 0\n }\n return 'rgba(0, 0, 0, 0.1)'; // Color for other grid lines\n }\n },\n // border: {\n // display: false,\n // },\n ticks: {\n callback: function (value, index, values) {\n return value % 2 === 0 ? value + '%' : '';\n }\n }\n },\n x: {\n offset: false,\n max: xMax,\n title: {\n display: true,\n text: 'Correct / Total',\n font: {\n family: 'proxima-nova',\n fontSize: '13px',\n fontWeight: 400,\n lineHeight: '13px',\n textAlign: 'center',\n }\n },\n border: {\n display: false,\n },\n grid: {\n display: false, // Hide the gridlines on the x-axis\n },\n type: 'linear',\n ticks: {\n stepSize: 5,\n callback: function (value, index, values) {\n return value === xMax ? value - 0.5 : value;\n }\n },\n point: {\n radius: 0,\n }\n },\n },\n // barPercentage: 1,\n // categoryPercentage: 1\n }}\n />\n \n \n You\n \n \n );\n}\n\nexport default ScoreDistributionChart;\n","import React, {useEffect, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {Column, Row} from '../Grid';\nimport {GutterColumn} from '../Spacing';\nimport PieChart from '../PieChart';\nimport moment from 'moment';\nimport firstBy from 'thenby';\nimport {Body3, H1, H2, H3} from '@bootcamp/web/src/components/Typography';\nimport {getInObj} from '@bootcamp/shared/src/util';\nimport styled, {css} from 'styled-components';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {useTestNavigatorContext} from '@bootcamp/web/src/contexts/TestNavigator';\nimport ProgressBar from '@bootcamp/web/src/components/ProgressBar';\nimport {TextTooltip} from '@bootcamp/web/src/bootcamps/pages/CreateTest/components/shared';\nimport {FilterSelector} from '../QBank/SidebarTop';\nimport {Blurb} from '@bootcamp/web/src/bootcamps/components/Performance/shared'\nimport baseTheme from '@bootcamp/shared/src/styles/theme';\n\nimport {getResults, getOATResults, aggregateByTopic, aggregateByOATSection, aggregateBySection, getAcademicAverage, getOATAcademicAverage, scoreResult} from '@bootcamp/shared/src/util/scoring';\nimport ScoreDistributionChart from '@bootcamp/web/src/components/Charts/ScoreDistribution';\n\nconst ScoreComparisonSubjectSelector = styled(FilterSelector)`\n width: auto;\n min-width: auto;\n margin: 0px 0px 0px 8px;\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n`;\n\nfunction getFullLengthAnalysis(educator, testTitle, statistics, correct, total) {\n const academicAverage = getAcademicAverage(testTitle, statistics);\n\n return (\n \n Based on your results, I'd estimate an AA score of {academicAverage}. Don't focus too much on the estimate - instead, continue to review your areas of knowledge.\n \n }\n />\n );\n}\n\nfunction getAnalysis(educator, testTitle, statistics, correct, total) {\n const testSubject = testTitle.match(/([^#]+)( Test)/)?.[1] || 'Full Length';\n const percentage = (correct / total) * 100;\n const {score, analysis} = getResults(percentage, testTitle, testSubject);\n\n return (\n \n {analysis}

\n Based on your results, I'd estimate a DAT {testSubject} score of {score}. Don't focus too much on the estimate - instead, continue to review your areas of knowledge.\n \n }\n />\n )\n}\n\nfunction getOATAnalysis(educator, testTitle, statistics, correct, total) {\n const testSubject = testTitle.match(/([^#]+)( Test)/)[1];\n const percentage = (correct / total) * 100;\n const score = getOATResults(percentage, testTitle, testSubject);\n return (\n \n Based on your results, I'd estimate an OAT {testSubject} score of {score}. Don't focus too much on the estimate - instead, continue to review your areas of knowledge.\n \n }\n />\n )\n}\n\nfunction getOATFullLengthAnalysis(educator, testTitle, statistics, correct, total) {\n const analysis = `Keep your head up! Review these solutions carefully and learn from your mistakes. I'm confident you'll bring this score up with hard work and practice.`;\n const academicAverage = getOATAcademicAverage(testTitle, statistics);\n\n return (\n \n {analysis}

\n Based on your results, I'd estimate an OAT score of {academicAverage}. Don't focus too much on the estimate - instead, continue to review your areas of knowledge.\n \n }\n />\n );\n}\n\nfunction getSnsChartData(bio, gc, oc) {\n const bioTime = getInObj(['result', 0, 'questions'], bio, []).reduce((acc, {time}) => acc + parseFloat(time), 0);\n const gcTime = getInObj(['result', 0, 'questions'], gc, []).reduce((acc, {time}) => acc + parseFloat(time), 0);\n const ocTime = getInObj(['result', 0, 'questions'], oc, []).reduce((acc, {time}) => acc + parseFloat(time), 0);\n\n return [\n ['Subject', 'Time'],\n [`Biology ${moment.utc(bioTime * 1000).format('HH:mm:ss')}`, bioTime],\n [`General Chemistry ${moment.utc(gcTime * 1000).format('HH:mm:ss')}`, gcTime],\n [`Organic Chemistry ${moment.utc(ocTime * 1000).format('HH:mm:ss')}`, ocTime]\n ]\n}\n\nfunction getTopicChartData(statistics) {\n return [\n ['Time Spent', 'Topic'],\n ...statistics.map(({name, timeSpent}) => [`${name} ${moment.utc(timeSpent * 1000).format('HH:mm:ss')}`, timeSpent])\n ];\n}\n\nconst Educator = ({name, imgUrl}) => (\n \n \n \n Feedback from {name}\n \n \n);\n\nconst Metric = ([name, metric], index) => (\n \n {metric}\n {name}\n \n);\n\nconst StatRow = ({statistic, index, onClick}) => {\n const {name, timeSpent, timePerQuestion, total, correct, learning, reviewing, mastered} = statistic;\n const highlight = (parseInt(correct) / parseInt(total)) <= 0.5;\n\n const rowProps = onClick ? {onClick} : {};\n\n return (\n \n \n \n {name}\n \n \n {moment.utc(timeSpent * 1000).format('HH:mm:ss')}\n
{Math.round((correct / total) * 100)}% {}
\n {moment.utc(timePerQuestion * 1000).format('HH:mm:ss')}\n
\n );\n};\n\nconst ScoreReportContainer = styled.div`\n font-family: Arial, Helvetica Neue, sans-serif;\n width: 100%;\n max-width: 864px;\n margin: 0 auto 24px;\n padding: 32px;\n font-weight: 400;\n font-size: 16px;\n line-height: 21px;\n border: 1px solid ${({theme}) => theme.colors.borderPalette.primary};\n box-shadow: 0px 1px 4px 0px #0000001A;\n background: white;\n\n`;\nconst TableCell = styled(Row)`\n word-break: break-word;\n`\n\nconst HalfRow = styled(Row)`\n width: 50%;\n`\n\nconst BoldCell = styled(TableCell)`\n width: 130px;\n min-width: 130px;\n font-weight: 700;\n`\n\nconst ScoreReportSection = styled.div`\n margin-bottom: 24px;\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-wrap: wrap;\n }\n`;\nconst ScoreHeader = styled(Row)`\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n }\n`\nconst ScoreHeaderCell = styled(HalfRow)`\n margin-bottom: 8px;\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n width: 100%;\n }\n`\nconst ScoreColumn = styled.div`\n text-align: center;\n`;\n\nfunction getTotalScienceScore(topicScores) {\n try {\n const avgScore = Math.round((parseInt(topicScores[0].score) + parseInt(topicScores[1].score) + parseInt(topicScores[2].score)) / 3);\n\n return Math.round(avgScore / 10) * 10;\n\n } catch (error) {\n return 'N/A';\n }\n}\n\nexport const OfficialScoreReport = ({\n username,\n dateTaken,\n topicScores,\n academicAverage,\n bootcamp,\n}) => {\n\n return (\n \n
\n {bootcamp === 'oat' ? 'Optometry' : 'Dental'} Admission Test
\n Unofficial Score Report\n
\n \n \n \n Name:\n {username}\n \n \n Testing Center:\n {bootcamp?.toUpperCase()} Bootcamp\n \n \n \n \n {bootcamp === 'dat' ? 'DENTPIN®:' : 'ID#:'}\n ******\n \n \n Date:\n {moment(dateTaken).format(\"dddd, MMMM Do\")}\n \n \n \n \n \n
\n {bootcamp === 'oat' ? 'OPTOMOETRY' : 'DENTAL'} ADMISSION TESTING PROGRAM
\n EXAMINEE'S REPORT OF UNOFFICIAL SCORES\n
\n
\n \n {bootcamp === 'dat'\n ?
\n American Dental Association
\n Department of Testing Services
\n 211 East Chicago Avenue
\n Chicago, Illinois 60611-2637\n
\n :
\n 800-232-1694
\n oatexam@ada.org\n
}\n
\n
\n {bootcamp === 'dat' &&\n \n Important Score Reporting Information: Please note, your scores will not be sent to any school(s) you selected on your DAT application or to AADSAS and/or TMDSAS until your scores are officially posted to your My Account. Reporting generally takes 2-3 weeks from your exam date, but can take up to 4 weeks.\n }\n {bootcamp === 'dat' &&\n \n Exam Retake: If you decide to retake the exam, you will not be able to submit a new DAT application until your scores are officially posted to your My Account.\n }\n \n {bootcamp === 'dat'\n ? <>\n \n
\n
\n Perceptual Ability
\n Quantitative Reasoning
\n Reading Comprehension
\n Biology
\n General Chemistry
\n Organic Chemistry
\n Total Science
\n Academic Average\n
\n
\n \n \n Standard Score
\n {topicScores[3].score}
\n {topicScores[5].score}
\n {topicScores[4].score}
\n {topicScores[0].score}
\n {topicScores[1].score}
\n {topicScores[2].score}
\n {getTotalScienceScore(topicScores)}
\n {academicAverage}\n
\n
\n \n : <>\n \n
\n
\n Quantitative Reasoning
\n Reading Comprehension
\n Biology
\n General Chemistry
\n Organic Chemistry
\n Physics
\n Total Science
\n Academic Average\n
\n
\n \n \n Standard Score
\n {topicScores[5].score}
\n {topicScores[3].score}
\n {topicScores[0].score}
\n {topicScores[1].score}
\n {topicScores[2].score}
\n {topicScores[4].score}
\n {Math.round((parseInt(topicScores[0].score) + parseInt(topicScores[1].score) + parseInt(topicScores[2].score) + parseInt(topicScores[4].score)) / 4)}
\n {academicAverage}\n
\n
\n \n }\n
\n {bootcamp === 'dat'\n ? <>\n \n Standard scores used in the testing program range from 1 to 30. Only the standard scores are reported to the dental schools. Through the use of standard scores, it is possible to compare the performance of examinees taking different editions of the Dental Admission Test.\n \n \n The Academic Average is the average of five scores rounded to the nearest whole number: Quantitative Reasoning, Reading Comprehension, Biology, General Chemistry, and Organic Chemistry.\n \n
\n The Total Science score is a standard score based on all 100 questions in the Biology, General Chemistry, and Organic Chemistry tests. It is not the average of the three science scores.\n
\n \n : <>\n \n Standard scores used in the testing program range from 200 to 400. Only the standard scores are reported to the optometry schools. Through the use of standard scores, it is possible to compare the performance of examinees taking different editions of the Optometry Admission Test.\n \n \n The Academic Average is the average of six scores rounded to the nearest ten: Quantitative Reasoning, Reading Comprehension, Physics, Biology, General Chemistry, and Organic Chemistry.\n \n
\n The Total Science score is a standard score based on all 140 questions in the Physics, Biology, General Chemistry, and Organic Chemistry tests. It is not the average of the four science standard scores.\n
\n \n\n }\n
\n );\n};\n\nconst StartReview = ({testTitle, result, isFullLength, dateTaken, setVisibleState, isOAT=false}) => {\n const [subjectScoreComparison, setSubjectScoreComparison] = useState('Biology');\n const {cognitoUser, searchUserInteractions, saveUserInteraction, bootcamp, DEFAULT_USER_ID} = useUserDataContext();\n const {\n methods: {\n setNavigationFilter\n },\n variables: {\n test\n }\n } = useTestNavigatorContext();\n const urlParams = new URLSearchParams(window.location.search);\n const testProgressId = urlParams.get('testProgressId');\n\n const interactionKey = `${bootcamp}_performance`\n const performanceRecord = searchUserInteractions(interactionKey);\n\n const testNumber = testTitle.match(/#(.*)/)?.[1] || 1;\n\n useEffect(() => {\n if (!DEFAULT_USER_ID) return;\n if (!performanceRecord.createdAt) return;\n const originalCount = performanceRecord.results.length\n let newPerformanceRecord = {...performanceRecord}\n\n const testSubject = testTitle.match(/([^#]+)( Test)/)?.[1] || 'Full Length';\n\n const allResults = [];\n\n if (isFullLength) {\n const bioResult = {testTitle: `Biology Test #${testNumber}`, result: result.slice(0, 1)};\n const gcResult = {testTitle: `General Chemistry Test #${testNumber}`, result: result.slice(1, 2)};\n const ocResult = {testTitle: `Organic Chemistry Test #${testNumber}`, result: result.slice(2, 3)};\n const patResult = {testTitle: `Perceptual Ability Test #${testNumber}`, result: result.slice(3, 4)};\n const rcResult = {testTitle: `Reading Comprehension Test #${testNumber}`, result: result.slice(4, 7)};\n const qrResult = {testTitle: `Quantitative Reasoning Test #${testNumber}`, result: result.slice(7, 8)};\n allResults.push(bioResult, gcResult, ocResult, patResult, rcResult, qrResult);\n } else {\n allResults.push({testTitle, result});\n }\n\n for (const result of allResults) {\n const {testTitle, result: selectedResult} = result;\n const testSubject = testTitle.match(/([^#]+)( Test)/)[1];\n\n const relevantTestPerformanceRecord = performanceRecord.results.find(({testSubject: subject, testNumber: number}) => subject === testSubject && number === testNumber);\n\n if (relevantTestPerformanceRecord && (performanceRecord.sortOrder === 'DESC' ? relevantTestPerformanceRecord.createdAt >= dateTaken : relevantTestPerformanceRecord.createdAt <= dateTaken)) continue;\n newPerformanceRecord.results = newPerformanceRecord.results.filter(({testSubject: subject, testNumber: number}) => subject !== testSubject || number !== testNumber)\n const scoredResult = scoreResult(selectedResult, testTitle, testSubject, testNumber, dateTaken);\n scoredResult.testId = test.id\n scoredResult.testProgressId = testProgressId\n\n newPerformanceRecord.results.push(scoredResult);\n }\n\n originalCount != newPerformanceRecord.results.length && saveUserInteraction(interactionKey, JSON.stringify(newPerformanceRecord));\n }, []);\n\n if (!result.length) return null;\n\n const IS_OAT_STUDENT = (window.datbootcamp_plugin_obj && window.datbootcamp_plugin_obj.is_oat_student) || isOAT || false;\n const header = (\n
\n {testTitle}\n \n Name: {cognitoUser.getUsername()}\n Date: {moment(dateTaken).format(\"dddd, MMMM Do\")}\n \n
\n )\n if (testTitle.includes('Passage Bank')) {\n const {\n correct,\n total,\n markedQuestions,\n statistics,\n } = aggregateByTopic(result);\n\n const metrics = [\n ['Total Correct', `${correct} / ${total}`],\n ['Questions Marked', markedQuestions],\n ];\n const {name, total: statTotal, correct: statCorrect} = statistics?.[0] || {};\n const highlight = (parseInt(correct) / parseInt(total)) <= 0.5;\n\n const breakdownTable = (\n \n Topic breakdown\n \n \n \n Topic\n # Correct\n \n \n {name}\n {`${statCorrect} / ${statTotal}`}\n \n \n
\n
\n );\n\n return (\n \n {header}\n \n Score Report\n \n \n {metrics.map(Metric)}\n \n \n {breakdownTable}\n \n );\n }\n\n if (isFullLength) {\n if (!testTitle.includes('OAT')) {\n const {\n educator,\n correct,\n total,\n timeSpent,\n timePerQuestion,\n markedQuestions,\n statistics,\n } = aggregateBySection(result);\n\n const metrics = [\n ['Academic Average', getAcademicAverage(testTitle, statistics)],\n ['Time Spent', moment.utc(timeSpent * 1000).format('HH:mm:ss')],\n ['Per Question', moment.utc(timePerQuestion * 1000).format('HH:mm:ss')],\n ['Questions Marked', markedQuestions],\n ];\n\n const bioResult = {name: 'Biology', testTitle: `Biology Test #${testNumber}`, result: result.slice(0, 1)};\n const gcResult = {name: 'General Chemistry', testTitle: `General Chemistry Test #${testNumber}`, result: result.slice(1, 2)};\n const ocResult = {name: 'Organic Chemistry', testTitle: `Organic Chemistry Test #${testNumber}`, result: result.slice(2, 3)};\n const patResult = {name: 'Perceptual Ability', testTitle: `Perceptual Ability Test #${testNumber}`, result: result.slice(3, 4)};\n const rcResult = {name: 'Reading Comprehension', testTitle: `Reading Comprehension Test #${testNumber}`, result: result.slice(4, 7)};\n const qrResult = {name: 'Quantitative Reasoning', testTitle: `Quantitative Reasoning Test #${testNumber}`, result: result.slice(7, 8)};\n\n const topicScores = [bioResult, gcResult, ocResult, patResult, rcResult, qrResult].map(({name, testTitle, result: selectedResult}) => {\n const {\n correct,\n total,\n statistics: selectedResultStatistics\n } = aggregateByTopic(selectedResult);\n\n const testSubject = testTitle.match(/([^#]+)( Test)/)[1];\n const percentage = (correct / total) * 100;\n const {score} = getResults(percentage, testTitle, testSubject);\n\n return {\n name,\n testTitle,\n score,\n testSubject,\n percentage,\n selectedResultStatistics,\n correct,\n }\n });\n\n const activeSubjectComparison = topicScores.find(({name}) => name === subjectScoreComparison);\n\n const breakdownTable = (\n \n Section breakdown\n \n \n \n Section\n Time Spent\n Score\n Per Question\n \n {statistics.map((statistic, index) => )}\n \n
\n
\n );\n\n const topicBreakdowns = topicScores.map(({\n name,\n score,\n testSubject,\n selectedResultStatistics,\n }) => {\n\n // insert chart\n const addSnsChart = testSubject === 'Organic Chemistry';\n\n return (\n \n \n {testSubject} breakdown\n Estimated DAT {testSubject} Score: {score}\n \n \n \n \n Topic\n Time Spent\n Score\n Per Question\n \n {selectedResultStatistics\n .sort(firstBy('total', -1))\n .map((statistic, index) => {\n setNavigationFilter({key: 'subjectTopic', value: `${name}##${statistic.name}`});\n setVisibleState('category');\n }} />)\n }\n \n
\n {addSnsChart &&\n \n }\n
\n )\n });\n\n return (\n \n {header}\n \n Score Report\n \n {/* \n \n {metrics.map(Metric)}\n */}\n {testNumber <= 10 && \n \n Subject Comparison\n setSubjectScoreComparison(event.target.value)}>\n \n \n \n \n \n \n \n See how your subject scores compare to all other students who have taken this test.\n \n \n }\n \n \n Feedback\n {getFullLengthAnalysis(educator, testTitle, statistics, correct, total)}\n \n {breakdownTable}\n \n {topicBreakdowns}\n \n \n Topics marked in red should receive additional attention during your review.\n \n \n );\n } else {\n const {\n educator,\n correct,\n total,\n timeSpent,\n timePerQuestion,\n markedQuestions,\n statistics,\n } = aggregateByOATSection(result);\n\n const metrics = [\n ['Academic Average', getOATAcademicAverage(testTitle, statistics)],\n ['Time Spent', moment.utc(timeSpent * 1000).format('HH:mm:ss')],\n ['Per Question', moment.utc(timePerQuestion * 1000).format('HH:mm:ss')],\n ['Questions Marked', markedQuestions],\n ];\n\n const bioResult = {name: 'Biology', testTitle: `Biology Test #${testNumber}`, result: result.slice(0, 1)};\n const gcResult = {name: 'General Chemistry', testTitle: `General Chemistry Test #${testNumber}`, result: result.slice(1, 2)};\n const ocResult = {name: 'Organic Chemistry', testTitle: `Organic Chemistry Test #${testNumber}`, result: result.slice(2, 3)};\n const rcResult = {name: 'Reading Comprehension', testTitle: `Reading Comprehension Test #${testNumber}`, result: result.slice(3, 6)};\n const physResult = {name: 'Physics', testTitle: `Physics Test #${testNumber}`, result: result.slice(6, 7)};\n const qrResult = {name: 'Quantitative Reasoning', testTitle: `Quantitative Reasoning Test #${testNumber}`, result: result.slice(7, 8)};\n\n const breakdownTable = (\n \n Section breakdown\n \n \n \n Section\n Time Spent\n Score\n Per Question\n \n {statistics.map((statistic, index) => )}\n \n
\n
\n );\n\n const topicBreakdowns = [bioResult, gcResult, ocResult, rcResult, physResult, qrResult].map(({name, testTitle, result: selectedResult}) => {\n const {\n correct,\n total,\n statistics: selectedResultStatistics\n } = aggregateByTopic(selectedResult);\n\n const testSubject = testTitle.match(/([^#]+)( Test)/)[1];\n const percentage = (correct / total) * 100;\n const score = getOATResults(percentage, testTitle, testSubject);\n\n // insert chart\n const addSnsChart = testSubject === 'Organic Chemistry';\n\n return (\n \n \n {testSubject} breakdown\n Estimated OAT {testSubject} Score: {score}\n \n \n \n \n Topic\n Time Spent\n Score\n Per Question\n \n {selectedResultStatistics\n .sort(firstBy('total', -1))\n .map((statistic, index) => {\n setNavigationFilter({key: 'subjectTopic', value: `${name}##${statistic.name}`});\n setVisibleState('category');\n }} />)\n }\n \n
\n {addSnsChart &&\n \n }\n
\n )\n });\n\n return (\n \n {header}\n \n Score Report\n \n \n {metrics.map(Metric)}\n \n \n \n Feedback\n {getOATFullLengthAnalysis(educator, testTitle, statistics, correct, total)}\n \n {breakdownTable}\n \n {topicBreakdowns}\n \n \n Topics marked in red should receive additional attention during your review.\n \n \n );\n }\n } else {\n const {\n educator,\n correct,\n total,\n timeSpent,\n timePerQuestion,\n markedQuestions,\n statistics,\n } = aggregateByTopic(result);\n\n const showPatChart = testTitle.match('Perceptual');\n const showRcChart = testTitle.match('Reading');\n\n const testSubject = testTitle.match(/([^#]+)( Test)/)?.[1] || 'Full Length';\n const percentage = (correct / total) * 100;\n const {score} = IS_OAT_STUDENT ? getOATResults(percentage, testTitle, testSubject) : getResults(percentage, testTitle, testSubject);\n\n const metrics = [\n ['Total Correct', `${correct} / ${total}`],\n ['Time Spent', moment.utc(timeSpent * 1000).format('HH:mm:ss')],\n ['Per Question', moment.utc(timePerQuestion * 1000).format('HH:mm:ss')],\n [`Estimated ${bootcamp.toUpperCase()} Score`, score],\n ];\n\n const breakdownTable = (\n \n \n Topic breakdown\n Estimated {testSubject} Score: {score}\n \n \n \n \n Topic\n Time Spent\n Score\n Per Question\n \n {statistics\n .sort(firstBy('total', -1))\n .map((statistic, index) => (\n {\n setNavigationFilter({key: 'topic', value: statistic.name});\n setVisibleState('category');\n }}\n />\n ))\n }\n \n
\n
\n );\n\n return (\n \n {header}\n \n Score Report\n \n {metrics.map(Metric)}\n \n {['dat']?.includes(bootcamp) && testNumber <= 10 &&\n \n \n Comparison\n See how your total correct compares to all other Bootcamp students who have taken this test.\n \n \n \n }\n \n \n Feedback\n {IS_OAT_STUDENT ? getOATAnalysis(educator, testTitle, statistics, correct, total) : getAnalysis(educator, testTitle, statistics, correct, total)}\n \n {breakdownTable}\n \n Topics marked in red should receive additional attention during your review.\n \n {showPatChart &&\n \n }\n {showRcChart &&\n \n }\n \n );\n }\n};\n\nconst TopicNeedsReviewNotification = styled.p`\n margin-bottom: 25px;\n ${({theme}) => theme.darkModeEnabled && css`\n color: ${theme.colors.typographyPalette.secondary};\n `}\n`;\n\nconst Container = styled(GutterColumn)`\n width: 100%;\n height: 100%;\n`;\n\nconst Section = styled.section`\n width: 100%;\n margin-bottom: 32px;\n`;\nconst Header = styled(Row)`\n width: 100%;\n margin-bottom: 32px;\n align-items: center;\n`;\n\nconst Title = styled(H1)`\n font-size: 32px;\n line-height: 43px;\n margin: 25px 0px;\n width: 100%;\n`;\nconst SubTitle = styled(Body3)``;\nconst SectionHeaderWrap = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n width: 100%;\n`;\nconst SectionHeader = styled(H3)`\n font-size: 18px;\n line-height: 24px;\n margin: 0px 0px 24px 0px;\n`;\nconst ScoreComparisonSectionHeader = styled(SectionHeader)`\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\nconst DistributionChartContainer = styled.div`\n margin-top: 24px;\n`;\nconst Analysis = styled(Section)`\n font-size: 16px;\n line-height: 21px;\n white-space: pre-wrap;\n`;\nconst AnalysisContent = styled.div`\n position: relative;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n border-radius: 8px;\n line-height: 1.5em;\n`;\nconst AnalysisScore = styled.span`\n font-weight: bold;\n`;\nconst EducatorContainer = styled(Row)`\n margin-top: 25px;\n align-items: center;\n`;\nconst EducatorDetail = styled(Column)`\n padding: 10px;\n color: ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.extraDark : theme.overlays.opacity.dark._500};\n span {\n font-size: 14px;\n }\n div {\n font-size: 12px;\n line-height: normal;\n }\n`;\nconst CircleImage = styled.img`\n width: 50px;\n height: 50px;\n border-radius: 25px;\n`;\nconst Scoring = styled(Section)`\n`;\nconst TopicBreakdown = styled(Section)`\n margin-bottom: ${({chartActive}) => chartActive ? '0' : '32px'}\n`;\nconst TopicBreakdowns = styled(Section)`\n border-top: 1px solid #eee;\n padding-top: 2em;\n`\nconst MetricContainer = styled(Row)`\n flex-flow: row wrap;\n justify-content: space-between;\n width: 100%;\n`;\nconst MetricWrapper = styled(Column)`\n width: 25%;\n height: auto;\n padding: 8px;\n ${({theme}) => theme.mediaQueries.tablet} {\n width: 50%;\n }\n`;\nconst MetricTop = styled(H2)`\n font-weight: bold;\n color: ${({theme}) => theme.darkModeEnabled ? baseTheme.colors.neutralsPalette.offWhite : '#2F3037'};\n ${({theme}) => theme.mediaQueries.tablet} {\n font-size: 18px;\n }\n`;\nconst MetricBottom = styled(Body3)`\n color: ${({theme}) => theme.darkModeEnabled ? theme.colors.typographyPalette.secondary : '#585962'};\n`;\nconst Table = styled.table`\n width: 100%;\n border-collapse: collapse;\n border-radius: 8px;\n`;\nconst TableHeader = styled.th`\n text-align: left;\n padding-left: 19px;\n padding-right: 0;\n font-weight: bold;\n font-size: 16px;\n line-height: 3em;\n text-shadow: none;\n background: ${({theme}) => theme.colors.neutralsPalette.offWhite};\n box-shadow: inset 0px -1px 0px ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.borderPrimary : '#EDEDF0'};\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n`;\nconst TableRow = styled.tr`\n border-bottom: 1px solid ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.borderPrimary : theme.mediumBorderColor};\n cursor: ${({hasClickHandler}) => hasClickHandler ? 'pointer' : 'text'};\n background: ${({theme}) => theme.darkModeEnabled ? 'transparent' : 'white'};\n\n &:hover {\n td {\n &:first-child {\n text-decoration: ${({hasClickHandler}) => hasClickHandler ? 'underline' : 'text'};\n }\n }\n }\n`;\nconst cellHighlight = `\n background-image: linear-gradient(red,red), linear-gradient(transparent,transparent);\n background-repeat: no-repeat;\n background-size: 3px 100%;\n background-position: left center;\n`;\nconst Cell = styled.td`\n font-family: 'proxima-nova';\n padding: 20px;\n font-size: 16px;\n line-height: 24px;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n ${({highlight}) => highlight ? cellHighlight : ''}\n width: 25%;\n`;\n\nconst UserDetails = styled(Column)`\n margin-right: 0;\n margin-left: auto;\n white-space: nowrap;\n width: auto;\n`;\n\nconst ScoreBarContainer = styled(Column)`\n align-items: center;\n justify-content: center;\n margin: auto;\n position: relative;\n margin-right: 32px;\n`;\n\nconst ToolTip = styled.div`\n bottom: 120%;\n padding: 10px;\n margin-left: -55px;\n left: ${({leftPercent}) => leftPercent}%;\n position: absolute;\n /* green / light */\n font-family: 'proxima-nova';\n font-style: normal;\n font-weight: bold;\n font-size: 16px;\n line-height: 16px;\n /* identical to box height, or 100% */\n text-align: center;\n box-sizing: border-box;\n border-radius: 8px;\n white-space: nowrap;\n ${({loading, theme}) => theme.animation.loadingBackground({loading})};\n transition: left 1s ease;\n`;\n\nconst TopToolTip = styled(ToolTip)`\n color: #4C8B43;\n background: #EAF5EA;\n border: 1px solid #66AC5C;\n`;\nconst BottomToolTip = styled(ToolTip)`\n color: #85868E;\n background: #FAFAFA;\n border: 1px solid #85868E;\n bottom: auto;\n top: 120%;\n margin-left: -71px;\n`;\n\n\nconst ScoreBar = ({correctPercentage}) => {\n const {variables: {answerData}} = useTestNavigatorContext();\n return null\n\n const testAverage = Math.round(answerData?.averagePercentCorrect || 0);\n return (\n \n \n Your Score: {Math.round(correctPercentage * 100)}%\n \n \n 80 ? 80 : testAverage} loading={!testAverage}>\n Score Avg: {testAverage}%\n \n \n )\n}\n\nStartReview.displayName = 'StartReview';\n\nStartReview.defaultProps = {\n testId: '',\n testTitle: '',\n};\n\nStartReview.propTypes = {\n testId: PropTypes.string,\n testTitle: PropTypes.string,\n};\n\nexport default StartReview;\n","import React, {useState, useRef, useEffect} from 'react';\nimport styled, {css} from 'styled-components';\n\nimport ProgressBar from '../../../../components/ProgressBar';\nimport {Column, Table, Blurb, BlurbText, BlurbIcon, LineLabelWrapper} from '../../../components/Performance/shared';\n\nimport {formatTimeSpent} from '@bootcamp/shared/src/util';\nimport {Label1, Label2} from '@bootcamp/web/src/components/Typography/next';\n\nimport emily from '@bootcamp/shared/src/assets/educators/emily_giddings.jpeg';\nimport ari from '@bootcamp/shared/src/assets/educators/ari.gif';\nimport anthony from '@bootcamp/shared/src/assets/images/inbde/anthony_roviso.jpeg';\n\nimport matthew from '@bootcamp/shared/src/assets/images/matthew_dempsey.png';\n\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport theme from '@bootcamp/shared/src/styles/theme';\nimport {useConfigState} from '../context';\nimport GaugeChart from './Gauge';\nimport {Tooltip as ReactTooltip} from 'react-tooltip';\n\nimport {getAnalysis, getOATAnalysis, getFullLengthAnalysis, getOATFullLengthAnalysis} from '../helpers';\nimport {OfficialScoreReport} from '@bootcamp/web/src/components/TestBlocks/StartReview';\n\n\nconst StyledTooltip = styled(ReactTooltip)`\n z-index: 1000000000;\n color: white;\n`;\n\n\nconst Container = styled(Column)`\n padding: ${({theme}) => `${theme.layouts.spacing.m} ${theme.layouts.spacing.l} ${theme.layouts.spacing.l}`};\n`;\nconst ScoreBarContainer = styled.div`\n display: flex;\n align-items: center;\n position: relative;\n flex: 1;\n padding: 24px 0px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 24px 0px 28px;\n }\n`;\nconst Wrapper = styled.div`\n display: flex;\n flex-flow: row wrap;\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n gap: 32px;\n\n ${({isFullLengthTest}) => isFullLengthTest && css`\n width: 100%;\n max-width: 864px;\n margin: 0 auto ${({theme}) => theme.layouts.spacing.l} auto;\n `}\n\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-flow: column;\n gap: 0px;\n overflow: hidden;\n }\n`;\nconst ScoreBarWrapperOuter = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n`;\nconst ScoreBarWrapper = styled.div`\n display: flex;\n justify-content: center;\n flex: 1;\n width: 100%;\n`;\nconst Overlays = styled.div`\n position: absolute;\n width: 100%;\n top: 0;\n right: 0;\n bottom: 0;\n padding: 0 8px;\n`;\nconst OverlayWrapper = styled.div`\n position: relative;\n width: 100%;\n height: 100%;\n`;\nconst ScoreBar = styled(ProgressBar)`\n margin: ${({theme}) => `${theme.layouts.spacing.l} 0`};\n > div {\n padding: 8px;\n border-radius: 16px;\n }\n\n span {\n height: 16px;\n border-radius: 16px;\n background: ${({theme, backgroundColor}) => backgroundColor || theme.colors.interfacePalette.green.gradient};\n width: ${({percentage}) => percentage}%;\n }\n`;\nconst ScoreTableWrapper = styled.div`\n display: flex;\n align-items: center;\n min-width: 386px;\n flex: 1;\n\n\n ${({theme}) => theme.mediaQueries.tablet} {\n width: auto;\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n min-width: 0;\n }\n`;\nconst StyledTable = styled(Table)`\n td {\n width: auto;\n text-align: left !important;\n white-space: nowrap;\n }\n td: first-child {\n text-align: left;\n padding: 0 24px;\n width: 50%;\n }\n td:last-child * {\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n }\n tr:last-child {\n border-bottom: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n }\n`;\nconst TooltipContainer = styled.div`\n color: ${({theme, position}) => position === 'above' ? theme.colors.neutralsPalette.white : theme.colors.neutralsPalette.grey};\n padding: ${({theme}) => theme.layouts.spacing.s};\n border-radius: 8px;\n position: absolute;\n min-width: 150px;\n white-space: nowrap;\n left: calc(${({left}) => `${(left)}%`} ${({adjustment}) => (adjustment?.left || adjustment?.right) ? `${adjustment.left ? '+' : '-'} ${adjustment.left || adjustment.right}px` : ''} - 75px);\n text-align: center;\n z-index: 10;\n font-size: 14px;\n font-weight: 700;\n ${({position}) => position === 'above' ? 'top' : 'bottom'}: -26px;\n background: ${({position, theme, backgroundColor}) => position === 'above' ? backgroundColor || theme.colors.brandPalette.blue.default : theme.colors.neutralsPalette.offWhite};\n opacity: ${({adjustment}) => adjustment ? 1 : 0};\n font-size: 16px;\n font-family: 'proxima-nova';\n\n &::after {\n content: '';\n position: absolute;\n width: 12px;\n height: 12px;\n z-index: -1;\n left: calc(50% ${({adjustment}) => (adjustment?.left || adjustment?.right) ? `${adjustment.left ? '-' : '+'} ${adjustment.left || adjustment.right}px` : ''});\n margin-left: -6px;\n background: ${({position, theme, backgroundColor}) => position === 'above' ? backgroundColor || theme.colors.brandPalette.blue.default : theme.colors.neutralsPalette.offWhite};\n ${({position}) => position === 'above' ? 'border-bottom-right-radius' : 'border-top-left-radius'}: 4px;\n ${({position}) => position === 'above' ? 'bottom' : 'top'}: -6px;\n transform: rotate(${({position}) => position === 'above' ? '45deg': '45deg'});\n }\n`;\nconst ScoreSectionWrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n text-align: center;\n flex: 1;\n\n ${Label2} {\n color: ${({theme, palette, active}) => active ? palette.default : theme.colors.typographyPalette.primary};\n font-weight: ${({active}) => active ? 'bold' : 'normal'};\n margin-bottom: 8px;\n }\n`;\nconst LabelWrapper = styled.div`\n position: relative;\n margin-bottom: 8px;\n padding-bottom: 16px;\n\n ${Label2} {\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n text-align: center;\n margin-bottom: 0;\n text-overflow: ellipsis;\n\n }\n`;\nconst Top = styled.div`\n`;\nconst Bottom = styled.div`\n`;\nconst ScoreSection = styled.div`\n display: flex;\n flex-direction: column;\n height: ${({index}) => 48 + (index * 22)}px;\n user-select: none;\n\n ${Top} {\n width: 100%;\n height: 7px;\n background: ${({active, palette}) => palette.default};\n\n border-radius: 20px 20px 0px 0px;\n background: ${({theme, palette, active}) => active ? palette.gradient : theme.colors.backgroundPalette.secondary};\n box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.06) inset;\n }\n ${Bottom} {\n flex: 1;\n background: ${({theme, palette, active}) => active ? palette.light : theme.colors.backgroundPalette.secondary};\n }\n`;\n\nconst ReadinessScoreBar = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n width: 100%;\n max-width: 100%;\n min-width: 320px;\n padding: ${({theme}) => `${theme.layouts.spacing.xl} 0`};\n margin: 0 auto;\n\n ${Label1} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n\n span {\n color: ${({color}) => color};\n }\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n padding: 0;\n min-width: auto;\n }\n`;\nconst ReadinessScoreBarWrapper = styled.div`\n display: flex;\n flex-direction: row;\n gap: 8px;\n`;\n\nconst StyledBlurb = styled(Blurb)`\n position: relative;\n padding: 0;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-top: 28px;\n ${BlurbIcon} {\n top: -36px !important;\n left: 0px !important;\n }\n }\n\n ${BlurbText} {\n background: ${({ theme, lightMode }) => lightMode || theme.darkModeEnabled ? theme.overlays.opacity.light._100 : theme.colors.brandPalette.royal.light};\n border-radius: 8px;\n padding: ${({ theme, icon }) => `${theme.layouts.spacing.ms} ${theme.layouts.spacing.l}`};\n margin-left: ${({ icon }) => icon ? '36px' : '0px'};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-left: 0px;\n padding: ${({theme}) => `${theme.layouts.spacing.ms} ${theme.layouts.spacing.l}`};\n }\n\n }\n\n ${BlurbIcon} {\n position: absolute;\n width: 48px;\n height: 48px;\n border-radius: 24px;\n border: 3px solid ${({theme}) => theme.overlays.opacity.light._100};\n top: calc(50% - 24px);\n }\n`;\nconst StyledLineLabelWrapper = styled(LineLabelWrapper)`\n top: 0px;\n width: ${({width}) => width}px;\n left: ${({width}) => `calc(50% - ${width / 2}px)`};\n text-align: center;\n`;\n\n\nconst Tooltip = ({containerRef, ...props}) => {\n const [adjustment, setAdjustment] = useState(null);\n\n const ref = useRef();\n\n useEffect(() => {\n if (!containerRef?.current || !ref?.current || (!props.left && props.left !== 0) || props.left === 'NaN' || !!adjustment) return;\n\n const containerPosition = containerRef?.current?.getBoundingClientRect();\n const tooltipPosition = ref?.current?.getBoundingClientRect();\n\n const leftBound = containerPosition?.x - 22;\n\n // if tooltip position x is less than container position, set left adjustment\n if (tooltipPosition?.x < leftBound) {\n return setAdjustment({left: Math.round(leftBound - tooltipPosition.x)});\n }\n\n // if tooltip position x + width is greater than container position x + width set right adjustment\n else if ((tooltipPosition?.x + tooltipPosition?.width + 28) > (containerPosition?.x + containerPosition?.width)) {\n return setAdjustment({right: ((tooltipPosition?.x + tooltipPosition.width) - (containerPosition?.x + containerPosition?.width) - 28)});\n }\n\n else {\n setAdjustment({left: 0, right: 0});\n }\n\n }, [containerRef?.current, ref?.current, props.left]);\n\n return (\n \n );\n};\n\nconst getReadinessExamFeedback = (score, subjects, bootcamp) => {\n const styledSubjects = subjects.map(subject => {subject})\n if (bootcamp === 'nclex') {\n switch (score) {\n case 'Low':\n return You would have a Low chance of passing if you took the NCLEX today. But here's the good news! You can improve your likelihood of passing by practicing questions from the {styledSubjects[0]} & {styledSubjects[1]} sections. Read explanations carefully as you go and take another Readiness exam in 1-2 weeks to reassess and see your improvement!\n case 'Borderline':\n return You would have a Borderline chance of passing if you took the NCLEX today. Almost there! You can improve your likelihood of passing by practicing questions from the {styledSubjects[0]} & {styledSubjects[1]} sections. Read explanations carefully as you go and take the next Readiness exam in 1-2 weeks to reassess and see your improvement!\n case 'High':\n return You would have a High chance of passing if you took the NCLEX today. Great job! Continue improving by practicing questions from the {styledSubjects[0]} & {styledSubjects[1]} sections. Read explanations carefully as you go and take the next Readiness exam in 1-2 weeks to reassess and see your improvement!\n case 'Very High':\n return You would have a Very High chance of passing if you took the NCLEX today. Great job! Keep practicing your critical thinking skills, especially in the {styledSubjects[0]} & {styledSubjects[1]} sections. Read explanations carefully as you go and take the next Readiness exam in 1-2 weeks!\n default:\n break;\n }\n }\n if (bootcamp === 'med-school') {\n switch (score) {\n case 'Low':\n return You would have a Low chance of passing if you took Step 1 today. But here's the good news! You can improve your likelihood of passing by practicing questions from the {styledSubjects[0]} & {styledSubjects[1]} sections. Read explanations carefully as you go.\n case 'Borderline':\n return You would have a Borderline chance of passing if you took Step 1 today. Almost there! You can improve your likelihood of passing by practicing questions from the {styledSubjects[0]} & {styledSubjects[1]} sections. Read explanations carefully as you go.\n case 'High':\n return You would have a High chance of passing if you took Step 1 today. Great job! Continue improving by practicing questions from the {styledSubjects[0]} & {styledSubjects[1]} sections. Read explanations carefully as you go.\n case 'Very High':\n return You would have a Very High chance of passing if you took Step 1 today. Great job! Keep practicing your critical thinking skills, especially in the {styledSubjects[0]} & {styledSubjects[1]} sections. Read explanations carefully as you go.\n default:\n break;\n }\n }\n if (bootcamp === 'inbde') {\n switch (score) {\n case 'Low':\n return You would have a Low chance of passing if you took the INBDE today. But here's the good news! You can improve your likelihood of passing by practicing questions from the {styledSubjects[0]} & {styledSubjects[1]} sections. Read explanations carefully as you go.\n case 'Borderline':\n return You would have a Borderline chance of passing if you took the INBDE today. Almost there! You can improve your likelihood of passing by practicing questions from the {styledSubjects[0]} & {styledSubjects[1]} sections. Read explanations carefully as you go.\n case 'High':\n return You would have a High chance of passing if you took the INBDE today. Great job! Continue improving by practicing questions from the {styledSubjects[0]} & {styledSubjects[1]} sections. Read explanations carefully as you go.\n case 'Very High':\n return You would have a Very High chance of passing if you took the INBDE today. Great job! Keep practicing your critical thinking skills, especially in the {styledSubjects[0]} & {styledSubjects[1]} sections. Read explanations carefully as you go.\n default:\n break;\n }\n }\n}\n\n// for dat / oat\nexport const getPracticeTestFeedback = (testTitle, scoring, bootcamp, isFullLength) => {\n if (!(['oat', 'dat'].includes(bootcamp))) return;\n const feedback = bootcamp === 'dat' && window.location.pathname.includes('sample-test') ? getFullLengthAnalysis(testTitle, scoring) : bootcamp === 'dat' && !isFullLength\n ? getAnalysis(testTitle, scoring)\n : bootcamp === 'dat' && isFullLength\n ? getFullLengthAnalysis(testTitle, scoring)\n : bootcamp === 'oat' && !isFullLength\n ? getOATAnalysis(testTitle, scoring)\n : bootcamp === 'oat' && isFullLength\n ? getOATFullLengthAnalysis(testTitle, scoring)\n : {};\n\n if (bootcamp === 'dat') {\n const hardcodedDATNationalAvg = 390;\n feedback.avgScore = hardcodedDATNationalAvg;\n } else {\n feedback.avgScore = 300;\n }\n\n return feedback;\n};\n\nconst readinessExamGrade = {\n 0: 'Low',\n 1: 'Borderline',\n 2: 'High',\n 3: 'Very High',\n}\n\nexport const getReadinessExamGrade = (score, maxScore, bootcamp) => {\n if (bootcamp === 'nclex') {\n const yourScorePercentage = Math.round((score / maxScore) * 100);\n const readinessExamScore = yourScorePercentage < 50 ? 0 : yourScorePercentage <= 60 ? 1 : yourScorePercentage <= 70 ? 2 : 3;\n\n return {gradeLabel: readinessExamGrade[readinessExamScore], grade: readinessExamScore};\n }\n if (bootcamp === 'med-school') {\n const yourScorePercentage = Math.round((score / maxScore) * 100);\n const readinessExamScore = yourScorePercentage < 50 ? 0 : yourScorePercentage <= 59 ? 1 : yourScorePercentage <= 66 ? 2 : 3;\n\n return {gradeLabel: readinessExamGrade[readinessExamScore], grade: readinessExamScore};\n }\n if (bootcamp === 'inbde') {\n const yourScorePercentage = Math.round((score / maxScore) * 100);\n const readinessExamScore = yourScorePercentage < 60 ? 0 : yourScorePercentage <= 64 ? 1 : yourScorePercentage <= 69 ? 2 : 3;\n\n return {gradeLabel: readinessExamGrade[readinessExamScore], grade: readinessExamScore};\n }\n return {}\n}\n\nconst educatorsByBootcamp = {\n 'dat': ari,\n 'oat': ari,\n 'inbde': ari,\n 'nclex': emily,\n 'med-school': anthony,\n 'mcat': matthew,\n};\n\nconst Score = ({\n testTitle,\n isFullLengthTest,\n hideChart=false,\n hideBlurb=false\n}) => {\n const {cognitoUser, searchUserInteractions, saveUserInteraction, DEFAULT_USER_ID} = useUserDataContext();\n const {scoring, bootcamp, isReadinessExam, config} = useConfigState();\n\n const username = cognitoUser?.attributes?.name || cognitoUser.getUsername();\n const yourScore = scoring?.overview?.score;\n const maxScore = scoring?.overview?.maxScore;\n\n const [showLineLabel, setshowLineLabel] = useState(true);\n\n const yourScorePercentage = Math.round((yourScore / maxScore) * 100);\n const avgScorePercentage = Math.round((scoring?.overview?.avgScore / maxScore) * 100);\n\n const containerRef = useRef();\n const avgTimePerQuestion = scoring?.overview?.avgTime / scoring?.overview?.totalQuestions;\n\n const readinessExamSegments = [\n {count: 1, palette: theme.colors.interfacePalette.red},\n {count: 2, palette: theme.colors.interfacePalette.yellow},\n {count: 3, palette: theme.colors.interfacePalette.green},\n {count: 4, palette: theme.colors.interfacePalette.green},\n ];\n\n const {grade, gradeLabel} = getReadinessExamGrade(yourScore, maxScore, bootcamp);\n const practiceTestFeedback = getPracticeTestFeedback(testTitle, scoring, bootcamp, isFullLengthTest);\n\n // scoring.subjectBreakdown is an object with keys of subject names and values of objects with keys of 'score', 'maxScore', 'avgScore', 'totalTime', 'totalQuestions'\n // find two lowest scoring subjects\n const subjects = isReadinessExam && bootcamp === 'inbde'\n ? Object.keys(scoring.subjectBreakdown['Simulation Exam'].systems)\n .sort((a, b) => (scoring.subjectBreakdown['Simulation Exam'].systems[a].score / scoring.subjectBreakdown['Simulation Exam'].systems[a].maxScore) - (scoring.subjectBreakdown['Simulation Exam'].systems[b].score / scoring.subjectBreakdown['Simulation Exam'].systems[b].maxScore))\n .slice(0, 2)\n : isReadinessExam\n ? Object.keys(scoring.subjectBreakdown)\n .sort((a, b) => (scoring.subjectBreakdown[a].score / scoring.subjectBreakdown[a].maxScore) - (scoring.subjectBreakdown[b].score / scoring.subjectBreakdown[b].maxScore))\n .slice(0, 2)\n : ['', ''];\n\n const feedback = ['dat', 'oat'].includes(bootcamp)\n ? practiceTestFeedback?.feedback\n : isReadinessExam\n ? getReadinessExamFeedback(gradeLabel, subjects, bootcamp)\n : bootcamp === 'anatomy' && yourScorePercentage >= avgScorePercentage ? `Nice job! Continue to review your areas of knowledge. Keep up the good work!`\n : bootcamp === 'anatomy' && yourScorePercentage < avgScorePercentage ? `Keep your head up! Review these solutions carefully and learn from your mistakes. I'm confident you'll bring this score up with hard work and practice.`\n : yourScorePercentage === avgScorePercentage\n ? `Nice job! You scored right on the average of ${avgScorePercentage}%. Continue to review your areas of knowledge and you’ll be on your way to passing ${bootcamp === 'inbde' ? 'the INBDE' : bootcamp === 'nclex' ? 'the NCLEX' : 'Step 1'} in no time!`\n : yourScorePercentage >= avgScorePercentage\n ? `Nice job! You scored higher than the average of ${avgScorePercentage}%. Continue to review your areas of knowledge and you’ll be on your way to ${bootcamp === 'nclex' ? 'passing the NCLEX' : bootcamp === 'inbde' ? 'passing the INBDE' : bootcamp === 'mcat' ? 'acing the CARS section': 'passing Step 1'} in no time!`\n : `Keep your head up! Review these solutions carefully and learn from your mistakes. I'm confident you'll bring this score up with hard work and practice.`;\n\n useEffect(() => {\n if (!containerRef?.current) return;\n\n const handleResize = () => {\n if (!containerRef?.current) return;\n const refDimensions = containerRef.current.getBoundingClientRect();\n if (refDimensions.width <= 460) setshowLineLabel(false);\n else setshowLineLabel(true);\n };\n\n window.addEventListener('resize', handleResize);\n\n handleResize();\n\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n const interactionKey = `${bootcamp}_performance`\n const performanceRecord = searchUserInteractions(interactionKey);\n\n useEffect(() => {\n if (!DEFAULT_USER_ID || !['oat', 'dat'].includes(bootcamp)) return;\n if (!performanceRecord?.createdAt) return;\n const testNumber = testTitle.match(/#(.*)/)[1];\n const testSubject = testTitle.match(/([^#]+)( Test)/)[1];\n\n const relevantTestPerformanceRecord = performanceRecord.results.find(({testSubject: subject, testNumber: number}) => subject === testSubject && number === testNumber);\n if (relevantTestPerformanceRecord && relevantTestPerformanceRecord?.createdAt >= config.createdAt) return;\n saveUserInteraction(interactionKey, JSON.stringify({}));\n }, [DEFAULT_USER_ID]);\n\n\n const gaugeChartProps = ['dat', 'oat'].includes(bootcamp)\n ? {\n value: practiceTestFeedback?.score,\n avgScore: practiceTestFeedback?.avgScore,\n avgScoreText: 'Bootcamp Avg.',\n avgScoreLabel: practiceTestFeedback?.avgScore,\n showLineLabel: showLineLabel,\n labelTop: practiceTestFeedback?.score,\n labelBottom: (\n \n Your Score
\n
\n ),\n maxValue: bootcamp === 'dat'\n ? \"600\"\n : \"400\",\n }\n : {\n value: yourScorePercentage,\n avgScore: avgScorePercentage,\n avgScoreLabel: `${avgScorePercentage}%`,\n showLineLabel: showLineLabel\n };\n\n const scoreCell = ['dat', 'oat'].includes(bootcamp)\n ? {cells: [{content: `Raw Score`}, {content: `${Math.round((yourScore / maxScore) * 100)}%`}, {content: `${Math.round((scoring?.overview?.avgScore.toFixed(1) / maxScore) * 100)}%`}]}\n : {cells: [{content: 'Score'}, {content: `${yourScorePercentage}%`}, {content: `${avgScorePercentage}%`}]};\n\n return (\n \n {isFullLengthTest && ['oat', 'dat'].includes(bootcamp) &&\n \n }\n \n {!hideChart && \n {!showLineLabel && !isReadinessExam &&\n \n {['dat', 'oat'].includes(bootcamp) ? 'Bootcamp Avg.' : 'Avg. Score'} {['dat', 'oat'].includes(bootcamp) ? `${practiceTestFeedback.avgScore}` : `${avgScorePercentage}%`}\n \n }\n {\n isReadinessExam ? (\n \n Chance of Passing: {readinessExamGrade[grade]}\n \n {readinessExamSegments.map((segment, index) => (\n \n \n {readinessExamGrade[index]}\n \n \n \n \n \n \n )\n )}\n \n \n ) : ['dat'].includes(bootcamp) ? (\n \n \n \n \n \n ) : (\n \n \n \n )\n }\n }\n \n \n Average\n \n
\n )}]},\n scoreCell,\n {cells: [{content: bootcamp === 'nclex' ? 'Correct / Total Pts' : 'Correct / Total'}, {content: `${yourScore} / ${maxScore}`}, {content: `${scoring?.overview?.avgScore.toFixed(1)} / ${maxScore}`}]},\n {cells: [{content: 'Time Per Question'}, {content: formatTimeSpent(scoring?.overview?.totalTime / scoring?.overview?.totalQuestions)}, {content: formatTimeSpent(avgTimePerQuestion)}]},\n {cells: [{content: 'Total Time'}, {content: formatTimeSpent(scoring?.overview?.totalTime)}, {content: formatTimeSpent(scoring?.overview?.avgTime)}]},\n ]}\n />\n \n \n {!hideBlurb && \n \n }\n \n );\n};\n\nexport default Score;","import React from 'react';\nimport {Helmet} from 'react-helmet';\n\nimport styled from 'styled-components';\n\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nimport PracticeTest from '../../components/Cards/PracticeTest';\nimport Container from '../../pages/PageContainer';\n\nimport {Heading} from '@bootcamp/web/src/bootcamps/nclex/shared';\nimport {useContentTypeProgress} from '../../api/progress/contentType';\nimport {H2} from '@bootcamp/web/src/components/Typography';\nimport {Element as FAQElement} from '@bootcamp/web/src/bootcamps/components/WebflowFAQs';\nimport {getReadinessExamGrade} from '../../pages/ScoreReport/components/Score';\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n border: none;\n margin-top: ${({theme}) => theme.layouts.spacing.m};\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n\n ${({theme}) => theme.mediaQueries.laptop} {\n padding-left: 0;\n }\n`;\n\nconst FAQHeader = styled(H2)`\n color: white;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n`;\n\nconst faqItems = [\n {title: \"What is the Med School Bootcamp Step 1 Self-Assessment?\", text: \"The Self-Assessment simulates the exact look, feel, and content of the real Step 1 exam. At the end of your exam, you’ll get an accurate prediction of how likely you’ll pass Step 1, and personalized recommendations on how to improve your chances of passing.\"},\n {title: \"How many questions are in the Step 1 Self-Assessment?\", text: \"The Self-Assessment consists of 4 blocks of 40 questions each, for a total of 160 questions. It is presented in the NBME's official timed format.\"},\n {title: \"How long is the Step 1 Self-Assessment?\", text: \"The Self-Assessment follows the same time restrictions as the real Step 1. You have 60 minutes to complete each block, and a 5 minute break between blocks. Set aside at least 4 hours to complete the Self-Assessment.\"},\n {title: \"Do I have to complete all 4 blocks in one sitting?\", text: \"Yes, in order to provide the most accurate pass prediction, you must complete all 4 blocks in one sitting. Set aside at least 4 hours to complete the Self-Assessment.\"},\n {title: \"Are these questions repeated in the question bank?\", text: \"No, these are unique questions only found in the Self-Assessment. We removed these questions from the question bank a few months ago so you can test yourself with fresh questions. If you have been preparing for a while, you may see a repeat.\"},\n {title: \"When will I get my score report?\", text: \"Immediately after you submit your final block, you will receive a detailed score analysis, pass prediction, and be able to review all your answers. We recommend taking time to throughly read the explanations and learn from your mistakes, this is the best way to improve your chances of passing Step 1.\"},\n {title: \"Is the distribution of topics the same as the actual Step 1 exam?\", text: \"Yes, we followed the official content outline announced by the USMLE and carefully selected questions to reflect the relative distribution of topics on the actual Step 1 exam.\"},\n {title: \"How accurate is the pass prediction?\", text: \"We used statistical models to compare your performance against previous students who have passed USMLE Step 1 to determine your readiness level.\"},\n {title: \"When should I take the Step 1 Self-Assessment?\", text: \"We recommend taking the Self-Assessment at the beginning of your dedicated study period to identify your weak areas, and use the courses and question bank to strengthen those areas.\"},\n]\n\nconst SelfAssessments = ({match, history, location}) => {\n const {isUpgraded} = useUserDataContext();\n\n const {config} = useBootcampConfigContext();\n\n const name = 'Self-Assessment';\n const filteredClassrooms = [\n {\n \"name\": \"Board Style Questions\",\n \"route\": \"qbanks\",\n \"content\": [\n {\n \"name\": \"Question Banks\",\n \"content\": [\n {\n id: 'b21f76dd-8a20-4a71-9bf6-839e7b4d7faa',\n name: 'Self-Assessment 1',\n route: 'self-assessment-1'\n }\n ]\n }\n ]\n }\n ]\n\n const testsByClassroom = [\n {\n id: 'b21f76dd-8a20-4a71-9bf6-839e7b4d7faa',\n name: 'Self-Assessment 1',\n route: 'self-assessment-1'\n }\n ]\n const contentTypeProgress = useContentTypeProgress(filteredClassrooms[0], 'self-assessments');\n const {progress, counts} = contentTypeProgress?.['qbanks-self-assessments'] || {};\n\n function formatResultDetails(attempt) {\n return null;\n }\n\n function formatScoreText(score) {\n if (!score) return;\n const {gradeLabel} = getReadinessExamGrade(score.correct, score.total, 'med-school');\n return {score: gradeLabel, label: 'Chance'};\n }\n\n function formatScore(attempt) {\n if (!attempt) return null;\n const questionProgresses = attempt\n ?.map(({questionProgresses}) => questionProgresses?.items)\n ?.flat();\n\n const scoreDetails = questionProgresses?.reduce((acc, {didSelectCorrectAnswer}) => {\n try {\n return {...acc, score: acc.score + (didSelectCorrectAnswer ? 1 : 0), maxScore: acc.maxScore + 1};\n } catch (error) {\n return acc;\n }\n }, {score: 0, maxScore: 0});\n\n return {correct: scoreDetails.score, total: scoreDetails.maxScore};\n }\n\n return (\n \n \n {config.meta.siteTitle} | {name}\n \n \n \n \n {testsByClassroom.map((test, index) => {\n const isLocked = !isUpgraded && index > 0;\n\n return (\n : ]}\n defaultLocked={isLocked}\n index={index+1}\n />\n )})}\n \n FAQs\n {faqItems.map(({title, text}) => )}\n \n );\n}\n\nSelfAssessments.propTypes = {};\nSelfAssessments.defaultProps = {};\n\nexport default SelfAssessments;\n","import React, {useCallback} from 'react';\nimport {Helmet} from 'react-helmet';\n\nimport styled from 'styled-components';\n\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nimport PracticeTest from '../../components/Cards/PracticeTest';\nimport Container from '../../pages/PageContainer';\nimport {getTestsByClassroom} from '@bootcamp/shared/src/util';\n\nimport {Heading} from '@bootcamp/web/src/bootcamps/nclex/shared';\nimport {useContentTypeProgress} from '../../api/progress/contentType';\nimport {H2} from '@bootcamp/web/src/components/Typography';\nimport {Element as FAQElement} from '@bootcamp/web/src/bootcamps/components/WebflowFAQs';\nimport {getReadinessExamGrade} from '../../pages/ScoreReport/components/Score';\nimport API, {graphqlOperation} from '@aws-amplify/api';\nimport {useAsync} from '@bootcamp/shared/src/util/hooks';\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n border: none;\n margin-top: ${({theme}) => theme.layouts.spacing.m};\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n\n ${({theme}) => theme.mediaQueries.laptop} {\n padding-left: 0;\n }\n`;\n\nconst FAQHeader = styled(H2)`\n color: white;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n`;\n\nconst faqItems = [\n {\n title: \"What is the INBDE Bootcamp Simulation Exam?\",\n text: `The Simulation Exam simulates the exact look, feel, timing, and content of the real INBDE. You will take the test timed and see your answers at the end of a section. At the end of each section, you’ll get an accurate prediction of how likely you are to pass the INBDE based on your performance, as well as personalized recommendations on how to improve your chances of passing.`\n },\n {\n title: `How many questions are in the INBDE Simulation Exam? How long does it take to complete?`,\n text: `
\n
The content breakdown and timing of the Simulation Exam matches the real INBDE. There are 500 questions spread across 6 sections.
\n
\n
Number of questions and timing of the actual INBDE:
\n
\n
\n INBDE Day 1 schedule: 360 questions, 8 hours and 15 minutes\n
    \n
  • Tutorial: 15 minutes
  • \n
  • Section 1: 100 standalone questions, 1 hour and 45 minutes
  • \n
      \n
    • Break: 15 minutes
    • \n
    \n
  • Section 2: 100 standalone questions, 1 hour and 45 minutes
  • \n
      \n
    • Break: 30 minutes
    • \n
    \n
  • Section 3: 100 standalone questions, 1 hour and 45 minutes
  • \n
      \n
    • Break: 15 minutes
    • \n
    \n
  • Section 4: 60 case set questions, 1 hour and 45 minutes
  • \n
\n
\n
\n INBDE Day 2 schedule: 140 questions, 4 hours and 15 minutes\n
    \n
  • Tutorial: 15 minutes
  • \n
  • Section 1: 70 case set questions, 1 hour and 45 minutes
  • \n
      \n
    • Break: 15 minutes
    • \n
    \n
  • Section 2: 70 case set questions, 1 hour and 45 minutes
  • \n
  • Post-Exam Survey: 15 minutes
  • \n
\n
\n
`\n },\n {\n title: `Do I have to complete an entire day in one sitting?`,\n text: `
\n
No, we designed the Simulation Exam so you can take one section at a time for a more effective study experience.
\n
\n
We’ve found the main challenge for students on the real INBDE is that they struggle with mastering the content, not test fatigue. That’s why it’s more important to focus on your review than it is to simulate spending 8 hours taking a test. We recommend taking time to throughly review the explanations and learn from your mistakes after completing each section. This is the best way to improve your chances of passing the INBDE.
\n
`\n },\n {\n title: `Can I pause a section and come back to it later?`,\n text: `No, in order to provide the most accurate pass prediction, you must answer all questions in a section in one sitting. Set aside at least 1 hour and 45 minutes for each section. If you accidentally submitted a section, you can reset the exam.`\n },\n {\n title: `I accidentally submitted a section before I was finished. What do I do?`,\n text: `You can reset the exam to take it again.`\n },\n {\n title: `Are these questions repeated in the question bank?`,\n text: `No, these are unique questions only found in the Simulation Exam.`\n },\n {\n title: `When will I get my score report?`,\n text: `Immediately after you submit a section, you will receive a detailed score analysis, pass prediction, and be able to review all your answers and the explanations.`\n },\n {\n title: `Is the distribution of topics the same as the actual INBDE?`,\n text: `
\n Yes, we follow the official content outline announced by the ADA and have carefully selected questions to reflect the relative distribution of topics on the actual INBDE.\n
`\n },\n {\n title: \"How accurate is the pass prediction?\",\n text: \"We’ve used statistical models to compare your performance against previous students who have passed the INBDE to determine your readiness level.\"\n },\n {\n title: \"When should I take the INBDE Simulation Exam?\",\n text: \"We recommend to start taking it within the last 2 weeks of your study schedule. Remember, the Simulation Exam is 500 questions and learning from the explanations is crucial. Make sure you leave enough time so that you can adequately review your results.\"\n }\n]\n\nconst SimulationExams = ({match, history, location}) => {\n const {isUpgraded, bootcamp, DEFAULT_USER_ID} = useUserDataContext();\n\n const {config} = useBootcampConfigContext();\n\n const name = 'Simulation Exams';\n const classroomConfig = config.classrooms.find(({route}) => route === 'simulation-exam');\n\n const qbankContent = classroomConfig.contentTypes.find(({route}) => route === 'qbanks');\n\n const banks = qbankContent.content.find(({name}) => name === 'Question Banks') || {content: []};\n\n const contentTypeProgress = useContentTypeProgress(qbankContent, 'simulation-exams');\n\n const {progress, counts} = contentTypeProgress?.['qbanks-simulation-exams'] || {};\n\n const {value, pending} = useAsync(useCallback(async () => {\n const query = `\n query queryCohortUserLinksByGsiUserCohorts($userId: String!) {\n queryCohortUserLinksByGsiUserCohorts(userId: $userId) {\n items {\n cohort {\n contentRestrictions\n }\n }\n }\n }\n `\n const {data} = await API.graphql(graphqlOperation(query, {userId: DEFAULT_USER_ID}));\n return data?.queryCohortUserLinksByGsiUserCohorts?.items;\n }, [DEFAULT_USER_ID]))\n\n function formatResultDetails(attempt) {\n return null;\n }\n\n function formatScoreText(score) {\n if (!score) return;\n const {gradeLabel} = getReadinessExamGrade(score.correct, score.total, bootcamp);\n return {score: gradeLabel, label: 'Chance'};\n }\n\n function formatScore(attempt) {\n if (!attempt) return null;\n const questionProgresses = attempt\n ?.map(({questionProgresses}) => questionProgresses?.items)\n ?.flat();\n\n const scoreDetails = questionProgresses?.reduce((acc, {didSelectCorrectAnswer}) => {\n try {\n return {...acc, score: acc.score + (didSelectCorrectAnswer ? 1 : 0), maxScore: acc.maxScore + 1};\n } catch (error) {\n return acc;\n }\n }, {score: 0, maxScore: 0});\n\n return {correct: scoreDetails.score, total: scoreDetails.maxScore};\n }\n if (pending) return null;\n const contentRestrictions = value?.reduce((acc, item) => [...acc, ...(item?.cohort?.contentRestrictions || [])], []);\n return (\n \n \n {config.meta.siteTitle} | {name}\n \n \n \n \n {banks.content.map((test, index) => {\n const isLocked = !isUpgraded;\n\n return (\n name === test.name)}\n index={index+1}\n />\n )})}\n \n FAQs\n {faqItems.map(({title, text}) => )}\n \n );\n}\n\nSimulationExams.propTypes = {};\nSimulationExams.defaultProps = {};\n\nexport default SimulationExams;\n","import React, {useCallback} from 'react';\n\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\nimport FAQs from '../../components/WebflowFAQs';\nimport {H1, H2, H3, Body3} from '../../../components/Typography';\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {Column} from '../../../components/Grid';\nimport Chapter, {Wrapper as ChapterWrapper, Right} from '@bootcamp/web/src/bootcamps/components/Cards/Chapter'\nimport Container from '../../pages/PageContainer';\n\nimport {useContentTypeProgress} from '@bootcamp/web/src/bootcamps/api/progress/contentType'\nimport styled from 'styled-components';\nimport {UpgradeCard, FreeQuestionsCard} from '../shared';\nimport CreateTestButton from '@bootcamp/web/src/bootcamps/pages/CreateTest/components/CreateTestButton';\n\nimport PlayImg from '@bootcamp/shared/src/assets/icons/nclex/Play.png'\nimport ReadinessImg from '@bootcamp/shared/src/assets/icons/nclex/Readiness.png'\nimport DocumentImg from '@bootcamp/shared/src/assets/icons/nclex/document.png'\nimport FirstAidImg from '@bootcamp/shared/src/assets/icons/nclex/FirstAid.png'\nimport StethoscopeImg from '@bootcamp/shared/src/assets/icons/nclex/Stethoscope.png'\nimport {People} from '@styled-icons/fluentui-system-filled/People'\nimport {CalendarLtr} from '@styled-icons/fluentui-system-filled/CalendarLtr';\n\nimport {useMasteryArray} from '@bootcamp/web/src/hooks';\nimport {getTestsByClassroom} from '@bootcamp/shared/src/util';\nimport {useAsync} from '@bootcamp/web/src/hooks';\nimport {formatClassroomMastery} from '@bootcamp/shared/src/util/formatting';\nimport {getClassroomQuestionCounts} from '@bootcamp/shared/src/requests';\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport moment from 'moment';\nimport {AddCircle} from '@styled-icons/fluentui-system-filled/AddCircle';\nimport GettingStarted from '../../components/GettingStarted';\nimport CreateTest from '../../pages/CreateTest';\n\nimport {items} from '@bootcamp/shared/src/config/nclexCheatSheets';\n\nimport {useModalContext} from '../../../contexts/Modal';\n\n\nconst Date = styled.div`\n font-size: 14px;\n margin-bottom: 4px;\n text-transform: uppercase;\n color: ${({theme}) => theme.overlays.opacity.light._400};\n`;\nconst TitleBar = styled(Column)`\n jusitfy-content: center;\n margin-bottom: 16px;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst Wrapper = styled.div`\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n display: flex;\n flex-direction: column;\n`;\n\nconst IntroContainer = styled.div`\n width: 100%;\n background: linear-gradient(180deg, rgba(21, 26, 30, 0.1) 0%, rgba(255, 255, 255, 0) 100%);\n box-shadow: inset 0px 2px 8px -6px rgba(21, 26, 30, 0.1);\n border-radius: 8px;\n padding: 24px;\n display: flex;\n flex-direction: column;\n align-content: center;\n justify-content: center;\n text-align: center;\n margin-bottom: 16px;\n`;\nconst IntroHeader = styled(H3)`\n color: white;\n margin-bottom: 8px;\n font-size: 20px;\n text-overflow: ellipsis;\n width: 100%;\n overflow: hidden;\n white-space: nowrap;\n`;\nconst IntroBody = styled(Body3)`\n color: rgba(255,255,255,.9);\n max-width: 750px;\n margin: 0 auto 16px;\n`;\nconst StyledCreateTestButton = styled(CreateTestButton)`\n margin: 0 auto;\n transform: scale(1);\n box-shadow: ${({theme}) => theme.elevation.shadow.medium};\n transition: all 100ms ease;\n &:hover {\n transform: scale(1.02);\n }\n`;\nconst Intro = () => {\n const {cognitoUser} = useUserDataContext();\n\n return (\n \n \n Let's get started{cognitoUser && cognitoUser?.getUsername && `, ${cognitoUser?.getUsername()}`}\n \n \n You have a free membership. The best way to get started is to create a test. When you're ready, upgrade your membership to get instant access to all content and features.\n \n \n \n )\n}\nconst StyledAddCircle = styled(AddCircle)`\n color: ${({theme}) => theme.colors.brandPalette.royal.default};\n width: 24px;\n height: 24px;\n`;\nconst Title = styled(H2)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst StyledCalendar = styled(CalendarLtr)`\n fill: ${({theme}) => theme.colors.brandPalette.teal.default};\n`;\n\nconst StyledPeople = styled(People)`\n fill: ${({theme}) => theme.colors.brandPalette.magenta.default};\n`;\nconst StyledChapterCard = styled(Chapter)`\n${({theme}) => theme.mediaQueries.mobileXl} {\n ${ChapterWrapper} {\n flex-direction: row;\n }\n ${Right} {\n margin-top: 0;\n width: auto;\n }\n`;\n\n const VideosCard = () => {\n const {isUpgraded} = useUserDataContext();\n const {config} = useBootcampConfigContext();\n\n const {contentTypes: freeVideos} = config.classrooms.find(({name}) => name === 'Next Gen NCLEX Strategy Course');\n const freeVideosConfig = freeVideos?.[0];\n const freeVideosData = useContentTypeProgress(freeVideosConfig, 'all')['videos-all'];\n\n const collectedVideosData = (Object.values(freeVideosData?.videoLessonData || {}) || []).reduce((acc, {quizProgress, test}) => {\n return {\n complete: acc.complete + quizProgress.reduce((acc, {status}) => acc + (!!status ? 1 : 0), 0),\n total: acc.total + test?.blockConnections?.items?.reduce((acc, {testBlock}) => acc + (testBlock?.type === 'lesson' ? 1 : 0), 0)\n }\n }, {complete: 0, total: 0});\n\n return (\n }\n showVideoProgress\n fullWidthProgress\n videoLessonCount={collectedVideosData?.total}\n progress={freeVideosData ? {mastered: collectedVideosData?.complete} : 'loading'}\n />\n )\n }\n const CasesCard = () => {\n const {isUpgraded} = useUserDataContext();\n const {config} = useBootcampConfigContext();\n\n const {contentTypes: caseQuestions} = config.classrooms.find(({name}) => name === 'Case Studies');\n const caseQuestionsConfig = caseQuestions?.[0];\n const caseQuestionsData = useContentTypeProgress(caseQuestionsConfig, 'all')['qbanks-all'];\n\n return (\n }\n questionCount={caseQuestionsData?.counts?.all}\n fullWidthProgress\n progress={caseQuestionsData ? caseQuestionsData?.progress?.all : 'loading'}\n />\n )\n }\n const ReadinessExamCard = () => {\n const {isUpgraded} = useUserDataContext();\n const {config} = useBootcampConfigContext();\n\n const {contentTypes: caseQuestions} = config.classrooms.find(({name}) => name === 'Readiness Exams');\n const caseQuestionsConfig = caseQuestions?.[0];\n const caseQuestionsData = useContentTypeProgress(caseQuestionsConfig, 'all')['qbanks-all'];\n\n return (\n }\n questionCount={caseQuestionsData?.counts?.all}\n fullWidthProgress\n progress={caseQuestionsData ? caseQuestionsData?.progress?.all : 'loading'}\n />\n )\n }\n const CheatSheetCard = () => {\n\n return (\n }\n showProgress={false}\n details={`High-yield Cheat Sheets for the NCLEX®`}\n // questionCount={caseQuestionsData?.counts?.all}\n // fullWidthProgress\n // progress={caseQuestionsData ? caseQuestionsData?.progress?.all : 'loading'}\n />\n )\n }\n const StandaloneQuestionCard = () => {\n const {isUpgraded} = useUserDataContext();\n const {config} = useBootcampConfigContext();\n\n const filteredClassrooms = config?.classrooms?.filter(({testing, route}) => !testing && !route.match('free-questions') && !route.match('next-gen-cases') && !route.match('next-gen-strategy') && !route.match('next-gen-readiness-exams'));\n\n const testsByClassroom = getTestsByClassroom(filteredClassrooms, [], [], false, ['Board Style Questions', 'Case Studies']);\n const getQuestionCounts = useCallback(() => getClassroomQuestionCounts('nclex', testsByClassroom), [])\n const {value: questionCounts} = useAsync(getQuestionCounts);\n const standaloneQuestionCounts = Object.keys(questionCounts?.classroomQuestionCounts || {}).filter(key => !['free-questions', 'next-gen-cases', 'next-gen-strategy', 'next-gen-readiness-exams'].includes(key)).reduce((acc, key) => acc + questionCounts?.classroomQuestionCounts?.[key], 0);\n const allTests = Object.values(testsByClassroom).reduce((acc, tests) => [...acc, ...tests], []);\n const filteredProgresses = useMasteryArray(allTests, 'test', data => formatClassroomMastery(data, 'test'));\n const condensedProgresses = Object.values(filteredProgresses).reduce((acc, progressObj) => ({...acc, learning: progressObj.learning + acc.learning, reviewing: progressObj.reviewing + acc.reviewing, mastered: progressObj.mastered + acc.mastered}),{learning: 0, reviewing: 0, mastered: 0})\n\n return (\n }\n questionCount={standaloneQuestionCounts}\n fullWidthProgress\n progress={Object.values(filteredProgresses).length > 0 ? condensedProgresses : 'loading'}\n />\n )\n }\n\nconst Home = () => {\n const {bootcamp, isUpgraded} = useUserDataContext();\n const {config} = useBootcampConfigContext();\n const {modalDispatch} = useModalContext();\n\n useDocumentTitle(` ${config.meta.siteTitle} | Home`);\n\n const {contentTypes: freeQuestions} = config.classrooms.find(({name}) => name === 'Free Questions');\n const freeQuestionsConfig = freeQuestions?.[0];\n const {counts} = useContentTypeProgress(freeQuestionsConfig, 'all')?.['qbanks-all'] || {};\n\n const todayActions = [\n {\n interactionKey: `Streak-${bootcamp}-Create-Test`,\n icon: {\n component: () => ,\n text: 'Create Test'\n },\n text: isUpgraded ? 'Study up to 85 questions at a time' : `Upgrade for unlimited access`,\n containerProps: {\n onClick: () => modalDispatch({\n type: 'open',\n component: CreateTest,\n componentProps: !!isUpgraded ? {} : {defaults: {subject: 'Free Questions'}},\n enableClickClose: true,\n }),\n },\n },\n {\n icon: {\n component: StyledCalendar,\n text: 'Question of the Day', themeColor: 'royal'\n },\n text: `Try out today's question`,\n containerProps: {\n as: 'a',\n href: `https://bootcamp.com/${bootcamp}/question-of-the-day`,\n target: '_blank'\n }\n },\n {\n icon: {\n component: StyledPeople,\n text: 'Study Group', themeColor: 'royal'\n },\n text: `Join 21k fellow students`,\n containerProps: {\n as: 'a',\n href: 'https://www.facebook.com/groups/2169829559872032',\n target: '_blank'\n }\n },\n ];\n return (\n \n \n {/* \n {moment().format('dddd, MMM D')}\n \n Start Studying\n \n \n {!isUpgraded && } */}\n NCLEX Resources\n \n \n \n \n \n \n \n \n \n );\n}\n\nHome.propTypes = {};\nHome.defaultProps = {};\n\nexport default Home;\n","import AdultHealthImg from '@bootcamp/shared/src/assets/icons/nclex/AdultHealth.png'\nimport ChildHealthImg from '@bootcamp/shared/src/assets/icons/nclex/ChildHealth.png'\nimport CriticalCareImg from '@bootcamp/shared/src/assets/icons/nclex/CriticalCare.png'\nimport FundamentalsImg from '@bootcamp/shared/src/assets/icons/nclex/Fundamentals.png'\nimport MaternalandNewbornHealthImg from '@bootcamp/shared/src/assets/icons/nclex/MaternalandNewbornHealth.png'\nimport MentalHealthImg from '@bootcamp/shared/src/assets/icons/nclex/MentalHealth.png'\nimport PharmacologyImg from '@bootcamp/shared/src/assets/icons/nclex/Pharmacology.png'\nimport ManagementofCareImg from '@bootcamp/shared/src/assets/icons/nclex/ManagementofCare.png'\n\n\nexport const items = [\n {\n name: 'Burns',\n description: 'Adult Health',\n route: 'https://drive.google.com/file/d/1QJEqd3TZQWDmwWjszVsJosoQJd1ho7iP/view?usp=sharing',\n icon: AdultHealthImg\n },\n {\n name: 'Cholecystitis & Pancreatitis',\n description: 'Adult Health',\n route: 'https://drive.google.com/file/d/15EhJ7-VwSazj7MOg_9ebxgRZxxYh6mkU/view?usp=sharing',\n icon: AdultHealthImg\n },\n {\n name: 'Chronic Obstructive Pulmonary Disease (COPD)',\n description: 'Adult Health',\n route: 'https://drive.google.com/file/d/1pixZb00aBa5eohA7e6ZqRLj8fIXEirN4/view?usp=sharing',\n icon: AdultHealthImg\n },\n {\n name: 'Diabetes',\n description: 'Adult Health',\n route: 'https://drive.google.com/file/d/1LzFLS-VVih6s7Blu37CrfO1Uw14D67fi/view?usp=sharing',\n icon: AdultHealthImg\n },\n {\n name: 'Stroke',\n description: 'Adult Health',\n route: 'https://drive.google.com/file/d/1vo_AvOXs2yyHyz-LcDZp0YQF_3Cdx94q/view?usp=sharing',\n icon: AdultHealthImg\n },\n {\n name: 'Urinary Tract Infections',\n description: 'Adult Health',\n route: 'https://drive.google.com/file/d/1GlC-qe1wcKCvzZXGXRkCF-ATUjGKbp-E/view?usp=sharing',\n icon: AdultHealthImg\n },\n {\n name: 'Asthma',\n description: 'Child Health',\n route: 'https://drive.google.com/file/d/1nzfgwmyfjTLMKfd2jQlKqpeKFcCDnHPQ/view?usp=sharing',\n icon: ChildHealthImg\n },\n {\n name: 'Congenital Heart Defects',\n description: 'Child Health',\n route: 'https://drive.google.com/file/d/1A0tdlmBznpwYqVphGz3Zy1n8_m_8hSz6/view?usp=sharing',\n icon: ChildHealthImg\n },\n {\n name: 'Croup, Epiglottitis, & Tonsillitis',\n description: 'Child Health',\n route: 'https://drive.google.com/file/d/1u5PonJ8gzcCi46x5IOqF43H9gpt4gu0B/view?usp=sharing',\n icon: ChildHealthImg\n },\n {\n name: 'Growth & Development',\n description: 'Child Health',\n route: 'https://drive.google.com/file/d/1ABXGBcZKrPA9v3ZMACvijhhM0IhZ7wce/view?usp=sharing',\n icon: ChildHealthImg\n },\n {\n name: 'Pyloric Stenosis, Intussusception, & Hirschsprung Disease',\n description: 'Child Health',\n route: 'https://drive.google.com/file/d/1li9GUVlkhmMWyRuCP7RBd837joliKOd_/view?usp=sharing',\n icon: ChildHealthImg\n },\n {\n name: 'Infection Control',\n description: 'Fundamentals',\n route: 'https://drive.google.com/file/d/1w6O_7iQYdJhmtpQC0vwIP0g9StkudW1y/view?usp=sharing',\n icon: FundamentalsImg\n },\n {\n name: 'Mobility & Positioning',\n description: 'Fundamentals',\n route: 'https://drive.google.com/file/d/1CJmAq2sV75jD_E584JmrqTpSNR3NN7tT/view?usp=sharing',\n icon: FundamentalsImg\n },\n {\n name: 'Safety',\n description: 'Fundamentals',\n route: 'https://drive.google.com/file/d/1R155s1hqwpWQfyH5so1FMso6cb3KDMjW/view?usp=sharing',\n icon: FundamentalsImg\n },\n {\n name: 'Delegation and Assignment',\n description: 'Management of Care',\n route: 'https://drive.google.com/file/d/1h7bd0bUDJQWgZDTqyLDJIPwQePROPnam/view?usp=sharing',\n icon: ManagementofCareImg\n },\n {\n name: 'Legal',\n description: 'Management of Care',\n route: 'https://drive.google.com/file/d/1gwUBfLFImDere6lqarS2NL-WxSq4bLIn/view?usp=sharing',\n icon: ManagementofCareImg\n },\n {\n name: 'Prioritization',\n description: 'Management of Care',\n route: 'https://drive.google.com/file/d/1cEschueX0S719x-4242KPa3I5Jl10cKg/view?usp=sharing',\n icon: ManagementofCareImg\n },\n {\n name: 'Fetal Monitoring',\n description: 'Maternal & Newborn Health',\n route: 'https://drive.google.com/file/d/1dwZ4htaVrkh6WYpIWOGBzAeOVBIikTPF/view?usp=sharing',\n icon: MaternalandNewbornHealthImg\n },\n {\n name: 'Newborn Care',\n description: 'Maternal & Newborn Health',\n route: 'https://drive.google.com/file/d/1gneyUpyJk7DRi2R_Qp_IWsXP4bFcJHIQ/view?usp=sharing',\n icon: MaternalandNewbornHealthImg\n },\n {\n name: 'Placenta Previa & Placental Abruption',\n description: 'Maternal & Newborn Health',\n route: 'https://drive.google.com/file/d/1QLjSJ0R-i50uo2HtDGBmniuPHeWheiKG/view?usp=sharing',\n icon: MaternalandNewbornHealthImg\n },\n {\n name: 'Postpartum Hemorrhage (PPH)',\n description: 'Maternal & Newborn Health',\n route: 'https://drive.google.com/file/d/1MQJ9tsB9brYdXWKUN25FjNMBBrUJFi3i/view?usp=sharing',\n icon: MaternalandNewbornHealthImg\n },\n {\n name: 'Preeclampsia',\n description: 'Maternal & Newborn Health',\n route: 'https://drive.google.com/file/d/1fEHDTBuZhKhmAr5bqry5ipdpcEgLaA3b/view?usp=sharing',\n icon: MaternalandNewbornHealthImg\n },\n {\n name: 'Bipolar Disorders',\n description: 'Mental Health',\n route: 'https://drive.google.com/file/d/11rhC4yJxAQMNn3olSQn3DJBPWj_OX4oD/view?usp=sharing',\n icon: MentalHealthImg\n },\n\n {\n name: 'Depression & Suicide',\n description: 'Mental Health',\n route: 'https://drive.google.com/file/d/1uwIhcGCE8AhefUvRzy8cb3CcfjTcjlqp/view?usp=sharing',\n icon: MentalHealthImg\n },\n {\n name: 'Eating Disorders',\n description: 'Mental Health',\n route: 'https://drive.google.com/file/d/1vYADY_G-TSzo7FLqZdaaWcmiZkKbCmIj/view?usp=sharing',\n icon: MentalHealthImg\n },\n {\n name: 'Schizophrenia',\n description: 'Mental Health',\n route: 'https://drive.google.com/file/d/1El49Ayu9k1OHlUOapS1sdtdsArNXr75K/view?usp=sharing',\n icon: MentalHealthImg\n },\n {\n name: 'Therapeutic Communication',\n description: 'Mental Health',\n route: 'https://drive.google.com/file/d/1hXORgePG8EaigmyPN66GtoAAvxANO4jd/view?usp=sharing',\n icon: MentalHealthImg\n },\n {\n name: 'Analgesics',\n description: 'Pharmacology',\n route: 'https://drive.google.com/file/d/1FEi17F-d8mYI9OKH2uXA8-bvC1WGBbwV/view?usp=sharing',\n icon: PharmacologyImg\n },\n {\n name: 'Anticoagulants & Antiplatelets',\n description: 'Pharmacology',\n route: 'https://drive.google.com/file/d/1AIkW_cRxy0mc7DevpabSEspsgpW5FrLV/view?usp=sharing',\n icon: PharmacologyImg\n }\n];","import React, {useCallback} from 'react';\nimport {Helmet} from 'react-helmet';\n\nimport styled from 'styled-components';\n\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nimport Chapter from '@bootcamp/web/src/bootcamps/components/Cards/Chapter'\nimport Container from '../../pages/PageContainer';\nimport {useMasteryArray} from '../../../hooks';\nimport {getTestsByClassroom} from '@bootcamp/shared/src/util';\nimport {getClassroomQuestionCounts} from '@bootcamp/shared/src/requests';\nimport {useAsync} from '@bootcamp/web/src/hooks';\nimport {formatClassroomMastery} from '@bootcamp/shared/src/util/formatting';\nimport CreateTest from '@bootcamp/web/src/bootcamps/pages/CreateTest';\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\n\nimport {StyledUpgradeButton} from '@bootcamp/web/src/bootcamps/components/Cards/components/Buttons';\nimport {RoundButton} from '@bootcamp/web/src/components/UI';\n\nimport {AddSquare} from '@styled-icons/fluentui-system-filled/AddSquare';\n\nimport AdultHealthImg from '@bootcamp/shared/src/assets/icons/nclex/AdultHealth.png'\nimport ChildHealthImg from '@bootcamp/shared/src/assets/icons/nclex/ChildHealth.png'\nimport CriticalCareImg from '@bootcamp/shared/src/assets/icons/nclex/CriticalCare.png'\nimport FundamentalsImg from '@bootcamp/shared/src/assets/icons/nclex/Fundamentals.png'\nimport MaternalandNewbornHealthImg from '@bootcamp/shared/src/assets/icons/nclex/MaternalandNewbornHealth.png'\nimport MentalHealthImg from '@bootcamp/shared/src/assets/icons/nclex/MentalHealth.png'\nimport PharmacologyImg from '@bootcamp/shared/src/assets/icons/nclex/Pharmacology.png'\nimport ManagementofCareImg from '@bootcamp/shared/src/assets/icons/nclex/ManagementofCare.png'\n\nimport {Heading, FreeQuestionsCard} from '../shared';\n\nconst ClassroomImageMap = {\n 'Adult Health': AdultHealthImg,\n 'Child Health': ChildHealthImg,\n 'Critical Care': CriticalCareImg,\n 'Fundamentals': FundamentalsImg,\n 'Maternal & Newborn Health': MaternalandNewbornHealthImg,\n 'Mental Health': MentalHealthImg,\n 'Pharmacology': PharmacologyImg,\n 'Management of Care': ManagementofCareImg\n};\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n border: none;\n margin-top: ${({theme}) => theme.layouts.spacing.m};\n\n ${({theme}) => theme.mediaQueries.laptop} {\n padding-left: 0;\n }\n`;\n\nconst StyledRoundButton = styled(RoundButton)`\n ${({theme}) => theme.mediaQueries.mobileXl} {\n flex: 1;\n height: 32px;\n }\n`;\n\nconst StandaloneQuestions = ({match, history, location}) => {\n const {isUpgraded} = useUserDataContext();\n\n const {config, questionCounts} = useBootcampConfigContext();\n\n const name = 'Standalone Questions';\n const filteredClassrooms = config?.classrooms?.filter(({testing, route}) => !testing && !route.match('free-questions') && !route.match('next-gen-cases') && !route.match('next-gen-strategy') && !route.match('next-gen-readiness-exams'));\n\n const testsByClassroom = getTestsByClassroom(filteredClassrooms, [], [], false, ['Board Style Questions']);\n const testQuestionCounts = {\n classroomQuestionCounts: Object.keys(testsByClassroom).reduce((acc, classroom) => {\n return {\n ...acc,\n [classroom]: (acc[classroom] || 0) + testsByClassroom[classroom].reduce((acc, testId) => acc + Object.keys(questionCounts?.[testId] || {}).length, 0)\n }\n }, {})\n }\n\n const {modalDispatch} = useModalContext();\n const openCreateTest = (subject, system) => modalDispatch({\n type: 'open',\n component: CreateTest,\n componentProps: {defaults: {subject, system}},\n enableClickClose: true,\n })\n const adultHealthProgress = useMasteryArray(testsByClassroom['adult-health'], 'test', data => formatClassroomMastery(data, 'test'));\n const childHealthProgress = useMasteryArray(testsByClassroom['child-health'], 'test', data => formatClassroomMastery(data, 'test'));\n const criticalCareProgress = useMasteryArray(testsByClassroom['critical-care'], 'test', data => formatClassroomMastery(data, 'test'));\n const fundamentalsProgress = useMasteryArray(testsByClassroom['fundamentals'], 'test', data => formatClassroomMastery(data, 'test'));\n const maternalAndNewbornHealthProgress = useMasteryArray(testsByClassroom['maternal-and-newborn-health'], 'test', data => formatClassroomMastery(data, 'test'));\n const mentalHealthProgress = useMasteryArray(testsByClassroom['mental-health'], 'test', data => formatClassroomMastery(data, 'test'));\n const pharmacologyProgress = useMasteryArray(testsByClassroom['pharmacology'], 'test', data => formatClassroomMastery(data, 'test'));\n const managementOfCareProgress = useMasteryArray(testsByClassroom['management-of-care'], 'test', data => formatClassroomMastery(data, 'test'));\n\n const progressMap = {\n 'adult-health': adultHealthProgress,\n 'child-health': childHealthProgress,\n 'critical-care': criticalCareProgress,\n 'fundamentals': fundamentalsProgress,\n 'maternal-and-newborn-health': maternalAndNewbornHealthProgress,\n 'mental-health': mentalHealthProgress,\n 'pharmacology': pharmacologyProgress,\n 'management-of-care': managementOfCareProgress,\n }\n\n function reduceMastery (masteryArray) {\n return Object.values(masteryArray).reduce((acc, masteryObj) => {\n return {\n learning: acc.learning + masteryObj.learning,\n reviewing: acc.reviewing + masteryObj.reviewing,\n mastered: acc.mastered + masteryObj.mastered,\n }\n }, {learning: 0, reviewing: 0, mastered: 0})\n }\n return (\n \n \n {config.meta.siteTitle} | {name}\n \n \n \n \n {!isUpgraded && }\n {filteredClassrooms.map((classroom, index) => (\n openCreateTest(classroom.name)}\n name={classroom.name}\n icon={}\n fullWidthProgress\n progress={Object.values(progressMap[classroom.route] || {}).length > 0 ? reduceMastery(progressMap[classroom.route] || {}) : 'loading'}\n questionCount={testQuestionCounts?.classroomQuestionCounts ? testQuestionCounts?.classroomQuestionCounts?.[classroom.route] || 0 : 'loading'}\n actions={[isUpgraded ? }>Create Test : ]}\n defaultLocked={!isUpgraded}\n />\n ))}\n \n \n );\n}\n\nStandaloneQuestions.propTypes = {};\nStandaloneQuestions.defaultProps = {};\n\nexport default StandaloneQuestions;\n","import React from 'react';\nimport {Helmet} from 'react-helmet';\n\nimport styled from 'styled-components';\n\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nimport Chapter from '@bootcamp/web/src/bootcamps/components/Cards/Chapter';\nimport PracticeTest from '../../components/Cards/PracticeTest';\nimport Container from '../../pages/PageContainer';\nimport {getTestsByClassroom} from '@bootcamp/shared/src/util';\nimport CreateTest from '@bootcamp/web/src/bootcamps/pages/CreateTest';\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\nimport {RoundButton, UpgradeButton} from '@bootcamp/web/src/components/UI';\n\nimport {Heading} from '../shared';\nimport {useContentTypeProgress} from '../../api/progress/contentType';\nimport {H2} from '@bootcamp/web/src/components/Typography';\nimport {Element as FAQElement} from '@bootcamp/web/src/bootcamps/components/WebflowFAQs';\nimport {getReadinessExamGrade} from '../../pages/ScoreReport/components/Score';\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n border: none;\n margin-top: ${({theme}) => theme.layouts.spacing.m};\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n\n ${({theme}) => theme.mediaQueries.laptop} {\n padding-left: 0;\n }\n`;\n\nconst FAQHeader = styled(H2)`\n color: white;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n`;\n\nconst faqItems = [\n {\n title: 'What are NCLEX® Bootcamp Readiness Exams?',\n text: \"Readiness exams simulate the exact look, feel, and content of the real NCLEX®. At the end of each exam, you’ll get an accurate prediction of how likely you are to pass the NCLEX® and recommendations on how to improve your chances of passing.\",\n },\n {\n title: 'How many questions are in each NCLEX® Bootcamp Readiness Exam?',\n text: 'Readiness exams include 100 unique NGN and traditional questions based on the NCLEX-RN test plan.'\n },\n {\n title: 'How long are the NCLEX® Bootcamp Readiness Exams?',\n text: \"You will have 3 hours and 20 minutes to complete 100 questions, similar to the pace you should answer questions on the real NCLEX®.\"\n },\n {\n title: 'How accurate are the NCLEX® Bootcamp Readiness Exams?',\n text: `We use statistical models to compare your performance against previous students who passed the NCLEX® to determine your readiness level. As shown in our Facebook study group, many students have confirmed the Readiness Exams accurately predicted their NCLEX® results.`\n },\n {\n title: 'When should I take my first NCLEX® Bootcamp Readiness Exam?',\n text: \"We highly recommend taking a readiness exam at the start of your studying to see where your strengths and weaknesses are, and then practicing with the question bank to improve your weaker subjects. Take another readiness exam at the mid-point of your studying, and another one just before the NCLEX® to gauge your readiness.\"\n },\n {\n title: 'Can I pause a Readiness Exam and come back to it later?',\n text: \"You cannot pause a Readiness Exam because it simulates the actual NCLEX® experience. You won't be able to pause during the actual NCLEX®.\"\n },\n]\n\nconst NextGenReadinessExams = ({match, history, location}) => {\n const {isUpgraded} = useUserDataContext();\n\n const {config} = useBootcampConfigContext();\n\n const name = 'Readiness Exams';\n const filteredClassrooms = config?.classrooms?.find(({route}) => route.match('next-gen-readiness-exams'));\n\n const testsByClassroom = getTestsByClassroom([filteredClassrooms], [], [], true);\n const contentTypeProgress = useContentTypeProgress(filteredClassrooms.contentTypes[0], 'next-gen-readiness-exams');\n const {progress, counts} = contentTypeProgress?.['qbanks-next-gen-readiness-exams'] || {};\n\n function formatResultDetails(attempt) {\n return null;\n }\n\n function formatScoreText(score) {\n if (!score) return;\n const {gradeLabel} = getReadinessExamGrade(score.correct, score.total, 'nclex');\n return {score: gradeLabel, label: 'Chance'};\n }\n\n function formatScore(attempt) {\n const questionProgresses = attempt\n ?.map(({questionProgresses}) => questionProgresses?.items)\n ?.flat();\n\n const scoreDetails = questionProgresses?.reduce((acc, {answerState}) => {\n try {\n const {score, maxScore} = JSON.parse(answerState || \"{}\");\n return {...acc, score: acc.score + (score || 0), maxScore: acc.maxScore + (maxScore || 0)};\n } catch (error) {\n return acc;\n }\n }, {score: 0, maxScore: 0});\n\n return {correct: scoreDetails.score, total: scoreDetails.maxScore};\n }\n\n return (\n \n \n {config.meta.siteTitle} | {name}\n \n \n \n \n {testsByClassroom['next-gen-readiness-exams'].map((test, index) => {\n const isLocked = !isUpgraded && index > 0;\n\n return (\n : ]}\n defaultLocked={isLocked}\n index={index+1}\n />\n )})}\n \n FAQs\n {faqItems.map(({title, text}) => )}\n \n );\n}\n\nNextGenReadinessExams.propTypes = {};\nNextGenReadinessExams.defaultProps = {};\n\nexport default NextGenReadinessExams;\n","import React from 'react';\nimport {Helmet} from 'react-helmet';\n\nimport styled from 'styled-components';\n\nimport {useBootcampConfigContext} from '@bootcamp/web/src/contexts/BootcampConfig';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\n\nimport Chapter from '@bootcamp/web/src/bootcamps/components/Cards/Chapter'\nimport Container from '@bootcamp/web/src/bootcamps/pages/PageContainer';\nimport {getTestsByClassroom} from '@bootcamp/shared/src/util';\nimport {RoundButton, UpgradeButton} from '@bootcamp/web/src/components/UI';\nimport {ResetButton} from '@bootcamp/web/src/bootcamps/components/Cards/components/Buttons';\nimport {Heading} from '@bootcamp/web/src/bootcamps/nclex/shared';\nimport {useContentTypeProgress} from '@bootcamp/web/src/bootcamps/api/progress/contentType';\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n border: none;\n margin-top: ${({theme}) => theme.layouts.spacing.m};\n\n ${({theme}) => theme.mediaQueries.laptop} {\n padding-left: 0;\n }\n`;\n\nconst CARSPassages = ({match, history, location}) => {\n const {isUpgraded} = useUserDataContext();\n\n const {config} = useBootcampConfigContext();\n\n const name = 'CARS Passages';\n const filteredClassrooms = config?.classrooms?.find(({route}) => route.match('cars-passages'));\n\n const testsByClassroom = getTestsByClassroom([filteredClassrooms], [], [], true);\n const contentTypeProgress = useContentTypeProgress(filteredClassrooms.contentTypes[0], 'qbanks');\n const {progress, counts} = contentTypeProgress?.['qbanks-qbanks'] || {};\n\n return (\n \n \n {config.meta.siteTitle} | {name}\n \n \n \n \n {testsByClassroom['cars-passages'].map((test, index) => {\n const isLocked = !isUpgraded && index > 2;\n return (\n ,] : []}\n defaultLocked={isLocked}\n index={index+1}\n />\n )})}\n \n \n );\n}\n\nCARSPassages.propTypes = {};\nCARSPassages.defaultProps = {};\n\nexport default CARSPassages;\n","import React, {useState} from 'react';\nimport {Helmet} from 'react-helmet';\n\nimport styled, {css} from 'styled-components';\n\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nimport ChapterCard, {Right} from '@bootcamp/web/src/bootcamps/components/Cards/Chapter'\nimport Container from '../../pages/PageContainer';\nimport {getTestsByClassroom} from '@bootcamp/shared/src/util';\nimport CreateTest from '@bootcamp/web/src/bootcamps/pages/CreateTest';\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\nimport {StyledResetButton, StyledBeginPracticeButton, StyledUpgradeButton} from '@bootcamp/web/src/bootcamps/components/Cards/components/Buttons';\nimport {Heading, FreeQuestionsCard} from '../shared';\nimport {useContentTypeProgress} from '../../api/progress/contentType';\n\nconst StyledChapterCard = styled(ChapterCard)`\n background: white;\n border: none;\n overflow: inherit;\n`;\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n border: none;\n margin-top: ${({theme}) => theme.layouts.spacing.m};\n\n ${({theme}) => theme.mediaQueries.laptop} {\n padding-left: 0;\n }\n`;\n\n\n\nconst NextGenCases = ({match, history, location}) => {\n const [resetInitialized, setResetInitialized] = useState({});\n const {isUpgraded} = useUserDataContext();\n\n const {config} = useBootcampConfigContext();\n\n const name = 'Case Studies';\n const filteredClassrooms = config?.classrooms?.find(({route}) => route.match('next-gen-cases'));\n\n const testsByClassroom = getTestsByClassroom([filteredClassrooms], [], [], true);\n const contentTypeProgress = useContentTypeProgress(filteredClassrooms.contentTypes[0], 'next-gen-cases');\n const {progress, counts} = contentTypeProgress?.['qbanks-next-gen-cases'] || {};\n\n const {modalDispatch} = useModalContext();\n\n const openCreateTest = (subject, system) => modalDispatch({\n type: 'open',\n component: CreateTest,\n componentProps: {defaults: {subject, system}},\n enableClickClose: true,\n });\n\n\n return (\n \n \n {config.meta.siteTitle} | {name}\n \n \n \n \n {testsByClassroom['next-gen-cases'].map((test, index) => {\n const isLocked = !isUpgraded && index > 2;\n return (\n ,\n \n ] : [\n \n ]}\n defaultLocked={isLocked}\n index={index+1}\n />\n )})}\n \n \n );\n}\n\nNextGenCases.propTypes = {};\nNextGenCases.defaultProps = {};\n\nexport default NextGenCases;\n","import React from 'react';\nimport {Helmet} from 'react-helmet';\n\nimport styled from 'styled-components';\n\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {useContentTypeProgress} from '../../api/progress/contentType';\n\nimport Container from '../../pages/PageContainer';\nimport VideoLessons from '../../components/ContentTypes/VideoLessons';\nimport {Heading} from '../shared';\nimport theme from '@bootcamp/shared/src/styles/theme';\n\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n border: none;\n margin-top: ${({theme}) => theme.layouts.spacing.m};\n\n ${({theme}) => theme.mediaQueries.laptop} {\n padding-left: 0;\n }\n`;\n\n\nconst NextGenCourse = () => {\n const {config} = useBootcampConfigContext();\n\n const name = 'Next Gen Strategy Course';\n const filteredClassrooms = config?.classrooms?.find(({route}) => route.match('next-gen-strategy-course'));\n const content = filteredClassrooms?.contentTypes[0].content\n\n const contentTypeProgress = useContentTypeProgress(filteredClassrooms.contentTypes[0], 'next-gen-strategy-course');\n const data = contentTypeProgress?.['videos-next-gen-strategy-course'] || {};\n\n return (\n \n \n {config.meta.siteTitle} | {name}\n \n \n \n \n \n \n \n );\n}\n\nNextGenCourse.propTypes = {};\nNextGenCourse.defaultProps = {};\n\nexport default NextGenCourse;\n","import React, {useCallback} from 'react';\nimport {useAsync} from '@bootcamp/shared/src/util/hooks';\nimport styled from 'styled-components';\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\n\nimport CheatSheets from '@bootcamp/web/src/bootcamps/pages/CheatSheets';\n\nimport AdultHealthImg from '@bootcamp/shared/src/assets/icons/nclex/AdultHealth.png'\nimport ChildHealthImg from '@bootcamp/shared/src/assets/icons/nclex/ChildHealth.png'\nimport CriticalCareImg from '@bootcamp/shared/src/assets/icons/nclex/CriticalCare.png'\nimport FundamentalsImg from '@bootcamp/shared/src/assets/icons/nclex/Fundamentals.png'\nimport MaternalandNewbornHealthImg from '@bootcamp/shared/src/assets/icons/nclex/MaternalandNewbornHealth.png'\nimport MentalHealthImg from '@bootcamp/shared/src/assets/icons/nclex/MentalHealth.png'\nimport PharmacologyImg from '@bootcamp/shared/src/assets/icons/nclex/Pharmacology.png'\nimport ManagementofCareImg from '@bootcamp/shared/src/assets/icons/nclex/ManagementofCare.png'\n\nimport firstBy from 'thenby';\n\nconst systemImgMap = {\n 'Adult Health': AdultHealthImg,\n 'Child Health': ChildHealthImg,\n 'Critical Care': CriticalCareImg,\n 'Fundamentals': FundamentalsImg,\n 'Maternal & Newborn Health': MaternalandNewbornHealthImg,\n 'Mental Health': MentalHealthImg,\n 'Pharmacology': PharmacologyImg,\n 'Management of Care': ManagementofCareImg,\n};\n\nconst NCLEXCheatSheets = ({history}) => {\n const fetchCheatSheets = useCallback(async () => {\n const fetchResult = await fetch('https://dekni9rgkrcu0.cloudfront.net/json/nclex/cheatSheets.json', { cache: 'no-cache' });\n return fetchResult.json();\n }, []);\n\n let {value: items} = useAsync(fetchCheatSheets);\n\n if (!items) items = [];\n\n const formattedItems = items.map(({description, name, route, freeAccess}) => ({\n category: description,\n description,\n name,\n route,\n iconUrl: systemImgMap[description],\n freeAccess,\n }));\n\n const sortedItems = formattedItems.sort(firstBy('category').thenBy('name'));\n\n const categories = [...new Set(items.map(item => item.description))];\n\n return (\n \n );\n}\n\nexport default NCLEXCheatSheets;\n","import React, {useCallback} from 'react';\n\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\nimport {Link} from 'react-router-dom';\n\nimport MasteryReview from '../components/MasteryReview';\nimport GettingStarted from '../components/GettingStarted';\nimport FAQs from '../components/WebflowFAQs';\n\nimport {H2} from '../../components/Typography';\nimport ClassroomCard from '../components/Cards/ClassroomRow';\n\nimport {useMasteryArray, useTestProgressArray} from '../../hooks';\n\nimport {ReactComponent as Coffee} from '@bootcamp/shared/src/assets/svg/coffee.svg';\n\nimport {getStreakDetails, getTestsByClassroom} from '@bootcamp/shared/src/util';\nimport {getClassroomQuestionCounts, getClassroomCourseBlockCounts} from '@bootcamp/shared/src/requests';\nimport {useAsync} from '@bootcamp/web/src/hooks';\n\nimport {formatClassroomMastery, formatClassroomVideoProgress} from '@bootcamp/shared/src/util/formatting';\nimport {useBootcampConfigContext} from '../../contexts/BootcampConfig';\n\nimport Container from '../pages/PageContainer';\n\nimport styled from 'styled-components';\n\n\nconst Title = styled(H2)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst StyledClassroomCard = styled(ClassroomCard)`\n flex: 1;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n`;\nconst CardWrapper = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n margin-bottom: ${({theme}) => theme.layouts.spacing.xl};\n`;\n\nconst Home = props => {\n const {config} = useBootcampConfigContext();\n\n useDocumentTitle(` ${config.meta.siteTitle} | Home`);\n\n const bootcamp = 'anatomy';\n\n const coursesByClassroom = getTestsByClassroom(config?.classrooms, [], ['Course']);\n const testsByClassroom = getTestsByClassroom(config?.classrooms);\n\n const getCourseBlockCounts = useCallback(() => getClassroomCourseBlockCounts(bootcamp, coursesByClassroom), []);\n const getQuestionCounts = useCallback(() => getClassroomQuestionCounts(bootcamp, testsByClassroom), [])\n\n const {value: courseBlockCounts} = useAsync(getCourseBlockCounts);\n const {value: questionCounts} = useAsync(getQuestionCounts);\n\n const todayActions = [\n {\n interactionKey: `Streak-DWU-${bootcamp}`,\n icon: {\n component: Coffee,\n text: 'Daily Warmup', themeColor: 'royal'\n },\n text: 'New questions brewed daily just for you',\n containerProps: {\n as: Link,\n to: `/${bootcamp}/quick-study`,\n },\n checkIfComplete: interactionObj => {\n const {streak, date: streakDate} = JSON.parse((interactionObj || {}).value || '{}');\n const {streakCompletedToday} = getStreakDetails(streak, streakDate);\n return streakCompletedToday;\n }\n },\n ];\n\n const progresses = useMasteryArray(config.classrooms.reduce((acc, {tagId, tagIds}) => tagIds ? [...acc, ...tagIds] : [...acc, tagId], []), 'subject', data => formatClassroomMastery(data, 'subject'));\n return (\n \n \n \n Anatomy Courses\n \n \n {config?.classrooms?.map(({icon, themePalette, name, route, tagId, tagIds, comingSoon, educators}) => (\n ({learning: acc.learning + progresses[tagId].learning, reviewing: acc.reviewing + progresses[tagId].reviewing, mastered: acc.mastered + progresses[tagId].mastered}), {learning: 0, reviewing: 0, mastered: 0})\n : progresses[tagId]\n }\n showExpertEducators\n educatorLayout={'column'}\n educators={educators}\n detailsBorder={false}\n withHeaderPadding={false}\n />\n ))}\n \n \n \n );\n}\n\nHome.propTypes = {};\nHome.defaultProps = {};\n\nexport default Home;\n","import React, {useCallback} from 'react';\n\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\nimport {Link} from 'react-router-dom';\n\nimport MasteryReview from '../components/MasteryReview';\nimport GettingStarted from '../components/GettingStarted';\nimport FAQs from '../components/WebflowFAQs';\n\nimport {H2} from '../../components/Typography';\nimport ClassroomCard from '../components/Cards/ClassroomRow';\n\nimport {useMasteryArray} from '../../hooks';\n\nimport {ReactComponent as Coffee} from '@bootcamp/shared/src/assets/svg/coffee.svg';\n\nimport {getStreakDetails, getTestsByClassroom} from '@bootcamp/shared/src/util';\nimport {getClassroomQuestionCounts, getClassroomCourseBlockCounts} from '@bootcamp/shared/src/requests';\nimport {formatClassroomMastery, formatClassroomVideoProgress} from '@bootcamp/shared/src/util/formatting';\nimport {useAsync, useTestProgressArray} from '../../hooks';\nimport {useBootcampConfigContext} from '../../contexts/BootcampConfig';\n\nimport Container from '../pages/PageContainer';\n\nimport styled from 'styled-components';\n\n\nconst Title = styled(H2)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n margin-bottom: ${({theme}) => theme.layouts.spacing.xl};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst StyledClassroomCard = styled(ClassroomCard)`\n flex: 1;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n`;\nconst CardWrapper = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n margin-bottom: ${({theme}) => theme.layouts.spacing.xl};\n`;\n\nconst Home = props => {\n const {config} = useBootcampConfigContext();\n\n useDocumentTitle(` ${config.meta.siteTitle} | Home`);\n\n const bootcamp = 'chemistry';\n\n const coursesByClassroom = getTestsByClassroom(config?.classrooms, [], ['Course']);\n const testsByClassroom = getTestsByClassroom(config?.classrooms);\n\n const getCourseBlockCounts = useCallback(() => getClassroomCourseBlockCounts(bootcamp, coursesByClassroom), []);\n const getQuestionCounts = useCallback(() => getClassroomQuestionCounts(bootcamp, testsByClassroom), [])\n\n const {value: courseBlockCounts} = useAsync(getCourseBlockCounts);\n const {value: questionCounts} = useAsync(getQuestionCounts);\n\n const todayActions = [\n {\n interactionKey: `Streak-DWU-${bootcamp}`,\n icon: {\n component: Coffee,\n text: 'Daily Warmup', themeColor: 'royal'\n },\n text: 'New questions brewed daily just for you',\n containerProps: {\n as: Link,\n to: `/${bootcamp}/quick-study`,\n },\n checkIfComplete: interactionObj => {\n const {streak, date: streakDate} = JSON.parse((interactionObj || {}).value || '{}');\n const {streakCompletedToday} = getStreakDetails(streak, streakDate);\n return streakCompletedToday;\n }\n },\n ];\n\n const [gcVideoProgress] = useTestProgressArray(coursesByClassroom['general-chemistry'], formatClassroomVideoProgress);\n const [ocVideoProgress] = useTestProgressArray(coursesByClassroom['organic-chemistry'], formatClassroomVideoProgress);\n\n const videoProgressMap = {\n 'general-chemistry': gcVideoProgress,\n 'organic-chemistry': ocVideoProgress,\n };\n\n const progresses = useMasteryArray(config.classrooms.reduce((acc, {tagId, tagIds}) => tagIds ? [...acc, ...tagIds] : [...acc, tagId], []), 'subject', data => formatClassroomMastery(data, 'subject'));\n const loading = Object.keys(progresses).length === 0;\n\n const classroomMasteryConfig = config.classrooms\n .filter(({locked}) => !locked)\n .map(({name, route, tagId, tagIds}) => ({\n name,\n route,\n progress: tagIds\n ? Object.keys(progresses)\n .reduce((acc, tagId) => tagIds.includes(tagId)\n ? {\n learning: (acc.learning || 0) + progresses[tagId].learning,\n reviewing: (acc.reviewing || 0) + progresses[tagId].reviewing,\n mastered: (acc.mastered || 0) + progresses[tagId].mastered,\n }\n : acc, {})\n : progresses[tagId]\n })\n );\n\n return (\n \n \n \n Chemistry Courses\n \n \n {config?.classrooms?.map(({icon, themePalette, name, route, tagId, tagIds, locked, comingSoon, showVideoProgress, videoLessonCount, questionCount, educators}) => (\n ({learning: acc.learning + progresses[tagId].learning, reviewing: acc.reviewing + progresses[tagId].reviewing, mastered: acc.mastered + progresses[tagId].mastered}), {learning: 0, reviewing: 0, mastered: 0})\n : progresses[tagId]\n }\n showExpertEducators\n educatorLayout={'column'}\n educators={educators}\n detailsBorder={false}\n withHeaderPadding={false}\n />\n ))}\n \n \n \n );\n}\n\nHome.propTypes = {};\nHome.defaultProps = {};\n\nexport default Home;\n","import React, {useState, useCallback, useMemo} from 'react';\n\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\nimport styled from 'styled-components';\n\nimport MasteryCard, { NCLEXMasteryCard } from '../../components/MasteryReview/Card';\nimport MasterySelect, {TopicSelect} from '../../components/MasteryReview/Select';\nimport Breadcrumbs from '../../../components/NavBar/components/Breadcrumbs';\nimport Overview from '../../components/Cards/Overview';\nimport CreateTest from '@bootcamp/web/src/bootcamps/pages/CreateTest';\n\nimport {useMasteryArray} from '../../../hooks';\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\n\nimport {getClassroomQuestionCounts, getReadinessExamAndCaseStudySubjectCounts} from '@bootcamp/shared/src/requests';\nimport {useAsync} from '@bootcamp/shared/src/util/hooks';\nimport {formatClassroomMasteryWithTopic, formatMasteryCardLink} from '@bootcamp/shared/src/util/formatting';\nimport {getTestsByClassroom} from '@bootcamp/shared/src/util';\n\nimport {Blurb} from '../../components/Performance/shared';\n\nimport {colors} from '@bootcamp/shared/src/styles/theme';\n\nimport emily from '@bootcamp/shared/src/assets/educators/emily_giddings.jpeg';\nimport ari from '@bootcamp/shared/src/assets/educators/ari.gif';\n\nimport Container from '../PageContainer';\nimport { useUserDataContext } from '../../../contexts/UserData';\nimport { useModalContext } from '../../../contexts/Modal';\n\nimport {H1} from '../../../components/Typography';\n\nconst Title = styled(H1)`\n color: white;\n margin-bottom: 12px;\n`;\n\nconst StyledOverview = styled(Overview)`\n margin-bottom: 0;\n background: none;\n border: none;\n box-shadow: none;\n padding: 0px;\n\n /* copy / pasted from the Hero typography element for easy testing */\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-bottom: 0px;\n }\n`;\nconst StyledBreadcrumbs = styled(Breadcrumbs)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n`;\nconst Wrapper = styled.div`\n`;\nconst StyledMasterySelect = styled(MasterySelect)`\n margin: 0px ${({theme}) => theme.layouts.spacing.s} ${({theme}) => theme.layouts.spacing.xl} 0px;\n`;\nconst NCLEXMasterySelect = styled(StyledMasterySelect)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n\n select {\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n font-weight: normal;\n padding: 8px 12px;\n }\n svg {\n stroke: ${({theme}) => theme.colors.neutralsPalette.white};\n }\n`;\nconst CardWrapper = styled.div`\n display: flex;\n flex-direction: ${({flexDirection}) => flexDirection};\n width: 100%;\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n }\n`;\nconst StyledBlurb = styled(Blurb)`\n margin: ${({theme}) => theme.layouts.spacing.s} 0px ${({theme}) => theme.layouts.spacing.m};\n`;\n\nconst NCLEXReviewBanks = ({bootcamp, config, isUpgraded}) => {\n const [filter, setFilter] = useState(null);\n const [topicFilter, setTopicFilter] = useState(null);\n\n const filteredClassrooms = config\n ?.classrooms\n ?.filter(({testing, free, route}) => !testing && !(isUpgraded && free) && !['next-gen-strategy-course'].includes(route));\n\n const testsByClassroom = getTestsByClassroom(filteredClassrooms);\n const {modalDispatch} = useModalContext();\n\n const getQuestionCounts = useCallback(async () => {\n try {\n const classroomQuestionCounts = await getClassroomQuestionCounts(bootcamp, testsByClassroom);\n if (bootcamp === 'nclex') {\n const readinessExamSubjectCounts = await getReadinessExamAndCaseStudySubjectCounts();\n classroomQuestionCounts.classroomQuestionCounts = Object.keys(classroomQuestionCounts.classroomQuestionCounts).reduce((acc, key) => ({\n ...acc,\n [key]: classroomQuestionCounts.classroomQuestionCounts[key] + readinessExamSubjectCounts[key]\n }), {});\n }\n return classroomQuestionCounts;\n } catch (error) {\n console.log(error);\n }\n },[])\n let {value: questionCounts, pending} = useAsync(getQuestionCounts);\n if (isUpgraded) {\n delete questionCounts?.classroomQuestionCounts?.['free-questions'];\n }\n const totalQuestions = Object\n .values(questionCounts?.classroomQuestionCounts || {})\n .reduce((acc, curr) => !curr ? acc : acc + curr, 0);\n\n const testIds = Object.values(testsByClassroom)?.reduce((acc, testIds) => [...acc, ...testIds], []);\n\n const progresses = useMasteryArray(testIds, 'test');\n const activeClassroomFilter = filter !== 'all' ? filteredClassrooms.find(({name}) => name === filter) : null;\n const loading = !Object.keys(progresses || {}).length || pending;\n\n const progressIndexedByTestId = useMemo(() => {\n return Object.keys(progresses)\n ?.reduce((acc, key) => ([\n ...acc,\n ...progresses[key]?.data?.QuestionMasteryByTestId?.items\n ]), [])\n ?.reduce((acc, data) => {\n const testId = data?.userIdHashTestId?.split('#')[1];\n\n const name = Object\n .keys(testsByClassroom)\n .find(key => testsByClassroom[key].includes(testId));\n\n const masteryLevel = data?.masteryLevel;\n const bookmarked = data?.bookmarked;\n\n return {\n ...acc,\n [name]: {\n ...(acc[name] || {}),\n [masteryLevel]: (acc?.[name]?.[masteryLevel] || 0) + 1,\n bookmarked: (acc?.[name]?.bookmarked || 0) + bookmarked,\n }\n };\n }, {});\n\n }, [progresses]);\n\n const classroomProgress = filteredClassrooms\n .filter(({name}) => !activeClassroomFilter ? true : activeClassroomFilter?.name === name)\n .map(({name, route}) => ({\n name,\n route,\n progress: progressIndexedByTestId[route],\n }))\n .reduce((acc, {name, progress}) => {\n if (!name || !progress) return acc;\n\n return {\n learning: acc.learning + (progress?.learning || 0),\n reviewing: acc.reviewing + (progress?.reviewing || 0),\n mastered: acc.mastered + (progress?.mastered || 0),\n bookmarked: acc.bookmarked + (progress?.bookmarked || 0),\n total: acc.total + (progress?.total || 0),\n }\n }, {\n learning: 0,\n reviewing: 0,\n mastered: 0,\n bookmarked: 0,\n total: 0,\n });\n\n // this component isn't using topic filter currently, but leaving in case we decide to implement\n // in the future\n const masteryLevelProgress = activeClassroomFilter && topicFilter && topicFilter !== 'all'\n ? progresses?.[activeClassroomFilter?.tagId]?.byTopic[topicFilter]\n : classroomProgress;\n\n function setSubjectFilter(subjectFilter) {\n setTopicFilter(null);\n setFilter(subjectFilter);\n }\n\n function handleCardClick(masteryLevel) {\n modalDispatch({\n type: 'open',\n component: CreateTest,\n enableClickClose: true,\n componentProps:{\n defaults: {\n subject: activeClassroomFilter?.name,\n masteryLevel\n }\n }\n });\n }\n\n return (\n \n \n {/* {activeClassroomFilter && activeClassroomFilter?.tagId && !loading && progresses?.[activeClassroomFilter?.tagId] &&\n \n } */}\n \n handleCardClick('learning')}\n />\n handleCardClick('reviewing')}\n />\n handleCardClick('mastered')}\n />\n handleCardClick('bookmarked')}\n />\n \n \n );\n}\n\nconst DefaultReviewBanks = ({config, bootcamp}) => {\n const [filter, setFilter] = useState(null);\n const [topicFilter, setTopicFilter] = useState(null);\n\n const filteredClassrooms = config\n ?.classrooms\n ?.filter(({locked, route}) => !locked && !['reading-comprehension'].includes(route))\n\n const subjectTagIds = filteredClassrooms?.reduce((acc, {tagId, tagIds}) => tagIds ? [...acc, ...tagIds] : tagId ? [...acc, tagId] : acc, []);\n\n const progresses = useMasteryArray(subjectTagIds, 'subjectWithQuestionTags', data => formatClassroomMasteryWithTopic(data, 'subject'));\n const activeClassroomFilter = filter !== 'all' ? filteredClassrooms.find(({name}) => name === filter) : null;\n const loading = !Object.keys(progresses || {}).length;\n\n const classroomProgress = filteredClassrooms\n .map(({name, route, tagId, tagIds}) => ({\n name,\n route,\n progress: tagIds?.length > 0\n ? Object.keys(progresses)\n .reduce((acc, tagId) => tagIds.includes(tagId)\n ? {\n learning: (acc.learning || 0) + progresses[tagId].learning,\n reviewing: (acc.reviewing || 0) + progresses[tagId].reviewing,\n mastered: (acc.mastered || 0) + progresses[tagId].mastered,\n bookmarked: (acc.bookmarked || 0) + progresses[tagId].bookmarked,\n }\n : acc, {})\n : progresses[tagId]}))\n .reduce((acc, {name, progress}) => {\n const shouldFilter = filter && filter !== 'all' && filter !== name;\n\n if (!name || !progress || shouldFilter) return acc;\n\n return {\n learning: acc.learning + progress.learning,\n reviewing: acc.reviewing + progress.reviewing,\n mastered: acc.mastered + progress.mastered,\n bookmarked: acc.bookmarked + progress.bookmarked,\n total: acc.total + progress.total,\n }\n }, {\n learning: 0,\n reviewing: 0,\n mastered: 0,\n bookmarked: 0,\n total: 10,\n });\n\n\n const masteryLevelProgress = activeClassroomFilter && topicFilter && topicFilter !== 'all'\n ? progresses?.[activeClassroomFilter?.tagId]?.byTopic[topicFilter]\n : classroomProgress;\n\n function setSubjectFilter(subjectFilter) {\n setTopicFilter(null);\n setFilter(subjectFilter);\n }\n\n return (\n \n !['reading-comprehension', 'review-videos', 'application-services'].includes(route))} onChange={setSubjectFilter} loading={loading} />\n {activeClassroomFilter && activeClassroomFilter?.tagId && !loading && progresses?.[activeClassroomFilter?.tagId] &&\n \n }\n \n \n \n \n \n \n \n );\n}\n\nconst ReviewBanks = props => {\n const {isUpgraded, bootcamp} = useUserDataContext();\n const {config} = useBootcampConfigContext();\n\n useDocumentTitle(` ${config.meta.siteTitle} | Tagged Questions`);\n\n const ReviewBankComponent = bootcamp === 'nclex'\n ? NCLEXReviewBanks\n : DefaultReviewBanks;\n\n return (\n \n \n Tagged Questions\n \n \n \n );\n}\n\nReviewBanks.propTypes = {};\nReviewBanks.defaultProps = {};\n\nexport default ReviewBanks;\n","export default __webpack_public_path__ + \"static/media/alli.b8c1091f.jpg\";","import styled from 'styled-components';\n\nimport {H1, H2, H4, H6, Body2} from '../../../components/Typography';\nimport {Row} from '../../../components/Grid';\nimport {Button} from '../../../components/Branding/Buttons';\n\nimport {CloudDownloadOutline} from '@styled-icons/evaicons-outline/CloudDownloadOutline';\n\nexport const OverviewText = styled(H1)`\n font-size: 36px;\n line-height: 120%;\n color: white;\n font-size: 48px;\n line-height: normal;\n letter-spacing: 0.25px;\n ${({theme}) => theme.mediaQueries.laptop} {\n font-size: 36px;\n line-height: 44px;\n }\n`;\nexport const InstructorDetails = styled(Row)`\n align-items: center;\n justify-content: flex-start;\n margin: 32px 0px;\n height: auto;\n`;\nexport const InstructorDetailsImage = styled.img`\n display: block;\n width: 120px;\n height: 120px;\n border-radius: 100px;\n border: 2px solid white;\n`;\nexport const InstructorDetailsText = styled.div`\n margin-left: 32px;\n max-width: 640px;\n`;\nexport const InstructorDetailsTextHeading = styled(H2)`\n margin-bottom: 16px;\n color: white;\n`;\n\nexport const StyledBody2 = styled(Body2)`\n color: ${({theme}) => theme.overlays.opacity.light._500};\n`;\n\nexport const GuidesContainer = styled(Row)`\n height: auto;\n`;\nexport const GuideWell = styled.div`\n background: ${({theme}) => theme.colors.special.naturalDark};\n border: .5px solid ${({theme}) => theme.overlays.opacity.dark._100};\n box-shadow: ${({theme}) => theme.elevation.inner.progressLight};\n border-radius: 8px;\n padding: ${({theme}) => theme.layouts.spacing.l};\n margin-right: 32px;\n &:last-child {\n margin-right: 0;\n }\n`;\n\nexport const GuideDownloadButton = styled(Button)`\n margin-top: 24px;\n`;\nexport const StyledDownloadIcon = styled(CloudDownloadOutline).attrs(props => ({size: 16}))`\n color: ${({theme}) => theme.overlays.opacity.light._400};\n margin-right: 4px;\n`;\n\nexport const Testimonial = styled.div`\n margin-top: 32px;\n`;\nexport const TestimonialRow = styled(Row)`\n height: auto;\n align-items: center;\n justify-content: center;\n text-align: center;\n margin-top: 16px;\n`;\nexport const TestimonialImage = styled.img`\n display: block;\n width: 48px;\n height: 48px;\n border-radius: 100px;\n`;\nexport const TestimonialAuthor = styled.div`\n margin-left: 10px;\n text-align: left;\n`;\nexport const TestimonialName = styled(H4)`\n color: white;\n margin-bottom: 4px;\n`;\nexport const TestimonialByline = styled(H6)`\n color: ${({theme}) => theme.overlays.opacity.light._400};\n`;\n","import React from 'react';\n\nimport ari from '@bootcamp/shared/src/assets/educators/ari.gif';\nimport alli from '../../../components/Modal/components/Upgrade/assets/alli.jpg';\n\nimport {\n OverviewText,\n InstructorDetails,\n InstructorDetailsImage,\n InstructorDetailsText,\n InstructorDetailsTextHeading,\n StyledBody2,\n GuidesContainer,\n GuideWell,\n GuideDownloadButton,\n StyledDownloadIcon,\n Testimonial,\n TestimonialRow,\n TestimonialImage,\n TestimonialAuthor,\n TestimonialName,\n TestimonialByline,\n} from './shared';\n\nconst studyGuide = (\n <>\n Ari’s Study Guide for DAT Domination\n \n \n \n \n The Step-by-Step Guide on How to Ace the {(new Date()).getFullYear()} DAT\n \n \n I'm Ari, creator of DAT Bootcamp, and in this guide I will outline a study plan that has worked for me and many other students.\n \n \n \n \n \n \n The Study Guide breaks down all of the DAT-specific tips and test-taking strategies to get you up to speed. I recommend reading this first.\n \n window.open('https://drive.google.com/file/d/1fpylXSKDSssHIYClFJzfuczWWaXKr-Xq/view', '_blank')}>\n Get Ari's Study Guide\n \n \n \n \n The Study Schedule is an updated day-by-day manual that covers exactly what materials to study and when to study them to best prepare you for the DAT.\n \n window.open('https://drive.google.com/file/d/1581bvpidp0U_JytpMU_7w9P9iKYbtA1t/view', '_blank')}>\n Get Ari's Study Schedule\n \n \n \n \n \n \"I studied for 8 weeks following Ari’s 2-month study schedule, and I could not have been happier with the pacing; it allowed me enough time to take advantage of all of the excellent resources on DAT Bootcamp, without dragging out the timeline beyond what was necessary.”\n \n \n \n \n Alli Jepsen - 26 AA\n Happy DAT Bootcamp Student\n \n \n \n \n );\n\nexport default studyGuide;\n","import React from 'react';\n\nimport styled from 'styled-components';\n\nimport ari from '@bootcamp/shared/src/assets/educators/ari.gif';\nimport colin from '@bootcamp/shared/src/assets/images/colingustus.jpeg';\n\nimport {\n OverviewText,\n InstructorDetails,\n InstructorDetailsImage,\n InstructorDetailsText,\n InstructorDetailsTextHeading,\n StyledBody2,\n GuidesContainer,\n GuideWell,\n GuideDownloadButton,\n StyledDownloadIcon,\n Testimonial,\n TestimonialRow,\n TestimonialImage,\n TestimonialAuthor,\n TestimonialName,\n TestimonialByline,\n} from './shared';\n\nconst StyledTestimonialImage = styled(TestimonialImage)`\n border: 1px solid white;\n border-radius: 100px;\n`;\n\nconst studyGuide = (\n <>\n Ari’s Study Guide for INBDE Domination\n \n \n \n \n The Step-by-Step Guide on How to Pass the {(new Date()).getFullYear()} INBDE\n \n \n I'm Ari, creator of INBDE Bootcamp, and in this guide I will outline a study plan that will help you prepare the right way for the INBDE.\n \n \n \n \n \n \n Learn exactly how to save 100s of hours of your life and pass the INBDE the first time.\n \n window.open('https://docs.google.com/document/d/1JL5kU_tUSoDMU0Km6umldqIZ1RUvpLEUhdtYMrDuhdw/edit?usp=sharing', '_blank')}>\n Get Ari's Study Guide\n \n \n \n \n \n \"INBDE Bootcamp and Mental Dental are literally ALL YOU NEED to pass the INBDE. Bootcamp saved me so much time studying.\"\n \n \n \n \n Colin Gustus - January {(new Date()).getFullYear()} INBDE Pass\n Happy INBDE Bootcamp Student\n \n \n \n \n );\n\nexport default studyGuide;\n","import React from 'react';\n\nimport ari from '@bootcamp/shared/src/assets/educators/ari.gif';\nimport hannah from '@bootcamp/shared/src/assets/images/hannah.png';\n\nimport {\n OverviewText,\n InstructorDetails,\n InstructorDetailsImage,\n InstructorDetailsText,\n InstructorDetailsTextHeading,\n StyledBody2,\n GuidesContainer,\n GuideWell,\n GuideDownloadButton,\n StyledDownloadIcon,\n Testimonial,\n TestimonialRow,\n TestimonialImage,\n TestimonialAuthor,\n TestimonialName,\n TestimonialByline,\n} from './shared';\n\nconst studyGuide = (\n <>\n Ari’s Study Guide for OAT Domination\n \n \n \n \n The Step-by-Step Guide on How to Ace the {(new Date()).getFullYear()} OAT\n \n \n I'm Ari, creator of OAT Bootcamp, and in this guide I will outline a study plan that has worked for me and many other students.\n \n \n \n \n \n \n The Study Guide breaks down all of the OAT-specific tips and test-taking strategies to get you up to speed. I recommend reading this first.\n \n window.open('https://docs.google.com/document/d/1ebIvj21aXOipfYCCuMyWaWmzD4HDLY2CjutTXz84BEY/edit?usp=sharing', '_blank')}>\n Get Ari's Study Guide\n \n \n \n \n The Study Schedule is an updated day-by-day manual that covers exactly what materials to study and when to study them to best prepare you for the OAT.\n \n window.open('https://drive.google.com/file/d/11Dm4qy6GlKoq5z97uXejomn1VmE8-s5t/view', '_blank')}>\n Get Ari's Study Schedule\n \n \n \n \n \n “This resource honestly saved my life. Once I started with Bootcamp, everything changed.”\n \n \n \n \n Hannah Grimes - 360 AA | 380 BIO | 350 GC | 400 OC\n Happy OAT Bootcamp Student\n \n \n \n \n );\n\nexport default studyGuide;\n","import React from 'react';\n\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\nimport styled from 'styled-components';\n\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport Breadcrumbs from '../../../components/NavBar/components/Breadcrumbs';\n\nimport Container from '../PageContainer';\n\nimport datStudyGuide from './dat';\nimport inbdeStudyGuide from './inbde';\nimport oatStudyGuide from './oat';\n\n\nconst StyledBreadcrumbs = styled(Breadcrumbs)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n`;\n\nconst studyGuides = {\n dat: datStudyGuide,\n oat: oatStudyGuide,\n inbde: inbdeStudyGuide\n};\n\nconst StudyGuides = props => {\n const {config} = useBootcampConfigContext();\n const {bootcamp} = useUserDataContext();\n\n useDocumentTitle(` ${config.meta.siteTitle} | Study Guides`);\n\n return (\n \n \n {studyGuides[bootcamp]}\n \n );\n}\n\nStudyGuides.propTypes = {};\nStudyGuides.defaultProps = {};\n\nexport default StudyGuides;\n","import React from 'react';\nimport styled, {css} from 'styled-components';\nimport {Link} from 'react-router-dom';\nimport {H3, H5} from '@bootcamp/web/src/components/Typography';\n\nimport {formatDurationString} from '@bootcamp/shared/src/util';\n\nconst ResultContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n border-radius: 8px;\n overflow: hidden;\n background: transparent;\n text-decoration: none;\n box-shadow: ${({theme}) => theme.elevation.shadow.low};\n transition: all 100ms ease;\n height: ${({layoutType}) => layoutType === 'row' ? '242px' : '264px'};\n\n &:hover {\n transform: scale(1.01);\n box-shadow: ${({theme}) => theme.elevation.shadow.high};\n }\n\n ${({layoutType}) => layoutType === 'row' && css`\n min-width: 308px;\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n `}\n\n`;\nconst ThumbnailContainer = styled.div`\n background: url(\"${({vimeoId}) => `https://vercel-vimeo.vercel.app/api/vimeo?id=${vimeoId}&size=3`}\");\n background-size: 100%;\n width: 100%;\n height: 100%;\n position: relative;\n flex: 1;\n`;\nconst Details = styled.div`\n width: 100%;\n padding: 12px 16px;\n background: linear-gradient(180deg, #FFFFFF 0%, #FFFFFF 50.68%, #EBEBEB 100%);\n border-top: 1px solid #EDEDF0;\n`;\n\nconst DetailsTitle = styled(H3)`\n margin-bottom: 4px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\nconst DetailsSubject = styled(H5)`\n color: #85868E;\n`;\n\nconst Overlay = styled.div`\n /* background: linear-gradient(332.24deg, rgba(21, 26, 30, 0.1) 0%, rgba(0, 0, 0, 0) 53.57%), linear-gradient(180deg, rgba(17, 18, 20, 0) 51.49%, rgba(21, 26, 30, 0.1) 100%); */\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n position: absolute;\n`;\n\nconst Duration = styled.div`\n background: black;\n opacity: .7;\n border-radius: 64px;\n font: proxima-nova;\n font-weight: 700;\n font-size: 12px;\n line-height: 12px;\n color: white;\n padding: 4px 8px;\n margin: auto 12px 12px auto;\n`;\n\nconst Result = ({video, route, name, contentTypeName, layoutType='grid'}) => {\n const {id, duration} = JSON.parse(video || '{}');\n\n return (\n \n \n \n \n \n \n
\n {name}\n {contentTypeName}\n
\n
\n )\n}\n\nexport default Result;\n","import React, {useState, useEffect, useRef} from 'react';\nimport {Link} from 'react-router-dom'\n\nimport styled from 'styled-components';\nimport {useBootcampConfigContext} from '@bootcamp/web/src/contexts/BootcampConfig';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {useDebounce} from '@bootcamp/shared/src/util/hooks';\nimport {resolveIconPath} from '@bootcamp/web/src/helpers';\nimport {useHistoryState} from '@bootcamp/web/src/hooks';\nimport SearchBar from '@bootcamp/web/src/bootcamps/components/SearchBar';\nimport {H1, H2, Body3} from '@bootcamp/web/src/components/Typography';\nimport Result from './Result';\nimport {ScrollContainer, Wrapper} from '@bootcamp/web/src/bootcamps/pages/PageContainer';\nimport {Waypoint} from 'react-waypoint';\nimport {LoadingSpinner} from '@bootcamp/web/src/components/Branding';\nimport {IntercomAPI} from 'react-intercom';\nimport firstBy from 'thenby';\nimport Breadcrumbs from '@bootcamp/web/src/components/NavBar/components/Breadcrumbs';\nimport {IconButton} from '../../../components/Branding/Buttons';\n\nimport {ChevronRight} from '@styled-icons/heroicons-outline/ChevronRight';\nimport {ChevronLeft} from '@styled-icons/heroicons-outline/ChevronLeft';\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\n\nconst StyledBreadcrumbs = styled(Breadcrumbs)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n`;\nconst Container = styled(ScrollContainer)`\n padding-left: 0;\n padding-right: 0;\n`;\nconst StyledPageWrapper = styled(Wrapper)`\n padding-left: 0;\n padding-right: 0;\n`;\nconst HorizontalPaddingWrapper = styled.div`\n width: 100%;\n padding: 0 ${({theme}) => theme.layouts.spacing.xl};\n\n ${({theme: {mediaQueries}}) => mediaQueries.tablet} {\n padding: 0 ${({theme}) => theme.layouts.spacing.m};\n }\n`;\n\nconst Heading = styled(H1)`\n color: white;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n cursor: pointer;\n ${({theme}) => theme.mediaQueries.laptop} {\n font-size: 36px;\n line-height: 44px;\n }\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\n\nconst ResultGridContainer = styled.div`\n display: grid;\n grid-auto-flow: row;\n grid-template-columns: repeat(3, 1fr);\n gap: 16px;\n width: 100%;\n padding: ${({theme}) => theme.layouts.spacing.m} 0px ${({theme}) => theme.layouts.spacing.s};\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n\n ${({theme}) => theme.mediaQueries.custom(820)} {\n grid-template-columns: repeat(2, 1fr);\n }\n ${({theme}) => theme.mediaQueries.mobileL} {\n grid-template-columns: repeat(1, 1fr);\n }\n`;\nconst ResultRowContainer = styled.div`\n display: flex;\n width: 100%;\n `;\nconst ResultRowWrapper = styled.div`\n display: flex;\n overflow-x: auto;\n padding: ${({theme}) => theme.layouts.spacing.m} 12px ${({theme}) => theme.layouts.spacing.s};\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n margin-left: -12px;\n`;\nconst StyledSearchBar = styled(SearchBar)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n`;\nconst Chiclets = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n margin-bottom: 36px;\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-wrap: nowrap;\n overflow-x: auto;\n }\n`;\nconst ChicletContainer = styled.div`\n padding: 6px;\n border-radius: 64px;\n background: rgba(255, 255, 255, 0.1);\n /* opacities / light-100 */\n\n border: 1px solid rgba(255, 255, 255, 0.1);\n display: flex;\n flex-direction: row;\n align-items: center;\n width: auto;\n white-space: nowrap;\n cursor: pointer;\n margin-bottom: 12px;\n margin-right: 10px;\n font-family: 'proxima-nova';\n font-style: normal;\n font-weight: 600;\n font-size: 14px;\n color: white;\n\n &:hover {\n background: ${({theme}) => theme.overlays.opacity.light._200};\n }\n\n`;\nconst ChicletIcon = styled.img`\n width: 16px;\n height: 16px;\n margin-right: 4px;\n`;\n\nconst assetPathMap = {\n 'Cardiology': 'icons/msb/heart.png',\n 'Dermatology': 'icons/msb/hair.png',\n 'Embryology': 'icons/msb/embryo.png',\n 'Gastroenterology': 'icons/msb/intestine.png',\n 'Gross Anatomy': 'icons/msb/anatomy.png',\n 'Hematology & Oncology': 'icons/msb/blood.png',\n 'Histology': 'icons/msb/histo.png',\n 'Immunology': 'icons/msb/virus.png',\n 'Nephrology': 'icons/msb/nephro.png',\n 'Neuroanatomy': 'icons/msb/brain.png',\n 'Neurology': 'icons/msb/brain.png',\n 'Psychiatry': 'icons/msb/psych.png',\n 'Pulmonology': 'icons/msb/lung.png',\n 'Biostatistics': 'icons/msb/biostatistics.png',\n 'Endocrinology': 'icons/msb/endo.png',\n 'Genetics': 'icons/msb/genetics.png',\n 'Reproduction': 'icons/womb.png',\n 'Musculoskeletal': 'icons/musculoskeletal.png',\n 'Public Health Sciences': 'icons/pubhealthsci.png',\n 'Biochemistry': 'icons/chemistry/oc.png',\n 'Microbiology': 'icons/msb/microbio.png',\n 'Pathology': 'icons/chemistry/gc.png'\n};\n\nconst Chiclet = ({subject, onClick}) => {\n function getIcon () {\n try {\n return assetPathMap[subject] ? : null\n } catch (e) {\n return null\n }\n }\n return (\n \n {getIcon()} {subject}\n \n )\n}\n\nconst SubjectHeading = styled(H2)`\n display: flex;\n flex-direction: column;\n color: white;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n align-items: flex-start;\n }\n`;\nconst SubjectSection = styled.div`\n\n padding-left : ${({theme}) => theme.layouts.spacing.xl};\n padding-right: ${({grid, theme}) => grid ? theme.layouts.spacing.xl : 0};\n\n ${({theme: {mediaQueries}}) => mediaQueries.tablet} {\n padding-left: ${({theme}) => theme.layouts.spacing.m};\n padding-right: ${({grid, theme}) => grid ? theme.layouts.spacing.m : 0};\n }\n`;\nconst ClassroomLink = styled(Link)`\n text-decoration: none;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-left: 0;\n }\n `;\nconst ClassroomLinkText = styled(Body3)`\n color: ${({theme}) => theme.overlays.opacity.light._400};\n font-weight: 400;\n\n &:hover {\n text-decoration: underline;\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n }\n`;\nconst SectionHeader = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n`;\nconst ButtonWrapper = styled.div`\n display: flex;\n margin-right: ${({theme}) => theme.layouts.spacing.xl};\n\n ${({theme: {mediaQueries}}) => mediaQueries.tablet} {\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst ScrollButton = styled(IconButton)`\n width: 40px;\n height: 40px;\n\n &:first-child {\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\n\nconst LoadingContainer = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst CalloutContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n width: 100%;\n padding: 16px 24px;\n border-radius: 8px;\n margin-bottom: 16px;\n background: rgba(255, 255, 255, 0.1);\n border: 0.5px solid rgba(255, 255, 255, 0.05);\n`;\n\nconst CalloutText = styled(Body3)`\n color: white;\n a {\n color: white;\n }\n`;\n\nconst ResultSectionGrid = ({subject, route, results}) => {\n return (\n \n \n \n {subject}\n \n View all videos and question banks\n \n \n \n \n {results.map((props, index) => )}\n \n \n );\n\n}\nconst ResultSectionRow = ({subject, route, results}) => {\n const [scrollPosition, setScrollPosition] = useState();\n const [containerDimensions, setContainerDimensions] = useState();\n const scrollRef = useRef();\n const leftScrollDisabled = !scrollPosition || scrollPosition <= 0;\n const rightScrollDisabled = (scrollPosition + containerDimensions?.width) >= containerDimensions?.scrollWidth;\n const sectionScrollEnabled = Math.round(containerDimensions?.scrollWidth) > Math.round(containerDimensions?.width);\n\n const handleButtonClick = direction => {\n const currentScrollPosition = scrollRef?.current?.scrollLeft;\n const updatedScrollPosition = direction === 'right'\n ? currentScrollPosition + 324\n : Math.max(currentScrollPosition - 324, 0);\n\n setScrollPosition(updatedScrollPosition);\n\n scrollRef?.current?.scrollTo({\n left: updatedScrollPosition,\n behavior: 'smooth',\n })\n };\n\n useEffect(() => {\n const scrollWidth = scrollRef?.current?.scrollWidth;\n const {width} = scrollRef?.current?.getBoundingClientRect() || {};\n\n scrollWidth && width && setContainerDimensions({scrollWidth, width});\n\n }, [scrollRef?.current]);\n\n return (\n \n \n \n \n {subject}\n \n View all videos and question banks\n \n \n \n {sectionScrollEnabled &&\n \n handleButtonClick('left')} type={'secondary'} size={'small'} disabled={leftScrollDisabled}>\n \n \n handleButtonClick('right')} type={'secondary'} size={'small'} disabled={rightScrollDisabled}>\n \n \n \n }\n \n \n \n {results.map((props, index) => )}\n \n \n \n );\n\n}\n\nconst ExplorePage = props => {\n useDocumentTitle('Med School Bootcamp | Explore')\n const {intercomUserAttributes, refreshIntercomUserAttributes} = useUserDataContext();\n\n const [search, setSearch] = useHistoryState('search', '');\n const [hits, setHits] = useHistoryState('hits', []);\n const [limit, setLimit] = useState(51);\n const {indexedConfig, config} = useBootcampConfigContext();\n const debouncedSearch = useDebounce(search, 250);\n\n function getResults (search) {\n setLimit(51);\n return Object\n .keys(indexedConfig)\n .filter(key => search ? (search.toLowerCase().split(' ').every(el => key.toLowerCase().includes(el)) && !!indexedConfig[key].video) : key.includes('medschooldefault') && !!indexedConfig[key].video).map(key => indexedConfig[key])\n }\n\n useEffect(() => {\n setHits(getResults(search));\n }, [debouncedSearch, indexedConfig]);\n\n const subjects = (config?.classrooms.map(({name, route}) => ({name, route})) || []).sort();\n\n const resultsSplitBySubject = hits.sort(firstBy('subject')).slice(0, limit)\n .reduce((acc, hit) => acc[hit.subject] ? {...acc, [hit.subject]: [...acc[hit.subject], hit]} : {...acc, [hit.subject]: [hit]}, {})\n\n const SectionComponent = search ? ResultSectionGrid : ResultSectionRow;\n\n const resultsBySubject = Object.keys(resultsSplitBySubject).map((subject, index) => {\n return (\n name === subject)?.route}\n results={resultsSplitBySubject[subject]}\n type={search ? 'column' : 'row'}\n />\n );\n })\n\n const clear = () => {\n setSearch('')\n setHits(Object\n .keys(indexedConfig)\n .filter(key => key.includes('medschooldefault') && !!indexedConfig[key].video).map(key => indexedConfig[key]))\n }\n\n return (\n \n \n \n \n Explore\n setSearch(e.target.value)}\n clear={clear}\n value={search}\n />\n {\n setHits(getResults(name));\n setSearch(name);\n }} />)} />\n {!Object.keys(indexedConfig).length && }\n \n\n {resultsBySubject}\n\n hits.length > limit && setLimit(limit => limit + 12)} />\n \n {search && Object.keys(indexedConfig).length > 0 && hits.length === 0 && (\n \n \n Don't see what you're looking for? IntercomAPI('showNewMessage', `I'm looking for: ${search}`)}>Submit a content request.\n \n \n )}\n \n \n \n\n )\n}\n\nexport default ExplorePage;\n","import React from 'react';\nimport styled from 'styled-components';\nimport useHotkeys from \"@reecelucas/react-use-hotkeys\";\nimport {Button} from '@bootcamp/web/src/components/Branding/Buttons';\nimport {Tag} from '@styled-icons/fluentui-system-filled/Tag';\n\nconst MasteryButtonWrapper = styled.div`\n`;\n\nexport const MasteryButton = props => {\n useHotkeys(props.hotkey, props.onClick, [props.onClick]);\n useHotkeys('ArrowLeft', props.handlePreviousQuestion ? props.handlePreviousQuestion : () => true, [props.handlePreviousQuestion]);\n useHotkeys('ArrowRight', props.handleNextQuestion ? props.handleNextQuestion : () => true, [props.handleNextQuestion]);\n return (\n \n \n \n \n \n );\n};\n\nconst HeaderWrapper = styled.div`\n`;\n\nexport const HyperlinkRenderer = ({close, associatedHyperlink, theme, headerContent, fixed, useNCLEXTable, hyperlinksRef, isVideo}) => {\n const {ref, height} = useResizeObserver();\n const header = (\n \n {headerContent ||
Exhibit: Display
}\n
\n );\n\n if (associatedHyperlink?.includes('class=\"tab-container\"')) {\n const parser = new DOMParser();\n const doc = parser.parseFromString(associatedHyperlink, 'text/html');\n const tabLinks = Array.from(doc.querySelectorAll('.tab-link'));\n const tabContents = Array.from(doc.querySelectorAll('.tab-content'));\n const tabs = tabLinks.map((link, index) => ({\n title: link.innerHTML,\n content: tabContents[index].innerHTML,\n active: link.classList.contains('active') || index == 0\n }));\n return (\n \n Exhibit: Display} footerContent={} color={theme} fixed={fixed}>\n \n \n \n )\n }\n\n if (associatedHyperlink?.match('} color={theme} fixed={fixed}>\n \n \n )\n }\n return (\n \n } color={theme} fixed={fixed}>\n \n \n \n \n \n)}","import React, {useEffect, useState, useMemo} from 'react';\n\nimport {H3, H4, Body3} from '../../Typography';\n\nimport {getTestBlock} from '@bootcamp/shared/src/requests';\nimport {findInConfigById, formatDurationString} from '@bootcamp/shared/src/util';\n\nimport styled from 'styled-components';\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {InformationCircle} from '@styled-icons/heroicons-outline/InformationCircle';\nimport {Play} from '@styled-icons/heroicons-solid/Play';\nimport {PlayCircle} from '@styled-icons/fluentui-system-filled/PlayCircle';\n\nconst HeaderImage = styled(PlayCircle)`\n margin-right: 12px;\n color: ${({theme}) => theme.darkModeEnabled ? theme.colors.neutralsPalette.lightGrey : '#2F3037'};\n`;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n border: 1px solid ${({theme}) => theme.darkModeEnabled ? '#333333' : theme.colors.neutralsPalette.light};\n border-radius: 8px;\n background: ${({theme}) => theme.darkModeEnabled ? 'transparent' : 'white'};\n overflow: hidden;\n margin-bottom: 32px;\n`;\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n`;\nconst ContentWrapper = styled.div`\n display: flex;\n align-items: center;\n flex: 1;\n`;\nconst TextWrapper = styled.div`\n padding: 0 ${({theme}) => theme.layouts.spacing.m};\n flex: 1;\n margin: ${({theme}) => theme.layouts.spacing.m} 0 0;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin: ${({theme}) => theme.layouts.spacing.m} 0;\n padding-left: 0;\n }\n`;\nconst Duration = styled(H4)`\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n margin-right: 8px;\n`;\nconst PlayButton = styled(PlayCircle)`\n color: #85868E;\n`;\nconst VideoTitle = styled(H4)`\n color: ${({theme}) => theme.darkModeEnabled ? 'white' : '#2F3037'};\n`;\nconst SubjectText = styled(Body3)`\n color: #85868E;\n`;\nconst Header = styled.div`\n display: flex;\n align-items: center;\n padding: 12px 16px;\n border-bottom: 1px solid ${({theme}) => theme.darkModeEnabled ? '#333333' : theme.colors.neutralsPalette.light};\n height: 56px;\n`;\nconst HeaderText = styled(H3)`\n margin-right: ${({theme}) => theme.layouts.spacing.ms};\n`;\nconst InformationIcon = styled(InformationCircle)`\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n`;\nconst VideoContainer = styled.a`\n display: flex;\n flex-flow: row wrap;\n text-decoration: none;\n flex: 1;\n padding: ${({theme}) => theme.layouts.spacing.m};\n\n &:hover {\n background: ${({theme}) => theme.colors.neutralsPalette.extraLight};\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n }\n`;\nconst Thumbnail = styled.div`\n background: url(\"${({vimeoId}) => `https://vercel-vimeo.vercel.app/api/vimeo?id=${vimeoId}&size=3`}\");\n background-size: 100%;\n position: relative;\n width: 160px;\n height: 90px;\n border-radius: 4px;\n box-shadow: 0px 4px 8px rgba(0, 0, 0, .1);\n\n\n ${({theme}) => theme.mediaQueries.tablet} {\n width: 100%;\n padding-bottom: 56%;\n }\n`;\n\nfunction parseVideoData(string) {\n try {\n return JSON.parse(string);\n } catch (error) {\n return [];\n }\n}\n\nfunction parseVimeoIdFromBlockContents(block) {\n try {\n const videoComponent = block?.components?.find(({renderType}) => renderType === 'video');\n return JSON.parse(videoComponent?.contents);\n } catch (error) {\n return {};\n }\n}\n\nasync function fetchTestBlock(id) {\n try {\n const result = await getTestBlock(id);\n return result?.data?.getTestBlock;\n } catch (error) {\n return {};\n }\n}\n\nfunction assembleRouteFromConfig(bootcamp, configMatch, blockId) {\n const baseRoute = configMatch?.reduce((acc, {route}) => route ? `${acc}/${route}` : acc, `/${bootcamp}`);\n return `${baseRoute}?blockId=${encodeURIComponent(blockId)}`;\n}\n\nfunction formatConfigMatch(config, testId) {\n return findInConfigById(config, testId)?.reverse()?.slice(0, -1);\n}\n\nconst RelatedVideo = ({blockId, blockName, testId}) => {\n const [block, setBlock] = useState(null);\n\n const {bootcamp} = useUserDataContext();\n const {config} = useBootcampConfigContext();\n\n const {id: vimeoId, duration} = parseVimeoIdFromBlockContents(block);\n const configMatch = useMemo(() => formatConfigMatch(config, testId), [testId]);\n const subjectMatch = configMatch?.[0];\n const route = assembleRouteFromConfig(bootcamp, configMatch, blockId);\n\n\n useEffect(() => {\n\n async function getRelatedVideo() {\n const testBlock = await fetchTestBlock(blockId);\n setBlock(testBlock)\n }\n\n getRelatedVideo(blockId);\n\n }, []);\n\n return (\n \n \n \n \n {blockName}\n {subjectMatch?.name}\n \n {formatDurationString(duration)}\n \n \n \n );\n}\n\nconst RelatedVideos = ({videos}) => {\n const parsedVideos = parseVideoData(videos);\n if (!parsedVideos?.length) return null;\n return (\n \n
\n \n Related Lessons\n \n
\n \n {parsedVideos.map(({testId, testBlockConnectionTestBlockId, blockName}) => (\n \n ))}\n \n
\n );\n};\n\nRelatedVideos.defaultProps = {};\nRelatedVideos.propTypes = {};\n\nexport default RelatedVideos;\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgScoring(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 20,\n viewBox: \"0 0 16 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.43914 7.4142L6.43268 7.42021L6.42645 7.42645L4.42645 9.42645L4.4264 9.4264L4.42051 9.43249C4.33031 9.52579 4.18167 9.53456 4.07355 9.42645L3.08146 8.43435C3.04007 8.38757 3.01764 8.32691 3.01875 8.2643C3.01989 8.19953 3.04613 8.13774 3.09193 8.09193C3.13774 8.04613 3.19953 8.01989 3.2643 8.01875C3.32691 8.01764 3.38757 8.04007 3.43436 8.08146L3.89645 8.54355L4.25 8.89711L4.60355 8.54355L6.07355 7.07355L6.07979 7.06732L6.0858 7.06086C6.1087 7.0363 6.1363 7.0166 6.16696 7.00293C6.19763 6.98927 6.23073 6.98192 6.2643 6.98133C6.29787 6.98074 6.33121 6.98691 6.36234 6.99949C6.39347 7.01206 6.42174 7.03077 6.44548 7.05452C6.46923 7.07826 6.48794 7.10653 6.50051 7.13766C6.51309 7.16879 6.51926 7.20213 6.51867 7.2357C6.51808 7.26927 6.51073 7.30237 6.49707 7.33304C6.4834 7.3637 6.4637 7.3913 6.43914 7.4142ZM6.42051 12.5675L6.42045 12.5676L6.42645 12.5736C6.53456 12.6817 6.52579 12.8303 6.43249 12.9205L6.43244 12.9205L6.42645 12.9264L4.42645 14.9264C4.31833 15.0346 4.16969 15.0258 4.07949 14.9325L4.07955 14.9324L4.07355 14.9264L3.07355 13.9264L3.06731 13.9202L3.06086 13.9142C3.0363 13.8913 3.0166 13.8637 3.00293 13.833C2.98927 13.8024 2.98192 13.7693 2.98133 13.7357C2.98074 13.7021 2.98691 13.6688 2.99949 13.6377C3.01206 13.6065 3.03077 13.5783 3.05451 13.5545C3.07826 13.5308 3.10654 13.5121 3.13766 13.4995C3.16879 13.4869 3.20214 13.4807 3.2357 13.4813C3.26927 13.4819 3.30237 13.4893 3.33304 13.5029C3.36371 13.5166 3.39131 13.5363 3.4142 13.5609L3.42021 13.5673L3.42645 13.5736L3.89645 14.0436L4.25 14.3971L4.60355 14.0436L6.07355 12.5736C6.18167 12.4654 6.33031 12.4742 6.42051 12.5675ZM11.5011 2.28326L11.99 2.26698V2.5V2.6H12V2.5H13.75C14.7224 2.5 15.5 3.28469 15.5 4.25V17.75C15.5 18.7224 14.7153 19.5 13.75 19.5H2.25C1.27759 19.5 0.5 18.7153 0.5 17.75V4.25C0.5 3.27759 1.28469 2.5 2.25 2.5H4.01H4.45578L4.50672 2.05715C4.60815 1.1755 5.34805 0.5 6.25 0.5H9.74958C10.1902 0.500792 10.6143 0.667776 10.9372 0.967608C11.2468 1.25509 11.4415 1.6444 11.4864 2.06325L11.4911 2.13326L11.5011 2.28326ZM11.62 3H11.3524L11.204 3.22265C10.8929 3.68929 10.356 4 9.75 4H6.25C5.64396 4 5.10712 3.68929 4.79603 3.22265L4.64759 3H4.38H2.25C1.56386 3 1 3.56386 1 4.25V17.75C1 18.0815 1.13169 18.3995 1.36612 18.6339C1.60054 18.8683 1.91848 19 2.25 19H13.75C14.4361 19 15 18.4361 15 17.75V4.25C15 3.56386 14.4361 3 13.75 3H11.62ZM9 8.25C9 8.11614 9.11614 8 9.25 8H12.75C12.8163 8 12.8799 8.02634 12.9268 8.07322C12.9737 8.12011 13 8.18369 13 8.25C13 8.31631 12.9737 8.37989 12.9268 8.42678C12.8799 8.47366 12.8163 8.5 12.75 8.5H9.25C9.1837 8.5 9.12011 8.47366 9.07322 8.42678C9.02634 8.37989 9 8.3163 9 8.25ZM9.07322 13.5732C9.12011 13.5263 9.1837 13.5 9.25 13.5H12.75C12.8163 13.5 12.8799 13.5263 12.9268 13.5732C12.9737 13.6201 13 13.6837 13 13.75C13 13.8163 12.9737 13.8799 12.9268 13.9268C12.8799 13.9737 12.8163 14 12.75 14H9.25C9.18369 14 9.12011 13.9737 9.07322 13.9268C9.02634 13.8799 9 13.8163 9 13.75C9 13.6837 9.02634 13.6201 9.07322 13.5732ZM9.75 1H6.25C5.91848 1 5.60054 1.1317 5.36612 1.36612C5.1317 1.60054 5 1.91848 5 2.25C5 2.58152 5.1317 2.89946 5.36612 3.13388C5.60054 3.3683 5.91848 3.5 6.25 3.5H9.75C10.0815 3.5 10.3995 3.3683 10.6339 3.13388C10.8683 2.89946 11 2.58152 11 2.25C11 1.91848 10.8683 1.60054 10.6339 1.36612C10.3995 1.1317 10.0815 1 9.75 1Z\",\n stroke: \"#2F3037\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgScoring);\nexport default __webpack_public_path__ + \"static/media/scoring.7576454d.svg\";\nexport { ForwardRef as ReactComponent };","export default __webpack_public_path__ + \"static/media/01.e12bc038.png\";","export default __webpack_public_path__ + \"static/media/PlusMinus.ddc7b38a.png\";","export default __webpack_public_path__ + \"static/media/Rationale.d0105d17.png\";","import React from 'react';\nimport styled, {css} from 'styled-components';\nimport {H3, H5, Body4, Body2} from '../../Typography';\nimport moment from 'moment';\n\nimport {DataUsage as ChartSquareBar} from '@styled-icons/fluentui-system-regular/DataUsage';\nimport {Clock} from '@styled-icons/heroicons-outline/Clock';\nimport {Calendar} from '@styled-icons/heroicons-outline/Calendar';\nimport {CheckmarkCircle as PencilAlt} from '@styled-icons/fluentui-system-regular/CheckmarkCircle';\nimport {Check} from '@styled-icons/heroicons-outline/Check';\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\nimport {DraggablePopup} from '@bootcamp/web/src/components/Modal/components/DraggablePopup';\nimport ZeroOneScoring from '@bootcamp/web/src/components/NCLEXQBank/assets/scoring/01.png';\nimport PlusMinusScoring from '@bootcamp/web/src/components/NCLEXQBank/assets/scoring/PlusMinus.png';\nimport RationaleScoring from '@bootcamp/web/src/components/NCLEXQBank/assets/scoring/Rationale.png';\nimport {ReactComponent as ScoringSVG} from '@bootcamp/web/src/components/NCLEXQBank/assets/scoring/scoring.svg';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\n\n\nconst alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\n\nexport const Container = styled(Body2)`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n margin: 24px 0px 24px;\n`;\nexport const SolutionStats = styled.div`\n display: flex;\n justify-content: space-between;\n width: 100%;\n padding: 12px 16px;\n border: 1px solid ${({theme}) => theme?.darkModeEnabled ? theme.colors.darkModePalette.borderPrimary : theme.colors.neutralsPalette.lightBorder};\n border-radius: 8px;\n background: ${({backgroundColor}) => backgroundColor ? backgroundColor : 'initial'};\n\n ${({theme, stack}) => stack ? theme.mediaQueries.desktop : theme.mediaQueries.tablet} {\n background: ${({theme}) => theme.colors.neutralsPalette.offWhite};\n padding: ${({theme}) => theme.layouts.spacing.xs} ${({theme}) => theme.layouts.spacing.ml};\n flex-direction: column;\n }\n`;\nconst SolutionStat = styled.div`\n display: flex;\n flex-direction: column;\n margin: auto 0;\n\n svg {\n width: 16px;\n height: 16px;\n }\n\n ${({theme, stack}) => stack ? theme.mediaQueries.desktop : theme.mediaQueries.tablet} {\n display: ${({isResult, correct}) => (isResult && correct) ? 'none' : 'initial'};\n border-bottom: 1px solid ${({theme}) => theme.darkModeEnabled ? '#333333' : theme.colors.neutralsPalette.light};\n padding: ${({theme}) => theme.layouts.spacing.s} 0px;\n\n &:last-child {\n border: none;\n }\n }\n`;\nconst SolutionResult = styled(H5)`\n position: relative;\n color: ${({correct, didNotAnswer, theme}) => didNotAnswer ? '' : correct ? theme.colors.interfacePalette.green.default : theme.colors.interfacePalette.red.default};\n font-weight: bold;\n\n ${({theme, stack}) => stack ? theme.mediaQueries.desktop : theme.mediaQueries.tablet} {\n display: none;\n }\n`;\nconst SolutionResultMobile = styled(H3)`\n color: ${({correct, didNotAnswer, theme}) => didNotAnswer ? '' : correct ? theme.colors.interfacePalette.green.default : theme.colors.interfacePalette.red.default};\n display: none;\n border: none;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n\n ${({theme, stack}) => stack ? theme.mediaQueries.desktop : theme.mediaQueries.tablet} {\n display: initial;\n }\n`;\nconst PencilAltMobile = styled(PencilAlt)`\n display: none;\n\n ${({theme, stack}) => stack ? theme.mediaQueries.desktop : theme.mediaQueries.tablet} {\n display: initial;\n margin-right: ${({theme}) => theme.layouts.spacing.s};\n }\n`;\nconst SolutionStatTop = styled.div`\n display: flex;\n align-items: center;\n`;\nconst SolutionStatTopText = styled(Body4)`\n display: flex;\n align-items: center;\n ${({loading, theme}) => theme.animation.loadingBackground({loading})};\n min-width: 64px;\n height: 18px;\n border-radius: 8px;\n padding: ${({noIcon}) => noIcon ? '8px 0px' : '0px'};\n margin-left: 4px;\n\n ${({theme, stack}) => stack ? theme.mediaQueries.desktop : theme.mediaQueries.tablet} {\n margin-left: auto;\n justify-content: flex-end;\n font-weight: bold;\n }\n`;\nconst SolutionStatBottom = styled(Body4)`\n color: ${({theme}) => theme.colors.neutralsPalette.dark};\n ${({theme, stack}) => stack ? theme.mediaQueries.desktop : theme.mediaQueries.tablet} {\n display: none;\n\n ${({showForIncorrectAnswerOnMobile, theme}) => showForIncorrectAnswerOnMobile && css`\n display: flex;\n align-items: center;\n strong {\n margin-left: auto;\n color: ${theme.darkModeEnabled ? 'white' : '#2F3037'};\n }\n `}\n }\n`;\nconst Colon = styled.span`\n display: initial;\n ${({theme, stack}) => stack ? theme.mediaQueries.desktop : theme.mediaQueries.tablet} {\n display: none;\n }\n`;\nconst SolutionStatBottomMobile = styled(Body4)`\n display: none;\n color: ${({theme}) => theme.colors.neutralsPalette.dark};\n\n ${({theme, stack}) => stack ? theme.mediaQueries.desktop : theme.mediaQueries.tablet} {\n display: initial;\n margin-left: ${({theme, noIcon}) => noIcon ? '0px' : theme.layouts.spacing.s};\n }\n`;\nconst Mark = styled(Body4)`\n position: absolute;\n color: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n padding: 0 4px;\n margin-left: 8px;\n display: inline;\n border-radius: 8px;\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n top: -5px;\n`;\nconst StyledScoringSVG = styled(ScoringSVG)`\n margin-right: 4px;\n`;\n\nconst SolutionMeta = ({\n className,\n didSelectCorrectAnswer,\n didNotAnswer,\n backgroundColor,\n didMark,\n correctAnswerIndex,\n hideAnswerData,\n loadingAnswerData,\n correctPercentageText,\n hideTimeSpent,\n time,\n lastUpdated,\n hideCorrectAnswer,\n score,\n avgScore,\n hideResult,\n scoringRule,\n fullCredit,\n partialCredit,\n stack\n}) => {\n const {bootcamp} = useUserDataContext();\n const {modalDispatch} = useModalContext();\n const onClickScoringType = () => modalDispatch({\n type: 'open',\n component: ({close}) => {\n const scoringImg = {\n plusMinus: PlusMinusScoring,\n zeroOne: ZeroOneScoring,\n rationale: RationaleScoring\n }[scoringRule]\n return (\n \n Scoring Example\n \n }\n footerContent={\n
\n }\n >\n \n \n )\n },\n enableClickClose: true,\n componentProps: {},\n modalContainerStyle: theme => `\n background: transparent;\n `\n });\n\n const scoreDetail = didNotAnswer ? 'Not Answered' : fullCredit ? 'Full Credit' : partialCredit ? 'Partial Credit' : 'Incorrect';\n return (\n \n {!hideResult &&\n \n {didNotAnswer ? 'Not Answered' : didSelectCorrectAnswer ? 'Correct' : 'Incorrect'}\n \n }\n \n {!hideResult &&\n \n \n {didNotAnswer ? 'Not Answered' : didSelectCorrectAnswer ? 'Correct' : 'Incorrect'}\n {didMark ? marked : ''}\n \n {!didSelectCorrectAnswer && !hideCorrectAnswer &&\n \n \n Correct Answer: {alphabet[correctAnswerIndex]}\n \n }\n \n }\n {score && (\n \n \n \n {!loadingAnswerData &&\n \n {scoreDetail}\n \n }\n {score}\n \n {!loadingAnswerData &&\n \n {scoreDetail}\n \n }\n \n )}\n {!hideAnswerData && avgScore && (\n \n \n \n {!loadingAnswerData &&\n \n Avg Points Scored\n \n }\n {avgScore}\n \n {!loadingAnswerData &&\n \n Avg Points Scored\n \n }\n \n )}\n {!hideAnswerData && correctPercentageText && (\n \n \n \n {!loadingAnswerData &&\n \n Answered Correctly\n \n }\n {correctPercentageText}\n \n {!loadingAnswerData && !correctPercentageText?.match('Collecting') &&\n \n Answered Correctly\n \n }\n \n )}\n {\n scoringRule && (\n \n \n \n \n Scoring Rule\n \n \n {scoringRule === 'plusMinus' ? '+ / -' : scoringRule === 'zeroOne' ? '0 / 1' : 'Rationale'} Scoring\n \n \n \n Scoring Rule\n \n \n )\n }\n {(!hideTimeSpent) && (\n \n \n \n \n Time Spent\n \n \n {time ? moment.utc(time * 1000).format('mm:ss') : \"\"}\n \n \n \n Time Spent\n \n \n )}\n {!['mcat'].includes(bootcamp) && lastUpdated && (\n \n \n \n Version\n \n \n {new Date().getFullYear()}\n \n \n \n Version\n \n )}\n \n \n)};\n\nexport default SolutionMeta;","import React, {useMemo, useState, useEffect} from 'react';\nimport styled, {css} from 'styled-components';\nimport {IntercomAPI} from 'react-intercom';\n\nimport Highlightable from '../../../../components/Highlightable';\nimport {useModalContext} from '../../../../contexts/Modal';\nimport {useUserDataContext} from '../../../../contexts/UserData';\nimport {useTestNavigatorContext} from '../../../../contexts/TestNavigator';\nimport {BootcampBot} from '../../../../components/Modal/components/QuestionFAQs';\n\nimport arrow from '@bootcamp/shared/src/assets/nclex/arrow.png';\nimport correctIcon from '@bootcamp/shared/src/assets/nclex/correct.png';\nimport incorrectIcon from '@bootcamp/shared/src/assets/nclex/incorrect.png';\n\nimport {HyperlinkRenderer} from '@bootcamp/web/src/components/Modal/components/Hyperlink';\n\n\nconst PromptContainer = styled.div`\n display: flex;\n padding: 0px 0px 16px;\n ${({type}) => type?.match('matrix') ? css`padding-bottom: 0px;` : type?.match('highlight') ? css`ul{margin-bottom:0 !important}`:null}\n`;\nconst PromptRoot = styled.div`\n * {\n max-width: 100%;\n font-size: 16px !important;\n line-height: 24px;\n font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;\n margin: 0;\n }\n p {\n margin: 0;\n }\n ol, ul {\n margin: 1em 0;\n }\n .sup, .sub, sup, sub {\n font-size: 12px !important;\n }\n .sup {\n vertical-align: sup;\n }\n .sub {\n vertical-align: sub;\n }\n img {\n height: auto !important;\n }\n .fr-highlight {\n cursor: pointer;\n ${({theme}) => theme.mediaQueries.tablet} {\n background: ${({theme}) => theme.colors.neutralsPalette.nclex.lightYellow};\n }\n &:hover {\n background: #FFFF00;\n opacity: 0.5;\n }\n }\n ${({type}) => type?.match('highlight') && css`\n cursor: not-allowed;\n `}\n .fr-highlight-selected {\n background: ${({theme}) => theme.colors.neutralsPalette.nclex.yellow};\n &:hover {\n background: ${({theme}) => theme.colors.neutralsPalette.nclex.yellow};\n opacity: 1;\n }\n }\n .fitb-input {\n border: 1px solid rgb(37, 46, 51);\n background: white;\n height: 24px;\n ::-webkit-inner-spin-button, ::-webkit-inner-spin-button {\n -moz-appearance: textfield;\n -webkit-appearance: none;\n margin: 0;\n }\n margin-top: 16px;\n &:focus {\n outline: none;\n }\n }\n\n {/* this input is targeting our matrix question types */}\n .matrix-input-container {\n display: flex;\n text-align: left;\n align-items: center;\n cursor: pointer;\n margin-bottom: 4px;\n }\n .matrix-checkbox-input, .matrix-radio-input {\n min-width: 20px;\n height: 20px;\n margin: 0 ${({theme}) => theme.layouts.spacing.s};\n vertical-align: middle;\n }\n .matrix-score-container, .matrixMultipleChoice-score-container {\n position: absolute;\n top: 0;\n bottom: 0;\n img {\n top: 3px;\n bottom: 0;\n position: absolute;\n margin-top: auto;\n margin-bottom: auto;\n }\n }\n .multipleResponseGrouping-score-container {\n img {\n margin: 0;\n }\n }\n .score-icon-correct {\n min-width: 18px;\n max-width: 18px;\n margin-left: -18px;\n }\n .score-icon-incorrect {\n min-width: 14px;\n max-width: 14px;\n margin-left: -14px;\n }\n\n .score-icon-empty {\n min-width: 14px;\n max-width: 14px;\n }\n\n .multipleResponseGrouping-score-container {\n margin-left: 5px;\n .score-icon-correct {\n margin-left: -4px;\n }\n .score-icon-incorrect {\n margin-left: 0px;\n }\n }\n\n ${({answered}) => answered && css`\n .fr-highlight {\n background: ${({theme}) => theme.colors.neutralsPalette.nclex.lightYellow};\n }\n .fr-highlight-selected {\n background: ${({theme}) => theme.colors.neutralsPalette.nclex.yellow};\n }\n .fr-highlight-correct:before {\n content: url(${correctIcon});\n background: white;\n padding-right: 6px;\n }\n .fr-highlight-incorrect:before{\n content: url(${incorrectIcon});\n background: white;\n padding-right: 6px;\n }\n `}\n\n td {\n position: relative !important;\n padding: 5px !important;\n &:first-child {\n text-align: left;\n }\n }\n tr {\n &:first-child {\n background: #e8f2ff !important;\n color: initial !important; */\n }\n\n &:nth-child(even) {\n background: #f2f2f2 !important;\n }\n }\n\n ${({type}) => ['matrixMultipleChoice', 'matrix', 'multipleResponseGrouping', 'dropdown', 'dropdownTable', 'dropdownCloze'].includes(type) && css`\n table {\n margin-top: 16px;\n width: 100%;\n ${['dropdown', 'dropdownTable', 'dropdownCloze'].includes(type) && css`\n td {\n padding: 18px !important;\n }\n `}\n }\n `}\n\n .dropdown-score-wrapper-active {\n display: inline-flex;\n position: relative;\n img {\n position: absolute;\n top: 0px;\n left: 5px;\n bottom: 0;\n margin: auto;\n }\n\n select {\n padding-left: 24px;\n padding-right: 12px;\n appearance: none;\n background-color: transparent;\n background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAwMCAxMDAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICA8cGF0aCBmaWxsPSJncmF5IiBkPSJNMTAsMjMyLjdsNDkwLDUzNC41bDQ5MC01MzQuNUgxMHoiIC8+DQo8L3N2Zz4=);\n background-repeat: no-repeat;\n background-position: right;\n background-size: 12px;\n }\n }\n table .dropdown-score-wrapper-active {\n display: inline-flex;\n width: 100%;\n img {\n position: absolute;\n top: 0px;\n bottom: 0;\n margin: auto;\n }\n }\n\n table select {\n width: 100%;\n }\n select {\n padding: 0px;\n &:disabled{\n opacity: 1;\n color: #252E33;\n }\n }\n max-width: 100%;\n width: 100%;\n font-size: 18px !important;\n line-height: 1.5em;\n font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;\n .hanging-indent-table {\n width: auto !important;\n text-align: left;\n margin-left: initial !important;\n\n tr {\n color: black !important;\n &:first-child {\n background: none !important;\n border: none !important;\n }\n &:nth-child(even) {\n background: none !important;\n border: none !important;\n }\n }\n\n td {\n font-weight: normal !important;\n background: none !important;\n border: none !important;\n vertical-align: top;\n width: auto !important;\n padding: 5px 10px;\n }\n }\n .unstyled-table {\n tr {\n color: black !important;\n font-weight: normal !important;\n background: white !important;\n }\n td {\n border: none;\n }\n }\n\n`;\nconst Icon = styled.img`\n width: 14px;\n height: 24px;\n margin: 0px 12px 0 0 !important;\n`;\n\nconst LastUpdatedText = styled.div`\n padding: ${({theme}) => theme.layouts.spacing.ms} 0;\n font-weight: bold;\n\n span {\n font-weight: normal;\n }\n`;\n\nconst TagRow = styled.div`\n display: flex;\n padding: ${({theme}) => theme.layouts.spacing.ms} 0px;\n margin-bottom: 16px;\n `;\nconst TagWrapper = styled.div`\n flex: 1;\n`;\nconst TagTop = styled.div`\n`;\nconst TagBottom = styled.div`\n font-size: 14px !important;\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n`;\n\nexport const Prompt = React.forwardRef((props, ref) => {\n return (\n \n {!props.hideArrow && }\n \n \n );\n});\n\nconst ChoiceContainer = styled.label`\n min-height: 30px;\n height: auto;\n border-radius: 2px;\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n /* background-color: ${({isCorrect, isIncorrect}) => isCorrect ? 'rgba(123, 213, 110, 0.5)' : isIncorrect ? 'rgba(251, 126, 122, 0.5)' : null}; */\n /* font-weight: ${({isCorrect}) => isCorrect && 'bold'}; */\n margin-bottom: 6px;\n user-select: none;\n text-decoration: ${({isCrossed}) => isCrossed ? 'line-through' : 'none'};\n\n input {\n width: 20px;\n min-width: 20px;\n height: 20px;\n margin: 3px ${({theme}) => theme.layouts.spacing.s} 0 0;\n }\n\n &:last-child {\n margin-bottom: 0;\n }\n cursor: ${({showingExplanation}) => showingExplanation ? 'default' : 'pointer'};\n`\nconst Option = styled.input.attrs(({type}) => ({name: 'answer', type}))`\n cursor: ${({disabled}) => disabled ? 'default' : 'pointer'};\n`\nconst LabelText = styled.span`\n padding-left: 5px;\n * {\n max-width: 100%;\n font-size: 16px !important;\n display: inline;\n }\n p {\n margin: 0;\n }\n img {\n height: auto;\n }\n .sup, .sub, sup, sub {\n font-size: 12px !important;\n line-height: 100% !important;\n }\n .sup {\n vertical-align: sup;\n }\n .sub {\n vertical-align: sub;\n }\n .fr-dib, .fr-dii {\n margin: 0 !important;\n display: inline !important;\n vertical-align: middle !important;\n }\n max-width: calc(100% - 60px);\n font-size: 16px !important;\n display: inline;\n`;\n\nconst ScoreIcon = styled.div`\n min-width: 18px;\n max-width: 18px;\n height: 40px;\n margin-right: ${({theme}) => theme.layouts.spacing.s} !important;\n display: flex;\n align-items: flex-start;\n img {\n width: 100%;\n margin-top: ${({isCorrect}) => isCorrect ? '6px' : '4px'};\n }\n`;\n\nconst alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.toLowerCase().split('');\n\nconst AnswerChoice = ({answer, isCrossed, isSelected, setAnswerState, updateCrossedAnswerIndexes, showingExplanation, answerIndex, type}) => {\n const {searchUserInteractions} = useUserDataContext();\n const [answerText, answerCorrect] = answer;\n\n const isCorrect = answerCorrect && showingExplanation;\n const isIncorrect = !answerCorrect && isSelected && showingExplanation;\n\n function handleContextMenu(event) {\n event.preventDefault();\n event.stopPropagation();\n if (showingExplanation) return;\n isSelected && setAnswerState()\n updateCrossedAnswerIndexes();\n }\n\n const letteredAnswerText = `${answerText}`;\n const inputType = ['multipleResponse', 'multipleResponseSelectN'].includes(type) ? 'checkbox' : 'radio';\n const prometricDelay = searchUserInteractions('prometricDelay') === true;\n\n return (\n \n \n {showingExplanation ? : null}\n \n {\n setAnswerState();\n isCrossed && !prometricDelay && updateCrossedAnswerIndexes();\n }}\n />\n {answerIndex+1}.\n {useMemo(() => , [letteredAnswerText])}\n \n )\n}\n\nconst AnswerBoxContainer = styled.form`\n border-radius: 5px;\n clear: both;\n width: 100%;\n`;\n\nexport const AnswerBox = ({\n answers,\n answerState,\n setAnswerState,\n showingExplanation,\n crossedAnswerIndexes,\n updateCrossedAnswerIndexes,\n type,\n}) => {\n\n const choiceLimit = answers.filter(([text, correct]) => !!correct).length;\n\n return (\n \n {answers.map((answer, index) => {\n return (\n ['multipleResponse', 'multipleResponseSelectN'].includes(type)\n ? setAnswerState(answers => answers.includes(index) ? answers.filter(i => i !== index) : type === 'multipleResponseSelectN' && answers.length === choiceLimit ? answers : [...answers, index])\n : answerState.includes(index) ? setAnswerState([]) : setAnswerState([index])}\n updateCrossedAnswerIndexes={() => updateCrossedAnswerIndexes(index)}\n isSelected={answerState?.length ? answerState.includes(index) : answerState === index}\n isCrossed={crossedAnswerIndexes.indexOf(index) > -1}\n answer={answer}\n showingExplanation={showingExplanation}\n answerIndex={index}\n type={type}\n />\n )\n })}\n \n )\n}\n\nconst SolutionRoot = styled.div`\n * {\n max-width: 100%;\n font-size: 16px !important;\n line-height: 24px;\n font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;\n margin: 0;\n }\n p {\n margin: 0;\n text-indent: 0 !important;\n padding: 0 !important;\n }\n ol, ul {\n margin: 1em 0;\n padding-left: 40px;\n }\n ol {\n list-style: decimal;\n }\n ul {\n list-style: disc;\n }\n hr {\n margin: 40px 0 30px;\n border: 0;\n border-bottom: 1px solid #eee;\n height: 1px;\n }\n .sup, .sub, sup, sub {\n font-size: 12px !important;\n }\n .sup {\n vertical-align: sup;\n }\n .sub {\n vertical-align: sub;\n }\n max-width: 100%;\n font-size: 16px !important;\n line-height: 1.6em;\n font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;\n img {\n height: auto !important;\n }\n .img-airtable-import {\n max-width: 75%;\n }\n table {\n margin: 0 auto;\n }\n blockquote.callout {\n padding: 15px;\n margin: 0 0 1em 0;\n font-family: 'proxima-nova', sans-serif;\n font-weight: inherit;\n font-size: inherit;\n line-height: inherit;\n background: #F9f9f9;\n color: #333;\n border-left: solid 5px #0F6292;\n }\n blockquote.callout p {\n margin-bottom: 0 !important;\n }\n .toggle-trigger {\n color: grey;\n text-decoration: underline;\n }\n table {\n margin: 0 auto;\n }\n .fr-hyperlink {\n cursor: pointer;\n color: blue;\n text-decoration: underline;\n font-weight: normal;\n &:active {\n color: red;\n }\n }\n`\nconst SolutionHeaderContainer = styled.div`\n display: flex;\n border-bottom: 1px solid ${({theme}) => theme.colors.neutralsPalette.nclex.light};\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n`;\nconst SolutionHeaderWrapper = styled.div`\n position: relative;\n\n * {\n line-height: 24px !important;\n }\n`;\nexport const SolutionHeader = styled.div`\n padding: 8px ${({theme}) => theme.layouts.spacing.m};\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.nclex.light};\n border-radius: 8px;\n border-bottom: none;\n border-bottom-left-radius: 0px;\n border-bottom-right-radius: 0px;\n`;\nconst SolutionBox = styled.div`\n border-radius: 5px;\n width: 100%;\n position: relative;\n padding-bottom: 72px;\n\n td {\n &:first-child {\n text-align: left;\n }\n }\n tr {\n &:first-child {\n background: #e8f2ff !important;\n color: initial !important; */\n }\n\n &:nth-child(even) {\n background: #f2f2f2 !important;\n }\n }\n`\nconst TopicText = styled.span`\n display: block;\n font-weight: 600;\n margin: 1em 0em;\n`;\nconst IntercomButtons = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n margin-top: 32px;\n\n > div {\n font-size: initial !important;\n }\n`;\n\nconst IntercomButton = styled.div`\n font-family: proxima-nova;\n display: flex;\n justify-content: center;\n align-items: center;\n background: transparent;\n padding: .75em;\n border: 1px solid #e1e8ed;\n border-radius: 1em;\n margin-right: 2em;\n color: #777;\n text-decoration: none;\n flex-grow: 1;\n text-align: left;\n cursor: pointer;\n margin-right: 2em;\n &:last-child {\n margin-right: 0;\n }\n opacity: .75;\n transition: opacity .4s;\n &:hover {\n opacity: 1;\n transition: opacity .4s;\n }\n`;\nconst HyperlinkModalContainer = styled.div`\n background: white;\n border-radius: 12px;\n padding: 24px;\n overflow: auto;\n`;\nconst BorderBlock = styled.div`\n height: 4px;\n position: absolute;\n bottom: -2px;\n left: 1px;\n right: 1px;\n background: white;\n`;\n\nfunction getQuestionReviewUrl(questionId, answerIndex) { // to load question review route for tbc locally use /question-review instead\n return `https://admin.bootcamp.com/tbc-question-review?questionId=${questionId}&answerIndex=${answerIndex}`;\n}\n\nconst CitationContainer = styled.div`\n padding: ${({theme}) => theme.layouts.spacing.ms} 0;\n p {\n margin: 0;\n }\n`;\nconst CitationHeader = styled.span`\n text-decoration: underline;\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n font-weight: bold;\n cursor: pointer;\n`;\n\nconst CitationsText = ({text}) => {\n const [toggled, setToggled] = useState(false);\n\n return (\n \n setToggled(!toggled)}>View Source(s): \n {toggled &&
}\n
\n );\n}\n\nexport const ExplanationDivider = () => (\n \n \n Explanation\n \n \n \n);\n\nexport const Solution = ({\n solution,\n citations,\n answerData,\n correctPercentage,\n score,\n didNotAnswer,\n answerState,\n showFeedback,\n questionId,\n tags,\n didMark,\n time,\n updatedAt,\n lastUpdated,\n hyperlinks,\n setHighlights,\n highlights,\n enableHighlighting,\n solutionRef,\n}) => {\n const {modalDispatch} = useModalContext();\n const {subject} = tags.find(tag => tag.contentType === 'nclexSubject') || {};\n const {topic, system} = tags.find(tag => tag.subject === subject && !!tag.topic && !!tag.system && tag.contentType !== 'auxiliaryAnatomy') || {};\n const questionReviewUrl = getQuestionReviewUrl(questionId, answerState);\n const parsedSolution = solution;\n const {variables: {customTestConfig}} = useTestNavigatorContext();\n\n useEffect(() => {\n const handler = event => {\n if (event.target.classList.contains('toggle-trigger')) {\n event.target.parentNode.querySelector('.toggle-content').style.display = 'block';\n }\n }\n solutionRef.current?.addEventListener('click', handler);\n return () => {\n solutionRef.current?.removeEventListener('click', handler);\n modalDispatch({type: 'close'})\n }\n }, []);\n\n useEffect(() => {\n const handler = event => {\n const hyperlinkNode = event?.target?.parentNode?.classList?.contains('fr-hyperlink')\n ? event.target.parentNode\n : event?.target?.classList?.contains('fr-hyperlink')\n ? event.target\n : null;\n\n if (hyperlinkNode || event.target.tagName === 'IMG') {\n\n const associatedHyperlink = event.target.tagName === 'IMG'\n ? event.target.outerHTML\n : hyperlinks?.[alphabet.indexOf(hyperlinkNode.dataset.hrefIndex?.toLowerCase())];\n\n modalDispatch({\n type: 'open',\n component: HyperlinkRenderer,\n componentProps: {associatedHyperlink, fixed: true, useNCLEXTable: true},\n enableClickClose: false,\n modalContainerStyle: theme => `\n background: transparent;\n position: relative;\n `\n })\n }\n }\n solutionRef.current?.addEventListener('click', handler);\n return () => solutionRef.current?.removeEventListener('click', handler);\n }, [hyperlinks]);\n\n const citationsBox = citations ? `\n
\n
\n

View Source(s)

\n
\n ${citations}\n
\n
\n ` : '';\n\n const intercomQuestionString = `I have content questions or feedback on ${subject} ${questionReviewUrl}. Specifically:`;\n const hideSystemTopicTags = !customTestConfig?.config\n return (\n \n \n \n \n \n {lastUpdated && Version {new Date().getFullYear()}}\n {citations && }\n \n \n {subject}\n Subject\n \n {!hideSystemTopicTags && [\n {system}\n System\n ,\n \n {topic}\n Topic\n ]}\n \n {showFeedback && (\n \n )}\n \n IntercomAPI('showNewMessage', intercomQuestionString)}>Still have a question? Contact our team →\n \n \n );\n}\n\nexport const QuestionHeader = styled.div`\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n\n p {\n margin: 0;\n line-height: 24px;\n }\n`;\n\nexport const SubmitButton = styled.div.attrs(props => ({children: Submit}))`\n width: 100px;\n height: 35px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-weight: 400;\n\n span {\n font-size: initial !important;\n }\n\n background: #006DAA;\n margin: 16px 0px;\n cursor: pointer;\n ${({submitPadding}) => submitPadding && css`\n margin-left: 26px;\n `}\n &:hover {\n color: #FFFF00;\n path {\n fill: #FFFF00;\n }\n rect {\n stroke: #FFFF00;\n }\n }\n`;\n\nexport const ScoreIconContainer = styled.div`\n display: ${({hide}) => hide ? 'none' : 'flex'};\n align-items: center;\n margin-right: 8px;\n\n img {\n width: ${({correct}) => correct ? '18px' : '14px'};\n }\n`;\n\nexport const CorrectIcon = styled.img.attrs(props => ({src: correctIcon}))`\n`;\n\nexport const IncorrectIcon = styled.img.attrs(props => ({src: incorrectIcon}))`\n`;","import React from 'react';\nimport styled from 'styled-components';\nimport {TextFirstLine} from '@styled-icons/fluentui-system-filled/TextFirstLine';\nimport {Book} from '@styled-icons/boxicons-regular/Book';\nimport {TextCaseTitle} from '@styled-icons/fluentui-system-filled/TextCaseTitle';\nimport {CheckmarkCircle} from '@styled-icons/fluentui-system-filled/CheckmarkCircle';\nimport {H3} from '@bootcamp/web/src/components/Typography';\nconst HeaderImage = styled.img`\n width: 24px;\n height: 24px;\n border-radius: 100px;\n margin-right: 12px;\n background: white;\n`;\n\nconst WordCountIcon = styled(TextCaseTitle)`\n width: 14px;\n height: 14px;\n color: #0075FF;\n margin-right: 8px;\n`\n\nconst CharacterCountIcon = styled(TextFirstLine)`\n width: 14px;\n height: 14px;\n color: #0075FF;\n margin-right: 8px;\n transform: rotateY(180deg);\n`;\n\nconst ReadingLevelIcon = styled(Book)`\n width: 14px;\n height: 14px;\n color: #0075FF;\n margin-right: 8px;\n`;\n\nconst CheckmarkIcon = styled(CheckmarkCircle)`\n width: 14px;\n height: 14px;\n color: #66AC5C;\n background: white;\n border-radius: 100px;\n padding: 1px;\n`;\n\nconst PassageComparison = ({passageBlockParts}) => {\n // displaying Word Count, Character Count, and Reading Level comparison with official AAMC CARS passages\n // Word count range for AAMC CARS Passages: 497 to 648 words, displayed on a scale from 400 to 800 words, with a green checkmark if the passage falls within the AAMC range\n // Character count range for AAMC CARS Passages: 3044 to 4131 characters, displayed on a scale from 2,000 to 5,000 characters, with a green checkmark if the passage falls within the AAMC range\n // Reading Level range for AAMC CARS Passages: 13.0 to 23.9, displayed on a scale from 0 to 40, with a green checkmark if the passage falls within the AAMC range\n const {wordCount, characterCount, readingLevel} = passageBlockParts;\n const wordCountRange = [497, 648];\n const characterCountRange = [3044, 4131];\n const readingLevelRange = [13.0, 23.9];\n const wordCountScale = [450, 700];\n const characterCountScale = [2500, 4500];\n const readingLevelScale = [6, 30];\n const wordCountCheck = wordCount >= wordCountRange[0] && wordCount <= wordCountRange[1];\n const characterCountCheck = characterCount >= characterCountRange[0] && characterCount <= characterCountRange[1];\n const readingLevelCheck = readingLevel >= readingLevelRange[0] && readingLevel <= readingLevelRange[1];\n return (\n \n Bootcamp vs AAMC Passage Comparison\n \n \n \n \n Word Count\n \n \n \n \n \n \n Character Count\n \n \n \n \n \n Reading Level\n \n \n \n \n \n Each green checkmark shows where this passage falls within the range of 134 official AAMC CARS passages we analyzed.\n \n \n \n )\n}\n\nconst BlurbContainer = styled.div`\n font-family: proxima-nova;\n padding: 12px;\n border-radius: 8px;\n background: linear-gradient(90deg, #EEF2FF 0%, #F5F3FF 50%, #FDF2F8 100%);\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n`;\n\nconst PassageComparisonContainer = styled.div`\n border: 1px solid ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.borderPrimary : theme.colors.neutralsPalette.light};\n border-radius: 8px;\n width: 100%;\n margin-bottom: 16px;\n overflow: hidden;\n user-select: none;\n * {\n font-family: proxima-nova !important;\n }\n\n`;\n\nconst PassageComparisonHeader = styled(H3)`\n display: flex;\n align-items: center;\n padding: 12px 16px;\n border-bottom: 1px solid ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.borderPrimary : theme.colors.neutralsPalette.light};\n height: 56px;\n background: ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.neutralsPalette.white : theme.colors.neutralsPalette.white};\n`;\n\nconst PassageComparisonContent = styled.div`\n padding: 16px;\n background: ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.neutralsPalette.white : theme.colors.neutralsPalette.white};\n`;\n\nconst PassageComparisonRow = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n margin-bottom: 16px;\n ${({theme}) => theme.mediaQueries.tablet} {\n align-items: flex-start;\n flex-direction: column;\n }\n`;\n\nconst PassageComparisonRowLabel = styled.div`\n font-family: proxima-nova;\n font-weight: 600;\n font-size: 14px;\n line-height: 14px;\n color: ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.neutralsPalette.extraDark : theme.colors.neutralsPalette.extraDark};\n min-width: 158px;\n`;\n\nconst PassageComparisonRowValueContainer = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n`;\n\nconst ValueContainerLabel = styled.div`\n font-family: proxima-nova;\n font-weight: 400;\n font-size: 12px;\n line-height: 12px;\n color: ${({theme, color}) => color == 'grey' ? theme.colors.prometricPalette.mcat.grey : '#0075FF'};\n position: absolute;\n ${({position}) => position === 'left' ? `left` : `right`}: 4px;\n top: 5px;\n`;\n\nconst ValueContainerBase = styled.div`\n width: 100%;\n height: 20px;\n background: #F2F3F5;\n border-radius: 8px;\n position: relative;\n`;\n\nconst ValueContainerInner = styled.div`\n height: 100%;\n position: absolute;\n border-left: 1px solid #0075FF;\n border-right: 1px solid #0075FF;\n width: ${({width}) => width}%;\n background: rgba(0, 117, 255, 0.1);\n left: ${({offset}) => offset}%;\n`;\n\nconst CenteredCheckmarkContainer = styled.div`\n position: absolute;\n left: ${({offset}) => offset}%;\n z-index: 1;\n top: -2px;\n`;\n\nconst ValueContainer = ({value, range, scale}) => {\n const width = (range[1] - range[0]) / (scale[1] - scale[0]) * 100;\n const innerOffset = (100 - width) / 2;\n const valueOffset = (value - scale[0]) / (scale[1] - scale[0]) * 100;\n return (\n \n \n \n {range[0]}\n {range[1]}\n \n {scale[0]}\n {scale[1]}\n \n );\n}\n\n\nexport default PassageComparison;","import React, {useEffect} from 'react';\nimport styled, {css} from 'styled-components';\n\nimport {insertVideoElements} from '../Question';\nimport {useModalContext} from '../../../contexts/Modal';\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {useTestNavigatorContext} from '../../../contexts/TestNavigator';\nimport {getThemeForHyperlinkViewer} from '@bootcamp/shared/src/util';\n\nimport QuestionFAQs, {BootcampBot} from '../../Modal/components/QuestionFAQs';\nimport RelatedVideos from './RelatedVideos';\nimport SolutionMeta from './SolutionMeta';\nimport {ExplanationDivider} from '@bootcamp/web/src/components/NCLEXQBank/Question/components/shared';\n\nimport baseTheme from '@bootcamp/shared/src/styles/theme';\n\nimport useHotkeys from \"@reecelucas/react-use-hotkeys\";\nimport {HyperlinkRenderer} from '@bootcamp/web/src/components/Modal/components/Hyperlink';\nimport {IntercomAPI} from 'react-intercom';\n\nimport {TransformComponent, TransformWrapper} from 'react-zoom-pan-pinch';\nimport PassageComparison from './AAMCPassageComparison';\n\nconst alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.toLowerCase().split('');\n\nconst Solution = styled.div`\n padding: 16px;\n border: 1px solid ${({theme}) => theme?.darkModeEnabled ? theme.colors.darkModePalette.borderPrimary : theme.colors.neutralsPalette.lightBorder};\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n border-radius: 8px;\n background: ${({backgroundColor}) => backgroundColor ? backgroundColor : 'initial'};\n span[style*='font-weight:600']{\n font-weight: 700 !important;\n }\n div {\n overflow-x: auto;\n }\n\n * {\n max-width: 100%;\n font-size: 16px;\n line-height: 1.6em;\n font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;\n margin: 0;\n }\n p {\n margin: 0;\n overflow-wrap: anywhere;\n span {\n font-size: inherit !important;\n ${({theme}) => theme.darkModeEnabled && css`color: ${theme.colors.darkModePalette.neutralsPalette.extraDark} !important;`}\n }\n }\n li {\n span {\n font-size: inherit !important;\n ${({theme}) => theme.darkModeEnabled && css`color: ${theme.colors.darkModePalette.neutralsPalette.extraDark} !important;`}\n }\n }\n table p {\n overflow-wrap: normal;\n }\n ol, ul {\n margin: 1em 0;\n padding-left: 40px;\n }\n ol {\n list-style: decimal;\n }\n ul {\n list-style: disc;\n }\n hr {\n margin: 40px 0 30px;\n border: 0;\n border-bottom: 1px solid #eee;\n height: 1px;\n }\n .sup, .sub, sup, sub {\n font-size: 12px;\n }\n .sup {\n vertical-align: sup;\n }\n .sub {\n vertical-align: sub;\n }\n max-width: 100%;\n font-size: 16px;\n line-height: 1.6em;\n font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;\n img {\n height: auto !important;\n max-width: 100% !important;\n cursor: zoom-in;\n }\n img.unlockedDimensions {\n width: auto !important;\n max-height: calc(100vh - 112px) !important;\n }\n blockquote.callout {\n padding: 15px;\n margin: 0 0 1em 0;\n font-family: 'proxima-nova', sans-serif;\n font-weight: inherit;\n font-size: inherit;\n line-height: inherit;\n background: #F9f9f9;\n color: #333;\n border-left: solid 5px #0F6292;\n }\n blockquote.callout p {\n margin-bottom: 0 !important;\n }\n table {\n\n ${({theme}) => theme.darkModeEnabled && css`\n background: white;\n color: ${baseTheme.colors.neutralsPalette.extraDark} !important;\n\n p {\n span {\n color: ${baseTheme.colors.neutralsPalette.extraDark} !important;\n }\n }\n li {\n span {\n color: ${baseTheme.colors.neutralsPalette.extraDark} !important;\n }\n }\n `}\n\n\n margin: 0 auto;\n li {\n line-height: inherit !important;\n * {\n line-height: inherit !important;\n }\n }\n * {\n overflow: visible;\n }\n }\n .toggle-trigger {\n color: grey;\n text-decoration: underline;\n }\n .fr-hyperlink {\n cursor: pointer;\n color: #53A3DF !important;\n text-decoration: underline;\n font-weight: normal;\n &:active {\n color: red;\n }\n }\n ${({bootcamp}) => bootcamp === 'med-school' && css`\n table {\n background: white;\n }\n `}\n`;\nconst SolutionBox = styled.div`\n width: 100%;\n position: relative;\n ${({theme, splitScreen}) => !splitScreen && css`\n margin: 24px 0px;\n `};\n`;\nexport const TopicText = styled.span`\n display: block;\n font-weight: 600;\n margin: 32px 0;\n font-family: proxima-nova;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n`;\nconst SubjectSystemWrapper = styled.div`\n ${TopicText} {\n &:first-child {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n &:last-child {\n margin-top: 0;\n }\n }\n`;\nconst IntercomButtons = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n * {\n font-family: proxima-nova !important;\n }\n`;\nexport const IntercomButton = styled.div`\n font-family: proxima-nova;\n display: flex;\n justify-content: center;\n align-items: center;\n background: transparent;\n padding: .75em;\n border: 1px solid ${({theme}) => theme?.darkModeEnabled ? theme.colors.darkModePalette.borderPrimary : theme.colors.neutralsPalette.lightBorder};\n border-radius: 1em;\n margin-right: 2em;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n text-decoration: none;\n flex-grow: 1;\n text-align: left;\n font: 400 16px;\n cursor: pointer;\n margin-right: 2em;\n &:last-child {\n margin-right: 0;\n }\n opacity: .75;\n transition: opacity .4s;\n &:hover {\n opacity: 1;\n transition: opacity .4s;\n }\n`;\n\nfunction getQuestionReviewUrl(questionId, answerIndex, questionRevisionId) {\n // const protocol = window.location.protocol;\n // const hostname = window.location.hostname;\n // const port = window.location.port ? `:${window.location.port}` : '';\n // const route = 'tbc-question-review'; // to load question review route for tbc locally use /question-review instead\n return `https://admin.bootcamp.com/tbc-question-review/?questionId=${questionId}&answerIndex=${answerIndex}${questionRevisionId ? `&questionRevisionId=${questionRevisionId}` : ''}`\n}\n\nconst ImageRendererTag = styled.img`\n user-select: none;\n max-width: 96vw;\n max-height: 96vh;\n background: white;\n`;\n\nconst ImagePopup = props => {\n useHotkeys('Escape', props.close, [props.close]);\n\n return (\n }/>\n );\n}\nconst HyperlinkModalContainer = styled.div`\n background: white;\n border-radius: 12px;\n padding: 24px;\n overflow-x: visible;\n overflow-y: auto;\n max-height: 90vh;\n`;\nconst HyperlinkModalContent = styled.div`\n background: white;\n line-height: 1.6em;\n\n img {\n width: 100% !important;\n max-width: 100%;\n height: auto !important;\n max-height: calc(90vh - 96px);\n object-fit: contain;\n }\n\n table {\n margin: 0 auto;\n li {\n line-height: inherit !important;\n * {\n line-height: inherit !important;\n }\n }\n * {\n overflow: visible;\n }\n }\n\n ${({tableWidth}) => tableWidth && css`width: 100%; max-width: 950px !important;`};\n ${({videoWidth}) => videoWidth && css`width: 60vw;`};\n`;\n\n\nconst SolutionContainer = ({\n className,\n backgroundColor,\n solution,\n hideTimeSpent,\n correctAnswerIndex,\n citations,\n correctPercentage,\n didSelectCorrectAnswer,\n didNotAnswer,\n selectedAnswerIndex,\n showFeedback,\n questionId,\n questionRevisionId,\n tags,\n didMark,\n time,\n solutionRef,\n hyperlinksRef,\n questionSetExplanation,\n lastUpdated,\n relatedVids,\n shouldHideAnswerData,\n hyperlinks,\n blockId,\n imagePopupComponent,\n themePalette,\n splitScreen,\n passageBlockParts,\n showExplanationDivider\n}) => {\n const {test, subject, topic} = tags.find(tag => !!tag.topic) || {};\n const {modalDispatch} = useModalContext();\n const {bootcamp, searchUserInteractions, saveUserInteraction, DEFAULT_USER_ID, darkModeEnabled} = useUserDataContext();\n const {variables: {template}} = useTestNavigatorContext();\n const citationsBox = citations\n ? `\n
\n
\n

View Source(s)

\n
\n ${citations?.replace(/\n
\n `\n : '';\n\n const showSubjectSystem = ['Med School USMLE', 'Med School Recall', 'INBDE'].includes(test);\n const hideTopic = ['MCAT'].includes(test);\n\n const questionReviewUrl = getQuestionReviewUrl(questionId, selectedAnswerIndex, questionRevisionId);\n const intercomQuestionString = `I have content questions or feedback on ${subject} ${questionReviewUrl}. Specifically:`;\n const loadingAnswerData = correctPercentage === undefined;\n const correctPercentageText = loadingAnswerData\n ? ''\n : correctPercentage > 0\n ? `${correctPercentage}%`\n : 'Collecting stats';\n\n const checkImageDisplay = e => {\n if (e.target?.tagName === 'IMG') {\n const ImageComponent = imagePopupComponent || ImagePopup;\n const [theme] = getThemeForHyperlinkViewer(bootcamp, template, baseTheme, themePalette, darkModeEnabled);\n\n modalDispatch({\n type: 'open',\n component: ImageComponent,\n componentProps: {\n src: e.target.src,\n associatedHyperlink: e?.target?.outerHTML,\n theme,\n fixed: true,\n },\n enableClickClose: true,\n modalContainerStyle: theme => `\n z-index: 20;\n background: transparent;\n position: relative;\n `})\n }\n }\n\n useEffect(() => {\n const handler = event => {\n if (event.target.classList.contains('toggle-trigger')) {\n event.target.parentNode.querySelector('.toggle-content').style.display = 'block';\n }\n }\n solutionRef.current?.addEventListener('click', handler);\n return () => solutionRef.current?.removeEventListener('click', handler);\n }, []);\n\n useEffect(() => {\n const handler = event => {\n const hyperlinkNode = event?.target?.parentNode?.classList?.contains('fr-hyperlink')\n ? event.target.parentNode\n : event?.target?.classList?.contains('fr-hyperlink')\n ? event.target\n : null;\n\n if (hyperlinkNode) {\n const associatedHyperlink = hyperlinks?.[alphabet.indexOf(hyperlinkNode.dataset.hrefIndex?.toLowerCase())];\n const isTable = associatedHyperlink?.match(' {\n const [theme] = getThemeForHyperlinkViewer(bootcamp, template, baseTheme, themePalette, darkModeEnabled);\n useEffect(() => {\n\n if (hyperlinksRef?.current) {\n // insert video player for solution\n insertVideoElements(hyperlinksRef);\n }\n\n }, []);\n\n useHotkeys('Escape', props.close, [props.close]);\n return (\n \n );\n }\n\n const HyperlinkComponent = imagePopupComponent || Hyperlink;\n\n modalDispatch({\n type: 'open',\n component: HyperlinkComponent,\n componentProps: {\n associatedHyperlink: associatedHyperlink,\n theme: baseTheme?.colors?.prometricPalette?.[bootcamp],\n },\n enableClickClose: true,\n modalContainerStyle: theme => `\n overflow: auto;\n background: transparent;\n position: relative;\n `\n })\n }\n }\n solutionRef.current?.addEventListener('click', handler);\n return () => solutionRef.current?.removeEventListener('click', handler);\n }, [hyperlinks]);\n\n const hideAnswerData = searchUserInteractions('hideAnswerData') === true || shouldHideAnswerData || bootcamp === 'chemistry';\n\n return (\n \n {DEFAULT_USER_ID !== 'matthewdempsey' && !splitScreen && }\n {showExplanationDivider && }\n \n {topic && !showSubjectSystem && Topic: {topic}}\n {subject && topic && showSubjectSystem &&\n \n \n {subject}\n {['INBDE', 'MCAT'].includes(test) ? 'Subject' : 'System'}\n \n {!hideTopic &&\n \n {topic}\n {test === 'INBDE' ? 'Topic' : 'Subject'}\n \n }\n \n }\n {relatedVids && }\n {showFeedback && ['dat', 'inbde', 'med-school', 'oat', 'mcat', 'anatomy'].includes(bootcamp) && !['Perceptual Ability'].includes(subject) && (\n \n )}\n {passageBlockParts?.wordCount && bootcamp === 'mcat' && }\n \n IntercomAPI('showNewMessage', intercomQuestionString)}>Still have a question? Contact our team →\n \n \n );\n}\nconst TagRow = styled.div`\n display: flex;\n padding: ${({theme}) => theme.layouts.spacing.ms} 0px;\n margin: 16px 0px;\n`;\nconst TagWrapper = styled.div`\n &:not(:last-child) {\n margin-right: 16px;\n }\n`;\nconst TagTop = styled.div`\n`;\nconst TagBottom = styled.div`\n font-size: 14px !important;\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n`;\n\nexport default SolutionContainer;\nexport {Solution};","import React, { useState, useCallback, useRef, useEffect } from 'react';\nimport styled from 'styled-components';\nimport debounce from 'lodash.debounce';\n\nconst Container = styled.div`\n position: relative;\n width: 100%;\n height: 100%;\n`;\n\nconst persistToLocalStorage = debounce((width) => {\n try {\n localStorage.setItem('resizable-area-width', width);\n } catch (error) {\n console.log('error saving to local storage');\n }\n}, 500);\n\nconst setHandleHeight = (element, reset) => {\n if (!element) return;\n\n const parent = element?.parentElement;\n\n if (parent) {\n element.style.height = '0px';\n\n const scrollHeight = parent.scrollHeight;\n element.style.height = `${scrollHeight}px`;\n }\n};\n\nconst handleWindowResize = debounce((handleElement, callback) => {\n if (window.innerWidth < 768) callback(0);\n\n setHandleHeight(handleElement);\n}, 500);\n\nconst Resizable = ({ children, handleRef, disabled }) => {\n const [width, setWidth] = useState(0); // Initial width of the div\n const [isResizing, setIsResizing] = useState(false);\n const resizableRef = useRef(null);\n\n const isTouchDevice = window?.matchMedia('(pointer: coarse)')?.matches;\n\n const handleMouseDown = (e) => {\n if (isTouchDevice) return;\n\n setIsResizing(true);\n };\n\n const handleMouseUp = useCallback(() => {\n if (isTouchDevice) return;\n\n setIsResizing(false);\n setHandleHeight(handleRef.current);\n document.body.style.userSelect = 'initial'; // Re-enable selection\n }, [handleRef]);\n\n const handleMouseMove = (e) => {\n if (isTouchDevice) return;\n\n if (isResizing) {\n document.body.style.userSelect = 'none'; // Make elements unselectable while dragging\n const newWidth = e.clientX - resizableRef.current.getBoundingClientRect().left;\n const minWidth = 400;\n const maxWidth = resizableRef?.current?.clientWidth - 400;\n const limitedWidth = Math.max(minWidth, Math.min(newWidth, maxWidth));\n\n setWidth(limitedWidth);\n persistToLocalStorage(limitedWidth);\n }\n };\n\n const handleTouchStart = (e) => {\n setIsResizing(true);\n };\n\n const handleTouchMove = (e) => {\n if (isResizing) {\n document.body.style.userSelect = 'none'; // Prevent selection on touch devices\n const touch = e.touches[0]; // Get the first touch point\n const newWidth = touch.clientX - resizableRef.current.getBoundingClientRect().left;\n const minWidth = 400;\n const maxWidth = resizableRef?.current?.clientWidth - 400;\n const limitedWidth = Math.max(minWidth, Math.min(newWidth, maxWidth));\n\n setWidth(limitedWidth);\n persistToLocalStorage(limitedWidth);\n }\n };\n\n const handleTouchEnd = useCallback(() => {\n setIsResizing(false);\n setHandleHeight(handleRef.current);\n document.body.style.userSelect = 'initial'; // Re-enable selection on touch end\n }, [handleRef]);\n\n const handleDoubleClick = () => {\n setWidth(0);\n persistToLocalStorage(0);\n };\n\n useEffect(() => {\n try {\n const widthFromLocalStorage = localStorage.getItem('resizable-area-width');\n if (widthFromLocalStorage) {\n setWidth(parseInt(widthFromLocalStorage));\n }\n } catch (error) {\n console.log('error restoring from local storage');\n }\n }, [disabled]);\n\n useEffect(() => {\n if (!handleRef?.current) return;\n\n const handleResize = () => handleWindowResize(handleRef.current, setWidth);\n\n if (!isTouchDevice) {\n // Add event listeners for both mouse and touch events\n handleRef.current.addEventListener('mousedown', handleMouseDown);\n }\n\n handleRef.current.addEventListener('touchstart', handleTouchStart);\n handleRef.current.addEventListener('dblclick', handleDoubleClick);\n\n window.addEventListener('resize', handleResize);\n\n setHandleHeight(handleRef.current);\n\n return () => {\n // Clean up event listeners\n if (!isTouchDevice) {\n handleRef?.current?.removeEventListener('mousedown', handleMouseDown);\n }\n\n handleRef?.current?.removeEventListener('touchstart', handleTouchStart);\n handleRef?.current?.removeEventListener('dblclick', handleDoubleClick);\n\n window.removeEventListener('resize', handleResize);\n };\n }, [handleRef, children, isTouchDevice]);\n\n return (\n \n {children({ width: disabled ? 0 : width })}\n \n );\n};\n\nexport default Resizable;","import React, {useState, useEffect, useMemo, useRef} from 'react';\nimport ReactDOM from 'react-dom';\n\nimport VideoPlayer from '../../VideoPlayer';\n\nimport {useTimerContext} from '../../../contexts/TestTimer';\nimport {useModalContext} from '../../../contexts/Modal';\n\nimport {TagLinks} from '../../Tags';\nimport {Column, FlexBox} from '../../Grid';\nimport {H3, Body2, Body3, KeyboardShortcutLabel} from '../../Typography';\nimport {HyperlinkRenderer} from '@bootcamp/web/src/components/Modal/components/Hyperlink';\n\nimport styled, {css} from 'styled-components';\nimport baseTheme from '@bootcamp/shared/src/styles/theme';\nimport {determineColorFromTitle, calculateAnswerPercentage, getThemeForHyperlinkViewer} from '@bootcamp/shared/src/util';\nimport Highlightable from '../../Highlightable';\nimport Solution from './Solution';\nimport SolutionMeta from './SolutionMeta';\n\nimport {CheckCircle} from '@styled-icons/material-rounded/CheckCircle';\nimport {Times} from '@styled-icons/fa-solid/Times';\n\nimport Draggable from 'react-draggable';\nimport Resizable from '@bootcamp/web/src/components/Resizable';\n\nimport useHotkeys from \"@reecelucas/react-use-hotkeys\";\nimport {useTestNavigatorContext} from '../../../contexts/TestNavigator';\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {CheckButton} from '@bootcamp/web/src/components/PrometricBank/components/shared';\nimport {getQuestionBaseTestBlocks} from '@bootcamp/shared/src/requests';\n\nimport {MoreVertical} from '@styled-icons/fluentui-system-regular/MoreVertical';\n\nconst ChoiceContainer = styled(Body2)`\n padding: 12px ${({theme}) => theme.layouts.spacing.m};\n border: 1px solid ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.borderPrimary : theme.colors.neutralsPalette.light};\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n font-weight: ${({isCorrect}) => isCorrect && 'bold'};\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n user-select: none;\n text-decoration: ${({isCrossed}) => isCrossed ? 'line-through' : 'none'};\n opacity: ${({isCrossed}) => isCrossed ? 0.6 : 1};\n &:last-child {\n margin-bottom: 0;\n }\n\n &:hover {\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n ${({isCrossed, checked, showingExplanation, theme}) => (isCrossed || showingExplanation || checked || window.location.pathname.includes('inbde/custom-test')) ? '' : `background: ${theme.colors.neutralsPalette.offWhite}`}\n }\n cursor: pointer;\n\n ${({checked, theme, themePalette}) => checked &&\n `\n background: ${theme?.darkModeEnabled ? 'rgba(98, 85, 229,.1)' : themePalette?.light ? themePalette.light : theme.colors.brandPalette.blue.light}};\n border: 1px solid ${themePalette?.default ? themePalette.default : theme.colors.brandPalette.blue.default};\n `\n }\n\n ${({isCorrect, theme}) => isCorrect &&\n `\n background: ${theme?.darkModeEnabled ? 'rgba(102, 172, 92,.1)' : theme.colors.interfacePalette.green.light}};\n border: 1px solid ${theme.colors.interfacePalette.green.default};\n `\n }\n ${({isIncorrect, theme}) => isIncorrect &&\n `\n background: ${theme?.darkModeEnabled ? 'rgba(224, 94, 87,.1)' : theme.colors.interfacePalette.red.light}};\n border: 1px solid ${theme.colors.interfacePalette.red.default};\n `\n }\n ${({simpleContainer}) => simpleContainer && css`\n border: none;\n background: none;\n padding: 0px;\n `}\n`;\n// const Option = styled.input.attrs({ type: 'radio', name: 'answer' })`\n// cursor: pointer;\n// `;\nconst AnswerPercentage = styled(Body3)`\n max-width: ${({loading}) => loading ? 0 : '200px'};\n min-width: ${({loading}) => loading ? 0 : '50px'};\n transition: max-width 400ms;\n margin-left: 8px;\n overflow: hidden;\n ${({hidden}) => hidden && `display: none;`}\n`;\n\nconst OptionOuter = styled.span`\n width: 14px;\n min-width: 14px;\n height: 14px;\n padding: 2px;\n border-radius: 16px;\n margin-right: 12px;\n color: blue;\n\n ${({theme, themePalette, checked}) => theme.darkModeEnabled\n ? `border: 1px solid ${theme.colors.darkModePalette.borderPrimary};`\n : checked && !!themePalette && themePalette.default\n ? `border: 1px solid ${themePalette.default};`\n : checked\n ? `border: 1px solid ${theme.colors.brandPalette.blue.default};`\n : `border: 1px solid ${theme.colors.neutralsPalette.light};`\n }\n\n ${({theme, isIncorrect}) => isIncorrect && `\n border: 1px solid ${theme.colors.interfacePalette.red.default};\n `\n }\n`;\nconst OptionInner = styled.div`\n width: 100%;\n height: 100%;\n border-radius: 10px;\n background: ${({theme, checked, themePalette}) => checked && !!themePalette && themePalette.default\n ? themePalette.default\n : checked\n ? theme.colors.brandPalette.blue.default\n : 'none'\n };\n\n ${({theme, isIncorrect}) => isIncorrect && `\n background: ${theme.colors.interfacePalette.red.default};\n `\n }\n`;\nconst OptionChecked = styled(CheckCircle)`\n width: 14px;\n min-width: 14px;\n height: 14px;\n margin-right: 12px;\n fill: ${({theme}) => theme.colors.interfacePalette.green.default};\n`;\n\nconst Option = ({showingExplanation, checked, isCorrect, isIncorrect, onClick, themePalette}) => {\n return isCorrect && showingExplanation\n ? \n : \n \n \n}\n\nconst LabelText = styled.span`\n * {\n max-width: 100%;\n font-size: 16px;\n display: inline;\n }\n p {\n margin: 0;\n span {\n font-size: inherit !important;\n color: inherit !important;\n font-weight: inherit !important;\n }\n }\n img {\n height: auto;\n }\n .sup, .sub, sup, sub {\n font-size: 12px;\n }\n .sup {\n vertical-align: sup;\n }\n .sub {\n vertical-align: sub;\n }\n .fr-dib, .fr-dii {\n margin: 0 !important;\n display: inline !important;\n vertical-align: middle !important;\n }\n max-width: 100%;\n font-size: 16px;\n display: inline;\n user-select: none;\n`;\n\nconst alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\n\nconst AnswerChoice = ({answer, isCrossed, isSelected, setSelectedAnswerIndex, updateCrossedAnswerIndexes, showingExplanation, answerIndex, answerData, themePalette}) => {\n const {searchUserInteractions, bootcamp} = useUserDataContext();\n const {variables: {template}} = useTestNavigatorContext();\n const [answerText, answerCorrect] = answer;\n\n const isCorrect = answerCorrect && showingExplanation;\n const isIncorrect = !answerCorrect && isSelected && showingExplanation;\n\n function handleContextMenu(event) {\n event.preventDefault();\n event.stopPropagation();\n\n updateCrossedAnswerIndexes();\n }\n\n const answerLetter = alphabet[answerIndex];\n const answerPercentage = calculateAnswerPercentage(answerData, answerLetter, answerCorrect);\n\n const letteredAnswerText = `${answerLetter}. ${(answerText === null || answerText === undefined) ? '' : answerText}`;\n const onClickAnswerChoice = (e) => {\n !showingExplanation && isCrossed && updateCrossedAnswerIndexes();\n !showingExplanation && setSelectedAnswerIndex();\n return e.stopPropagation();\n }\n\n useHotkeys(`${answerIndex+1}`, onClickAnswerChoice, [onClickAnswerChoice]);\n const hideAnswerData = bootcamp === 'chemistry' || searchUserInteractions('hideAnswerData') === true || Object.keys(answerData || {}).length === 0;\n const showKeyboardShortcuts = searchUserInteractions('showKeyboardShortcuts') === true;\n\n return (\n \n
\n \n )\n}\n\nconst QBank = ({username, themePalette, startBlockTitle, educators, handleEndBlockUpdate, blockRenderers={}, timeLimit}) => {\n const [showingLabValues, setShowingLabValues] = useState(false);\n const [showingExhibit, setShowingExhibit] = useState(false);\n const sidebarState = useState(window.innerWidth > 768);\n const settingsSidebarState = useState(false);\n const visibleFilterState = useState();\n const {modalDispatch} = useModalContext();\n const history = useHistory();\n const {toggleReloadBlocker} = useReloadBlockerContext();\n const {toggleTimer, updateTimeLimit, timeLeft, questionStartTime, timeUp} = useTimerContext();\n const {searchUserInteractions, DEFAULT_USER_ID, bootcamp} = useUserDataContext();\n\n const hideTimer = searchUserInteractions('hideTimer') === true;\n\n const prometricTheme = theme.colors.prometricPalette['med-school'];\n\n const {\n methods: {\n transitionBlock,\n setCurrentIndex,\n autoTagOnSubmit,\n updateQuizProgress,\n saveQuestionProgresses,\n },\n variables: {\n test,\n blockIndex,\n testBlockConnections,\n loading,\n template,\n quizProgress,\n skipStartBlock,\n customTestConfig,\n navigationFilter,\n timeMultiplier,\n type,\n tutorMode\n }\n } = useTestNavigatorContext();\n\n const isReadinessExam = type === 'readinessExam';\n const testTitle = test?.config?.title;\n const {questions: questionProgresses} = quizProgress[blockIndex] || {questions: []};\n const questionIndex = questionProgresses?.findIndex(({current}) => current);\n const testBlock = testBlockConnections?.[blockIndex]?.testBlock;\n const questions = getTestBlockQuestions(testBlock, template === 'customTest');\n const currentQuestion = questions[questionIndex];\n const splitScreenSolutions = searchUserInteractions('splitScreenSolutions') === true\n && splitScreenAllowed(template, type, tutorMode, customTestConfig)\n && questionProgresses?.[questionIndex]?.didCheck\n\n const displayEndBlockNavigation = (cancelable=true) => {\n if (!cancelable) {\n return modalDispatch({\n type: 'open',\n component: ({close}) => (\n {\n if (['tbcSavedBank', 'customTest'].includes(template) && !questionProgresses?.[questionIndex]?.didCheck) {\n await updateQuestionProgressData(updateQuizProgress, questionStartTime, questionProgresses, questionIndex);\n }\n\n setCurrentIndex(blockIndex + 1, 0);\n }\n }}\n cancelConfig={{}}\n />\n )\n })\n }\n modalDispatch({\n type: 'open',\n component: ({close}) => (\n {\n if (['tbcSavedBank', 'customTest'].includes(template) && !questionProgresses?.[questionIndex]?.didCheck) {\n await updateQuestionProgressData(updateQuizProgress, questionStartTime, questionProgresses, questionIndex);\n }\n\n setCurrentIndex(blockIndex + 1, 0);\n }\n }}\n cancelConfig={{\n text: 'Remain in Block',\n onCancel: close\n }}\n />\n )\n })\n }\n\n const setQuestionIndex = index => {\n // TODO maybe move this logic into the test navigator...\n const blockTransition = index < 0\n ? 'previous'\n : index === questions.length\n ? 'next'\n : null;\n\n if (!blockTransition) {\n return setCurrentIndex(blockIndex, index);\n }\n\n if (isReadinessExam && template !== 'testReview') {\n if (blockTransition === 'next') {\n return displayEndBlockNavigation();\n } else if (blockTransition === 'previous') return;\n }\n\n transitionBlock(blockTransition);\n };\n\n const handleNextQuestion = ( ) => {\n if (navigationFilter.key && navigationFilter.value !== 'all') {\n const nextIndex = questionProgresses.findIndex((progressObject, index) => {\n if (navigationFilter.key === 'search') {\n const {prompt, answers, explanation, questionHeader} = getQuestionParts(progressObject.question);\n const search = [prompt, answers, explanation, questionHeader].join(' ').toLowerCase();\n return search.includes(navigationFilter.value.toLowerCase()) && index > questionIndex;\n }\n if (navigationFilter.key === 'didSelectCorrectAnswer' && navigationFilter.value === false) {\n return progressObject[navigationFilter.key] === navigationFilter.value && index > questionIndex && (progressObject.didCheck || template === 'testReview' || customTestConfig?.submitted);\n }\n return progressObject[navigationFilter.key] === navigationFilter.value && index > questionIndex\n });\n if (nextIndex !== -1) {\n setQuestionIndex(nextIndex)\n } else {\n transitionBlock('nextFilterActive');\n }\n } else {\n const nextIndex = questionIndex + 1;\n setQuestionIndex(nextIndex);\n }\n };\n\n const handlePreviousQuestion = () => {\n if (navigationFilter.key) {\n const prevIndex = (questions.length - 1) - questionProgresses.slice().reverse().findIndex((progressObject, index) => {\n if (navigationFilter.key === 'search') {\n const {prompt, answers, explanation, questionHeader} = getQuestionParts(progressObject.question);\n const search = [prompt, answers, explanation, questionHeader].join(' ').toLowerCase();\n return search.includes(navigationFilter.value.toLowerCase()) && index > ((questions.length - 1) - questionIndex);\n }\n if (navigationFilter.key === 'didSelectCorrectAnswer' && navigationFilter.value === false) {\n return progressObject[navigationFilter.key] === navigationFilter.value && index > ((questions.length - 1) - questionIndex) && (progressObject.didCheck || template === 'testReview' || customTestConfig?.submitted);\n }\n return progressObject[navigationFilter.key] === navigationFilter.value && index > ((questions.length - 1) - questionIndex)\n });\n if (prevIndex !== -1 && prevIndex !== questions.length) {\n setQuestionIndex(prevIndex);\n } else {\n setQuestionIndex(-1);\n }\n } else {\n const prevIndex = questionIndex - 1;\n setQuestionIndex(prevIndex);\n }\n };\n\n const handleNavigation = (direction) => {\n if (timeUp) return;\n // navigation handle wrapper for syncing question progress state\n const handler = direction === 'previous' ? handlePreviousQuestion : ultimateQuestionReached ? handleSubmitClick : handleNextQuestion;\n\n // only update question progresses for custom tests for now\n if (['tbcSavedBank', 'customTest'].includes(template) && !customTestConfig?.submitted && !questionProgresses?.[questionIndex]?.didCheck) {\n updateQuestionProgressData(updateQuizProgress, questionStartTime, questionProgresses, questionIndex);\n }\n\n modalDispatch({type: 'close'});\n handler();\n };\n\n const handleSuspendClick = async () => {\n const {headerText, bodyText, confirmText, cancelText} = customTestConfig?.submitted\n ? {\n headerText: 'Would you like to end your review?',\n bodyText: 'You’ll be able to resume your review whenever you’re ready. Your tagged questions are automatically saved.',\n confirmText: 'End Review',\n cancelText: 'Return to Review'\n } : {\n headerText: 'Pause Test',\n bodyText: 'Do you want to pause this test? Once paused you can resume this test from the previous tests page.',\n confirmText: 'Pause Test',\n cancelText: 'Return to Test'\n }\n modalDispatch({\n type: 'open',\n modalContainerStyle: theme => `\n background: transparent;\n `,\n component: ({close}) => {\n return (\n {\n await updateCustomTestConfig(customTestConfig, {\n suspended: true,\n timeLeft: timeLeft?.length <= 5 ? `00:${timeLeft}` : timeLeft,\n questionIndex,\n });\n\n if (template === 'customTest' && !customTestConfig?.submitted && !questionProgresses?.[questionIndex]?.didCheck) {\n await updateQuestionProgressData(updateQuizProgress, questionStartTime, questionProgresses, questionIndex);\n }\n\n toggleReloadBlocker(false);\n setTimeout(() => history.push(`/med-school/previous-tests`), 100);\n }\n }}\n />\n )\n },\n enableClickClose: true,\n })\n };\n\n const handleSubmitClick = async () => {\n if (type === 'readinessExam' && template !== 'testReview') {\n if (blockIndex !== 7) {\n return displayEndBlockNavigation();\n }\n }\n const {headerText, bodyText, confirmText, cancelText} = ['quickReview', 'testReview'].includes(template) ?\n {\n headerText: `Nice work! You’ve reached the end of your review.`,\n bodyText: `Would you like to keep reviewing or complete your review?`,\n confirmText: `Complete Review`,\n cancelText: `Keep Reviewing`\n }\n : (customTestConfig?.submitted || !customTestConfig) && type !== 'readinessExam'\n ? {\n headerText: 'Would you like to end your review?',\n bodyText: 'You’ll be able to resume your review whenever you’re ready. Your tagged questions are automatically saved.',\n confirmText: 'End Review',\n cancelText: 'Return to Review'\n } : {\n headerText: 'End Test',\n bodyText: 'Do you want to end this test? Once ended you can review your test results from the previous tests page.',\n confirmText: 'End Test',\n cancelText: 'Return to Test'\n }\n return modalDispatch({\n type: 'open',\n modalContainerStyle: theme => `\n background: transparent;\n `,\n component: ({close}) => {\n return (\n {\n await updateCustomTestConfig(customTestConfig, {\n suspended: false,\n timeLeft: null,\n submitted: true,\n });\n // make sure current question progress is saved on end\n if (['tbcSavedBank', 'customTest'].includes(template) && !questionProgresses?.[questionIndex]?.didCheck && !customTestConfig?.submitted) {\n await updateQuestionProgressData(updateQuizProgress, questionStartTime, questionProgresses, questionIndex);\n }\n\n const shouldAutoTag = ((customTestConfig?.config && !customTestConfig?.submitted) || (isReadinessExam && template !== 'testReview'));\n const shouldTrackPerformance = shouldAutoTag && !customTestConfig?.config?.tutorMode;\n\n if (shouldAutoTag) {\n if (shouldTrackPerformance) {\n await trackQuizProgressPerformance(DEFAULT_USER_ID, quizProgress, `${DEFAULT_USER_ID}#${bootcamp}_Performance`);\n }\n await autoTagOnSubmit();\n }\n\n toggleReloadBlocker(false);\n setTimeout(() => handleGoBack(history), 100);\n }\n }}\n />\n )\n },\n enableClickClose: true,\n })\n };\n\n const filterActive = navigationFilter && navigationFilter.key;\n const nextFilteredIndex = questionProgresses?.findIndex((progressObject, index) => {\n if (navigationFilter.key === 'search') {\n const {prompt, answers, explanation, questionHeader} = getQuestionParts(progressObject.question);\n const search = [prompt, answers, explanation, questionHeader].join(' ').toLowerCase();\n return search.includes(navigationFilter.value.toLowerCase()) && index > questionIndex;\n }\n if (navigationFilter.key === 'didSelectCorrectAnswer' && navigationFilter.value === false) {\n return progressObject.didSelectCorrectAnswer === false && progressObject.didCheck && index > questionIndex;\n }\n return progressObject[navigationFilter.key] === navigationFilter.value && index > questionIndex\n });\n\n const nextBlocksMatchFilter = quizProgress.slice(blockIndex + 1).map(({questions}) => questions || []).flat().findIndex((progressObject) => {\n if (navigationFilter.key === 'search') {\n const {prompt, answers, explanation, questionHeader} = getQuestionParts(progressObject.question);\n const search = [prompt, answers, explanation, questionHeader].join(' ').toLowerCase();\n return search.includes(navigationFilter.value.toLowerCase());\n }\n if (navigationFilter.key === 'didSelectCorrectAnswer' && navigationFilter.value === false) {\n return progressObject.didSelectCorrectAnswer === false && progressObject.didCheck;\n }\n\n return progressObject[navigationFilter.key] === navigationFilter.value\n }) !== -1;\n\n const ultimateQuestionReached = (questionIndex === questions.length - 1 && blockIndex === testBlockConnections.length - 2) || (filterActive && nextFilteredIndex === -1 && !nextBlocksMatchFilter);\n\n\n const onClickMasteryButton = (masteryLevel) => {\n const updatedQuestionProgress = updateQuestionProgressState(updateQuizProgress, questionProgresses, questionIndex, {masteryLevel, question: {...currentQuestion, masteryLevel}});\n saveQuestionProgresses([updatedQuestionProgress]);\n handleNavigation('next');\n };\n\n useEffect(() => {\n toggleTimer(!hideTimer);\n }, [hideTimer]);\n\n useEffect(() => {\n if (timeUp && isReadinessExam) {\n if (blockIndex === 7) {\n modalDispatch({\n type: 'open',\n component: SubmitModal,\n enableClickClose: false,\n componentProps: {\n headerText: 'No Time Remaining',\n prometricStyling: true,\n bodyText: 'You have no more time remaining.',\n cancelConfig: {\n text: ''\n },\n confirmConfig: {\n text: 'View Test Results',\n colorConfig: themePalette,\n onConfirm: async () => {\n await updateCustomTestConfig(customTestConfig, {\n suspended: false,\n timeLeft: null,\n submitted: true,\n });\n\n if (['tbcSavedBank', 'customTest'].includes(template) && !questionProgresses?.[questionIndex]?.didCheck) {\n await updateQuestionProgressData(updateQuizProgress, questionStartTime, questionProgresses, questionIndex);\n }\n\n const shouldAutoTag = ((customTestConfig?.config && !customTestConfig?.submitted) || (isReadinessExam && template !== 'testReview'));\n const shouldTrackPerformance = shouldAutoTag && !customTestConfig?.config?.tutorMode;\n\n if (shouldAutoTag) {\n if (shouldTrackPerformance) {\n await trackQuizProgressPerformance(DEFAULT_USER_ID, quizProgress, `${DEFAULT_USER_ID}#${bootcamp}_Performance`);\n }\n await autoTagOnSubmit();\n }\n\n toggleReloadBlocker(false);\n setTimeout(() => handleGoBack(history), 100);\n },\n shouldRedirect: false,\n }\n },\n })\n } else {\n displayEndBlockNavigation(false);\n }\n return;\n }\n\n if (customTestConfig?.config?.timed && timeUp) {\n modalDispatch({\n type: 'open',\n component: SubmitModal,\n enableClickClose: false,\n componentProps: {\n headerText: 'No Time Remaining',\n prometricStyling: true,\n bodyText: 'You have no more time remaining. You can review your test results from the previous tests page.',\n cancelConfig: {\n text: ''\n },\n confirmConfig: {\n text: 'View Test Results',\n colorConfig: themePalette,\n onConfirm: async () => {\n await updateCustomTestConfig(customTestConfig, {\n suspended: false,\n timeLeft: null,\n submitted: true,\n });\n\n if (template === 'customTest' && !questionProgresses?.[questionIndex]?.didCheck) {\n await updateQuestionProgressData(updateQuizProgress, questionStartTime, questionProgresses, questionIndex);\n }\n\n const shouldAutoTag = ((customTestConfig?.config && !customTestConfig?.submitted) || (isReadinessExam && template !== 'testReview'));\n const shouldTrackPerformance = shouldAutoTag && !customTestConfig?.config?.tutorMode;\n\n if (shouldAutoTag) {\n if (shouldTrackPerformance) {\n await trackQuizProgressPerformance(DEFAULT_USER_ID, quizProgress, `${DEFAULT_USER_ID}#${bootcamp}_Performance`);\n }\n await autoTagOnSubmit();\n }\n\n toggleReloadBlocker(false);\n setTimeout(() => handleGoBack(history), 100);\n },\n shouldRedirect: false,\n }\n },\n })\n };\n }, [timeUp]);\n\n useEffect(() => {\n if (isReadinessExam) {\n if ([1,3,5,7].includes(blockIndex)) {\n updateTimeLimit(60 * timeMultiplier);\n toggleTimer(true);\n } else {\n toggleTimer(false);\n }\n }\n }, [blockIndex]);\n\n useHotkeys('ArrowLeft', () => handleNavigation('previous'), [handleNavigation]);\n useHotkeys('ArrowRight', () => handleNavigation('next'), [handleNavigation]);\n\n const blockRenderer = (testBlockConnection) => {\n const defaultBlocksForTemplate = {\n masteryReview: {testBlock: {type: 'startMasteryReview'}},\n tbcQuestionBank: {testBlock: {type: 'startBlock'}},\n bookmarkedQuestionReview: {testBlock: {type: 'startBookmarkedQuestionReview'}},\n quickReview: {testBlock: {type: 'startQuickReview'}},\n // customTest: {testBlock: {type: 'startQuickReview'}},\n }[template] || {testBlock: {}};\n\n const totalQuestionBlocks = testBlockConnections.reduce((acc, {testBlock}) => testBlock?.questionConnections?.items?.length > 0 ? acc + 1 : acc, 0);\n const {testBlock} = testBlockConnection || defaultBlocksForTemplate;\n\n if (blockRenderers[testBlock.type]) {\n const rendererProps = {\n testTitle,\n testBlock,\n questions,\n sidebarState,\n settingsSidebarState,\n setShowingExhibit,\n handleNavigation,\n showingLabValues,\n setShowingLabValues,\n handleSubmitClick,\n handleSuspendClick,\n onClickMasteryButton,\n timeLimit,\n totalQuestionBlocks\n };\n\n return blockRenderers[testBlock.type](rendererProps);\n }\n\n switch (testBlock.type) {\n case 'startQuickReview':\n return null;\n case 'startBlock':\n return (\n {\n const buttonText = progress?.find(({count}) => count > 0) ? 'Jump Back In' : 'Start Studying';\n return [\n transitionBlock('nextUntagged')} colorConfig={themePalette} loading={loading || !progress} disabled={loading} children={buttonText}/>,\n ]\n }}\n educators={educators}\n />\n );\n case 'passage':\n case 'questionSet':\n case 'caseQuestionSet':\n return (\n \n \n \n \n {showingExhibit && setShowingExhibit(false)} defaultPosition={{x: window.innerWidth - 350, y: 0}} />}\n \n \n \n \n \n \n \n \n );\n case 'sectionBreak':\n return (\n \n )\n default:\n return null;\n }\n }\n\n const examComponent = blockRenderer(testBlockConnections[blockIndex]);\n\n const updateSidebarState = debounce(event => {\n const setSidebarState = sidebarState[1];\n setSidebarState(!(window.innerWidth < 768));\n }, 150);\n\n useEffect(() => {\n window.addEventListener('resize', updateSidebarState);\n return () => window.removeEventListener('resize', updateSidebarState);\n }, []);\n\n useEffect(() => {\n\n // NOTE annoyingly intercom launcher classname / dom element hierarchy varies from production to staging/local\n // changing the styles for the .intercom-launcher class doesn't work on staging/local but should work in production\n // (it's what we use in the Qbank component to hide the launcher on mount)\n changeIntercomDisplay('', '.intercom-launcher', ['bottom: 64px !important;']);\n\n return () => {\n changeIntercomDisplay('', '.intercom-launcher', ['bottom: 20px !important;']);\n }\n }, []);\n\n const width = window.innerWidth;\n\n return (\n {\n const setSidebarState = sidebarState[1];\n if (width <= 1200) setSidebarState(false);\n }}>\n \n \n \n );\n}\n\nconst WrappedQbank = props => {\n const {\n variables: {\n quizProgress,\n customTestConfig,\n type,\n blockIndex,\n template,\n timeMultiplier\n }\n } = useTestNavigatorContext();\n const isReadinessExam = type === 'readinessExam';\n const {questions: questionProgresses} = quizProgress[blockIndex] || {questions: []};\n const questionIndex = questionProgresses?.findIndex(({current}) => current);\n\n const timeLimit = isReadinessExam ? 60 : customTestConfig?.suspended\n ? moment.duration(customTestConfig?.timeLeft).asMinutes()\n : (parseInt(customTestConfig?.config?.testLength) * 1.5 || null);\n\n const submitted = customTestConfig?.submitted || template === 'testReview';\n\n return (\n \n \n \n )\n}\n\nQBank.defaultProps = {\n showScore: true,\n enableBookmarking: false\n};\n\nexport default WrappedQbank;\n","import React from 'react';\nimport styled from 'styled-components';\nimport {useTestNavigatorContext} from '@bootcamp/web/src/contexts/TestNavigator';\nimport {PrometricWrapper, Heading, Section, NextText} from './shared';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {useTimerContext} from '@bootcamp/shared/src/util/contexts/Timer';\nimport {getTestBlockConnections, getTestBlockQuestions} from '@bootcamp/shared/src/util';\nimport {\n SettingsContainer,\n SettingsWrapper,\n SettingsHeader,\n Setting,\n SettingWrapper,\n Toggle,\n} from './shared';\n\nimport \"rc-switch/assets/index.css\";\n\nconst Container = styled.div`\n width: 100%;\n`;\nconst Citation = styled.p`\n`;\nconst CitationContainer = styled.div`\n font-size: 12px;\n color: #999;\n`;\nconst CitationsContainer = styled.div`\n font-size: 12px;\n color: #999;\n margin-top: 20px;\n line-height: normal;\n a {\n color: #46b1e1;\n text-decoration: none;\n cursor: pointer;\n &:hover {\n color: #248fbf;\n }\n }\n`;\n\nconst Citations = ({testTitle}) => {\n function getCitations () {\n switch (testTitle) {\n case \"Reading Comprehension Exam #6\":\n return (\n \n \n Passage 1: Hepcidin
\n Michels K, Nemeth E, Ganz T, Mehrad B (2015) Hepcidin and Host Defense against Infectious Diseases. PLoS Pathog 11(8): e1004998. doi:10.1371/journal.ppat.1004998\n
\n \n Passage 2: Is Sleep Essential
\n Cirelli C, Tononi G (2008) Is Sleep Essential? PLoS Biol 6(8): e216. doi:10.1371/journal.pbio.0060216\n
\n \n Passage 3: Venom
\n Maduwage K, Isbister GK (2014) Current Treatment for Venom-Induced Consumption Coagulopathy Resulting from Snakebite. PLoS Negl Trop Dis 8(10): e3220. doi:10.1371/journal.pntd.0003220\n
\n
\n )\n case \"Reading Comprehension Exam #7\":\n return (\n \n \n Passage 1: Locusts
\n Ariel G, Ayali A (2015) Locust Collective Motion and Its Modeling. PLoS Comput Biol 11(12): e1004522. doi:10.1371/journal.pcbi.1004522\n
\n \n Passage 2: Evolution Through Teeth
\n Moncrieff J (2015) Antipsychotic Maintenance Treatment: Time to Rethink? PLoS Med 12(8): e1001861. doi:10.1371/journal.pmed.1001861\n
\n \n Passage 3: Antipsychotic Treatment
\n Christopher Dean M. Tooth microstructure tracks the pace of human life-history evolution. Proceedings of the Royal Society B: Biological Sciences. 2006;273(1603):2799-2808. doi:10.1098/rspb.2006.3583\n
\n
\n )\n case \"Reading Comprehension Exam #8\":\n return (\n \n \n Passage 1: Wolves
\n Dobson AP (2014) Yellowstone Wolves and the Forces That Structure Natural Systems. PLoS Biol 12(12): e1002025. doi:10.1371/journal.pbio.1002025\n
\n \n Passage 2: HIV ART
\n Gray GE, Laher F, Doherty T, Abdool Karim S, Hammer S, Mascola J, et al. (2016) Which New Health Technologies Do We Need to Achieve an End to HIV/AIDS? PLoS Biol 14(3): e1002372. doi:10.1371/journal.pbio.1002372\n
\n \n Passage 3: Bacteria Viruses
\n Bosch AATM, Biesbroek G, Trzcinski K, Sanders EAM, Bogaert D (2013) Viral and Bacterial Interactions in the Upper Respiratory Tract. PLoS Pathog 9(1): e1003057. doi:10.1371/journal.ppat.1003057\n
\n
\n )\n case \"Reading Comprehension Exam #9\":\n return (\n \n \n Passage 1: 3D Printing
\n Miller JS (2014) The Billion Cell Construct: Will Three-Dimensional Printing Get Us There? PLoS Biol 12(6): e1001882. doi:10.1371/journal.pbio.1001882\n
\n \n Passage 2: Leishmaniasis
\n Salam N, Al-Shaqha WM, Azzi A (2014) Leishmaniasis in the Middle East: Incidence and Epidemiology. PLoS Negl Trop Dis 8(10): e3208. doi:10.1371/journal.pntd.0003208\n
\n \n Passage 3: Antibiotic Resistance
\n Meek RW, Vyas H, Piddock LJV. Nonmedical Uses of Antibiotics: Time to Restrict Their Use? PLoS Biology. 2015;13(10):e1002266. doi:10.1371/journal.pbio.1002266.\n
\n
\n )\n case \"Reading Comprehension Exam #10\":\n return (\n \n \n Passage 1: Marine Reptiles
\n Rasmussen AR, Murphy JC, Ompi M, Gibbons JW, Uetz P (2011) Marine Reptiles. PLoS ONE 6(11): e27373. doi:10.1371/journal.pone.0027373\n
\n \n Passage 2: Strongyloides
\n Puthiyakunnon S, Boddu S, Li Y, Zhou X, Wang C, Li J, et al. (2014) Strongyloidiasis—An Insight into Its Global Prevalence and Management. PLoS Negl Trop Dis 8(8): e3018. doi:10.1371/journal.pntd.0003018\n
\n \n Passage 3: Digital Epidemiology
\n Salathé M, Bengtsson L, Bodnar TJ, Brewer DD, Brownstein JS, Buckee C, et al. (2012) Digital Epidemiology. PLoS Comput Biol 8(7): e1002616. doi:10.1371/journal.pcbi.1002616\n
\n
\n )\n case \"Reading Comprehension Exam #11\":\n return (\n \n \n Passage 1: Influenza Transmission
\n Tellier, Raymond. \"Review of aerosol transmission of influenza A virus.\" Emerging infectious diseases 12.11 (2006): 1657.\n
\n \n Passage 2: Piltdown Man
\n Weiner, J.S. \"Piltdown Man.\" Piltdown Man. ClarkU, n.d. Web.\n
\n \n Passage 3: Atmospheric Physics
\n Weinberger, Sharon. \"Atmospheric Physics: Heating up the Heavens.\" Nature.com. Nature Publishing Group, 23 Apr. 2008. Web.\n
\n
\n )\n case \"Reading Comprehension Exam #12\":\n return (\n \n \n Passage 1: Dung Beetle Ecology
\n Tomas Roslin and Heidi Viljanen Dung Beetle Populations: Structure and Consequences. Ecology and Evolution of Dung Beetles, First Edition. Edited by Leigh W. Simmons and T. James Ridsdill-Smith. © 2011 Blackwell Publishing Ltd. Published 2011 by Blackwell Publishing Ltd\n
\n \n Passage 2: Forensic Analysis of Bony Tissue
\n Parks, Connie L., \"Oxygen Isotope Analysis of Human Bone and Tooth Enamel: Implications for Forensic Investigations\" (2009).\n Theses and Dissertations-Anthropology.\n
\n \n Passage 3: The Net
\n From Chapter Three of The Accidental History of the Net; by Howard Rheingold\n
\n
\n )\n case \"Reading Comprehension Exam #13\":\n return (\n \n \n Passage 1: Greenland Shark
\n \"GEERG - Greenland Shark.\" GEERG - Greenland Shark. GEERG, n.d. Web.\n
\n \n Passage 2: Mitochondrial DNA
\n Scientific American, August 1997; \"Mitochondrial DNA in Aging and Disease\";\n p. 41 - 43; by Douglas C. Wallace\n
\n \n Passage 3: Celestial Origins
\n Excerpt from The Illustrated A Brief History of Time; pp. 147-152; Copyright 1988, 1996 by Stephen Hawking\n
\n
\n )\n case \"Reading Comprehension Exam #14\":\n return (\n \n \n Passage 1: Evolutionary Biology of Penguins
\n Fordyce, R., & Ksepka, D. T. (2012). THE STRANGEST BIRD. Scientific American, 307(5), 56-61.\n
\n \n Passage 2: Natural Medicine Extraction
\n Lang, Qingyong, and Chien M. Wai. \"Supercritical fluid extraction in herbal and natural product studies—a practical review.\" Talanta 53.4 (2001): 771-782.\n
\n \n Passage 3: Black Swifts
\n Nijhuis, M. (2012). Secrets of the Swift. Smithsonian, 43(6), 33-36.\n
\n
\n )\n case \"Reading Comprehension Exam #15\":\n return (\n \n \n Passage 1: Subatomic Particles and Forces
\n Excerpt from The Illustrated A Brief History of Time; pp. 85-87; Copyright 1988, 1996 by Stephen Hawking\n
\n \n Passage 2: Spiral Bacteria in the Human Stomach
\n Dubois, Andre. \"Spiral bacteria in the human stomach: the gastric helicobacters.\" Emerging infectious diseases 1.3 (1995): 79.\n
\n \n Passage 3: Issue of Classification
\n Excerpt from \"And Still We Evolve: A Handbook on the History of Modern Science” (prepared by Ian Johnston of Vancouver Island University)\n
\n
\n )\n default:\n return null\n }\n }\n const allCitations = getCitations();\n if (!allCitations) return null;\n return (\n \n
The passages found in this practice test were adapted from the following sources:
\n {allCitations}\n
\n )\n}\n\n\n\nexport const Settings = () => {\n const {saveUserInteraction, searchUserInteractions, bootcamp} = useUserDataContext();\n const prometricDelay = searchUserInteractions('prometricDelay') === true;\n const timeAccommodation = searchUserInteractions('timeAccommodation') === true;\n const timeAccommodation2x = searchUserInteractions('timeAccommodation2x') === true;\n\n const {timeLimit, updateTimeLimit} = useTimerContext();\n\n function handleTimeAccommodationChange() {\n const newaccommodationValue = !timeAccommodation;\n const newTimeLimit = newaccommodationValue ? timeLimit * 1.5 : timeLimit / 1.5;\n\n updateTimeLimit(newTimeLimit)\n saveUserInteraction('timeAccommodation', newaccommodationValue);\n }\n\n function handle2xTimeAccommodationChange() {\n const newaccommodationValue = !timeAccommodation2x;\n const newTimeLimit = newaccommodationValue ? timeLimit * 2 : timeLimit / 2;\n\n updateTimeLimit(newTimeLimit)\n saveUserInteraction('timeAccommodation2x', newaccommodationValue);\n }\n\n return (\n \n \n \n Test Settings\n \n \n saveUserInteraction('prometricDelay', !prometricDelay)}/>\n \n Prometric Delay: Add a ~2 second delay between questions and when clicking review, similar to the real exam at the Prometric Center.\n \n \n \n \n \n Time Accommodations: Get an additional 1.5x time for students who have special accommodations approved by the ADA. (If you need more time, right-click the test timer during the test to set a custom time limit).\n \n \n {\n bootcamp === 'inbde' && (\n \n \n \n Extra Time Accommodations: Get an additional 2x time for students who have special accommodations approved by the ADA. (If you need more time, right-click the test timer during the test to set a custom time limit).\n \n \n )\n }\n \n \n );\n};\n\nconst StartBlock = () => {\n const {variables: {test, quizProgress}} = useTestNavigatorContext();\n const {timeLimit: baseTimeLimit} = useTimerContext();\n const testBlocks = getTestBlockConnections(test);\n const questionCount = testBlocks.reduce((acc, {testBlock}) => acc + getTestBlockQuestions(testBlock).length, 0);\n\n const testTitle = test && test.config.title;\n const testSubject = testTitle && testTitle.match(/([^#]+)/)[0];\n const timeLimit = baseTimeLimit || 30;\n\n const Instructions = () => {\n if (testTitle.includes(\"DAT Sample Test\")) {\n return (\n
    \n
  • This shortened version of the DAT lets you get familiar with the format and types of questions you'll encounter on the actual DAT.
  • \n
  • Don't stress about your score! The purpose is to see the types of questions you'll be expected to answer. Review the explanations afterwards.
  • \n
  • You will have 60 minutes to finish 25 questions. Good luck!
  • \n
\n )\n }\n switch (testSubject) {\n case \"Quantitative Reasoning\":\n return (\n
    \n
  1. You will have {timeLimit} minutes to finish {questionCount} questions.
  2. \n
  3. Use the on-screen calculator for practice on the real OAT. It's identical to what you'll get test day.
  4. \n
  5. You will have a chance to review the exam before completing it.
  6. \n
  7. Your score analysis will appear after finishing the exam.
  8. \n
\n )\n case \"Reading Comprehension\":\n return (\n
    \n
  1. You will have {timeLimit} minutes to finish {questionCount} questions.
  2. \n
  3. You will have a chance to review the exam before completing it.
  4. \n
  5. Your score analysis will appear after finishing the exam.
  6. \n
  7. On the real OAT, you will be able to highlight text in the passage.
  8. \n
\n )\n case \"Organic Chemistry\":\n case \"General Chemistry\":\n return (\n
    \n
  1. You will have {timeLimit} minutes to finish {questionCount} questions.
  2. \n
  3. A periodic table is provided under the \"Exhibit\" button.
  4. \n
  5. You will have a chance to review the exam before completing it.
  6. \n
  7. Your score analysis will appear after finishing the exam.
  8. \n
\n )\n default:\n return (\n
    \n
  1. You will have {timeLimit} minutes to finish {questionCount} questions.
  2. \n
  3. You will have a chance to review the exam before completing it.
  4. \n
  5. Your score analysis will appear after finishing the exam.
  6. \n
\n )\n }\n }\n return (\n \n \n \n This is {testTitle}. Please read the following before starting:\n \n
\n \n
\n \n \n
\n \n
\n )\n};\n\nexport default StartBlock;\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKpSURBVHgBRVNdTxNBFD0zO7v9wAgpUChiUayxGNBIiIkvPvjggz/Bn2jiAy8aE1+MiQ9AVIIP+FkD2hYJstm20O7Oh/fOlrjZ2Z3cmXPmnnPviN+HHddptTBMR7Bw8E8AOOFgKMIhKQQEJIwzcMZgpjKDm40VhGEElZweY2frHYwEVBQCBHSOB2MdUqIJCCyFROa0X7teX0Z94QZUSUFltCGLBNbXNnBteQku0DAmQ6pTZHSaC0I6qQAVBJ5UUIKlqIxyqQwpAyjiRklFqMxMozo/R3RDZATe/b6HnS8fKX+Fe80NrDbWPIkiOZGlnKwCC1OKCWSEIJDQ0kIbS2lrtJNjfDrcJ90Ws9Uamu42G8NiYGkfeNCrcqWOIBoZ6R9JgcSmWL7VxNOrC97Tucs1SJZA85QICUdADWnob41Galn3EMKkGPT+4sXWS/w8OvTgkIAP7j7E1MosZRn4GB/IMykllCbGkSUrySFLDmiXoT/ooXXwDe0/bdIdolpZwGpzHQVR8gRspGVHA5JkKeWMoFYE0OSDmpzA40dPsHHnPjlMZXUsj4s58kIZzKXUXoqDcpY+BOY6SxGiGEygeinCZHEKZLgvHcYuMYmkQIjIV4OjaiyKFp13WSHMu8+rFPnieCY563Ev5B/2gYzJvPbcXWsN4l6MwXkfFxU6Oxug10sQmtAfwJTsmfQdyo0hFI2AhkSfNj5//QxvP7yhhiJqbbCzu43NV5uIk3h8Vah3BMmgme+DYXqOr5/3EcenSAYJuq1fCPsCi4VanucZcNLqYm/7PaYvVzBbqaKx1PCNp/hGFctldDptdI+6PuX6xCKuFGsX9uR1J6ndHwc4kR1k9XMszdcZDBHHsev1E7pp2f/rPH4YmLk8SiVHgZwzI4tIlag35qhHFP4Bk4tEU8iirn4AAAAASUVORK5CYII=\"","import React from 'react';\nimport styled from 'styled-components';\nimport {useTestNavigatorContext} from '@bootcamp/web/src/contexts/TestNavigator';\nimport {GutterColumn} from '@bootcamp/web/src/components/Spacing';\nimport {TableContainer, Table} from './shared';\nimport Completed from '../assets/ReviewTable/Completed.png'\nimport Marked from '../assets/ReviewTable/Marked.png'\nimport Incomplete from '../assets/ReviewTable/Incomplete.png';\nimport correctIcon from '@bootcamp/shared/src/assets/nclex/correct.png';\nimport incorrectIcon from '@bootcamp/shared/src/assets/nclex/incorrect.png';\nimport MasteryIcon from '@bootcamp/web/src/bootcamps/components/MasteryIcon'\n\nconst Mastery = styled(MasteryIcon)`\n margin-left: auto;\n height: 20px;\n width: 20px;\n`\nconst Container = styled(GutterColumn)`\n margin: 20px auto;\n`;\n\nconst ReviewIcon = styled.img`\n height: 16px;\n width: 16px;\n margin-right: 10px;\n`;\nconst Flexbox = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n`;\nconst Row = styled.tr`\n &:hover {\n background: rgb(250, 250, 250);\n }\n`\nconst EndBlock = ({goToQuestion, sectionWindow=[]}) => {\n const {variables: {quizProgress, customTestConfig}} = useTestNavigatorContext();\n const showReviewDetails = customTestConfig?.submitted\n return (\n \n \n \n \n \n \n \n \n \n \n
NameMarkedCompletedSkipped
\n \n \n \n {quizProgress.reduce((acc, blockProgress, blockIndex) => {\n if (!blockProgress.questions || blockIndex < sectionWindow[0] || blockIndex > sectionWindow[1]) return acc;\n return [\n ...acc,\n ...blockProgress.questions\n .map(({didMark, didSkip, selectedAnswerIndex, time, didSelectCorrectAnswer, masteryLevel}, index) => {\n const questionIndex = sectionWindow.length > 0 ? quizProgress.slice(sectionWindow[0], blockIndex).map(({questions}) => questions || []).flat().length + index : acc.length + index;\n const reviewIconSrc = showReviewDetails && didSelectCorrectAnswer ? correctIcon : showReviewDetails ? incorrectIcon : didMark ? Marked : didSkip && !didMark ? Incomplete : selectedAnswerIndex !== -1 ? Completed : Incomplete\n return (\n goToQuestion(blockIndex, index)}>\n \n \n \n \n \n )})\n ];\n }, [])}\n \n
Question {questionIndex + 1} {showReviewDetails ? : null}{didMark ? 'Yes' : ''}{selectedAnswerIndex !== -1 ? 'Yes' : ''}{didSkip && !didMark ? 'Yes' : ''}
\n
\n
\n )\n};\n\nexport default EndBlock;\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAK6SURBVHgBTVPPS1RRFP7ufe/dGR21MXXUUnFAM1ctCiNIQihcaGmQIdUmWkb/T9iiCNqGtGvRDwhaRHspKKiInPyR2eQ47717b9+5Y9Ewd969c8/5zne+7zxlrfVKKbgshd1vor7zA7AZnLUwhSLay92IkwROaSgTwznAaYXcA54r9vxVABQvPr17j9WVFaD+E4VIozJaxYWbt9DdP8AAyeCXCEpraMZbFSGW6rI8HH5tbGDt1Wv42jpKrFYbXCOLAk7Pz+HI2AQTFSIpKEvyeI6dHJyHzS18nqPoFdE12jJg70sNbx+vor1okJgCeoeqkPgoJqGIcaStW/QdIvZo2GvBZdB7vxFxqd1dND9/w7O79/HywSPUa9twjSy0Ih1pFqUqPggmvXnvUCCIiNXBPlOfo5nl2N/cwdrzF1IW00vLqIyNcq9DGzGEsiKOsuBfNCCFTlPCa0R8GjLMSXvrw0e8aTxBqVzGqeIcekdHCCIA9EN8yK1DnqfE4579Orpg2F/RJPBpBk/A3c3vePrwHjqP9qJ7aAAqNiwaiwi5+IP/P77lGjwONkEsFe40W5G9Y4txUIMRunXHNiMIVMYAyyw6jpSyW4Z19fRganEeI5PjIgeo/MEcaB3AIz4drbTsPdUR9cgpRYImC3QM9OP4zDTOLS+hUqWIMQtQ7NiJAt5CRsuLkKwWGRNqCxvb1QHTWcLk7Awu3bmNYrkr0Pd/R9lqJlEtTTc8ralnJC54JsIen1lHCedvXMfZhYvorAyGZJnAYCMCA/GfUskscCVtBvW2AmycoNTXhzNXLmNqYRH9x8b5IjFOCzcfqiuCxNpH4U3yVOXQ4R5MnDyBreFtnhMMjU9g9uo19FaHg63ihE4iAhwUFTZplnqZREvx3H4DjfWvnEzOhI9h2stBeVOkFlqSk3+O+hYF/AEywS6oAOWcJgAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALPSURBVHgBJVNLb9NAGJxdr+2mSZoXfdDQJo3aQls1RUhIBSEu3Hvixj+uyqUHkKAPSKEP0bzIy469u8waR6to1/7mm5lvVnQf7u3N9RXmWsNKCQHAEx6EBdJkDiMFzwWMNYD7h4WWFlvNLVSrVahhr4/Tz2eYzaYQGYBAQABpLKJ4Bqs8GE8gsSmsIBgbBGGA0lIRtVoNyvBQ6xTlSgmlchmCe/aHZJFgpzQ10Gyu2TuxFgkhfD9ALpeHe1SClC80cvkFVGtlOKaui3B0qUMZkwFyg7t+H8ZoVIpLCFUAS3A1Z3HKZWQmnlrtf/2pRkQPijxTQiKazNG97iAm4NMKtWt+zqWcQcpTSNh5nOjMg5AFvlIspB9ximl/gJ8/Ovh6eopCuYRcu42c9BBAQtFaajToP/bYJc7MW6e7+UKBtC2G/RF+X3Xw5ewMt98usLHVhIj4HY1xTJVkZ0O6o94AY92FGU+xsLICnyCao73t9nD5/QK/Li+p3yBXKGbaLQEs92qBOvIioMc+ZoMubs7P0aeTi27+9GMUGQzGE3qSoP7iOZ4dHsAv5iE8miacfDdXIq5R2zCOcfGnh/vhEEhiNwtojsxj13VS393fR2Njk7RZZbPI0SciCU6hWq6hRDOvq08IMMFkMuF7iWK1iOVWA63DQ7R2tlGrVKBTlwoykIqeSY4xUBndlfo63n/6iMbBHqwv4ZXyOHr7Bh9OTtB+d4ylzTXMcgp9zyBWDBmXcslKqDf1mLDFEPVmAwfHr1GkJI/h2n31EsvNDcSBB01GzlhD+qlLKXkoN3nLX2QS/J2PoSKB+u4O6tutLJKykMOIfvQmERaCEAFd8yhVc8SWeVHOCsNN5/4Bd49dhIxGyMvk8cxw3nN2TnwuRtiZ5y5cGIZYpZmra6tQSzRl76iN6SzKYuzzoxAuZQROEsrjRXKu85EstjTc3ZUCJ+Oz0T+j0FO4lmQdmQAAAABJRU5ErkJggg==\"","export default __webpack_public_path__ + \"static/media/SectionBreak.7ded7af9.png\";","import React, {useState, useEffect, useMemo} from 'react';\nimport styled from 'styled-components';\nimport Highlightable from '@bootcamp/web/src/components/Highlightable';\nimport {TagLinks} from '@bootcamp/web/src/components/Tags';\nimport {Column} from '@bootcamp/web/src/components/Grid';\nimport AdminButtons from '@bootcamp/web/src/components/QuestionView/components/AdminButtons';\nimport {determineColorFromTitle} from '@bootcamp/shared/src/util';\nimport {PrometricWrapper, NextText, Section, Heading} from './shared';\n\nconst ChoiceContainer = styled.label`\n min-height: 30px;\n height: auto;\n border-radius: 2px;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n background-color: ${({isCorrect, isIncorrect}) => isCorrect ? 'rgba(123, 213, 110, 0.5)' : isIncorrect ? 'rgba(251, 126, 122, 0.5)' : null};\n font-weight: ${({isCorrect}) => isCorrect && 'bold'};\n margin-bottom: .5em;\n user-select: none;\n text-decoration: ${({isCrossed}) => isCrossed ? 'line-through' : 'none'};\n // opacity: ${({isCrossed}) => isCrossed ? 0.6 : 1};\n &:last-child {\n margin-bottom: 0;\n }\n cursor: pointer;\n`\nconst Option = styled.input.attrs({ type: 'radio', name: 'answer' })`\n cursor: pointer;\n`\nconst LabelText = styled.span`\n padding-left: 5px;\n * {\n max-width: 100%;\n font-size: 16px !important;\n display: inline;\n }\n p {\n margin: 0;\n }\n img {\n height: auto;\n }\n .sup, .sub, sup, sub {\n font-size: 12px !important;\n }\n .sup {\n vertical-align: sup;\n }\n .sub {\n vertical-align: sub;\n }\n .fr-dib, .fr-dii {\n margin: 0 !important;\n display: inline !important;\n vertical-align: middle !important;\n }\n max-width: 100%;\n font-size: 16px !important;\n display: inline;\n`\n\nconst alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\n\nconst AnswerChoice = ({answer, isCrossed, isSelected, setSelectedAnswerIndex, updateCrossedAnswerIndexes, showingExplanation, answerIndex}) => {\n const [answerText, answerCorrect] = answer;\n\n const isCorrect = answerCorrect && showingExplanation;\n const isIncorrect = !answerCorrect && isSelected && showingExplanation;\n\n function handleContextMenu(event) {\n event.preventDefault();\n event.stopPropagation();\n\n updateCrossedAnswerIndexes();\n }\n\n const answerLetter = alphabet[answerIndex];\n\n const letteredAnswerText = `${answerLetter}. ${answerText}`;\n\n return (\n \n {\n setSelectedAnswerIndex();\n isCrossed && updateCrossedAnswerIndexes();\n event?.target?.blur();\n }}\n />\n {useMemo(() => , [letteredAnswerText])}\n \n )\n}\n\nconst AnswerBoxContainer = styled.form`\n border-radius: 5px;\n padding: 0 1em;\n clear: both;\n width: 100%;\n`;\n\nconst AnswerBox = ({\n answers,\n selectedAnswerIndex,\n setSelectedAnswerIndex,\n showingExplanation,\n crossedAnswerIndexes,\n updateCrossedAnswerIndexes,\n}) => {\n\n return (\n \n {answers.map((answer, index) => {\n return (\n setSelectedAnswerIndex(index)}\n updateCrossedAnswerIndexes={() => updateCrossedAnswerIndexes(index)}\n isSelected={selectedAnswerIndex === index}\n isCrossed={crossedAnswerIndexes.indexOf(index) > -1}\n answer={answer}\n showingExplanation={showingExplanation}\n answerIndex={index}\n />\n )\n })}\n \n )\n}\n\n\n const Container = styled(PrometricWrapper)`\n transform: translate3d(0,0,0);\n img {\n display: block;\n margin: 12px 0px;\n }\n `;\n const Prompt = styled.div`\n * {\n max-width: 100%;\n font-size: 16px !important;\n line-height: 21px;\n font-family: Arial;\n margin: 0;\n }\n p {\n margin: 0;\n }\n ol, ul {\n margin: 1em 0;\n }\n .sup, .sub, sup, sub {\n font-size: 12px !important;\n }\n .sup {\n vertical-align: sup;\n }\n .sub {\n vertical-align: sub;\n }\n img {\n height: auto;\n margin-left: 0 !important;\n }\n margin: 1em 0px;\n max-width: 100%;\n width: 100%;\n font-size: 16px !important;\n line-height: 21px;\n font-family: Arial;\n `\n\nconst QuestionView = ({\n prompt,\n answers,\n explanation,\n caseset,\n xray,\n clinicalPhoto,\n citations,\n updatedAt,\n tags,\n sectionTitle,\n didSubmitAnswer,\n testBlockName,\n alwaysShowingExplanation,\n onSelectAnswerIndex,\n didSubmitAnswerIndex,\n showFeedback,\n questionId,\n enableHighlighting,\n disableVideos,\n setHighlights,\n highlights,\n questionIndex,\n didMark,\n time,\n savedCrossedAnswerIndexes,\n onCrossedAnswerIndexesUpdate,\n viewKey,\n tutorialMode,\n blockPassage,\n isDraft\n}) => {\n const [selectedAnswerIndex, setSelectedAnswerIndex] = useState(didSubmitAnswerIndex);\n const [crossedAnswerIndexes, setCrossedAnswerIndexes] = useState(savedCrossedAnswerIndexes);\n\n const filteredAnswers = answers.filter(Array.isArray);\n\n const correctAnswerIndex = filteredAnswers\n .map(([answerText, answerCorrect]) => answerCorrect)\n .indexOf(true);\n // const correctAnswerLetter = alphabet[correctAnswerIndex];\n const didSelectCorrectAnswer = selectedAnswerIndex === correctAnswerIndex;\n const showingExplanation = didSubmitAnswer || alwaysShowingExplanation;\n\n // selectedAnswerIndex hook\n useEffect(() => {\n if (!filteredAnswers?.length) return;\n if (selectedAnswerIndex !== -1) {\n onSelectAnswerIndex(selectedAnswerIndex, didSelectCorrectAnswer);\n }\n\n alwaysShowingExplanation && setSelectedAnswerIndex(didSubmitAnswerIndex || correctAnswerIndex);\n }, [selectedAnswerIndex]);\n\n function updateCrossedAnswerIndexes(index) {\n if (showingExplanation) return;\n\n const indexes = crossedAnswerIndexes.indexOf(index) > -1\n ? crossedAnswerIndexes.filter(i => i !== index)\n : [...crossedAnswerIndexes, index];\n onCrossedAnswerIndexesUpdate(indexes);\n setCrossedAnswerIndexes(indexes);\n }\n const {subject} = tags.find(tag => !!tag.topic && tag.contentType !== 'auxiliaryAnatomy') || {};\n const ContainerType = tutorialMode ? Column : Container\n return (\n \n
\n {sectionTitle && (\n \n {sectionTitle} {sectionTitle === 'Survey of Natural Sciences' ? `- ${subject}` : ''}\n \n )}\n \n {testBlockName &&\n \n }\n \n \n \n \n
\n {blockPassage}\n {tutorialMode ? null : }\n
\n )\n}\n\nQuestionView.defaultProps = {\n prompt: '',\n answers: '[]',\n explanation: '',\n updatedAt: '',\n onSelectAnswerIndex: () => true,\n alwaysShowingExplanation: false,\n didSubmitAnswerIndex: -1,\n showFeedback: false,\n questionId: '',\n tags: [],\n enableHighlighting: false,\n setHighlights: () => {},\n highlights: null, // this should be a serialized highlight string,\n didMark: false,\n time: \"\",\n savedCrossedAnswerIndexes: [],\n onCrossedAnswerIndexesUpdate: () => true\n}\n\nexport default QuestionView;\n","import React, {useEffect, useState} from 'react';\nimport styled from 'styled-components';\n\nimport {useTimerContext} from '@bootcamp/web/src/contexts/TestTimer';\nimport {useTestNavigatorContext} from '@bootcamp/web/src/contexts/TestNavigator';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\n\nimport {\n PrometricWrapper,\n NextText,\n NextButton,\n YesButton,\n NoButton,\n PreviousButton,\n EndButton,\n ExhibitButton,\n MarkButton,\n MarkedButton,\n ReviewAllButton,\n ReviewMarkedButton,\n ReviewIncompleteButton,\n Passage,\n Section,\n CenterSection,\n Heading,\n MouseImage,\n ScrollImage,\n ReviewScreenImage,\n TimeLimitImage\n} from './shared';\n\nimport SectionBreakImage from '../assets/SectionBreak.png'\nimport PerceptualImage from '../assets/perceptual.gif'\nimport PrometricView from '../components/QuestionView';\nimport {SubmitAnatomyCase} from '@bootcamp/web/src/components/Modal';\nimport {Settings} from './StartBlock';\n\n\nconst QuestionView = styled(PrometricView).attrs(props => ({tutorialMode: true}))``;\n\nconst IntroContainer = styled(Section)`\n height: 100%;\n margin: 0;\n padding-top: 12vh;\n `;\nconst IntroWrapper = styled(PrometricWrapper)`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n width: 70%;\n height: 45%;\n margin-bottom: 0;\n margin-top: 0;\n margin: 0 auto;\n`;\nconst ConfidentialityContainer = styled(Section)`\n padding: 64px;\n`;\nconst IntroConfirmation = styled(Section)`\n display: flex;\n flex-direction: column;\n width: 70%;\n height: 40%;\n margin: 32px auto;\n justify-content: center;\n`;\nconst BoldSection = styled(Section)`\n font-weight: bold;\n margin-bottom: 0;\n`;\n\nconst Intro = () => {\n const {bootcamp, DEFAULT_USER_ID, cognitoUser} = useUserDataContext();\n const testTitle = `${bootcamp === 'dat' ? 'Dental' : 'Optometry'} Admission Test`\n return (\n \n \n \n

\n {cognitoUser?.getUsername() || DEFAULT_USER_ID}\n
\n {testTitle}\n

\n
\n \n \n This exam contains copyrighted material, which is reprinted with permission of the copyright owner. All rights reserved.\n \n \n
\n \n If this information is correct, click the \"Yes\" button with the mouse.\n If this information is NOT correct, click the \"No\" button with the mouse and contact the administrator.\n \n \n
\n )\n}\nconst Confidentiality = () => {\n return (\n \n

\n \n Read the following Notice and press \"Next\" button at the bottom of the screen, verifying that you agree to its contents.\n \n

\n\n \n CONFIDENTIALITY AGREEMENT and\n
\n NOTICE CONCERNING IRREGULARITIES\n
\n\n

\n In applying to sit for the Dental Admission Test, you agreed to abide by regulations controlling the conduct of the test and abide by all instructions, whether oral or written. The DAT is a secure test and is protected by U.S. copyright law. You are required to maintain the confidentiality of the test. You may not reproduce or attempt to reproduce test material through memorization, recording, or other means. You may not provide information relating to test content to others.\n

\n\n

\n If a violation of test regulations is noted during the test or evidence of an irregularity is disclosed during the processing of test responses or at a later time, your test results may be withheld, voided and/or considered invalid. You may also be directed to leave the test center before you have completed the test. If your scores are withheld as the result of an irregularity, you may be prohibited from testing for up to two years. Unauthorized disclosure of test content could also result in civil liability and/or criminal penalties.\n

\n\n

\n If you experience problems with testing conditions, computer equipment or the display of test items or exhibits, you should immediately report the problem to the test administrator. If corrective action is not taken immediately, you should inform the Department of Testing Services within five business days of the testing appointment.\n

\n

\n \n If you have any personal belongings (cell phone, pencil, wallet, food items, etc.) with you at this time, inform the test administrator immediately and return the items to your locker before proceeding.\n \n

\n
\n )\n}\nconst Welcome = () => (\n \n \n Welcome to the tutorial\n \n
\n This tutorial demonstrates options and functions used in your test and allows you to try them without risk, before using them in items that will be scored. You will be instructed on how to use the mouse and the different parts of the screen.\n
\n
\n Note the clock in the upper right-hand corner showing the time limit for this tutorial. This tutorial has a 15 minute time limit.\n
\n \n
\n)\nconst Mouse = () => (\n \n \n Using the mouse\n \n
\n \n \n \n \n \n
\n \n \n The mouse pointer moves when you move the mouse around on a surface. Although it can assume different shapes, the arrow shown at left is common. To point with the mouse, move the pointer until it rests on the desired object. To click something, point to it and then press and quickly release the left mouse button.\n
\n
\n
\n Practice:\n
\n
    \n
  1. \n Rest your hand lightly on the mouse and move it. Note how the pointer moves as your hand does.\n
  2. \n
  3. \n Point to the correct answer (A) on the sample question below and click. You can click anywhere in the answer. Notice that the open circle next to the answer you chose is now filled in.\n
  4. \n
\n \n Sample Question\n \n
\n \n
\n \n
\n)\nconst Navigation = () => (\n \n \n Navigating through the test\n \n
\n You can use the mouse to move through the test one question at a time. Buttons appear at the bottom of the screen.\n
\n
\n \n To move backward\n
\n Click the Previous button\n
\n
\n \n To move forward\n
\n Click the Next button\n
\n \n
\n)\nconst Scroll = () => (\n \n \n Using the scroll function\n \n
\n \n \n \n \n \n
\n \n \n
\n A scroll bar appears when a question doesn't fit on a single screen. Scroll bars may be horizontal or vertical.\n
\n
\n To scroll through the screen contents, click the scroll arrow that points in the appropriate direction to move a short distance. To move up or down one screen at a time, click within the scroll bar above or below the scroll box.\n
\n
\n The scroll bars in the image are not operational, but will be operational in the test.\n
\n
\n
\n \n
\n)\nconst Exhibit = () => (\n \n \n Exhibit Practice\n \n
\n Some test items require an exhibit (image) to answer the question.\n
\n
\n Practice:\n
\n
\n
    \n
  1. \n Click the Exhibit button below\n
  2. \n
  3. \n You may resize the window to view this screen and the exhibit at the same time\n
  4. \n
  5. \n Click Close in the window when you have finished viewing the exhibit to return to the question\n
  6. \n
  7. \n A calculator will be available as an exhibit for the Quantitative Reasoning portion of the test. Clicking on the “Calculator” button will display a calculator. The calculator is operational by using the mouse, not the numeric keypad.\n
  8. \n
\n
\n \n
\n)\nconst Mark = () => (\n \n \n Marking questions for later review\n \n
\n Click the Exhibit button below\n You may resize the window to view this screen and the exhibit at the same time\n Click Close in the window when you have finished viewing the exhibit to return to the question.\n A calculator will be available as an exhibit for the Quantitative Reasoning portion of the test. Clicking on the “Calculator” button will display a calculator. The calculator is operational by using the mouse, not the numeric keypad.\n
\n
\n \n To mark a question\n
\n Click the Mark button\n
\n
\n \n To unmark a question\n
\n Click the Marked button\n
\n
\n Unmark each question when you are satisfied with your answer choice. If you forget to unmark the question, your score will not be affected. The scoring process does not differentiate between marked and unmarked questions.\n
\n
\n You can also leave a question unanswered (incomplete). Marked and Incomplete questions will be highlighted in a Review Questions screen before you exit the test, and you will have the opportunity to go back to those if you have time remaining.\n
\n \n
\n)\nconst MultipleChoice = () => (\n \n \n Multiple choice items\n \n
\n This test uses multiple choice items.\n
\n
\n To answer each multiple choice question in your test, click on your answer.\n
\n
\n Practice on the sample question by doing the following:\n
\n
\n
    \n
  1. \n Select an answer. Notice that the open circle next to the answer you chose is now filled in.\n
  2. \n
  3. \n Change your answer by selecting different choices.\n
  4. \n
\n
\n \n Sample Question\n \n
\n \n
\n \n
\n)\nconst Samples = () => {\n const {bootcamp} = useUserDataContext();\n return (\n \n
\n In the following eight screens you will see at least one sample item from each of the four components in the {bootcamp === 'dat' ? 'Dental' : 'Optometry'} Admission Test battery.\n
\n
Survey of the Natural Sciences
\n
{bootcamp === 'dat' ? 'Perceptual Ability' : 'Reading Comprehension'}
\n
{bootcamp === 'dat' ? 'Reading Comprehension' : 'Physics'}
\n
Quantitative Reasoning
\n
\n )\n}\nconst SNSBiology = () => (\n \n \n Survey of the Natural Sciences - Biology\n \n
\n \n
\n\n \n
\n)\nconst SNSGenChem = () => (\n \n \n Survey of the Natural Sciences - General Chemistry\n \n
\n \n
\n \n
\n)\nconst SNSOrgoChem = () => (\n \n \n Survey of the Natural Sciences - Organic Chemistry\n \n
\n \n
\n \n
\n)\nconst PAT = () => (\n \n \n Perceptual Ability\n \n
\n \n \n
\n \n
\n)\nconst SectionBreak = () => (\n \n \n The following message will appear after the Perceptual Ability Section\n \n \n

Section Break

\n

\n STOP! Please read this message. This is an optional break. The amount of time you have for this break is shown in the \"Time Remaining\" box in the upper right corner of the screen. Clicking the NEXT button will terminate the break immediately and start the next section of the test. Click NEXT to continue before the break period expires.\n

\n

\n After the break time expires, testing will resume automatically.\n

\n
\n \n
\n)\nconst OATSectionBreak = () => (\n \n \n The following message will appear after the Physics Section\n \n \n \n \n \n \n)\nconst RCPassage = `\n

The Threat of Comets and Asteroids

\n(1). Scientists believe that somewhere between four and five billion years ago, our solar system, the Milky Way, was formed from gases and dust that grouped together to form planetesimals. These planetesimals joined together to form planets, made of molten materials so hot that lighter, essential materials, such as water, carbon dioxide, and other gases, boiled off. As with other planets in the system, the Earth's surface then began to cool, and a solid crust formed around its circumference. Life began on Earth only after water was brought to it, later to cover two thirds of its surface. The water arrived to the young planet by cold meteors, which carried ice from the outlying regions of the solar system.\n

\n(2). Comets still inhabit the farthest edges of the Milky Way. When the system was forming, comets evolved from the matter thrown away by the planetesimals and new planets. Forming in the outlying parts of the solar system, far from the sun's heat, comets were born cold, some as cold as -260°C. They still carry gases, snow, and ice as they travel throughout the Milky Way's outer regions.\n

\n(3). One well-known cluster of comets is known as the Kuiper belt, named for its discoverer. The comets of the Kuiper belt have their orbits between the orbits of Neptune and Pluto. Thirty-one comets have been seen and identified in the belt so far, and scientists now even consider Pluto to be the largest of the Kuiper comets, because its unusually elliptical orbit more closely resembles the orbit of a comet than that of a planet.\n

\n(4). The orbits of comets in the Kuiper belt are so oddly shaped that they travel both in the outlying regions of the solar system and near the sun. Orbit lengths for these comets range from ten to one hundred years. Scientists have surmised that a collision with any one of these comets would be disastrous, for several reasons. First, comets' orbits are often steeply inclined in relation to the Earth's orbit, and some comets even orbit in the opposite direction to the Earth. This means that these comets travel at a very high velocity compared to the Earth, along the order of fifty to seventy-five kilometers per second. Scientists reason that the shock from an impact caused by such a fast-moving comet would be cataclysmic for life on the Earth.\n

\n(5). Asteroids also formed from materials thrown out by early planetary activity. Unlike comets, asteroids are the leftover matter that remained within the middle parts of the system. Most asteroids today inhabit the space between the first and fifth planets, Mars and Jupiter. Since asteroids formed near the sun, they began at very hot temperatures, and their lighter gases boiled off. Today, asteroids contain mostly carbon and other heavy metals.\n

\n(6). Asteroids normally have very stable orbits. However, there are so many asteroids in the Milky Way solar system that it is possible for them to collide with one another. When this happens, debris thrown out from a collision forms a new orbit. Some of these new asteroid orbits resonate with the orbit of the giant planet Jupiter. That is, Jupiter's gravitational pull influences the new asteroid and causes the asteroid's orbit to become erratic. These erratic orbits open up the possibility of a collision with one of the other inner planets, including Earth.\n

\n(7). Some of the asteroids that penetrate the space closer to the sun from Jupiter are small, less than fifty meters across. These are small enough to be melted by the Earth's atmosphere before they ever reach the planet's surface, so danger of collision from these smaller asteroids is slim to none. Larger asteroids, measuring sixty meters and more across, do pose a threat to Earth because they are too big to be destroyed by the Earth's atmosphere.\n

\n(8). In 1908, a large asteroid did reach the Earth's surface, above Siberia in Russia. Although the sixty-five-meter asteroid did not leave a crater in the Earth's surface, its heat left a ring of burnt trees and grass fifty meters across. Because of the length of time since that asteroid collision, scientists estimate that the timing of an Earthly invasion by an asteroid is about once every hundred years. Further, since the Earth's surface is made up largely of bodies of water, it is likely that a collision would occur with a water-covered surface rather than with land. On the other hand, while scientists regard the chances of an asteroid collision as low, the likely damage from such a collision is enormous, especially if the asteroid were to hit at or near a populated area. In addition, the heavier the metals in the asteroid, the worse the impact of the collision would be. Meteor Crater, in Arizona, was caused by a relatively small, thirty-meter asteroid made of heavy metals. The crater itself is more than a kilometer across.\n

\n(9). Large asteroids, from one kilometer in diameter, pose a great danger to the Earth, although the chances that an asteroid of that size will collide with the Earth are estimated at about once every three-hundred thousand years. However, research has been devoted to studying the likely harm since it is theoretically possible.\n

\n(10). An asteroid of one kilometer or more, traveling at its average speed of twenty kilometers per second, would hit the Earth with a shock equal to millions more than the impact caused by the atomic bomb dropped on Hiroshima during World War II. While an asteroid collision would not include the nuclear radiation caused by a nuclear bomb, the physical impact alone would disrupt the Earth's atmosphere and cause large dust clouds to form and block out the sun, causing a permanent winter to descend over the Earth, marked by subzero temperatures, violent windstorms, and uninterrupted darkness.\n

\n(11). Scientists have uncovered evidence that an unusually large asteroid, probably between ten and twenty kilometers in diameter, collided with the Earth around sixty-five million years ago, touching down on Mexico's Yucatan Peninsula. This event marks the end of the Cretaceous period, when dinosaurs and other species inhabited the Earth, and the beginning of the next period, the Tertiary. The crater, measuring about one hundred seventy kilometers across, cannot be seen from the Earth's surface, but photographs taken by the space shuttle Endeavor, and information collected during oil drillings, have showed scientists where the crater lies.\n

\n(12). Scientists have surmised the following scenario from evidence of the ancient crater: first, the explosion caused rocks and steam to be cast into the Earth's atmosphere, cracking open the Earth's crust and causing massive earthquakes and tsunamis across the planet. Huge dust clouds, containing particles of Earth and asteroid, covered the Earth's surface, causing uninterrupted darkness for months. Next, acid rain fell, dropping the dust from the clouds onto the Earth's surface and forming a layer of several centimeters over the entire planet. Scientists have found dinosaur and other fossils below this layer of sediment, but none above, indicating that the collision and its aftermath wiped out about three-quarters of the Earth's species.\n

\n(13). Next came a deep freeze over the Earth, followed by a gradual warming, lasting several centuries. One twist on the theory of the demise of the dinosaurs holds that what killed these species was not the initial impact of the asteroid, or the prolonged freeze, but the intense warming of the Earth's surface that followed.\n

\n`;\nconst RCIntro = () => (\n \n \n The next two screens are examples of Reading Comprehension items.\n \n
\n The Reading Comprehension component of this test contains reading passages that can be viewed on the same screen as the question. The reading passages are longer than the screen, so they have been put into a window and a scroll bar will appear to the right of the window to allow you to scroll down as you read the passage.\n
\n
\n To view the reading passage, click the scroll bar attached to the passage to scroll through the passage.\n
\n \n \n
\n)\nconst RCFirst = () => (\n \n Reading Comprehension\n
\n \n \n
\n \n
\n)\nconst RCSecond = () => (\n \n Reading Comprehension\n
\n \n \n
\n \n
\n)\nconst Physics = () => (\n \n Physics\n
\n \n
\n \n
\n)\nconst QR = () => (\n \n Quantitative Reasoning\n
\n \n
\n \n
\n)\nconst Reviewing = () => {\n const {bootcamp} = useUserDataContext();\n return (\n \n Reviewing items\n
\n \n
\n
\n At the end of each of the four {bootcamp === 'dat' ? 'DAT' : 'OAT'} components, you will see a scrollable listing of all the question numbers. This list displays each question number and indicates if the question has been marked for review, completed, or skipped. Keep in mind that when you complete the item review and exit each test section, you will not be able to return to that section of the test.\n
\n
\n To review questions\n
\n \n Click on the Review All button. You will be moved to the first question. Clicking on the Next button will move you to the next question. You can also double-click on the question number in the list to move to a particular question.\n
\n
\n To review marked questions\n
\n \n Click on the Review Marked button. You will be moved to the first marked question. Clicking on the Next button will move you to the next marked question.\n
\n
\n To review incomplete questions\n
\n \n Click on the Review Incomplete button. You will be moved to the first incomplete question. Clicking on the Next button will move you to the next incomplete question.\n
\n \n
\n )\n}\nconst Time = () => {\n const {bootcamp} = useUserDataContext();\n return (\n \n
\n \n
\n
\n If the time limit for any of the {bootcamp === 'dat' ? 'DAT' : 'OAT'} components (tests) expires before you complete it, you will be notified by means of the \"Time Expired\" message. Your only option is to proceed to the next test, or if it is the last test, to finish the testing process.\n
\n \n
\n )\n}\nconst End = () => {\n const {bootcamp} = useUserDataContext();\n return (\n \n End of tutorial\n
\n This concludes the tutorial. If you need assistance during the examination, please contact the Test Center Administrator.\n
\n
\n Upon request, the Test Center Administrator will provide note boards and low-odor, fine-tip markers. All materials must be returned to the Test Center Administrator. No scratch paper is allowed in the secure testing area.\n
\n
\n Your test will consist of the following four sections:\n
\n
\n Survey of the Natural Sciences
\n {bootcamp === 'dat' ? 'Perceptual Ability' : 'Reading Comprehension'}
\n {bootcamp === 'dat' ? 'Reading Comprehension' : 'Physics'}
\n Quantitative Reasoning\n
\n
\n Detailed information will precede each section.\n
\n
\n Examinees are responsible for protecting the integrity of their responses. If cheating is detected, those involved, whether they are copiers or those copied from, will have their tests voided.\n
\n
\n Good luck with the test.\n
\n \n Click the \"End\" button to begin the test.\n \n
\n )\n}\n\nconst DATpages = [\n Intro,\n Confidentiality,\n Welcome,\n Mouse,\n Scroll,\n Navigation,\n Mark,\n Exhibit,\n MultipleChoice,\n Samples,\n SNSBiology,\n SNSGenChem,\n SNSOrgoChem,\n PAT,\n SectionBreak,\n RCIntro,\n RCFirst,\n RCSecond,\n QR,\n Reviewing,\n Time,\n End,\n]\n\nconst OATpages = [\n Intro,\n Welcome,\n Mouse,\n Scroll,\n Navigation,\n Mark,\n Exhibit,\n MultipleChoice,\n Samples,\n SNSBiology,\n SNSGenChem,\n SNSOrgoChem,\n RCIntro,\n RCFirst,\n RCSecond,\n OATSectionBreak,\n Physics,\n QR,\n Reviewing,\n Time,\n End,\n]\n\nconst FullLengthTutorial = ({setExhibitType, setShowingExhibit, setTopLeftText, setTopRightText}) => {\n const [tutorialIndex, setTutorialIndex] = useState(0);\n\n const {\n methods: {\n setLeftButtons,\n setCenterButtons,\n setRightButtons,\n transitionBlock,\n }\n } = useTestNavigatorContext();\n const {modalDispatch} = useModalContext();\n const {toggleTimer, updateTimeLimit} = useTimerContext();\n const {searchUserInteractions, bootcamp} = useUserDataContext();\n\n const timeAccommodation = searchUserInteractions('timeAccommodation') === true;\n const tutorialSet = bootcamp === 'dat' ? DATpages : OATpages;\n\n useEffect(() => {\n return () => {\n // When this component dismounts...\n setCenterButtons([]);\n setTopLeftText();\n }\n }, [])\n\n const EndButtonComponent = (\n {\n transitionBlock('next');\n const timeLimit = timeAccommodation ? 135 : 90;\n updateTimeLimit(timeLimit);\n toggleTimer();\n }} />\n )\n useEffect(() => {\n setShowingExhibit(false);\n if (tutorialIndex === 0) {\n setTopRightText(' ')\n }\n if (tutorialIndex > 0) {\n setTopLeftText(`Page ${tutorialIndex} of {pages.length}`);\n }\n if (tutorialIndex === 2) {\n setTopRightText();\n const timeLimit = timeAccommodation ? 22.5 : 15;\n updateTimeLimit(timeLimit);\n toggleTimer();\n }\n if (tutorialIndex === 7) {\n setExhibitType('periodic');\n }\n\n\n\n if (tutorialIndex === 0) { // this case should now be for yes/no clicks in the first two intro blocks\n setLeftButtons([{component: setTutorialIndex(tutorialIndex => tutorialIndex + 1)} />}])\n setRightButtons([\n {\n component: (\n modalDispatch({\n type: 'open',\n component: SubmitAnatomyCase,\n enableClickClose: true,\n componentProps: {\n prometricStyling: true,\n headerText: 'Would you like to exit the test?',\n bodyText: 'Your test is in progress. If you exit now, your test results will NOT be saved.',\n cancelConfig: {\n text: `Return to the Test`,\n onCancel: () => {\n modalDispatch({type: 'close'});\n },\n shouldRedirect: false,\n\n },\n confirmConfig: {\n text: 'Exit Test',\n color: '#0F6292',\n onConfirm: () => {},\n shouldRedirect: true,\n redirect: location => location.pathname.split('/').slice(0, -1).join('/')\n }\n },\n })}\n />\n )\n }\n ]);\n } else if (tutorialIndex === 1) {\n setLeftButtons([{component:
}])\n setCenterButtons([\n {\n component: setTutorialIndex(tutorialIndex => tutorialIndex + 1)} />\n }\n ]);\n setRightButtons([{component:
}])\n } else if (tutorialIndex === 2) {\n setLeftButtons([{component:
}])\n setCenterButtons([\n {\n component: setTutorialIndex(tutorialIndex => tutorialIndex + 1)} />\n }\n ]);\n setRightButtons([{component: EndButtonComponent}])\n\n } else if (tutorialIndex === tutorialSet.length - 1) { // case for last block in the set\n setLeftButtons([{component: setTutorialIndex(tutorialIndex => tutorialIndex - 1)}/>}])\n setCenterButtons([]);\n setRightButtons([{component: EndButtonComponent}])\n } else {\n setLeftButtons([{component: setTutorialIndex(tutorialIndex => tutorialIndex - 1)}/>}]);\n setCenterButtons([\n {\n component: setTutorialIndex(tutorialIndex => tutorialIndex + 1)} />\n }\n ]);\n setRightButtons([\n tutorialIndex === 6 && {component: },\n tutorialIndex === 7 && {component: setShowingExhibit(showingExhibit => !showingExhibit)} />},\n {component: EndButtonComponent}\n ]);\n }\n }, [tutorialIndex])\n\n return tutorialSet[tutorialIndex]();\n}\n\nexport default FullLengthTutorial;\n","export default \"data:image/gif;base64,R0lGODdhsgF8APcAAAAAAAAAQAAAgAAA/wAgAAAgQAAggAAg/wBAAABAQABAgABA/wBgAABgQABggABg/wCAAACAQACAgACA/wCgAACgQACggACg/wDAAADAQADAgADA/wD/AAD/QAD/gAD//yAAACAAQCAAgCAA/yAgACAgQCAggCAg/yBAACBAQCBAgCBA/yBgACBgQCBggCBg/yCAACCAQCCAgCCA/yCgACCgQCCggCCg/yDAACDAQCDAgCDA/yD/ACD/QCD/gCD//0AAAEAAQEAAgEAA/0AgAEAgQEAggEAg/0BAAEBAQEBAgEBA/0BgAEBgQEBggEBg/0CAAECAQECAgECA/0CgAECgQECggECg/0DAAEDAQEDAgEDA/0D/AED/QED/gED//2AAAGAAQGAAgGAA/2AgAGAgQGAggGAg/2BAAGBAQGBAgGBA/2BgAGBgQGBggGBg/2CAAGCAQGCAgGCA/2CgAGCgQGCggGCg/2DAAGDAQGDAgGDA/2D/AGD/QGD/gGD//4AAAIAAQIAAgIAA/4AgAIAgQIAggIAg/4BAAIBAQIBAgIBA/4BgAIBgQIBggIBg/4CAAICAQICAgICA/4CgAICgQICggICg/4DAAIDAQIDAgIDA/4D/AID/QID/gID//6AAAKAAQKAAgKAA/6AgAKAgQKAggKAg/6BAAKBAQKBAgKBA/6BgAKBgQKBggKBg/6CAAKCAQKCAgKCA/6CgAKCgQKCggKCg/6DAAKDAQKDAgKDA/6D/AKD/QKD/gKD//8AAAMAAQMAAgMAA/8AgAMAgQMAggMAg/8BAAMBAQMBAgMBA/8BgAMBgQMBggMBg/8CAAMCAQMCAgMCA/8CgAMCgQMCggMCg/8DAAMDAQMDAgMDA/8D/AMD/QMD/gMD///8AAP8AQP8AgP8A//8gAP8gQP8ggP8g//9AAP9AQP9AgP9A//9gAP9gQP9ggP9g//+AAP+AQP+AgP+A//+gAP+gQP+ggP+g///AAP/AQP/AgP/A////AP//QP//gP///ywAAAAAsgF8AAAI/gD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsSOAjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz4vyns6fPn0CDCh1KtKjRozB5Il3KtKnTp1CjSt05tarVq1izat0qUinXr2DDih1LNqRXAB3TqlX7ca3bt3Djyp1LV6JZs3Xz0m2rt6/fv4ADv70LUrBhjHwPK17MuHFdwokdSz4YebLly5gzD4SMVrPlyp5Dix69tzBe0otBo17NurVd04VdC1Ytu7Zt2Zxv/6Wtu7dvzLl/P+4svLjxxsGPw+WtvLnz5bCZP78ofbr16xWTY9dYfbv37wi1/oPPTny8+fMFxaOH2H29++bq3zNsL7++7/j2w5fPz984/o07fbZffwT29h93GQ3IGH0FNhjagQlGKKCDFNoGIWISTsZghRw6diF1GUq2YYckHvahRQraddmIJba4W3QpAhiihzGuVaOLOFIG43IzInejRzzlKOR8Ow7W44I/yihQkiIO6dmJ2R2ZGpMYEkRlavxc6eSLbZ1mo5SKsaiiQVrOxs+ZZRqWpoZ5QUnRmumtCOdDMc7Z5pl42qkXWnqaGGRpXcbmVp99DlZoQjceOhiejCrK45KuEeeoQm5ORKicRs63IqOcTspWnKvt56mOgYpJJ5gmjvpnQ6oixumr/q0eGeuglMlV6ZggTvgpex6+6uusUYY3Wp1x3RrRpboCiauJvjYL7LK1PrlQrMbyWqWGk8L5LKvNdrutQ0l+iyKrhpZKLapqOmqnuOF16y67iJ66orxsFUnrtSIqiuxu7vYLL5nHfhZwveY+miu2SqK7aL/+Bpbmv5pCy529X+JLI4IcwQsAwxxDrC1ywWZM8a4H56uwpXdy3HFf66ZWcoIjp7WvyS9nvJfKOIs7M2A7UxezsjUjGbTNxeJs9LaHQrxZwoj9TPTQYc4JLLVGVz010CxjjaLTZ5U1lI4hFzto1WSfK7NfnhLK9cZkw9q22283GnejYKP8GFtz53wv/sl77U1ewe3mnaXggwvOdt4KsqixR4SrnLbBtkJu6dqEHz635XFj/nbiZXoMYON6P52p2KS/SbnhladueN30op0g6EczLTnfs9N5OuKq4746mVqa2rSrsMducem0E8/e7Zfnnvzu6fWeZdbrBl821KNrPdfDyGeuvPbMW+n883evarr0OUu929muH5v95tuz3/1m34MfOaQoFk7+u/JL3KboWR8POGXta5vmBFg51oGLbsSLnv3uBzdteUxfD1Tf/8gUwLJV0GoG5BYC/SY+S+WJgXDLX8AWpy8RXs+E01ofAVHHQsRlcD6w4mAH7SI3EKJpg2PSGf24g6aU9U6F/hZs4fJcyLtj/ap4MzRiDRmIuY/tsHQl7OEJpWi7CabngkfDYuiap8QY8m9p9esUE71otyf6LYpUXFgaWQVEq2nRcQUsInu8JTsrUedX5BugE8HIQTSuUWadkiCfBEVBIXJPd0Tk4hzpODw7hjGEjRsgCsEFsIo5koeBtBEZwdXGLBrSfYn0XhedRb0kLhKPkWRkGS/5RVO+6YiA3CQbrWilN3bMlgzj3ChJ+aaIZQd/n8ThwCpZRzPeEZafQyYnabkZXPrLme964bRWpj9ivhKYh+TlKkEFJj9m8nXaXOYgeSNJNwYziKGE3y5VSUlyPdJb2QznMKNFPW9+852y/iQSM5cETXieE4NypNMWfUlQD+ZyhQ3rJaVKac97GpSdsxxnnfrpLIoqU52npOa0rPXLW3oyl2ETlkIXmsxoXtOkVZQooiwKyXhuTpqUAmi8OHrSg8LRcSEV6TxnismErvOi+lRp4BA5xKJmDqYrlak129nRmz5zoDvlKVM3WlKfHlCj4jxLUonqUoReDqlDFR43afpQp1ZUrNWkZ0FJ2lOQXhWrEdVqWLuKTqO+NKBvVaorqdrUnPkTrVFlq2DXik+rbhWuQZUrqbz2NbxqUIB8TGte/dpSnI50qmp1Z1sRe0XAJtZLSJRsumj40j329aM3hOxlMctK1hbWrQDU/utnCRnawE6prLJt3Wk/Wk7YilanrXXtbjnbW4jO1neaHVeyfsrZ5B6TgMVF6TZ1u6aGwjW68jyu2Uo5G22p1rbDNWtuycpR0wLvu9jNbgr3WczfOkxq0wPvaz0aX+7Gy7zghGx6gard2rmXZwqEKmE3K17Lngy48p0vfevrP6HKcLpCe25zERxL1BoYY/9dKuO86tmsghZ99gVwfn3LVzUW2LAYJq9z8VZXAadUsZZULsJGLN3BmtimF7begG2sSXN2+MUf1nGG0Za0CQd3OZQ18oEju+Ib4zjHr2FvinMaYQLnU8O2OjF/QdxkqU5Ry+oVJIxrq+LbZgzFY03Z/lPRHOMSu/lmYL5ylB3c5tX6qMJbNqaa/2pc/2I5s3vGJpvnPGYuU9nMG86z0pop6DxXz8sU3tOC+2w6KS+Zx4hOtEOZzLNGb7pvb/6zpNdM6UrTmcy6vXOPP73oQqLS0fODdJodRmpYEzrIrRwyy1qluQG1OraV/WP/Is1pM/FZzluzdCN1vSeqCfPXc03tp9MH6GKr6djCnJiyQxzqTK86f9A+rLTztCBihxvYYrS1qQst5AR3N8tUPLe4m+ihassb3R9EdtO2LeN+Xwzenbn3YS0ncGP6WjO91ve+T21oO1e5aHwSzeEmPq/WFnyu9C4Xw9td5qgN5+IxLRzI/iNbnpGjm+DF4tqUHe5t4z1ocCbno6RQM3Fyp5zfh3b3extEW+DQL+ZJZduzqpVSmmCK56SJONBjujGkqbxAyN2SjaKeqm8RHT1Ul3rDWaOzpxMo61oPu5hx7SCwc1LsUr/6eczOxqSPBO1Iwrl92L7epWN0SXYn+5O6Yiuv94fulOo5cEq+dL4Afjh31zi7KXR4kdod76LMTGQej9fGw0/u9bG8IjUvs7cjnPKBj7zi9Q51p0P+QYT//G0mPyu1m4fzlxf8cmEPs9WnHjqYlw/tWY960R+9NrzH/cYZP/Tbqz7xs29N8Ecv+7KDftd8Pz7tByWpqfmdP9OHe+CzSz910gPo+vnhvva35PrxiH/8Qyo/eM6P/hyp/zvsb7+LOMPY+tv//vjPf0q6pv/++///AHgV/BeABFiABniAVIGACriADNiAJBEQAAA7\"","export default __webpack_public_path__ + \"static/media/Keyhole.e6bdb94e.png\";","export default __webpack_public_path__ + \"static/media/TFE1.c4a4b62b.png\";","export default __webpack_public_path__ + \"static/media/Hole Punching.d1533949.png\";","export default __webpack_public_path__ + \"static/media/Pattern Folding.b8f956f5.png\";","import React, {useEffect} from 'react';\nimport styled from 'styled-components';\n\nimport {useTestNavigatorContext} from '@bootcamp/web/src/contexts/TestNavigator';\n\nimport {\n PrometricWrapper,\n NextText,\n NextButton,\n} from './shared';\n\nimport keyhole from '../assets/Keyhole.png'\nimport TFE1 from '../assets/TFE1.png'\nimport TFE2 from '../assets/TFE2.png'\nimport angleRanking from '../assets/Angle Ranking.png'\nimport holePunching from '../assets/Hole Punching.png'\nimport patternFolding from '../assets/Pattern Folding.png'\n\nconst Heading = styled.div`\n font-weight: bold;\n font-size: 18px;\n line-height: 21px;\n margin-bottom: 21px;\n`;\nconst Section = styled.div`\n width: 100%;\n margin-bottom: 21px;\n`;\n\nconst Keyholes = () => (\n \n \n Official Keyhole Instructions\n \n
\n This visualization test consists of a number of items similar to the sample below. A three-dimensional object is shown at the left. This is followed by outlines of five apertures or openings.\n
\n
\n In each item the task is exactly the same. First, you are to imagine how the object looks from all directions (rather than from a single direction as shown). Then pick, from the five apertures outlined, the opening through which the object could pass directly if the proper side were inserted first. Finally, use the mouse to select the answer choice corresponding to the answer you have chosen.\n
\n
\n Here are the rules:\n
\n
\n
    \n
  1. Prior to passing through the aperture, the irregular solid object may be turned in any direction. It may be started through the aperture on a side not shown.
  2. \n
  3. Once the object is started through the aperture, it may not be turned or twisted. It must pass completely through the opening. The opening is always the exact shape of the appropriate external outline of the object.
  4. \n
  5. Both objects and apertures are drawn to the same scale. Thus it is possible for an opening to be the correct shape but too small for the object. In all cases, however, differences are large enough to judge by eye.
  6. \n
  7. There are no irregularities in any hidden portion of the object. However, if the figure has symmetric indentations, the hidden portion is symmetric with the part shown.
  8. \n
  9. For each object there is only one correct aperture.
  10. \n
\n
\n
\n \n
\n
\n The correct answer is [C] since the object would pass through this aperture if the side at the left were introduced first.\n
\n \n
\n);\n\nconst TFE = () => (\n \n \n Official Top Front End Instructions\n \n
\n The pictures that follow are top, front, and end views of various solid objects. The views are without perspective. That is, the points in the viewed surface are viewed along parallel lines of vision. The projection looking DOWN on it is shown in the upper left-hand corner (TOP VIEW). The projection looking at the object from the FRONT is shown in the lower left-hand corner (FRONT VIEW). The projection looking at the object from the END is shown in the lower right-hand corner (END VIEW). These views are ALWAYS in the same positions and are labeled accordingly.\n
\n
\n \n
\n
\n If there were a hole in the block, the views would look like this:\n
\n
\n \n
\n
\n Note that the lines cannot be seen on the surface in some particular view are DOTTED in that view. In the problems that follow, two views will be shown, with four alternatives to complete the set. You are to select the correct one with your mouse.\n
\n \n
\n);\n\nconst AngleRanking = () => (\n \n \n Official Angle Ranking Instructions\n \n
You are to examine the four INTERIOR angles and rank each in terms of degrees from SMALL to LARGE. Select the choice that has the correct ranking.
\n
Here's an example:
\n
\n
The correct ranking of the angles from small to large is {`2 - 1 - 4 - 3`}; therefore, choice [B] is correct.
\n \n
\n);\n\nconst HolePunching = () => (\n \n \n Official Hole Punching Instructions\n \n
A flat square sheet of paper is folded one or more times. The broken lines indicate the original position of the paper. The solid lines indicate the position of the folded paper. The paper is never turned or twisted. The folded paper always remains within the edges of the original square. There may be from one to four folds in each item. After the last fold a hole is punched in the paper. Your task is to unfold the paper mentally and determine the position of the holes on the original square. Choose the pattern of black circles that indicates the position of the holes on the original square sheet of paper. There is only one correct pattern for each item.
\n
Here's an example:
\n
\n
Figure B shows the result of the first fold. Figure C shows the position of the punched hole on the folded paper. When the paper is unfolded the pattern of the holes on the original square is shown by the dark circles in Figure D. The answer has two holes since the paper was two thicknesses when punched.
\n \n
\n)\nconst CubeCounting = () => (\n \n \n Official Cube Counting Instructions\n \n
Each figure has been made by cementing together cubes of the same size. After being cemented each figure was painted on all sides EXCEPT FOR THE BOTTOM ON WHICH IT IS RESTING. The only hidden cubes are those required to support other cubes.
\n
For the following questions you are to examine each figure closely to determine how many cubes have:
\n
\n
    \n
  • Only one of their sides painted
  • \n
  • Only two of their sides painted
  • \n
  • Only three of their sides painted
  • \n
  • Only four of their sides painted
  • \n
  • All five of their sides painted.
  • \n
\n
\n
\n Note: There are no problems for which zero (0) is the correct answer.\n
\n \n
\n)\n\nconst PatternFolding = () => (\n \n \n Official Pattern Folding Instructions\n \n
\n A flat pattern will be presented. This pattern is to be folded into a three dimensional figure. The correct figure is one of the four given at the right of the pattern. There is only one correct figure in each set. The outside of the pattern is what is seen at the left. The outside of the pattern must remain on the outside of the three dimensional figure.\n
\n
\n Here's an example:\n
\n
\n
\n One of the above figures (A, B, C, or D) can be formed from the flat pattern given at the left. The only figure that corresponds to the pattern is [D]. If the shaded surfaces are looked at as the sides of the box, then all four sides must be shaded, while the top and bottom are white.\n
\n \n
\n)\n\nconst tutorialSet = [\n Keyholes,\n TFE,\n AngleRanking,\n HolePunching,\n CubeCounting,\n PatternFolding\n]\n\nconst PATTutorial = ({instructionIndex, setDismissedPATTutorial}) => {\n\n const {\n methods: {\n setLeftButtons,\n setCenterButtons,\n setRightButtons,\n }\n } = useTestNavigatorContext();\n\n useEffect(() => {\n setLeftButtons([{component:
}]);\n setCenterButtons([{\n component: setDismissedPATTutorial(dismissedPATTutorial => [...dismissedPATTutorial, instructionIndex])} />\n }]);\n setRightButtons([{component:
}]);\n return () => {\n // When this component dismounts...\n setCenterButtons([]);\n }\n\n }, [])\n\n return tutorialSet[instructionIndex]();\n}\n\nexport default PATTutorial;\n","export default \"data:image/png;base64,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8yUHr33ta0MRHnzwwbDvvvsGelcM2i9+8Ystx0K8WGwiJzdmajv8dVJhS6/eUtT3bJ/a8TNTC8WLv0e/+c1v8ojZsmVL/fj06dPD8ccfX2jQ3nnnnWHDhg1h5syZgbGJz3sDAwOhW1qd3IxnLFh+MEVfJxWitrcYx+Njn1roXfF36Fe/+lUeMc1B+6EPfSiflXvNa14TirBjx46wevXqcPnll4ennnoqMDbxee+WW24JBx10UOikOBZuvPHGcN55501qLLSLWm+TCwB0RIyPGC/NM7T77LNPHjFxVq6ooL3nnnvCN7/5TUE7AfFxuuCCC8Ktt94aOmV4LHzhC1/o2FiwphZKzNpoYKrUZs7CL3/5y3xWLi49GBYj5sQTT8z3JJ01a1Yowr333pvHbIxaQTsx1157bT77uX79+jBjxoxQpG6NBVHbRtViQPyUU1X2HzZ+obfEsPzFL34Rzj333LB169b68Re96EX1iHnlK18ZirBz586wdu3a8PWvfz088cQTLf8fzxHPijOm//jHPxpmS6P4Ev4DDzwQHn744UKjNo6F4RnakWNhOGjjtl1FjQVraimMNbXFMY6njp89TE6MmJ/97Gf5koPf/e539eMxaE866aQ8aF/xileEItx333150MatwB555JGW/8//r7cMPOPvf/97+OpXvxq+/e1v138u8Wd0+OGH50sA3vKWt4SixLEQLwaLM7RFntzY0gsqyO4HQDcNB+0555wTtm3bVj8et9f6yEc+kl8I9PKXvzwUYffu3WHdunX5fqYjg/bggw9uuG2e1e2g7dbJzTAztW3Yp3b899dMbXHsfjA+dj+Aqffkk0/mm+jHiGkO2pNPPjm/EGm//fYLRYgvk8flVfGdqB566KH68UWLFuXh/P73v79+zEztM7oZtKONhSJObtrN1Mb/UCrxvo78mOqvk4oi7m+v/sxSfCyN4/Ep8n5W7XcfivD4449n119/fbZw4cKG35+XvvSl2emnn57t2rUrK0otYrM1a9ZkM2bMaLitAw88MNu0aVOWx82I47Xgyarub3/7W3bqqadmtRBs+LkcccQR2U033ZQVqd1YqAVtYWMh3p8Wj/HTorbDXycVora3GMfjI2ph6sSIufbaa1sG7RlnnJHdd999WVEefvjh7Fvf+lZWm+VruK358+dnGzZsyP8fUduo20HbbizEoC1i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\"","export default \"data:image/png;base64,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\"","import React, {useEffect} from 'react';\nimport styled from 'styled-components';\n\nimport {useTestNavigatorContext} from '@bootcamp/web/src/contexts/TestNavigator';\n\nimport {\n PrometricWrapper,\n NextText,\n NextButton,\n} from './shared';\n\n\nconst Heading = styled.div`\n font-weight: bold;\n font-size: 18px;\n line-height: 21px;\n margin-bottom: 21px;\n`;\nconst Section = styled.div`\n width: 100%;\n margin-bottom: 21px;\n`;\n\nconst Biology = () => (\n \n \n Survey of Natural Sciences - Biology\n \n
Time limit: 90 minutes
\n
This examination is comprised of 100 items:
\n
Biology (1-40)
\n \n
\n);\nconst GeneralChemistry = () => (\n \n \n Survey of Natural Sciences - General Chemistry\n \n
This examination is comprised of 100 items:
\n
General Chemistry (41-70)
\n \n
\n);\nconst OrganicChemistry = () => (\n \n \n Survey of Natural Sciences - Organic Chemistry\n \n
This examination is comprised of 100 items:
\n
Organic Chemistry (71-100)
\n \n
\n);\n\nconst tutorialSet = [\n Biology,\n GeneralChemistry,\n OrganicChemistry\n]\n\nconst SNSTutorial = ({instructionIndex, setDismissedSNSTutorial}) => {\n\n const {\n methods: {\n setLeftButtons,\n setCenterButtons,\n setRightButtons,\n }\n } = useTestNavigatorContext();\n\n useEffect(() => {\n setLeftButtons([{component:
}]);\n setCenterButtons([{\n component: setDismissedSNSTutorial(dismissedSNSTutorial => [...dismissedSNSTutorial, instructionIndex])} />\n }]);\n setRightButtons([{component:
}]);\n return () => {\n // When this component dismounts...\n setCenterButtons([]);\n }\n\n }, [])\n\n return tutorialSet[instructionIndex]();\n}\n\nexport default SNSTutorial;\n","import React, {useEffect} from 'react';\nimport styled from 'styled-components';\nimport {useTestNavigatorContext} from '@bootcamp/web/src/contexts/TestNavigator';\n\nimport {\n PrometricWrapper,\n NextText,\n NextButton,\n} from './shared';\n\n\nconst Heading = styled.div`\n font-weight: bold;\n font-size: 18px;\n line-height: 21px;\n margin-bottom: 21px;\n`;\nconst Section = styled.div`\n width: 100%;\n margin-bottom: 21px;\n`;\nconst QRTutorial = ({setDismissedQRTutorial}) => {\n\n const {\n methods: {\n setLeftButtons,\n setCenterButtons,\n setRightButtons\n }\n } = useTestNavigatorContext();\n\n useEffect(() => {\n setLeftButtons([{component:
}]);\n setCenterButtons([{\n component: setDismissedQRTutorial(true)} />\n }]);\n setRightButtons([{component:
}]);\n return () => {\n // When this component dismounts...\n setCenterButtons([]);\n }\n\n }, [])\n\n return (\n \n \n Quantitative Reasoning\n \n
Time limit: 45 minutes
\n
This examination is comprised of 40 questions.
\n \n
\n );\n}\n\nexport default QRTutorial;\n","import React, {useEffect} from 'react';\nimport styled from 'styled-components';\nimport {useTestNavigatorContext} from '@bootcamp/web/src/contexts/TestNavigator';\n\nimport {\n PrometricWrapper,\n NextText,\n NextButton,\n} from './shared';\n\n\nconst Heading = styled.div`\n font-weight: bold;\n font-size: 18px;\n line-height: 21px;\n margin-bottom: 21px;\n`;\nconst Section = styled.div`\n width: 100%;\n margin-bottom: 21px;\n`;\nconst PhysicsTutorial = ({setDismissedPhysicsTutorial}) => {\n\n const {\n methods: {\n setLeftButtons,\n setCenterButtons,\n setRightButtons\n }\n } = useTestNavigatorContext();\n\n useEffect(() => {\n setLeftButtons([{component:
}]);\n setCenterButtons([{\n component: setDismissedPhysicsTutorial(true)} />\n }]);\n setRightButtons([{component:
}]);\n return () => {\n // When this component dismounts...\n setCenterButtons([]);\n }\n\n }, [])\n\n return (\n \n \n Physics\n \n
Time limit: 50 minutes
\n
This examination is comprised of 40 questions.
\n \n
\n );\n}\n\nexport default PhysicsTutorial;\n","import React, {useEffect} from 'react';\nimport styled from 'styled-components';\nimport Highlightable from '@bootcamp/web/src/components/Highlightable';\n\nimport {useTestNavigatorContext} from '@bootcamp/web/src/contexts/TestNavigator';\n\nimport {\n PrometricWrapper,\n NextText,\n NextButton,\n} from './shared';\n\n\nconst Heading = styled.div`\n font-weight: bold;\n font-size: 18px;\n line-height: 21px;\n margin-bottom: 21px;\n`;\n\nconst Passage = styled.div`\n max-height: 500px;\n min-height: 500px;\n height: 100%;\n overflow-y: scroll;\n padding: 10px;\n font-family: Arial;\n text-align: justify;\n line-height: 25px;\n margin-top: 10px;\n border: 1px solid #D5D8D9;\n margin-top: 2em;\n p {\n margin: .5em 1em 1em 1em;\n line-height: 1.4em;\n img {\n margin: auto;\n display: block;\n }\n }\n margin-bottom: 2em;\n`;\n\nconst RCPassage = ({setDismissedRCPassage}) => {\n\n const {\n variables: {\n blockIndex,\n testBlockConnections\n },\n methods: {\n setLeftButtons,\n setCenterButtons,\n setRightButtons,\n updateQuizProgress\n }\n } = useTestNavigatorContext();\n\n useEffect(() => {\n setLeftButtons([{component:
}]);\n setCenterButtons([{\n component: setDismissedRCPassage(dismissedRCPassage => [...dismissedRCPassage, blockIndex])} />\n }]);\n setRightButtons([{component:
}]);\n return () => {\n // When this component dismounts...\n setCenterButtons([]);\n }\n\n }, [])\n const testBlock = testBlockConnections[blockIndex].testBlock;\n const passageBlock = testBlock.type === 'passage';\n const passage = passageBlock && testBlock.components.find(component => component.renderType === 'passage').contents;\n const passageTitle = passageBlock && testBlock.components.find(component => component.renderType === 'passageTitle').contents;\n const passageHtml = passageBlock && `

${passageTitle}

` + passage.replace(/


<\\/p>/g, '');\n\n return (\n \n \n Reading Comprehension - Passage\n \n {passage &&\n \n \n \n }\n \n \n );\n}\n\nexport default RCPassage;\n","import React from 'react';\nimport {PrometricWrapper, CenterSection, NextText} from './shared';\nimport SectionBreakImage from '../assets/SectionBreak.png';\n\nconst SectionBreak = () => {\n return (\n \n \n

Section Break

\n

\n STOP! Please read this message. This is an optional break. The amount of time you have for this break is shown in the \"Time Remaining\" box in the upper right corner of the screen. Clicking the NEXT button will terminate the break immediately and start the next section of the test. Click NEXT to continue before the break period expires.\n

\n

\n After the break time expires, testing will resume automatically.\n

\n \n \n \n );\n};\n\nexport default SectionBreak;\n","import Offline from 'offline-js'; // eslint-disable-line\nimport 'offline-js/themes/offline-theme-default.css';\nimport 'offline-js/themes/offline-language-english.css';\n\nconst useOfflineIndicator = () => {\n window.Offline.options = {reconnect: {initialDelay: 10}};\n}\n\nexport default useOfflineIndicator;\n","// TALKING POINT this is hardcoded for now. Do we want to introduce a 'section' container to the data model? Being able to organize blocks into sections could be a nice feature for content creators.\nexport function getSectionTitle(blockIndex) {\n return blockIndex === 8\n ? 'Section Break'\n : blockIndex < 5\n ? 'Survey of Natural Sciences'\n : blockIndex < 8\n ? 'Perceptual Ability Test'\n : blockIndex < 14\n ? 'Reading Comprehension'\n : blockIndex < 17\n ? 'Quantitative Reasoning'\n : '';\n}\n\nexport function getOATSectionTitle(blockIndex) {\n return blockIndex === 10\n ? 'Section Break'\n : blockIndex < 5\n ? 'Survey of Natural Sciences'\n : blockIndex < 10\n ? 'Reading Comprehension'\n : blockIndex < 14\n ? 'Physics'\n : blockIndex < 17\n ? 'Quantitative Reasoning'\n : '';\n}\n\nexport function getSectionTimeLimit(sectionTitle, accommodation) {\n const accomodationMultiplier = 1.5;\n const timeLimit = {\n 'Survey of Natural Sciences': 90,\n 'Perceptual Ability Test': 60,\n 'Reading Comprehension': 60,\n 'Quantitative Reasoning': 45,\n 'Physics': 50\n }[sectionTitle];\n\n return accommodation ? timeLimit * accomodationMultiplier : timeLimit;\n}\n\nexport function handleCloseClick (match) {\n const {params: {classroom, contentType, bootcamp}} = match;\n const redirect = window.confirm('Would you like to end the test and return to the Classroom page?');\n if (redirect && window.location.pathname.startsWith(`/${bootcamp}/full-length/`)) {\n return window.location.pathname = `/${bootcamp}/full-length`\n };\n if (redirect) window.location.pathname = `/${bootcamp}/${classroom}/${contentType}`;\n}\n\nexport const barHeight = 70;\n","import React, {useState, useEffect} from 'react';\nimport styled, {css} from 'styled-components';\nimport {useHistory} from 'react-router-dom';\n\nimport {useTestNavigatorContext, TestNavigatorProvider} from '@bootcamp/web/src/contexts/TestNavigator';\nimport {useReloadBlockerContext} from '@bootcamp/web/src/contexts/ReloadBlocker';\nimport {getSectionBounds, getSectionWindow} from '@bootcamp/web/src/contexts/TestNavigator/transitions';\nimport debounce from 'lodash.debounce';\n\n// DISPLAY\n// extra\nimport {Column} from '@bootcamp/web/src/components/Grid';\nimport {FullPageSpinner, FixedBar} from '@bootcamp/web/src/components/Branding';\nimport {IconButton} from '@bootcamp/web/src/components/Branding/Buttons';\nimport {CloseOutline as X} from '@styled-icons/evaicons-outline/CloseOutline';\nimport Exhibit from '@bootcamp/web/src/components/Exhibit';\nimport QuestionSet from '@bootcamp/web/src/components/TestBlocks/QuestionSet';\nimport {Tooltip} from '@bootcamp/web/src/components/Tooltip';\n\nimport {SubmitAnatomyCase as SubmitModal} from '@bootcamp/web/src/components/Modal';\n\n// intra\nimport StartBlock from './components/StartBlock';\nimport EndBlock from './components/EndBlock';\nimport FullLengthTutorial from './components/FullLengthTutorial';\nimport PATTutorial from './components/PATTutorial';\nimport SNSTutorial from './components/SNSTutorial';\nimport QRTutorial from './components/QRTutorial';\nimport PhysicsTutorial from './components/PhysicsTutorial';\nimport RCPassage from './components/RCPassage';\nimport SectionBreak from './components/SectionBreak';\nimport QuestionView from './components/QuestionView';\n\nimport {SectionTimeUp, TimeUp, Submit, ProceedToSection, SubmitAnatomyCase, TestSettings} from '@bootcamp/web/src/components/Modal';\nimport INBDEQuestion from '@bootcamp/web/src/components/QBank/Question';\nimport {TestTimer, TimerProvider, useTimerContext} from '@bootcamp/web/src/contexts/TestTimer';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\n\nimport useOfflineIndicator from '@bootcamp/web/src/components/OfflineIndicator';\nimport {changeIntercomDisplay, delay, saveFile, splitScreenAllowed} from '@bootcamp/shared/src/util';\nimport {Settings} from '@styled-icons/fluentui-system-filled/Settings';\nimport {trackQuizProgressPerformance} from '@bootcamp/shared/src/requests';\nimport AdminButtons from '@bootcamp/web/src/components/QuestionView/components/AdminButtons';\n\nimport {\n getSectionTitle,\n getOATSectionTitle,\n getSectionTimeLimit,\n handleCloseClick,\n barHeight,\n} from './helpers';\nimport {updateQuestionProgressData} from '@bootcamp/web/src/helpers';\nimport {\n NextButton,\n ReviewAllButton,\n ReviewMarkedButton,\n ReviewIncompleteButton,\n EndButton,\n SuspendButton\n} from './components/shared';\n\nimport {updateCustomTestConfig} from '@bootcamp/shared/src/util';\nimport moment from 'moment';\nimport Sidebar from './components/Sidebar';\nimport theme from '@bootcamp/shared/src/styles/theme';\n\n// STYLE\nconst ToggleSettingsButton = styled(IconButton)`\n height: 42px;\n width: 42px;\n padding: 8px;\n margin-left: 16px;\n background: rgba(255, 255, 255, 0.1);\n\n z-index: 4;\n\n svg {\n fill: white;\n }\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n width: 36px;\n height: 36px;\n }\n\n box-shadow: none;\n`;\n\nconst ToggleSettingsButtonIcon = styled(Settings)`\n fill: white;\n width: 20px;\n height: 20px;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n width: 16px;\n height: 16px;\n }\n`;\n\nconst Container = styled(Column)`\n background: white;\n`;\n\nconst ContentArea = styled(Column)`\n overflow-y: ${({splitScreenSolutions}) => splitScreenSolutions ? 'hidden' : 'auto'};\n margin-top: ${({size, splitScreenSolutions}) => splitScreenSolutions ? 0 : barHeight*(size || 2)}px;\n`;\n\nconst CloseButton = styled(IconButton)`\n height: 42px;\n width: 42px;\n padding: 8px;\n margin-right: 16px;\n background: rgba(255, 255, 255, 0.1);\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n width: 36px;\n height: 36px;\n }\n`;\n\nconst CloseIcon = styled(X).attrs(props => ({color: 'white'}))`\n height: 20px;\n width: 20px;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n width: 16px;\n height: 16px;\n }\n`;\n\nconst TopBar = styled(FixedBar).attrs(props => ({position: 'top', size: props.size || 2, barHeight}))`\n font-family: Arial;\n`;\n\nconst ControlsContainer = styled.div`\n min-height: ${barHeight}px;\n background-color: #0F6292;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n transform: translate3d(0,0,0);\n`;\nconst ControlsPadding = styled.div`\n width: 100%;\n max-width: 1920px;\n padding: 0px 32px;\n height: 100%;\n display: flex;\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 0 12px;\n overflow: auto;\n }\n`;\nconst ControlSection = styled.div`\n color: white;\n width: calc(100%/3);\n height: 100%;\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n justify-content: ${({justify}) => justify};\n visibility: ${({invisible}) => invisible ? 'hidden' : 'visible'};\n ${({theme}) => theme.mediaQueries.tablet} {\n width: 100%;\n }\n`;\nconst ControlWrapper = styled.div`\n display: flex;\n align-items: center;\n`;\nconst Controls = () => {\n const {\n variables: {\n leftButtons,\n centerButtons,\n rightButtons,\n loading,\n quizProgress,\n blockIndex,\n }\n } = useTestNavigatorContext();\n\n const {questions: blockQuestionProgress} = {questions: [], ...quizProgress[blockIndex]};\n const questionIndex = blockQuestionProgress.findIndex(({current}) => current);\n const currentQuestionProgress = blockQuestionProgress?.[questionIndex] || {};\n\n const didCheck = currentQuestionProgress?.didCheck;\n\n return (\n \n \n {!loading && didCheck &&\n \n }\n button).map(button => )} />\n button).map(button => )} />\n button).map(button => )} />\n \n \n );\n}\n\nconst INBDEQuestionWrapper = styled.div`\n padding: 70px 0px 24px 0px;\n position: relative;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 24px;\n }\n\n ${({splitScreenSolutions}) => splitScreenSolutions && css`\n padding-bottom: 0;\n height: 100%;\n width: 100%;\n `}\n`;\n\nconst WrappedINBDEQuestion = props => {\n const correctAnswerIndex = props?.answers\n ?.map(([answerText, answerCorrect]) => answerCorrect)\n .indexOf(true);\n return (\n \n \n \n \n );\n}\n\nconst HideMobile = styled.div`\n ${({inline}) => inline && `display: inline;`};\n ${({theme}) => theme.mediaQueries.tablet} {\n display: none;\n }\n`;\n\nconst PrometricBank = () => {\n const [showingExhibit, setShowingExhibit] = useState(false);\n const [exhibitType, setExhibitType] = useState();\n const {DEFAULT_USER_ID, searchUserInteractions, bootcamp} = useUserDataContext();\n\n const timeAccommodation = searchUserInteractions('timeAccommodation') === true;\n const hideTimer = searchUserInteractions('hideTimer') === true;\n\n const {toggleTimer, updateTimeLimit, timerActive, timeUp, timeLeft, questionStartTime} = useTimerContext();\n const history = useHistory();\n\n const {toggleReloadBlocker} = useReloadBlockerContext();\n const [topLeftText, setTopLeftText] = useState();\n const [topRightText, setTopRightText] = useState()\n const [dismissedPATTutorial, setDismissedPATTutorial] = useState([]);\n const [dismissedSNSTutorial, setDismissedSNSTutorial] = useState([]);\n const [dismissedRCPassage, setDismissedRCPassage] = useState([]);\n const [dismissedQRTutorial, setDismissedQRTutorial] = useState(false);\n const [dismissedPhysicsTutorial, setDismissedPhysicsTutorial] = useState(false);\n useOfflineIndicator();\n\n const {\n methods: {\n setLeftButtons,\n setCenterButtons,\n setRightButtons,\n setNavigationFilter,\n setCurrentIndex,\n saveProgress,\n transitionBlock,\n autoTagOnSubmit,\n handleGoBack,\n instantiateTestProgress,\n setLoading,\n updateQuizProgress\n },\n variables: {\n test,\n testBlockConnections,\n startBlockIndex,\n endBlockIndex,\n blockIndex,\n quizProgress,\n loading,\n testProgressId,\n template,\n customTestConfig,\n type,\n tutorMode\n }\n } = useTestNavigatorContext();\n const prometricDelay = searchUserInteractions('prometricDelay') === true && template !== 'testReview';\n\n const isFullLengthTest = template === 'fullLengthTest';\n\n const IS_OAT_TEST = test && test.config.title?.includes('OAT');\n const sectionTitle = !isFullLengthTest ? '' : IS_OAT_TEST ? getOATSectionTitle(blockIndex) : getSectionTitle(blockIndex);\n const sectionBounds = getSectionBounds(testBlockConnections, blockIndex);\n const sectionWindow = getSectionWindow(testBlockConnections, blockIndex);\n const currentBlockType = testBlockConnections[blockIndex] && testBlockConnections[blockIndex].testBlock.type;\n\n const quizProgressSection = isFullLengthTest\n ? quizProgress.slice(...sectionWindow)\n : quizProgress\n const quizProgressSectionFlat = quizProgressSection.map(block => block.questions || []).flat()\n\n const questionCount = quizProgressSectionFlat.length\n const questionCountThusFar = quizProgressSectionFlat.findIndex(({current}) => current) + 1;\n const currentQuestion = quizProgressSectionFlat.find(({current}) => current);\n\n const splitScreenSolutions = searchUserInteractions('splitScreenSolutions') === true\n && splitScreenAllowed(template, type, tutorMode, customTestConfig)\n && currentQuestion?.didCheck;\n\n const {modalDispatch} = useModalContext();\n\n const testBlockConnection = testBlockConnections[blockIndex];\n const {testBlock} = testBlockConnection || {testBlock: {}};\n const sidebarState = useState(false);\n const visibleFilterState = useState();\n const isReadinessExam = type === 'readinessExam';\n\n // HOOKS:\n const updateSidebarState = debounce(event => {\n const setSidebarState = sidebarState[1];\n // setSidebarState(!(window.innerWidth < 768));\n }, 150);\n\n useEffect(() => {\n window.addEventListener('resize', updateSidebarState);\n return () => window.removeEventListener('resize', updateSidebarState);\n }, []);\n\n useEffect(() => {\n if (isReadinessExam && testProgressId && blockIndex === 0) {\n setLoading(false);\n transitionBlock('next');\n toggleTimer();\n }\n }, [testProgressId]);\n\n useEffect(() => {\n // updating time limit for section breaks\n if (sectionTitle === 'Section Break') {\n const sectionBreakTime = timeAccommodation ? 45 : 30;\n updateTimeLimit(sectionBreakTime);\n toggleTimer();\n }\n // stop timer on section start blocks\n if (testBlock.type === 'sectionStart') {\n const timeLimit = getSectionTimeLimit(sectionTitle, timeAccommodation);\n timerActive && toggleTimer();\n updateTimeLimit(timeLimit);\n toggleTimer();\n return transitionBlock('next');\n }\n }, [blockIndex]);\n\n const exitCustomTest = async () => {\n try {\n // update custom test config to indicate suspension\n if ((customTestConfig?.config && !customTestConfig.submitted) || (isReadinessExam && template === 'tbcSavedBank')) {\n const {questions: questionProgresses} = quizProgress[blockIndex] || {questions: []};\n const questionIndex = questionProgresses?.findIndex(({current}) => current);\n\n if (!customTestConfig?.config?.tutorMode) {\n await trackQuizProgressPerformance(DEFAULT_USER_ID, quizProgress, `${DEFAULT_USER_ID}#${bootcamp}_Performance`);\n }\n if (questionProgresses?.[questionIndex] && !questionProgresses?.[questionIndex]?.didCheck) {\n await updateQuestionProgressData(updateQuizProgress, questionStartTime, questionProgresses, questionIndex);\n }\n\n await autoTagOnSubmit();\n }\n await updateCustomTestConfig(customTestConfig, {\n suspended: false,\n timeLeft: null,\n submitted: true,\n });\n } catch (error) {\n console.log('error marking test as submitted', error);\n }\n\n toggleReloadBlocker(false);\n if (isReadinessExam) {\n return setTimeout(() => history.replace(`/inbde/simulation-exam/review?id=${test.id}&testRoute=${window.location.pathname.slice(1)}`), 100);\n }\n setTimeout(() => history.push(`/inbde/previous-tests/review?key=${encodeURIComponent(customTestConfig?.config?.testStorageKey)}`), 100);\n }\n\n useEffect(() => {\n if (!timeUp) return;\n if (template === 'customTest' || isReadinessExam) {\n return modalDispatch({\n type: 'open',\n modalContainerStyle: theme => `\n background: transparent;\n `,\n component: ({close}) => {\n return (\n \n )\n },\n enableClickClose: false,\n })\n }\n const isFinalSection = !isFullLengthTest || sectionTitle === 'Quantitative Reasoning';\n const modalComponent = isFinalSection ? TimeUp : SectionTimeUp;\n setNavigationFilter({});\n const componentProps = blockIndex === 0\n ? {onConfirm: () => {\n transitionBlock('next');\n const timeLimit = timeAccommodation ? 135 : 90;\n updateTimeLimit(timeLimit);\n toggleTimer();\n }}\n : !isFinalSection\n ? {onConfirm: () => transitionBlock('jumpToNextSection')}\n : {onConfirm: async () => {\n toggleReloadBlocker(false);\n const progressId = await saveProgress();\n await autoTagOnSubmit();\n const testRoute = window.location.pathname;\n window.location.href = `${testRoute}/review?id=${test.id}&testProgressId=${progressId}&submitting=true&testRoute=${testRoute}`;\n },\n onError: async (error) => {\n const currentDate = new Date().toISOString();\n const submissionJSON = {\n currentDate,\n error,\n quizProgress,\n testProgressId,\n }\n saveFile(JSON.stringify(submissionJSON, null, 2), `${bootcamp} Bootcamp Manual Test Submission File - ${currentDate}.json`);\n }};\n\n modalDispatch({\n type: 'open',\n component: modalComponent,\n componentProps: {\n prometricStyling: true,\n testId: test.id,\n ...componentProps,\n }\n });\n }, [timeUp]);\n\n const handleSuspendClick = async () => {\n const { headerText, bodyText, confirmText, cancelText } = customTestConfig?.submitted || template === 'testReview'\n ? {\n headerText: 'Would you like to end your review?',\n bodyText: 'You’ll be able to resume your review whenever you’re ready. Your tagged questions are automatically saved.',\n confirmText: 'End Review',\n cancelText: 'Return to Review'\n } : {\n headerText: 'Pause Test',\n bodyText: 'Do you want to pause this test? Once paused you can resume this test from the previous tests page.',\n confirmText: 'Pause Test',\n cancelText: 'Return to Test'\n }\n modalDispatch({\n type: 'open',\n modalContainerStyle: theme => `\n background: transparent;\n `,\n component: ({close}) => {\n return (\n {\n // update custom test config to indicate suspension\n const {questions: questionProgresses} = quizProgress[blockIndex] || {questions: []};\n const questionIndex = questionProgresses?.findIndex(({current}) => current);\n\n if (questionProgresses?.[questionIndex] && !questionProgresses?.[questionIndex]?.didCheck) {\n await updateQuestionProgressData(updateQuizProgress, questionStartTime, questionProgresses, questionIndex);\n }\n\n await updateCustomTestConfig(customTestConfig, {\n suspended: true,\n timeLeft: timeLeft?.length <= 5 ? `00:${timeLeft}` : timeLeft,\n questionIndex: 0,\n });\n toggleReloadBlocker(false);\n if (isReadinessExam) {\n return setTimeout(() => history.push(`/inbde/simulation-exam/review?id=${test.id}&testRoute=${window.location.pathname.slice(1)}`), 100);\n }\n setTimeout(() => history.push(`/inbde/previous-tests`), 100);\n }\n }}\n />\n )\n },\n enableClickClose: true,\n })\n }\n const handleSubmitClick = async () => {\n if (template === 'customTest' || isReadinessExam) {\n const {headerText, bodyText, confirmText, cancelText} = customTestConfig?.submitted || template === 'testReview'\n ? {\n headerText: 'Would you like to end your review?',\n bodyText: 'You’ll be able to resume your review whenever you’re ready. Your tagged questions are automatically saved.',\n confirmText: 'End Review',\n cancelText: 'Return to Review'\n } : {\n headerText: 'End Test',\n bodyText: 'Do you want to end this test? Once ended you can review your test results from the previous tests page.',\n confirmText: 'End Test',\n cancelText: 'Return to Test'\n }\n return modalDispatch({\n type: 'open',\n modalContainerStyle: theme => `\n background: transparent;\n `,\n component: ({close}) => {\n return (\n \n )\n },\n enableClickClose: true,\n })\n }\n const isFinalSection = !isFullLengthTest || sectionTitle === 'Quantitative Reasoning';\n const modalComponent = isFinalSection ? Submit : ProceedToSection;\n const componentProps = isFinalSection\n ? {\n prometricStyling: true,\n onConfirm: async () => {\n toggleReloadBlocker(false);\n const progressId = await saveProgress();\n await autoTagOnSubmit();\n const testRoute = window.location.pathname;\n window.location.href = `${testRoute}/review?id=${test.id}&testProgressId=${encodeURIComponent(progressId)}&testRoute=${testRoute}`;\n },\n onError: async (error) => {\n const currentDate = new Date().toISOString();\n const submissionJSON = {\n currentDate,\n error,\n timeUp,\n quizProgress,\n testProgressId,\n userId: DEFAULT_USER_ID,\n testId: test.id,\n }\n saveFile(JSON.stringify(submissionJSON, null, 2), `${bootcamp} Bootcamp Manual Test Submission File - ${currentDate}.json`);\n }\n }\n : {\n prometricStyling: true,\n onConfirm: () => {\n transitionBlock('next')\n }};\n\n modalDispatch({\n type: 'open',\n component: modalComponent,\n componentProps\n });\n };\n\n const blockRenderer = (testBlockConnection) => {\n const {testBlock} = testBlockConnection || {testBlock: {}};\n changeIntercomDisplay('none');\n switch (testBlock.type) {\n case 'startReview':\n return transitionBlock('next');\n case 'startFullLength':\n return (\n \n )\n case 'startBlock':\n return (\n \n );\n case 'passage':\n case 'questionSet':\n const isPATSection = (isFullLengthTest && !IS_OAT_TEST && blockIndex === 6) || (!isFullLengthTest && blockIndex === 1 && test?.config?.title?.includes(\"Perceptual\"))\n if (isPATSection) {\n const instructionIndexes = [0, 15, 30, 45, 60, 75];\n const instructionIndex = instructionIndexes.findIndex(index => index === questionCountThusFar - 1);\n\n if (instructionIndex !== -1 && !dismissedPATTutorial.includes(instructionIndex)) {\n return (\n {\n prometricDelay && await delay(1667);\n setDismissedPATTutorial(value)\n }} />\n )\n }\n }\n\n const isSNSSection = isFullLengthTest && [1,2,3].includes(blockIndex);\n if (isSNSSection) {\n const instructionIndexes = [0, 40, 70];\n const instructionIndex = instructionIndexes.findIndex(index => index === questionCountThusFar - 1);\n\n if (instructionIndex !== -1 && !dismissedSNSTutorial.includes(instructionIndex)) {\n return (\n {\n prometricDelay && await delay(1667);\n setDismissedSNSTutorial(value)\n }} />\n )\n }\n }\n\n const isQRSection = isFullLengthTest && [15].includes(blockIndex);\n if (isQRSection && !dismissedQRTutorial) {\n return (\n {\n prometricDelay && await delay(1667);\n setDismissedQRTutorial(value)\n }} />\n )\n }\n\n const isPhysicsSection = isFullLengthTest && IS_OAT_TEST && [12].includes(blockIndex);\n if (isPhysicsSection && !dismissedPhysicsTutorial) {\n return (\n {\n prometricDelay && await delay(1667);\n setDismissedPhysicsTutorial(value)\n }} />\n )\n }\n\n if (testBlock.type === 'passage' && !dismissedRCPassage.includes(blockIndex)) {\n return (\n {\n prometricDelay && await delay(1667);\n setDismissedRCPassage(value)\n }}\n />\n )\n }\n const QuestionComponent = bootcamp === 'inbde' ? WrappedINBDEQuestion : QuestionView;\n\n return (\n document.querySelector(`.${ContentArea.styledComponentId}`).scroll(0,0)}\n renderQuestion={({testBlock, questionIndex, ...viewProps}) => (\n \n )}\n />\n );\n case 'sectionBreak':\n return \n case 'sectionReview':\n return (\n {\n prometricDelay && await delay(1667);\n setCurrentIndex(blockIndex, questionIndex);\n }}/>\n );\n case 'endBlock':\n case 'endReview':\n return (\n {\n prometricDelay && await delay(1667);\n setCurrentIndex(blockIndex, questionIndex);\n }}\n />\n );\n default:\n return null;\n }\n }\n\n useEffect(() => {\n return () => changeIntercomDisplay('block');\n }, []);\n\n useEffect(() => {\n setShowingExhibit(false);\n const {testBlock} = testBlockConnections[blockIndex] || {testBlock: {type: 'startFullLength'}};\n const questionProgressesSection = isFullLengthTest\n ? quizProgress.slice(...sectionBounds)\n : quizProgress\n\n const questionProgresses = questionProgressesSection\n .filter(block => !!block.questions)\n .map(block => block.questions)\n .flat();\n switch (testBlock.type) {\n case 'sectionReview':\n setNavigationFilter({});\n setLeftButtons([\n {\n component: {\n if (questionProgresses.findIndex(({didMark}) => didMark) === -1) return;\n prometricDelay && await delay(1667);\n setNavigationFilter({key: 'didMark', value: true});\n transitionBlock('reviewMarked');\n }} />,\n },\n {\n component: {\n prometricDelay && await delay(1667);\n transitionBlock('reviewAll')\n }} />,\n },\n {\n component: {\n if (questionProgresses.findIndex(({didSkip}) => didSkip) === -1) return;\n prometricDelay && await delay(1667);\n setNavigationFilter({key: 'didSkip', value: true});\n transitionBlock('reviewSkipped');\n }}/>,\n }\n ]);\n setCenterButtons([]);\n setRightButtons([\n {\n component: \n }\n ]);\n break;\n case 'sectionBreak':\n setLeftButtons([{component:
}]);\n setCenterButtons([{\n component: {\n prometricDelay && await delay(1667);\n transitionBlock('next')\n }} />,\n }]);\n setRightButtons([{component:
}]);\n break;\n case 'startBlock':\n setLeftButtons([]);\n setCenterButtons([!loading ? {\n component: {\n if (isReadinessExam) {\n instantiateTestProgress(test);\n setLoading(true);\n return;\n }\n prometricDelay && await delay(1667);\n transitionBlock('next');\n toggleTimer();\n }} />\n }: null]);\n setRightButtons([]);\n break;\n case 'endBlock':\n case 'endReview':\n setNavigationFilter({});\n setLeftButtons([\n {\n component: {\n if (questionProgresses.findIndex(({didMark}) => didMark) === -1) return;\n prometricDelay && await delay(1667);\n setNavigationFilter({key: 'didMark', value: true});\n transitionBlock('reviewMarked');\n }} />,\n },\n {\n component: {\n prometricDelay && await delay(1667);\n transitionBlock('reviewAll')\n }} />,\n },\n {\n component: {\n if (questionProgresses.findIndex(({didSkip}) => didSkip) === -1) return;\n prometricDelay && await delay(1667);\n setNavigationFilter({key: 'didSkip', value: true});\n transitionBlock('reviewSkipped');\n }}/>,\n }\n ])\n setCenterButtons([]);\n if (template === 'customTest') {\n setRightButtons([\n {component: },\n {component: },\n ])\n } else {\n setRightButtons([{component: }]);\n }\n break;\n default:\n return;\n }\n }, [blockIndex, loading, quizProgress, endBlockIndex]);\n\n const BlockComponent = blockRenderer(testBlockConnections[blockIndex]);\n return (\n {e.preventDefault()}}>\n \n \n \n \n \n {isReadinessExam && template === 'tbcSavedBank' && blockIndex !== 0 ? null : {\n if (template === 'customTest' || isReadinessExam) {\n return blockIndex === 0\n ? handleGoBack()\n : await handleSuspendClick();\n }\n modalDispatch({\n type: 'open',\n component: SubmitAnatomyCase,\n enableClickClose: true,\n componentProps: {\n prometricStyling: true,\n headerText: 'Would you like to exit the test?',\n bodyText: 'Your test is in progress. If you exit now, your test results will NOT be saved.',\n cancelConfig: {\n text: `Return to the Test`,\n onCancel: () => {\n modalDispatch({type: 'close'});\n },\n shouldRedirect: false,\n\n },\n confirmConfig: {\n text: 'Exit Test',\n color: '#0F6292',\n onConfirm: () => {\n toggleReloadBlocker(false);\n },\n shouldRedirect: true,\n redirect: location => location.pathname.split('/').slice(0, -1).join('/')\n }\n },\n })\n }}\n type={'secondary'}\n size={'large'}\n children={}\n />}\n {!([startBlockIndex, endBlockIndex].includes(blockIndex) || (currentBlockType !== 'questionSet' && currentBlockType !== 'passage')) && (topLeftText || <>Question {questionCountThusFar} of {questionCount})}\n \n \n Bootcamp.com | {bootcamp.toUpperCase()}\n \n {isFullLengthTest && blockIndex === 0 ? 'Full Length Test' : isFullLengthTest ? sectionTitle : test?.config?.title}\n {(template === 'customTest' && customTestConfig?.config)? `${customTestConfig?.config?.tutorMode ? 'Tutored' : 'Untutored'}, ${customTestConfig?.config?.timed ? 'Timed' : 'Untimed'}` : null}\n \n \n \n {loading || topRightText ? topRightText : template === 'customTest' && hideTimer ? null : }\n {loading || (['fullLengthTest', 'practiceTest'].includes(template)) ? null :\n }\n onClick={() => {\n if (template === 'customTest' || (isReadinessExam && template === 'testReview')) {\n sidebarState[1](true);\n } else {\n modalDispatch({\n type: 'open',\n component: TestSettings,\n componentProps: {isFullLengthTest},\n enableClickClose: true,\n modalContainerStyle: theme => `\n background: rgba(94, 110, 141, 0.9);\n padding: 10vh 10vw;\n align-items: center;\n ${theme.mediaQueries.laptop} {\n background: rgba(94, 110, 141, 0.9);\n padding: 0;\n }\n `\n })\n }\n }}\n />\n }\n \n \n \n \n \n {(template === 'customTest' || (isReadinessExam && template === 'testReview')) && }\n \n \n {(showingExhibit && exhibitType) && setShowingExhibit(false)} />}\n \n \n )\n}\n\nconst TimedPrometricBank = () => {\n const {variables: {test, customTestConfig, template, loading, type, quizProgress}} = useTestNavigatorContext();\n\n const {searchUserInteractions, bootcamp} = useUserDataContext();\n\n const timeAccommodation = searchUserInteractions('timeAccommodation') === true;\n const timeAccommodation2x = searchUserInteractions('timeAccommodation2x') === true;\n\n const isReadinessExam = type === 'readinessExam';\n\n const baseTimeLimit = isReadinessExam ? 105 : !test || loading ? null : customTestConfig?.suspended\n ? moment.duration(customTestConfig?.timeLeft).asMinutes() || parseInt(customTestConfig?.config?.testLength) * 1.05\n : customTestConfig?.config ? (parseInt(customTestConfig?.config?.testLength) * 1.05 || null) : test?.config?.timeLimit || 30;\n\n const timeLimit = !baseTimeLimit\n ? null\n : (bootcamp === 'dat' || (bootcamp === 'inbde' && isReadinessExam)) && timeAccommodation\n ? baseTimeLimit * 1.5\n : (bootcamp === 'inbde' && isReadinessExam) && timeAccommodation2x\n ? baseTimeLimit * 2\n : baseTimeLimit;\n\n return (\n \n \n \n )\n}\n\nexport default TimedPrometricBank;\nexport {handleCloseClick}\n","import React from 'react';\nimport {useHistory} from 'react-router-dom';\n\nimport {Button, LinkButton, IconButton} from '../Branding/Buttons';\n\nimport {ArrowForwardOutline} from '@styled-icons/evaicons-outline/ArrowForwardOutline';\nimport {ArrowBackOutline} from '@styled-icons/evaicons-outline/ArrowBackOutline';\nimport {RefreshOutline} from '@styled-icons/evaicons-outline/RefreshOutline';\nimport {CheckmarkOutline} from '@styled-icons/evaicons-outline/CheckmarkOutline';\nimport {CloseOutline as X} from '@styled-icons/evaicons-outline/CloseOutline';\nimport {ArrowPath as Refresh} from '@styled-icons/heroicons-outline/ArrowPath';\n\nimport styled from 'styled-components';\nimport {useHotkeys} from 'react-hotkeys-hook';\n\nexport const backButtonWidth = 56;\n\n\nexport const StyledBackButton = styled(Button)`\n align-self: flex-start;\n width: auto;\n z-index: 1;\n border: 1px solid ${({theme}) => theme.overlays.opacity.light._400};\n color: ${({theme}) => theme.overlays.opacity.light._400};\n\n button {\n font-weight: 500;\n width: ${backButtonWidth}px;\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n padding: ${({theme}) => theme.layouts.spacing.m};\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n justify-content: flex-start;\n\n svg {\n fill: ${({theme, inMenu}) => !inMenu ? theme.colors.neutralsPalette.grey : theme.colors.neutralsPalette.white};\n width: 24px;\n height: 24px;\n }\n }\n }\n`;\n\nexport const BackButton = ({\n inMenu,\n className,\n onClick\n}) => {\n\n const {goBack} = useHistory();\n\n return(\n \n );\n}\n\n\nconst StyledStartButton = styled(Button)`\n white-space: nowrap;\n`;\n\nconst StyledRetakeTestButton = styled(Button)`\n background: white;\n margin-left: 16px;\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n box-shadow: 0px 2px 0px ${({theme}) => theme.colors.neutralsPalette.light};\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n white-space: nowrap;\n\n &:hover {\n background: white;\n }\n`;\n\nexport const StartButton = ({color, colorConfig, onClick, children='Begin Attempt', ...props}) => {\n useHotkeys('space', onClick, [onClick]);\n\n return (\n \n );\n}\n\nexport const RetakeTestButton = ({color, onClick, children='Begin Attempt'}) => (\n \n);\n\nconst StyledStartReviewButton = styled(StyledStartButton)`\n width: ${({fullWidth}) => fullWidth ? '100%' : '50%'} ;\n`;\n\nexport const StartReviewButton = ({color, onClick, fullWidth}) => (\n \n);\n\nconst StyledLinkButton = styled(LinkButton)`\n width: 50%;\n margin-right: 12px;\n\n button {\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n border: 1px solid ${({themeColor}) => themeColor};\n color: ${({themeColor}) => themeColor};\n }\n`;\n\nexport const RetakeQuizButton = ({color}) => (\n location.pathname}\n themeColor={color}\n type={'ghost'}\n children={'Retake Quiz'}\n iconConfig={{\n position: 'left',\n icon: RefreshOutline,\n size: 16,\n }}\n fixed\n />\n);\n\n\nconst CloseButton = styled(IconButton)`\n height: 56px;\n width: 56px;\n padding: 15px;\n background: rgba(255, 255, 255, 0.1);\n align-self: flex-start;\n z-index: 1;\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n padding: ${({theme}) => theme.layouts.spacing.m};\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n justify-content: flex-start;\n\n svg {\n stroke: ${({theme}) => theme.colors.neutralsPalette.grey};\n width: 24px;\n height: 24px;\n }\n }\n`;\n\nconst CloseIcon = styled(X).attrs(props => ({size: 28, color: 'white'}))``;\n\nexport const ExitQuizButton = ({className, onClick}) => {\n const {push, action, goBack} = useHistory();\n\n const canGoBack = action !== 'POP';\n const urlParts = window.location.pathname.split('/');\n const previousPath = urlParts\n .slice(0, 2)\n .join('/');\n\n const handleGoBack = () => {\n if (canGoBack) {\n goBack();\n } else {\n push(previousPath);\n }\n };\n\n return (\n }\n />\n );\n\n}\n\nconst StyledExhibitButton = styled(Button)`\n box-shadow: none;\n background: ${({theme, themePalette, active}) => active ? themePalette.default : theme.overlays.opacity.light._100};\n margin-left: ${({theme}) => theme.layouts.spacing.s};\n\n &:hover {\n transform: none;\n background: ${({theme, themePalette, active}) => active ? themePalette.hover : theme.overlays.opacity.light._200};\n }\n &:disabled {\n background: ${({theme}) => theme.overlays.opacity.light._100};\n }\n`;\nconst StyledPreviousButton = styled(Button)`\n box-shadow: none;\n background: ${({theme}) => theme.overlays.opacity.light._100};\n margin-right: ${({theme}) => theme.layouts.spacing.s};\n\n &:hover {\n transform: none;\n background: ${({theme}) => theme.overlays.opacity.light._200};\n }\n &:disabled {\n background: ${({theme}) => theme.overlays.opacity.light._100};\n }\n`;\nconst StyledCheckButton = styled(Button)`\n background: ${({themePalette}) => themePalette.default};\n &:hover {\n background: ${({themePalette}) => themePalette.hover};\n }\n &:disabled {\n background: ${({theme}) => theme.colors.neutralsPalette.lightGrey};\n transition: none;\n box-shadow: none;\n }\n`;\nexport const ExhibitButton = (props) => {\n return (\n \n );\n}\nexport const PreviousButton = (props) => {\n return (\n \n );\n}\nexport const CheckButton = (props) => {\n return (\n \n );\n}\nexport const NextButton = (props) => {\n return (\n \n );\n}\n","import React, {useState, useEffect} from 'react';\nimport styled from 'styled-components';\nimport {useTestNavigatorContext} from '../../../contexts/TestNavigator';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {useTimerContext} from '@bootcamp/shared/src/util/contexts/Timer';\nimport {Button} from '@bootcamp/web/src/components/USMLEBank/shared';\nimport {Box} from '@bootcamp/web/src/components/USMLEBank/shared';\nimport {CloseButton, CloseIcon} from '../../../components/QBank/SidebarTop';\n\nimport {\n SettingsContainer,\n Setting,\n SettingWrapper,\n Toggle,\n} from '@bootcamp/web/src/components/PrometricBank/components/shared';\n\nconst Container = styled.div`\n display: flex;\n width: 100%;\n height: 100%;\n background: white;\n flex-direction: column;\n\n font-family: arial;\n `;\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n flex: 1;\n overflow: auto;\n padding: 0px 16px;\n`;\nconst Header = styled.div`\n text-align: center;\n font-weight: bold;\n font-size: 18px;\n margin-bottom: 16px;\n`;\nconst Body = styled.div`\n margin-bottom: 16px;\n font-size: 16px;\n line-height: 24px;\n\n ol {\n margin: 0;\n padding: 0px 22px;\n }\n`;\nconst SettingHeader = styled.div`\n margin-bottom: 16px;\n color: #000;\n font-weight: 700;\n line-height: 100%;\n`;\nconst Bar = styled(Box)`\n display: flex;\n align-items: center;\n color: white;\n padding: 6px 8px;\n height: 54px;\n background: ${({bootcamp, theme}) => bootcamp === 'nclex' ? theme.colors.prometricPalette.nclex.default : theme.colors.prometricPalette['med-school'].default};\n`;\nconst StyledCloseButton = styled(CloseButton)`\n width: 42px;\n height: 42px;\n margin: 0;\n padding: 0;\n`;\nconst Luck = styled.div`\n margin: 12px 0px 24px;\n`;\n\nconst CancelButton = styled(Button)`\n background: #f0f0f0;\n color: #000;\n margin-top: 16px;\n &:hover {\n background: #e0e0e0;\n }\n border: 1px solid #d0d0d0;\n`;\n\n\nconst SelfAssessmentRules = ({timeLimit, totalQuestionBlocks, timeMultiplier}) => (\n
    \n
  1. You will have {timeLimit * timeMultiplier} minutes to finish each of block of 40 questions.
  2. \n
  3. There are {totalQuestionBlocks} blocks for a total of {totalQuestionBlocks * 40} questions.
  4. \n
  5. You will have a {5 * timeMultiplier} minute break between each block.
  6. \n
  7. You cannot pause the test and must answer all 4 blocks together, set aside at least {4 * timeMultiplier} hours to complete the Self Assessment.
  8. \n
  9. Your score report will appear after finishing the assessment.
  10. \n
\n)\nexport const StartBlock = ({timeLimit, questions, totalQuestionBlocks, headerText=\"Welcome to Bootcamp.com Self Assessment 1\", Rules=SelfAssessmentRules, startText=\"Start Assessment\" }) => {\n const [loading, setLoading] = useState(false);\n const {bootcamp, searchUserInteractions, saveUserInteraction} = useUserDataContext();\n\n const {methods: {transitionBlock, setTimeMultiplier, handleGoBack, instantiateTestProgress}, variables: {timeMultiplier, test, testProgressId}} = useTestNavigatorContext();\n const {updateTimeLimit} = useTimerContext();\n\n function handleTimeAccommodationChange(value) {\n const update = value === timeMultiplier ? 1 : value;\n setTimeMultiplier(update);\n updateTimeLimit(timeLimit * update);\n }\n\n useEffect(() => {\n testProgressId && transitionBlock('next');\n }, [testProgressId]);\n const prometricDelay = bootcamp === 'nclex' && searchUserInteractions('prometricDelay') === true;\n return (\n \n \n handleGoBack()}\n children={}\n />\n \n \n \n
{headerText}
\n \n Please read the following before starting:\n \n Good Luck!\n \n Test Settings\n {bootcamp === 'nclex' && \n saveUserInteraction('prometricDelay', !prometricDelay)}/>\n \n NCLEX Restrictions: Adds delay between questions; disables cross-out and highlight to simulate Pearson testing experience.\n \n }\n \n handleTimeAccommodationChange(1.5)}/>\n \n Time Accommodation 1.5x: Get an additional 1.5x time for students who have approved accommodations.\n \n \n \n handleTimeAccommodationChange(2)}/>\n \n Time Accommodation 2x: Get an additional 2x time for students who have approved accommodations.\n \n \n \n {\n handleGoBack();\n\n }}>Cancel\n
\n
\n \n
\n\n );\n};\n\nStartBlock.defaultProps = {};\nStartBlock.propTypes = {};\n\nexport default StartBlock;","import React, {useEffect, useState, useRef, useMemo} from 'react';\nimport ReactDOM from 'react-dom';\nimport styled, {css} from 'styled-components';\nimport {Draggable, Droppable, DragDropContext} from 'react-beautiful-dnd';\nimport nanoid from 'nanoid';\n\nimport {Prompt, SubmitButton, ScoreIconContainer, CorrectIcon, IncorrectIcon} from './shared';\nimport Highlightable from '@bootcamp/web/src/components/Highlightable';\n\nimport {reorder} from '@bootcamp/shared/src/util';\nimport {firstBy} from 'thenby';\n\nimport arrow from '../assets/arrow-button.png';\nimport arrowActive from '../assets/arrow-button-active.png';\n\n\nconst Container = styled.div`\n position: relative;\n ${({answered}) => !answered && css`padding-bottom: 72px;`}\n .dnd-input-container {\n display: inline-block;\n margin: 2px;\n min-width: 250px;\n vertical-align: middle;\n }\n\n .dnd-input {\n background: ${({theme}) => theme.colors.neutralsPalette.nclex.lightBlue} !important;\n font-size: 0 !important;\n padding: 10px;\n border: none;\n width: 100%;\n height: 36px;\n }\n`;\nconst Wrapper = styled.div`\n display: flex;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n gap: ${({theme}) => theme.layouts.spacing.l};\n }\n`;\nconst ButtonArea = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n margin-top: 66px;\n padding: 2px;\n`;\nconst DragItem = styled.div`\n display: flex;\n text-decoration: none;\n color: inherit;\n padding: 5px 10px;\n\n ${({asTable}) => !asTable && css`\n border-radius: 25px;\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.nclex.dark};\n background: white;\n `}\n\n ${({asTable}) => asTable && css`\n border-radius: 0;\n margin-bottom: 4px;\n background: ${({color, theme}) => color || theme.colors.neutralsPalette.nclex.lightBlue};\n `}\n`;\nconst ArrowButton = styled.button`\n background-image: url(${({active}) => active ? arrowActive : arrow});\n width: 23px;\n height: 23px;\n outline: none;\n margin: none;\n border: none;\n border-radius: 23px;\n transform: ${({direction}) => direction === 'left'\n ? 'rotate(180deg)'\n : direction === 'right'\n ? 'rotate(0deg)'\n : direction === 'up'\n ? 'rotate(270deg)'\n : 'rotate(90deg)'\n };\n`;\n\nconst ClozeDragItem = styled(DragItem)`\n align-items: center;\n border: none;\n padding: 0 6px;\n height: 100%;\n`;\nconst DragItemWrapper = styled.div`\n background: ${({active}) => active ? '#dff0d8' : 'none'};\n ${({asTable}) => asTable && css`\n flex: 0;\n border-bottom: none;\n `}\n`;\nconst DragHandle = styled.div`\n ${({isDragging}) => isDragging && css`\n p {\n margin: 0 !important;\n }\n `}\n z-index: 1;\n flex: 1;\n margin-bottom: -1px;\n height: 100%;\n\n ${({asTable}) => !asTable && css`\n border-bottom: ${({theme, isDragging}) => !isDragging ? `1px solid ${theme.colors.neutralsPalette.nclex.light}` : 'none'};\n padding: 10px 15px;\n `}\n`;\n\nconst ClozeDropContainer = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n`;\nconst DropContainer = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n height: ${({height}) => height ? `${height}px` : 'auto'};\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n }\n ${({asTable}) => asTable && css`\n border: 1px solid black;\n max-width: 500px;\n `}\n\n &:first-child {\n margin-right: ${({theme, withButtons}) => withButtons ? 0 : theme.layouts.spacing.l};\n }\n`;\nconst ButtonWrapper = styled.div`\n display: flex;\n flex-direction: row;\n flex: 1;\n`;\nconst DropAreaWrapper = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n width: 280px;\n`;\n\nconst ClozeDropWrapper = styled.div`\n width: 100%;\n height: 100%;\n background: ${({isDraggingOver}) => isDraggingOver ? 'lightgrey' : 'none'};\n`;\n\nconst DropWrapper = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n flex: 1;\n\n ${({asTable}) => asTable && css`\n padding: 8px;\n `}\n\n ${({asTable}) => !asTable && css`\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.nclex.light};\n `}\n`;\n\nconst ListHeader = styled.div`\n ${({asTable}) => !asTable && css`\n padding: 12px 0px 24px 0px;\n text-align: center;\n `}\n\n ${({asTable}) => asTable && css`\n font-weight: bold;\n text-align: center;\n border-bottom: 1px solid black;\n padding: ${({theme}) => theme.layouts.spacing.l};\n background: ${({color, theme}) => color || theme.colors.neutralsPalette.nclex.lightBlue};\n `}\n`;\n\nconst LimitPlaceholder = styled.div`\n flex: 1;\n background: ${({visible, theme}) => visible ? theme.colors.neutralsPalette.nclex.lightBlue : 'none'};\n margin-bottom: 4px;\n max-height: 61px;\n`;\nconst CorrectResponse = styled.div`\n span {\n color: ${({theme}) => theme.colors.interfacePalette.green.default};\n }\n`;\nconst IncorrectResponse = styled.div`\n span {\n color: ${({theme}) => theme.colors.interfacePalette.red.default};\n }\n`;\n\n// QUESTIONS\n// do table headers for SATA & Select N need to be dynamic or are they always the same?\n\n// here we need to update the logic and styling a bit depending on the type\n\n// ORDERED RESPONSE - we need to be able to drag from one side to the other and reorder within each list (which is more or less what we have now) ** ORDER MATTERS\n\n// SATA - need to be able to drag from one side to the other / order doesn't matter (pretty much what we have now)\n\n// SELECT N - drag is disabled after limit is filled, this can be derived from the number of correct answers given the dnd select n question type\n\nconst DropZone = ({answered, droppableId, list, header, asTable, limit, color, renderButtons, onTargetClick, selectedTarget, showScoreIcon, onlyShowCorrectScoreIcon, controlHeight}) => {\n const [initialHeight, setInitialHeight] = useState(null);\n const containerRef = useRef();\n\n useEffect(() => {\n if (initialHeight || !containerRef.current || !controlHeight) return;\n setInitialHeight(containerRef?.current?.clientHeight);\n }, [containerRef.current])\n\n return (\n \n {({ innerRef, droppableProps, placeholder }, { isDraggingOver }) => (\n \n \n \n {header}\n \n {list?.map(([id, text, correct], index) => (\n \n {({ innerRef, draggableProps, dragHandleProps }, { isDragging, draggingOver }) => (\n !answered && typeof onTargetClick === 'function' && onTargetClick(id)} active={selectedTarget === id}>\n \n \n {answered && showScoreIcon &&\n \n {correct ? : }\n \n }\n \n \n \n \n )}\n \n ))}\n {!!limit && !isDraggingOver && Array.from(new Array(Math.max(limit - list.length, 0))).map((item, index) => )}\n {placeholder}\n \n \n {renderButtons && renderButtons()}\n \n \n )}\n \n );\n}\n\nconst DropTarget = ({droppableId, item, answered, onlyShowCorrectScoreIcon, orderMatters}) => {\n const [id, text, correct, targetId] = item || [];\n const targetIndex = targetId?.split('-')?.slice(-1)[0];\n const droppableIndex = droppableId?.split('-')?.slice(-2)[0];\n\n const isCorrect = orderMatters ? correct && targetIndex === droppableIndex : correct;\n return (\n \n {({ innerRef, droppableProps, placeholder }, { isDraggingOver, ...rest}) =>(\n \n \n {item &&\n \n {({ innerRef, draggableProps, dragHandleProps }) => (\n \n \n {answered &&\n \n {isCorrect ? : }\n \n }\n \n \n \n )}\n }\n {placeholder}\n \n \n )}\n \n );\n}\n\nconst PromptDragTargets = ({promptRef, selections, answered}) => {\n const [targets, setTargets] = useState([]);\n\n useEffect(() => {\n\n if (!promptRef.current) return;\n\n const dragTargets = promptRef.current.querySelectorAll('[data-drag-target=\"\"]');\n\n setTargets(Array.from(dragTargets));\n\n }, [promptRef.current]);\n\n return targets.map((target, index) => {\n const groupIndex = Object.keys(\n Object\n .assign({}, target?.dataset))\n .find(key => key.match('dragTarget-'))\n .slice(-1)[0]\n\n\n\n const droppableId = `drag-target-${index}${groupIndex ? `-${groupIndex}` : ''}`;\n return ReactDOM.createPortal(, target)\n });\n}\n\nconst DndDefault = ({\n answers,\n answered,\n headerLeft,\n headerRight,\n dropLimit,\n asTable=false,\n setAnswerState,\n answerState,\n withButtons=true,\n answeredAnswersLeft,\n answeredAnswersRight,\n showScoreIcon,\n controlHeight\n}) => {\n const [selectedTarget, setSelectedTarget] = useState(null);\n\n const [answersLeft, setAnswersLeft] = useState(answers?.map(answer => [nanoid(), ...answer]).filter(answer => !answerState.map(([_, answer]) => answer).includes(answer[1])));\n const [answersRight, setAnswersRight] = useState(answerState || []);\n\n function onDragEnd({source, destination}) {\n if (!destination) return;\n\n setSelectedTarget(null);\n\n if (source.droppableId === destination.droppableId) {\n const [answers, setter] = source.droppableId.match('left')\n ? [answersLeft, setAnswersLeft]\n : [answersRight, setAnswersRight];\n\n const reorderedBlocks = reorder(\n answers,\n source.index,\n destination.index\n );\n\n setter(reorderedBlocks);\n } else {\n\n const [to, setTo, from, setFrom] = destination.droppableId.match('right')\n ? [answersRight, setAnswersRight, answersLeft, setAnswersLeft]\n : [answersLeft, setAnswersLeft, answersRight, setAnswersRight];\n\n const newAnswersTo = [...to];\n newAnswersTo.splice(destination.index, 0, from[source.index]);\n\n const newAnswersFrom = from.filter((answer, index) => index !== source.index);\n\n setTo(newAnswersTo);\n setFrom(newAnswersFrom);\n }\n }\n\n function onTargetClick(id) {\n setSelectedTarget(id);\n }\n\n function onLeftRightClick(direction) {\n if (!selectedTarget || answered) return;\n\n const [to, setTo, from, setFrom] = direction === 'left'\n ? [answersLeft, setAnswersLeft, answersRight, setAnswersRight]\n : [answersRight, setAnswersRight, answersLeft, setAnswersLeft]\n\n const target = from.find(([id]) => id === selectedTarget);\n const filtered = from.filter(([id]) => id !== selectedTarget);\n\n if (!target) return;\n\n setFrom(filtered);\n setTo([...to, target]);\n setSelectedTarget(null);\n }\n\n function onUpDownClick(direction) {\n if (!selectedTarget || answered) return;\n\n const targetIndex = answersRight.findIndex(([id]) => id === selectedTarget);\n\n if (targetIndex === -1) return;\n\n const newIndex = direction === 'up' ? targetIndex - 1 : targetIndex + 1;\n\n if (newIndex < 0) return;\n\n const reordered = reorder(answersRight, targetIndex, newIndex);\n\n setAnswersRight(reordered);\n }\n\n function isButtonActive(direction) {\n if (answered) return;\n\n if (direction === 'left') {\n return answersRight.find(([id]) => id === selectedTarget)\n } else if (direction === 'right') {\n return answersLeft.find(([id]) => id === selectedTarget)\n } else if (direction === 'up') {\n return answersRight.findIndex(([id]) => id === selectedTarget) > 0\n } else if (direction === 'down') {\n const index = answersRight.findIndex(([id]) => id === selectedTarget);\n return index >= 0 && index < answersRight.length - 1;\n }\n }\n\n function renderButtonArea(directions=[], onClick) {\n return (\n \n {directions.map((direction, index) => (\n onClick(direction)}>\n \n ))}\n \n );\n }\n\n useEffect(() => {\n answered && selectedTarget && setSelectedTarget(null);\n }, [answered])\n\n useEffect(() => {\n setAnswerState(answersRight);\n }, [answersRight]);\n\n return (\n onTargetClick(null)}>\n renderButtonArea(['left', 'right'], onLeftRightClick) : null}\n selectedTarget={selectedTarget}\n answered={answered}\n showScoreIcon={showScoreIcon}\n onlyShowCorrectScoreIcon\n controlHeight={controlHeight}\n />\n renderButtonArea(['up', 'down'], onUpDownClick) : null}\n selectedTarget={selectedTarget}\n answered={answered}\n showScoreIcon={showScoreIcon}\n controlHeight={controlHeight}\n />\n \n );\n\n};\n\nconst Cloze = ({answers, answered, promptRef, setAnswerState, answerState}) => {\n const [clozeSelections, setClozeSelections] = useState(answerState || {});\n const header = 'Word Choices';\n\n const answerPool = useMemo(() => answers?.map(answer => [nanoid(), ...answer]), []);\n function onDragEnd({source, destination, draggableId}) {\n if (!destination) return;\n\n let updatedSelections = {...clozeSelections};\n if (source.droppableId.match('answer-pool') && destination.droppableId.match('target')) {\n // handling drag from answers to target\n updatedSelections[destination.droppableId] = answerPool.find(([id]) => id === draggableId)\n setClozeSelections(updatedSelections);\n\n } else if (source.droppableId.match('target') && destination.droppableId.match('target')) {\n // handling drag from target to target\n // delete from source\n delete updatedSelections[source.droppableId];\n\n // add to destination\n updatedSelections[destination.droppableId] = clozeSelections[source.droppableId];\n\n setClozeSelections(updatedSelections);\n } else {\n // handling drag from target to answers\n delete updatedSelections[source.droppableId]\n setClozeSelections(updatedSelections);\n }\n }\n useEffect(() => {\n setAnswerState(clozeSelections);\n }, [clozeSelections]);\n\n return (\n \n !Object.values(clozeSelections).find(([targetId, targetAnswer]) => targetId === id || answer === targetAnswer))}\n header={header}\n answered={answered}\n showScoreIcon\n />\n \n \n );\n\n};\n\nconst onBeforeCapture = (beforeCapture) => {\n const draggableElement = document.querySelectorAll(`[data-rbd-draggable-id='${beforeCapture?.draggableId}']`)?.[0];\n if (!draggableElement) return;\n draggableElement.style.width = '250px';\n draggableElement.style.height = '36px';\n};\n\nconst Rationale = ({answerGroups, answered, promptRef, headerLeft, headerRight, setAnswerState, answerState}) => {\n const [rationaleSelections, setRationaleSelections] = useState(answerState || {});\n const answerPools = useMemo(() => answerGroups?.map(({contents}) => JSON.parse(contents).map(answer => [nanoid(), ...answer])), []);\n const [poolHeaderLeft, poolHeaderRight] = [headerLeft || 'Condition', headerRight || 'Cause'];\n\n function onDragEnd({source, destination, draggableId}) {\n if (!destination) return;\n\n const sourceIndex = source.droppableId.split('-').slice(-1)[0];\n const destinationIndex = destination.droppableId.split('-').slice(-1)[0];\n\n // bail if we're attempting to drag to dissimilar groups (target group index needs to match pool group index)\n if (sourceIndex !== destinationIndex) return;\n let updatedSelections = {...rationaleSelections};\n // otherwise handle the drag interaction\n if (source.droppableId.match('answer-pool') && destination.droppableId.match('target')) {\n // handling drag from answer pool to target\n updatedSelections[destination.droppableId] = answerPools[sourceIndex].find(([id]) => id === draggableId);\n setRationaleSelections(updatedSelections);\n } else if (source.droppableId.match('target') && destination.droppableId.match('target')) {\n // handling drag from target to target\n // delete from source\n delete updatedSelections[source.droppableId];\n\n // add to destination\n updatedSelections[destination.droppableId] = rationaleSelections[source.droppableId];\n\n setRationaleSelections(updatedSelections);\n } else {\n // handling drag from target to answers\n delete updatedSelections[source.droppableId]\n setRationaleSelections(updatedSelections);\n }\n }\n useEffect(() => {\n setAnswerState(rationaleSelections);\n }, [rationaleSelections]);\n\n return (\n \n !Object.values(rationaleSelections).find(([targetId, targetAnswer]) => targetId === id || answer === targetAnswer))}\n header={poolHeaderLeft}\n onlyShowCorrectScoreIcon\n answered={answered}\n showScoreIcon\n />\n !Object.values(rationaleSelections).find(([targetId, targetAnswer]) => targetId === id || answer === targetAnswer))}\n header={poolHeaderRight}\n onlyShowCorrectScoreIcon\n answered={answered}\n showScoreIcon\n />\n \n \n\n );\n\n};\n\nconst OrderedResponse = ({answers, answerState, headerLeft, headerRight, ...props}) => {\n // NOTE we'll probably need to pass up the ordering of the answers to the scoring handler\n const orderedAnswers = [...answers]?.sort(firstBy(([a, b, index]) => index));\n const answeredCorrectly = answers?.every(([a, b, orderIndex], index) => orderIndex === answerState?.[index]?.[3]);\n\n const [headerL, headerR] = props.answered && answeredCorrectly\n ? [\n 'Unordered Options',\n Your Response / Correct Response\n ]\n : props.answered && !answeredCorrectly\n ? [\n Your Response / Incorrect Response,\n Correct Response\n ]\n : [\n 'Unordered Response',\n 'Ordered Response'\n ];\n\n const [answeredAnswersLeft, answeredAnswersRight] = answeredCorrectly\n ? [\n orderedAnswers?.map((answer, index) => [`${index}`, ...answer]),\n answerState,\n ]\n : [\n answerState,\n answers?.map((answer, index) => [`${index}`, ...answer]),\n ];\n\n return (\n \n );\n};\n\nconst SelectN = props => {\n const dropLimit = props?.answers?.filter(([text, correct]) => !!correct).length;\n const [headerLeft, headerRight] = [props.headerLeft || 'Client Findings', props.headerRight || `Top ${dropLimit} Findings`];\n\n return (\n \n );\n};\n\nconst SATA = props => {\n return (\n \n );\n};\n\n\nconst componentMap = {\n dragAndDropCloze: Cloze,\n dragAndDropRationale: Rationale,\n dragAndDropSelectN: SelectN,\n dragAndDropSATA: SATA,\n dragAndDropOrderedResponse: OrderedResponse,\n};\n\nconst DragAndDrop = ({\n prompt,\n setHighlights,\n highlights,\n enableHighlighting,\n questionIndex,\n didSubmitAnswer,\n alwaysShowingExplanation,\n answers,\n questionHeader,\n answerState,\n setAnswerState,\n showingExplanation,\n crossedAnswerIndexes,\n updateCrossedAnswerIndexes,\n showAnswerBox,\n type,\n answerGroups,\n dndHeaderLeft,\n dndHeaderRight,\n checkOnClick,\n tutorMode\n}) => {\n\n const promptRef = useRef();\n\n const DragComponent = componentMap[type];\n\n return (\n \n \n {questionHeader && (\n \n )}\n \n \n \n \n \n {!didSubmitAnswer && tutorMode && !alwaysShowingExplanation && (\n \n )}\n \n );\n}\n\n\nDragAndDrop.defaultProps = {};\nDragAndDrop.propTypes = {};\n\nexport default DragAndDrop;","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAXCAYAAADgKtSgAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjQzMjA1NjA3ODE2NjExRTRBMTIwOTAxMEQ5NUYyN0ZEIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjQzMjA1NjA4ODE2NjExRTRBMTIwOTAxMEQ5NUYyN0ZEIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NDMyMDU2MDU4MTY2MTFFNEExMjA5MDEwRDk1RjI3RkQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NDMyMDU2MDY4MTY2MTFFNEExMjA5MDEwRDk1RjI3RkQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6IwonMAAACXElEQVR42ryVTWgTURSFz8zEpMWolSKiqCAlGymIC6HgT3BT3BQsuihCKN0INgtxUQVBcCc0oBSMuFJLNwU3ogjS4iIoKm6kUCpSglm0uNCF1tRJm9h4bnMzmQ4zmSyMF05e5r13v/cz750xqtUq2hUR+TEMw7dx8tFCksUQJWVC+1eoRSpHTQ+PHMn55cqkjc0fD5zQoyzuUz3UFDVDzVM21Un1Uv1UispToxxkLhRO8DCLLJWhxplkBy2bfWWga9QYlWbfyUC4gieoAXZ83ereMu8Ui+fUlfoAwjU9W5FtAXzVW6H9ByRfOZthuvrIHmdamPEdoONWwAAZ5TTgeirk5Y23tA9G7AaM+F2fFsnvUZ4zczluU81e3pY4+GobrN2XYW5/KEO5Zm/r6Rpyw5N63OoLWoEZs30lsY+LPPY2hujei7Di06yxXEPPKK92ifSCzDfaN3Yg+YGtO/1n3sl6owvofh/Dm9PnUFp+isqv82xZV07CDY/oBWnEgUNAtCtkf/YAg++ieJI4S/g9VlxSTsQNr+jN++HkdVMdYZtPX3p5vYKN0nc+3K6vS3kOfFGv9FcnL7u/XMv2hGlZuLlkIRoXZ/mDT8+WsV48yZYl7dGrPAeeU6+Y1efDKAcenC/YtQY8HiljYbaAteIJ1n1ztfcrzzkt8sZT6hUShSYCHlwQ8GeUisfdYM1PKa8GV9vMqwmFR2HuI+xiH//99LRIfr5uw+7rPyrupibULF5gdeUMy1Uf8xpTzlZvUT9Oi7uFDDBI/Q5wxbTb1/+fn7f9S/TPv6Htir8CDABi0QuQi9sADQAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAXCAYAAADgKtSgAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjE3NDdDMzk1ODE2NjExRTQ4OUI1OUIyQzU5RUQ4NDgzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjE3NDdDMzk2ODE2NjExRTQ4OUI1OUIyQzU5RUQ4NDgzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTc0N0MzOTM4MTY2MTFFNDg5QjU5QjJDNTlFRDg0ODMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MTc0N0MzOTQ4MTY2MTFFNDg5QjU5QjJDNTlFRDg0ODMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5J/JPuAAAC/klEQVR42rSVTUsjQRCGa5JJlqj4AQkGDIQsyAqiOa3XhUjuIjmJK3jypOIf8Av/hCdBPHj3KEZEA+JiIKKih0AUcxARUVAxH86+b5seYnQSLxZ0ZtI99VR1VXW1YVmWfJeY/DEM49PF+fn5P1gbxYi9vr6GMeXGKLtcrgs4lcRYwzc7n+nSaUP91MChEHW73at4/RUIBLxtbW1GU1OTACowIk9PT3J/f2/d3NwU8M15uVweg06mIXxhYWEcj+Wuri4TwyDQSWgon89bGCX8nZibm1txhBOM9+Xe3l5Pa2vrl2P78PAgJycnRbBsA+/gDAWe//r7+z0IgyPo4OBABgYGPswjTHJ0dEQDvxkicu09m6a5Gg6HzY6ODhVbp7G1tSV7e3sf5qlHfXI006WrgsmLRCIGEin1BiWVSikjtWvUJ6fCe4PD8mgoFPJ6PB75CpyVc3h4KBsbG8prvUZ9csiz6xwSQ8nZlbG0tKQqwUna29tVwk5PT6VUKkkikRCtS87l5WXMhvOAMInas5eXF+nu7hanMvR6verJispms7K+vi4jIyNKn5zKgbM9dyMR72B+v59JbliG3EU6nVYhGh4e1jruaniZE9pz7RVj2EiOj4/F5/PJ4OCg8rxYLGreGxyTF4+Pjz+bm5ttpe3tbUfg0NCQ8nB/f1+gJ1NTU2oHFP4nz4azCV1fX0eCwaA6qrOzs47gxcVFoRO7u7vy/Pws09PT0tLSYq+DY5FXndC1XC73NxqN/uDWkPG6oUgmk6paZmZmVEi0oIEJOAXyqg/RDj4+Pzs7s+qdTp1wVgvB3EH1GvXJ0W3YLg8kYgzNp3R7e1v3EPX19cnk5KTyuHqeetQnRzPfdUXEcxweLMfjcU9nZ+enIeHWq6uqEmfZ3NwsIhwTyNeKYz+nAfZzxN9EhzRqQbWG0AmtTCaj+rkGN7yJEFd1E/X09HjRLwx2PZYfj/vd3Z1cXV1ZiLG6iQqFwtduoto7FJ6zCcXgpX2HVuo4ibnGd+h3yX8BBgBVsI1xKZlQpAAAAABJRU5ErkJggg==\"","import React, { useState, useEffect, useRef } from 'react';\nimport styled from 'styled-components';\n\nimport selectorImg from '../assets/hotSpotSelector.png';\n\n\nconst HotspotContainer = styled.div`\n width: 100%;\n overflow: auto;\n`;\nconst Wrapper = styled.div`\n position: relative;\n width: 700px;\n`;\n\nconst HotSpot = ({hotSpotImageSelection, hotSpotImageInput, hotSpotImage, showingExplanation, setAnswerState, answerState}) => {\n const [loaded, setLoaded] = useState(false);\n\n return (\n \n \n {loaded && }\n setLoaded(true)} style={{ margin: 0, maxWidth: '700px', maxHeight: '700px', userSelect: 'none' }} src={hotSpotImageInput ? URL.createObjectURL(hotSpotImageInput) : `https://dekni9rgkrcu0.cloudfront.net/${hotSpotImage}`} />\n \n \n )\n}\n\nconst Canvas = styled.canvas`\n position: absolute;\n width: 100%;\n height: 100%;\n cursor: crosshair;\n`;\n\nconst CanvasOverlay = ({hotSpotImageSelection, showingExplanation, setAnswerState, answerState}) => {\n const [clickTarget, setClickTarget] = useState(answerState || []);\n\n const ref = useRef();\n\n function handleClick(event) {\n if (showingExplanation) return;\n\n const rect = event?.target?.getBoundingClientRect();\n\n var x = event.clientX - rect.left; // get mouse x and adjust for el.\n var y = event.clientY - rect.top;\n if (clickTarget[0] === x && clickTarget[1] === y) {\n setClickTarget([]);\n setAnswerState([]);\n return\n }\n setClickTarget([x, y]);\n setAnswerState([x, y]);\n }\n\n function drawSelection(reset) {\n const canvas = ref?.current;\n const ctx = canvas?.getContext('2d');\n var img = new Image();\n img.onload = () => {\n const canvasOffset = canvas?.getBoundingClientRect();\n \n if (canvasOffset.width == 0) {\n return;\n } else if (reset) {\n ctx.canvas.width = canvasOffset.width;\n ctx.canvas.height = canvasOffset.height;\n }\n \n ctx.drawImage(img, clickTarget[0] - 12, clickTarget[1] - 12, 24, 24);\n }\n img.src = selectorImg;\n \n }\n\n function drawCorrectArea() {\n const canvas = ref?.current;\n const ctx = canvas?.getContext('2d');\n\n const canvasOffset = canvas?.getBoundingClientRect();\n\n if (canvasOffset.width == 0) return;\n\n ctx.canvas.width = canvasOffset.width;\n ctx.canvas.height = canvasOffset.height;\n\n ctx.setLineDash([3]);\n ctx.strokeStyle = \"black\";\n ctx.lineWidth = 1;\n ctx.fillStyle = \"rgba(102, 172, 92, 0.5)\";\n\n // restore saved selection if necessary\n if (hotSpotImageSelection) {\n ctx.fillRect(hotSpotImageSelection.x, hotSpotImageSelection.y, hotSpotImageSelection.width, hotSpotImageSelection.height);\n ctx.strokeRect(hotSpotImageSelection.x, hotSpotImageSelection.y, hotSpotImageSelection.width, hotSpotImageSelection.height);\n drawSelection(false);\n }\n }\n\n // selection area drawing\n useEffect(() => {\n if (!ref?.current || !showingExplanation) return;\n\n drawCorrectArea();\n\n }, [ref?.current, hotSpotImageSelection, showingExplanation]);\n\n // click target drawing\n useEffect(() => {\n if (!ref?.current || showingExplanation) return;\n\n drawSelection(true);\n\n }, [ref?.current, clickTarget])\n\n\n\n return (\n \n );\n}\n\nexport default HotSpot","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAbCAYAAACN1PRVAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAEUSURBVHgBtZZfDoIwDMY7xch82hHwBnoDuBE30JtxFLgBPvIitRt/IorSsfIlDQsl/eVL1hYAEsZxAhvJ1h7r4+FwabWu8XS6gbAcSOuS6pf2vBsTiHdJoHOjVIEAyTTRu6NACeCbIxxcbQJcBEkB2aBQoDdoLXA1yBcYDOICfUEKGECMooKOhj6uJjl6B11UCjFTTVMFwVzROE6RGvRH+kGg6xLIagc8VcOTCp/7yEYYA2QVgaeGwuQWfMV1JiKes/3eQNvak7t9sJU+rvdsiGyLrz6ybdAvwz5SkW3BbdjgbeE7GVYD1846b2DoUGUDpab3IlBsTSwBpUF/gU+tc2nQDLBGY0wHPB7zrf6K3SCgsOcXG09K9f1HmvwAAAAASUVORK5CYII=\"","import React, {useState, useRef, useMemo, useEffect} from 'react';\nimport styled, {css} from 'styled-components';\nimport {Draggable, Droppable, DragDropContext} from 'react-beautiful-dnd';\nimport nanoid from 'nanoid';\n\nimport {AlertPopup} from '../../shared';\nimport {Prompt, SubmitButton, ScoreIconContainer, CorrectIcon, IncorrectIcon} from './shared';\nimport Highlightable from '../../../Highlightable';\nimport {useModalContext} from '../../../../contexts/Modal';\n\n\nconst Container = styled.div`\n position: relative;\n ${({answered}) => !answered && css`padding-bottom: 72px;`}\n`;\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n`;\nconst BowtieDropZoneContainer = styled.div`\n display: flex;\n margin-bottom: 24px;\n justify-content: center;\n width: 100%;\n`;\nconst AnswerPoolsContainer = styled.div`\n display: flex;\n align-items: flex-start;\n`;\nconst DropZoneGrouping = styled.div`\n display: flex;\n width: 100%;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\nconst SpacerContainer = styled.div`\n display: flex;\n flex-direction: column;\n min-width: 24px;\n width: 24px;\n padding: 30px 0px;\n position: relative;\n`;\nconst SpacerLine = styled.div`\n position: absolute;\n border-right: 2px solid #d8e6f5;\n z-index: -1;\n height: 68px;\n left: 11px;\n top: ${({position}) => ['leftTop', 'rightTop'].includes(position) ? '60px' : '120px'};\n transform: ${({position}) => ['leftTop', 'rightBottom'].includes(position) ? 'rotate(-20deg)' : 'rotate(20deg)'};\n`;\nconst DragItem = styled.div`\n display: flex;\n border: 1px solid black;\n padding: 4px 6px;\n /* height: 63px; */\n border: 1px solid #d8e6f5;\n border-radius: 10px;\n margin-bottom: 12px;\n text-decoration: none;\n color: initial;\n\n &:hover {\n border: 1px solid #0000FF;\n }\n\n ${({asTable}) => asTable && css`\n border-radius: 0;\n margin-bottom: 4px;\n background: ${({color}) => color || '#d6e6f7'};\n `}\n`;\n\nconst BowtieDragItem = styled(DragItem)`\n margin: -1px;\n align-items: center;\n /* height: 61px;\n border: ${({isDragging, isDraggingOver}) => isDragging || isDraggingOver ? '1px solid #d5d8d9' : 'none'}; */\n border-radius: 0px;\n flex: 1;\n background: ${({color}) => color};\n`;\n\nconst DragHandle = styled.div`\n z-index: 1;\n`;\nconst BowtieDragHandle = styled.div`\n display: flex;\n width: 100%;\n z-index: 1;\n`;\nconst BowtieDropContainer = styled.div`\n width: 100%;\n`;\nconst DropContainer = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n\n &:nth-child(2) {\n margin: 0 12px;\n }\n\n ${({asTable}) => asTable && css`\n border: 1px solid black;\n `}\n`;\nconst PlaceholderTextElement = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 0;\n`;\nconst BowtieDropWrapper = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n min-width: 200px;\n border: 1px solid ${({isDraggingOver}) => isDraggingOver ? '#0000FF' : '#d5d8d9'};\n background: ${({color}) => color};\n justify-content: center;\n height: 63px;\n margin: 30px 0px;\n align-items: center;\n color: #808080;\n\n\n ${({isDraggingOver}) => isDraggingOver && css`\n border: 1px solid #0000FF;\n `}\n`;\nconst DropWrapper = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n flex: 1;\n\n ${({asTable}) => asTable && css`\n padding: 12px 6px 4px 6px;\n `}\n`;\nconst ListHeader = styled.div`\n ${({asTable}) => asTable && css`\n font-weight: bold;\n text-align: center;\n border-bottom: 1px solid black;\n padding: ${({theme}) => theme.layouts.spacing.s};\n background: ${({color}) => color || '#d6e6f7'};\n `}\n`;\nconst LimitPlaceholder = styled.div`\n flex: 1;\n background: ${({visible}) => visible ? '#d6e6f7' : 'none'};\n margin-bottom: 4px;\n`;\n\nconst Spacer = ({position}) => (\n \n \n \n \n);\n\n\nconst DropZone = ({answered, droppableId, list, header, asTable, limit, color, onlyShowCorrectScoreIcon}) => {\n return (\n \n {({ innerRef, droppableProps, placeholder }, { isDraggingOver }) => (\n \n {header}\n \n {list.map(([id, text, correct], index) => (\n \n {({ innerRef, draggableProps, dragHandleProps }) => (\n \n \n {answered &&\n \n {correct ? : }\n \n }\n \n \n \n )}\n \n ))}\n {/* {limit && !isDraggingOver && Array.from(new Array(Math.max(limit - list.length, 0))).map((item, index) => )} */}\n {placeholder}\n \n \n )}\n \n );\n}\n\nconst DropTarget = ({answered, droppableId, item, placeholderText, color}) => {\n const [id, text, correct] = item || [];\n\n return (\n \n {({ innerRef, droppableProps, placeholder }, { isDraggingOver }) => (\n \n \n {!!item?.length &&\n \n {({ innerRef, draggableProps, dragHandleProps }, {isDragging}) => (\n \n \n {answered &&\n \n {correct ? : }\n \n }\n \n \n \n )}\n }\n {placeholder}\n {placeholderText}\n \n \n )}\n \n );\n}\n\nconst BowtieDropZone = ({answered, selections}) => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nconst AnswerPools = ({answered, answerPools, selections}) => (\n \n !Object.values(selections).find(([targetId, targetValue]) => (targetId === id) || value === targetValue))}\n asTable\n header={'Actions to Take'}\n color={'#EEF6F4'}\n answered={answered}\n onlyShowCorrectScoreIcon\n showScoreIcon\n />\n !Object.values(selections).find(([targetId, targetValue]) => (targetId === id) || value === targetValue))}\n asTable\n header={'Potential Conditions'}\n color={'#C3E5EF'}\n answered={answered}\n onlyShowCorrectScoreIcon\n showScoreIcon\n />\n !Object.values(selections).find(([targetId, targetValue]) => (targetId === id) || value === targetValue))}\n asTable\n header={'Parameters to Monitor'}\n color={'#EDEFF3'}\n answered={answered}\n onlyShowCorrectScoreIcon\n showScoreIcon\n />\n \n);\n\nconst Bowtie = ({\n prompt,\n setHighlights,\n highlights,\n enableHighlighting,\n questionIndex,\n didSubmitAnswer,\n alwaysShowingExplanation,\n answers,\n questionHeader,\n answerState,\n setAnswerState,\n showingExplanation,\n crossedAnswerIndexes,\n updateCrossedAnswerIndexes,\n showAnswerBox,\n type,\n answerGroups,\n checkOnClick,\n tutorMode,\n}) => {\n\n const [selections, setSelections] = useState({});\n\n const answerPools = useMemo(() => answerGroups?.map(group => JSON.parse(group.contents)?.map(answer => [nanoid(), ...answer])), []);\n\n const promptRef = useRef();\n\n const {modalDispatch} = useModalContext();\n\n function handleCheck(props) {\n if (Object.keys(answerState).length !== 5) {\n return modalDispatch({\n type: 'open',\n modalContainerStyle: theme => `\n background: transparent;\n `,\n component: ({close}) => {\n return (\n \n )\n },\n enableClickClose: false,\n })\n } else {\n checkOnClick(props);\n }\n }\n\n function onDragEnd({source, destination, draggableId}) {\n if (!destination || didSubmitAnswer || alwaysShowingExplanation) return;\n\n const sourceIndex = source.droppableId.split('-').slice(-1)[0];\n const destinationIndex = destination.droppableId.split('-').slice(-1)[0];\n\n // bail if we're attempting to drag to dissimilar groups (target group index needs to match pool group index)\n if (sourceIndex !== destinationIndex) return;\n\n // otherwise handle the drag interaction\n if (source.droppableId.match('answer-pool') && destination.droppableId.match('zone')) {\n // handling drag from answer pool to target\n setSelections({...selections, [destination.droppableId]: answerPools[sourceIndex].find(([id]) => id === draggableId)});\n } else if (source.droppableId.match('zone') && destination.droppableId.match('zone')) {\n // handling drag from target to target\n // delete from source\n const updatedSelections = {...selections};\n delete updatedSelections[source.droppableId];\n\n // add to destination\n updatedSelections[destination.droppableId] = selections[source.droppableId];\n\n setSelections(updatedSelections);\n } else {\n // handling drag from target to answers\n const updatedSelections = {...selections};\n delete updatedSelections[source.droppableId]\n setSelections(updatedSelections);\n }\n }\n\n useEffect(() => {\n setAnswerState(selections);\n }, [selections]);\n useEffect(() => {\n setSelections(answerState);\n }, []);\n return (\n \n \n {questionHeader && (\n \n )}\n \n \n \n \n \n \n \n \n {!didSubmitAnswer && tutorMode && !alwaysShowingExplanation && (\n \n )}\n \n );\n}\n\nBowtie.defaultProps = {};\nBowtie.propTypes = {};\n\nexport default Bowtie;","import correctIcon from '@bootcamp/shared/src/assets/nclex/correct.png';\nimport incorrectIcon from '@bootcamp/shared/src/assets/nclex/incorrect.png';\n\nexport function renderDropdown(e, answerGroup, answerState, offset) {\n const dropdowns = document.querySelectorAll('.dropdownDisplay');\n dropdowns.forEach(e => e.remove());\n const dropdownDisplay = document.createElement('div');\n dropdownDisplay.className = 'dropdownDisplay';\n dropdownDisplay.innerHTML = JSON.parse(answerGroup.contents).reduce((acc, [answer, isCorrect]) => [null, undefined].includes(answer) ? acc : acc + `
${answer}
`, '')\n e.target.insertAdjacentElement(\"afterend\", dropdownDisplay)\n const outsideClickHandler = event => {\n if (event.target.classList.contains('dropdownCover') && dropdowns.length == 0) return;\n document.querySelectorAll('.dropdownDisplay').forEach(e => e.remove());\n document.body.removeEventListener('click', outsideClickHandler)\n }\n document.body.addEventListener('click', outsideClickHandler)\n}\n\nexport function displayScoredDropdownUI(node, answerGroups, answerState) {\n const dropdowns = node.current.querySelectorAll('[data-dropdown=\"\"]') || [];\n\n dropdowns.forEach((dropdown, index) => {\n dropdown.disabled = true;\n\n const children = Array.from(dropdown.parentNode.children);\n const scoreWrapper = document.createElement('div');\n dropdown.parentNode.prepend(scoreWrapper);\n children.forEach(child => {\n scoreWrapper.appendChild(child);\n });\n\n scoreWrapper.className = 'dropdown-score-wrapper dropdown-score-wrapper-active';\n\n const icon = new Image();\n\n const relevantAnswerState = answerState[index];\n if (relevantAnswerState?.[1]) {\n // did select correct answer\n icon.src = correctIcon;\n icon.className = 'score-icon-correct';\n dropdown.style.border = '1px solid limegreen';\n } else {\n icon.src = incorrectIcon;\n icon.className = 'score-icon-incorrect'\n dropdown.style.border = '1px solid red';\n }\n scoreWrapper.prepend(icon);\n\n dropdown.value = answerState?.[index]?.[0];\n dropdown.selectedIndex = answerState?.[index]?.[2];\n });\n}\n\nexport function displayScoredMatrixUI(node, matrix, answerState, type) {\n if (!node) return;\n\n const cells = node.getElementsByTagName('td');\n\n\n Array.from(cells).forEach(cell => {\n // determine row & cell indicies\n const cellIndex = cell.cellIndex;\n const rowIndex = cell.parentElement.rowIndex;\n\n // find all inputs for a given cell\n const inputs = cell.getElementsByTagName('input');\n\n // add scoring UI for each input within cell\n Array.from(inputs).forEach((input, inputIndex) => {\n\n if (input.disabled) return;\n\n // disable input to prevent further interaction\n input.disabled = true;\n\n // create score UI container\n const scoreUI = document.createElement('span');\n scoreUI.className = `${type}-score-container`;\n\n // if there are more than 1 input in a given cell, we assume that answer components\n // will be nested accordingly, otherwise we score assuming 1 input per cell\n const correct = inputs?.length > 1\n ? matrix?.[rowIndex - 1]?.[cellIndex - 1]?.[inputIndex]\n : matrix?.[rowIndex - 1]?.[cellIndex - 1];\n\n const selectedAnswer = inputs?.length > 1\n ? answerState?.[rowIndex - 1]?.[cellIndex - 1]?.[inputIndex]\n : answerState?.[rowIndex - 1]?.[cellIndex - 1];\n\n const icon = new Image();\n icon.className = 'score-icon';\n\n input.checked = selectedAnswer;\n\n // generate scoring UI\n if (!selectedAnswer && !correct) {\n icon.className = 'score-icon-empty';\n } else if (correct) {\n icon.src = correctIcon;\n icon.className = 'score-icon-correct';\n } else {\n icon.src = incorrectIcon;\n icon.className = 'score-icon-incorrect'\n }\n\n scoreUI.appendChild(icon)\n\n input.parentElement.prepend(scoreUI);\n });\n\n });\n}\n\nexport function syncMatrixWithAnswerState(table, answerState) {\n const cells = table.getElementsByTagName('td');\n\n Array.from(cells).forEach(cell => {\n // determine row & cell indicies\n const cellIndex = cell.cellIndex - 1;\n const rowIndex = cell.parentElement.rowIndex - 1;\n\n // find all inputs for a given cell\n const inputs = cell.getElementsByTagName('input');\n\n Array.from(inputs).forEach((input, index) => {\n const checked = answerState?.[rowIndex]?.[cellIndex];\n // if checked is array, we're looking at a cell with multiple inputs\n const isGrouping = Array.isArray(checked);\n\n if (isGrouping) {\n input.checked = checked[index];\n } else {\n input.checked = checked;\n }\n });\n });\n}\n\nexport function getAnswerMatrix(htmlString, domNode) {\n if (!htmlString && !domNode) return [];\n\n let root;\n\n // if we're looking at innerHTML, create a root container\n // otherwise just use the live dom node\n if (htmlString) {\n const root = document.createElement('div');\n root.innerHTML = htmlString;\n } else {\n root = domNode;\n }\n\n const table = root.getElementsByTagName('table');\n\n const rows = table?.[0]?.children?.[0]?.children;\n\n return Array\n ?.from(rows)\n .reduce((acc, row, index) => {\n // return for first row since that is our table header row\n if (index === 0) return acc;\n\n const cells = Array?.from(row?.children).reduce((acc2, cell, cellIndex) => {\n if (cellIndex === 0) return acc2;\n\n const inputs = cell.getElementsByTagName('input');\n\n const inputValues = Array.from(inputs).map(input => input?.checked);\n /*\n this ternary is changing the way a cell's input values are save\n so that we can save a matrix that is representitave of the # of inputs\n in the cell.\n\n eg. matrix & matrix multiple choice\n [\n [true, false, false], *row-1\n [false, true, false], *row-2\n ]\n\n eg. multi response grouping\n [\n [*row-1\n [true, false, true], *group-1\n [true, true, true], *group-2\n [true, false, false] *group-3\n ],\n [*row-2\n [true, false, false], *group-1\n [false, false, false], *group-2\n [true, false, true] *group-3\n ]\n ]\n */\n const valueArray = inputValues.length > 1 ? [inputValues] : inputValues;\n\n return [...acc2, ...valueArray];\n }, [])\n\n return [...acc, cells];\n\n }, []);\n}\n","import React, {useEffect, useRef} from 'react';\nimport styled, {css} from 'styled-components';\nimport {Prompt, AnswerBox, QuestionHeader, SubmitButton} from './shared';\n\nimport DragAndDrop from './DragAndDrop';\nimport HotSpot from './HotSpot';\nimport Bowtie from './Bowtie';\n\nimport Highlightable from '../../../Highlightable';\nimport {displayScoredMatrixUI, displayScoredDropdownUI, getAnswerMatrix, syncMatrixWithAnswerState, renderDropdown} from '../helpers';\nimport {useTestNavigatorContext} from '../../../../contexts/TestNavigator';\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\nimport {AlertPopup} from '../../shared';\n\nconst Container = styled.div`\n ${({answered}) => !answered && css`padding-bottom: 72px;`}\n`;\n\nconst DefaultQuestion = ({\n prompt,\n questionHeader,\n setHighlights,\n highlights,\n enableHighlighting,\n questionIndex,\n didSubmitAnswer,\n alwaysShowingExplanation,\n answers,\n answerGroups,\n answerMatrix,\n answerState,\n setAnswerState,\n showingExplanation,\n crossedAnswerIndexes,\n updateCrossedAnswerIndexes,\n showAnswerBox,\n type,\n hotSpotImage,\n hotSpotImageSelection,\n hotSpotImageInput,\n checkOnClick,\n tutorMode,\n}) => {\n const promptRef = useRef();\n const {modalDispatch} = useModalContext();\n // highlight handler\n useEffect(() => {\n if (!['highlight', 'highlightSelectN'].includes(type)) return;\n\n const targets = promptRef?.current?.getElementsByClassName('fr-highlight');\n\n Array.from(targets).forEach((target, index) => {\n const isSelected = answerState?.find(([selectedIndex]) => index === selectedIndex);\n isSelected && target.classList.add('fr-highlight-selected');\n });\n\n // no need for event handler init if always shoing explanation\n if (alwaysShowingExplanation || didSubmitAnswer) return;\n\n const handler = event => {\n if (!event.target.classList.contains('fr-highlight')) return;\n\n const choiceLimit = prompt?.match(/.fr-highlight-correct/g)?.length;\n const isCorrect = event.target.classList.contains('fr-highlight-correct');\n const highlightIndexClicked = Array.from(promptRef.current.querySelectorAll('.fr-highlight')).indexOf(event.target);\n setAnswerState(answerState => {\n const answerPreviouslySelected = answerState?.find(([index]) => index == highlightIndexClicked)\n // if unselected, but we're at the choicelimit - don't select\n if (!answerPreviouslySelected && type === 'highlightSelectN' && answerState.length === choiceLimit) {\n return answerState\n }\n\n // toggle selection\n event.target.classList.toggle('fr-highlight-selected');\n\n // if already selected remove from answerState\n if (answerPreviouslySelected) {\n return [...answerState.filter(([index]) => index != highlightIndexClicked)]\n }\n\n return [...(answerState || []), [highlightIndexClicked, isCorrect]]\n })\n };\n\n promptRef.current?.addEventListener('click', handler);\n\n return () => promptRef.current?.removeEventListener('click', handler);\n\n }, [answerState, prompt, promptRef?.current, showingExplanation]);\n\n // fitb handlers\n useEffect(() => {\n if (!['fillInTheBlank'].includes(type)) return;\n\n const fitbInput = promptRef.current.querySelector('[data-fill-in-the-blank=\"\"]');\n\n if (!fitbInput) return;\n\n if (answerState) {\n fitbInput.value = answerState;\n }\n\n if (showingExplanation) {\n fitbInput.disabled = true;\n return;\n }\n const handler = e => {\n setAnswerState(e.target.value);\n }\n fitbInput.addEventListener('change', handler)\n return () => {\n fitbInput.removeEventListener('change', handler)\n }\n }, [prompt, showingExplanation]);\n\n useEffect(() => {\n if (!['fillInTheBlank'].includes(type)) return;\n\n const fitbInput = promptRef.current.querySelector('[data-fill-in-the-blank=\"\"]')\n if (!fitbInput || !showingExplanation) return;\n fitbInput.defaultValue = answerState;\n }, [showingExplanation]);\n\n // matrix handlers\n useEffect(() => {\n if (!['multipleResponseGrouping', 'matrixMultipleChoice', 'matrix'].includes(type)) return;\n\n if (showingExplanation) {\n try {\n const matrix = JSON.parse(answerMatrix[0].contents || '[]');\n displayScoredMatrixUI(promptRef.current, matrix, answerState, type);\n\n } catch (error) {\n console.log('error parsing matrix prompt', error);\n }\n } else {\n\n const handleTableChange = e => {\n try {\n if (e.target.tagName === 'SPAN') {\n if (e.target.previousElementSibling) {\n e.target.previousElementSibling.checked = !e.target.previousElementSibling.checked;\n }\n }\n } catch (e) {\n console.log(e);\n }\n const answeredMatrix = getAnswerMatrix(null, promptRef?.current);\n setAnswerState(answeredMatrix);\n };\n\n const table = promptRef?.current?.getElementsByTagName('table')?.[0];\n\n syncMatrixWithAnswerState(table, answerState);\n\n table?.addEventListener('click', handleTableChange);\n\n return () => table?.removeEventListener('click', handleTableChange);\n }\n }, [prompt, promptRef?.current, showingExplanation]);\n\n // dropdown handlers\n useEffect(() => {\n if (!['dropdown', 'dropdownTable', 'dropdownCloze', 'dropdownRationale'].includes(type) || showingExplanation) return;\n\n //TODO observing a bug wherein when selecting both options in a cloze style dropdown question, then navigating to next question, then navigating back\n // the dropdown first selected will lose it's answer state\n\n const handler = (e, index) => {\n if (!e.target.value) return;\n\n setAnswerState(answerState => {\n const relevantAnswerGroup = JSON.parse(answerGroups[index].contents);\n const relevantAnswer = relevantAnswerGroup.find((answer, answerIndex) => answerIndex === e.target.selectedIndex - 1);\n\n // empty out answer state if there isn't a relevant answer match\n if (!relevantAnswer) {\n answerState[index] = ['', false];\n return answerState;\n }\n\n // set answer state\n answerState[index] = [...relevantAnswer, e.target.selectedIndex];\n\n return answerState;\n });\n }\n\n // add event listeners\n const dropdowns = promptRef.current.querySelectorAll('[data-dropdown=\"\"]') || [];\n\n dropdowns.forEach((dropdown, index) => {\n const selectedIndex = answerState?.[index]?.[2];\n\n // sync prompt html with answer state if necessary\n if (selectedIndex) {\n dropdown.selectedIndex = selectedIndex;\n }\n\n // remove options with undefined value\n Array.from(dropdown?.options)?.forEach(option => {\n if (option.value === \"undefined\" || option.value === \"null\") {\n dropdown.removeChild(option);\n }\n });\n\n dropdown.addEventListener('change', e => handler(e, index))\n });\n\n return () => {\n dropdowns.forEach((dropdown, index) => {\n dropdown.removeEventListener('change', e => handler(e, index))\n })\n }\n }, [prompt, promptRef?.current]);\n\n useEffect(() => {\n if (!['dropdown', 'dropdownTable', 'dropdownCloze', 'dropdownRationale'].includes(type) || !showingExplanation) return;\n\n const dropdowns = promptRef.current.querySelectorAll('[data-dropdown=\"\"]') || [];\n\n if (showingExplanation) {\n displayScoredDropdownUI(promptRef, answerGroups, answerState)\n dropdowns.forEach((dropdown, index) => {\n const dropdownDisplay = document.createElement('div');\n dropdownDisplay.className = 'dropdownCover';\n dropdownDisplay.addEventListener('click', e => renderDropdown(e, answerGroups[index], answerState[index]))\n dropdown.parentNode.appendChild(dropdownDisplay)\n })\n } else {\n setAnswerState(answerGroups?.map(i => ['', false]) || []);\n }\n return () => {\n dropdowns.forEach((dropdown, index) => {\n dropdown.parentNode.removeEventListener('click', e => renderDropdown(e, answerGroups[index], answerState[index]))\n })\n }\n }, [showingExplanation, questionIndex, type]);\n\n function reformatPrompt (prompt) {\n return prompt.replace(/checked=\"true\"/g, '').replace(/disabled/g, '')\n }\n\n return (\n \n \n {questionHeader && (\n \n )}\n \n \n {['hotSpot'].includes(type) &&\n \n }\n {['fillInTheBlank'].includes(type) && showingExplanation && (\n \n )}\n {showAnswerBox &&\n \n }\n {tutorMode && !didSubmitAnswer && !alwaysShowingExplanation && (\n {\n try {\n if (type === 'matrixMultipleChoice') {\n if (answerState.some(answerRow => answerRow.every(el => !el))) {\n return modalDispatch({\n type: 'open',\n modalContainerStyle: theme => `\n background: transparent;\n `,\n component: ({close}) => {\n return (\n \n )\n },\n enableClickClose: false,\n })\n }\n }\n } catch (error) {\n console.log('Error checking MMC state')\n }\n checkOnClick(e)\n }}/>\n )}\n \n );\n}\n\nconst questionViewsByType = {\n multipleChoice: DefaultQuestion,\n multipleResponse: DefaultQuestion,\n multipleResponseSelectN: DefaultQuestion,\n fillInTheBlank: DefaultQuestion,\n hotSpot: DefaultQuestion,\n highlight: DefaultQuestion,\n highlightSelectN: DefaultQuestion,\n matrix: DefaultQuestion,\n matrixMultipleChoice: DefaultQuestion,\n multipleResponseGrouping: DefaultQuestion,\n dropdown: DefaultQuestion,\n dropdownTable: DefaultQuestion,\n dropdownRationale: DefaultQuestion,\n dragAndDropCloze: DragAndDrop,\n dragAndDropSelectN: DragAndDrop,\n dragAndDropSATA: DragAndDrop,\n dragAndDropRationale: DragAndDrop,\n dragAndDropOrderedResponse: DragAndDrop,\n bowtie: Bowtie,\n};\n\nexport const Question = props => {\n const Component = questionViewsByType[props?.type] || DefaultQuestion;\n const showAnswerBox = ['multipleChoice', 'multipleResponse', 'multipleResponseSelectN'].includes(props.type);\n const {variables: {tutorMode}} = useTestNavigatorContext();\n\n return ;\n}","import React, {useState} from 'react';\nimport styled, {css} from 'styled-components';\nimport Highlightable from '../../../Highlightable';\n\n\nconst Container = styled.div`\n display: flex;\n flex: 1;\n flex-direction: column;\n overflow: auto;\n padding-bottom: 72px;\n padding-right: 24px;\n\n ${({theme}) => theme.mediaQueries.laptop} {\n overflow: initial;\n padding-bottom: 0;\n flex: 0;\n }\n`;\nconst Wrapper = styled.div`\n ${({headerPresent}) => !headerPresent && css`\n padding-top: 24px;\n `}\n`;\nconst Header = styled.div`\n padding: ${({theme}) => `${theme.layouts.spacing.l} 0 ${theme.layouts.spacing.m}`};\n\n p {\n margin: 0;\n }\n`;\nconst TabName = styled.div`\n padding: ${({theme}) => theme.layouts.spacing.s} ${({theme}) => theme.layouts.spacing.m};\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.nclex.light};\n border-radius: 8px;\n border-bottom-left-radius: 0px;\n border-bottom-right-radius: 0px;\n border-bottom: none;\n background: ${({active, theme}) => active ? 'none' : '#EEE'};\n margin-right: 4px;\n display: flex;\n align-items: center;\n text-align: center;\n line-height: 1em !important;\n cursor: pointer;\n font-weight: ${({theme}) => theme.font.weight.bold};\n &:hover {\n background: #E0E0E0;\n }\n ${({active}) => active && css`\n box-shadow: 0px 1px 0px 0px white;\n `}\n`;\nconst NameContainer = styled.div`\n display: flex;\n`;\nconst NameWrapper = styled.div`\n display: flex;\n position: relative;\n`;\nconst ContentWrapper = styled.div`\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.nclex.light};\n border-radius: 8px;\n border-top-left-radius: 0px;\n padding: 12px;\n`;\nconst TabContent = styled.div`\n display: ${({active}) => active ? 'flex' : 'none'};\n flex-direction: column;\n * {\n max-width: 100%;\n font-size: 16px !important;\n line-height: 24px;\n font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;\n margin: 0;\n }\n p {\n margin: 0;\n }\n ol, ul {\n margin: 1em 0;\n }\n .sup, .sub, sup, sub {\n font-size: 12px !important;\n }\n .sup {\n vertical-align: sup;\n }\n .sub {\n vertical-align: sub;\n }\n img {\n height: auto;\n }\n .fr-highlight {\n cursor: pointer;\n /* background: ${({theme}) => theme.colors.neutralsPalette.nclex.lightYellow}; */\n &:hover {\n background: #FFFF00;\n opacity: 0.5;\n }\n }\n ${({type}) => type?.match('highlight') && css`\n cursor: not-allowed;\n `}\n .fr-highlight-selected {\n background: ${({theme}) => theme.colors.neutralsPalette.nclex.yellow};\n &:hover {\n background: ${({theme}) => theme.colors.neutralsPalette.nclex.yellow};\n opacity: 1;\n }\n }\n\n .fitb-input {\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.nclex.light};\n background: ${({theme}) => theme.colors.neutralsPalette.nclex.offWhite};\n height: 21px;\n }\n\n {/* this input is targeting our matrix question types */}\n .matrix-input-container {\n display: flex;\n text-align: left;\n align-items: center;\n }\n .matrix-checkbox-input, .matrix-radio-input {\n min-width: 20px;\n height: 20px;\n margin: 0 ${({theme}) => theme.layouts.spacing.s};\n vertical-align: middle;\n }\n .matrix-score-container, .matrixMultipleChoice-score-container {\n position: absolute;\n display: flex;\n left: 28px;\n top: 0;\n bottom: 0;\n align-items: center;\n }\n .score-icon {\n min-width: 14px;\n max-width: 14px;\n }\n\n .score-icon-empty {\n min-width: 14px;\n max-width: 14px;\n }\n\n ${({ answered }) => answered && css`\n .fr-highlight-correct {\n background: yellow;\n &:hover {\n background: yellow;\n }\n }\n .fr-highlight-incorrect {\n background: lightgrey;\n &:hover {\n background: lightgrey;\n }\n }\n `}\n table {\n border-spacing: 0;\n border-collapse: collapse;\n }\n td {\n position: relative !important;\n border: 1px solid #ddd;\n &:first-child {\n text-align: left;\n }\n }\n tr {\n &:first-child {\n background: #e8f2ff !important;\n color: initial !important; */\n }\n\n &:nth-child(even) {\n background: #f2f2f2 !important;\n }\n }\n .hanging-indent-table {\n width: auto !important;\n text-align: left;\n margin-left: initial !important;\n\n tr {\n color: black !important;\n &:first-child {\n background: none !important;\n border: none !important;\n }\n &:nth-child(even) {\n background: none !important;\n border: none !important;\n }\n }\n\n td {\n font-weight: normal !important;\n background: none !important;\n border: none !important;\n vertical-align: top;\n width: auto !important;\n padding: 5px 10px;\n }\n }\n /* .unstyled-table {\n tr {\n color: black !important;\n font-weight: normal !important;\n background: white !important;\n }\n td {\n border: none;\n }\n } */\n\n`;\n\nconst Names = ({ tabs, activeIndex, onClick }) => (\n \n {Object\n .keys(tabs)\n .map((name, index) => (\n \n onClick(index)}>\n {name}\n \n \n ))}\n \n);\nconst Content = ({tabs, activeIndex, setHighlights, highlights, enableHighlighting}) => (\n \n {Object\n .values(tabs)\n .map((content, index) => (\n \n \n \n ))}\n \n);\n\nconst DataTabs = ({tabs, header, setHighlights, highlights, enableHighlighting}) => {\n const [activeIndex, setActiveIndex] = useState(0);\n\n if (!tabs) return null;\n\n return (\n \n {header &&
}\n \n \n \n \n \n );\n};\n\nDataTabs.defaultProps = {};\nDataTabs.propTypes = {};\n\nexport default DataTabs;","import React, {useState, useMemo, useEffect, useRef} from 'react';\nimport ReactDOM from 'react-dom';\nimport styled, {css} from 'styled-components';\nimport {useHotkeys} from 'react-hotkeys-hook';\n\nimport {useTestNavigatorContext} from '../../../contexts/TestNavigator';\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nimport {Column} from '@bootcamp/web/src/components/Grid';\nimport VideoPlayer from '@bootcamp/web/src/components/VideoPlayer';\nimport AdminButtons from '../../QuestionView/components/AdminButtons';\n\nimport {Question} from './components';\nimport {Solution} from './components/shared';\nimport {getScores, getScoringRule, answerDataFormatter, calculateMaxScore} from '@bootcamp/shared/src/util/scoring/NCLEX';\nimport DataTabs from './components/DataTabs';\nimport SolutionMeta from '../../QBank/Question/SolutionMeta';\n\nimport {checkAnswerState} from '@bootcamp/shared/src/util/scoring/NCLEX';\n\n\n\nconst Container = styled(Column)`\n /* transform: translate3d(0,0,0); figure out if we still need this for safari b/c it messes with the drag and drop question types*/\n align-items: flex-start;\n height: 100%:\n\n img {\n display: block;\n margin: 12px 0px;\n }\n\n ${({theme}) => theme.mediaQueries.laptop} {\n overflow: auto;\n }\n`;\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: ${({showClientDataTabs}) => showClientDataTabs ? 'row' : 'column'};\n width: 100%;\n height: 100%;\n padding: ${({showClientDataTabs, theme}) => showClientDataTabs ? `0 0 0 ${theme.layouts.spacing.l}` : '0'};\n\n * {\n font-size: ${({fontScale}) => `${16 + fontScale}px`} !important;\n line-height: ${({fontScale}) => `${24 + fontScale}px`} !important;\n }\n\n ${({theme}) => theme.mediaQueries.laptop} {\n flex-direction: column;\n }\n`;\nconst VerticalLine = styled.div`\n min-width: 1px;\n min-height: ${({theme, visible}) => visible ? '100vh': '1px'};\n background: ${({theme, visible}) => visible ? theme.colors.neutralsPalette.nclex.light : 'white'};\n\n ${({theme}) => theme.mediaQueries.laptop} {\n display: none;\n }\n`;\nconst QuestionAreaWrapper = styled.div`\n display: flex;\n position: relative;\n flex-direction: ${({showClientDataTabs}) => showClientDataTabs ? 'column' : 'row'};\n flex: 1;\n padding: ${({theme, showClientDataTabs}) => showClientDataTabs ? `${theme.layouts.spacing.l} ${theme.layouts.spacing.l} 0 ${theme.layouts.spacing.l}` : 0};\n overflow: ${({showClientDataTabs, showingExplanation}) => showClientDataTabs ? 'auto' : !showClientDataTabs && !showingExplanation ? 'auto' : 'hidden'};\n\n ${({theme}) => theme.mediaQueries.laptop} {\n flex-direction: column;\n overflow: initial;\n padding-left: 0;\n }\n `;\nconst QuestionWrapper = styled.div`\n width: ${({showClientDataTabs, type, showingExplanation}) => showClientDataTabs ? '100%' : type?.match('hotSpot') && !showingExplanation ? '75%' : '50%'};\n padding: ${({theme, showClientDataTabs}) => showClientDataTabs ? 0 : `${theme.layouts.spacing.l}`};\n overflow: ${({showClientDataTabs}) => showClientDataTabs ? 'initial' : 'auto'};\n\n ${({theme}) => theme.mediaQueries.laptop} {\n width: 100%;\n margin: 0;\n overflow: initial;\n }\n`;\nconst SolutionWrapper = styled.div`\n padding: ${({theme, showClientDataTabs}) => !showClientDataTabs ? `${theme.layouts.spacing.l} ${theme.layouts.spacing.l} 0px ${theme.layouts.spacing.l}` : 0};\n width: ${({showClientDataTabs}) => showClientDataTabs ? '100%' : '50%'};\n overflow: ${({showClientDataTabs}) => showClientDataTabs ? 'initial' : 'auto'};\n\n ${({theme}) => theme.mediaQueries.laptop} {\n width: 100%;\n border-left: none;\n overflow: initial;\n }\n`;\nconst StyledSolutionMeta = styled(SolutionMeta)`\n\n > div {\n padding: 12px;\n border-radius: 4px;\n background: rgb(250, 250, 250);\n ${({didNotAnswer, fullCredit, partialCredit, theme}) => css`\n border-left: 5px solid ${didNotAnswer ? theme.colors.neutralsPalette.nclex.dark : fullCredit ? theme.colors.interfacePalette.green.default : partialCredit ? theme.colors.interfacePalette.yellow.default : theme.colors.interfacePalette.red.default};\n `}\n ${({theme}) => theme.mediaQueries.mobileL} {\n padding: 0px 12px;\n }\n }\n * {\n font-size: 14px !important;\n }\n`;\n\nconst StyledAdminButtons = styled(AdminButtons)`\n margin: 12px 0px 0px 12px;\n`;\n\n\nconst QuestionView = ({\n prompt,\n questionHeader,\n answers,\n explanation,\n citations,\n updatedAt,\n lastUpdated,\n tags,\n didSubmitAnswer,\n alwaysShowingExplanation,\n onSelectAnswerIndex,\n didSubmitAnswerIndex,\n showFeedback,\n questionId,\n latestRevisionId,\n enableHighlighting,\n disableVideos,\n setHighlights,\n highlights,\n questionIndex,\n didMark,\n time,\n savedCrossedAnswerIndexes,\n onCrossedAnswerIndexesUpdate,\n viewKey,\n answerGroups,\n answerMatrix,\n type,\n hyperlinks,\n hotSpotImage,\n hotSpotImageSelection,\n hotSpotImageInput,\n dndHeaderLeft,\n dndHeaderRight,\n isCaseQuestion=true,\n clientDataTabs,\n clientDataTabsTypes,\n caseHeader,\n checkOnClick,\n fontScale,\n isDraft\n}) => {\n\n // selectedAnswerState can either be\n // SINGLE ARRAY\n //// [0] (selected answer index 0)\n //// [0,3]\n // MULTIPLE ARRAY\n //// [[0,3], [2]]\n // MATRIX REPRESENTATION\n //// [[true, false], [true, true]]\n const [crossedAnswerIndexes, setCrossedAnswerIndexes] = useState(savedCrossedAnswerIndexes);\n const {\n methods: {\n getAnswerDataForQuestion,\n },\n variables: {\n answerData,\n quizProgress,\n blockIndex\n }\n } = useTestNavigatorContext();\n\n const {questions: blockQuestionProgress} = {questions: [], ...quizProgress[blockIndex]};\n const answerState = blockQuestionProgress?.[questionIndex]?.answerState?.answerState || []; // TODO add question type specific defaults if need be\n\n const score = blockQuestionProgress?.[questionIndex]?.answerState?.score || 0;\n const maxScore = blockQuestionProgress?.[questionIndex]?.answerState?.maxScore || calculateMaxScore(prompt, type, answers, answerGroups, answerMatrix);\n\n const solutionRef = useRef();\n const showingExplanation = didSubmitAnswer || alwaysShowingExplanation;\n const didNotAnswer = !checkAnswerState(answerState);\n\n const filteredAnswers = answers?.filter(value => Array.isArray(value) && value.length >= 2);\n const clientDataTabMap = useMemo(() => (\n clientDataTabsTypes\n ?.filter(type => !!type)\n ?.reduce((acc, curr, index) => ({...acc, [curr]: clientDataTabs[index]}), {})\n ), [clientDataTabs, clientDataTabsTypes]);\n const showClientDataTabs = !!clientDataTabsTypes?.length;\n\n const questionAnswerData = answerData?.[questionId];\n\n const {searchUserInteractions} = useUserDataContext();\n\n const hideAnswerData = searchUserInteractions('hideAnswerData') === true;\n\n useHotkeys('c, s', checkOnClick, [checkOnClick]);\n function updateCrossedAnswerIndexes(index) {\n if (showingExplanation) return;\n\n const indexes = crossedAnswerIndexes.indexOf(index) > -1\n ? crossedAnswerIndexes.filter(i => i !== index)\n : [...crossedAnswerIndexes, index];\n onCrossedAnswerIndexesUpdate(indexes);\n setCrossedAnswerIndexes(indexes);\n }\n\n function setAnswerState(props) {\n const updatedState = typeof props === 'function' ? props(answerState || []) : props;\n const {score, maxScore} = getScores(prompt, type, updatedState, answers, answerGroups, hotSpotImageSelection, answerMatrix);\n onSelectAnswerIndex({answerState: updatedState, score, maxScore, type});\n }\n\n useEffect(() => {\n // load answer data for question if need be\n getAnswerDataForQuestion(questionId, latestRevisionId, progresses => answerDataFormatter(type, progresses));\n\n }, [questionId, didSubmitAnswerIndex]);\n\n useEffect(() => {\n if (!disableVideos && solutionRef.current && showingExplanation) {\n const vimeoNodes = solutionRef.current.querySelectorAll(':not(del) > .video-thumb');\n\n const vimeoIds = new Set([...vimeoNodes].map(node => node.dataset.vimeoId));\n\n [...vimeoIds].forEach(async vimeoId => {\n try {\n vimeoNodes.forEach((node, index) => {\n if (node.dataset.vimeoId === vimeoId) {\n const videoContainer = document.createElement('div');\n videoContainer.className = \"videoContainer\";\n videoContainer.style.marginBottom = '1em';\n if (node.classList.contains('video-lock')) {\n node.insertAdjacentElement('afterEnd', videoContainer);\n } else {\n if (node.parentNode && node.parentNode.children.length === 1 && node.parentNode.children[0].classList.contains('video-thumb') && node.parentNode !== solutionRef.current) {\n node.parentNode.remove();\n } else {\n node.remove();\n }\n\n if (solutionRef.current) solutionRef.current.insertAdjacentElement('afterBegin', videoContainer);\n }\n const videoPlayer = ;\n ReactDOM.render(videoPlayer, videoContainer);\n }\n })\n } catch (e) {\n console.log(e);\n }\n })\n const gifs = solutionRef.current.querySelectorAll('.rubgif');\n\n [...gifs].forEach(gif => {\n gif.style.display = 'none';\n const gifPlayer = document.createElement('gif-player');\n const gifSrc = gif.getAttribute('src');\n gifPlayer.setAttribute('src', gifSrc + '?version=gifplayer');\n gifPlayer.setAttribute('speed', '1');\n gifPlayer.setAttribute('play', true);\n gif.insertAdjacentElement('afterend', gifPlayer);\n });\n }\n return () => {\n if (solutionRef.current) {\n solutionRef.current.querySelectorAll('.videoContainer').forEach(node => node.remove());\n }\n }\n }, [explanation, showingExplanation]);\n\n const solutionMeta = (\n 0}\n didNotAnswer={didNotAnswer}\n didMark={didMark}\n loadingAnswerData={!answerData}\n hideTimeSpent={false}\n time={time}\n avgScore={maxScore > 1 && questionAnswerData?.hasOwnProperty('avgScore') ? `${parseFloat(questionAnswerData?.avgScore)?.toFixed(1)} / ${maxScore}` : null}\n correctPercentageText={(maxScore === 1) && (questionAnswerData?.hasOwnProperty('percentage') || questionAnswerData?.hasOwnProperty('avgScore')) ? `${((questionAnswerData?.percentage || questionAnswerData?.avgScore) * 100)?.toFixed(1)}%` : null}\n score={`${score} / ${maxScore}`}\n fullCredit={parseInt(score) === parseInt(maxScore)}\n partialCredit={(parseInt(score) !== parseInt(maxScore)) && score !== 0}\n scoringRule={getScoringRule(type)}\n hideCorrectAnswer\n hideResult\n hideAnswerData={hideAnswerData}\n // lastUpdated={lastUpdated}\n />\n );\n\n return (\n \n \n \n {showClientDataTabs &&\n <>\n \n \n \n }\n \n \n \n {!showClientDataTabs && showingExplanation && solutionMeta}\n \n {}\n \n {showingExplanation &&\n <>\n {showClientDataTabs && solutionMeta}\n \n\n \n }\n \n \n \n \n )\n}\n\nQuestionView.defaultProps = {\n prompt: '',\n answers: [],\n explanation: '',\n updatedAt: '',\n onSelectAnswerIndex: () => true,\n alwaysShowingExplanation: false,\n didSubmitAnswerIndex: [],\n showFeedback: false,\n questionId: '',\n tags: [],\n enableHighlighting: false,\n setHighlights: () => { },\n highlights: null, // this should be a serialized highlight string,\n didMark: false,\n time: \"\",\n savedCrossedAnswerIndexes: [],\n onCrossedAnswerIndexesUpdate: () => true\n}\n\nexport default QuestionView;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport {insertAtIndex} from '@bootcamp/shared/src/util';\nimport {useTestNavigatorContext} from '@bootcamp/web/src/contexts/TestNavigator';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {useTimerContext} from '@bootcamp/web/src/contexts/TestTimer';\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\n\nimport {Box, BoxSection, IconButton} from './shared';\nimport TICalculator from '@bootcamp/web/src/components/Exhibit/TICalculator';\n\nimport {updateQuestionProgress as updateQbQuestionProgress} from '@bootcamp/shared/src/requests';\n\nimport {useHotkeys} from 'react-hotkeys-hook';\nimport {\n FlagIcon,\n ClockIcon,\n SettingsIcon,\n QuestionIcon,\n CalculatorIcon,\n} from './shared';\n\n\nconst Container = styled(Box)`\n padding: 12px;\n height: 42px;\n`\nconst LeftSection = ({}) => {\n const {\n variables: {\n blockIndex,\n quizProgress,\n customTestConfig,\n tutorMode\n }\n } = useTestNavigatorContext();\n\n const {questions: questionProgresses} = quizProgress[blockIndex];\n const questionIndex = questionProgresses.findIndex(({current}) => current);\n const timed = customTestConfig?.config?.timed;\n\n return (\n \n NCLEX-RN Test{customTestConfig?.config && ` (${tutorMode ? 'Tutored' : 'Untutored'}, ${timed ? 'Timed' : 'Untimed'})`}\n \n )\n}\n\nconst DesktopOnlyText = styled.span`\n white-space: pre;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n display: none;\n }\n`;\n\nconst CenterSection = () => {\n return (\n \n Bootcamp.com\n \n )\n}\n\nconst HoverHighlight = styled.div`\n display: flex;\n align-items: center;\n white-space: nowrap;\n\n &:hover {\n color: #FFFF00;\n path {\n fill: #FFFF00;\n }\n rect {\n stroke: #FFFF00;\n }\n }\n`\nconst RightSection = ({setShowingExhibit}) => {\n const {timeElapsed, longTimeLeft} = useTimerContext();\n const {\n variables: {\n blockIndex,\n quizProgress,\n testBlockConnections,\n customTestConfig,\n type,\n template\n }\n } = useTestNavigatorContext();\n const {searchUserInteractions, saveUserInteraction} = useUserDataContext();\n const hideTimer = searchUserInteractions('hideTimer') === true || (customTestConfig && customTestConfig?.submitted);\n const hideQuestionIndex = searchUserInteractions('hideQuestionIndex') === true;\n\n const {questions: questionProgresses} = quizProgress[blockIndex];\n const questionIndex = questionProgresses.findIndex(({current}) => current);\n\n const timed = customTestConfig?.config?.timed || type === 'readinessExam';\n\n const totalQuestions = testBlockConnections.reduce((prev, curr) => {\n const total = curr?.testBlock?.questionConnections?.items?.filter(({question}) => (template === 'customTest' || question?.status !== 'draft'))?.length;\n return prev + (total || 0);\n }, 0)\n\n const globalQuestionIndex = quizProgress.slice(0, blockIndex).reduce((questionCount, blockProgress) => {\n if (!blockProgress.questions) return questionCount;\n return questionCount + blockProgress.questions.length;\n }, 0) + questionIndex + 1;\n\n return (\n \n saveUserInteraction('hideTimer', !hideTimer)}>\n {!hideTimer &&
{timed ? longTimeLeft : timeElapsed}
}\n
\n saveUserInteraction('hideQuestionIndex', !hideQuestionIndex)}>\n {!hideQuestionIndex && <>Question {globalQuestionIndex} of {totalQuestions}}\n \n
\n )\n}\nconst CenteredRow = styled.div`\n display: flex;\n align-items: center;\n`;\nconst Button = styled(CenteredRow)`\n cursor: pointer;\n user-select: none;\n &:hover {\n color: #FFFF00;\n\n path {\n stroke: #FFFF00;\n }\n\n rect {\n stroke: #FFFF00;\n }\n }\n`;\nconst SettingsButton = styled(Button)`\n margin-right: 8px;\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-right: 0px;\n }\n`\nconst ButtonText = styled(CenteredRow)`\n ${({theme}) => theme.mediaQueries.tablet} {\n display: none;\n }\n`;\nconst Subcontainer = styled.div`\n background: #80AEE1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 4px 12px;\n color: white;\n`;\nconst UnderlineSpan = styled.span`\n text-decoration: underline;\n`\n\nconst TopBar = ({themePalette, setShowingExhibit, toggleSidebar}) => {\n const {modalDispatch} = useModalContext();\n\n const launchCalculator = () => modalDispatch({\n type: 'open',\n component: ({close}) => ,\n enableClickClose: true,\n modalContainerStyle: theme => `\n background: transparent;\n `\n })\n useHotkeys('o', launchCalculator, [launchCalculator]);\n const {\n methods: {\n markQuestion,\n },\n variables: {\n blockIndex,\n quizProgress,\n type\n }\n } = useTestNavigatorContext();\n const {questions: questionProgresses} = quizProgress[blockIndex];\n const questionIndex = questionProgresses.findIndex(({current}) => current);\n\n const isReadinessExam = type === 'readinessExam';\n const urlParams = new URLSearchParams(window.location.search);\n const isReview = urlParams.get('review');\n\n const didMark = questionProgresses[questionIndex]?.didMark || questionProgresses[questionIndex]?.bookmarked;\n\n useHotkeys('k', markQuestion, [markQuestion]);\n\n return (\n <>\n \n \n \n \n \n \n \n \n {/* \n \n {`scale: ${fontScale}`} */}\n {((isReadinessExam && isReview) || !isReadinessExam) &&\n \n\n \n \n Settings\n \n \n }\n \n \n \n \n )\n}\n\nexport default TopBar;\n","import React, {useState, useEffect, useRef} from 'react';\nimport ReactDOM from 'react-dom';\nimport styled, {css} from 'styled-components';\nimport {useHistory} from 'react-router-dom';\nimport Storage from '@aws-amplify/storage';\nimport {useHotkeys} from 'react-hotkeys-hook';\n\nimport {updateQuestionProgress as updateQbQuestionProgress, trackNCLEXQuizProgressPerformance} from '@bootcamp/shared/src/requests';\n\nimport {useReloadBlockerContext} from '@bootcamp/web/src/contexts/ReloadBlocker';\nimport {useTestNavigatorContext} from '@bootcamp/web/src/contexts/TestNavigator';\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\nimport {useTimerContext} from '@bootcamp/web/src/contexts/TestTimer';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {insertAtIndex, getTestBlockQuestions, getQuestionParts} from '@bootcamp/shared/src/util';\nimport {LoadingSpinner} from '@bootcamp/web/src/components/Branding';\nimport {Box, Button, HoverButton} from './shared';\n\nimport {normalizeHighlights} from '../../helpers';\n\nimport MasteryIcon from '../../bootcamps/components/MasteryIcon';\nimport {Tag} from '@styled-icons/fluentui-system-filled/Tag';\nimport {Tooltip} from '@bootcamp/web/src/components/Tooltip';\nimport {ReactComponent as PauseSVG} from './assets/Pause.svg';\n\nimport {SubmitAnatomyCase as SubmitModal} from '../Modal';\nimport {DraggablePopup} from '@bootcamp/web/src/components/Modal/components/DraggablePopup';\n\n\nimport {\n EndIcon,\n NavigatorIcon,\n LeftArrowIcon,\n RightArrowIcon,\n FlagIcon\n} from './shared'\n\nconst Container = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n flex-direction: column;\n }\n`;\n\nconst ButtonAreaWrapper = styled.div`\n background: #006DAA;\n display: flex;\n justify-content: space-between;\n flex: 1;\n align-self: stretch;\n height: 40px;\n`;\n\nconst TagIcon = styled(Tag).attrs(props => ({size: 22}))`\n stroke-width: 3;\n margin-right: 4px;\n color: white;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-right: 0px;\n }\n`;\n\nconst ButtonText = styled.span`\n ${({theme, hideLaptop}) => hideLaptop ? theme.mediaQueries.laptop : theme.mediaQueries.tablet} {\n display: none;\n }\n`;\nconst ButtonContainer = styled.div`\n display: flex;\n align-items: center;\n`;\nconst PrometricSpinner = ({close}) => {\n useEffect(() => {\n setTimeout(close, 250)\n }, []);\n return (\n
\n \n
\n )\n}\nconst UnderlineSpan = styled.span`\n text-decoration: underline;\n`\nconst MasteryTag = styled(MasteryIcon)`\n display: ${({level}) => !!level ? 'inline-block' : 'none'};\n max-width: 20px;\n height: 20px;\n`;\nconst MasteryButton = ({label, onClick, color, hotkey}) => {\n useHotkeys(hotkey, onClick, [onClick]);\n\n return (\n \n )\n};\nconst MasteryButtonWrapper = styled.div`\n display: flex;\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n display: none;\n\n ${Button} {\n display: none;\n }\n }\n`;\nconst MobileHoverButton = styled(HoverButton)`\n display: none;\n ${({theme}) => theme.mediaQueries.mobileL} {\n display: flex;\n height: 100%;\n padding: 0px 11px;\n }\n`;\nconst MobileTagIcon = styled(Tag).attrs(props => ({size: 20, draggable: false}))`\n stroke-width: 3;\n color: ${({active}) => active ? '#FFFF00' : 'white'};\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n margin-right: 0px;\n }\n`;\nconst MasteryButtonWrapperMobile = styled(MasteryButtonWrapper)`\n display: none;\n\n ${Button} {\n display: none;\n }\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n display: flex;\n align-self: stretch;\n height: 40px;\n\n ${Button} {\n display: flex;\n flex: 1;\n justify-content: center;\n\n &:first-child {\n border-left: none;\n }\n }\n }\n`;\nconst PauseIcon = styled(PauseSVG)`\n margin-right: 4px;\n`;\nconst PauseButton = styled(HoverButton)`\n &:hover {\n color: #FFFF00;\n path {\n fill: #FFFF00;\n stroke: #FFFF00;\n }\n rect {\n stroke: #FFFF00;\n }\n }\n`;\nconst displaySpinner = () => {\n const spinnerContainer = document.createElement('div');\n spinnerContainer.id = 'prometric-spinner-container';\n document.body.appendChild(spinnerContainer);\n\n const closeSpinner = () => {\n document.body.removeChild(spinnerContainer);\n };\n\n ReactDOM.render(, spinnerContainer);\n}\nconst Controls = ({themePalette, alwaysShowingExplanation, toggleSidebar, className, navigatorComponent}) => {\n const [showingMasteryControls, setShowingMasteryControls] = useState(false);\n const {timeLeft, toggleTimer, timeUp, questionStartTime} = useTimerContext();\n const startTime = useRef(new Date());\n\n const {\n methods: {\n transitionBlock,\n setCurrentIndex,\n updateQuizProgress,\n saveQuestionProgresses,\n autoTagOnSubmit,\n saveAndTrackProgress,\n },\n variables: {\n blockIndex,\n quizProgress,\n navigationFilter,\n testBlockConnections,\n test,\n customTestConfig,\n template,\n tutorMode,\n type,\n testProgressId,\n }\n } = useTestNavigatorContext();\n\n const {modalDispatch} = useModalContext();\n const {push, goBack, action, replace} = useHistory();\n const {toggleReloadBlocker} = useReloadBlockerContext();\n const {searchUserInteractions, DEFAULT_USER_ID, bootcamp} = useUserDataContext();\n\n const hideTimer = searchUserInteractions('hideTimer') === true;\n const prometricDelay = searchUserInteractions('prometricDelay') === true;\n const isReadinessExam = type === 'readinessExam';\n\n\n const urlParams = new URLSearchParams(window.location.search);\n const isReview = urlParams.get('review');\n const urlTestProgressId = urlParams.get('testProgressId');\n\n const canGoBack = action !== 'POP';\n const urlParts = window.location.pathname.split('/');\n const testRoute = urlParts.slice(-1)[0];\n const previousPath = urlParts\n .slice(0,2)\n .join('/');\n\n\n const handleGoBack = () => {\n if (urlParts[2] === 'custom-test') {\n push(`${previousPath}/previous-tests/review?key=${encodeURIComponent(test.config.testStorageKey)}`);\n } else if (canGoBack) {\n goBack();\n } else {\n push(previousPath);\n }\n };\n\n const {questions: questionProgresses} = quizProgress[blockIndex] || {questions: []};\n const questionIndex = questionProgresses.findIndex(({current}) => current);\n const testBlock = testBlockConnections?.[blockIndex]?.testBlock;\n const questions = getTestBlockQuestions(testBlock, template === 'customTest');\n const currentQuestion = questions[questionIndex];\n const filterActive = navigationFilter && navigationFilter.key;\n const nextFilteredIndex = questionProgresses.findIndex((progressObject, index) => {\n if (navigationFilter.key === 'search') {\n const {prompt, answers, explanation, questionHeader} = getQuestionParts(progressObject.question);\n const search = [prompt, answers, explanation, questionHeader].join(' ').toLowerCase();\n return search.includes(navigationFilter.value.toLowerCase()) && index > questionIndex;\n }\n\n return progressObject[navigationFilter.key] === navigationFilter.value && index > questionIndex\n });\n\n const nextBlocksMatchFilter = quizProgress.slice(blockIndex + 1).map(({questions}) => questions || []).flat().findIndex((progressObject) => {\n if (navigationFilter.key === 'search') {\n const {prompt, answers, explanation, questionHeader} = getQuestionParts(progressObject.question);\n const search = [prompt, answers, explanation, questionHeader].join(' ').toLowerCase();\n return search.includes(navigationFilter.value.toLowerCase());\n }\n\n return progressObject[navigationFilter.key] === navigationFilter.value\n }) !== -1;\n\n\n const setQuestionIndex = index => {\n // TODO maybe move this logic into the test navigator...\n const blockTransition = index < 0\n ? 'previous'\n : index === questions.length\n ? 'next'\n : null;\n\n if (!blockTransition) {\n return setCurrentIndex(blockIndex, index);\n }\n\n transitionBlock(blockTransition);\n };\n\n // update qp locally\n const updateQuestionProgress = params => {\n const updatedQuestionProgress = {...questionProgresses[questionIndex], ...params};\n updateQuizProgress({\n questions: insertAtIndex(\n questionProgresses,\n questionIndex,\n updatedQuestionProgress\n )\n });\n return updatedQuestionProgress;\n };\n\n const udpateQuestionTime = () => {\n\n const timeElapsed = new Date(new Date() - startTime.current);\n const time = (parseFloat(questionProgresses[questionIndex].time) + (timeElapsed.getTime() / 1000)).toFixed(2);\n\n startTime.current = new Date();\n\n updateQuestionProgress({time});\n };\n // udpate qp in backend\n const updateQuestionProgressData = async () => {\n if (customTestConfig?.submitted || questionProgresses?.[questionIndex]?.didCheck) {\n startTime.current = new Date();\n return;\n };\n const timeElapsed = new Date(new Date() - startTime.current);\n const time = (parseFloat(questionProgresses[questionIndex].time) + (timeElapsed.getTime() / 1000)).toFixed(2);\n\n startTime.current = new Date();\n\n const {\n blockArrayIndex,\n questionProgressId,\n questionBaseId,\n questionRevisionId,\n current,\n crossedAnswerIndexes,\n bookmarked,\n originalTestId,\n questionIndex: currentQuestionIndex,\n subject,\n topic,\n subjectTopic,\n question,\n isSequentialStart,\n isSequentialEnd,\n isSequentialSet,\n answerState,\n seen,\n fullCredit,\n partialCredit,\n noCredit,\n highlights, // not saving these for now b/c there's an issue with restoration from the new object format they're being saved in\n ...questionProgress\n } = updateQuestionProgress({time});\n\n const stringifiedAnswerState = JSON.stringify(answerState || '');\n const stringifiedHighlights = JSON.stringify(normalizeHighlights(highlights) || '');\n\n const updatedProgress = await updateQbQuestionProgress(questionProgressId, {...questionProgress, answerState: stringifiedAnswerState, highlights: stringifiedHighlights});\n\n return updatedProgress;\n }\n\n const handleNextQuestion = () => {\n prometricDelay && displaySpinner();\n if (navigationFilter.key && navigationFilter.value !== 'all') {\n const nextIndex = questionProgresses.findIndex((progressObject, index) => {\n if (navigationFilter.key === 'search') {\n const {prompt, answers, explanation, questionHeader} = getQuestionParts(progressObject.question);\n const search = [prompt, answers, explanation, questionHeader].join(' ').toLowerCase();\n return search.includes(navigationFilter.value.toLowerCase()) && index > questionIndex;\n }\n\n return progressObject[navigationFilter.key] === navigationFilter.value && index > questionIndex\n });\n\n if (nextIndex !== -1) {\n setQuestionIndex(nextIndex)\n } else {\n transitionBlock('nextFilterActive');\n }\n } else {\n const nextIndex = questionIndex + 1;\n setQuestionIndex(nextIndex);\n }\n }\n const handlePreviousQuestion = () => {\n prometricDelay && displaySpinner();\n if (blockIndex === 1 && questionIndex === 0) return;\n\n if (navigationFilter.key) {\n const prevIndex = (questions.length - 1) - questionProgresses.slice().reverse().findIndex((progressObject, index) => {\n if (navigationFilter.key === 'search') {\n const {prompt, answers, explanation, questionHeader} = getQuestionParts(progressObject.question);\n const search = [prompt, answers, explanation, questionHeader].join(' ').toLowerCase();\n return search.includes(navigationFilter.value.toLowerCase()) && index > ((questions.length - 1) - questionIndex);\n }\n\n return progressObject[navigationFilter.key] === navigationFilter.value && index > ((questions.length - 1) - questionIndex)\n });\n if (prevIndex !== -1 && prevIndex !== questions.length) {\n setQuestionIndex(prevIndex);\n } else {\n setQuestionIndex(-1);\n }\n } else {\n const prevIndex = questionIndex - 1;\n setQuestionIndex(prevIndex);\n }\n }\n const handleNavigation = (direction) => {\n // navigation handle wrapper for syncing question progress state\n const handler = direction === 'previous' ? handlePreviousQuestion : handleNextQuestion;\n\n if (isReadinessExam && !isReview) {\n udpateQuestionTime();\n }\n\n // only update question progresses for custom tests for now\n if (template === 'customTest') {\n updateQuestionProgressData();\n }\n\n handler();\n }\n\n const ultimateQuestionReached = questionIndex === questions.length - 1 && blockIndex === testBlockConnections.length - 2;\n\n useEffect(() => {\n if (timeUp) {\n\n if (isReadinessExam && !isReview) {\n udpateQuestionTime();\n }\n\n const alertText = isReadinessExam\n ? \"You have no more time remaining. You can review your test results from the readiness exam review page.\"\n : \"You have no more time remaining. You can review your test results from the previous tests page.\" ;\n\n modalDispatch({\n type: 'open',\n modalContainerStyle: theme => `\n background: transparent;\n `,\n component: ({close}) => {\n return (\n {\n if (type === 'readinessExam') {\n\n if (!isReview) {\n udpateQuestionTime();\n // make sure current question state is saved\n await saveAndTrackProgress();\n // auto tag questions\n await autoTagOnSubmit();\n }\n\n toggleReloadBlocker(false);\n setTimeout(() => replace(`/${bootcamp}/next-gen-readiness-exams/review?id=${test.id}&testProgressId=${encodeURIComponent(testProgressId || urlTestProgressId)}&testRoute=nclex/next-gen-readiness-exams/qbanks/${testRoute}`), 100);\n return;\n }\n\n const testStorageKey = customTestConfig?.config?.testStorageKey;\n\n try {\n // update custom test config to indicate suspension\n const updatedConfig = {\n ...customTestConfig,\n suspended: false,\n timeLeft: null,\n submitted: true,\n };\n\n await Storage.put(testStorageKey, JSON.stringify(updatedConfig), {contentType: 'application/json' });\n\n } catch (error) {\n console.log('error marking test as submitted', error);\n }\n\n if (customTestConfig?.config && !customTestConfig.submitted) {\n // only track performance if not in tutor mode\n if (!tutorMode) {\n await trackNCLEXQuizProgressPerformance(DEFAULT_USER_ID, quizProgress, `${DEFAULT_USER_ID}#${bootcamp}_Performance`);\n }\n\n if (questionProgresses?.[questionIndex] && !questionProgresses?.[questionIndex]?.didCheck) {\n await updateQuestionProgressData();\n }\n\n // auto tag in all custom tests\n await autoTagOnSubmit();\n }\n\n toggleReloadBlocker(false);\n setTimeout(handleGoBack, 100);\n }\n }}\n cancelConfig={{}}\n />\n )\n },\n enableClickClose: false,\n })\n };\n }, [timeUp]);\n\n const finishedOnClick = () => {\n\n if (isReadinessExam && !isReview) {\n toggleTimer(false);\n udpateQuestionTime();\n }\n\n const hasUnansweredQuestions = quizProgress\n .some(({questions}) => questions?.some(({answerState}) => !answerState?.answerState))\n\n const {headerText, bodyText, confirmText, cancelText} = type === 'readinessExam' && !isReview\n ? {\n headerText: 'Would you like to submit your exam?',\n bodyText: hasUnansweredQuestions ? \"You've left some questions unanswered. Submit your exam anyway? You'll be able to review your exam results on the next page.\" : \"You'll be able to review your exam results on the next page.\",\n confirmText: 'Submit Exam',\n cancelText: 'Return to Exam'\n }\n : (customTestConfig?.submitted || !customTestConfig || isReview)\n ? {\n headerText: 'Would you like to end your review?',\n bodyText: 'You’ll be able to resume your review whenever you’re ready. Your tagged questions are automatically saved.',\n confirmText: 'End Review',\n cancelText: 'Return to Review'\n } : {\n headerText: 'End Test',\n bodyText: 'Do you want to end this test? Once ended you can review your test results from the previous tests page.',\n confirmText: 'End Test',\n cancelText: 'Return to Test'\n }\n modalDispatch({\n type: 'open',\n modalContainerStyle: theme => `\n background: transparent;\n `,\n component: ({close}) => {\n return (\n {\n close();\n\n if (isReadinessExam) {\n toggleTimer(true);\n return;\n }\n\n // filterActive ? transitionBlock('firstFilterActive') : transitionBlock('firstQuestionSet');\n },\n }}\n confirmConfig={{\n text: confirmText,\n onConfirm: async () => {\n if (type === 'readinessExam') {\n\n if (!isReview) {\n // make sure current question state is saved\n await saveAndTrackProgress();\n // auto tag questions\n await autoTagOnSubmit();\n }\n\n toggleReloadBlocker(false);\n setTimeout(() => replace(`/${bootcamp}/next-gen-readiness-exams/review?id=${test.id}&testProgressId=${encodeURIComponent(testProgressId || urlTestProgressId)}&testRoute=nclex/next-gen-readiness-exams/qbanks/${testRoute}`), 100);\n return;\n }\n\n const testStorageKey = customTestConfig?.config?.testStorageKey;\n\n try {\n // update custom test config to indicate suspension\n const updatedConfig = {\n ...customTestConfig,\n suspended: false,\n timeLeft: null,\n submitted: true,\n };\n\n await Storage.put(testStorageKey, JSON.stringify(updatedConfig), { contentType: 'application/json' });\n\n } catch (error) {\n console.log('error marking test as submitted', error);\n }\n\n if (template === 'customTest') {\n await updateQuestionProgressData();\n }\n\n if (customTestConfig?.config && !customTestConfig.submitted) {\n // only track performance if not in tutor mode\n if (!tutorMode) {\n await trackNCLEXQuizProgressPerformance(DEFAULT_USER_ID, quizProgress, `${DEFAULT_USER_ID}#${bootcamp}_Performance`);\n }\n // auto tag in all custom tests\n await autoTagOnSubmit();\n }\n\n toggleReloadBlocker(false);\n setTimeout(handleGoBack, 100);\n }\n }}\n />\n )\n },\n enableClickClose: true,\n })\n };\n\n const handleSuspendClick = () => {\n // save question state here too\n modalDispatch({\n type: 'open',\n modalContainerStyle: theme => `\n background: transparent;\n `,\n component: ({close}) => {\n return (\n {\n const testStorageKey = customTestConfig?.config?.testStorageKey;\n const updatedConfig = {\n ...customTestConfig,\n suspended: true,\n timeLeft: timeLeft?.length <= 5 ? `00:${timeLeft}` : timeLeft,\n questionIndex\n };\n\n await Storage.put(testStorageKey, JSON.stringify(updatedConfig), { contentType: 'application/json' });\n await updateQuestionProgressData();\n\n toggleReloadBlocker(false);\n setTimeout(() => push(`/nclex/previous-tests`), 100);\n }\n }}\n />\n )\n },\n enableClickClose: true,\n })\n };\n\n useEffect(() => {\n if (questionProgresses[questionIndex]?.didCheck) {\n toggleTimer(false);\n } else {\n toggleTimer(true);\n }\n }, [questionIndex]);\n\n useHotkeys('left, p', () => handleNavigation('previous'), [handleNavigation]);\n useHotkeys('right, n', (ultimateQuestionReached || (filterActive && nextFilteredIndex === -1 && !nextBlocksMatchFilter)) ? finishedOnClick : () => handleNavigation('next'), [handleNavigation]);\n\n const updateMastery = (masteryLevel) => {\n const updatedQuestionProgress = updateQuestionProgress({masteryLevel, question: {...currentQuestion, masteryLevel}});\n saveQuestionProgresses([updatedQuestionProgress]);\n }\n\n const onClickMasteryButton = (masteryLevel) => {\n updateMastery(masteryLevel);\n (ultimateQuestionReached || (filterActive && nextFilteredIndex === -1 && !nextBlocksMatchFilter)) ? finishedOnClick() : handleNextQuestion();\n }\n\n function validateAnswerState(answerState, question) {\n try {\n if (question) {\n const {type} = getQuestionParts(question);\n\n if (type === 'matrixMultipleChoice') {\n return !!answerState?.answerState?.every(answerRow => answerRow.some(el => !!el))\n\n } else if (type === 'bowtie') {\n return true;\n }\n }\n return answerState?.answerState;\n } catch (error) {\n return false;\n }\n }\n\n const showNavigator = () => {\n if ((customTestConfig && !tutorMode && !customTestConfig?.submitted) || (isReadinessExam && !isReview)) {\n\n return modalDispatch({\n type: 'open',\n component: navigatorComponent\n ? ({close}) => navigatorComponent({quizProgress, isReadinessExam, updateQuestionProgressData, setCurrentIndex, close, alwaysShowingExplanation})\n : ({ close }) => {\n const questionRows = quizProgress.reduce((acc, { questions, isSequentialSet }, blockIndex) => [...acc, ...(questions || []).map((question, index) => (\n {\n !isReadinessExam && updateQuestionProgressData();\n setCurrentIndex(blockIndex, index);\n close();\n }} even={index % 2 === 0}>\n \n {acc.length + index + 1} {question.didMark || question.bookmarked ? : null}\n \n \n {(question.didCheck || alwaysShowingExplanation || validateAnswerState(question?.answerState, question?.question)) ? 'Complete' : question.seen ? 'Incomplete' : 'Unseen'}\n \n {isReadinessExam || !tutorMode ? null : \n \n }\n \n ))], [])\n return (\n \n Navigate\n
\n }\n footerContent={\n
\n {questionRows.length} Questions, {alwaysShowingExplanation ? 0 : quizProgress.reduce((acc, {questions}) => [...acc, ...(questions || [])], [])?.filter(({seen}) => !seen)?.length} Unseen\n
\n }\n >\n \n Question #\n Status\n {isReadinessExam || !tutorMode ? null : Tag}\n \n \n {questionRows}\n \n \n )\n },\n enableClickClose: true,\n componentProps: {},\n modalContainerStyle: theme => `\n background: transparent;\n `\n })\n }\n return toggleSidebar();\n }\n\n useHotkeys('v', showNavigator, [showNavigator]);\n\n return (\n \n {((questionProgresses?.[questionIndex]?.didCheck && tutorMode) || alwaysShowingExplanation) && showingMasteryControls &&\n <>\n \n \n onClickMasteryButton('learning')} />\n onClickMasteryButton('reviewing')} />\n onClickMasteryButton('mastered')} />\n \n \n }\n \n \n End\n {!customTestConfig?.submitted && customTestConfig?.config && Pause}\n \n \n {((questionProgresses?.[questionIndex]?.didCheck && tutorMode) || alwaysShowingExplanation) ? [\n ,\n \n onClickMasteryButton('learning')} />\n onClickMasteryButton('reviewing')} />\n onClickMasteryButton('mastered')} />\n ,\n setShowingMasteryControls(!showingMasteryControls)}>,\n handleNavigation('previous')}>\n Previous\n ,\n \n Navigate\n ,\n handleNavigation('next')}>\n Next\n ,\n ] : [\n handleNavigation('previous')}>\n Previous\n ,\n \n Navigate\n ,\n handleNavigation('next')}>\n Next\n \n ]}\n \n \n \n )\n}\n\nconst NavigatorTableHeader = styled.div`\n display: flex;\n align-content: center;\n /* nclex/ui-light-blue */\n\n background: #80AEE1;\n /* nclex/ui-dark-blue */\n\n border-bottom: 0.5px solid #006DAA;\n`;\n\nconst NavigatorTableHeaderCell = styled.div`\n width: 50%;\n padding: 12px 16px;\n color: white;\n`;\nconst NavigatorTable = styled.div`\n height: 100%;\n overflow-y: scroll;\n`;\nconst NavigatorTableRow = styled.div`\n display: flex;\n background: ${({even, current}) => current ? '#FFFF67' : even ? 'white' : '#EEEEEE'};\n &:hover {\n cursor: pointer;\n background: #FFFF67;\n }\n ${({isSequentialSet}) => isSequentialSet && css`\n border-left: 5px solid #3385ff;\n `}\n`;\n\nconst NavigatorTableRowCell = styled.div`\n width: 50%;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n color: ${({isRed}) => !isRed ? '#404040' : '#E05E57'};\n`;\n\nexport default Controls;\n","import React, {useEffect, useState} from 'react';\nimport styled from 'styled-components';\n\nimport {useUserDataContext} from '../../contexts/UserData';\nimport {useTestNavigatorContext} from '../../contexts/TestNavigator';\nimport {TimerProvider} from '../../contexts/TestTimer';\nimport {useReloadBlockerContext} from '../../contexts/ReloadBlocker';\n\nimport Exhibit from '../Exhibit';\nimport {FullPageSpinner} from '../Branding';\nimport {Column, FlexBox} from '../Grid';\nimport QuestionSet from '../TestBlocks/QuestionSet';\nimport {StartButton} from './Buttons';\nimport Sidebar from '../PrometricBank/components/Sidebar';\nimport ProgressBar from '../ProgressBar';\nimport {Body4} from '../Typography';\nimport {StartBlock} from '@bootcamp/web/src/bootcamps/pages/SelfAssessment/StartBlock';\nimport ImagePrefetcher from '../../bootcamps/anatomy/Case/components/ImagePrefetcher';\n\nimport Question from './Question';\nimport TopBar from './TopBar';\nimport BottomBar from './BottomBar';\n\nimport {changeIntercomDisplay} from '@bootcamp/shared/src/util';\nimport {useModalContext} from '../../contexts/Modal';\nimport {SubmitAnatomyCase} from '../Modal';\nimport moment from 'moment';\n\nimport theme from '@bootcamp/shared/src/styles/theme';\n\nconst Container = styled(Column)`\n justify-content: center;\n position: relative;\n background: ${({themePalette}) => themePalette.dark};\n`;\nconst ContentArea = styled(Column)`\n opacity: ${({loading, template, reviewType}) => (loading && (template === 'testReview' || (template === 'quickReview' && reviewType === 'quick-study'))) ? 0 : 1};\n transition: opacity .5s;\n`;\n\nconst QuestionSetContainer = styled(FlexBox)`\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n flex-direction: row;\n`;\nconst QuestionSetWrapper = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n flex: 1;\n z-index: 3;\n background: white;\n`;\nconst Loader = styled(FullPageSpinner)`\n background: ${({color}) => color};\n`;\nconst ProgressLabel = styled(Body4)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n`;\n\nfunction getTestTitle(title, contentType, config) {\n\n if (!title) return config?.title;\n\n const contentTypePrefixes = {\n 'clinical-cases': 'Clinical Cases',\n 'application': 'Application',\n 'lecture-style-questions': 'Lecture Style',\n 'identify-structures': 'Identification',\n 'practicals': 'Practicals',\n 'bio-bites': 'Bio Bites',\n 'bites': 'Bites',\n 'rbites': 'Reaction Bites',\n 'plus-packs': 'Plus Pack',\n };\n\n const prefix = contentTypePrefixes[contentType] ? `${contentTypePrefixes[contentType]}:` : '';\n\n return `${prefix} ${title}`;\n}\n\nconst QBank = ({\n match,\n themePalette,\n username,\n startBlockTitle,\n educators,\n handleEndBlockUpdate,\n enableBookmarking,\n alignQuestion,\n name,\n}) => {\n const [showingExhibit, setShowingExhibit] = useState(false);\n const [exhibitType, setExhibitType] = useState();\n\n const [fontScale, setFontScale] = useState(0);\n const updateFontScale = int => {\n const scale = Math.min(Math.max(fontScale + int, -2), 2);\n setFontScale(scale);\n };\n\n const {\n methods: {\n setLeftButtons,\n transitionBlock,\n },\n variables: {\n test,\n blockIndex,\n testBlockConnections,\n startBlockIndex,\n endBlockIndex,\n loading,\n template,\n quizProgress,\n filterActive,\n skipStartBlock,\n customTestConfig,\n type,\n timeMultiplier\n }\n } = useTestNavigatorContext();\n\n const {modalDispatch} = useModalContext();\n const {bootcamp} = useUserDataContext();\n const {toggleReloadBlocker} = useReloadBlockerContext();\n const [sidebarState, setSidebarState] = useState();\n const visibleFilterState = useState();\n const questions = quizProgress.map(block => block.questions || []).flat();\n const questionCount = questions.length;\n const questionCountThusFar = questions.findIndex(({current}) => current) + 1;\n const contentType = match?.params?.contentType;\n const reviewType = match?.params?.reviewType;\n const isReadinessExam = type === 'readinessExam';\n const urlParams = new URLSearchParams(window.location.search);\n const isReview = urlParams.get('review');\n const alwaysShowingExplanation = customTestConfig?.submitted || isReview;\n\n const mastery = questions.reduce((acc, {masteryLevel}) => ({\n ...acc,\n ...((masteryLevel && masteryLevel !== 'none') ? {[masteryLevel]: acc[masteryLevel] + 1, total: acc.total + 1} : {}),\n }), {\n learning: 0,\n reviewing: 0,\n mastered: 0,\n total: 0\n });\n\n const testTitle = getTestTitle(name, contentType, test?.config);\n\n const blockRenderer = (testBlockConnection) => {\n const defaultBlocksForTemplate = {\n tbcQuestionBank: {testBlock: {type: 'startBlock'}},\n }[template] || {testBlock: {}};\n\n const {testBlock} = testBlockConnection || defaultBlocksForTemplate;\n\n switch (testBlock.type) {\n case 'startBlock':\n if (loading) return ;\n if (isReadinessExam) {\n return (\n {\n const formattedDuration = moment.utc(moment.duration(timeLimit * timeMultiplier, 'minutes').asMilliseconds()).format('H [hours] m [minutes]');\n return (\n
    \n
  1. You will have {formattedDuration} to answer 100 questions, similar to the real NCLEX.
  2. \n
  3. You cannot pause the exam and must answer all questions at once, set aside at least {formattedDuration} to complete the Readiness Exam.
  4. \n
  5. Your score report will appear after finishing the exam.
  6. \n
\n )\n }}\n startText={'Start Readiness Exam'}\n />\n )\n }\n return transitionBlock('nextUntagged')\n case 'passage':\n case 'questionSet':\n case 'caseQuestionSet':\n return (\n \n \n \n {(showingExhibit && exhibitType) && setShowingExhibit(false)} defaultPosition={{x: 0, y: 0}} />}\n setSidebarState(!sidebarState)}\n setFontScale={updateFontScale}\n fontScale={fontScale}\n />\n {\n const {masteryLevel} = testBlock.questionConnections.items[questionIndex] || {};\n\n return \n }}\n />\n setSidebarState(!sidebarState)}/>\n \n \n );\n default:\n return null;\n }\n }\n\n const examComponent = blockRenderer(testBlockConnections[blockIndex]);\n\n useEffect(() => {\n switch (blockIndex) {\n case startBlockIndex:\n setLeftButtons([\n {component: transitionBlock('next')} />}\n ]);\n return;\n case endBlockIndex:\n if (handleEndBlockUpdate) {\n modalDispatch({\n type: 'open',\n enableClickClose: true,\n component: SubmitAnatomyCase,\n componentProps: {\n headerText: 'Nice work! You\\'ve reached the end of your review.',\n bodyText: 'Would you like to keep reviewing or complete your review?',\n cancelConfig: {\n text: 'Keep Reviewing',\n onCancel: () => {\n modalDispatch({type: 'close'});\n // filterActive ? transitionBlock('firstFilterActive') : transitionBlock('firstQuestionSet');\n },\n shouldRedirect: false,\n\n },\n confirmConfig: {\n text: 'Complete Review',\n colorConfig: themePalette,\n onConfirm: () => toggleReloadBlocker(false),\n shouldRedirect: true,\n redirect: location => location.pathname.split('/').slice(0, -1).join('/')\n }\n },\n });\n }\n return;\n default:\n break;\n }\n }, [blockIndex, loading]);\n\n useEffect(() => {\n changeIntercomDisplay('none');\n return () => changeIntercomDisplay('block');\n }, []);\n\n const timeLimit = isReadinessExam && !isReview\n ? 200\n : !customTestConfig?.config?.timed\n ? null\n : customTestConfig?.suspended\n ? moment.duration(customTestConfig?.timeLeft).asMinutes()\n : (parseInt(customTestConfig?.config?.testLength) * 1.5 || null);\n\n const stopwatch = isReadinessExam\n ? false\n : !customTestConfig || !customTestConfig?.config?.timed\n\n return (\n \n \n \n \n \n }\n openWithSettingsShowing\n />\n \n \n );\n}\n\nQBank.defaultProps = {\n showScore: true,\n enableBookmarking: false\n};\n\nexport default QBank;\n","import React, {useEffect} from 'react';\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\nimport {useTestContext} from '../../../contexts/TestBase';\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nimport USMLEBank from '../../../components/USMLEBank';\nimport PrometricBank from '../../../components/PrometricBank';\nimport NCLEXBank from '../../../components/NCLEXQBank';\nimport QBank from '../../../components/QBank';\nimport {TestNavigatorProvider} from '../../../contexts/TestNavigator';\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {colors} from '@bootcamp/shared/src/styles/theme';\n\nconst qbankComponentByBootcamp = {\n 'med-school': USMLEBank,\n 'med-school-preclinical': USMLEBank,\n 'med-school-anatomy': QBank,\n 'med-school-bites': QBank,\n 'nclex': NCLEXBank,\n 'inbde-mockExam': PrometricBank,\n 'inbde-questionBank': PrometricBank,\n 'inbde-quickReview': PrometricBank,\n 'inbde': PrometricBank,\n 'anatomy': QBank,\n 'anatomy-anatomy': QBank,\n};\n\nconst CustomTest = props => {\n const {config} = useBootcampConfigContext();\n\n const {bootcamp, cognitoUser, userModel, DEFAULT_USER_ID} = useUserDataContext();\n const username = cognitoUser?.attributes?.name || cognitoUser?.attributes?.email || userModel?.id;\n const {test, restoreCustomTest} = useTestContext();\n\n const params = new URLSearchParams(props.location.search);\n const testStorageKey = params.get('key');\n const type = test?.config?.type;\n\n useDocumentTitle(`${config.meta.siteTitle} | Created Test`);\n\n useEffect(() => {\n if (!DEFAULT_USER_ID) return;\n\n if (!test) {\n if (testStorageKey) {\n restoreCustomTest(testStorageKey);\n }\n }\n }, [DEFAULT_USER_ID]);\n\n useEffect(() => {\n const redirectInvalidTest = test?.hasOwnProperty('valid') && !test.valid;\n\n if (redirectInvalidTest) throw new Error('Test id mismatch');\n\n }, [test])\n\n const bootcampWithType = type ? `${bootcamp}-${type}` : bootcamp;\n const QuestionBank = qbankComponentByBootcamp[bootcampWithType];\n\n return (\n \n \n \n )\n}\n\nexport default CustomTest;\n","import React from 'react';\nimport {useConfigState} from '../context';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\n\nimport {Row, Column, Label} from '../../../components/Performance/shared';\nimport {Label3} from '@bootcamp/web/src/components/Typography/next';\n\nimport {CalendarLtr} from '@styled-icons/fluentui-system-filled/CalendarLtr'\nimport {Clock} from '@styled-icons/fluentui-system-filled/Clock';\nimport {Settings} from '@styled-icons/fluentui-system-filled/Settings';\nimport {TaskListSquareLtr} from '@styled-icons/fluentui-system-filled/TaskListSquareLtr';\nimport {ArrowForwardOutline} from '@styled-icons/evaicons-outline/ArrowForwardOutline';\nimport {RoundButton} from '@bootcamp/web/src/components/UI';\nimport moment from 'moment';\nimport styled from 'styled-components';\nimport {useHistory} from 'react-router-dom';\n\nconst Container = styled(Row)`\n padding: ${({theme}) => `${theme.layouts.spacing.m} ${theme.layouts.spacing.l}`};\n border-bottom: 1px solid ${({theme}) => theme.colors.borderPalette.primary};\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n }\n`;\nconst Header = styled(Label)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n`;\nconst PillContainer = styled(Row)`\n flex-flow: row wrap;\n gap: 8px;\n`;\nconst ActionWrapper = styled(Row)`\n align-items: center;\n justify-content: flex-end;\n`;\nconst Item = styled(Label3)`\n display: flex;\n padding: 4px 8px;\n color: ${({theme}) => theme.colors.typographyPalette.primary};\n border: 1px solid ${({theme}) => theme.colors.borderPalette.primary};\n border-radius: 8px;\n align-items: center;\n justify-content: center;\n font-weight: 400;\n`;\nconst Icon = styled.div`\n margin-right: ${({theme}) => theme.layouts.spacing.xs};\n fill: ${({theme}) => theme.colors.typographyPalette.primary};\n width: 14px;\n`;\nconst ReviewButton = styled(RoundButton)`\n width: auto;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-top: ${({theme}) => theme.layouts.spacing.m};\n width: 100%;\n button {\n width: 100%;\n }\n }\n`;\n\nconst Details = () => {\n const {bootcamp} = useUserDataContext();\n const {config, isReadinessExam, isMCATExam, isPracticeTest, testRoute, testProgressId, testId} = useConfigState();\n const history = useHistory();\n\n const reviewRoute = ['oat', 'dat'].includes(bootcamp)\n ? `/${bootcamp}/test-review/review?id=${encodeURIComponent(testId)}&testProgressId=${encodeURIComponent(testProgressId)}&testRoute=${encodeURIComponent(testRoute)}`\n : isMCATExam\n ? `${testRoute}?testProgressId=${encodeURIComponent(testProgressId)}&review=true`\n : isReadinessExam\n ? `/${testRoute}?testProgressId=${encodeURIComponent(testProgressId)}&review=true`\n : `/${bootcamp}/custom-test?key=${encodeURIComponent(config?.testStorageKey)}&review=true`\n\n return (\n \n \n
{isReadinessExam ? config.customTitle : 'Score Report'}
\n \n \n \n {config?.createdAt && moment(config?.createdAt).format('MMMM Do, YYYY')}\n \n {!isReadinessExam && !isPracticeTest && !isMCATExam &&\n \n \n {config?.timed ? 'Timed' : 'Untimed'}\n \n }\n {!isReadinessExam && !isPracticeTest && !isMCATExam &&\n \n \n {config?.tutorMode ? 'Tutored' : 'Untutored'}\n \n }\n \n \n {config?.testLength} Question{config?.testLength === 1 ? '' : 's'}\n \n \n
\n \n }\n iconPosition={'right'}\n onClick={() => history.push(reviewRoute)}\n >\n Start Review\n \n \n
\n );\n};\n\nexport default Details;","import React, {useState} from 'react';\nimport styled, {css} from 'styled-components';\n\nimport {useConfigState} from '../context';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {Column, Table, Heading, Expand, Card, Title, SubTitle} from '../../../components/Performance/shared';\n\nimport ProgressBar from '@bootcamp/web/src/components/ProgressBar';\nimport {AlertIcon} from '@bootcamp/web/src/bootcamps/pages/Performance/Subject';\nimport {CellIcon, SubjectCell, TopicCell, iconMap} from '@bootcamp/web/src/bootcamps/components/Performance/shared';\nimport theme from '@bootcamp/shared/src/styles/theme';\n\n\nconst Container = styled(Column)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst StyledHeading = styled(Heading)`\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 0 ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst StyledCard = styled(Card)`\n margin-bottom: 0;\n`;\nconst StyledTable = styled(Table)`\n\n td:nth-child(6) * {\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n }\n td:nth-child(6) {\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n }\n\n ${({bootcamp}) => ['dat', 'oat'].includes(bootcamp) && css`\n td:nth-child(5) {\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n white-space: nowrap;\n }\n td:nth-child(2) {\n width: auto;\n }\n\n tr:first-child {\n td:last-child {\n text-align: center;\n }\n }\n `}\n`;\nconst ScoreRow = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n`;\nconst CorrectText = styled.span`\n width: 56px;\n white-space: nowrap;\n`;\nconst StyledTopicCell = styled(TopicCell)`\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 8px;\n`;\nconst StyledProgressBar = styled(ProgressBar)`\n width: 100px;\n`;\nconst BarCell = styled.span`\n width: 38px;\n`;\n\nconst OuterWrapper = styled.div`\n ${({theme}) => theme.mediaQueries.tablet} {\n overflow-x: auto;\n }\n `;\nconst Wrapper = styled(Card)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n margin-left: ${({theme}) => theme.layouts.spacing.m};\n width: 800px;\n }\n`;\n\n\nconst Subject = ({\n isFullLengthTest\n}) => {\n const {scoring, config} = useConfigState();\n\n const singleSubject = Object.keys(scoring?.subjectBreakdown || {}).length === 1;\n\n const {bootcamp} = useUserDataContext();\n\n const [expanded, setExpanded] = useState(singleSubject);\n\n const rows = ['dat', 'oat'].includes(bootcamp)\n ? Object\n .entries(scoring?.subjectBreakdown || {})\n .map(([subject, breakdown]) => ({\n parent: [\n {\n content: (\n \n {iconMap?.[bootcamp]?.[subject] && }\n {subject} {breakdown?.score < breakdown?.avgScore && }\n \n )\n },\n { content: `${breakdown?.score} / ${breakdown?.maxScore}` },\n {\n content: (\n \n {Math.round(breakdown?.score / breakdown?.maxScore * 100)}%\n \n \n )\n },\n { content: `${Math.round((breakdown?.avgScore / breakdown?.maxScore) * 100)}%`, disabled: true },\n ],\n nested: Object\n .entries(breakdown?.systems)\n .sort(([a], [b]) => a?.localeCompare(b))\n .map(([system, breakdown]) => ({\n onClick: null,\n noHover: true,\n cells: [\n { content: '' },\n { content: ({system}{breakdown?.score < breakdown?.avgScore && }) },\n { content: `${breakdown?.score} / ${breakdown?.maxScore}` },\n {\n content: (\n \n {Math.round(breakdown?.score / breakdown?.maxScore * 100)}%\n \n \n )\n },\n { content: `${Math.round((breakdown?.avgScore / breakdown?.maxScore) * 100)}%`, disabled: true },\n ]\n }))\n }))\n : Object\n .entries(scoring?.subjectBreakdown || {})\n .map(([subject, breakdown]) => ({\n parent: [\n {content: (\n \n {iconMap?.[bootcamp]?.[subject] && }\n {subject} {breakdown?.score < breakdown?.avgScore && }\n \n )},\n {content: `${breakdown?.score} / ${breakdown?.maxScore}`},\n {content: (\n \n {Math.round(breakdown?.score / breakdown?.maxScore * 100)}%\n \n \n )},\n {content: `${Math.round((breakdown?.avgScore / breakdown?.maxScore) * 100)}%`, disabled: true},\n ],\n nested: Object\n .entries(breakdown?.systems)\n .sort(([a], [b]) => a?.localeCompare(b))\n .map(([system, breakdown]) => ({\n onClick: null,\n noHover: true,\n cells: [\n {content: ''},\n // {content: subject, disabled: true},\n {content: ({system}{subject === 'Simulation Exam' && breakdown?.score < breakdown?.avgScore && })},\n {content: `${breakdown?.score} / ${breakdown?.maxScore}`},\n {content: (\n \n {Math.round(breakdown?.score / breakdown?.maxScore * 100)}%\n \n \n )},\n {content: `${Math.round((breakdown?.avgScore / breakdown?.maxScore) * 100)}%`, disabled: true},\n ]\n }))\n }));\n\n const defaultRows = [{content: bootcamp === 'nclex' ? 'Correct / Total Pts' : 'Correct / Total'}, {content: 'Score'}, {content: 'Avg. Score', disabled: true}, {content: ''}];\n\n const headerRows = ['dat', 'oat'].includes(bootcamp)\n ? [{content: ''}, {content: 'Subject'}, {content: 'Correct / Total'}, {content: 'Raw Score'}, {content: 'Avg. Raw Score', disabled: true}, {content: ''}]\n : bootcamp === 'med-school' && config?.type !== 'anatomy'\n ? [{content: ''}, {content: 'System'}, ...defaultRows]\n : bootcamp === 'nclex'\n ? [{content: ''}, {content: 'Subject'}, ...defaultRows]\n : [{content: ''}, {content: 'Subject'}, ...defaultRows];\n\n\n const titleText = ['dat', 'oat'].includes(bootcamp) && !isFullLengthTest\n ? 'Topic'\n : headerRows[1].content;\n\n return (\n \n \n \n {titleText} Breakdown\n <Expand expanded={expanded} setExpanded={setExpanded} />\n \n Increase your score by focusing on {!isFullLengthTest ? `${titleText?.toLowerCase()}s` : 'subjects'} marked with a red - that's where you can improve the most!\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default Subject;","import React from 'react';\nimport styled from 'styled-components';\n\nimport {FilterSelector} from '@bootcamp/web/src/components/QBank/SidebarTop';\n\n\nconst SubjectSelector = styled(FilterSelector)`\n width: 250px;\n min-width: auto;\n max-width: auto;\n color: white;\n padding: 13px 16px;\n background-position: calc(100% - 16px) 50%;\n margin: 0;\n\n ${({theme}) => theme.mediaQueries.mobileXl} {\n width: 100%;\n }\n`;\n\nexport const Selector = ({bootcamp, setSelection, options=[]}) => (\n bootcamp === 'dat'\n ? setSelection(event.target.value)}>\n {options.map(option => )}\n \n : setSelection(event.target.value)}>\n {options.map(option => )}\n \n);","import React, {useState} from 'react';\nimport {firstBy} from 'thenby';\nimport {useHistory} from 'react-router-dom';\n\nimport {useUserDataContext} from '../../../../contexts/UserData';\nimport {useConfigState} from '../context';\nimport {Column, Table, SubTitle, Heading, Expand, Icon as IconDiv, Card, Title, TitleWithFilter} from '../../../components/Performance/shared';\nimport MasteryIcon from '../../../components/MasteryIcon';\n\nimport {formatTimeSpent} from '@bootcamp/shared/src/util';\n\nimport {Bookmark} from '@styled-icons/fluentui-system-filled/Bookmark';\nimport {Checkmark as Correct} from '@styled-icons/fluentui-system-filled/Checkmark';\nimport {Dismiss as Incorrect} from '@styled-icons/fluentui-system-filled/Dismiss';\nimport {CircleHalfFill as Partial} from '@styled-icons/fluentui-system-filled/CircleHalfFill'\nimport {ChevronRight} from '@styled-icons/fluentui-system-filled/ChevronRight';\nimport styled from 'styled-components';\nimport {Selector} from './Filter';\n\n\n\nconst Container = styled(Column)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst StyledHeading = styled(Heading)`\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 0 ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst OuterWrapper = styled.div`\n ${({theme}) => theme.mediaQueries.tablet} {\n overflow-x: auto;\n }\n `;\nconst Wrapper = styled(Card)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n margin-left: ${({theme}) => theme.layouts.spacing.m};\n width: 800px;\n }\n`;\nconst StyledTable = styled(Table)`\n tr:first-child {\n td {\n white-space: nowrap;\n }\n }\n`;\nconst Chevron = styled(IconDiv)`\n width: 20px;\n`;\nconst SnippetContainer = styled.div`\n p {\n display: none;\n }\n\n div {\n display: none;\n }\n\n table {\n display: none;\n }\n\n p:last-child {\n\n display: flex;\n overflow: hidden;\n max-width: 200px;\n\n span {\n width: 0;\n height: 0;\n overflow: hidden;\n }\n\n span:first-child {\n width: auto;\n height: auto;\n display: block;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n`;\n\nconst RowIndex = styled.span`\n margin-right: 8px;\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n font-size: 16px;\n`;\nconst Content = styled.div`\n display: flex;\n align-items: center;\n`;\nconst Mastery = styled(MasteryIcon)`\n width: 20px;\n height: 20px;\n`;\nconst BookmarkIcon = styled(Bookmark)`\n width: 20px;\n min-width: 20px;\n height: 20px;\n color: ${({theme}) => theme.colors.brandPalette.blue.default};\n margin-right: 4px;\n`;\n\nconst Icon = styled.svg`\n width: 16px;\n height: 16px;\n color: ${({theme, color}) => theme.colors.interfacePalette[color].default};\n`;\nconst IconWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 24px;\n min-height: 24px;\n background: ${({theme, color}) => theme.colors.interfacePalette[color].light};\n border-radius: 50%;\n`;\n\nconst ScoreIcon = ({breakdown}) => {\n const iconConfig = breakdown?.score === breakdown?.maxScore\n ? {component: Correct, color: 'green'}\n : breakdown?.score === 0\n ? {component: Incorrect, color: 'red'}\n : {component: Partial, color: 'yellow'}\n\n return (\n \n \n \n );\n};\n\nconst Question = ({filterOptions=[], filterKey='subject', hideExpand}) => {\n const [filter, setFilter] = useState(filterOptions?.[0]?.value);\n const [expanded, setExpanded] = useState(true);\n const {scoring, config, testRoute, testId, testProgressId} = useConfigState();\n const {bootcamp} = useUserDataContext();\n\n const history = useHistory();\n const redirectBaseUrl = bootcamp === 'mcat' ?\n `${testRoute}?review=true&testProgressId=${encodeURIComponent(testProgressId)}`\n : testRoute\n ? `/${testRoute}?review=true&testProgressId=${encodeURIComponent(testProgressId)}`\n : `/${bootcamp}/custom-test?key=${encodeURIComponent(config?.testStorageKey)}&review=true`;\n\n const caseTitle = ['dat', 'oat'].includes(bootcamp)\n ? 'Section'\n : bootcamp === 'nclex'\n ? 'Case Study'\n : bootcamp === 'med-school'\n ? 'USMLE Case'\n : bootcamp === 'mcat'\n ? 'Passage'\n : 'Case Set';\n\n\n const rows = [...Object.entries(scoring?.caseBreakdown || {}), ...Object.entries(scoring?.questionBreakdown || {})]\n .sort(firstBy(([testId, breakdown]) => breakdown?.index))\n .filter(([questionId, breakdown]) => filter ? breakdown[filterKey] === filter : true)\n .map(([questionId, breakdown], caseIndex) => (\n !breakdown?.questions\n ? {\n onClick: () => {\n const redirectUrl = ['dat', 'oat'].includes(bootcamp)\n ? `/${bootcamp}/test-review/review?id=${testId}&testProgressId=${testProgressId}&questionId=${questionId}${breakdown?.blockId ? `&blockId=${breakdown?.blockId}` : ''}`\n : `${redirectBaseUrl}&questionId=${questionId}${breakdown?.blockId ? `&blockId=${breakdown?.blockId}` : ''}`\n history.push(redirectUrl)\n },\n cells: [\n { content: },\n {\n content: (\n \n {filter ? caseIndex + 1 : breakdown?.index + 1}\n {breakdown.bookmarked ? : ''}\n {/* */}\n \n )\n },\n { content: breakdown?.subject },\n { content: breakdown?.system },\n { content: `${breakdown?.score} / ${breakdown?.maxScore}` },\n { content: formatTimeSpent(breakdown.timeSpent)},\n { content: },\n ]\n } : {\n parent: [\n { content: caseTitle},\n { content: breakdown?.subject },\n { content: breakdown?.system },\n { content: `${breakdown?.score} / ${breakdown?.maxScore}` },\n { content: formatTimeSpent(breakdown.timeSpent)},\n ],\n nested: Object\n .entries(breakdown?.questions || {})\n .sort(firstBy(([questionId, breakdown]) => breakdown?.index))\n .map(([questionId, breakdown], index) => ({\n onClick: () => history.push(`${redirectBaseUrl}&questionId=${questionId}${breakdown?.blockId ? `&blockId=${breakdown?.blockId}` : ''}`),\n cells: [\n { content: },\n {\n content: (\n \n {filter ? index + 1 : breakdown?.index + 1}\n {breakdown.bookmarked ? : ''}\n {/* */}\n \n )\n },\n { content: breakdown?.subject, disabled: true },\n { content: breakdown?.system, disabled: true },\n { content: `${breakdown?.score} / ${breakdown?.maxScore}` },\n { content: formatTimeSpent(breakdown.timeSpent)},\n ]\n }))\n }));\n const HeaderRows = bootcamp === 'med-school' ? [{content: 'System'}, {content: 'Subject'}] : bootcamp === 'nclex' ? [{content: 'Subject'}, {content: 'System'}] : [{content: 'Subject'}, {content: 'Topic'}];\n\n return (\n \n \n {filter\n ? \n Question Breakdown\n \n \n : \n Question Breakdown\n {/* {!hideExpand && <Expand expanded={expanded} setExpanded={setExpanded} />} */}\n \n }\n Click any question to jump directly to it.\n \n \n \n \n \n \n \n );\n};\n\nexport default Question;","import React from 'react';\nimport styled from 'styled-components';\n\nimport {Hero, Label2, Label3} from '../../../../components/Typography/next';\nimport {Card, Heading, Title, SubTitle, DivergentBar, Table, iconMap, CellIcon, SubjectCell} from '../../../components/Performance/shared';\n\nimport {formatTimeSpent} from '@bootcamp/shared/src/util';\n\nimport {useConfigState} from '../context';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\n\nconst Container = styled.div`\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n overflow-x: auto;\n }\n`;\nconst StyledHeading = styled(Heading)`\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 0 ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst RightWrapper = styled.div`\n flex: 2;\n min-width: 715px;\n ${({theme}) => theme.mediaQueries.tablet} {\n overflow-x: auto;\n min-width: auto;\n }\n `;\nconst Wrapper = styled.div`\n display: flex;\n flex-flow: row wrap;\n gap: 16px;\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n margin-bottom: 0;\n }\n\n `;\nconst Left = styled.div`\n min-width: 218px;\n flex: 1 1 0%;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 0px 16px;\n width: 100%;\n }\n`;\nconst LeftContainer = styled(Card)`\n display: flex;\n flex-direction: column;\n flex: 1;\n align-items: center;\n padding: 48px 20px;\n margin-bottom: 0;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-bottom: 0;\n }\n`;\nconst BarWrapper = styled.div`\n width: 66%;\n margin-bottom: 16px;\n`;\n\nconst Right = styled.div`\n height: auto;\n ${({theme}) => theme.mediaQueries.tablet} {\n margin: 0px 16px;\n min-width: 600px;\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n }\n`;\nconst StyledCard = styled(Card)`\n margin-bottom: 0px;\n`;\nconst TotalTimeLabel = styled(Label2)`\n color: ${({theme}) => theme.colors.brandPalette.royal.default};\n font-weight: bold;\n margin-bottom: 6px;\n`;\nconst TotalTime = styled(Hero)`\n color: ${({theme}) => theme.colors.brandPalette.royal.default};\n`;\nconst Average = styled(Label3)`\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n text-align: center;\n\n span {\n display: block;\n margin-bottom: 4px;\n }\n`;\nconst StyledTable = styled(Table)`\n margin-bottom: 0px;\n\n td:first-child {\n white-space: nowrap;\n width: auto;\n }\n\n tr:first-child {\n td {\n white-space: nowrap;\n }\n td:last-child {\n text-align: center;\n width: 122px;\n }\n }\n\n td {\n width: 122px;\n }\n td:nth-child(3) * {\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n }\n td:nth-child(3) {\n color: ${({theme}) => theme.colors.typographyPalette.secondary};\n }\n`;\n\n\nconst Time = ({topicOnly}) => {\n const {scoring, config} = useConfigState();\n const {bootcamp} = useUserDataContext();\n\n\n const rows = topicOnly\n ? Object\n .entries(scoring?.subjectBreakdown || {})\n .reduce((acc, [subject, breakdown]) => ([...acc, ...Object.entries(breakdown?.systems || {})]), [])\n .map(([system, breakdown]) => ({\n cells: [\n {content: system},\n {content: formatTimeSpent(breakdown?.timeSpent)},\n {content: formatTimeSpent(breakdown?.avgTime), disabled: true},\n {content: (\n \n )}\n ],\n }))\n : Object\n .entries(scoring?.subjectBreakdown || {})\n .map(([subject, breakdown]) => ({\n cells: [\n {content: (\n \n {iconMap[subject] && }\n {subject}\n \n )},\n {content: formatTimeSpent(breakdown?.timeSpent / breakdown?.totalQuestions)},\n {content: formatTimeSpent(breakdown?.avgTime / breakdown?.totalQuestions), disabled: true},\n {content: (\n \n )}\n ],\n }))\n\n const typeHeader = topicOnly\n ? 'Topic'\n : ['med-school'].includes(bootcamp) && config?.type !== 'anatomy'\n ? 'System'\n : 'Subject'\n\n return (\n \n \n Time Management\n Green means you’re faster than average! Red shows where you can improve your pace.\n \n \n \n \n Your Time Per Question\n {formatTimeSpent(scoring?.overview?.totalTime / scoring?.overview?.totalQuestions)}\n \n \n \n \n Avg. Time Per Question\n {formatTimeSpent(scoring?.overview?.avgTime / scoring?.overview?.totalQuestions)}\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default Time;","import React from 'react';\nimport {useHistory} from 'react-router-dom';\n\nimport Breadcrumbs from '../../../components/NavBar/components/Breadcrumbs';\nimport {LoadingSpinner} from '../../../components/Branding';\nimport Container, {Wrapper as PageWrapper} from '../PageContainer';\n\nimport {ConfigProvider, useConfigState} from './context';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {useBootcampConfigContext} from '@bootcamp/web/src/contexts/BootcampConfig';\n\nimport Details from './components/Details';\nimport Score from './components/Score';\nimport Subject from './components/Subject';\nimport Question from './components/Question';\nimport Time from './components/Time';\n\nimport {Element as FAQElement} from '@bootcamp/web/src/bootcamps/components/WebflowFAQs';\n\nimport {H1} from '../../../components/Typography/next';\n\nimport {Card, Heading, Title} from '../../components/Performance/shared';\n\nimport styled from 'styled-components';\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\n\n\nexport const StyledContainer = styled(Container)`\n ${({theme}) => theme.mediaQueries.tablet} {\n ${PageWrapper} {\n padding-right: 0;\n padding-left: 0;\n }\n }\n`;\nexport const PageHeader = styled(H1)`\n color: ${({theme}) => theme.colors.neutralsPalette.white};\n margin: ${({theme}) => theme.layouts.spacing.s} 0 ${({theme}) => theme.layouts.spacing.m};\n`;\nexport const Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n`;\nconst Loader = styled.div`\n position: absolute;\n height: 100vh;\n display: flex;\n width: 100%;\n align-items: center;\n justify-content: center;\n top: 0;\n left: 0;\n`;\nexport const ElementWrapper = styled.div`\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 0px 16px;\n }\n`;\nexport const StyledCard = styled(Card)`\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-bottom: ${({theme}) => theme.layouts.spacing.xl};\n }\n`;\n\nexport const LoadingWrapper = ({children}) => {\n const config = useConfigState();\n const loading = !Object.keys(config).length;\n\n return (\n \n {loading\n ? \n \n \n : children\n }\n \n );\n}\n\nexport const Header = () => {\n const config = useConfigState();\n const {DEFAULT_USER_ID, bootcamp, searchUserInteractions} = useUserDataContext();\n const savedTests = searchUserInteractions(`${DEFAULT_USER_ID}_${bootcamp}_savedTests`);\n const attempt = config?.config && savedTests?.testList ? savedTests.testList.findIndex(storageKey => storageKey === config.config.testStorageKey) + 1 : '...';\n const testTitle = config?.config?.customTitle || `Previous Test #${attempt}`;\n return (\n {testTitle}\n );\n}\n\nexport const CustomBreadcrumbs = () => {\n const history = useHistory();\n const config = useConfigState();\n const {DEFAULT_USER_ID, bootcamp, searchUserInteractions} = useUserDataContext();\n const savedTests = searchUserInteractions(`${DEFAULT_USER_ID}_${bootcamp}_savedTests`);\n const attempt = config?.config && savedTests?.testList ? savedTests.testList.findIndex(storageKey => storageKey === config.config.testStorageKey) + 1 : '...';\n const testTitle = config?.config?.customTitle || `Previous Test #${attempt}`;\n\n const lockAtDepth = bootcamp === 'mcat' ? 3 : null;\n\n return (\n \n )\n}\n\nconst faqItems = [\n {title: \"How can I improve my score?\", text: \"The best way to improve your score is to make sure you are reading through each explanation thoroughly - even for the questions you got correct. Review the Subject Breakdown table above and focus on subjects marked with a red icon - that's where you can improve the most!\"},\n];\n\n\nconst ScoreReport = () => {\n const {config} = useBootcampConfigContext();\n useDocumentTitle(`${config.meta.siteTitle} | Test Review`)\n return (\n \n \n \n \n
\n \n \n \n \n
\n \n \n \n \n
\n }\n footerContent={\n
\n {questionRows.length} Questions, {alwaysShowingExplanation ? 0 : quizProgress.reduce((acc, {questions}) => [...acc, ...(questions || [])], [])?.filter(({seen}) => !seen)?.length} Unseen\n
\n }\n >\n \n Question #\n Status\n Tag\n \n \n {questionRows}\n \n \n )\n },\n enableClickClose: false,\n componentProps: {},\n modalContainerStyle: theme => `\n background: transparent;\n `\n })\n }\n return toggleSidebar(true);\n }\n\n const isSectionReview = testBlock.type === 'endBlock';\n useHotkeys('option+v', isSectionReview ? () => true : showNavigator, [showNavigator]);\n useHotkeys('option+e', finishedOnClick, [finishedOnClick]);\n\n if (isSectionReview) {\n const allQuestionProgresses = quizProgress.reduce((acc, {questions}) => [...acc, ...(questions || [])], []);\n\n return (\n \n \n \n \n \n End Section\n \n \n \n \n )\n }\n return (\n \n {showingMasteryControls && (\n \n \n onClickMasteryButton(e, 'learning')} />\n onClickMasteryButton(e, 'reviewing')} />\n onClickMasteryButton(e, 'mastered')} />\n \n \n )}\n \n {\n tutorMode\n ? \n \n \n End\n \n \n : template === 'testReview'\n ? null\n : transitionBlock('review')}>Review Screen\n }\n {/* toggleSidebar(true)}>\n \n Settings\n */}\n {/* {\n modalDispatch({\n type: 'open',\n component: ({close}) => {\n return (\n \n Periodic Table\n
\n }\n >\n \n \n )\n },\n enableClickClose: false,\n componentProps: {},\n modalContainerStyle: theme => `\n background: transparent;\n `\n })\n }}>\n\n \n Periodic Table\n\n */}\n {/* handleSuspendClick()} style={{borderLeft: 'none', borderRight: '1px solid white'}}>Pause */}\n \n \n {((questionProgresses?.[questionIndex]?.didCheck && tutorMode) || alwaysShowingExplanation) ? [\n ,\n setShowingMasteryControls(!showingMasteryControls)}>,\n onClickMasteryButton(e, 'learning')} />,\n onClickMasteryButton(e, 'reviewing')} />,\n onClickMasteryButton(e, 'mastered')} />,\n handleNavigation('previous')}>\n Previous\n ,\n \n Navigation\n ,\n handleNavigation('next')}>\n Next\n ,\n ] : [\n handleNavigation('previous')}>\n Previous\n ,\n \n Navigation\n ,\n handleNavigation('next')}>\n Next\n \n ]}\n \n \n )\n}\n\nconst NavigatorTableHeader = styled.div`\n display: flex;\n align-content: center;\n /* nclex/ui-light-blue */\n\n background: #80AEE1;\n /* nclex/ui-dark-blue */\n\n border-bottom: 0.5px solid #006DAA;\n`;\n\nconst NavigatorTableHeaderCell = styled.div`\n width: 50%;\n padding: 12px 16px;\n color: white;\n`;\nconst NavigatorTable = styled.div`\n height: 100%;\n overflow-y: scroll;\n`;\nconst NavigatorTableRow = styled.div`\n display: flex;\n background: ${({even, current}) => current ? '#FFFF67' : even ? 'white' : '#EEEEEE'};\n &:hover {\n cursor: pointer;\n background: #FFFF67;\n }\n ${({isSequentialSet}) => isSequentialSet && css`\n border-left: 5px solid #3385ff;\n `}\n`;\n\nconst NavigatorTableRowCell = styled.div`\n width: 50%;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n color: ${({isRed}) => !isRed ? '#404040' : '#E05E57'};\n`;\n\nexport default Controls;\n","export default __webpack_public_path__ + \"static/media/scroll-arrow.2d0fcf50.svg\";","export default __webpack_public_path__ + \"static/media/scroll-arrow-up.58b26e89.svg\";","import React, {useState} from 'react';\nimport styled, {css} from 'styled-components';\n\nimport {ReactComponent as Flag} from '../assets/flag.svg';\nimport {ReactComponent as NavigationIcon} from '../assets/navigation.svg';\nimport {CaretDown} from '@styled-icons/fluentui-system-filled/CaretDown';\n\nimport {DraggablePopup} from '@bootcamp/web/src/components/Modal/components/DraggablePopup';\nimport scrollArrow from '@bootcamp/web/src/components/MCATBank/assets/scroll-arrow.svg';\nimport scrollArrowUp from '@bootcamp/web/src/components/MCATBank/assets/scroll-arrow-up.svg';\nimport firstBy from 'thenby';\n\nconst StyledDraggablePopup = styled(DraggablePopup)`\n border-radius: 0px;\n border: 1px solid black;\n padding: 0px 8px;\n background: ${({theme, mcatTheme}) => mcatTheme === 'salmon' ? '#FDD3C5' : mcatTheme === 'black' ? 'black' : theme.colors.prometricPalette.mcat.dark};\n\n .handle {\n padding: 3px 8px;\n }\n\n .draggable-popup-footer {\n padding: 9.5px 8px;\n }\n * {\n font-family: Tahoma !important;\n }\n max-width: 1000px;\n ${({mcatTheme}) => mcatTheme === 'salmon' && css`\n color: black;\n svg {\n path {\n fill: black;\n }\n }\n\n ${Container} {\n border: 1px solid black;\n ::-webkit-scrollbar-thumb {\n background: black;\n }\n ::-webkit-scrollbar-button:start:decrement {\n background-color: black;\n }\n ::-webkit-scrollbar-button:end:increment {\n background-color: black;\n }\n ${NavigatorTableHeader} {\n background: #FDD3C5;\n color: black;\n }\n ${NavigatorTableHeaderCell} {\n color: black;\n }\n }\n `}\n ${({mcatTheme}) => mcatTheme === 'black' && css`\n border: 1px solid white;\n `}\n`;\nconst Container = styled.div`\n overflow-y: auto;\n font-family: Verdana;\n ::-webkit-scrollbar {\n width: 18px;\n }\n\n /* Track */\n ::-webkit-scrollbar-track {\n box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.50) inset;\n background: white;\n }\n\n /* Handle */\n ::-webkit-scrollbar-thumb {\n background: ${({theme}) => theme.colors.prometricPalette.mcat.light};\n }\n\n /* Buttons */\n ::-webkit-scrollbar-button:start:decrement {\n display: block;\n background-image: url(${scrollArrowUp});\n background-color: ${({theme}) => theme.colors.prometricPalette.mcat.light};\n background-position: center;\n background-repeat: no-repeat;\n background-size: 14px;\n }\n ::-webkit-scrollbar-button:start:increment {\n height: 1px;\n }\n ::-webkit-scrollbar-button:end:increment {\n display: block;\n background-image: url(${scrollArrow});\n background-color: ${({theme}) => theme.colors.prometricPalette.mcat.light};\n background-position: center;\n background-repeat: no-repeat;\n background-size: 14px;\n }\n ::-webkit-scrollbar-button:end:decrement {\n height: 1px;\n }\n ${({mcatTheme}) => mcatTheme === 'salmon' && css`\n ${NavigatorTableRow} {\n background: #FDD3C5;\n &:hover {\n background: #FDD3C5;\n }\n }\n ${NavigatorTableRowCell} {\n color: black;\n border: 1px solid black;\n &:first-child {\n border-left: none;\n }\n &:last-child {\n border-right: none;\n }\n }\n `}\n ${({mcatTheme}) => mcatTheme === 'black' && css`\n ${NavigatorTableHeader} {\n background: black;\n border-bottom: 0.5px solid white;\n }\n ${NavigatorTableHeaderCell} {\n color: white;\n }\n ${NavigatorTableRow} {\n background: black;\n &:hover {\n background: black;\n }\n }\n ${NavigatorTableRowCell} {\n color: white;\n border: 1px solid white;\n &:first-child {\n border-left: none;\n }\n &:last-child {\n border-right: none;\n }\n }\n `}\n`;\nconst Wrapper = styled.div`\n height: 100%;\n`;\nconst Header = styled.div`\n font-size: 19px;\n font-family: Verdana;\n\n span {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-right: 5px;\n height: 23px;\n }\n`;\nconst Footer = styled(Header)`\n font-size: 16px;\n`;\nconst NavigatorTableHeader = styled.div`\n display: flex;\n align-content: center;\n /* nclex/ui-light-blue */\n\n background: ${({theme}) => theme.colors.prometricPalette.mcat.light};\n /* nclex/ui-dark-blue */\n\n border-bottom: 0.5px solid #006DAA;\n`;\nconst NavigatorTableHeaderCell = styled.div`\n width: 50%;\n font-size: 15px;\n font-weight: bold;\n padding: 6px 16px;\n color: white;\n text-align: center;\n cursor: pointer;\n\n border-top: 1px solid white;\n\n &:nth-child(2) {\n border-left: 1px solid ${({theme}) => theme.colors.neutralsPalette.mcat.grey};\n border-right: 1px solid ${({theme}) => theme.colors.neutralsPalette.mcat.grey};\n }\n`;\nconst NavigatorTable = styled.div`\n height: 100%;\n`;\nconst NavigatorTableRow = styled.div`\n display: flex;\n background: ${({ even, current }) => current ? '#FFFF67' : even ? 'white' : '#EEEEEE'};\n &:hover {\n cursor: pointer;\n background: #FFFF67;\n }\n ${({ isSequentialSet }) => isSequentialSet && css`\n border-left: 5px solid #3385ff;\n `}\n`;\nconst NavigatorTableRowCell = styled.div`\n width: 50%;\n padding: 0px 16px;\n height: 32px;\n display: flex;\n align-items: center;\n color: ${({isRed}) => !isRed ? '#404040' : '#E05E57'};\n border: 1px solid ${({theme}) => theme.colors.neutralsPalette.mcat.black};\n &:first-child {\n border-left: none;\n }\n &:last-child {\n border-right: none;\n }\n`;\nconst StyledFlag = styled(Flag)`\n fill: white;\n width: 16px;\n height: 16px;\n margin: 0 auto;\n path {\n stroke: ${({theme}) => theme.colors.prometricPalette.mcat.dark};\n fill: ${({theme}) => theme.colors.prometricPalette.mcat.dark};\n }\n`;\nconst StyledNavigationIcon = styled(NavigationIcon)`\n width: 16px;\n height: 16px;\n`;\nconst SortIndicator = styled(CaretDown)`\n transform: ${({direction}) => direction === 'asc' ? 'rotate(0deg)' : 'rotate(180deg)'};\n width: 16px;\n height: 16px;\n`;\n\nconst Navigator = ({quizProgress, isReadinessExam, updateQuestionProgressData, setCurrentIndex, close, alwaysShowingExplanation, mcatTheme}) => {\n\n\n const [sortColumn, setSortColumn] = useState({column: 'index', direction: 'asc'});\n const sortFunction = sortColumn.column === 'index' ? firstBy('globalIndex', sortColumn.direction) : sortColumn.column === 'status' ? firstBy('didCheck', sortColumn.direction).thenBy('seen', sortColumn.direction).thenBy('globalIndex', 'asc') : firstBy('didMark', sortColumn.direction).thenBy('globalIndex', 'asc');\n\n const flatProgress = quizProgress\n ?.reduce((acc, {questions, isSequentialSet}, blockIndex) => [\n ...acc,\n ...(questions?.map((question, index) => ({...question, globalIndex: acc.length + index, isSequentialSet, blockIndex})) || [])\n ], [])\n ?.sort(sortFunction)\n const questionRows = flatProgress?.map((question, index) => (\n {\n !isReadinessExam && updateQuestionProgressData();\n setCurrentIndex(question.blockIndex, question.questionIndex);\n close();\n }} even={index % 2 === 0}>\n \n Question {question.globalIndex + 1}\n \n \n {(question.selectedAnswerIndex > -1) ? 'Complete' : question.seen ? 'Incomplete' : 'Unseen'}\n \n \n {question.didMark && }\n \n \n ))\n\n return (\n \n \n \n \n Navigation - select a question to go to it\n \n }\n footerContent={\n
\n {alwaysShowingExplanation ? 0 : quizProgress?.reduce((acc, {questions}) => [...acc, ...(questions || [])], [])?.filter(({seen, selectedAnswerIndex}) => !seen || selectedAnswerIndex === -1)?.length} Unseen/Incomplete\n
\n }\n mcatTheme={mcatTheme}\n color={mcatTheme === 'salmon' ? '#FDD3C5' : mcatTheme === 'black' ? 'black' : '#006DAA'}\n >\n \n \n \n setSortColumn({column: 'index', direction: sortColumn.direction === 'asc' && sortColumn.column === 'index' ? 'desc' : 'asc'})}>\n Question #\n \n \n setSortColumn({column: 'status', direction: sortColumn.direction === 'desc' && sortColumn.column === 'status' ? 'asc' : 'desc'})}>\n Status\n \n \n setSortColumn({column: 'mark', direction: sortColumn.direction === 'desc' && sortColumn.column === 'mark' ? 'asc' : 'desc'})}>\n Flagged for Review\n \n \n \n \n {questionRows}\n \n \n \n \n );\n};\n\nNavigator.defaultProps = {};\nNavigator.propTypes = {};\n\nexport default Navigator;","import React, {useEffect, useCallback, useState, useRef} from 'react';\nimport styled, {css} from 'styled-components';\n\nimport Highlightable from '@bootcamp/web/src/components/Highlightable';\n\nimport SettingsSidebar from '../../PrometricBank/components/Sidebar';\nimport Question, {ChoicesContainer, ChoiceContainer, ChoiceText, CheckButton, ChoiceInput, ChoiceFeedback, Prompt, AnswerLetter, QuestionWrapper as ImportedQuestionWrapper, SolutionWrapper} from '../../USMLEBank/Question';\nimport {Container as SolutionMetaStylable, SolutionStats} from '@bootcamp/web/src/components/QBank/Question/SolutionMeta';\nimport {IntercomButton} from '@bootcamp/web/src/components/QBank/Question/Solution.js'\n\nimport TopBar from './TopBar';\nimport BottomBar from './BottomBar';\nimport Navigator from './Navigator';\n\nimport {findByRenderType} from '@bootcamp/shared/src/util';\nimport theme from '@bootcamp/shared/src/styles/theme';\nimport {useTestNavigatorContext} from '@bootcamp/web/src/contexts/TestNavigator';\nimport {safeParse} from '@bootcamp/shared/src/util';\n\nconst HighlightWrapper = styled(Highlightable)`\n display: flex;\n flex: 1;\n overflow: hidden;\n width: 100%;\n height: 100%;\n`;\nconst QuestionContainer = styled.div`\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n user-select: none;\n`;\n const PassageContainer = styled.div`\n display: flex;\n flex-direction: row;\n background: white;\n flex: 1;\n overflow: hidden;\n\n .strikethrough {\n text-decoration: line-through;\n color: unset;\n user-select: auto !important;\n }\n\n ${({mcatTheme}) => mcatTheme === 'salmon' ? css`\n background: #FDD3C5;\n ${QuestionWrapper} {\n border-left: 6px solid black;\n }\n *::selection {\n background: black;\n color: #FDD3C5;\n }\n ` : mcatTheme === 'black' ? css`\n background: rgb(0, 0, 0);\n color: white;\n .highlight {\n color: black;\n }\n ${QuestionWrapper} {\n border-left: 6px solid white;\n }\n ${IntercomButton} {\n color: black;\n }\n *::selection {\n background: white;\n color: black;\n }\n ` : css``}\n\n `;\nconst PassageWrapper = styled.div`\n * {\n font-family: Verdana !important;\n }\n user-select: text;\n max-width: calc(50% - 13px);\n display: ${({showingPassage}) => showingPassage ? 'flex' : 'none'};\n flex-direction: column;\n flex: 1;\n overflow: auto;\n padding: 40px;\n ${({theme}) => theme.mediaQueries.tablet} {\n max-width: 100%;\n }\n ${({theme}) => theme.mediaQueries.laptop} {\n padding: 16px;\n }\n`;\nconst PassageText = styled.div`\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 150%; /* 24px */\n`;\nconst PassageTitle = styled.div`\n font-size: 19px;\n font-style: normal;\n font-weight: 700;\n line-height: 120%; /* 19.2px */\n`\nconst QuestionWrapper = styled.div`\n display: ${({showingPassage}) => !showingPassage ? 'flex' : 'none'};\n border-left: 6px solid ${({theme}) => theme.colors.prometricPalette.mcat.dark};\n flex: 1;\n * {\n font-family: Verdana;\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n border-left: none;\n }\n`;\nconst StyledQuestion = styled(Question)`\n display: flex;\n flex-direction: column;\n padding: 40px;\n user-select: text;\n\n ${Prompt} {\n margin-bottom: 8px;\n }\n ${SolutionWrapper} {\n padding: 0;\n }\n ${ChoiceFeedback} {\n top: 2px;\n }\n\n ${IntercomButton} {\n margin-bottom: 75px;\n }\n\n ${ChoicesContainer} {\n border: none;\n padding-left: 0;\n }\n ${ChoiceContainer} {\n padding-left: 0;\n }\n ${ImportedQuestionWrapper} {\n padding: 0px;\n }\n ${ChoiceInput} {\n accent-color: black;\n outline-offset: 1.5px;\n margin-top: 6px;\n align-self: flex-start;\n margin-right: 12px;\n &:checked {\n outline: 1px solid black;\n }\n }\n ${AnswerLetter} {\n font-weight: bold;\n align-self: flex-start;\n }\n ${CheckButton} {\n width: 100px;\n height: 35px;\n font-size: 16px;\n font-weight: 400;\n &:hover {\n tranform: none;\n }\n }\n ${ChoiceText} {\n display: flex;\n flex-grow: 1;\n }\n ${ChoiceText} > span {\n font-weight: bold;\n margin-right: 10px;\n }\n\n blockquote {\n padding: 15px;\n margin: 0 0 1em 0;\n font-family: 'proxima-nova', sans-serif;\n font-weight: inherit;\n font-size: inherit;\n line-height: inherit;\n background: #F9f9f9;\n color: #333;\n border-left: 5px solid ${({theme}) => theme.colors.prometricPalette.mcat.dark};\n }\n blockquote p {\n margin-bottom: 0 !important;\n }\n\n ${SolutionMetaStylable} {\n ${SolutionStats} {\n width: auto;\n }\n > div {\n padding: 12px;\n border-radius: 4px;\n background: rgb(250, 250, 250);\n ${({answeredCorrectly, answered}) => css`\n border-left: 5px solid ${!answered ? theme.colors.neutralsPalette.nclex.dark : answeredCorrectly ? theme.colors.interfacePalette.green.default : theme.colors.interfacePalette.red.default};\n `}\n ${({theme}) => theme.mediaQueries.mobileL} {\n padding: 0px 12px;\n }\n }\n * {\n font-family: proxima-nova !important;\n font-size: 14px !important;\n }\n }\n ${({theme}) => theme.mediaQueries.laptop} {\n padding: 16px;\n }\n`;\n\nconst themePalette = theme.colors.brandPalette.indigo;\n\nconst ViewSelectorContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n width: 100%;\n border-bottom: 1px solid ${({theme}) => theme.colors.neutralsPalette.light};\n`;\nconst ViewOption = styled.div`\n font-family: Verdana;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 100%; /* 16px */\n display: flex;\n align-items: center;\n justify-content: center;\n width: 50%;\n height: 40px;\n cursor: pointer;\n background: ${({theme, selected}) => !selected ? theme.colors.neutralsPalette.light : 'white'};\n color: ${({theme, selected}) => selected ? theme.colors.prometricPalette.mcat.dark : theme.colors.neutralsPalette.mcat.dark};\n`;\n\nconst PassageBlock = ({testBlock, settingsSidebarState, handleNavigation, finishedOnClick, handleSuspendClick, passageTitle, highlightMode, setHighlightMode}) => {\n const questionWrapperRef = useRef(null);\n const [width, setWidth] = useState(document.documentElement.clientWidth);\n const [showingPassage, setShowingPassage] = useState(true);\n const {methods: {updateQuizProgress, saveBlockProgress, handleSetHighlights}, variables: {quizProgress, blockIndex, template, mcatTheme}} = useTestNavigatorContext();\n const {highlights, strikethroughs} = quizProgress?.[blockIndex] || {};\n const questionSetExplanation = testBlock.components && findByRenderType(testBlock.components, 'explanation');\n const passageBlock = testBlock.type === 'passage';\n const passage = passageBlock && testBlock.components.find(component => component.renderType === 'passage').contents;\n const visibleFilterState = useState();\n\n const {questions: questionProgresses} = quizProgress[blockIndex];\n const currentQuestion = questionProgresses.find(({current}) => current);\n const questionIndex = currentQuestion?.index;\n\n const passageHtml = passage.replace(/


<\\/p>/g, '');\n\n const tooltipRef = useRef(null);\n const strikethroughTooltipRef = useRef(null);\n\n useEffect(() => {\n const handleResize = () => {\n setWidth(document.documentElement.clientWidth);\n }\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n }\n }, []);\n\n const setHighlights = useCallback((highlights, containerId) => {\n const isQuestionHighlight = ['question-wrapper', 'question-solution-wrapper'].some(key => highlights[key]);\n\n if (isQuestionHighlight) {\n handleSetHighlights({highlights});\n } else {\n // update block progress if highlighting in passage area\n handleSetHighlights({highlights: highlights?.['passage-block-passage-wrapper']}, true);\n }\n }, [questionIndex, currentQuestion?.didCheck, currentQuestion?.highlights, blockIndex]);\n\n const questionHighlights = safeParse(currentQuestion?.highlights, currentQuestion?.highlights);\n\n if (width <= 768) {\n return (\n \n \n \n setShowingPassage(true)}>Passage\n setShowingPassage(false)}>Question\n \n \n \n \n {passageTitle}\n \n \n \n \n \n \n \n } handleNavigation={handleNavigation} finishedOnClick={finishedOnClick} handleSuspendClick={handleSuspendClick} />\n \n \n );\n }\n return (\n \n \n \n \n \n {passageTitle}\n \n \n \n \n \n \n \n } handleNavigation={handleNavigation} finishedOnClick={finishedOnClick} handleSuspendClick={handleSuspendClick} />\n \n \n );\n};\n\nexport default PassageBlock;","import React, {useState} from 'react';\nimport styled, {css} from 'styled-components';\n\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {useTimerContext} from '@bootcamp/web/src/contexts/TestTimer';\nimport {useTestNavigatorContext} from '@bootcamp/web/src/contexts/TestNavigator';\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\nimport {ReactComponent as Strikethrough} from '../assets/pencil.svg';\n\nimport flag from '../assets/flag-blue.png';\nimport maximize from '../assets/maximize.png';\nimport minimize from '../assets/minimize.png';\n\nimport flagFilled from '../assets/flag-blue-filled.png';\nimport {ReactComponent as Clock} from '../assets/clock.svg';\nimport {QuestionIcon} from '../../NCLEXQBank/shared';\n\nconst Container = styled.div`\n width: 100%;\n flex: 1;\n display: flex;\n flex-direction: column;\n font-family: Tahoma !important;\n background: #F2F3F5;\n overflow: auto;\n\n ${({mcatTheme}) => mcatTheme === 'black' && css`\n background: black;\n color: white;\n ${ReviewText} {\n color: white;\n }\n ${Title} {\n color: white;\n ${ReviewButton} {\n background: transparent;\n color: white;\n }\n }\n ${ReviewTable} {\n color: white;\n background: black;\n th {\n color: white;\n }\n tr {\n border-bottom: 1px solid white;\n }\n td {\n color: white;\n span {\n color: white;\n }\n }\n \n }\n ${FilterTab} {\n color: white;\n }\n ${FilterTabContainer} {\n border-bottom: 1px solid white;\n }\n `}\n\n ${({mcatTheme}) => mcatTheme === 'salmon' && css`\n background: #FDD3C5;\n color: black;\n ${ReviewText} {\n color: black;\n }\n ${Title} {\n color: black;\n ${ReviewButton} {\n background: transparent;\n color: black;\n }\n }\n ${ReviewTable} {\n color: black;\n background: #FDD3C5;\n th {\n color: black;\n }\n tr {\n border-bottom:1px solid black;\n }\n td {\n color: black;\n span {\n color: black;\n }\n }\n }\n ${FilterTab} {\n color: black;\n }\n ${FilterTabContainer} {\n border-bottom: 1px solid black;\n }\n `}\n`;\n\nconst Title = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n font-size: 28px;\n font-weight: bold;\n color: black;\n margin: 32px;\n margin-bottom: 56px;\n margin-left: 60px;\n`;\nconst Left = styled.div`\n font-size: 21px;\n`;\nconst Right = styled.div`\n margin-left: auto;\n font-size: 15px;\n`;\nconst Time = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 2px;\n`;\nconst ClockIcon = styled(Clock)`\n width: 16px;\n height: 16px;\n margin-right: 4px;\n`;\nconst Count = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n`;\nconst CountIcon = styled(QuestionIcon)`\n margin-right: 4px;\n`;\nconst IconWrapper = styled.div`\n display: flex;\n align-items: center;\n cursor: pointer;\n`;\nconst FlagWrapper = styled(IconWrapper)`\n margin-left: auto;\n`;\nconst Highlight = styled(IconWrapper)`\n margin-right: 16px;\n`;\n\nconst CollapsibleTop = styled.div`\n display: flex;\n background: ${({theme}) => theme.colors.prometricPalette.mcat.light};\n padding: 4px;\n align-items: center;\n cursor: pointer;\n color: white;\n font-family: Verdana;\n font-size: 19px;\n font-style: normal;\n font-weight: 400;\n line-height: 100%; /* 19px */\n`;\nconst CollapsibleSection = props => {\n const [isOpen, setIsOpen] = useState(true);\n return (\n \n setIsOpen(!isOpen)}>\n

\n \n {props.title}\n
\n \n {isOpen && props.body}\n \n )\n}\n\nconst QuestionContainer = styled.div`\n width: calc(100%/3);\n display: flex;\n flex-direction: row;\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n padding: 12px 16px;\n align-items: center;\n border: 1px solid black;\n cursor: pointer;\n white-space: nowrap;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n align-items: flex-start;\n gap: 4px;\n }\n`;\n\nconst QuestionWrapper = styled.div`\n display: flex;\n width: 50%;\n align-items: center;\n\n span {\n margin-right: 4px;\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n width: auto;\n }\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n span {\n display: none;\n }\n }\n`;\nconst QuestionResult = styled.div`\n display: flex;\n justify-content: flex-end;\n color: red;\n width: 50%;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n width: auto;\n }\n`;\n\nconst ReviewTable = styled.table`\n border-collapse: collapse;\n border-radius: 8px;\n background: white;\n margin: 30px 32px;\n font-family: Arial;\n th {\n color: #666666;\n text-align: left;\n text-transform: uppercase;\n padding-left: 15px;\n padding-top: 22px;\n height: 55px;\n font-size: 12px;\n font-weight: bold;\n letter-spacing: 1.25px;\n }\n tr {\n border-bottom:1px solid #DFE1E1;\n &:last-child {\n border-bottom: none;\n }\n }\n td {\n padding-left: 15px;\n padding-top: 22px;\n height: 55px;\n vertical-align: middle;\n color: black;\n }\n`;\nconst FilterTabContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n border-bottom: 1px solid #007394;\n margin: 0px 32px;\n`;\nconst FilterTab = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n font-weight: bold;\n font-size: 12pt;\n color: #333333;\n width: 100%;\n cursor: pointer;\n ${({selected, mcatTheme}) => selected && css`\n color: #007394;\n border-bottom: 2px solid ${mcatTheme === 'salmon' ? 'black' : mcatTheme === 'black' ? 'white' : `#007394`};\n `}\n`;\n\nconst ReviewText = styled.div`\n cursor: pointer;\n font-size: 16px;\n font-weight: 700;\n color: #007394;\n`;\n\nconst ReviewButton = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n background: #007394;\n color: white;\n border-radius: 6px;\n height: 25px;\n padding: 8px 16px;\n cursor: pointer;\n font-size: 19px;\n margin-left: auto;\n margin-right: 32px;\n font-weight: 400;\n`;\n\nconst Tag = styled.span`\n background: ${({color, theme}) => theme.colors.interfacePalette[color].light};\n color: ${({color, theme}) => theme.colors.interfacePalette[color].dark} !important;\n padding: 4px 12px;\n border-radius: 100px;\n font-size: 16px;\n font-weight: bold;\n width: auto;\n`;\n\nconst SectionReview = ({highlightTooltipRef, strikethroughTooltipRef}) => {\n const [filter, setFilter] = useState('all');\n const {\n methods: {\n setCurrentIndex,\n setMcatTheme,\n setNavigationFilter,\n transitionBlock\n },\n variables: {\n quizProgress,\n mcatTheme\n }\n } = useTestNavigatorContext();\n const {modalDispatch} = useModalContext();\n const incomplete = quizProgress.reduce((acc, {questions}) => acc + (questions || []).filter(({seen, selectedAnswerIndex}) => selectedAnswerIndex === -1).length, 0);\n const unseen = quizProgress.reduce((acc, {questions}) => [...acc, ...(questions || [])], [])?.filter(({seen, selectedAnswerIndex}) => !seen && selectedAnswerIndex > -1)?.length\n const flagged = quizProgress.reduce((acc, {questions}) => [...acc, ...(questions || [])], [])?.filter(({didMark}) => didMark)?.length\n return (\n \n \n Section Review\n <ReviewButton onClick={() => {\n switch (filter) {\n case 'all':\n setNavigationFilter('all');\n setCurrentIndex(1,0);\n break;\n case 'incomplete':\n setNavigationFilter({key: 'selectedAnswerIndex', value: -1})\n transitionBlock('reviewIncomplete');\n break;\n case 'unseen':\n setNavigationFilter({key: 'seen', value: false})\n transitionBlock('reviewUnseen');\n break;\n case 'flagged':\n setNavigationFilter({key: 'didMark', value: true})\n transitionBlock('reviewMarked');\n break;\n default:\n break;\n }\n }}>\n {filter === 'all' ? 'Review All' : filter === 'incomplete' ? 'Review Incomplete' : filter === 'unseen' ? 'Review Unseen' : 'Review Flagged'}\n </ReviewButton>\n \n {/* Filter selector - All (count of all), Incomplete (count of incomplete), Unseen (count of unseen) */}\n \n setFilter('all')}>All ({quizProgress.reduce((acc, {questions}) => acc + (questions || []).length, 0)})\n {incomplete ? setFilter('incomplete')}>Incomplete ({incomplete}) : null}\n {unseen ? setFilter('unseen')}>Unseen ({unseen}) : null}\n {flagged ? setFilter('flagged')}>Flagged ({flagged}) : null}\n \n\n \n \n \n Question\n Title\n Status\n Flagged\n \n \n \n {quizProgress.reduce((acc, { questions }, blockIndex) => [...acc, ...(questions || []).map((question, index) => {\n if (filter === 'incomplete' && question.selectedAnswerIndex !== -1) return;\n if (filter === 'unseen' && question.seen) return;\n if (filter === 'flagged' && !question.didMark) return;\n return (\n \n \n {acc.length + index + 1}\n \n \n Question\n \n \n -1 ? 'green' : question.seen ? 'red' : 'yellow'}>{question.selectedAnswerIndex > -1 ? 'Complete' : question.seen ? 'Incomplete' : 'Unseen'}\n \n \n {!question.didMark ? 'No' : <>Yes }\n \n \n setCurrentIndex(blockIndex, index)}>Review\n \n \n );\n })], [])}\n \n \n );\n};\n\n\nSectionReview.defaultProps = {};\nSectionReview.propTypes = {};\n\nexport default SectionReview;","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAARCAYAAADUryzEAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAEFSURBVHgBxVLLrcIwEBw7vDuvA1MBlJAS3rtE4kYKANEBogMEBZAbAg7QAZRACe4A7sRZdsNXIvYBJBgp0fozs7PrBT6C/qruO1IIEw2KfAWi1mXHMsWWUZSnGLVtLSjg8ilwIwsMr8051LJvdTA7KPaLq7Isv4A7xghBoeUXkOwKg6AASTlVAv1ljOK4uV4IoCm/GrqLDrRqoiibE8OR78kO7OrwIHxxELktXPHL8R9/1WSiIaKfBsZJA5NEgfT/2e3M3OdAnEjdz9YzJqVPot3FHhGl9x5MkqzMAMjlNYtZbvWWHQ4rXSkeKEcmPIkh9OYZSJHGqyC9k1l4Q4BLINTxdZwAZ+9P7fjKKPAAAAAASUVORK5CYII=\"","import React, {useEffect, useState} from 'react';\nimport styled from 'styled-components';\nimport moment from 'moment';\n\nimport {useTestNavigatorContext} from '../../../contexts/TestNavigator';\nimport {TimerProvider} from '../../../contexts/TestTimer';\n\nimport {useHistory} from 'react-router-dom';\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {useTimerContext} from '@bootcamp/web/src/contexts/TestTimer';\nimport {handleGoBack, updateQuestionProgressData, updateQuestionProgressState} from '../../../helpers';\nimport {useReloadBlockerContext} from '@bootcamp/web/src/contexts/ReloadBlocker';\n\nimport {trackQuizProgressPerformance} from '@bootcamp/shared/src/requests';\nimport {SubmitAnatomyCase as SubmitModal} from '../../Modal';\nimport {useHotkeys} from 'react-hotkeys-hook';\nimport {LoadingSpinner} from '@bootcamp/web/src/components/Branding';\nimport {StartBlock} from '@bootcamp/web/src/bootcamps/pages/SelfAssessment/StartBlock';\n\n// import Exhibit from '../../components/Exhibit';\nimport {FullPageSpinner} from '../../Branding';\nimport {Column} from '../../Grid';\n\nimport TopBar from './TopBar';\nimport PassageBlock from './PassageBlock';\nimport Navigator from './Navigator';\nimport SectionReview from './SectionReview';\nimport BottomBar from './BottomBar';\nimport SettingsSidebar from '../../PrometricBank/components/Sidebar';\nimport Question from '../../USMLEBank/Question';\n\nimport {changeIntercomDisplay, getTestBlockQuestions, getQuestionParts, updateCustomTestConfig} from '@bootcamp/shared/src/util';\n\nimport theme from '@bootcamp/shared/src/styles/theme';\n\nimport debounce from 'lodash.debounce';\n\n\nconst Container = styled(Column)`\n justify-content: center;\n position: relative;\n background: ${({theme}) => theme.colors.brandPalette.royal.dark};\n\n .highlight-blue {\n background: ${({theme}) => theme.colors.prometricPalette.mcat.highlightBlue};\n }\n`;\nconst ContentArea = styled(Column)`\n opacity: ${({loading, template}) => (loading && (template === 'testReview' || template === 'quickReview')) ? 0 : 1};\n transition: opacity .5s;\n`;\nconst QuestionWrapper = styled.div`\n display: flex;\n flex-direction: row;\n flex: 1;\n overflow: hidden;\n`;\nconst Loader = styled(FullPageSpinner)`\n background: ${({color}) => color};\n`;\nconst PrometricSpinner = ({close}) => {\n useEffect(() => {\n setTimeout(close, 250)\n }, []);\n return (\n
\n \n
\n )\n}\nconst QuestionContainer = styled.div`\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n`;\n\nconst StyledQuestion = styled(Question)`\n padding: 32px;\n`;\n\nconst QBank = ({}) => {\n const themePalette = theme.colors.brandPalette.indigo;\n\n const [highlightMode, setHighlightMode] = useState('add')\n const sidebarState = useState(window.innerWidth > 768);\n const settingsSidebarState = useState(false);\n const {modalDispatch} = useModalContext();\n const history = useHistory();\n const {toggleReloadBlocker} = useReloadBlockerContext();\n const {toggleTimer, timeLeft, questionStartTime, timeUp} = useTimerContext();\n const {searchUserInteractions, DEFAULT_USER_ID, bootcamp} = useUserDataContext();\n const hideTimer = searchUserInteractions('hideTimer') === true;\n const prometricDelay = false // searchUserInteractions('prometricDelay') === false;\n\n const {\n methods: {\n transitionBlock,\n setCurrentIndex,\n autoTagOnSubmit,\n updateQuizProgress,\n saveQuestionProgresses\n },\n variables: {\n test,\n blockIndex,\n testBlockConnections,\n loading,\n template,\n quizProgress,\n skipStartBlock,\n customTestConfig,\n navigationFilter,\n type,\n totalQuestions,\n currentQuestionIndex: questionIndex,\n globalQuestionIndex,\n testProgressId,\n }\n } = useTestNavigatorContext();\n\n const isReadinessExam = type === 'readinessExam';\n const questionsSoFar = quizProgress.slice(0, blockIndex).reduce((acc, {questions}) => acc + (questions || []).length, 0);\n const {questions: questionProgresses} = quizProgress[blockIndex] || {questions: []};\n const testBlock = testBlockConnections?.[blockIndex]?.testBlock;\n const questions = getTestBlockQuestions(testBlock);\n const currentQuestion = questions[questionIndex];\n const isSectionReview = testBlock?.type === 'endBlock';\n\n const urlParams = new URLSearchParams(window.location.search);\n const isReview = urlParams.get('review');\n const urlTestProgressId = urlParams.get('testProgressId');\n const urlParts = window.location.pathname.split('/');\n const testRoute = urlParts.slice(-1)[0];\n\n\n const displayEndBlockNavigation = (cancelable=true) => {\n if (!cancelable) {\n return modalDispatch({\n type: 'open',\n component: ({close}) => (\n {\n if (['tbcSavedBank', 'customTest'].includes(template) && !questionProgresses?.[questionIndex]?.didCheck) {\n await updateQuestionProgressData(updateQuizProgress, questionStartTime, questionProgresses, questionIndex);\n }\n\n setCurrentIndex(blockIndex + 1, 0);\n }\n }}\n cancelConfig={{}}\n />\n )\n })\n }\n modalDispatch({\n type: 'open',\n component: ({close}) => (\n {\n if (['tbcSavedBank', 'customTest'].includes(template) && !questionProgresses?.[questionIndex]?.didCheck) {\n await updateQuestionProgressData(updateQuizProgress, questionStartTime, questionProgresses, questionIndex);\n }\n\n setCurrentIndex(blockIndex + 1, 0);\n }\n }}\n cancelConfig={{\n text: 'Remain in Block',\n onCancel: close\n }}\n />\n )\n })\n }\n\n const setQuestionIndex = index => {\n // TODO maybe move this logic into the test navigator...\n const blockTransition = index < 0\n ? 'previous'\n : index === questions.length\n ? 'next'\n : null;\n\n if (!blockTransition) {\n return setCurrentIndex(blockIndex, index);\n }\n\n transitionBlock(blockTransition);\n };\n\n const handleNextQuestion = ( ) => {\n if (navigationFilter.key && navigationFilter.value !== 'all') {\n const nextIndex = questionProgresses.findIndex((progressObject, index) => {\n if (navigationFilter.key === 'search') {\n const {prompt, answers, explanation, questionHeader} = getQuestionParts(progressObject.question);\n const search = [prompt, answers, explanation, questionHeader].join(' ').toLowerCase();\n return search.includes(navigationFilter.value.toLowerCase()) && index > questionIndex;\n }\n if (navigationFilter.key === 'didSelectCorrectAnswer' && navigationFilter.value === false) {\n return progressObject[navigationFilter.key] === navigationFilter.value && index > questionIndex && (progressObject.didCheck || template === 'testReview' || customTestConfig?.submitted);\n }\n return progressObject[navigationFilter.key] === navigationFilter.value && index > questionIndex\n });\n\n if (nextIndex !== -1) {\n setQuestionIndex(nextIndex)\n } else {\n transitionBlock('nextFilterActive');\n }\n } else {\n const nextIndex = questionIndex + 1;\n setQuestionIndex(nextIndex);\n }\n };\n\n const handlePreviousQuestion = () => {\n if (navigationFilter.key) {\n const prevIndex = (questions.length - 1) - questionProgresses.slice().reverse().findIndex((progressObject, index) => {\n if (navigationFilter.key === 'search') {\n const {prompt, answers, explanation, questionHeader} = getQuestionParts(progressObject.question);\n const search = [prompt, answers, explanation, questionHeader].join(' ').toLowerCase();\n return search.includes(navigationFilter.value.toLowerCase()) && index > ((questions.length - 1) - questionIndex);\n }\n if (navigationFilter.key === 'didSelectCorrectAnswer' && navigationFilter.value === false) {\n return progressObject[navigationFilter.key] === navigationFilter.value && index > ((questions.length - 1) - questionIndex) && (progressObject.didCheck || template === 'testReview' || customTestConfig?.submitted);\n }\n return progressObject[navigationFilter.key] === navigationFilter.value && index > ((questions.length - 1) - questionIndex)\n });\n if (prevIndex !== -1 && prevIndex !== questions.length) {\n setQuestionIndex(prevIndex);\n } else {\n setQuestionIndex(-1);\n }\n } else {\n const prevIndex = questionIndex - 1;\n setQuestionIndex(prevIndex);\n }\n };\n\n const handleNavigation = (direction) => {\n if (timeUp) return;\n\n const onLastQuestion = (globalQuestionIndex === totalQuestions) || ultimateQuestionReached;\n\n // navigation handle wrapper for syncing question progress state\n const handler = onLastQuestion && direction === 'next' && template !== 'testReview' && isReadinessExam\n ? () => transitionBlock('review')\n : direction === 'previous'\n ? handlePreviousQuestion\n : ultimateQuestionReached\n ? handleSubmitClick\n : handleNextQuestion;\n\n prometricDelay && handler != handleSubmitClick && modalDispatch({\n type: 'open',\n component: PrometricSpinner,\n modalContainerStyle: theme => `\n transition: 0s;\n `\n })\n\n // only update question progresses for custom tests for now\n if (['tbcSavedBank', 'customTest'].includes(template) && !customTestConfig?.submitted && !questionProgresses?.[questionIndex]?.didCheck) {\n updateQuestionProgressData(updateQuizProgress, questionStartTime, questionProgresses, questionIndex);\n }\n\n handler();\n };\n\n const handleSuspendClick = async () => {\n const modalText = {\n headerText: 'Would you like to pause your review?',\n bodyText: 'You’ll be able to resume your review whenever you’re ready. Your tagged questions are automatically saved.',\n confirmText: 'Pause Review',\n cancelText: 'Return to Review'\n };\n modalDispatch({\n type: 'open',\n modalContainerStyle: theme => `\n background: transparent;\n `,\n component: ({close}) => {\n return (\n {\n // if (type === 'readinessExam') {\n\n // if (!isReview) {\n // udpateQuestionTime();\n // // make sure current question state is saved\n // await saveAndTrackProgress();\n // // auto tag questions\n // await autoTagOnSubmit();\n // }\n\n // toggleReloadBlocker(false);\n // setTimeout(() => replace(`/${bootcamp}/previous-tests/review?id=${test.id}&testProgressId=${encodeURIComponent(testProgressId || urlTestProgressId)}&testRoute=nclex/next-gen-readiness-exams/qbanks/${testRoute}`), 100);\n // return;\n // }\n\n // const testStorageKey = customTestConfig?.config?.testStorageKey;\n\n // try {\n // // update custom test config to indicate suspension\n // const updatedConfig = {\n // ...customTestConfig,\n // suspended: false,\n // timeLeft: null,\n // submitted: true,\n // };\n\n // await Storage.put(testStorageKey, JSON.stringify(updatedConfig), {contentType: 'application/json' });\n\n // } catch (error) {\n // console.log('error marking test as submitted', error);\n // }\n\n // if (customTestConfig?.config && !customTestConfig.submitted) {\n // // only track performance if not in tutor mode\n // if (!tutorMode) {\n // await trackNCLEXQuizProgressPerformance(DEFAULT_USER_ID, quizProgress, `${DEFAULT_USER_ID}#${bootcamp}_Performance`);\n // }\n // // auto tag in all custom tests\n // await autoTagOnSubmit();\n // }\n handleGoBack();\n }\n }}\n cancelConfig={{\n text: modalText.cancelText,\n onCancel: () => {\n close();\n }\n }}\n />\n )\n },\n enableClickClose: false,\n })\n };\n\n const handleSubmitClick = async () => {\n const {headerText, bodyText, confirmText, cancelText} = ['quickReview', 'testReview'].includes(template) ?\n {\n headerText: `Nice work! You’ve reached the end of your review.`,\n bodyText: `Would you like to keep reviewing or complete your review?`,\n confirmText: `Complete Review`,\n cancelText: `Keep Reviewing`\n }\n : (customTestConfig?.submitted || !customTestConfig) && type !== 'readinessExam'\n ? {\n headerText: 'Would you like to end your review?',\n bodyText: 'You’ll be able to resume your review whenever you’re ready. Your tagged questions are automatically saved.',\n confirmText: 'End Review',\n cancelText: 'Return to Review'\n } : {\n headerText: 'End Test',\n bodyText: 'Do you want to end this test? Once ended you can review your test results from the previous tests page.',\n confirmText: 'End Test',\n cancelText: 'Return to Test'\n }\n return modalDispatch({\n type: 'open',\n modalContainerStyle: theme => `\n background: transparent;\n `,\n component: ({close}) => {\n return (\n {\n await updateCustomTestConfig(customTestConfig, {\n suspended: false,\n timeLeft: null,\n submitted: true,\n });\n\n // make sure current question progress is saved on end\n if (['tbcSavedBank', 'customTest'].includes(template) && !!questionProgresses?.[questionIndex] && !questionProgresses?.[questionIndex]?.didCheck) {\n await updateQuestionProgressData(updateQuizProgress, questionStartTime, questionProgresses, questionIndex);\n }\n\n const shouldAutoTag = ((customTestConfig?.config && !customTestConfig?.submitted) || (isReadinessExam && template !== 'testReview'));\n const shouldTrackPerformance = shouldAutoTag && !customTestConfig?.config?.tutorMode;\n\n if (shouldAutoTag) {\n if (shouldTrackPerformance) {\n await trackQuizProgressPerformance(DEFAULT_USER_ID, quizProgress, `${DEFAULT_USER_ID}#${bootcamp}_Performance`);\n }\n await autoTagOnSubmit();\n }\n\n\n\n toggleReloadBlocker(false);\n if (type === 'readinessExam') {\n setTimeout(() => history.replace(`/${bootcamp}/cars-practice-tests/practice-tests/${testRoute}/review?id=${test.id}&testProgressId=${encodeURIComponent(testProgressId || urlTestProgressId)}&testRoute=/mcat/cars-practice-tests/practice-tests/${testRoute}`), 100);\n } else {\n setTimeout(() => handleGoBack(history), 100);\n }\n }\n }}\n />\n )\n },\n enableClickClose: true,\n })\n };\n\n const filterActive = navigationFilter && navigationFilter.key;\n const nextFilteredIndex = questionProgresses?.findIndex((progressObject, index) => {\n if (navigationFilter.key === 'search') {\n const {prompt, answers, explanation, questionHeader} = getQuestionParts(progressObject.question);\n const search = [prompt, answers, explanation, questionHeader].join(' ').toLowerCase();\n return search.includes(navigationFilter.value.toLowerCase()) && index > questionIndex;\n }\n if (navigationFilter.key === 'didSelectCorrectAnswer' && navigationFilter.value === false) {\n return progressObject.didSelectCorrectAnswer === false && progressObject.didCheck && index > questionIndex;\n }\n return progressObject[navigationFilter.key] === navigationFilter.value && index > questionIndex\n });\n\n const nextBlocksMatchFilter = quizProgress.slice(blockIndex + 1).map(({questions}) => questions || []).flat().findIndex((progressObject) => {\n if (navigationFilter.key === 'search') {\n const {prompt, answers, explanation, questionHeader} = getQuestionParts(progressObject.question);\n const search = [prompt, answers, explanation, questionHeader].join(' ').toLowerCase();\n return search.includes(navigationFilter.value.toLowerCase());\n }\n if (navigationFilter.key === 'didSelectCorrectAnswer' && navigationFilter.value === false) {\n return progressObject.didSelectCorrectAnswer === false && progressObject.didCheck;\n }\n\n return progressObject[navigationFilter.key] === navigationFilter.value\n }) !== -1;\n\n const ultimateQuestionReached = (questionIndex === questions.length - 1 && blockIndex === testBlockConnections.length - 2) || (filterActive && nextFilteredIndex === -1 && !nextBlocksMatchFilter);\n\n\n const onClickMasteryButton = (masteryLevel) => {\n const updatedQuestionProgress = updateQuestionProgressState(updateQuizProgress, questionProgresses, questionIndex, {masteryLevel, question: {...currentQuestion, masteryLevel}});\n saveQuestionProgresses([updatedQuestionProgress]);\n handleNavigation('next');\n };\n\n useEffect(() => {\n toggleTimer(!hideTimer);\n }, [hideTimer]);\n\n useEffect(() => {\n if (timeUp && isReadinessExam) {\n modalDispatch({\n type: 'open',\n component: SubmitModal,\n enableClickClose: false,\n componentProps: {\n headerText: 'No Time Remaining',\n prometricStyling: true,\n bodyText: 'You have no more time remaining.',\n cancelConfig: {\n text: ''\n },\n confirmConfig: {\n text: 'View Test Results',\n colorConfig: themePalette,\n onConfirm: async () => {\n await updateCustomTestConfig(customTestConfig, {\n suspended: false,\n timeLeft: null,\n submitted: true,\n });\n\n if (['tbcSavedBank', 'customTest'].includes(template) && !questionProgresses?.[questionIndex]?.didCheck) {\n await updateQuestionProgressData(updateQuizProgress, questionStartTime, questionProgresses, questionIndex);\n }\n\n const shouldAutoTag = ((customTestConfig?.config && !customTestConfig?.submitted) || (isReadinessExam && template !== 'testReview'));\n const shouldTrackPerformance = shouldAutoTag && !customTestConfig?.config?.tutorMode;\n\n if (shouldAutoTag) {\n if (shouldTrackPerformance) {\n await trackQuizProgressPerformance(DEFAULT_USER_ID, quizProgress, `${DEFAULT_USER_ID}#${bootcamp}_Performance`);\n }\n await autoTagOnSubmit();\n }\n\n toggleReloadBlocker(false);\n\n if (type === 'readinessExam') {\n setTimeout(() => history.replace(`/${bootcamp}/cars-practice-tests/practice-tests/${testRoute}/review?id=${test.id}&testProgressId=${encodeURIComponent(testProgressId || urlTestProgressId)}&testRoute=/mcat/cars-practice-tests/practice-tests/${testRoute}`), 100);\n } else {\n setTimeout(() => handleGoBack(history), 100);\n }\n },\n shouldRedirect: false,\n }\n },\n })\n return;\n }\n\n if (customTestConfig?.config?.timed && timeUp) {\n modalDispatch({\n type: 'open',\n component: SubmitModal,\n enableClickClose: false,\n componentProps: {\n headerText: 'No Time Remaining',\n prometricStyling: true,\n bodyText: 'You have no more time remaining. You can review your test results from the previous tests page.',\n cancelConfig: {\n text: ''\n },\n confirmConfig: {\n text: 'View Test Results',\n colorConfig: themePalette,\n onConfirm: async () => {\n await updateCustomTestConfig(customTestConfig, {\n suspended: false,\n timeLeft: null,\n submitted: true,\n });\n\n if (template === 'customTest' && !questionProgresses?.[questionIndex]?.didCheck) {\n await updateQuestionProgressData(updateQuizProgress, questionStartTime, questionProgresses, questionIndex);\n }\n\n const shouldAutoTag = ((customTestConfig?.config && !customTestConfig?.submitted) || (isReadinessExam && template !== 'testReview'));\n const shouldTrackPerformance = shouldAutoTag && !customTestConfig?.config?.tutorMode;\n\n if (shouldAutoTag) {\n if (shouldTrackPerformance) {\n await trackQuizProgressPerformance(DEFAULT_USER_ID, quizProgress, `${DEFAULT_USER_ID}#${bootcamp}_Performance`);\n }\n await autoTagOnSubmit();\n }\n\n toggleReloadBlocker(false);\n setTimeout(() => handleGoBack(history), 100);\n },\n shouldRedirect: false,\n }\n },\n })\n };\n }, [timeUp]);\n\n useHotkeys('left, option+p', () => isSectionReview ? true : handleNavigation('previous'), [handleNavigation]);\n useHotkeys('right, option+n', () => isSectionReview ? true : handleNavigation('next'), [handleNavigation]);\n\n const blockRenderer = (testBlockConnection) => {\n const defaultBlocksForTemplate = {\n masteryReview: {testBlock: {type: 'startMasteryReview'}},\n tbcQuestionBank: {testBlock: {type: 'startBlock'}},\n bookmarkedQuestionReview: {testBlock: {type: 'startBookmarkedQuestionReview'}},\n quickReview: {testBlock: {type: 'startQuickReview'}},\n // customTest: {testBlock: {type: 'startQuickReview'}},\n }[template] || {testBlock: {}};\n\n const {testBlock} = testBlockConnection || defaultBlocksForTemplate;\n\n\n switch (testBlock.type) {\n case 'startBlock':\n if (loading) return ;\n if (isReadinessExam) {\n return (\n {\n const formattedDuration = moment.utc(moment.duration(timeLimit * timeMultiplier, 'minutes').asMilliseconds()).format('H [hours] m [minutes]');\n const questionCount = test?.blockConnections?.items?.map(({testBlock}) => getTestBlockQuestions(testBlock).length).reduce((acc, val) => acc + val, 0);\n return (\n
    \n
  1. You will have {formattedDuration} to answer {questionCount} questions, similar to the real MCAT.
  2. \n
  3. You cannot pause the exam and must answer all questions at once, set aside at least {formattedDuration} to complete the Practice Test.
  4. \n
  5. Your score report will appear after finishing the exam.
  6. \n
\n )\n }}\n startText={'Start Practice Test'}\n />\n )\n }\n return transitionBlock('nextUntagged')\n case 'passage':\n const passageTitle = DEFAULT_USER_ID === 'matthewdempsey' ? `Passage` : `Passage ${blockIndex} (Questions ${questionsSoFar + 1}-${questionsSoFar + questions.length})`;\n return (\n \n )\n case 'questionSet':\n case 'caseQuestionSet':\n return (\n \n \n \n \n \n \n \n \n )\n case 'endBlock':\n return (\n \n \n \n } handleNavigation={handleNavigation} finishedOnClick={handleSubmitClick} handleSuspendClick={handleSuspendClick} />\n \n \n );\n default:\n return null;\n }\n }\n\n const examComponent = blockRenderer(testBlockConnections[blockIndex]);\n\n const updateSidebarState = debounce(event => {\n const setSidebarState = sidebarState[1];\n setSidebarState(!(window.innerWidth < 768));\n }, 150);\n\n useEffect(() => {\n window.addEventListener('resize', updateSidebarState);\n return () => window.removeEventListener('resize', updateSidebarState);\n }, []);\n\n useEffect(() => {\n\n // NOTE annoyingly intercom launcher classname / dom element hierarchy varies from production to staging/local\n // changing the styles for the .intercom-launcher class doesn't work on staging/local but should work in production\n // (it's what we use in the Qbank component to hide the launcher on mount)\n changeIntercomDisplay('', '.intercom-launcher', ['bottom: 64px !important;']);\n\n return () => {\n changeIntercomDisplay('', '.intercom-launcher', ['bottom: 20px !important;']);\n }\n }, []);\n\n const width = window.innerWidth;\n\n return (\n {\n const setSidebarState = sidebarState[1];\n if (width <= 1200) setSidebarState(false);\n }}>\n \n \n \n );\n}\n\nconst WrappedQbank = props => {\n const {\n variables: {\n quizProgress,\n blockIndex,\n tutorMode,\n }\n } = useTestNavigatorContext();\n\n const {questions: questionProgresses} = quizProgress[blockIndex] || {questions: []};\n const questionIndex = questionProgresses?.findIndex(({current}) => current);\n\n const timeLimit = 90;\n\n return (\n \n \n \n )\n}\n\nexport default WrappedQbank;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport QBank from './components/QBank';\nimport scrollArrow from '@bootcamp/web/src/components/MCATBank/assets/scroll-arrow.svg';\nimport scrollArrowUp from '@bootcamp/web/src/components/MCATBank/assets/scroll-arrow-up.svg';\nimport {useTestNavigatorContext} from '@bootcamp/web/src/contexts/TestNavigator';\n\nconst Container = styled.div`\n display: flex;\n width: 100%;\n height: 100%;\n position: relative;\n background: white;\n\n * ::-webkit-scrollbar {\n width: 18px;\n }\n\n /* Track */\n * ::-webkit-scrollbar-track {\n box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.50) inset;\n background: white;\n }\n\n /* Handle */\n * ::-webkit-scrollbar-thumb {\n background: ${({theme, mcatTheme}) => mcatTheme === 'salmon' ? 'black' : mcatTheme === 'black' ? 'white' : theme.colors.prometricPalette.mcat.grey};\n }\n\n /* Buttons */\n * ::-webkit-scrollbar-button:start:decrement {\n background-image: url(${scrollArrowUp});\n background-color: ${({theme, mcatTheme}) => mcatTheme === 'salmon' ? 'black' : mcatTheme === 'black' ? 'white' : theme.colors.prometricPalette.mcat.light};\n background-position: center;\n background-repeat: no-repeat;\n background-size: 14px;\n }\n * ::-webkit-scrollbar-button:start:increment {\n height: 1px;\n }\n * ::-webkit-scrollbar-button:end:increment {\n background-image: url(${scrollArrow});\n background-color: ${({theme, mcatTheme}) => mcatTheme === 'salmon' ? 'black' : mcatTheme === 'black' ? 'white' : theme.colors.prometricPalette.mcat.light};\n background-position: center;\n background-repeat: no-repeat;\n background-size: 14px;\n }\n * ::-webkit-scrollbar-button:end:decrement {\n height: 1px;\n }\n`;\n\n\nconst MCATQBank = () => {\n const {\n variables: {\n mcatTheme\n }\n } = useTestNavigatorContext();\n\n return (\n \n \n \n );\n};\n\nexport default MCATQBank;","import React from 'react';\nimport {Helmet} from 'react-helmet';\n\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {TestNavigatorProvider} from '../../../contexts/TestNavigator';\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport MCATBank from '../../../components/MCATBank';\nimport USMLEBank from '../../../components/USMLEBank';\nimport NCLEXBank from '../../../components/NCLEXQBank';\nimport QBank from '../../../components/QBank';\n\nimport {getInObj, deSlugify} from '@bootcamp/shared/src/util';\n\nimport styled from 'styled-components';\n\n\nconst Container = styled.div`\n z-index: 10;\n height: 100%;\n position: relative;\n background: ${({theme}) => theme.colors.neutralsPalette.white};\n`;\n\nconst slugOverrides = {\n 'ans': 'ANS',\n 'cns-and-sedation': 'CNS and Sedation',\n 'occlusion-and-TMJ': 'Occlusion and TMJ',\n}\n\nconst AppQuestionBank = ({match, contentId, themePalette, educators, name}) => {\n const {config} = useBootcampConfigContext();\n const {cognitoUser, bootcamp} = useUserDataContext();\n\n const {path, params: {classroom, contentSlug, contentType}} = match;\n\n const username = getInObj(['attributes', 'name'], cognitoUser, '');\n const userId = getInObj(['username'], cognitoUser, '');\n\n const startBlockTitle = deSlugify(match.params.chapter);\n const testTitle = slugOverrides[match.params.contentSlug] || deSlugify(match.params.contentSlug);\n const siteTitle = config.meta.siteTitle;\n\n const alignQuestion = 'center';\n\n const type = (!!name?.match('Readiness') && classroom !== 'testing') || (bootcamp === 'mcat' && contentType === 'practice-tests')\n ? 'readinessExam'\n : '';\n\n // setup for getting slug routing without urlParams for progress\n const testFilter = deSlugify(classroom);\n const {id: tagId} = !!path.match('progress')\n ? config.classrooms\n .find(({route}) => route === classroom)\n .contentTypes\n .find(({route}) => route === 'practice-tests')\n .content\n .find(({route}) => route === 'progress')\n .content\n .find(({route}) => route === contentSlug)\n : {id: null};\n\n const QuestionBank = bootcamp === 'mcat'\n ? MCATBank\n : bootcamp === 'nclex'\n ? NCLEXBank\n : contentType === 'board-banks'\n ? USMLEBank\n : QBank;\n\n const urlParams = new URLSearchParams(window.location.search);\n const isReview = urlParams.get('testProgressId');\n\n return (\n \n \n {siteTitle} | Question Bank | {testTitle}\n \n \n \n \n \n \n );\n}\n\nAppQuestionBank.propTypes = {};\nAppQuestionBank.defaultProps = {};\n\nexport default AppQuestionBank;\n","import React from 'react';\nimport styled from 'styled-components';\n\nconst Container = styled.div`\n`;\n\nconst htmlString = `\n
\n\t\t\t
\n\t\t\t\t
\n\n\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t

Angle Ranking Practice Generator

\n\t\t\t\t\t\t\t\t\t\t\t

Question 1 of 1

\n\t\t\t\t\t\t\t\t\t\t\t\t

Time Remaining: 30On/Off

\n\t\t\t\t\t\t\t\t\t\t\t\t

Average Time: 0Seconds

\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\n\n\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
Correct:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t0 | Incorrect:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t0 |\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tReset | Current Difficulty:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\n\t\t\t\t
\n\n\t\t\t
\n\n\t\t
\n`\n\nconst AngleRanking = () => (\n \n);\n\nexport default AngleRanking;\n","import React, {useEffect} from 'react';\nimport styled from 'styled-components';\nimport * as THREE from 'three';\n\nconst Container = styled.div`\n`;\n\nconst newHtmlString = `\n
\n \n\n
\n\n
\n\n

Cube Counting Practice Generator

\n\n
\n\n
\n\n

This is the cube counting generator. Please read the following before starting:

\n\n

1. If this is your first time, take a second to read the official cube counting instructions.
\n 2. If you're having trouble, check out the PAT Academy Cube Counting Tutorial.
\n 3. This generator creates entirely new, unique questions on the fly, so practice as much as you'd like!

\n\n

Try to spend 15 minutes practicing with this generator each day to increase your speed and efficiency.

\n\n

Start Generator

\n\n\n
\n

Official Cube Counting Instructions

\n\n

Each figure has been made by cementing together cubes of the same size. After being cemented each figure was painted on all sides EXCEPT FOR THE BOTTOM ON WHICH IT IS RESTING. The only hidden cubes are those required to support other cubes.

\n\n

For the following questions you are to examine each figure closely to determine how many cubes have:\n

    \n
  • Only one of their sides painted
  • \n
  • Only two of their sides painted
  • \n
  • Only three of their sides painted
  • \n
  • Only four of their sides painted
  • \n
  • All five of their sides painted.
  • \n

\n\n

Note: There are no problems for which zero (0) is the correct answer.

\n\n
\n\n
\n\n
\n\n
\n\n
\n\n
\n
\n

Cube Counting Practice Generator

\n

Question 1 of 1

\n

Time Remaining: 30On/Off

\n

Average Time: 0Seconds

\n
\n
\n\n
\n\n
\n

How many cubes have 0 of their exposed sides painted?

\n
\n \n
\n
\n \n
\n
\n
\n
\n

\n \n \n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n\n
\n\n
\n\n
\n\n
Correct: 0 | Incorrect: 0 |Reset | Current Difficulty:\n \n \n
\n\n
\n\n
\n\n
\n\n
\n\n
\n\n`\n\nconst htmlString = `\n
\n\n
\n\n
\n\n

Cube Counting Practice Generator

\n\n
\n\n
\n\n

This is the cube counting generator. Please read the following before starting:

\n\n

1. If this is your first time, take a second to read the official cube counting instructions.
\n 2. If you're having trouble, check out the PAT Academy Cube Counting Tutorial.
\n 3. This generator creates entirely new, unique questions on the fly, so practice as much as you'd like!

\n\n

Try to spend 15 minutes practicing with this generator each day to increase your speed and efficiency.

\n\n

Start Generator

\n\n\n
\n

Official Cube Counting Instructions

\n\n

Each figure has been made by cementing together cubes of the same size. After being cemented each figure was painted on all sides EXCEPT FOR THE BOTTOM ON WHICH IT IS RESTING. The only hidden cubes are those required to support other cubes.

\n\n

For the following questions you are to examine each figure closely to determine how many cubes have:\n

    \n
  • Only one of their sides painted
  • \n
  • Only two of their sides painted
  • \n
  • Only three of their sides painted
  • \n
  • Only four of their sides painted
  • \n
  • All five of their sides painted.
  • \n

\n\n

Note: There are no problems for which zero (0) is the correct answer.

\n\n
\n\n
\n\n
\n\n
\n\n
\n\n
\n
\n

Cube Counting Practice Generator

\n

Question 1 of 1

Time Remaining: 30On/Off

\n
\n\n
\n\n
\n

How many cubes have 0 of their exposed sides painted?

\n
\n \n
\n

\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n\n
\n\n
\n\n
\n\n
Correct: 0 | Incorrect: 0 |Reset | Current Difficulty:
\n\n
\n\n
\n\n
\n\n
\n\n
\n`;\n\nconst CubeCounting = () => {\n\n useEffect(() => {\n window.THREE = THREE;\n }, []);\n\n return (\n \n );\n}\n\n\nexport default CubeCounting;","import React from 'react';\nimport styled from 'styled-components';\n\nconst Container = styled.div`\n`;\n\nconst htmlString = `\n\t
\n\n\t\t
\n\n\t\t\t
\n\n\t\t\t\t
\n\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t

Hole Punching Practice Generator

\n\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t

This is the hole punching generator. Please read the following before starting:

\n\n\t\t\t\t\t\t\t\t

1. If this is your first time, take a second to read the official hole punching instructions.
\n\t\t\t\t\t\t\t\t2. If you're having trouble, check out the PAT Academy Hole Punching Tutorial.
\n\t\t\t\t\t\t\t\t3. This generator creates entirely new, unique questions on the fly, so practice as much as you'd like!

\n\n\t\t\t\t\t\t\t\t

Try to spend 15 minutes practicing with this generator each day to increase your speed and efficiency.

\n\n\t\t\t\t\t\t\t\t

Start Generator

\n\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t

Official Hole Punching Instructions

\n\n\t\t\t\t\t\t\t\t

A flat square sheet of paper is folded one or more times. The broken lines indicate the original position of the paper. The solid lines indicate the position of the folded paper. The paper is never turned or twisted. The folded paper always remains within the edges of the original square. There may be from one to four folds in each item. After the last fold a hole is punched in the paper. Your task is to unfold the paper mentally and determine the position of the holes on the original square. Choose the pattern of black circles that indicates the position of the holes on the original square sheet of paper. There is only one correct pattern for each item.

\n\n\t\t\t\t\t\t\t\t

Here's an example:

\n\n\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t

Figure B shows the result of the first fold. Figure C shows the position of the punched hole on the folded paper. When the paper is unfolded the pattern of the holes on the original square is shown by the dark circles in Figure D. The answer has two holes since the paper was two thicknesses when punched.

\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t

Hole Punching Practice Generator

\n\t\t\t\t\t\t\t\t\t\t

Question 1 of 1

\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t

Time Remaining:\n\t\t\t\t\t\t\t\t\t\t\t\t\t30\n\t\t\t\t\t\t\t\t\t\t\t\t\tOn/Off\n\t\t\t\t\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t\t\t\t\t

Average Time:\n\t\t\t\t\t\t\t\t\t\t\t\t\t0Seconds\n\t\t\t\t\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t

Answer

\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t

Fold 1

\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t

Fold 2

\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t

Fold 3

\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t

Fold 4

\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t

Hole Punch

\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tA\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\tB\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\tC\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tD\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\tE\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\n\n\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
Correct: 0 | Incorrect: 0 |\n\t\t\t\t\t\t\t\t\t\t\t\t\tReset\n\t\t\t\t\t\t\t\t\t\t\t\t\t| Toggle: Explanation / Grid |\n\t\t\t\t\t\t\t\t\t\t\t\t\tCurrent Difficulty:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\n\t\t\t\t
\n\n\t\t\t
\n\n\t\t
\n\n\t
\n`;\n\nconst HolePunching = () => (\n \n);\n\nexport default HolePunching;\n","import React from 'react';\nimport styled from 'styled-components';\nimport 'jquery-ui';\n\nconst Container = styled.div`\n`;\n\nconst newHtmlString = `\n\t
\n\n\t\t
\n\n\t\t\t
\n\n\t\t\t\t
\n\n\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t

Pattern Folding Practice Generator

\n\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t

This is the pattern folding generator. Please read the following before starting:

\n\n\t\t\t\t\t\t\t

1. If this is your first time, take a second to read the official pattern folding instructions.
\n\t\t\t\t\t\t\t\t2. If you're having trouble, check out my pattern folding tutorial video.
\n\t\t\t\t\t\t\t\t3. This generator creates entirely new, unique questions on the fly, so practice as much as you'd like!

\n\n\t\t\t\t\t\t\t

Try to spend 15 minutes practicing with this generator each day to increase your speed and efficiency.

\n\n\t\t\t\t\t\t\t

Start Generator

\n\n\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t

Official Pattern Folding Instructions

\n\n\t\t\t\t\t\t\t\t

A flat pattern will be presented. This pattern is to be folded into a three dimensional figure. The correct figure is one of the four given at the right of the pattern. There is only one correct figure in each set. The outside of the pattern is what is seen at the left. The outside of the pattern must remain on the outside of the three dimensional figure.

\n\n\t\t\t\t\t\t\t\t

Here's an example:

\n\n\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\t

One of the above figures (A, B, C, or D) can be formed from the flat pattern given at the left. The only figure that corresponds to the pattern is [D]. If the shaded surfaces are looked at as the sides of the box, then all four sides must be shaded, while the top and bottom are white.

\n\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t

Pattern Folding Practice Generator

\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t

Question 1 of 1

Time Remaining: 30On/Off

\n\t\t\t\t\t\t\t\t\t

Average Time: 0Seconds

\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t

Click and drag to rotate

\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t

A

\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t

B

\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t

C

\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t

D

\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tFolds: \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\n\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t
Correct: 0 | Incorrect: 0 |Reset | Current Difficulty:
\n\n\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\n\t\t\t
\n\n\t\t
\n\n\t
\n`;\n\nconst htmlString = `\n
\n\n\t\t
\n\n\t\t\t
\n\n\t\t\t\t
\n\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t

Pattern Folding Practice Generator

\n\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t

This is the pattern folding generator. Please read the following before starting:

\n\n\t\t\t\t\t\t\t\t

1. If this is your first time, take a second to read the official pattern folding instructions.
\n\t\t\t\t\t\t\t\t2. If you're having trouble, check out my pattern folding tutorial video.
\n\t\t\t\t\t\t\t\t3. This generator creates entirely new, unique questions on the fly, so practice as much as you'd like!

\n\n\t\t\t\t\t\t\t\t

Try to spend 15 minutes practicing with this generator each day to increase your speed and efficiency.

\n\n\t\t\t\t\t\t\t\t

Start Generator

\n\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t

Official Pattern Folding Instructions

\n\n\t\t\t\t\t\t\t\t

A flat pattern will be presented. This pattern is to be folded into a three dimensional figure. The correct figure is one of the four given at the right of the pattern. There is only one correct figure in each set. The outside of the pattern is what is seen at the left. The outside of the pattern must remain on the outside of the three dimensional figure.

\n\n\t\t\t\t\t\t\t\t

Here's an example:

\n\n\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t

One of the above figures (A, B, C, or D) can be formed from the flat pattern given at the left. The only figure that corresponds to the pattern is [D]. If the shaded surfaces are looked at as the sides of the box, then all four sides must be shaded, while the top and bottom are white.

\n\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t

Pattern Folding Practice Generator

\n\t\t\t\t\t\t\t\t\t\t

Question 1 of 1

Time Remaining: 30On/Off

\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t

A

\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t

B

\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t

C

\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t

D

\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\n\n\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t\t\t
Correct: 0 | Incorrect: 0 |Reset | Current Difficulty:
\n\n\t\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\n\t\t\t\t
\n\n\t\t\t
\n\n\t\t
\n\n\t
\n`;\n\nconst PatternFolding = () => (\n \n);\n\nexport default PatternFolding;\n","import React from 'react';\nimport styled from 'styled-components';\n\nconst Container = styled.div`\n width: 100%;\n height: 100%;\n`;\n\nconst htmlString = `\n
\n\n\t\t
\n\n\n\t\t\t
\n\n\t\t\t\t
\n\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t

Top Front End Generator

\n\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t

This is the top front end generator. Please read the following before starting:

\n\n\t\t\t\t\t\t\t\t

1. Please note: the difficulty of the real PAT TFE section is more similar to the TFE question banks and practice tests. Use this TFE generator to get daily TFE reps, and then head to the question banks and practice tests for test-representative practice.

\n\t\t\t\t\t\t\t\t

2. It is strongly recommended you use Google Chrome on Windows or Safari on Mac for the best performance.

\n\t\t\t\t\t\t\t\t

3. After selecting an answer choice, you can rotate the 3D image that appears using your mouse. Click and drag to rotate the shape. Look at the shape from the top, front, and end views to understand why the lines appear either solid or dotted.

\n\t\t\t\t\t\t\t\t

4. I highly recommend the PAT Academy TFE Tutorial too. If this is your first time, take a second to read the official TFE instructions.

\n\n\t\t\t\t\t\t\t\t

Try to spend 15 minutes practicing with this generator each day to increase your speed and efficiency.

\n\n\t\t\t\t\t\t\t\t

Start Generator

\n\n\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t

Official TFE Instructions

\n\n\t\t\t\t\t\t\t\t

The pictures that follow are top, front, and end views of various solid objects. The views are without perspective. That is, the points in the viewed surface are viewed along parallel lines of vision. The projection looking DOWN on it is shown in the upper left-hand corner (TOP VIEW). The projection looking at the object from the FRONT is shown in the lower left-hand corner (FRONT VIEW). The projection looking at the object from the END is shown in the lower right-hand corner (END VIEW). These views are ALWAYS in the same positions and are labeled accordingly.

\n\n\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t

If there were a hole in the block, the views would look like this:

\n\n\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t

Note that the lines cannot be seen on the surface in some particular view are DOTTED in that view. In the problems that follow, two views will be shown, with four alternatives to complete the set. You are to select the correct one with your mouse.

\n\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\n\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t \n\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t
\n\n\t\t\t\t
\n\n\t\t\t
\n\n\n\n\t\t
\n\n\t
\n`\n\n\nconst Tfe = () => (\n \n);\n\nexport default Tfe;\n","import React from 'react';\nimport styled from 'styled-components';\n\nconst Container = styled.div`\n width: 100%;\n height: 100%;\n overflow-y: scroll;\n`;\n\nconst htmlString = `\n
\n\n
\n\n
\n\n

PAT Trainer Game

\n\n
\n\n
\n\n
\n\n
\n\n

This is a perceptual ability training game. Please read the following before starting:

\n

1. This is great practice to develop your spatial and perceptual abilities, plus it’s fun. Play this game everyday during your DAT prep; make a habit to do it during your lunch break or when you’re waiting for something to download.

\n

2. These questions will not be on your DAT. This is just to develop your skills of judging distances, angles, etc. which will help you get a better PAT score.

\n

3. Try to beat my high score of 1.28!

\n

Start Game

\n\n
\n\n
\n\n
\n
\n\n
\n\n
\n
PAT Trainer Game
\n

Time: 0

\n\n
\n\n
\n\n
\n\n
\n
\n

Instructions

Results

\n

\n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Parallelogram---------
Midpoint---------
Bisect Angle---------
Circle Center---------
Right Angle---------
Two Angles---------
Cubes---------
Hole Punching---------
\n
\n
\n
\n\n
\n\n
\n\n
\n\n
\n
\n

Average Deviation: 0 |Reset

\n\n
\n\n \n\n
\n\n
\n`\n\n\nconst Trainer = () => (\n \n);\n\nexport default Trainer;\n","/* eslint-disable */\nconst holepunching = jQuery => jQuery(document).ready(function(jQuery) {\n// jQuery(document).ready(function() {\n var ANS_MULT, Fold, FoldedSet, Line, OptionObject, Page, Polygon, PunchedHoleList, startGenerator, QUES_MULT, TableSpot, Vertex, answerCanvases, answerGrades, answerValues, clearAnswers, clearGrades, clearRadios, clearSteps, createAndDisplayFolds, currentPage, erasePage, executeFold, explicateStep, foldLines, freshSheet, freshTable, answerToggle, gridToggle, gameReset, init, intersection, listPoints, newPage, outlineList, pagePosition, pointMatch, populateFoldLines, previousPage, printList, radioChangeEvent, disableRadios, randomInt, relocateSpots, restoreCurrentPage, revealExplication, sanitize, sanitizeCanvases, serializedPages, setPageNumber, startTimer, stepCanvases, tallyScoreboard, timeChangeEvent, timeLeft, timeOut, timeReset, timer, timerOn,\n __hasProp = {}.hasOwnProperty,\n __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };\n\n\n timerOn = false;\n\n timeLeft = 30;\n\n var initialTime = 30;\n\n timer = {};\n\n foldLines = [];\n\n serializedPages = [];\n\n pagePosition = 0;\n\n currentPage = {};\n\n answerCanvases = [\"can-A\", \"can-B\", \"can-C\", \"can-D\", \"can-E\"];\n answerGrades = [\"grade-A\", \"grade-B\", \"grade-C\", \"grade-D\", \"grade-E\"];\n answerValues = [\"A\", \"B\", \"C\", \"D\", \"E\"];\n\n/* difficulty init */\n var difficulty = 0;\n var _maxCandidates, _numAnswers, radioElements, answerElements;\n var fourthFoldActive = 0\n/* end difficulty init */\n\nvar questionStartTime = new Date().getTime();\nvar totalTime = 0;\nvar totalAnswered = 0;\n\nvar showAnswer = false;\nvar showGrid = false;\n\n/*\n * Change difficulty controls\n */\nfunction setDifficulty() {\n radioElements = jQuery(\".grade\");\n answerElements = jQuery(\".answer\");\n //console.dir(answerElements);\n //console.dir(radioElements);\n\n if (difficulty == 2) {\n _maxCandidates = 20;\n _numAnswers = 5;\n } else if (difficulty == 1) {\n _maxCandidates = 10;\n _numAnswers = 5;\n // jQuery(radioElements[3]).hide();\n // jQuery(radioElements[4]).hide();\n // jQuery(answerElements[3]).hide();\n // jQuery(answerElements[4]).hide();\n } else {\n _maxCandidates = 20;\n _numAnswers = 5;\n // jQuery(radioElements[3]).show();\n // jQuery(radioElements[4]).show();\n // jQuery(answerElements[3]).show();\n // jQuery(answerElements[4]).show();\n }\n}\n\n stepCanvases = [\"step0\", \"step1\", \"step2\", \"step3\", \"step4\", \"step5\"];\n\n ANS_MULT = 10;\n\n QUES_MULT = 10;\n\n\n\n init = function() {\n jQuery('#setdifficulty').change(function() {\n difficulty = (parseInt(jQuery(this).val()));\n jQuery('#next').click();\n });\n\n jQuery('#settime').change(function() {\n initialTime = (parseInt(jQuery(this).val()));\n timeReset();\n });\n\n document.querySelectorAll('.grade-label').forEach(function (element){\n element.addEventListener( 'mousedown' ,function(ev){\n if(ev.which == 3)\n {\n const input = element.querySelector(\"input\");\n if (currentPage.answer === \"z\"){\n input.disabled = !input.disabled;\n this.style.textDecoration = input.disabled ? 'line-through' : 'none';\n this.style.color = input.disabled ? 'grey' : 'inherit';\n }\n }\n });\n })\n\n var rad, rb, _i, _len, _results;\n populateFoldLines();\n sanitizeCanvases();\n newPage();\n timerOn = true;\n document.addEventListener('contextmenu', event => event.preventDefault());\n document.getElementById(\"next\").onclick = newPage;\n document.getElementById(\"previous\").onclick = previousPage;\n document.getElementById(\"time-button\").onclick = timeChangeEvent;\n document.getElementById(\"game-reset\").onclick = gameReset;\n\n document.getElementById(\"answer-exp\").onclick = answerToggle;\n document.getElementById(\"answer-grid\").onclick = gridToggle;\n document.getElementById(\"startGenerator\").onclick = startGenerator;\n\n\n rad = document.getElementsByName(\"answer\");\n _results = [];\n for (_i = 0, _len = rad.length; _i < _len; _i++) {\n rb = rad[_i];\n _results.push(rb.onclick = radioChangeEvent);\n }\n return _results;\n };\n\n startGenerator = function(){\n document.getElementById('generator').style.display='block';\n document.getElementById('introduction').style.display='none';\n startTimer();\n questionStartTime = new Date().getTime();\n }\n\n newPage = function() {\n //console.log(\"creating new page with difficulty : \" + difficulty);\n setDifficulty();\n showAnswer = false;\n showGrid = false;\n\n pagePosition++;\n if (Math.random() <= .2 || difficulty == 2) {\n fourthFoldActive = 1;\n } else {\n fourthFoldActive = 0;\n }\n if (!fourthFoldActive) {\n jQuery('#step4text').html('Hole Punch');\n jQuery('#step5container').hide();\n jQuery('#folds').css('max-width', '686px');\n } else {\n jQuery('#step4text').html('Fold 4');\n jQuery('#step5text').html('Hole Punch');\n jQuery('#folds').css('max-width', '823px');\n jQuery('#step5container').show();\n\n }\n questionStartTime = new Date().getTime();\n document.getElementById('answer-toggle').style.opacity = 0;\n document.querySelectorAll('.grade-label').forEach((elem) => {\n elem.style.color = 'inherit';\n elem.style.textDecoration = 'none';\n });\n if (pagePosition > serializedPages.length) {\n currentPage = new Page();\n serializedPages[pagePosition - 1] = currentPage;\n erasePage();\n createAndDisplayFolds();\n currentPage.generateFalseAnswers();\n currentPage.printAnswerChoices();\n if (timerOn) {\n return startTimer();\n }\n } else {\n erasePage();\n return restoreCurrentPage();\n }\n };\n\n previousPage = function() {\n showAnswer = false;\n showGrid = false;\n if (pagePosition > 1) {\n pagePosition--;\n erasePage();\n return restoreCurrentPage();\n }\n };\n\n timeChangeEvent = function() {\n timerOn = !timerOn;\n if (timerOn) {\n return startTimer();\n } else {\n clearInterval(timer);\n if (timeLeft === 0) {\n return timeReset();\n }\n }\n };\n\n startTimer = function() {\n clearInterval(timer);\n return timer = setInterval(function() {\n timeLeft--;\n document.getElementById(\"time-display\").innerHTML = timeLeft;\n if (timeLeft < 1) {\n return timeOut();\n }\n }, 1000);\n };\n\n timeOut = function() {\n var rad;\n clearInterval(timer);\n rad = document.getElementsByName(\"answer\");\n if (currentPage.correctOption !== 0) {\n rad[0].checked = true;\n } else {\n rad[1].checked = true;\n }\n return radioChangeEvent();\n };\n\n disableRadios = function(){\n var radios, rd, _i, _len;\n radios = document.getElementsByName('answer');\n for (_i = 0, _len = radios.length; _i < _len; _i++) {\n rd = radios[_i];\n rd.disabled = true;\n }\n }\n\n radioChangeEvent = function() {\n var radios, rd, _i, _len;\n clearInterval(timer);\n radios = document.getElementsByName('answer');\n for (_i = 0, _len = radios.length; _i < _len; _i++) {\n rd = radios[_i];\n if (rd.checked) {\n currentPage.answer = rd.value;\n break;\n }\n }\n totalTime += new Date().getTime() - questionStartTime;\n\t\t++totalAnswered;\n\n\t\tvar newAverage = (totalTime / (1000* totalAnswered));\n\t\tnewAverage -= newAverage % 1;\n\n\t\tjQuery('#average-time').text(newAverage);\n clearGrades();\n document.getElementById(answerGrades[currentPage.correctOption]).innerHTML = '';\n if (answerValues[currentPage.correctOption] !== currentPage.answer) {\n document.getElementById('grade-' + currentPage.answer).innerHTML = '';\n }\n showAnswer = true;\n showGrid = true;\n revealExplication();\n return tallyScoreboard();\n };\n\n tallyScoreboard = function() {\n var correct, incorrect, sp, _i, _len;\n incorrect = 0;\n correct = 0;\n for (_i = 0, _len = serializedPages.length; _i < _len; _i++) {\n sp = serializedPages[_i];\n if (sp.answer !== \"z\") {\n if (sp.answer === answerValues[sp.correctOption]) {\n correct++;\n } else {\n incorrect++;\n }\n }\n }\n document.getElementById('incorrect').innerHTML = incorrect;\n return document.getElementById('correct').innerHTML = correct;\n };\n\n setPageNumber = function() {\n document.getElementById(\"location\").innerHTML = pagePosition;\n return document.getElementById(\"total\").innerHTML = serializedPages.length;\n };\n\n restoreCurrentPage = function() {\n if (showAnswer){\n return revealExplication();\n }\n\n var c, ctx, i, paperStages, radios, rd, _i, _j, _len, _ref;\n currentPage = serializedPages[pagePosition - 1];\n if (currentPage.folds.length == 3) {\n fourthFoldActive = 0;\n jQuery('#step4text').html('Hole Punch');\n jQuery('#step5container').hide();\n jQuery('#folds').css('max-width', '686px');\n } else {\n fourthFoldActive = 1;\n jQuery('#step4text').html('Fold 4');\n jQuery('#step5text').html('Hole Punch');\n jQuery('#folds').css('max-width', '823px');\n jQuery('#step5container').show();\n }\n document.getElementById('answer-toggle').style.opacity = 0;\n document.querySelectorAll('.grade-label').forEach((elem) => {\n elem.style.color = 'inherit';\n elem.style.textDecoration = 'none';\n });\n paperStages = [];\n paperStages.push(freshSheet());\n for (i = _i = 0, _ref = currentPage.folds.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n c = document.getElementById(stepCanvases[i]);\n ctx = c.getContext(\"2d\");\n if (i !== 0) {\n printList(ctx, paperStages[i]);\n }\n paperStages[i + 1] = executeFold(currentPage.folds[i], paperStages[i]);\n }\n c = document.getElementById(stepCanvases[3 + fourthFoldActive]);\n ctx = c.getContext(\"2d\");\n printList(ctx, paperStages[3 + fourthFoldActive]);\n c = document.getElementById(stepCanvases[4 + fourthFoldActive]);\n ctx = c.getContext(\"2d\");\n outlineList(ctx, paperStages[3 + fourthFoldActive], false);\n if (timerOn && currentPage.answer === \"z\") {\n startTimer();\n }\n currentPage.printAnswerChoices();\n if (currentPage.answer !== \"z\") {\n document.getElementById('answer-toggle').style.opacity = 1;\n radios = document.getElementsByName('answer');\n for (_j = 0, _len = radios.length; _j < _len; _j++) {\n rd = radios[_j];\n if (rd.value === currentPage.answer) {\n rd.checked = true;\n break;\n }\n }\n disableRadios();\n document.getElementById(answerGrades[currentPage.correctOption]).innerHTML = '';\n if (answerValues[currentPage.correctOption] !== currentPage.answer) {\n document.getElementById('grade-' + currentPage.answer).innerHTML = '';\n }\n }\n };\n\n randomInt = function(scale) {\n return Math.floor(Math.random() * scale);\n };\n\n createAndDisplayFolds = function() {\n var c, ctx, i, paperStages, _i, _ref;\n paperStages = [];\n paperStages.push(freshSheet());\n for (i = _i = 0, _ref = currentPage.folds.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n c = document.getElementById(stepCanvases[i]);\n ctx = c.getContext(\"2d\");\n if (i !== 0) {\n printList(ctx, paperStages[i]);\n }\n currentPage.folds[i] = new Fold();\n currentPage.folds[i].generate(currentPage.tableSpots, paperStages[i]);\n paperStages[i + 1] = executeFold(currentPage.folds[i], paperStages[i]);\n relocateSpots(currentPage.tableSpots, currentPage.folds[i]);\n }\n c = document.getElementById(stepCanvases[3 + fourthFoldActive]);\n ctx = c.getContext(\"2d\");\n printList(ctx, paperStages[3 + fourthFoldActive]);\n const punchSecondHole = difficulty != 1 && Math.random() < 0.25;\n currentPage.locateHole(punchSecondHole);\n c = document.getElementById(stepCanvases[4 + fourthFoldActive]);\n ctx = c.getContext(\"2d\");\n return outlineList(ctx, paperStages[3 + fourthFoldActive], false);\n };\n\n relocateSpots = function(table, fold) {\n var l, lVal, mir, sVal, subject, tmi, tmj, tmk, _i, _len, _results;\n l = foldLines[fold.location];\n lVal = l.v1.mode[l.angle];\n _results = [];\n for (_i = 0, _len = table.length; _i < _len; _i++) {\n tmi = table[_i];\n if (tmi.members.length === 0) {\n continue;\n }\n subject = tmi;\n sVal = subject.mode[l.angle];\n if ((sVal > lVal && fold.orientation) || (sVal < lVal && !fold.orientation)) {\n mir = subject.mirror(fold.location);\n _results.push((function() {\n var _j, _k, _len1, _len2, _ref, _results1;\n _results1 = [];\n for (_j = 0, _len1 = table.length; _j < _len1; _j++) {\n tmj = table[_j];\n if (tmj.identical(mir)) {\n _ref = subject.members;\n for (_k = 0, _len2 = _ref.length; _k < _len2; _k++) {\n tmk = _ref[_k];\n tmj.addSpot(tmk);\n }\n subject.clear();\n break;\n } else {\n _results1.push(void 0);\n }\n }\n return _results1;\n })());\n } else {\n _results.push(void 0);\n }\n }\n return _results;\n };\n\n printList = function(ctx, polyList) {\n var pl, _i, _len, _results;\n ctx.lineWidth = 2;\n ctx.strokeStyle = \"black\";\n _results = [];\n for (_i = 0, _len = polyList.length; _i < _len; _i++) {\n pl = polyList[_i];\n _results.push(pl.print(ctx));\n }\n return _results;\n };\n\n outlineList = function(ctx, polyList, holes) {\n var pl, _i, _len, _results;\n _results = [];\n for (_i = 0, _len = polyList.length; _i < _len; _i++) {\n pl = polyList[_i];\n if (pl.queue.length > 2) {\n _results.push(pl.outlineAroundHoles(ctx, holes));\n } else {\n _results.push(void 0);\n }\n }\n\n let addedLine = false;\n let line = new Polygon();\n\n for (const poly of polyList){\n if (!addedLine && poly.line && poly.line.queue.length == 2){\n addedLine = true;\n line = poly.line\n }\n if (showAnswer && poly.flapped){\n poly.outlineAroundHoles(ctx, holes, \"#ECE2F9\");\n }\n }\n\n if (showAnswer){\n\n if (showGrid){\n drawGrid(ctx);\n }\n\n if (line.queue.length == 2){\n drawFoldLine(ctx, line);\n }\n }\n\n return _results;\n };\n\n var drawGrid = function (ctx) {\n let lineDrawn1, lineDrawn2;\n\n ctx.lineWidth = 1;\n ctx.strokeStyle = 'rgba(105, 105 , 105, .3)';\n\n for (let i = 2; i < 8; i += 2){\n lineDrawn1 = new Polygon();\n lineDrawn2 = new Polygon();\n\n lineDrawn1.addVertex(new Vertex(i , 0));\n lineDrawn1.addVertex(new Vertex(i , 8));\n\n lineDrawn2.addVertex(new Vertex(0, i));\n lineDrawn2.addVertex(new Vertex(8, i));\n\n lineDrawn1.outline(ctx);\n lineDrawn2.outline(ctx);\n }\n }\n\n var drawFoldLine = function (ctx , line) {\n const vertex1 = line.queue[0];\n const vertex2 = line.queue[1];\n let x = vertex1.x;\n let y = vertex1.y;\n\n let diffX = vertex1.x - vertex2.x;\n let diffY = vertex1.y - vertex2.y;\n\n while (x >= 0 && x <= 8 && y >= 0 && y <= 8){\n x += diffX;\n y += diffY;\n }\n\n const lineDrawn = new Polygon();\n lineDrawn.addVertex(new Vertex(x , y));\n\n diffY = -diffY;\n diffX = -diffX;\n\n x = vertex2.x;\n y = vertex2.y;\n\n while (x >= 0 && x <= 8 && y >= 0 && y <= 8){\n x += diffX;\n y += diffY;\n }\n\n lineDrawn.addVertex(new Vertex(x , y));\n lineDrawn.outline(ctx, \"red\");\n }\n\n executeFold = function(fld, oldList) {\n var cnt, i, newList, tempSet, _i, _j, _k, _ref, _ref1, _ref2;\n tempSet = [];\n newList = [];\n cnt = oldList.length;\n for (i = _i = 0, _ref = cnt - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n tempSet[i] = new FoldedSet(fld, oldList[i]);\n }\n let linePoly = new Polygon();\n\n for (const foldedSet of tempSet){\n if (foldedSet.lines.queue.length == 2){\n linePoly = foldedSet.lines;\n }\n }\n\n for (i = _j = 0, _ref1 = cnt - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; i = 0 <= _ref1 ? ++_j : --_j) {\n newList[i] = tempSet[i].base;\n newList[i].flapped = false;\n newList[i].line = linePoly;\n }\n for (i = _k = 0, _ref2 = cnt - 1; 0 <= _ref2 ? _k <= _ref2 : _k >= _ref2; i = 0 <= _ref2 ? ++_k : --_k) {\n newList[i + cnt] = tempSet[cnt - i - 1].flap;\n newList[i + cnt].flapped = true;\n newList[i + cnt].line = linePoly;\n }\n i = 0;\n while (i < newList.length) {\n if (newList[i].queue.length < 1) {\n newList.splice(i, 1);\n } else {\n i++;\n }\n }\n return newList;\n };\n\n intersection = function(v1, v2, fold) {\n var foldPoints, segPoints, sp, _i, _len;\n segPoints = listPoints(v1, v2);\n foldPoints = listPoints(foldLines[fold].v1, foldLines[fold].v2);\n for (_i = 0, _len = segPoints.length; _i < _len; _i++) {\n sp = segPoints[_i];\n if (pointMatch(sp, foldPoints)) {\n return sp;\n }\n }\n return false;\n };\n\n pointMatch = function(candidate, set) {\n var s, _i, _len;\n for (_i = 0, _len = set.length; _i < _len; _i++) {\n s = set[_i];\n if (candidate.identical(s)) {\n return true;\n }\n }\n return false;\n };\n\n listPoints = function(v1, v2) {\n var deltaX, deltaY, quant, result, xCur, yCur;\n result = new Array();\n quant = 0;\n deltaX = v2.x - v1.x;\n deltaY = v2.y - v1.y;\n if (deltaX !== 0) {\n quant = Math.abs(deltaX);\n } else {\n quant = Math.abs(deltaY);\n }\n result.push(v1);\n while (result.length < quant) {\n xCur = result[result.length - 1].x;\n yCur = result[result.length - 1].y;\n xCur += deltaX < 0 ? -1 : deltaX > 0 ? 1 : 0;\n yCur += deltaY < 0 ? -1 : deltaY > 0 ? 1 : 0;\n result.push(new Vertex(xCur, yCur));\n }\n result.push(v2);\n return result;\n };\n\n revealExplication = function() {\n var c, ctx, holeList, i, paperStages, punchedHoles, tableSpots, _i, _ref;\n clearSteps();\n holeList = [];\n paperStages = [];\n paperStages.push(freshSheet());\n tableSpots = freshTable();\n disableRadios();\n document.getElementById('answer-toggle').style.opacity = 1;\n punchedHoles = currentPage.tableSpots[currentPage.holeSpot].members;\n if (currentPage.secondHoleSpot){\n for (const val of currentPage.tableSpots[currentPage.secondHoleSpot].members){\n punchedHoles.push(val);\n }\n }\n for (i = _i = 0, _ref = currentPage.folds.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n c = document.getElementById(stepCanvases[i]);\n ctx = c.getContext(\"2d\");\n holeList = explicateStep(punchedHoles, tableSpots);\n outlineList(ctx, paperStages[i], holeList);\n paperStages[i + 1] = executeFold(currentPage.folds[i], paperStages[i]);\n relocateSpots(tableSpots, currentPage.folds[i]);\n }\n c = document.getElementById(stepCanvases[3 + fourthFoldActive]);\n ctx = c.getContext(\"2d\");\n outlineList(ctx, paperStages[3 + fourthFoldActive], false);\n c = document.getElementById(stepCanvases[4 + fourthFoldActive]);\n ctx = c.getContext(\"2d\");\n return outlineList(ctx, paperStages[3 + fourthFoldActive], false);\n };\n\n explicateStep = function(punchedHoles, tableSpots) {\n var inThere, result, tb, _i, _len;\n result = [];\n inThere = function(arr, spots) {\n var sp1, sp2, _i, _j, _len, _len1, _ref;\n _ref = arr.members;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n sp1 = _ref[_i];\n for (_j = 0, _len1 = spots.length; _j < _len1; _j++) {\n sp2 = spots[_j];\n if (sp1.identical(sp2)) {\n return true;\n }\n }\n }\n return false;\n };\n for (_i = 0, _len = tableSpots.length; _i < _len; _i++) {\n tb = tableSpots[_i];\n if (inThere(tb, punchedHoles)) {\n result.push(tb);\n }\n }\n return result;\n };\n\n Fold = (function() {\n function Fold() {\n this.location = 0;\n this.orientation = false;\n }\n\n Fold.prototype.generate = function(table, polyList) {\n var affected, flip, l, lCandidate, lVal, mir, oCandidate, over, sVal, tbl, under, validity, _i, _len;\n lCandidate = 0;\n oCandidate = false;\n while (true) {\n lCandidate = randomInt(_maxCandidates); // 20 for normal, 10 to disable 45 deg folds\n flip = Math.random() * 20;\n oCandidate = flip < 10;\n validity = true;\n affected = false;\n l = foldLines[lCandidate];\n lVal = l.v1.mode[l.angle];\n // console.log(\"Fold :: l.angle = \" + l.angle + \" , lCandidate = \" + lCandidate + \" , oCandidate = \" + oCandidate);\n over = false;\n under = false;\n for (_i = 0, _len = table.length; _i < _len; _i++) {\n tbl = table[_i];\n if (tbl.members.length < 1) {\n continue;\n }\n sVal = tbl.mode[l.angle];\n if (sVal > lVal) {\n over = true;\n if (oCandidate) {\n mir = tbl.mirror(lCandidate);\n if (!mir.valid()) {\n validity = false;\n break;\n }\n if (mir.x !== tbl.x || mir.y !== tbl.y) {\n affected = true;\n }\n }\n }\n if (sVal < lVal) {\n under = true;\n if (!oCandidate) {\n mir = tbl.mirror(lCandidate);\n if (!mir.valid()) {\n validity = false;\n break;\n }\n if (mir.x !== tbl.x || mir.y !== tbl.y) {\n affected = true;\n }\n }\n }\n }\n if (validity && over && under && affected) {\n break;\n }\n }\n this.location = lCandidate;\n return this.orientation = oCandidate;\n };\n\n return Fold;\n\n })();\n\n FoldedSet = (function() {\n function FoldedSet(fld, poly) {\n var cand, flapPoly, i, j, l, lVal, pVal, poly1, poly2, tempPoint, testHist, testLine, tl, topFold, trimmedPoly, _i, _j, _k, _l, _len, _m, _ref, _ref1, _ref2, _ref3;\n if (poly.queue.length === 0) {\n this.base = new Polygon();\n this.flap = new Polygon();\n this.lines = new Polygon();\n } else {\n trimmedPoly = {};\n flapPoly = {};\n testLine = [];\n testHist = [];\n for (i = _i = 0, _ref = poly.queue.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n j = i + 1;\n if (j >= poly.queue.length) {\n j = 0;\n }\n tempPoint = intersection(poly.queue[i], poly.queue[j], fld.location);\n if (tempPoint === false) {\n continue;\n }\n for (_j = 0, _len = testLine.length; _j < _len; _j++) {\n tl = testLine[_j];\n if (tl.identical(tempPoint)) {\n tempPoint = false;\n break;\n }\n }\n if (tempPoint === false) {\n continue;\n }\n testLine.push(tempPoint);\n testHist.push(i);\n }\n if (testLine.length !== 2 || poly.edgeCase(fld)) {\n l = foldLines[fld.location];\n lVal = l.v1.mode[l.angle];\n pVal = fld.orientation ? poly.key[l.angle].mode[l.angle] : poly.antiKey[l.angle].mode[l.angle];\n if ((pVal > lVal && fld.orientation) || (pVal < lVal && !fld.orientation)) {\n flapPoly = poly;\n trimmedPoly = new Polygon();\n } else {\n trimmedPoly = poly;\n flapPoly = new Polygon();\n }\n } else {\n poly1 = new Polygon();\n poly2 = new Polygon();\n for (i = _k = 0, _ref1 = poly.queue.length - 1; 0 <= _ref1 ? _k <= _ref1 : _k >= _ref1; i = 0 <= _ref1 ? ++_k : --_k) {\n poly1.addVertex(poly.queue[i]);\n if (i === testHist[0]) {\n break;\n }\n }\n poly1.addVertex(testLine[0]);\n poly1.addVertex(testLine[1]);\n cand = testHist[1] + 1;\n if (cand < poly.queue.length) {\n for (i = _l = cand, _ref2 = poly.queue.length - 1; cand <= _ref2 ? _l <= _ref2 : _l >= _ref2; i = cand <= _ref2 ? ++_l : --_l) {\n poly1.addVertex(poly.queue[i]);\n }\n }\n poly2.addVertex(testLine[0]);\n cand = testHist[0] + 1;\n if (cand <= testHist[1]) {\n for (i = _m = cand, _ref3 = testHist[1]; cand <= _ref3 ? _m <= _ref3 : _m >= _ref3; i = cand <= _ref3 ? ++_m : --_m) {\n poly2.addVertex(poly.queue[i]);\n }\n }\n poly2.addVertex(testLine[1]);\n poly1.sanitize();\n poly2.sanitize();\n if ((fld.orientation && poly2.contains(poly.key[foldLines[fld.location].angle])) || (!fld.orientation && poly1.contains(poly.key[foldLines[fld.location].angle]))) {\n trimmedPoly = poly1;\n flapPoly = poly2;\n } else {\n trimmedPoly = poly2;\n flapPoly = poly1;\n }\n }\n topFold = flapPoly.mirror(fld.location);\n this.base = trimmedPoly;\n this.flap = topFold;\n this.lines = new Polygon();\n\n for (const line of testLine){\n this.lines.addVertex(line);\n }\n }\n }\n\n return FoldedSet;\n\n })();\n\n Vertex = (function() {\n function Vertex(x, y) {\n this.x = x;\n this.y = y;\n this.mode = [8 - y, x, x + (8 - y), (8 - x) + (8 - y)];\n }\n\n Vertex.prototype.print = function(ctx, fillColor, multiplier, stroked) {\n var radius;\n ctx.fillStyle = fillColor;\n radius = multiplier / 1.7;\n ctx.beginPath();\n ctx.arc(this.x * multiplier + 1.5, this.y * multiplier + 1.5, radius, 0, 2 * Math.PI);\n ctx.fill();\n if (stroked) {\n ctx.lineWidth = 3;\n return ctx.stroke();\n }\n };\n\n Vertex.prototype.fill = function(ctx, multiplier) {\n var radius;\n radius = multiplier / 1.7;\n ctx.beginPath();\n ctx.arc(this.x * multiplier + 1.5, this.y * multiplier + 1.5, radius, 0, 2 * Math.PI);\n return ctx.fill();\n };\n\n Vertex.prototype.outline = function(ctx, multiplier, lineWidth) {\n var radius;\n radius = multiplier / 1.7;\n ctx.beginPath();\n if (lineWidth){\n ctx.lineWidth = lineWidth;\n }\n ctx.arc(this.x * multiplier + 1.5, this.y * multiplier + 1.5, radius, 0, 2 * Math.PI);\n return ctx.stroke();\n };\n\n Vertex.prototype.valid = function() {\n if (this.x >= 0 && this.x <= 8 && this.y >= 0 && this.y <= 8) {\n return true;\n } else {\n return false;\n }\n };\n\n Vertex.prototype.mirror = function(fNum) {\n var delta, l, newX, newY;\n l = foldLines[fNum];\n switch (l.angle) {\n case 0:\n newY = this.y + (2 * (l.v1.y - this.y));\n return new Vertex(this.x, newY);\n case 1:\n newX = this.x + (2 * (l.v1.x - this.x));\n return new Vertex(newX, this.y);\n case 2:\n delta = l.v1.mode[l.angle] - this.mode[l.angle];\n return new Vertex(this.x + delta, this.y - delta);\n case 3:\n delta = l.v1.mode[l.angle] - this.mode[l.angle];\n return new Vertex(this.x - delta, this.y - delta);\n default:\n return false;\n }\n return false;\n };\n\n Vertex.prototype.identical = function(alter) {\n return (this.x === alter.x) && (this.y === alter.y);\n };\n\n return Vertex;\n\n })();\n\n TableSpot = (function(_super) {\n __extends(TableSpot, _super);\n\n function TableSpot(spot) {\n TableSpot.__super__.constructor.call(this, spot.x, spot.y);\n this.members = [];\n this.members[0] = spot;\n }\n\n TableSpot.prototype.addSpot = function(spot) {\n return this.members.push(spot);\n };\n\n TableSpot.prototype.clear = function() {\n return this.members = [];\n };\n\n return TableSpot;\n\n })(Vertex);\n\n Line = (function() {\n function Line(v1, v2) {\n this.v1 = v1;\n this.v2 = v2;\n if (v1.y === v2.y) {\n this.angle = 0;\n } else if (v1.x === v2.x) {\n this.angle = 1;\n } else if ((v1.x - v2.x) === (v1.y - v2.y)) {\n this.angle = 2;\n } else {\n this.angle = 3;\n }\n }\n\n return Line;\n\n })();\n\n Polygon = (function() {\n function Polygon() {\n this.queue = [];\n this.key = [];\n this.antiKey = [];\n }\n\n Polygon.prototype.mirror = function(fNum) {\n var qu, result, _i, _len, _ref;\n result = new Polygon();\n _ref = this.queue;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n qu = _ref[_i];\n result.addVertex(qu.mirror(fNum));\n }\n return result;\n };\n\n Polygon.prototype.contains = function(candidate) {\n var qu, _i, _len, _ref;\n _ref = this.queue;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n qu = _ref[_i];\n if (candidate.identical(qu)) {\n return true;\n }\n }\n return false;\n };\n\n Polygon.prototype.print = function(ctx) {\n var canv, nctx;\n if (this.queue.length > 0) {\n canv = document.createElement('canvas');\n canv.width = QUES_MULT * 8 + 3;\n canv.height = QUES_MULT * 8 + 3;\n nctx = canv.getContext('2d');\n nctx.strokeStyle = \"black\";\n nctx.lineWidth = 2;\n nctx.lineCap = \"round\";\n nctx.globalCompositeOperation = \"source-over\";\n this.outline(nctx);\n nctx.fillStyle = \"white\";\n nctx.globalCompositeOperation = \"destination-over\";\n this.fill(nctx);\n return ctx.drawImage(canv, 0, 0);\n }\n };\n\n Polygon.prototype.fill = function(ctx) {\n var OFFSET, qu, _i, _len, _ref;\n OFFSET = 1.5;\n if (this.queue.length > 0) {\n ctx.beginPath();\n ctx.moveTo(this.queue[0].x * QUES_MULT + OFFSET, this.queue[0].y * QUES_MULT + OFFSET);\n _ref = this.queue;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n qu = _ref[_i];\n ctx.lineTo(qu.x * QUES_MULT + OFFSET, qu.y * QUES_MULT + OFFSET);\n }\n ctx.closePath();\n return ctx.fill();\n }\n };\n\n Polygon.prototype.outline = function(ctx, strokeSyle) {\n var OFFSET, i, j, _i, _ref, _results;\n OFFSET = 1.5;\n\n const initialStrokeStyle = ctx.strokeStyle;\n const lineWidth = ctx.lineWidth;\n\n if (this.queue.length > 0) {\n ctx.lineCap = \"round\";\n if (strokeSyle){\n ctx.strokeStyle = strokeSyle;\n ctx.lineWidth = 3;\n }\n _results = [];\n for (i = _i = 0, _ref = this.queue.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n j = i + 1;\n if (j >= this.queue.length) {\n j = 0;\n }\n ctx.beginPath();\n ctx.moveTo(this.queue[i].x * QUES_MULT + OFFSET, this.queue[i].y * QUES_MULT + OFFSET);\n ctx.lineTo(this.queue[j].x * QUES_MULT + OFFSET, this.queue[j].y * QUES_MULT + OFFSET);\n _results.push(ctx.stroke());\n }\n ctx.strokeStyle = initialStrokeStyle;\n ctx.lineWidth = lineWidth;\n return _results;\n }\n };\n\n Polygon.prototype.outlineAroundHoles = function(ctx, holes, fColor = \"white\") {\n var canvases, ctxes, hl, i, _i, _j, _len, _len1, _ref;\n if (holes === false) {\n holes = [];\n holes.push(currentPage.tableSpots[currentPage.holeSpot]);\n\n if (currentPage.secondHoleSpot){\n holes.push(currentPage.tableSpots[currentPage.secondHoleSpot]);\n }\n }\n canvases = [];\n ctxes = [];\n _ref = [0, 1];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n i = _ref[_i];\n canvases[i] = document.createElement('canvas');\n canvases[i].width = QUES_MULT * 8 + 3;\n canvases[i].height = QUES_MULT * 8 + 3;\n ctxes[i] = canvases[i].getContext('2d');\n ctxes[i].strokeStyle = \"black\";\n ctxes[i].lineCap = \"butt\";\n ctxes[i].lineWidth = 2;\n ctxes[i].globalCompositeOperation = \"source-over\";\n }\n this.outline(ctxes[0]);\n //ctxes[0].globalCompositeOperation = \"destination-out\";\n //ctxes[0].globalCompositeOperation = \"destination-over\";\n ctxes[0].fillStyle = \"white\";\n for (_j = 0, _len1 = holes.length; _j < _len1; _j++) {\n hl = holes[_j];\n hl.fill(ctxes[0], QUES_MULT);\n hl.outline(ctxes[1], QUES_MULT, 4);\n }\n ctxes[1].globalCompositeOperation = \"source-in\";\n this.fill(ctxes[1]);\n ctxes[1].fillStyle = fColor;\n ctxes[1].globalCompositeOperation = \"destination-over\";\n this.fill(ctxes[1]);\n ctx.drawImage(canvases[1], 0, 0);\n return ctx.drawImage(canvases[0], 0, 0);\n };\n\n Polygon.prototype.addVertex = function(vert) {\n var i, _i, _results;\n this.queue.push(vert);\n _results = [];\n for (i = _i = 0; _i <= 3; i = ++_i) {\n if (this.queue.length > 1) {\n if (vert.mode[i] > this.key[i].mode[i]) {\n this.key[i] = vert;\n }\n if (vert.mode[i] < this.antiKey[i].mode[i]) {\n _results.push(this.antiKey[i] = vert);\n } else {\n _results.push(void 0);\n }\n } else {\n this.key[i] = vert;\n _results.push(this.antiKey[i] = vert);\n }\n }\n return _results;\n };\n\n Polygon.prototype.edgeCase = function(fld) {\n var foldPoints, fp, hit1, hit2, i, j, _i, _j, _len, _ref;\n foldPoints = listPoints(foldLines[fld.location].v1, foldLines[fld.location].v2);\n for (i = _i = 0, _ref = this.queue.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n j = i + 1;\n if (j >= this.queue.length) {\n j = 0;\n }\n hit1 = false;\n hit2 = false;\n for (_j = 0, _len = foldPoints.length; _j < _len; _j++) {\n fp = foldPoints[_j];\n if (this.queue[i].identical(fp)) {\n hit1 = true;\n }\n if (this.queue[j].identical(fp)) {\n hit2 = true;\n }\n }\n if (hit1 && hit2) {\n return true;\n }\n }\n return false;\n };\n\n Polygon.prototype.sanitize = function() {\n var i, j, _results;\n i = 0;\n _results = [];\n while (i < this.queue.length) {\n j = i + 1;\n if (j >= this.queue.length) {\n j = 0;\n }\n if (this.queue[i].identical(this.queue[j])) {\n _results.push(this.queue.splice(j, 1));\n } else {\n _results.push(i++);\n }\n }\n return _results;\n };\n\n return Polygon;\n\n })();\n\n PunchedHoleList = (function(_super) {\n __extends(PunchedHoleList, _super);\n\n function PunchedHoleList() {\n PunchedHoleList.__super__.constructor.call(this);\n }\n\n PunchedHoleList.prototype.generateOptionObject = function() {\n var i, result, x, y, _i, _len;\n result = new OptionObject();\n for (_i = 0, _len = this.length; _i < _len; _i++) {\n i = this[_i];\n x = (i.x - 1) / 2;\n y = (i.y - 1) / 2;\n result.answerSpots[x][y] = true;\n }\n return result;\n };\n\n PunchedHoleList.prototype.checkValidity = function() {\n var i, _i, _len;\n for (_i = 0, _len = this.length; _i < _len; _i++) {\n i = this[_i];\n if (!i.valid()) {\n return false;\n }\n }\n if (this.length < 2) {\n return false;\n }\n return true;\n };\n\n return PunchedHoleList;\n\n })(Array);\n\n freshSheet = function() {\n var myPoly, mySet;\n myPoly = new Polygon();\n myPoly.addVertex(new Vertex(0, 0));\n myPoly.addVertex(new Vertex(8, 0));\n myPoly.addVertex(new Vertex(8, 8));\n myPoly.addVertex(new Vertex(0, 8));\n mySet = [];\n mySet[0] = myPoly;\n return mySet;\n };\n\n freshTable = function() {\n var cnt, i, j, tableSpots, x, y, _i, _j;\n tableSpots = [];\n cnt = 0;\n for (i = _i = 0; _i <= 3; i = ++_i) {\n for (j = _j = 0; _j <= 3; j = ++_j) {\n x = (i * 2) + 1;\n y = (j * 2) + 1;\n tableSpots[cnt] = new TableSpot(new Vertex(x, y));\n cnt++;\n }\n }\n return tableSpots;\n };\n\n Page = (function() {\n function Page() {\n var i, _i, _j, _ref;\n this.answer = \"z\";\n this.folds = [];\n for (i = _i = 0; _i <= (2 + fourthFoldActive); i = ++_i) {\n this.folds[i] = false;\n }\n this.correctOption = randomInt(_numAnswers);\n this.tableSpots = freshTable();\n this.options = [];\n for (i = _j = 0, _ref = answerCanvases.length - 1; 0 <= _ref ? _j <= _ref : _j >= _ref; i = 0 <= _ref ? ++_j : --_j) {\n this.options[i] = new OptionObject();\n }\n }\n\n Page.prototype.locateHole = function(hasSecondhole = false) {\n var cnt, max, ts, _i, _len, _ref, _results;\n max = 2;\n if (Math.random() < 0.4) {\n _ref = this.tableSpots;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n ts = _ref[_i];\n cnt = ts.members.length;\n if (cnt > max) {\n max = cnt;\n }\n }\n }\n _results = [];\n while (true) {\n this.holeSpot = randomInt(16);\n if (this.tableSpots[this.holeSpot].members.length >= max) {\n break;\n } else {\n _results.push(void 0);\n }\n }\n\n if (hasSecondhole){\n let pos;\n for (let i = 0; i < 100; ++i) {\n pos = randomInt(16);\n if (pos != this.holeSpot && this.tableSpots[pos].members.length >= 2) {\n //this.holeSpot = this.secondHoleSpot;\n this.secondHoleSpot = pos;\n break;\n } else {\n _results.push(void 0);\n }\n }\n }\n\n return _results;\n };\n\n Page.prototype.punchHole = function(ctx) {\n return this.tableSpots[this.holeSpot].print(ctx, \"white\", QUES_MULT, false);\n };\n\n Page.prototype.falseMirror = function() {\n var falseFold, falsified, flsPg, fp, j, newFldLine, orientation, _i, _j, _len, _ref, _ref1;\n while (true) {\n flsPg = new Page();\n for (j = _i = 0, _ref = this.folds.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; j = 0 <= _ref ? ++_i : --_i) {\n flsPg.folds[j] = this.folds[j];\n }\n flsPg.holeSpot = this.holeSpot;\n falseFold = randomInt(3);\n newFldLine = flsPg.folds[falseFold].location + randomInt(3) - 1;\n orientation = flsPg.folds[falseFold].orientation;\n if (Math.random() < 0.5) {\n orientation = !orientation;\n }\n if (newFldLine < 0) {\n newFldLine = 1;\n }\n if (newFldLine > 19) {\n newFldLine = 18;\n }\n flsPg.folds[falseFold] = new Fold();\n flsPg.folds[falseFold].location = newFldLine;\n flsPg.folds[falseFold].orientation = orientation;\n _ref1 = flsPg.folds;\n for (_j = 0, _len = _ref1.length; _j < _len; _j++) {\n fp = _ref1[_j];\n relocateSpots(flsPg.tableSpots, fp);\n }\n falsified = flsPg.copyOfPunchedHoles();\n if (falsified.checkValidity()) {\n return falsified.generateOptionObject();\n }\n }\n };\n\n Page.prototype.falseRelocate = function() {\n var deltaX, deltaY, falseCandidate, falsified, mover, newSpot, unmovable;\n falsified = this.copyOfPunchedHoles();\n unmovable = falsified[0].identical(this.tableSpots[this.holeSpot]) ? 1 : 0;\n while (true) {\n mover = randomInt(falsified.length - unmovable) + unmovable;\n deltaX = 2 * randomInt(3) - 2;\n deltaY = 2 * randomInt(3) - 2;\n if (falsified.length < 3 && Math.random() < 0.5) {\n deltaX = 2 * deltaX;\n deltaY = 2 * deltaY;\n }\n newSpot = new Vertex(falsified[mover].x + deltaX, falsified[mover].y + deltaY);\n if (!newSpot.valid()) {\n continue;\n }\n falseCandidate = this.copyOfPunchedHoles();\n falseCandidate[mover] = newSpot;\n return falseCandidate.generateOptionObject();\n }\n };\n\n Page.prototype.generateFalseAnswers = function() {\n var i, j, unique, _i, _ref, _results;\n this.options[this.correctOption] = this.copyOfPunchedHoles().generateOptionObject();\n _results = [];\n for (i = _i = 0, _ref = answerCanvases.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n if (i !== this.correctOption) {\n _results.push((function() {\n var _j, _ref1, _results1;\n _results1 = [];\n while (true) {\n unique = true;\n this.options[i] = Math.random() < 0.5 ? this.falseRelocate() : this.falseMirror();\n for (j = _j = 0, _ref1 = this.options.length - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; j = 0 <= _ref1 ? ++_j : --_j) {\n if (j !== i) {\n if (!this.options[i].checkUniqueness(this.options[j])) {\n unique = false;\n break;\n }\n }\n }\n if (unique) {\n break;\n } else {\n _results1.push(void 0);\n }\n }\n return _results1;\n }).call(this));\n }\n }\n return _results;\n };\n\n Page.prototype.copyOfPunchedHoles = function() {\n var result, spt, spts, _i, _len;\n result = new PunchedHoleList();\n spts = this.tableSpots[this.holeSpot].members;\n\n if (this.secondHoleSpot){\n for (const val of currentPage.tableSpots[currentPage.secondHoleSpot].members){\n spts.push(val);\n }\n }\n\n for (_i = 0, _len = spts.length; _i < _len; _i++) {\n spt = spts[_i];\n result.push(new Vertex(spt.x, spt.y));\n }\n return result;\n };\n\n Page.prototype.printAnswerChoices = function() {\n var c, ctx, i, _i, _ref, _results;\n _results = [];\n for (i = _i = 0, _ref = answerCanvases.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n c = document.getElementById(answerCanvases[i]);\n ctx = c.getContext(\"2d\");\n _results.push(this.options[i].print(ctx, ANS_MULT));\n }\n return _results;\n };\n\n return Page;\n\n })();\n\n OptionObject = (function() {\n function OptionObject() {\n var i, j, _i, _j, _ref, _ref1;\n this.answerSpots = new Array(4);\n for (i = _i = 0, _ref = this.answerSpots.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n this.answerSpots[i] = new Array(4);\n for (j = _j = 0, _ref1 = this.answerSpots[i].length - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; j = 0 <= _ref1 ? ++_j : --_j) {\n this.answerSpots[i][j] = false;\n }\n }\n }\n\n OptionObject.prototype.checkUniqueness = function(optObj) {\n var i, j, _i, _j, _ref, _ref1;\n for (i = _i = 0, _ref = optObj.answerSpots.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n for (j = _j = 0, _ref1 = optObj.answerSpots[i].length - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; j = 0 <= _ref1 ? ++_j : --_j) {\n if (this.answerSpots[i][j] !== optObj.answerSpots[i][j]) {\n return true;\n }\n }\n }\n return false;\n };\n\n OptionObject.prototype.print = function(ctx, mult) {\n var i, j, radius, x, y, _i, _ref, _results;\n ctx.fillStyle = \"black\";\n _results = [];\n for (i = _i = 0, _ref = this.answerSpots.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n _results.push((function() {\n var _j, _ref1, _results1;\n _results1 = [];\n for (j = _j = 0, _ref1 = this.answerSpots[i].length - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; j = 0 <= _ref1 ? ++_j : --_j) {\n x = mult + i * mult * 2;\n y = mult + j * mult * 2;\n radius = mult / 1.7;\n ctx.beginPath();\n ctx.arc(x, y, radius, 0, 2 * Math.PI);\n if (this.answerSpots[i][j]) {\n ctx.fill();\n }\n ctx.lineWidth = 2;\n _results1.push(ctx.stroke());\n }\n return _results1;\n }).call(this));\n }\n return _results;\n };\n\n return OptionObject;\n\n })();\n\n gridToggle = function() {\n if (!showAnswer){\n return;\n }\n\n showGrid = !showGrid;\n restoreCurrentPage();\n }\n\n answerToggle = function() {\n if (currentPage.answer !== \"z\") {\n showAnswer = !showAnswer;\n if (!showAnswer){\n showGrid = false;\n erasePage();\n }else{\n showGrid = true;\n }\n restoreCurrentPage();\n }\n }\n\n gameReset = function() {\n timeLeft = initialTime;\n totalTime = 0;\n\t\ttotalAnswered = 0;\n\n\t\tjQuery('#average-time').text(0);\n clearInterval(timer);\n serializedPages = [];\n pagePosition = 0;\n newPage();\n\n if (timerOn){\n startTimer();\n }\n return tallyScoreboard();\n };\n\n timeReset = function() {\n timeLeft = initialTime;\n return document.getElementById(\"time-display\").innerHTML = timeLeft;\n };\n\n erasePage = function() {\n clearGrades();\n clearSteps();\n clearAnswers();\n clearRadios();\n clearInterval(timer);\n timeReset();\n return setPageNumber();\n };\n\n clearGrades = function() {\n var ag, _i, _len, _results;\n _results = [];\n for (_i = 0, _len = answerGrades.length; _i < _len; _i++) {\n ag = answerGrades[_i];\n _results.push(document.getElementById(ag).innerHTML = '');\n }\n return _results;\n };\n\n clearAnswers = function() {\n var arrLength, c, ctx, dimension, i, _i, _ref, _results;\n dimension = ANS_MULT * 8;\n arrLength = answerCanvases.length;\n _results = [];\n for (i = _i = 0, _ref = arrLength - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n c = document.getElementById(answerCanvases[i]);\n ctx = c.getContext(\"2d\");\n ctx.fillStyle = \"white\";\n _results.push(ctx.fillRect(0, 0, dimension, dimension));\n }\n return _results;\n };\n\n clearSteps = function() {\n var arrLength, c, ctx, dimension, i, _i, _ref, _results;\n dimension = ANS_MULT * 8 + 3;\n arrLength = stepCanvases.length;\n _results = [];\n for (i = _i = 0, _ref = arrLength - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n c = document.getElementById(stepCanvases[i]);\n ctx = c.getContext(\"2d\");\n _results.push(ctx.clearRect(0, 0, dimension, dimension));\n }\n return _results;\n };\n\n clearRadios = function() {\n var ele, radi, _i, _len, _results;\n ele = document.getElementsByName(\"answer\");\n _results = [];\n for (_i = 0, _len = ele.length; _i < _len; _i++) {\n radi = ele[_i];\n radi.disabled = false;\n _results.push(radi.checked = false);\n }\n return _results;\n };\n\n populateFoldLines = function() {\n var i, l, v1, v1x, v1y, v2, v2x, v2y, _i, _results;\n _results = [];\n for (i = _i = 0; _i <= 4; i = ++_i) {\n v1 = new Vertex(i + 2, 0);\n v2 = new Vertex(i + 2, 8);\n l = new Line(v1, v2);\n foldLines[i] = l;\n v1 = new Vertex(0, i + 2);\n v2 = new Vertex(8, i + 2);\n l = new Line(v1, v2);\n foldLines[i + 5] = l;\n v1x = -4 + 2 * i;\n if (v1x < 0) {\n v1x = 0;\n }\n v1y = 4 - 2 * i;\n if (v1y < 0) {\n v1y = 0;\n }\n v2x = 4 + 2 * i;\n if (v2x > 8) {\n v2x = 8;\n }\n v2y = 12 - 2 * i;\n if (v2y > 8) {\n v2y = 8;\n }\n v1 = new Vertex(v1x, v1y);\n v2 = new Vertex(v2x, v2y);\n l = new Line(v1, v2);\n foldLines[i + 10] = l;\n v1x = -4 + 2 * i;\n if (v1x < 0) {\n v1x = 0;\n }\n v1y = 4 + 2 * i;\n if (v1y > 8) {\n v1y = 8;\n }\n v2x = 4 + 2 * i;\n if (v2x > 8) {\n v2x = 8;\n }\n v2y = -4 + 2 * i;\n if (v2y < 0) {\n v2y = 0;\n }\n v1 = new Vertex(v1x, v1y);\n v2 = new Vertex(v2x, v2y);\n l = new Line(v1, v2);\n _results.push(foldLines[i + 15] = l);\n }\n return _results;\n };\n\n sanitizeCanvases = function() {\n var arrLength, c, dimension, i, _i, _j, _ref, _ref1, _results;\n dimension = ANS_MULT * 8;\n arrLength = answerCanvases.length;\n for (i = _i = 0, _ref = arrLength - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n c = document.getElementById(answerCanvases[i]);\n sanitize(c, dimension);\n }\n dimension = QUES_MULT * 8 + 3;\n arrLength = stepCanvases.length;\n _results = [];\n for (i = _j = 0, _ref1 = arrLength - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; i = 0 <= _ref1 ? ++_j : --_j) {\n c = document.getElementById(stepCanvases[i]);\n _results.push(sanitize(c, dimension));\n }\n return _results;\n };\n\n sanitize = function(can, val) {\n can.width = val;\n return can.height = val;\n };\n\n init();\n});\n\nexport default holepunching;\n","/* eslint-disable */\n//module.exports = jQuery => jQuery(document).ready(function(jQuery) {\n const newCubeCounting = (jQuery) => jQuery(document).ready(function() {\n var THREE = window.THREE;\n console.log('HMMMM', THREE);\n var COLUMNS, Cube, HEIGHT, LAYER_X, LAYER_Y, PADDING, PUZZLE_X, PUZZLE_Y, Page, Point, ROWS, Structure, answerGrades, answerValues, clearGrades, clearLayers, clearPuzzle, clearRadios, currentPage, erasePage, gameReset, init, layerIds, newPage, createScene, updateScene, initScene, createCube, numberWord, pagePosition, previousPage, questionIds, questionText, startGenerator, radioChangeEvent, randomInt, restoreCurrentPage, revealExplication, sanitize, sanitizeCanvases, screenLine, screenMove, serializedPages, setPageNumber, startTimer, tallyScoreboard, timeChangeEvent, mouseUp, canvasDrag, timeLeft, timeOut, timeReset, timer, timerOn;\n\n timerOn = false;\n\n var setTime = 60;\n\n var minX, maxX, minY, maxY, minZ, maxZ;\n\n var intervalFunction;\n var posX, posY;\n var cursorX, cursorY;\n var dragMode = false;\n\n var dragTouchMode = false;\n var touchStart, touchMove, touchEnd;\n\n var zoomIn, zoomOut, resetScene;\n\n timeLeft = setTime;\n\n timer = {};\n\n serializedPages = [];\n\n pagePosition = 0;\n\n currentPage = {};\n\n var scene, camera, renderer;\n\n answerGrades = [\"grade-A\", \"grade-B\", \"grade-C\", \"grade-D\", \"grade-E\"];\n\n answerValues = [\"A\", \"B\", \"C\", \"D\", \"E\"];\n\n layerIds = [\"layer-1\", \"layer-2\", \"layer-3\", \"layer-4\"];\n\n questionIds = [\"amount-1\", \"amount-2\", \"amount-3\", \"amount-4\", \"amount-5\"];\n\n PADDING = 3;\n\n PUZZLE_X = 284;\n\n PUZZLE_Y = 236;\n\n LAYER_X = 140;\n\n LAYER_Y = 100;\n\n ROWS = 5;\n\n COLUMNS = 5;\n\n HEIGHT = 4;\n\n var difficulty = 0;\n\n var questionStartTime = new Date().getTime();\n var totalTime = 0;\n var totalAnswered = 0;\n\n init = function() {\n var rad, rd, _i, _len, _results;\n console.log(\"init...\");\n jQuery('#setdifficulty').change(function() {\n difficulty = (parseInt(jQuery(this).val()));\n console.log(\"Changed difficulty to: \" + difficulty);\n setDifficulty();\n gameReset();\n // $('#next').click();\n });\n jQuery('#setTimer').change(function() {\n setTime = (parseInt(jQuery(this).val()));\n timeReset();\n });\n\n sanitizeCanvases();\n initScene();\n newPage();\n document.getElementById(\"next\").onclick = newPage;\n document.getElementById(\"previous\").onclick = previousPage;\n document.getElementById(\"time-button\").onclick = timeChangeEvent;\n document.getElementById(\"reset\").onclick = resetScene;\n renderer.domElement.onmousedown = canvasDrag;\n document.body.onmouseup = mouseUp;\n renderer.domElement.ontouchstart = touchStart;\n document.body.ontouchmove = touchMove;\n document.body.ontouchend = touchEnd;\n document.body.onmousemove = function(event){\n if (dragTouchMode){\n return;\n }\n\n cursorX = event.pageX;\n cursorY = event.pageY;\n }\n document.getElementById(\"game-reset\").onclick = gameReset;\n document.getElementById(\"start-generator\").onclick = startGenerator;\n rad = document.getElementsByName(\"answer\");\n _results = [];\n for (_i = 0, _len = rad.length; _i < _len; _i++) {\n rd = rad[_i];\n _results.push(rd.onclick = radioChangeEvent);\n }\n return _results;\n };\n\n mouseUp = function(e){\n clearInterval(intervalFunction);\n dragMode = false;\n }\n\n zoomIn = function () {\n camera.zoom += 0.1;\n camera.updateProjectionMatrix();\n\n renderer.render( scene, camera );\n }\n\n zoomOut = function () {\n\n camera.zoom -= 0.1;\n camera.updateProjectionMatrix();\n\n renderer.render( scene, camera );\n }\n\n resetScene = function (){\n const group = scene.children[0];\n\n group.rotation.x = 0;\n group.rotation.y = 0;\n group.rotation.z = 0;\n camera.position.z = 8;\n camera.zoom = 2.97;\n camera.updateProjectionMatrix();\n\n renderer.render( scene, camera );\n }\n\n updateScene = function (){\n const xDiff = cursorX - posX;\n const yDiff = cursorY - posY;\n\n posX = cursorX;\n posY = cursorY;\n\n if (Math.abs(xDiff) + Math.abs(yDiff) == 0){\n return;\n }\n\n const group = scene.children[0];\n\n group.rotation.x += -yDiff / 100;\n group.rotation.y += xDiff / 100;\n\n renderer.render( scene, camera );\n }\n\n touchEnd = function(e){\n clearInterval(intervalFunction);\n dragTouchMode = false;\n }\n\n touchMove = function(e){\n if (dragMode){\n return;\n }\n\n const touch = e.touches[0] || e.changedTouches[0];\n cursorX = touch.pageX;\n cursorY = touch.pageY;\n }\n\n touchStart = function(e) {\n if (dragMode || dragTouchMode){\n return\n }\n\n const touch = e.touches[0] || e.changedTouches[0];\n posX = touch.pageX;\n posY = touch.pageY;\n\n cursorX = posX;\n cursorY = posY;\n\n dragTouchMode = true;\n intervalFunction = setInterval(updateScene , 50);\n }\n\n canvasDrag = function(e) {\n if (dragMode || dragTouchMode){\n return\n }\n\n posX = cursorX;\n posY = cursorY;\n\n dragMode = true;\n intervalFunction = setInterval(updateScene , 50);\n }\n\n\n\n //window.onload = init;\n\n /*\n * Change difficulty controls\n */\n function setDifficulty() {\n if (difficulty === 0) {\n ROWS = 5;\n COLUMNS = 5;\n HEIGHT = 4;\n } else {\n ROWS = 3;\n COLUMNS = 3;\n HEIGHT = 3;\n }\n }\n\n initScene = function () {\n scene = new THREE.Scene();\n //scene.background = new THREE.Color( 0xb0b0b0 );\n scene.background = new THREE.Color( 0xeeeeee );\n //camera = new THREE.PerspectiveCamera( 75, 1, 0.1, 1000 );\n camera = new THREE.OrthographicCamera( -10, 10, -10, 10, 1, 1000 );\n\n renderer = new THREE.WebGLRenderer({antialias: true});\n renderer.setSize( 290, 240 );\n //renderer.setClearColor( 0xffffff, 0);\n document.getElementById('sol-layer').appendChild( renderer.domElement );\n }\n\n createCube = function (cube, color) {\n const edgeLength = 1;\n const geometry = new THREE.BoxGeometry( edgeLength , 1.25*edgeLength , edgeLength );\n const material = new THREE.MeshBasicMaterial( { color: color } );\n //const material = new THREE.MeshLambertMaterial( { color: color } );\n const createdCube = new THREE.Mesh( geometry, material );\n\n var edgeGeometry = new THREE.EdgesGeometry( createdCube.geometry ); // or WireframeGeometry\n var edgeMaterial = new THREE.LineBasicMaterial( { color: 0x000000, linewidth: 2 } );\n var edges = new THREE.LineSegments( edgeGeometry, edgeMaterial );\n createdCube.add( edges );\n let newX = cube.x - minX;\n newX = newX*edgeLength - 1;\n let newY = cube.y - minY;\n newY = newY*edgeLength - 1;\n let newZ = maxZ - cube.z;\n newZ = newZ*edgeLength;\n createdCube.position.set( newX, 1.25*(newY - 1) , newZ);\n\n return createdCube;\n }\n\n createScene = function() {\n const group = new THREE.Group();\n\n minX = 10;\n minY = 10;\n minZ = 10;\n maxX = -10;\n maxY = -10;\n maxZ = -10;\n\n for (const cube of currentPage.structure.cubes){\n minX = Math.min(minX, cube.x);\n minY = Math.min(minY, cube.y);\n minZ = Math.min(minZ, cube.z);\n\n maxX = Math.max(maxX, cube.x);\n maxY = Math.max(maxY, cube.y);\n maxZ = Math.max(maxZ, cube.z);\n }\n\n for (const cube of currentPage.structure.cubes){\n group.add(createCube(cube, cube.painted == currentPage.sidesQty ? 0x00FF00 :0xFFFFFF));\n }\n\n let obj;\n for( var i = scene.children.length - 1; i >= 0; i--) {\n obj = scene.children[i];\n scene.remove(obj);\n }\n\n scene.add( group );\n dragMode = false;\n camera.position.z = 8;\n camera.position.x = currentPage.structure.perspective == 1 ? 2 : -2;\n camera.position.y = -3;\n camera.zoom = 2.97;\n camera.lookAt(0, 0, 0.0);\n camera.updateProjectionMatrix();\n\n renderer.clear();\n renderer.render( scene, camera );\n }\n\n newPage = function() {\n setDifficulty();\n questionStartTime = new Date().getTime();\n pagePosition++;\n document.getElementById('puzzle').style.display='block';\n document.getElementById('solution-canvas').style.display='none';\n if (pagePosition > serializedPages.length) {\n if (pagePosition === 1 || serializedPages[pagePosition - 2].structure.paintQueries.length >= 3) {\n currentPage = new Page(new Structure());\n } else {\n currentPage = new Page(serializedPages[pagePosition - 2].structure);\n }\n serializedPages.push(currentPage);\n erasePage();\n currentPage.display();\n createScene();\n if (timerOn) {\n return startTimer();\n }\n } else {\n erasePage();\n return restoreCurrentPage();\n }\n\n };\n\n startGenerator = function () {\n document.getElementById('generator').style.display='block';\n document.getElementById('introduction').style.display='none';\n timerOn = true;\n startTimer();\n questionStartTime = new Date().getTime();\n }\n\n previousPage = function() {\n if (pagePosition > 1) {\n pagePosition--;\n erasePage();\n return restoreCurrentPage();\n }\n };\n\n revealExplication = function() {\n document.getElementById(\"solution\").innerHTML = \"Solution:\";\n return currentPage.explicate();\n };\n\n timeChangeEvent = function() {\n timerOn = !timerOn;\n if (timerOn) {\n return startTimer();\n } else {\n clearInterval(timer);\n if (timeLeft === 0) {\n return timeReset();\n }\n }\n };\n\n startTimer = function() {\n clearInterval(timer);\n return timer = setInterval(function() {\n timeLeft--;\n document.getElementById(\"time-display\").innerHTML = timeLeft;\n if (timeLeft < 1) {\n return timeOut();\n }\n }, 1000);\n };\n\n timeOut = function() {\n var rad;\n clearInterval(timer);\n rad = document.getElementsByName(\"answer\");\n rad[currentPage.correctOption !== 0 ? 0 : 1].checked = true;\n return radioChangeEvent();\n };\n\n radioChangeEvent = function() {\n var radios, rd, _i, _len;\n clearInterval(timer);\n radios = document.getElementsByName('answer');\n\n document.getElementById('puzzle').style.display='none';\n document.getElementById('solution-canvas').style.display='block';\n\n renderer.clear();\n renderer.render( scene, camera );\n\n totalTime += new Date().getTime() - questionStartTime;\n ++totalAnswered;\n var newAverage = (totalTime / (1000* totalAnswered));\n newAverage -= newAverage % 1;\n\n jQuery('#average-time').text(newAverage);\n for (_i = 0, _len = radios.length; _i < _len; _i++) {\n rd = radios[_i];\n if (rd.checked) {\n currentPage.answer = rd.value;\n break;\n }\n }\n clearGrades();\n document.getElementById(answerGrades[currentPage.correctOption]).innerHTML = '';\n if (answerValues[currentPage.correctOption] !== currentPage.answer) {\n document.getElementById('grade-' + currentPage.answer).innerHTML = '';\n }\n revealExplication();\n return tallyScoreboard();\n };\n\n tallyScoreboard = function() {\n var correct, incorrect, sp, _i, _len;\n incorrect = 0;\n correct = 0;\n for (_i = 0, _len = serializedPages.length; _i < _len; _i++) {\n sp = serializedPages[_i];\n if (sp.answer !== \"z\") {\n if (sp.answer === answerValues[sp.correctOption]) {\n correct++;\n } else {\n incorrect++;\n }\n }\n }\n document.getElementById('incorrect').innerHTML = incorrect;\n return document.getElementById('correct').innerHTML = correct;\n };\n\n setPageNumber = function() {\n document.getElementById(\"location\").innerHTML = pagePosition;\n return document.getElementById(\"total\").innerHTML = serializedPages.length;\n };\n\n restoreCurrentPage = function() {\n var radios, rd, _i, _len;\n currentPage = serializedPages[pagePosition - 1];\n\n document.getElementById('puzzle').style.display='block';\n document.getElementById('solution-canvas').style.display='none';\n\n if (timerOn && currentPage.answer === \"z\") {\n questionStartTime = new Date().getTime();\n startTimer();\n }\n currentPage.display();\n createScene();\n if (currentPage.answer !== \"z\") {\n radios = document.getElementsByName('answer');\n for (_i = 0, _len = radios.length; _i < _len; _i++) {\n rd = radios[_i];\n if (rd.value === currentPage.answer) {\n rd.checked = true;\n break;\n }\n }\n document.getElementById(answerGrades[currentPage.correctOption]).innerHTML = '';\n if (answerValues[currentPage.correctOption] !== currentPage.answer) {\n return document.getElementById('grade-' + currentPage.answer).innerHTML = '';\n } else {\n document.getElementById('puzzle').style.display='none';\n document.getElementById('solution-canvas').style.display='block';\n return revealExplication();\n }\n }\n };\n\n randomInt = function(scale) {\n return Math.floor(Math.random() * scale);\n };\n\n numberWord = function(n) {\n switch (n) {\n case 1:\n return \"one\";\n case 2:\n return \"two\";\n case 3:\n return \"three\";\n case 4:\n return \"four\";\n case 5:\n return \"five\";\n }\n };\n\n questionText = function(n) {\n if (n === 1) {\n return \"1 cube\";\n } else {\n return n + \" cubes\";\n }\n };\n\n screenLine = function(ctx, p, mult) {\n var x, y;\n x = Math.floor(p[0] * mult) + PADDING;\n y = Math.floor(p[1] * mult) + PADDING;\n return ctx.lineTo(x, y);\n };\n\n screenMove = function(ctx, p, mult) {\n var x, y;\n x = Math.floor(p[0] * mult) + PADDING;\n y = Math.floor(p[1] * mult) + PADDING;\n return ctx.moveTo(x, y);\n };\n\n Point = (function() {\n function Point(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n\n Point.prototype.screenPoint = function(view, xOff, yOff) {\n var deltaX, result;\n result = [];\n deltaX = this.z * 0.42;\n if (view >= 1) {\n deltaX = -deltaX + COLUMNS / 2;\n }\n result[0] = this.x - deltaX + xOff;\n result[1] = this.y - this.z * 0.38 + yOff;\n return result;\n };\n\n return Point;\n\n })();\n\n Cube = (function() {\n function Cube(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.painted = 5;\n }\n\n Cube.prototype.print = function(ctx, mult, view, color, xOff, yOff) {\n ctx.fillStyle = color;\n this.fill(ctx, mult, view, xOff, yOff);\n return this.outline(ctx, mult, view, xOff, yOff);\n };\n\n Cube.prototype.fill = function(ctx, mult, view, xOff, yOff) {\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.closePath();\n ctx.fill();\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n ctx.closePath();\n ctx.fill();\n if (view === 0) {\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y + 1, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.closePath();\n return ctx.fill();\n } else {\n ctx.beginPath();\n screenMove(ctx, new Point(this.x + 1, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y + 1, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.closePath();\n return ctx.fill();\n }\n };\n\n Cube.prototype.outline = function(ctx, mult, view, xOff, yOff) {\n ctx.lineCap = \"round\";\n ctx.lineWidth = 1;\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n ctx.beginPath();\n screenMove(ctx, new Point(this.x + 1, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n ctx.beginPath();\n screenMove(ctx, new Point(this.x + 1, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n ctx.beginPath();\n screenMove(ctx, new Point(this.x + 1, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n if (view === 0) {\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y + 1, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n } else {\n ctx.beginPath();\n screenMove(ctx, new Point(this.x + 1, this.y + 1, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n }\n ctx.beginPath();\n screenMove(ctx, new Point(this.x + 1, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y, this.z + 1).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y, this.z).screenPoint(view, xOff, yOff), mult);\n ctx.stroke();\n if (view === 0) {\n ctx.beginPath();\n screenMove(ctx, new Point(this.x, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x, this.y + 1, this.z + 1).screenPoint(view, xOff, yOff), mult);\n return ctx.stroke();\n } else {\n ctx.beginPath();\n screenMove(ctx, new Point(this.x + 1, this.y + 1, this.z).screenPoint(view, xOff, yOff), mult);\n screenLine(ctx, new Point(this.x + 1, this.y + 1, this.z + 1).screenPoint(view, xOff, yOff), mult);\n return ctx.stroke();\n }\n };\n\n return Cube;\n\n })();\n\n Structure = (function() {\n function Structure() {\n this.xOff = 0;\n this.yOff = 0;\n this.perspective = randomInt(2);\n this.paintQueries = [];\n while (true) {\n this.cubes = [];\n this.seed();\n this.createPattern();\n if (this.visible()) {\n break;\n }\n }\n this.scale();\n this.tallySides();\n this.order();\n }\n\n Structure.prototype.visible = function() {\n var cb, front, h, i, j, lip, obstuctColumn, side, wall, _i, _j, _k, _len, _ref, _ref1, _ref2;\n for (i = _i = 0, _ref = COLUMNS - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n for (j = _j = 0, _ref1 = ROWS - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; j = 0 <= _ref1 ? ++_j : --_j) {\n h = this.height(i, j);\n if (h < HEIGHT) {\n _ref2 = this.cubes;\n for (_k = 0, _len = _ref2.length; _k < _len; _k++) {\n cb = _ref2[_k];\n if (cb.y < h && cb.z <= j) {\n if (this.perspective === 0 && i - cb.x === 1) {\n return false;\n }\n if (this.perspective === 1 && cb.x - i === 1) {\n return false;\n }\n }\n }\n }\n front = this.height(i, j - 1);\n if (front <= h && front < HEIGHT) {\n side = this.perspective === 0 ? this.height(i - 1, j) : this.height(i + 1, j);\n if (side <= h && side < HEIGHT) {\n lip = side > front ? side : front;\n wall = this.height(i, j + 1);\n if (wall <= lip) {\n if (this.height(i, j - 1) < lip || this.height(i, j - 2) < lip) {\n obstuctColumn = this.perspective === 0 ? i - 1 : i + 1;\n if (this.height(obstuctColumn, j - 1) >= lip && this.height(obstuctColumn, j - 2) >= lip) {\n return false;\n }\n }\n }\n }\n }\n }\n }\n return true;\n };\n\n Structure.prototype.height = function(x, z) {\n var cb, h, _i, _len, _ref;\n h = HEIGHT;\n _ref = this.cubes;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n cb = _ref[_i];\n if ((cb.x === x && cb.z === z) && (cb.y < h)) {\n h = cb.y;\n }\n }\n return h;\n };\n\n Structure.prototype.tallySides = function() {\n var cb1, cb2, div, _i, _len, _ref, _results;\n _ref = this.cubes;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n cb1 = _ref[_i];\n _results.push((function() {\n var _j, _len1, _ref1, _results1;\n _ref1 = this.cubes;\n _results1 = [];\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n cb2 = _ref1[_j];\n if (cb2 !== cb1) {\n if (cb1.x === cb2.x && cb1.y === cb2.y) {\n div = cb1.z - cb2.z;\n if (div === 1) {\n _results1.push(cb1.painted--);\n } else if (div === -1) {\n _results1.push(cb1.painted--);\n } else {\n _results1.push(void 0);\n }\n } else if (cb1.x === cb2.x && cb1.z === cb2.z) {\n div = cb1.y - cb2.y;\n if (div === 1) {\n _results1.push(cb1.painted--);\n } else {\n _results1.push(void 0);\n }\n } else if (cb1.z === cb2.z && cb1.y === cb2.y) {\n div = cb1.x - cb2.x;\n if (div === 1) {\n _results1.push(cb1.painted--);\n } else if (div === -1) {\n _results1.push(cb1.painted--);\n } else {\n _results1.push(void 0);\n }\n } else {\n _results1.push(void 0);\n }\n }\n }\n return _results1;\n }).call(this));\n }\n return _results;\n };\n\n Structure.prototype.push = function(cube) {\n return this.cubes.push(cube);\n };\n\n Structure.prototype.printCubes = function(ctx) {\n var cb, _i, _len, _ref, _results;\n _ref = this.cubes;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n cb = _ref[_i];\n _results.push(cb.print(ctx, this.multiplier, this.perspective, \"white\", this.xOff, this.yOff));\n }\n return _results;\n };\n\n Structure.prototype.order = function() {\n var cb, hldr, holder, holder2, i, j, result, _i, _j, _k, _l, _len, _len1, _ref, _ref1, _ref2, _ref3;\n result = [];\n holder = [];\n for (i = _i = 0, _ref = HEIGHT - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n holder.push([]);\n }\n _ref1 = this.cubes;\n for (_j = 0, _len = _ref1.length; _j < _len; _j++) {\n cb = _ref1[_j];\n holder[cb.y].push(cb);\n }\n i = HEIGHT - 1;\n while (i >= 0) {\n holder2 = [];\n for (j = _k = 0, _ref2 = ROWS - 1; 0 <= _ref2 ? _k <= _ref2 : _k >= _ref2; j = 0 <= _ref2 ? ++_k : --_k) {\n holder2.push([]);\n }\n _ref3 = holder[i];\n for (_l = 0, _len1 = _ref3.length; _l < _len1; _l++) {\n hldr = _ref3[_l];\n holder2[hldr.z].push(hldr);\n }\n j = ROWS - 1;\n while (j >= 0) {\n if (this.perspective === 0) {\n holder2[j].sort(function(a, b) {\n return b.x - a.x;\n });\n } else {\n holder2[j].sort(function(a, b) {\n return a.x - b.x;\n });\n }\n result = result.concat(holder2[j]);\n j--;\n }\n i--;\n }\n return this.cubes = result;\n };\n\n Structure.prototype.seed = function() {\n var x, z;\n x = randomInt(COLUMNS);\n z = randomInt(ROWS);\n return this.push(new Cube(x, HEIGHT - 1, z));\n };\n\n Structure.prototype.scale = function() {\n var b, bottom, cube, l, left, r, right, t, top, xScale, yScale, _i, _len, _ref;\n top = 10000;\n bottom = -10000;\n right = -10000;\n left = 10000;\n _ref = this.cubes;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n cube = _ref[_i];\n t = new Point(cube.x, cube.y, cube.z + 1).screenPoint(this.perspective, this.xOff, this.yOff)[1];\n if (t < top) {\n top = t;\n }\n b = new Point(cube.x, cube.y + 1, cube.z).screenPoint(this.perspective, this.xOff, this.yOff)[1];\n if (b > bottom) {\n bottom = b;\n }\n if (this.perspective === 0) {\n r = new Point(cube.x + 1, cube.y, cube.z).screenPoint(this.perspective, this.xOff, this.yOff)[0];\n if (r > right) {\n right = r;\n }\n l = new Point(cube.x, cube.y, cube.z + 1).screenPoint(this.perspective, this.xOff, this.yOff)[0];\n if (l < left) {\n left = l;\n }\n } else {\n r = new Point(cube.x + 1, cube.y, cube.z + 1).screenPoint(this.perspective, this.xOff, this.yOff)[0];\n if (r > right) {\n right = r;\n }\n l = new Point(cube.x, cube.y, cube.z).screenPoint(this.perspective, this.xOff, this.yOff)[0];\n if (l < left) {\n left = l;\n }\n }\n }\n xScale = LAYER_X / (right - left);\n yScale = LAYER_Y / (bottom - top);\n if (xScale > yScale) {\n this.solutionScale = LAYER_Y / (bottom - top);\n } else {\n this.solutionScale = LAYER_X / (right - left);\n }\n this.multiplier = 40;\n this.xOff = 0 - left;\n return this.yOff = 0 - top;\n };\n\n Structure.prototype.createPattern = function() {\n var a, cb, iter, j, upperCubes, valid, x, z, _i, _j, _len, _len1, _ref, _ref1;\n upperCubes = [];\n while (true) {\n a = randomInt(this.cubes.length);\n x = this.cubes[a].x;\n z = this.cubes[a].z;\n switch (randomInt(4)) {\n case 0:\n x--;\n break;\n case 1:\n x++;\n break;\n case 2:\n z++;\n break;\n default:\n z--;\n }\n if (x >= COLUMNS || x < 0 || z >= ROWS || z < 0) {\n continue;\n }\n valid = true;\n _ref = this.cubes;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n cb = _ref[_i];\n if (x === cb.x && z === cb.z) {\n valid = false;\n break;\n }\n }\n if (valid) {\n this.push(new Cube(x, HEIGHT - 1, z));\n }\n if (!(this.cubes.length < (5 + randomInt(4) + randomInt(4) + randomInt(4) + randomInt(4)))) {\n break;\n }\n }\n while (true) {\n upperCubes = [];\n _ref1 = this.cubes;\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n cb = _ref1[_j];\n iter = randomInt(HEIGHT);\n x = cb.x;\n z = cb.z;\n j = 0;\n while (j < iter) {\n upperCubes.push(new Cube(x, HEIGHT - (2 + j), z));\n j++;\n }\n }\n if (!(upperCubes.length + this.cubes.length < 15 || upperCubes.length + this.cubes.length > 20)) {\n break;\n }\n }\n return this.cubes = this.cubes.concat(upperCubes);\n };\n\n Structure.prototype.testStructure = function() {\n var i, j, k, _i, _ref, _results;\n this.cubes = [];\n _results = [];\n for (i = _i = 0, _ref = COLUMNS - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n _results.push((function() {\n var _j, _ref1, _results1;\n _results1 = [];\n for (j = _j = 0, _ref1 = HEIGHT - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; j = 0 <= _ref1 ? ++_j : --_j) {\n _results1.push((function() {\n var _k, _ref2, _results2;\n _results2 = [];\n for (k = _k = 0, _ref2 = ROWS - 1; 0 <= _ref2 ? _k <= _ref2 : _k >= _ref2; k = 0 <= _ref2 ? ++_k : --_k) {\n _results2.push(this.push(new Cube(i, j, k)));\n }\n return _results2;\n }).call(this));\n }\n return _results1;\n }).call(this));\n }\n return _results;\n };\n\n return Structure;\n\n })();\n\n Page = (function() {\n function Page(structure) {\n this.structure = structure;\n this.answer = \"z\";\n this.options = [];\n this.paintQuery();\n this.sequentialQuestions();\n }\n\n Page.prototype.paintQuery = function() {\n var pq, valid, _i, _len, _ref;\n while (true) {\n valid = true;\n this.sidesQty = randomInt(5) + 1;\n _ref = this.structure.paintQueries;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n pq = _ref[_i];\n if (this.sidesQty === pq) {\n valid = false;\n break;\n }\n }\n if (!valid) {\n continue;\n }\n this.getTally();\n if (this.tally !== 0) {\n break;\n }\n }\n return this.structure.paintQueries.push(this.sidesQty);\n };\n\n Page.prototype.populateQuestions = function() {\n var candidate, history, hst, i, valid, _i, _len, _results;\n this.options.push(this.tally);\n history = [];\n i = 0;\n while (i < questionIds.length) {\n while (true) {\n candidate = randomInt(5) + 1;\n if (Math.random() < 0.5) {\n candidate = -candidate;\n }\n if (candidate + this.tally < 1 || candidate + this.tally > this.structure.cubes.length) {\n continue;\n }\n valid = true;\n for (_i = 0, _len = history.length; _i < _len; _i++) {\n hst = history[_i];\n if (candidate === hst) {\n valid = false;\n break;\n }\n }\n if (!valid) {\n continue;\n }\n history.push(candidate);\n this.options.push(this.tally + candidate);\n break;\n }\n i++;\n }\n this.options.sort(function(a, b) {\n return a - b;\n });\n i = 0;\n _results = [];\n while (i < questionIds.length) {\n if (this.options[i] === this.tally) {\n this.correctOption = i;\n }\n _results.push(i++);\n }\n return _results;\n };\n\n Page.prototype.sequentialQuestions = function() {\n var choices, i, _i, _results;\n choices = this.tally;\n if (choices > 5) {\n choices = 5;\n }\n this.correctOption = randomInt(choices);\n _results = [];\n for (i = _i = 0; _i <= 4; i = ++_i) {\n _results.push(this.options.push(this.tally - this.correctOption + i));\n }\n return _results;\n };\n\n Page.prototype.displayQuestions = function() {\n var i, _results;\n document.getElementById(\"query\").innerHTML = numberWord(this.sidesQty);\n i = 0;\n _results = [];\n while (i < questionIds.length) {\n document.getElementById(questionIds[i]).innerHTML = questionText(this.options[i]);\n _results.push(i++);\n }\n return _results;\n };\n\n Page.prototype.getTally = function() {\n var count, sc, _i, _len, _ref;\n count = 0;\n _ref = this.structure.cubes;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n sc = _ref[_i];\n if (sc.painted === this.sidesQty) {\n count++;\n }\n }\n return this.tally = count;\n };\n\n Page.prototype.display = function() {\n var c, ctx;\n this.displayQuestions();\n c = document.getElementById('puzzle');\n ctx = c.getContext(\"2d\");\n return this.structure.printCubes(ctx);\n };\n\n Page.prototype.explicate = function() {\n var c, color, ctx, i, sc, _i, _len, _ref, _results;\n i = 0;\n _results = [];\n document.getElementById('solution-canvas').style.visibility = 'initial';\n while (i < layerIds.length) {\n c = document.getElementById(layerIds[i]);\n ctx = c.getContext(\"2d\");\n _ref = this.structure.cubes;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n sc = _ref[_i];\n if (sc.y === i) {\n color = \"white\";\n if (sc.painted === this.sidesQty) {\n color = \"#5F5\";\n }\n sc.print(ctx, this.structure.solutionScale, this.structure.perspective, color, this.structure.xOff, this.structure.yOff);\n } else if (sc.y > i) {\n color = \"#EEE\";\n sc.print(ctx, this.structure.solutionScale, this.structure.perspective, color, this.structure.xOff, this.structure.yOff);\n }\n }\n _results.push(i++);\n }\n return _results;\n };\n\n return Page;\n\n })();\n\n gameReset = function() {\n //timerOn = false;\n questionStartTime = new Date().getTime();\n totalTime = 0;\n totalAnswered = 0;\n\n jQuery('#average-time').text(0);\n\n\n clearInterval(timer);\n serializedPages = [];\n pagePosition = 0;\n newPage();\n return tallyScoreboard();\n };\n\n timeReset = function() {\n timeLeft = setTime;\n return document.getElementById(\"time-display\").innerHTML = timeLeft;\n };\n\n erasePage = function() {\n document.getElementById(\"solution\").innerHTML = \"\";\n clearGrades();\n clearLayers();\n clearPuzzle();\n clearRadios();\n clearInterval(timer);\n timeReset();\n return setPageNumber();\n };\n\n clearGrades = function() {\n var ag, _i, _len, _results;\n _results = [];\n for (_i = 0, _len = answerGrades.length; _i < _len; _i++) {\n ag = answerGrades[_i];\n _results.push(document.getElementById(ag).innerHTML = '');\n }\n return _results;\n };\n\n clearLayers = function() {\n var c, ctx, li, x, y, _i, _len, _results;\n x = LAYER_X + PADDING * 2;\n y = LAYER_Y + PADDING * 2;\n _results = [];\n document.getElementById('solution-canvas').style.visibility = 'hidden';\n\n for (_i = 0, _len = layerIds.length; _i < _len; _i++) {\n li = layerIds[_i];\n c = document.getElementById(li);\n ctx = c.getContext(\"2d\");\n _results.push(ctx.clearRect(0, 0, x, y));\n }\n return _results;\n };\n\n clearPuzzle = function() {\n var c, ctx, x, y;\n x = PUZZLE_X + PADDING * 2;\n y = PUZZLE_Y + PADDING * 2;\n c = document.getElementById('puzzle');\n ctx = c.getContext(\"2d\");\n return ctx.clearRect(0, 0, x, y);\n };\n\n clearRadios = function() {\n var el, ele, _i, _len, _results;\n ele = document.getElementsByName(\"answer\");\n _results = [];\n for (_i = 0, _len = ele.length; _i < _len; _i++) {\n el = ele[_i];\n _results.push(el.checked = false);\n }\n return _results;\n };\n\n sanitizeCanvases = function() {\n var c, li, x, y, _i, _len;\n x = LAYER_X + PADDING * 2;\n y = LAYER_Y + PADDING * 2;\n for (_i = 0, _len = layerIds.length; _i < _len; _i++) {\n li = layerIds[_i];\n c = document.getElementById(li);\n sanitize(c, x, y);\n }\n x = PUZZLE_X + PADDING * 2;\n y = PUZZLE_Y + PADDING * 2;\n c = document.getElementById('puzzle');\n return sanitize(c, x, y);\n };\n\n sanitize = function(can, x, y) {\n can.width = x;\n return can.height = y;\n };\n\n init();\n });\n\nexport default newCubeCounting;","import React, {useEffect, useState} from 'react';\n\nimport $ from 'jquery';\nimport 'jquery-ui/ui/widgets/slider';\nimport styled from 'styled-components';\n\n// generator templates\nimport AngleRanking from './components/AngleRanking';\nimport CubeCounting from './components/CubeCounting';\nimport HolePunching from './components/HolePunching';\nimport PatternFolding from './components/PatternFolding';\nimport Tfe from './components/Tfe';\nimport Trainer from './components/Trainer';\n\n// generator scripts\nimport angleRankingJs from './scripts/angleRanking';\nimport cubeCountingJs from './scripts/cubeCounting';\nimport holePunchingJs from './scripts/holePunching';\nimport patternFoldingJs from './scripts/patternFolding';\nimport newPatternFoldingJs from './scripts/newPatternFolding';\nimport newCubeCountingJs from './scripts/newCubeCounting';\nimport TrainerJs from './scripts/Trainer';\n\nimport {ExitQuizButton} from '../../../components/QuestionBank/Buttons';\n\nconst contentMap = {\n 'angle-ranking': [AngleRanking, angleRankingJs, 'angleRanking.css'],\n 'cube-counting': [CubeCounting, newCubeCountingJs, 'newCubeCounting.css'],\n 'hole-punching': [HolePunching, holePunchingJs, 'holePunching.css'],\n 'pattern-folding': [PatternFolding, newPatternFoldingJs, 'newPatternFolding.css'],\n 'tfe': [Tfe, null, 'angleRanking.css'],\n 'trainer': [Trainer, TrainerJs, 'Trainer.css'],\n}\n\nconst StyledExitQuizButton = styled(ExitQuizButton)`\n position: absolute;\n top: 8px;\n left: 8px;\n`;\n\nconst Generators = ({generatorKey}) => {\n const [loaded, setLoaded] = useState(false)\n const [Component, script, stylesheet] = contentMap[generatorKey];\n\n useEffect(() => {\n // dynamic stylesheet import to prevent style conflicts since some generators use same id/classnames\n import (`./styles/${stylesheet}`);\n\n $( document ).on( 'contextmenu', '.label, .grade label, .answers ul li', function( event ) {\n $(this).toggleClass( 'strikethrough' );\n event.preventDefault();\n return false;\n });\n\n $( \".nextbutton\" ).click(function() {\n $(\".grade label\").removeClass( 'strikethrough' );\n });\n $( document ).on( 'click', \".strikethrough\", function (event) {\n $(this).removeClass( 'strikethrough' );\n })\n if (!script) return;\n\n // run generator logic on mount\n script($);\n }, [])\n\n useEffect(() => {\n if (!window.onload || loaded || !['cube-counting', 'hole-punching', 'trainer'].includes(generatorKey)) return;\n window.onload()\n setLoaded(true);\n }, [window.onload])\n\n return (\n
\n \n \n
\n );\n};\n\nGenerators.defaultProps = {};\nGenerators.propTypes = {};\n\nexport default Generators;\n","var _circle, _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgCheckmarkOutline(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 16,\n cy: 16,\n r: 16,\n fill: \"#66AC5C\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.5248 9.41813C22.2551 9.1484 21.9054 9 21.54 9C21.1317 9 20.7396 9.18842 20.4605 9.52124L13.378 18.3083L11.0036 16.3827C10.6741 16.0763 10.2544 15.9077 9.82188 15.9077C9.28802 15.9077 8.78281 16.1614 8.43599 16.6035C7.7843 17.4341 7.87204 18.6904 8.63987 19.4113L12.3559 22.6246C12.6136 22.8667 12.9426 23 13.2825 23C13.6959 23 14.088 22.8043 14.3612 22.4594L22.6425 11.6293C23.1614 10.9743 23.1096 10.003 22.5248 9.41813Z\",\n fill: \"white\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCheckmarkOutline);\nexport default __webpack_public_path__ + \"static/media/checkmark-outline.d8580aea.svg\";\nexport { ForwardRef as ReactComponent };","import React, {useEffect} from 'react';\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\nimport {useTestContext} from '../../../contexts/TestBase';\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nimport StartBlock from './StartBlock';\nimport USMLEBank from '../../../components/USMLEBank';\nimport {TestNavigatorProvider} from '../../../contexts/TestNavigator';\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {colors} from '@bootcamp/shared/src/styles/theme';\n\n\nconst SelfAssessment = props => {\n const {config} = useBootcampConfigContext();\n\n const {bootcamp, cognitoUser, userModel, DEFAULT_USER_ID} = useUserDataContext();\n const username = cognitoUser?.attributes?.name || cognitoUser?.attributes?.email || userModel?.id;\n\n useDocumentTitle(`${config.meta.siteTitle} | Self Assessment`);\n\n const urlParams = new URLSearchParams(window.location.search);\n const isReview = urlParams.get('testProgressId');\n\n const blockRenderers = {\n startBlock: props => {\n return ;\n }\n };\n\n return (\n \n \n \n )\n}\n\nexport default SelfAssessment;\n","import React, {useEffect} from 'react';\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\nimport {useTestContext} from '../../../contexts/TestBase';\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nimport PrometricBank from '../../../components/PrometricBank';\nimport {TestNavigatorProvider} from '../../../contexts/TestNavigator';\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\nimport {colors} from '@bootcamp/shared/src/styles/theme';\n\n\nconst SimulationExam = props => {\n const {config} = useBootcampConfigContext();\n\n const {cognitoUser, userModel} = useUserDataContext();\n const username = cognitoUser?.attributes?.name || cognitoUser?.attributes?.email || userModel?.id;\n\n useDocumentTitle(`${config.meta.siteTitle} | Simulation Exam`);\n\n const urlParams = new URLSearchParams(window.location.search);\n const isReview = urlParams.get('review');\n\n return (\n \n \n \n )\n}\n\nexport default SimulationExam;\n","import React, {useEffect, useRef} from 'react';\n\nimport {useUserDataContext} from '../../../../contexts/UserData';\nimport {useModalContext} from '../../../../contexts/Modal';\nimport {useTestNavigatorContext} from '../../../../contexts/TestNavigator';\nimport {findByRenderType, parseVideoDuration} from '@bootcamp/shared/src/util';\nimport {H3, H4, H5, Body4} from '../../../../components/Typography';\nimport {FlexBox, Row} from '../../../../components/Grid';\nimport BootcampLockdown from '../../../../components/Modal/components/BootcampLockdown';\n\nimport {ReactComponent as Badge} from '@bootcamp/shared/src/assets/svg/badge.svg'\nimport {ReactComponent as Checkmark} from '@bootcamp/shared/src/assets/icons/checkmark-outline.svg';\nimport {School} from '@styled-icons/material-rounded/School';\nimport {Play} from '@styled-icons/heroicons-solid/Play';\nimport {Checkmark as CheckmarkCircle2} from '@styled-icons/fluentui-system-filled/Checkmark';\nimport {RadioButton as RadioButtonOn} from '@styled-icons/fluentui-system-filled/RadioButton';\nimport {RadioButtonOff} from '@styled-icons/evaicons-solid/RadioButtonOff';\n\nimport {TaskListSquareLtr} from '@styled-icons/fluentui-system-filled/TaskListSquareLtr';\n\nimport baseTheme from '@bootcamp/shared/src/styles/theme';\n\nimport styled, {css} from 'styled-components';\nimport Top from '@bootcamp/web/src/components/QBank/SidebarTop';\nimport ProgressBar from '../../../../components/ProgressBar';\n\nconst sidebarWidth = '256px';\n\nconst Background = styled.div`\n height: 100%;\n width: ${({showingSidebar}) => showingSidebar ? '256px' : '0%'};\n background: ${({showingSidebar, theme}) => showingSidebar ? theme.overlays.opacity.dark._300 : 'transparent'};\n transition: width .3s;\n ${({theme}) => theme.mediaQueries.laptop} {\n width: ${({showingSidebar}) => showingSidebar ? '100%' : '0%'};\n transition: background .2s ease-in 0s${({showingSidebar}) => !showingSidebar && `, width .1s ease-in .3s`};\n position: absolute;\n z-index: 10;\n top: 0;\n left: 0;\n height: 100vh;\n }\n`;\n\nconst Container = styled.div`\n width: ${sidebarWidth};\n height: 100%;\n transition: left .3s;\n color: white;\n display: flex;\n flex-direction: column;\n background: ${({theme, themePalette}) => theme.darkModeEnabled ? theme.colors.darkModePalette.surfacePrimary : themePalette ? themePalette.dark : theme.colors.brandPalette.violet.dark};\n position: absolute;\n top: 0;\n ${({showingSidebar}) => showingSidebar ? css`left: 0;` : css`left: -${sidebarWidth};`}\n overflow-y: auto;\n ${({theme}) => theme.mediaQueries.laptop} {\n box-shadow: ${({theme}) => theme.elevation.shadow.high};\n transition: left .2s ease-in 0s${({showingSidebar}) => !showingSidebar && `, height .1s ease-in .3s`};\n position: absolute;\n z-index: 10;\n height: ${({showingSidebar}) => showingSidebar ? '100vh' : '0px'};\n top: 0;\n left: ${({showingSidebar}) => showingSidebar ? 0 : -256}px;\n }\n`;\n\nconst List = styled.div`\n overflow-y: scroll;\n min-height: 200px;\n position: relative;\n flex: 1;\n padding: 12px 0px;\n background: rgba(0, 0, 0, 0.1);\n box-shadow: inset -4px 4px 12px rgba(0, 0, 0, 0.15);\n`;\n\nconst StyledItem = styled.div`\n cursor: pointer;\n\n background: ${({active, isComplete, theme}) => isComplete && active ? theme.colors.special.pearl : active ? 'white' : isComplete ? 'rgba(0, 0, 0, 0.05)' : theme.overlays.opacity.light._100};\n border-radius: 8px;\n border: ${({isComplete}) => isComplete ? '1px solid rgba(0, 0, 0, 0.05)' : '1px solid rgba(255, 255, 255, .1)'};\n transition: 100ms border;\n\n &:hover {\n transition: 100ms border;\n background: ${({theme, active}) => active ? 'white' : 'rgba(255, 255, 255, .2)'};\n }\n`;\n\nconst ItemContainer = styled.div`\n display: flex;\n align-items: center;\n padding: 9px 12px;\n\n ${H3} {\n margin: 0;\n }\n`;\nconst Content = styled.div`\n display: flex;\n flex: 1;\n flex-direction: column;\n`\n\nconst ItemTitle = styled(H4)`\n color: ${({lightMode}) => lightMode ? baseTheme.colors.neutralsPalette.extraDark : 'white'};\n margin-left: 0 !important;\n font-weight: 600;\n line-height: 100%;\n font-size: 14px;\n`;\nconst QuizItemTitle = styled(ItemTitle)`\n margin-bottom: 4px;\n`;\nconst Complete = styled(Checkmark)`\n position: absolute;\n top: 10px;\n left: 10px;\n width: 13px;\n height: 13px;\n z-index: 2;\n\n circle {\n fill: ${({theme}) => theme.overlays.opacity.light._400};\n }\n\n path {\n fill: ${({theme, themePalette}) => themePalette ? themePalette.dark : theme.colors.brandPalette.violet.dark};\n }\n`;\n\nconst StyledBootcampLockdown = styled(BootcampLockdown)`\n height: auto;\n width: 80%;\n display: flex;\n align-items: center;\n max-width: 560px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 0;\n height: 100%;\n width: 100%;\n max-width: none;\n }\n`\n\nfunction getItemData(testBlock) {\n const title = testBlock && testBlock.title;\n const number = findByRenderType(testBlock.components, 'number', null);\n const video = findByRenderType(testBlock.components, 'video', '{}');\n const passage = findByRenderType(testBlock.components, 'passage', '{}');\n const contentType = findByRenderType(testBlock.components, 'contentType', null);\n const {id: videoId, duration: rawDuration} = JSON.parse(video);\n const duration = parseVideoDuration(rawDuration);\n\n return {title, number, videoId, duration, passage, contentType}\n}\n\nconst Introduction = ({testBlock, active, isComplete, themePalette}) => {\n const Icon = isComplete\n ? Complete\n : null;\n\n return (\n \n \n Chapter Overview\n {Icon && }\n \n \n );\n}\n\nconst DetailText = styled(H5)`\n font-size: 12px;\n font-weight: 400;\n margin-top: 4px;\n color: ${({lightMode, theme, themePalette}) => !lightMode ? theme.overlays.opacity.light._400 : baseTheme.colors.neutralsPalette.grey};\n line-height: 100%;\n`;\n\nconst PlayIcon = styled(Play).attrs(props => ({size: 32}))`\n opacity: .3;\n ${({isActive, themePalette}) => isActive && css`\n opacity: 1;\n color: ${themePalette.default};\n `}\n`;\n\nconst SchoolIcon = styled(School).attrs(props => ({size: 32}))`\n opacity: .3;\n ${({isActive, themePalette}) => isActive && css`\n opacity: 1;\n color: ${themePalette.default};\n `}\n`;\n\nconst LockedIcon = styled(Badge)`\n width: 16px;\n path {\n fill: white;\n ${({isActive, themePalette}) => isActive && css`\n opacity: 1;\n fill: ${themePalette.default};\n `}\n }\n`;\n\nconst LessonNumber = styled(H4)`\n color: ${({theme, isActive}) => isActive ? baseTheme.colors.neutralsPalette.grey : 'white'};\n margin-right: 8px;\n font-size: 14px;\n line-height: 100%;\n width: 14px;\n`;\nconst LessonDetails = styled(Row)`\n align-items: center;\n`;\nconst Lesson = ({testBlock, active, isComplete, themePalette, locked}) => {\n const {title, number, duration} = getItemData(testBlock);\n\n return (\n \n \n \n {number}\n \n \n {title}\n \n \n {duration}\n \n \n \n \n );\n}\n\nconst ThumbnailContainer = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 8px;\n`;\n\nconst CheckIcon = styled(CheckmarkCircle2).attrs(props => ({size: 14}))`\n color: ${({isActive, themePalette}) => isActive ? themePalette.default : 'white'};\n width: 14px;\n border-radius: 100%;\n`\n\nconst AnsweredIcon = styled(RadioButtonOn).attrs(props => ({size: 14}))`\n color: ${({themePalette}) => themePalette.default};\n width: 14px;\n`;\n\nconst UnansweredIcon = styled(RadioButtonOff).attrs(props => ({size: 14}))`\n color: rgba(255,255,255,.7);\n width: 14px;\n`;\n\n\nconst Thumbnail = ({Icon, isComplete, isActive, themePalette, locked}) => (\n \n {locked\n ? \n : isComplete\n ? (\n \n )\n : isActive\n ? (\n \n )\n : (\n \n )\n }\n \n);\nconst StyledQuizIcon = styled(TaskListSquareLtr).attrs(props => ({size: 14}))`\n color: ${({theme, lightMode}) => lightMode ? baseTheme.colors.neutralsPalette.grey : theme.overlays.opacity.light._400};\n margin-right: 8px;\n`;\nconst ProgressRow = styled.div`\n width: 100%;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n`;\nconst Quiz = ({testBlock, active, isComplete, themePalette, locked, blockProgress}) => {\n const {title} = getItemData(testBlock);\n const quizNumber = title.split(' ')[0].includes('.') ? title.split(' ')[0] : ;\n\n const progress = blockProgress\n ?.questions\n ?.reduce((acc, {masteryLevel}) => ({\n ...acc,\n [masteryLevel]: acc[masteryLevel] ? acc[masteryLevel] + 1 : 1,\n total: acc.total ? acc.total + 1 : 1,\n }), {});\n\n const totalQuestions = blockProgress?.questions?.length;\n const taggedQuestions = blockProgress?.questions?.filter(({masteryLevel}) => !!masteryLevel && masteryLevel != 'none')?.length;\n return (\n \n \n \n \n \n \n {title.replace(`${quizNumber} `, '').replace(' Quiz', '').replace('Concept Review', '').replace(' (Quiz)', '')} Quiz\n \n \n \n {taggedQuestions}/{totalQuestions}\n \n \n \n \n );\n}\n\nconst Text = ({testBlock, active, isComplete, themePalette, locked}) => {\n const {title, contentType} = getItemData(testBlock);\n return (\n \n \n \n \n \n \n {title}\n {contentType && {contentType === 'Info' ? 'PDF' : contentType}}\n \n \n );\n}\n\nconst Item = ({testBlock, active, isComplete, onClick, themePalette, locked, blockProgress}) => {\n const ItemComponent = {\n lesson: Lesson,\n questionSet: Quiz,\n text: Text,\n passage: Quiz,\n startBlock: Introduction,\n endBlock: () =>
end
,\n }[testBlock.type];\n\n return (\n \n \n \n );\n}\n\nconst Group = styled.div`\n padding: 4px 16px;\n`;\nconst ProgressLabel = styled(Body4)`\n color: ${() => baseTheme.colors.neutralsPalette.white};\n`;\n\nconst Sidebar = ({showingSidebar, setShowingSidebar, classroomName, chapterName, lessonIndex, themePalette, blockRef, hide=[]}) => {\n const {isUpgraded, bootcamp} = useUserDataContext();\n\n const {\n methods: {\n setBlockIndex,\n setCurrentIndex,\n },\n variables: {\n testBlockConnections,\n blockIndex,\n quizProgress,\n template,\n navigationFilter\n }\n } = useTestNavigatorContext();\n\n const {modalDispatch} = useModalContext();\n\n const completeLessons = quizProgress.reduce((acc, blockProgress) => blockProgress.status === 'complete' ? acc + 1 : acc, 0);\n const totalLessons = testBlockConnections.length - 2;\n const progressBar = (\n {completeLessons} of {totalLessons} lessons completed}\n total={totalLessons}\n segments={[{count: completeLessons}]}\n />\n )\n return (\n setShowingSidebar(false)}>\n e.stopPropagation()}>\n \n \n {testBlockConnections.reduce((acc, {testBlock}, index) => {\n if (testBlock.type === 'startBlock' || index === testBlockConnections.length - 1) return acc;\n if (navigationFilter.key === 'blockFilter' && navigationFilter.value === 'quizzes' && testBlock.type !== 'questionSet') return acc;\n if (navigationFilter.key === 'blockFilter' && navigationFilter.value === 'videos' && testBlock.type !== 'lesson') return acc;\n if (navigationFilter.key === 'search' && !testBlock.questions && !testBlock.title?.toLowerCase().includes(navigationFilter.value?.toLowerCase())) return acc;\n const unlockLimit = 3;\n const displayLimit = ['Quantitative Reasoning'].includes(classroomName) ? 1 : 0;\n const locked = bootcamp === 'nclex' ? false : ['dat', 'oat'].includes(bootcamp) && (lessonIndex <= displayLimit || (lessonIndex < unlockLimit && ['Biology', 'General Chemistry', 'Organic Chemistry'].includes(classroomName))) ? false : bootcamp !== 'inbde' && !isUpgraded && index > 2 && !window.location.pathname.includes('application-services');\n const isComplete = quizProgress[index].status === 'complete';\n const onClick = locked\n ? () => {\n modalDispatch({\n type: 'open',\n component: StyledBootcampLockdown,\n renderInContainer: blockRef.current,\n enableClickClose: true,\n componentProps: {\n isPremiumFeature: true,\n showInteractions: false,\n showReviews: false,\n showFeatures: false,\n fixedOnMobile: false,\n headerText: 'This content is for Bootcamp upgraded members only.',\n subheaderText: 'Upgrade your membership and get instant access to all content and much more.',\n upgradeText: 'Upgrade Your Membership',\n showClose: true,\n },\n modalContainerStyle: theme => `\n background: ${theme.overlays.opacity.dark._300};\n position: absolute;\n align-items: center;\n z-index: 2;\n height: auto;\n\n ${theme.mediaQueries.tablet} {\n padding: 0;\n overflow: hidden;\n }\n `\n });\n }\n : ['questionSet', 'passage'].includes(testBlock.type)\n ? () => setCurrentIndex(index, 0)\n : () => setBlockIndex(index, 0)\n\n return [\n ...acc,\n \n {\n onClick()\n !locked && window.innerWidth <= 768 && setShowingSidebar(false);\n }}\n />\n \n ];\n }, [])}\n \n \n \n );\n}\n\nSidebar.propTypes = {};\nSidebar.defaultProps = {};\n\nexport default Sidebar;\n\nconst ScrollOnActive = (props) => {\n const ref = useRef();\n const active = props.active;\n useEffect(() => {\n if (ref.current && active) {\n try {\n const scrollContainer = ref.current.parentElement;\n const dims = ref.current.getBoundingClientRect();\n\n const topBarHeight = 336 // hardcoded top bar heights\n const updatedScrollTop = (dims.top - topBarHeight) + scrollContainer.scrollTop;\n\n scrollContainer.scroll({\n top: updatedScrollTop,\n behavior: 'smooth',\n });\n } catch (error) {\n // temporarily adding this for cross-browswer testing\n console.log('Error scrolling to sidebar element', error);\n }\n }\n }, [ref, active])\n return \n}","import React from 'react';\nimport styled from 'styled-components';\nimport YouTube from 'react-youtube';\n\nconst Container = styled.div`\n .responsive {\n position: relative;\n width: 100%;\n height: 0;\n padding-bottom: 56.25%;\n overflow: hidden;\n iframe {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n }\n }\n`;\nconst Thumbnail = styled.img`\n width: 100%;\n`;\n\nconst YouTubePlayer = ({className, responsive, locked, autoplay=0, ...props}) => {\n return (\n \n {locked && }\n {!locked && }\n \n )\n}\n\nexport default YouTubePlayer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {H4} from '../Typography';\n\nimport styled from 'styled-components';\n\nconst Correct = styled(H4)`\n padding: ${({theme}) => theme.layouts.spacing.s};\n padding-right: ${({theme}) => theme.layouts.spacing.m};\n\n`;\nconst Incorrect = styled(H4)`\n padding: ${({theme}) => theme.layouts.spacing.s};\n padding-left: ${({theme}) => theme.layouts.spacing.m};\n`;\nconst Divider = styled.span`\n height: 24px;\n`\nconst Container = styled.div`\n display: flex;\n align-items: center;\n padding: ${({theme}) => `3px ${theme.layouts.spacing.m}`};\n background: ${({theme}) => theme.overlays.opacity.light._100};\n border: .5px solid ${({theme, lightMode}) => lightMode ? theme.colors.neutralsPalette.light : theme.overlays.opacity.light._100};\n border-radius: 100px;\n margin: auto 0;\n\n ${Correct} {\n color: ${({theme, correct, lightMode}) => lightMode && correct === 0 ? theme.colors.neutralsPalette.grey : correct > 0 ? theme.colors.interfacePalette.green.default : theme.overlays.opacity.light._400};\n }\n\n ${Incorrect} {\n color: ${({theme, incorrect, lightMode}) => lightMode && incorrect > 0 ? theme.colors.interfacePalette.red.dark : lightMode ? theme.colors.neutralsPalette.grey : theme.overlays.opacity.light._400};\n }\n\n ${Divider} {\n border-right: 1px solid ${({theme, lightMode}) => lightMode ? theme.colors.neutralsPalette.lightGrey : theme.overlays.opacity.light._100};\n }\n`;\n\nconst QuestionStats = ({className, correct, incorrect, lightMode}) => {\n return (\n \n {correct} correct\n \n {incorrect} incorrect\n \n );\n}\nQuestionStats.propTypes = {\n correct: PropTypes.number,\n incorrect: PropTypes.number,\n};\nQuestionStats.defaultProps = {\n correct: 0,\n incorrect: 0,\n};\n\nexport default QuestionStats;\n","import React, {useRef, useEffect, useState} from 'react';\nimport styled, {css} from 'styled-components';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\nimport {H2} from '../../../Typography';\n\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: ${({theme}) => theme.layouts.spacing.xl} ${({theme}) => theme.layouts.spacing.m};\n`;\nconst Wrapper = styled.div`\n max-width: 480px;\n`;\nconst RawResourceWrapper = styled.div`\n display: flex;\n flex-direction: column;\n ${({theme}) => theme.darkModeEnabled && css`\n color: white;\n `}\n div {\n margin: 0 !important;\n }\n`;\nconst RawWrapper = styled.div`\n padding-left: ${({theme}) => theme.layouts.spacing.l};\n`;\nconst Title = styled(H2)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.m};\n`;\nconst ResourceContainer = styled.div`\n border: 1px solid ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.borderPrimary : theme.colors.neutralsPalette.light};\n border-radius: 8px;\n margin-top: ${({theme}) => theme.layouts.spacing.m};\n padding: ${({theme}) => theme.layouts.spacing.xl};\n`;\n\nfunction parseHtml(html, bootcamp, validBootcamps) {\n // create dummy container so that we can look for data attributes\n const htmlContainer = document?.createElement('div');\n // set dummy container inner html\n htmlContainer.innerHTML = html;\n\n try {\n // modify anchor hrefs if necessary\n htmlContainer\n .querySelectorAll('a')\n .forEach(element => {\n\n // check for data attribute\n const shouldFormatHref = element?.dataset?.hasOwnProperty('useBootcamp');\n // check to make sure hrefs are pointing to the bootcamp we're currently on\n const hrefBootcamp = element?.href?.split('/')[3];\n const shouldRepointBootcamp = validBootcamps?.includes(hrefBootcamp) && hrefBootcamp !== bootcamp;\n\n // modify href if has 'useBootcamp' data attribute\n if (shouldFormatHref) {\n const url = new URL(element?.href);\n url.pathname = `/${bootcamp}${url.pathname}`;\n element.href = url.href;\n // modify href bootcamp needs to be repointed\n } else if (shouldRepointBootcamp) {\n const url = new URL(element?.href);\n url.pathname = url.pathname.replace(hrefBootcamp, bootcamp);\n element.href = url.href;\n }\n })\n\n return htmlContainer;\n } catch (error) {\n return htmlContainer;\n }\n}\n\nconst TextBlock = ({html, title, raw}) => {\n const {bootcamp, validBootcamps} = useUserDataContext();\n const [parsedHtml, setParsedHtml] = useState(null);\n const ref = useRef();\n\n useEffect(() => {\n if (raw || parsedHtml) return;\n\n const result = parseHtml(html, bootcamp, validBootcamps);\n\n setParsedHtml(true);\n\n ref?.current?.appendChild(result);\n\n }, [html, raw, ref?.current, parsedHtml]);\n\n return raw\n ? \n : \n \n {title}\n \n \n \n \n \n};\n\nTextBlock.defaultProps = {};\nTextBlock.propTypes = {};\n\nexport default TextBlock;","import React, {useEffect, useState} from 'react';\n\nimport {useUserDataContext} from '../../../../contexts/UserData';\nimport {useTestNavigatorContext} from '../../../../contexts/TestNavigator';\nimport {useTimerContext} from '../../../../contexts/TestTimer';\n\nimport Exhibit from '../../../../components/Exhibit';\nimport YouTubePlayer from '../../../../components/VideoPlayer/YouTubePlayer';\nimport VideoPlayer from '../../../../components/VideoPlayer';\nimport QuestionSet from '../../../../components/TestBlocks/QuestionSet';\nimport Question from '../../../../components/QBank/Question';\nimport QuestionStats from '../../../QuestionBank/QuestionStats';\nimport {FlexBox, Row} from '../../../../components/Grid';\nimport TextBlock from './Text';\nimport baseTheme from '@bootcamp/shared/src/styles/theme';\nimport CaseImage from '@bootcamp/web/src/bootcamps/anatomy/Case/components/CaseImage';\n\nimport {findByRenderType, changeIntercomDisplay, splitScreenAllowed} from '@bootcamp/shared/src/util';\n\nimport {IntercomAPI} from 'react-intercom';\nimport styled, {css} from 'styled-components';\nimport {BootcampBot} from '@bootcamp/web/src/components/Modal/components/QuestionFAQs';\n\nconst Container = styled.div`\n position: relative;\n height: calc(100vh - 169px);\n background: ${({background, theme}) => theme.colors.neutralsPalette.white};\n overflow-y: auto;\n padding-bottom: ${({noPadding}) => noPadding ? '0px' : '100px'};\n position: relative;\n\n .highlight {\n ${({theme}) => theme.darkModeEnabled && css`\n color: ${baseTheme.colors.neutralsPalette.extraDark} !important;\n `}\n }\n\n `;\nconst CaseImageWrapper = styled.div`\n`;\n\nconst QuestionSetInner = styled.div`\n display: flex;\n flex-direction: row;\n height: 100%;\n\n ${CaseImageWrapper} {\n display: ${({isShowingImage}) => isShowingImage ? 'flex' : 'none'};\n min-width: ${({isShowingImage}) => isShowingImage ? '50%' : '0'};\n max-width: ${({isShowingImage}) => isShowingImage ? '50%' : '0'};\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: ${({isShowingImage}) => isShowingImage ? 'column' : 'row'};\n }\n`;\n\nconst QuestionSetContainer = styled(Container)`\n padding: 32px 32px;\n\n ${({splitScreenSolutions}) => splitScreenSolutions && css`\n padding: 0;\n `}\n`;\nconst VideoWrapper = styled.div`\n position: relative;\n background: ${({theme}) => theme.darkModeEnabled ? '#121212' : 'transparent'};\n height: 100%;\n /* max-width: 133vh;\n margin: auto; */\n`;\nconst YouTube = styled(YouTubePlayer)`\n flex: 1;\n width: 100%;\n iframe {\n max-height: calc(100vh - 250px);\n }\n`;\nconst VimeoWrapper = styled.div`\n flex: 1;\n width: 100%;\n iframe {\n max-height: calc(100vh - 250px);\n }\n`\nconst StatWrapper = styled.div`\n display: none;\n width: 90%;\n margin: ${({theme}) => `${theme.layouts.spacing.l} auto`};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n display: flex;\n }\n`;\n\nconst VideoRow = styled(Row)`\n height: auto;\n align-items: center;\n justify-content: center;\n background: #121212;\n max-height: calc(100vh - 250px);\n margin-bottom: 16px;\n`;\n\nconst VideoDetailsRow = styled(FlexBox)`\n height: auto;\n padding: 0 32px 16px;\n align-items: center;\n flex-direction: row;\n ${({theme}) => theme.mediaQueries.mobileL} {\n flex-direction: column;\n align-items: flex-start;\n }\n`;\n// const IntercomButton = styled(Button)`\n// margin-right: 0;\n// margin-left: auto;\n// ${({theme}) => theme.mediaQueries.mobileL} {\n// padding: 10px 24px;\n// margin-left: 0;\n// margin-top: 16px;\n//\n// }\n// `;\nconst IntercomButton = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n background: transparent;\n padding: .75em;\n border : 1px solid ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.borderPrimary : '#e1e8ed'};\n border-radius: 64px;\n color: ${({theme}) => theme.darkModeEnabled ? theme.colors.typographyPalette.secondary : 'rgb(47, 48, 55)'};\n text-decoration: none;\n flex-grow: 1;\n text-align: left;\n font: proxima-nova 400 16px;\n cursor: pointer;\n width: 100%;\n opacity: .75;\n transition: opacity .4s;\n &:hover {\n opacity: 1;\n transition: opacity .4s;\n }\n`;\n\nconst VideoSizer = styled.div`\n width: 100%;\n margin: auto;\n ${({theme}) => theme.mediaQueries.tablet} {\n max-width: 100%;\n }\n`;\n\nconst VideoPlayerComponent = ({type, props, ref, locked, title, themePalette, blockIndex, onEnd, chapterName}) => {\n // use this to implement different players for different video types\n const VideoElement = type === 'YouTube'\n ? \n : (\n \n \n \n )\n\n return (\n \n \n \n \n {VideoElement}\n \n \n
\n \n
\n \n Still have a question? Contact our team →}\n onClick={() => IntercomAPI('showNewMessage', `I have questions or feedback about this video: ${window.location.origin + window.location.pathname + `?index=${blockIndex}`} - Video Title: ${title}. Specifically: `)}\n />\n \n
\n
\n )\n}\n\nconst Block = ({themePalette, showingExhibit, exhibit, toggleExhibit, blockRef, chapterName, lessonIndex, handleNextLesson, classroomName}) => {\n const {isUpgraded, bootcamp, searchUserInteractions} = useUserDataContext();\n const {resetTimer, toggleTimer} = useTimerContext();\n const autoPlayEnabled = searchUserInteractions('autoPlayEnabled') === true;\n const [caseImageProps, setCaseImageProps] = useState(null);\n const [caseImageSolutionProps, setCaseImageSolutionProps] = useState(null);\n\n const {\n methods: {\n transitionBlock,\n saveBlockProgress\n },\n variables: {\n blockIndex,\n testBlockConnections,\n quizProgress,\n }\n } = useTestNavigatorContext();\n\n const {questions} = quizProgress[blockIndex];\n const currentQuestion = questions?.find(({current}) => current);\n const splitScreenSolutions = searchUserInteractions('splitScreenSolutions') === true\n && splitScreenAllowed('coursePlayer', '', true, {})\n && !caseImageProps\n && currentQuestion?.didCheck;\n\n const {testBlock} = testBlockConnections[blockIndex] || {testBlock: {}};\n const unlockLimit = 3;\n const displayLimit = ['Quantitative Reasoning'].includes(classroomName) ? 1 : 0;\n const onLockedBlockIndex = bootcamp === 'nclex' ? false : ['dat', 'oat'].includes(bootcamp) && (lessonIndex <= displayLimit || (lessonIndex < unlockLimit && ['Biology', 'General Chemistry', 'Organic Chemistry'].includes(classroomName))) ? false : bootcamp !== 'inbde' && !isUpgraded && blockIndex > 2 && !window.location.pathname.includes('application-services');\n\n useEffect(() => {\n changeIntercomDisplay('none');\n return () => changeIntercomDisplay('block');\n }, []);\n\n useEffect(() => {\n if (onLockedBlockIndex) {\n transitionBlock('start');\n }\n resetTimer();\n if (['questionSet', 'passage'].includes(testBlock.type) && !currentQuestion?.didCheck) toggleTimer();\n\n blockIndex && window.history.replaceState(null, '', `${window.location.pathname}?index=${blockIndex}`)\n }, [blockIndex, isUpgraded]);\n\n const blockRenderer = (testBlockConnection) => {\n const {testBlock} = testBlockConnection || {testBlock: {}};\n\n switch (testBlock.type) {\n case 'startBlock':\n transitionBlock('next');\n return null;\n case 'lesson':\n changeIntercomDisplay('none');\n const {contents} = (testBlock.components && testBlock.components.find(({renderType}) => renderType === 'video')) || {contents: '{}'};\n const {type, ...props} = JSON.parse(contents);\n return (\n <>\n {showingExhibit && }\n {\n if (!autoPlayEnabled) return;\n\n await saveBlockProgress({status: 'complete'});\n handleNextLesson();\n }}\n />\n \n )\n case 'text':\n const blockContentType = findByRenderType(testBlock.components, 'contentType');\n const isQuizLinkBlock = testBlock?.type === 'text' && blockContentType === 'Quiz';\n\n let content = findByRenderType(testBlock.components, 'content');\n\n if (bootcamp === 'med-school') {\n content = content.replace('step-1', 'med-school')\n }\n\n if (window.location.pathname.match('pathology/videos/')) {\n content = content.replace('https://drive.google.com/file/d/1IZhWCEtxBzJXAP0CuGkWDNc0fwQHYukm/view?usp=drivesdk', 'https://drive.google.com/file/d/1Ia8SzbkXQ0K-S8Jt9TVLM4MJXkubev6W/view')\n content = content.replace('https://drive.google.com/file/d/1Lqz8swQsvQvmy7ptgs428Jn-4cwHmqqF/view?usp=sharing', 'https://drive.google.com/file/d/1Ia8SzbkXQ0K-S8Jt9TVLM4MJXkubev6W/view')\n }\n const raw = !testBlock?.title?.match('Downloads') && !testBlock?.title?.match('Resources') && !testBlock?.title?.match('Updates') && !isQuizLinkBlock;\n\n return (\n \n \n \n )\n case 'passage':\n case 'questionSet':\n changeIntercomDisplay('block');\n const {questions} = quizProgress[blockIndex];\n const score = questions ? questions\n .reduce(({correct, incorrect, total}, {didSelectCorrectAnswer, didCheck}) => ({\n correct: correct + (didCheck && didSelectCorrectAnswer),\n incorrect: incorrect + (didCheck && !didSelectCorrectAnswer),\n total: total + 1\n }), {correct: 0, incorrect: 0, total: 0}) : {};\n\n return (\n \n {showingExhibit && }\n \n {caseImageProps &&\n \n }\n document.querySelector(`.${Container.styledComponentId}`).scroll(0,0)}\n splitScreenSolutions={splitScreenSolutions}\n scrollable={!!caseImageProps}\n renderQuestion={({testBlock, questionIndex, lastUpdated, ...props}) => (\n \n )}\n />\n \n {caseImageProps &&\n \n }\n \n \n \n );\n case 'endBlock':\n window.location.pathname = window.location.pathname.split('/').slice(0, -1).join('/');\n return \n default:\n return \n }\n }\n\n return blockRenderer(testBlockConnections[blockIndex]);\n}\n\nBlock.propTypes = {};\nBlock.defaultProps = {};\n\nexport default Block;\n","import React, {useEffect} from 'react';\n\nimport {useTestNavigatorContext} from '@bootcamp/web/src/contexts/TestNavigator';\nimport {UpdatedPreviousButton, UpdatedCheckButton, UpdatedNextButton, UpdatedExhibitButton, BookmarkButton} from '@bootcamp/web/src/components/QuestionBank/Buttons';\nimport {useModalContext} from '@bootcamp/web/src/contexts/Modal';\nimport {useTimerContext} from '@bootcamp/web/src/contexts/TestTimer';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\n\nimport {insertAtIndex, getTestBlockQuestions} from '@bootcamp/shared/src/util';\nimport styled from 'styled-components';\nimport {SubmitAnatomyCase} from '@bootcamp/web/src/components/Modal';\nimport {MasteryButton, MasteryButtonText} from '@bootcamp/web/src/components/Branding/Buttons/MasteryButton';\nimport theme from '@bootcamp/shared/src/styles/theme';\nimport {KeyboardShortcutLabel} from '@bootcamp/web/src/components/Typography';\nimport {updateQuestionProgress} from '@bootcamp/shared/src/requests';\n\nconst Container = styled.div`\n width: 100%;\n height: 88px;\n padding: 16px 32px;\n background: ${({theme}) => theme.colors.neutralsPalette.offWhite};\n position: absolute;\n bottom: 0;\n left: 0;\n transition: left .3s;\n display: flex;\n ${({theme}) => theme.mediaQueries.laptop} {\n left: 0;\n position: fixed;\n }\n ${({theme}) => theme.mediaQueries.mobileL} {\n padding: 8px 16px 16px 16px;\n }\n`;\n\nconst ButtonWrapper = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n > div {\n button {\n margin-top: 0;\n margin-bottom: 0;\n width: calc(100% - 8px);\n }\n &:last-child {\n button {\n width: 100%;\n }\n }\n }\n\n`;\n\nconst StyledPreviousButton = styled(UpdatedPreviousButton)`\n ${({theme}) => theme.mediaQueries.laptop} {\n padding: 19px;\n margin-right: 8px;\n }\n`;\nconst StyledNextButton = styled(UpdatedNextButton)`\n ${({theme}) => theme.mediaQueries.laptop} {\n padding: 19px;\n margin-right: 8px;\n }\n`;\nconst StyledCheckButton = styled(UpdatedCheckButton)`\n ${({theme}) => theme.mediaQueries.laptop} {\n padding: 19px 24px;\n margin-right: 8px;\n }\n`;\n\nfunction getNextBlock(blocks, blockIndex) {\n return blocks?.[blockIndex + 1]?.testBlock;\n}\n\nconst Controls = ({showingSidebar, themePalette, exhibit, showingExhibit, toggleExhibit, handleNextLesson, handlePreviousLesson}) => {\n\n const {\n methods: {\n setLeftButtons: setButtons,\n updateQuizProgress,\n transitionBlock,\n setCurrentIndex,\n saveBlockProgress,\n saveQuestionProgresses,\n setNavigationFilter\n },\n variables: {\n blockIndex,\n testBlockConnections,\n leftButtons: buttons,\n quizProgress,\n navigationFilter\n }\n } = useTestNavigatorContext();\n\n const {toggleTimer, timerActive, questionStartTime} = useTimerContext();\n const {bootcamp, searchUserInteractions} = useUserDataContext();\n const {modalDispatch} = useModalContext();\n\n const autoTagEnabled = true;\n const showKeyboardShortcuts = searchUserInteractions('showKeyboardShortcuts') === true;\n\n const {questions: blockQuestionProgress} = {questions: [], ...quizProgress[blockIndex]};\n const questions = getTestBlockQuestions(testBlockConnections[blockIndex]?.testBlock);\n const questionIndex = blockQuestionProgress.findIndex(({current}) => current);\n const currentQuestionProgress = blockQuestionProgress[questionIndex] || {};\n\n const nextBlock = getNextBlock(testBlockConnections, blockIndex) || {};\n const {type: nextBlockType} = nextBlock;\n\n\n const checkQuestion = async (question, index) => {\n\n const timeElapsed = new Date(new Date() - questionStartTime);\n const time = (parseFloat(blockQuestionProgress[index].time) + (timeElapsed.getTime() / 1000)).toFixed(2);\n\n const credit = {\n full: (!!currentQuestionProgress?.answerState?.score && !!currentQuestionProgress?.answerState?.maxScore && currentQuestionProgress?.answerState?.score === currentQuestionProgress?.answerState?.maxScore) || currentQuestionProgress?.didSelectCorrectAnswer,\n partial: currentQuestionProgress?.answerState?.score > 0 && (currentQuestionProgress?.answerState?.score !== currentQuestionProgress?.answerState?.maxScore),\n none: (!currentQuestionProgress?.answerState?.score || currentQuestionProgress?.answerState?.score === 0),\n };\n\n const autoTag = credit.full\n ? 'mastered'\n : credit.partial\n ? 'reviewing'\n : 'learning';\n\n updateQuizProgress({\n questions: insertAtIndex(\n quizProgress[blockIndex].questions,\n index,\n {...question, didCheck: true, time, masteryLevel: autoTag},\n )\n });\n\n timerActive && toggleTimer();\n\n await updateQuestionProgress(question.questionProgressId, {time, didCheck: true, masteryLevel: autoTag, didSelectCorrectAnswer: credit.full, selectedAnswerIndex: currentQuestionProgress.selectedAnswerIndex, crossedAnswerIndexes: JSON.stringify(currentQuestionProgress.crossedAnswerIndexes)});\n // auto tag question if we're on nclex or med school\n const update = {\n ...currentQuestionProgress,\n masteryLevel: autoTag,\n question: {...question.question, masteryLevel: autoTag},\n };\n\n await saveQuestionProgresses([update]);\n };\n\n useEffect(() => {\n const {testBlock} = testBlockConnections[blockIndex] || {testBlock: {}};\n\n\n switch (testBlock.type) {\n case 'passage':\n case 'questionSet':\n const blockQuestions = quizProgress?.[blockIndex]?.questions;\n\n if (!blockQuestions || blockQuestions.length === 0) return;\n\n const currentQuestion = blockQuestions.find(({current}) => !!current);\n\n if (!currentQuestion) return;\n const currentQuestionIndex = blockQuestions.findIndex(({current}) => !!current);\n const currentQuestionIsLast = currentQuestionIndex === blockQuestions.length - 1;\n const question = questions[currentQuestionIndex] || {};\n\n function updateQuestionTime() {\n const timeElapsed = new Date(new Date() - questionStartTime);\n const time = (parseFloat(blockQuestionProgress[currentQuestionIndex].time) + (timeElapsed.getTime() / 1000)).toFixed(2);\n updateQuestionProgress({time});\n };\n\n function handlePreviousQuestion () {\n !currentQuestion.didCheck && updateQuestionTime();\n setCurrentIndex(blockIndex, currentQuestionIndex - 1)\n }\n\n function handleNextQuestion () {\n !currentQuestion.didCheck && updateQuestionTime();\n setCurrentIndex(blockIndex, currentQuestionIndex + 1)\n }\n\n const updateMastery = (masteryLevel) => {\n const updatedQuestionProgress = {...currentQuestion, masteryLevel, question: {...question, masteryLevel}};\n updateQuizProgress({\n questions: insertAtIndex(\n blockQuestions,\n currentQuestionIndex,\n updatedQuestionProgress\n )\n })\n saveQuestionProgresses([updatedQuestionProgress]);\n }\n const updateQuestionProgress = params => {\n\n if (currentQuestionIndex === -1) return;\n\n const updatedQuestionProgress = {...blockQuestionProgress[currentQuestionIndex], ...params};\n\n updateQuizProgress({\n questions: insertAtIndex(\n blockQuestionProgress,\n currentQuestionIndex,\n updatedQuestionProgress\n )\n });\n if (params.didCheck) {\n timerActive && toggleTimer();\n }\n return updatedQuestionProgress;\n };\n const onClickMasteryButton = async (masteryLevel) => {\n updateMastery(masteryLevel);\n if (currentQuestionIsLast) {\n await saveBlockProgress({status: 'complete'});\n handleNextLesson();\n } else {\n setCurrentIndex(blockIndex, currentQuestionIndex + 1)\n }\n }\n const bookmarkStatus = blockQuestionProgress?.[currentQuestionIndex]?.bookmarked;\n\n const masteryButtons = [\n (\n handlePreviousLesson() : handlePreviousQuestion}\n />\n ),\n !currentQuestionIsLast ? (\n \n ) : (\n {\n await saveBlockProgress({status: 'complete'});\n handleNextLesson();\n }}\n />\n ),\n (\n Learning{showKeyboardShortcuts && }}\n onClick={() => onClickMasteryButton('learning')}\n colorConfig={theme.colors.interfacePalette.red}\n />\n ),\n (\n Reviewing{showKeyboardShortcuts && }}\n onClick={() => onClickMasteryButton('reviewing')}\n colorConfig={theme.colors.interfacePalette.yellow}\n />\n ),\n (\n Mastered{showKeyboardShortcuts && }}\n onClick={() => onClickMasteryButton('mastered')}\n colorConfig={theme.colors.interfacePalette.green}\n />\n ),\n (\n {\n const updatedQuestionProgress = updateQuestionProgress({bookmarked: !bookmarkStatus, question: {...question, bookmarked: !bookmarkStatus}});\n saveQuestionProgresses([updatedQuestionProgress]);\n }}\n bookmarked={bookmarkStatus}\n colorConfig={bookmarkStatus ? theme.colors.interfacePalette.yellow : theme.colors.neutralsPalette.light}\n children={showKeyboardShortcuts && }\n />\n )\n ]\n if (currentQuestion.didCheck) {\n setButtons([\n ...(!window.location.pathname.includes('reading-comprehension') ? masteryButtons : [\n (\n handlePreviousLesson() : handlePreviousQuestion}\n />\n ),\n !currentQuestionIsLast ? (\n \n ) : (\n {\n await saveBlockProgress({status: 'complete'});\n handleNextLesson();\n }}\n />\n )\n ]),\n !!exhibit && (\n }\n />\n )\n ]);\n } else {\n setButtons([\n (\n handlePreviousLesson() : handlePreviousQuestion}\n />\n ),\n !currentQuestionIsLast ? (\n \n ) : (\n {\n await saveBlockProgress({status: 'complete'});\n handleNextLesson();\n }}\n />\n ),\n (\n await checkQuestion({...currentQuestion, question}, currentQuestionIndex)}\n children={Check Answer{showKeyboardShortcuts && }}\n colorConfig={themePalette}\n disabled={\n !!blockQuestionProgress &&\n blockQuestionProgress[currentQuestionIndex] &&\n blockQuestionProgress[currentQuestionIndex].selectedAnswerIndex === -1\n }\n />\n ),\n !!exhibit && (\n }\n />\n )\n ])\n }\n return;\n case 'text':\n case 'lesson':\n setButtons([\n handlePreviousLesson()}\n />,\n ,\n {\n await saveBlockProgress({status: 'complete'});\n handleNextLesson()\n }}\n children={Complete and Continue{showKeyboardShortcuts && }}\n colorConfig={themePalette}\n />,\n !!exhibit && (\n }\n />\n )\n ]);\n break;\n default:\n setButtons([]);\n return;\n }\n\n }, [blockIndex, quizProgress, showingExhibit, showKeyboardShortcuts, questionStartTime]);\n if (!buttons || !buttons.length) return null;\n return (\n \n \n {buttons.filter(button => button)}\n \n \n );\n}\n\nControls.propTypes = {};\nControls.defaultProps = {};\n\nexport default Controls;\n","import React from 'react';\n\nimport {useTestNavigatorContext} from '../../../../contexts/TestNavigator';\nimport {IconButton} from '../../../../components/Branding/Buttons';\nimport {findByRenderType, getQuestionParts} from '@bootcamp/shared/src/util';\nimport {H3, H4, Body3} from '../../../../components/Typography';\nimport {ChevronDoubleRight as Expand} from '@styled-icons/fluentui-system-filled/ChevronDoubleRight';\nimport QuestionStats from '../../../QuestionBank/QuestionStats';\nimport QBankSettings from '../../../../components/Modal/components/QBankSettings';\nimport {useModalContext} from '../../../../contexts/Modal';\nimport {useTimerContext} from '../../../../contexts/TestTimer';\nimport {useUserDataContext} from '../../../../contexts/UserData';\nimport AdminButtons from '@bootcamp/web/src/components/QuestionView/components/AdminButtons';\n\nimport {Cog} from '@styled-icons/heroicons-solid/Cog';\n\nimport styled, {css} from 'styled-components';\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n height: 81px;\n width: 100%;\n padding: ${({theme}) => `${theme.layouts.spacing.m} ${theme.layouts.spacing.xl}`};\n background: white;\n background: ${({theme}) => theme.colors.neutralsPalette.offWhite};\n position: relative;\n z-index: 2;\n ${({theme}) => theme.mediaQueries.mobileL} {\n padding: ${({theme}) => `${theme.layouts.spacing.s} ${theme.layouts.spacing.m}`};\n height: 56px;\n min-height: auto;\n }\n`;\n\nconst TitleWrapper = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n max-width: calc(100% - 350px);\n width: auto;\n ${({theme}) => theme.mediaQueries.laptop} {\n flex-direction: column;\n align-items: flex-start;\n max-width: calc(100% - 200px);\n }\n ${({theme}) => theme.mediaQueries.mobileL} {\n max-width: 100%;\n }\n`;\nconst Heading = styled.div`\n color: ${({theme, themePalette}) => themePalette ? themePalette.default : theme.colors.brandPalette.violet.default};\n margin-right: ${({theme}) => theme.layouts.spacing.m};\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\nconst Header = styled(H4)`\n display: flex;\n align-items: center;\n font-weight: normal;\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n flex-direction: column;\n align-items: flex-start;\n gap: 4px;\n }\n `;\nconst Type = styled(H3)`\n font-weight: normal;\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n font-size: 16px;\n line-height: 19.2px;\n`;\n\nconst BlockTitle = styled(Body3)`\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n width: 100%;\n flex: 1;\n\n ${({theme}) => theme.mediaQueries.laptop} {\n font-weight: 500;\n font-size: 14px;\n line-height: 18px;\n }\n ${({theme}) => theme.mediaQueries.mobileL} {\n }\n`;\n\nfunction getBlockTypeDisplay(type) {\n return type === 'lesson'\n ? 'Lesson'\n : type === 'questionSet'\n ? 'Quiz'\n : type === 'startBlock'\n ? 'Introduction'\n : '';\n}\n\nconst ToggleSidebarButton = styled(IconButton)`\n height: 56px;\n width: 56px;\n padding: 15px;\n z-index: 4;\n display: ${({showingSidebar}) => showingSidebar ? 'none' : 'flex'};\n margin-right: 16px;\n svg {\n fill: ${({theme}) => theme.colors.neutralsPalette.dark};\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n display: flex;\n }\n\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n height: 40px;\n width: 40px;\n padding: 10px;\n margin-right: 8px;\n }\n box-shadow: none;\n border: 1px solid ${({theme}) => theme.darkModeEnabled ? theme.colors.darkModePalette.borderPrimary : theme.colors.neutralsPalette.light};\n\n`;\n\nconst ToggleSidebarIcon = styled(Expand).attrs(props => ({size: 20}))`\n ${({lightMode}) => lightMode ? css`\n color: ${({theme}) => theme.colors.neutralsPalette.extraDark};\n ` : css`\n color: white;\n `}\n ${({theme}) => theme.mediaQueries.tablet} {\n height: 24px;\n width: 24px;\n }\n ${({theme}) => theme.mediaQueries.mobileL} {\n height: 18px;\n width: 18px;\n }\n`;\n\nconst StyledQuestionStats = styled(QuestionStats)`\n background-color: ${({theme}) => theme.colors.neutralsPalette.extraLight};\n ${({theme}) => theme.mediaQueries.tablet} {\n display: none;\n }\n`;\nconst RightContainer = styled.div`\n margin-right: 0;\n margin-left: auto;\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\nconst TimerText = styled(Header)`\n display: flex;\n cursor: pointer;\n\n span {\n display: block;\n width: 85px;\n\n &:first-child {\n width: auto;\n margin-right: 5px;\n }\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n span {\n width: 75px;\n }\n }\n ${({theme}) => theme.mediaQueries.mobileL} {\n flex-direction: column;\n }\n\n`;\nconst ToggleSettingsButton = styled(IconButton)`\n height: 56px;\n width: 56px;\n padding: 15px;\n background: white;\n z-index: 4;\n border: 1px solid rgb(237, 237, 240);\n border-radius: 100%;\n svg {\n fill: ${({theme}) => theme.colors.neutralsPalette.dark};\n }\n\n ${({theme}) => theme.mediaQueries.tablet} {\n display: flex;\n }\n\n\n ${({theme}) => theme.mediaQueries.mobileL} {\n height: 40px;\n width: 40px;\n padding: 10px;\n margin-left: 8px;\n }\n box-shadow: none;\n`;\nconst ToggleSettingsButtonIcon = styled(Cog)`\n fill: #85868E;\n`;\n\nconst StyledAdminButtons = styled(AdminButtons)`\n margin-left: 16px;\n`;\n\nconst TopBar = ({match, showingSidebar, setShowingSidebar, themePalette, blockRef}) => {\n\n const {\n variables: {\n blockIndex,\n testBlockConnections,\n quizProgress,\n }\n } = useTestNavigatorContext();\n const {modalDispatch} = useModalContext();\n const {searchUserInteractions} = useUserDataContext();\n const hideTimer = searchUserInteractions('hideTimer') === true;\n\n const activeBlock = testBlockConnections[blockIndex]?.testBlock;\n const {type: blockType, title: blockTitle, components} = activeBlock || {};\n\n const blockTypeDisplay = getBlockTypeDisplay(blockType);\n const number = findByRenderType(components, 'number', null);\n\n const darkMode = false;\n\n const {questions} = quizProgress[blockIndex];\n const currentIndex = (questions?.findIndex(({current}) => current) || 0) + 1;\n const currentQuestion = questions?.find(({current}) => current);\n const currentQuestionId = currentQuestion?.question?.id;\n const {answers} = getQuestionParts(currentQuestion?.question);\n const correctAnswerIndex = answers.findIndex(([content, correct]) => correct);\n\n const score = questions ? questions\n .reduce(({correct, incorrect, total}, {didSelectCorrectAnswer, didCheck}) => ({\n correct: correct + (didCheck && didSelectCorrectAnswer),\n incorrect: incorrect + (didCheck && !didSelectCorrectAnswer),\n total: total + 1\n }), {correct: 0, incorrect: 0, total: 0}) : {};\n\n const {timeElapsed, toggleTimer, timerActive} = useTimerContext();\n return (\n \n } onClick={() => setShowingSidebar(!showingSidebar)} />\n \n {!['questionSet', 'passage'].includes(blockType) && (\n \n {blockTitle === 'startBlock' ? `Chapter Outline` : blockTitle}\n \n )}\n {/* \n {blockTitle === 'startBlock' ? `Chapter Outline` : blockTitle}\n */}\n \n {(['questionSet', 'passage'].includes(blockType)) && (\n
\n Question {currentIndex} of {questions.length}\n {currentQuestionId && }\n
\n )}\n {(['questionSet', 'passage'].includes(blockType)) && (\n \n {!hideTimer &&\n toggleTimer()}>\n {timerActive ? 'Time Taken:' : 'Timer Paused:'}\n {timeElapsed}\n \n }\n {/* }\n onClick={() => {\n modalDispatch({\n type: 'open',\n component: QBankSettings,\n componentProps: {\n themePalette,\n },\n enableClickClose: true,\n modalContainerStyle: theme => `\n background: rgba(94, 110, 141, 0.9);\n padding: 10vh 10vw;\n align-items: center;\n ${theme.mediaQueries.laptop} {\n background: rgba(94, 110, 141, 0.9);\n padding: 0;\n }\n `\n })\n }}\n /> */}\n \n )}\n
\n );\n}\n\nTopBar.propTypes = {};\nTopBar.defaultProps = {};\n\nexport default TopBar;\n","import React, {useState} from 'react';\nimport styled from 'styled-components';\nimport {H2, H4, Body2, Body3} from '@bootcamp/web/src/components/Typography';\nimport {Button} from '@bootcamp/web/src/components/Branding/Buttons';\nimport Switch from 'rc-switch';\nimport \"rc-switch/assets/index.css\";\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\n\nconst Container = styled.div`\n background: #FFFFFF;\n box-shadow: 0px 8px 20px rgba(0, 0, 0, 0.12);\n border-radius: 8px;\n padding: 64px;\n max-width: 600px;\n overflow: auto;\n`;\n\nconst Header = styled(H2)`\n text-align: left;\n margin-bottom: 16px;\n`;\n\nconst Body = styled(Body2)`\n color: #585962;\n margin-bottom: 16px;\n`;\n\nconst OptionBox = styled.div`\n border: 1px solid #EDEDF0;\n box-sizing: border-box;\n border-radius: 8px;\n padding: 32px;\n`;\nconst OptionContents = styled.div`\n max-width: 85%;\n`\nconst OptionDescription = styled(Body3)`\n margin-top: 4px;\n`;\nconst OptionTitle = styled(H4)`\n`;\n\nconst StyledSwitch = styled(Switch)`\n &:after {\n transform: none !important;\n animation-name: none !important;\n }\n`;\n\nconst Option = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-direction: row;\n border-bottom: 1px solid #EDEDF0;\n padding: 16px 0px;\n &:first-child {\n padding-top: 0;\n }\n &:last-child {\n border-bottom: none;\n padding-bottom: 0;\n }\n`;\n\nconst Confirm = styled(Button)`\n margin-top: 32px;\n margin-left: auto;\n`;\n\n\nconst QBankSettings = ({close, themePalette, hide=[]}) => {\n const {saveUserInteraction, searchUserInteractions, bootcamp} = useUserDataContext();\n\n const hideAnswerData = searchUserInteractions('hideAnswerData') === true;\n const hideTimer = searchUserInteractions('hideTimer') === true;\n const showKeyboardShortcuts = searchUserInteractions('showKeyboardShortcuts') === true;\n const prometricDelay = searchUserInteractions('prometricDelay') === true;\n\n return (\n e.stopPropagation()}>\n
Question Bank Settings
\n \n Customize your question bank experience using the options below.\n \n \n {bootcamp !== 'chemistry' && \n \n }\n {!hide.includes('timer') &&\n \n }\n {!hide.includes('shortcuts') &&\n \n }\n {bootcamp === 'nclex' &&\n \n }\n \n \n Save and Continue\n \n
\n )\n}\n\nexport default QBankSettings;\n","import React, {Fragment, useState, useEffect, useRef, useCallback} from 'react';\n\nimport {useTestNavigatorContext, TestNavigatorProvider} from '../../contexts/TestNavigator';\nimport {FullPageSpinner} from '../../components/Branding';\nimport {TimerProvider} from '../../contexts/TestTimer';\nimport {useModalContext} from '../../contexts/Modal';\n\nimport {SubmitAnatomyCase} from '../Modal';\nimport Sidebar from './components/Sidebar';\nimport Block from './components/Block';\nimport Controls from './components/Controls';\nimport TopBar from './components/TopBar';\n\nimport styled, {ThemeProvider} from 'styled-components';\nimport theme from '@bootcamp/shared/src/styles/theme';\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\nimport {useUserDataContext} from '../../contexts/UserData';\n\nconst Transition = styled.div`\n display: flex;\n flex-direction: row;\n width: 100%;\n height: 100%;\n opacity: ${({loading}) => loading ? 0 : 1};\n transition: opacity .5s;\n min-width: 0;\n`;\nconst ContentArea = styled.div`\n position: relative;\n height: 100%;\n flex: 1;\n max-width: 100%;\n min-width: 0;\n`;\nconst Loader = styled(FullPageSpinner)`\n background: ${({themePalette}) => themePalette.dark};\n`;\n\nconst LoadingWrapper = ({loading, children, themePalette}) => {\n const [blockIndexChecked, setBlockIndexChecked] = useState(false);\n const {\n methods: {\n setCurrentIndex,\n },\n variables: {\n loading: testLoading,\n quizProgress,\n testProgressId\n }\n } = useTestNavigatorContext();\n\n const isLoading = loading || testLoading || !blockIndexChecked || !testProgressId;\n const urlParams = new URLSearchParams(window.location.search);\n\n useEffect(() => {\n if (!isLoading) {\n const blockIndex = parseInt(urlParams.get('index'));\n const blockId = urlParams.get('blockId');\n const matchedBlockIdIndex = quizProgress?.findIndex(({blockProgressId, blockId: testBlockId}) => blockProgressId.includes(blockId) || blockId === testBlockId);\n const indexToLoad = matchedBlockIdIndex !== -1 ? matchedBlockIdIndex : blockIndex;\n\n if (indexToLoad) {\n setCurrentIndex(indexToLoad, 0);\n document.getElementById(`sidebar-item-${indexToLoad - 1}`) && document.getElementById(`sidebar-item-${indexToLoad - 1}`).scrollIntoView();\n }\n }\n setBlockIndexChecked(true);\n }, [isLoading]);\n\n return (\n \n \n \n {!isLoading && children}\n \n \n );\n}\n\nfunction getNextBlock(blocks, blockIndex, filter) {\n if (filter.key === 'blockFilter') {\n const nextIndex = blocks.findIndex(({testBlock}, index) => (((filter.value === 'videos' && testBlock.type === 'lesson') || (filter.value === 'quizzes' && testBlock.type === 'questionSet')) && index > blockIndex));\n return blocks?.[nextIndex]?.testBlock || {type: 'endBlock'};\n }\n\n return blocks?.[blockIndex + 1]?.testBlock;\n}\n\nconst CoursePlayer = ({match, loading, classroomName, chapterName, lessonIndex, themePalette=theme.colors.brandPalette.violet}) => {\n const [showingSidebar, setShowingSidebar] = useState(window.innerWidth > 768);\n const {darkModeEnabled, getDarkModeTheme} = useUserDataContext();\n const {modalDispatch} = useModalContext();\n const sidebarProps = {showingSidebar, setShowingSidebar};\n const blockRef = useRef();\n\n const localTheme = darkModeEnabled ? getDarkModeTheme() : theme;\n\n const [showingExhibit, setShowingExhibit] = useState(false);\n\n const {\n methods: {\n transitionBlock,\n },\n variables: {\n blockIndex,\n quizProgress,\n testBlockConnections,\n navigationFilter,\n }\n } = useTestNavigatorContext();\n\n const {questions: questionProgresses} = quizProgress[blockIndex] || {questions: []};\n const questionIndex = questionProgresses?.findIndex(({current}) => current);\n const nextBlock = getNextBlock(testBlockConnections, blockIndex, navigationFilter) || {};\n const {type: nextBlockType} = nextBlock;\n\n const periodicTableSubjects = ['general-chemistry'];\n const calculatorSubjects = ['quantitative-reasoning'];\n const subject = match?.params?.classroom;\n\n const exhibit = periodicTableSubjects?.includes(subject)\n ? 'periodic'\n : calculatorSubjects?.includes(subject)\n ? 'calculator'\n : null\n\n const toggleExhibit = () => setShowingExhibit(showing => !showing);\n const exhibitProps = {exhibit, showingExhibit, toggleExhibit};\n\n useDocumentTitle(`Bootcamp.com | ${classroomName} | Course: ${chapterName}`);\n\n const handleNextLesson = useCallback(() => {\n if (nextBlockType === 'endBlock') {\n modalDispatch({\n type: 'custom',\n key: 'open',\n component: SubmitAnatomyCase,\n enableClickClose: true,\n componentProps: {\n headerText: 'Nice work! You\\'ve reached the end of this course.',\n bodyText: 'Would you like to keep reviewing or complete your review?',\n cancelConfig: {\n text: 'Keep Reviewing',\n onCancel: () => {\n modalDispatch({type: 'close'});\n },\n shouldRedirect: false,\n },\n confirmConfig: {\n text: 'Complete Review',\n colorConfig: themePalette,\n onConfirm: () => {},\n shouldRedirect: true,\n redirect: location => location.pathname.split('/').slice(0, -1).join('/')\n }\n },\n })\n } else {\n transitionBlock('nextFilterActive');\n }\n }, [navigationFilter, nextBlockType, testBlockConnections, blockIndex])\n\n function handlePreviousLesson () {\n transitionBlock('previous');\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\n\nconst Wrapper = ({testId=null, testProgressId=null, ...props}) => {\n return (\n \n \n \n\n );\n}\n\nCoursePlayer.propTypes = {};\nCoursePlayer.defaultProps = {};\n\nexport default Wrapper;\n","import React, {useState, useEffect} from 'react';\n\nimport CoursePlayer from '../../../components/CoursePlayer';\n\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {getTestProgressByUserIdHashTestId, createTestProgress} from '@bootcamp/shared/src/requests';\n\nimport {getInObj} from '@bootcamp/shared/src/util';\n\nimport styled from 'styled-components';\n\n\nconst Container = styled.div`\n position: relative;\n width: 100%;\n height: 100%;\n z-index: 1;\n`;\n\nconst WrappedCoursePlayer = ({match, testId, themePalette, classroom, lesson}) => {\n const {DEFAULT_USER_ID, loading} = useUserDataContext();\n const [progressId, setProgressId] = useState(null);\n\n useEffect(() => {\n if (!DEFAULT_USER_ID) return;\n\n async function fetchTestProgress() {\n const userIdHashTestId = `${DEFAULT_USER_ID}#${testId}`;\n\n // see if progress for this video lesson exists\n const data = await getTestProgressByUserIdHashTestId(userIdHashTestId, false);\n const progressId = getInObj(['data', 'TestProgressByTestId', 'items', 0, 'id'], data, null);\n\n if (progressId) {\n return setProgressId(progressId);\n }\n\n // create testProgress if it hasn't been created yet\n await createTestProgress(userIdHashTestId, DEFAULT_USER_ID, testId);\n return setProgressId(userIdHashTestId);\n }\n\n // fetchTestProgress();\n\n }, [DEFAULT_USER_ID]);\n\n return (\n \n \n \n );\n}\n\nWrappedCoursePlayer.propTypes = {};\nWrappedCoursePlayer.defaultProps = {};\n\nexport default WrappedCoursePlayer;\n","import React from 'react';\nimport {Redirect} from 'react-router-dom';\n\nimport styled from 'styled-components';\n\nimport PracticeTest from '../PracticeTest';\nimport QuestionBank from '../QuestionBank';\nimport Generator from '../Generator';\nimport SelfAssessment from '../SelfAssessment'\nimport SimulationExam from '../SimulationExam'\n\nimport CoursePlayer from '../../components/CoursePlayer';\n\nimport {useBootcampConfigContext} from '@bootcamp/web/src/contexts/BootcampConfig';\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData';\n\n\nconst Container = styled.div`\n`;\n\nconst Content = ({history, match}) => {\n const {config} = useBootcampConfigContext();\n const {isBootcampPlusStudent, loading, isUpgraded} = useUserDataContext();\n const {path, params: {bootcamp, classroom, contentType, contentParent, contentSlug}} = match;\n\n if (window.location.pathname.startsWith(`/${bootcamp}/sample-test`)) {\n return (\n \n )\n }\n\n if (window.location.pathname.startsWith(`/${bootcamp}/full-length/`)) {\n const fullLengthTests = config.studyTools\n .find(item => item.route === 'full-length')\n .content\n .filter(test => test.plusPack ? isBootcampPlusStudent : true);\n\n const test = fullLengthTests\n .find(({route}) => route === contentSlug);\n\n return (\n \n );\n }\n\n const classroomConfig = config.classrooms.find(({route}) => route === classroom);\n\n if (bootcamp === 'mcat' && classroom !== 'aamc-explanations') {\n const qbankContent = classroomConfig.contentTypes.find(({route}) => route === contentType).content;\n\n const content = qbankContent?.[0]?.content || [];\n\n const contentMatch = content\n .find(({route}) => (route === contentSlug));\n\n if (!contentMatch) return \n\n return (\n \n );\n }\n\n if (bootcamp === 'med-school' && classroom === 'self-assessment') {\n return \n }\n if (bootcamp === 'nclex' && !contentType.includes('videos')) {\n\n const qbankContent = classroomConfig.contentTypes.find(({route}) => route === contentType).content;\n\n const banks = qbankContent.find(({name}) => name === 'Question Banks') || {content: []};\n\n const contentMatch = banks.content\n .find(({route}) => (route === contentSlug));\n\n if (!contentMatch) return \n\n return (\n \n );\n }\n\n if (path.match('progress')) {\n return (\n \n );\n }\n\n if (contentType.includes('generators')) {\n const classroomContent = classroomConfig.contentTypes.find(({route}) => route === 'generators');\n\n const generator = contentSlug === 'trainer'\n ? {route: 'trainer'}\n : classroomContent.content.find(({route}) => route === contentSlug);\n\n if (!generator) return ;\n\n return (\n \n );\n }\n\n if (contentType.includes('videos')) {\n const classroomContent = classroomConfig.contentTypes.find(({route}) => route === 'videos');\n const lesson = classroomContent.content\n .find(({type}) => type === 'Course').content\n .find(({route}) => route === contentSlug);\n const lessonIndex = classroomContent.content\n .find(({type}) => type === 'Course').content\n .findIndex(({route}) => route === contentSlug);\n if (!lesson) return ;\n lesson.lessonIndex = lessonIndex;\n \n if (bootcamp === 'mcat' && !isUpgraded) {\n return \n }\n\n return (\n \n );\n }\n\n if (contentType === 'practice-tests') { // TODO this needs to render topics too I think\n const classroomTests = classroomConfig.contentTypes.find(({name}) => name === 'Practice Tests');\n const classroomTest = classroomTests.content\n .find(({name}) => name === 'Tests').content\n const plusPackTests = classroomConfig.contentTypes.find(({name}) => name === 'Plus Tests')\n const plusPackTest = plusPackTests?.content\n .find(({name}) => name === 'Tests')?.content || []\n const testPool = isBootcampPlusStudent ? [...classroomTest, ...plusPackTest] : classroomTest;\n const contentMatch = testPool.find(({route}) => route === contentSlug);\n if (!loading && !contentMatch) return \n if (loading) return null;\n return (\n \n );\n }\n\n if (['bites', 'bio-bites'].includes(contentType)) {\n\n const qbankContent = classroomConfig.contentTypes.find(({route}) => route === contentType).content;\n\n const banks = qbankContent.find(({name}) => name === 'Question Banks') || {content: []};\n\n const contentMatch = [...banks.content]\n .find(({route}) => (route === contentSlug));\n\n if (!contentMatch) return \n\n return (\n \n );\n }\n\n if (contentType === 'qbank-collection') {\n const qbankContent = classroomConfig.contentTypes.find(({route}) => ['qbanks', 'qbank-collection'].includes(route)).content;\n\n const banks = qbankContent.find(({name}) => ['Question Banks'].includes(name)) || {content: []};\n\n const parentContentMatch = banks.content\n .find(({route}) => (route === contentParent));\n\n if (!parentContentMatch) return \n\n const contentMatch = parentContentMatch.lessons.find(({route, type}) => route === contentSlug);\n\n if (!contentMatch) return \n\n return (\n \n );\n }\n\n if (contentType === 'identify-structures') {\n const qbankContent = classroomConfig.contentTypes.find(({route}) => [contentType, 'qbank-collection'].includes(route)).content;\n\n const banks = qbankContent.find(({name}) => ['Identify Structures', 'Question Banks'].includes(name)) || {content: []};\n\n const parentContentMatch = banks.content\n .find(({route}) => (route === contentParent));\n if (!parentContentMatch) return \n\n const contentMatch = parentContentMatch.lessons.find(({route, type}) => route === contentSlug && (!type || type === 'identification'));\n\n if (!contentMatch) return \n\n return (\n \n );\n }\n\n if (contentType === 'lecture-style-questions') {\n const qbankContent = classroomConfig.contentTypes.find(({route}) => [contentType, 'qbank-collection'].includes(route)).content;\n\n const banks = qbankContent.find(({name}) => ['Lecture Style Questions', 'Question Banks'].includes(name)) || {content: []};\n\n const parentContentMatch = banks.content\n .find(({route}) => (route === contentParent));\n if (!parentContentMatch) return \n\n const contentMatch = parentContentMatch.lessons.find(({route, type}) => route === contentSlug && (!type || type === 'lecture'));\n\n if (!contentMatch) return \n\n return (\n \n );\n }\n\n if (contentType === 'application') {\n const qbankContent = classroomConfig.contentTypes.find(({route}) => [contentType, 'qbank-collection'].includes(route)).content;\n\n const banks = qbankContent.find(({name}) => ['Lecture Style Questions', 'Question Banks'].includes(name)) || {content: []};\n\n const parentContentMatch = banks.content\n .find(({route}) => (route === contentParent));\n if (!parentContentMatch) return \n\n const contentMatch = parentContentMatch.lessons.find(({route, type}) => route === contentSlug && (!type || type === 'application'));\n\n if (!contentMatch) return \n\n return (\n \n );\n }\n\n if (contentType === 'clinical-cases') {\n const qbankContent = classroomConfig.contentTypes.find(({route}) => [contentType, 'qbank-collection'].includes(route)).content;\n\n const banks = qbankContent.find(({name}) => ['Lecture Style Questions', 'Question Banks'].includes(name)) || {content: []};\n\n const parentContentMatch = banks.content\n .find(({route}) => (route === contentParent));\n if (!parentContentMatch) return \n\n const contentMatch = parentContentMatch.lessons.find(({route, type}) => route === contentSlug && (!type || type === 'Clinical Cases'));\n\n if (!contentMatch) return \n\n return (\n \n );\n }\n\n if (contentType === 'practicals') {\n const qbankContent = classroomConfig.contentTypes.find(({route}) => route === contentType).content;\n\n const banks = qbankContent.find(({name}) => name === 'Practical Exams') || {content: []};\n\n if (!banks) return \n\n const contentMatch = banks.content.find(({route}) => route === contentSlug);\n\n if (!contentMatch) return \n\n return (\n \n );\n }\n\n if (bootcamp === 'inbde' && classroom === 'simulation-exam') {\n\n const qbankContent = classroomConfig.contentTypes.find(({route}) => route === contentType).content;\n\n const banks = qbankContent.find(({name}) => name === 'Question Banks') || {content: []};\n const plusPacks = qbankContent.find(({name}) => name === 'Plus Packs') || {content: []};\n\n const contentMatch = [...banks.content, ...plusPacks.content]\n .find(({route}) => (route === contentSlug));\n\n if (!contentMatch) return \n\n return (\n \n )\n }\n\n if (contentType === 'qbanks' || contentType === 'plus-packs' || contentType === 'lectures' || contentType === 'board-banks') {\n\n const qbankContent = classroomConfig.contentTypes.find(({route}) => route === contentType).content;\n\n const banks = qbankContent.find(({name}) => name === 'Question Banks') || {content: []};\n const plusPacks = qbankContent.find(({name}) => name === 'Plus Packs') || {content: []};\n\n const contentMatch = [...banks.content, ...plusPacks.content]\n .find(({route}) => (route === contentSlug));\n\n if (!contentMatch) return \n\n if (bootcamp === 'inbde' && false) {\n return (\n \n )\n }\n return (\n \n );\n }\n\n if (contentType === 'rbites') {\n\n const qbankContent = classroomConfig.contentTypes.find(({route}) => route === contentType).content;\n\n const banks = qbankContent.find(({name}) => name === 'Reaction Bites') || {content: []};\n\n const contentMatch = banks.content\n .find(({route}) => (route === contentSlug));\n\n if (!contentMatch) return \n\n return (\n \n );\n }\n\n return (\n {match.params.contentSlug}\n );\n};\n\nContent.defaultProps = {};\nContent.propTypes = {};\n\nexport default Content;\n","import React, {useState} from 'react';\nimport {Helmet} from 'react-helmet';\n\nimport styled from 'styled-components';\n\nimport Breadcrumbs from '../../../components/NavBar/components/Breadcrumbs';\n\nimport {Body2} from '../../../components/Typography';\nimport {SubTitle as Title} from '../../components/Cards/Overview';\nimport PracticeTestCard from '../../components/Cards/PracticeTest';\nimport {useUserDataContext} from '../../../contexts/UserData';\n\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\n\nimport PageTabs from '../../components/PageTabs';\n\nimport Container from '../PageContainer';\nimport theme from '@bootcamp/shared/src/styles/theme';\n\nconst StyledBreadcrumbs = styled(Breadcrumbs)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n`;\n\nconst Overview = styled.div`\n margin-bottom: ${({theme}) => theme.layouts.spacing.l};\n background: none;\n border: none;\n box-shadow: none;\n padding: 0px;\n max-width: 750px;\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-bottom: 0px;\n }\n`;\n\nconst Body = styled(Body2)`\n color: ${({theme}) => theme.overlays.opacity.light._400};\n`;\n\nconst FullLengthTestDirectory = ({history, match}) => {\n const [activeContentType, setActiveContentType] = useState('Full Length Tests')\n const {config} = useBootcampConfigContext();\n const {name, content} = config.studyTools.find(classroom => classroom.route === 'full-length');\n const {isUpgraded, isBootcampPlusStudent, bootcamp} = useUserDataContext();\n const themePalette = theme.colors.brandPalette.royal;\n const tabs = isBootcampPlusStudent && bootcamp === 'dat' ? [\n {\n name: 'Full Length Tests',\n route: 'full-length'\n },\n {\n name: 'FL Plus Tests',\n route: 'full-length-plus'\n }\n ] : [\n {\n name: 'Full Length Tests',\n route: 'full-length'\n }\n ]\n return (\n \n \n {config.meta.siteTitle} | {name}\n \n \n \n \n \n Full Length Practice Tests\n \n \n Each Full Length Test is a compilation of the Practice Tests from every subject. For example, if you've taken Biology Test #2, you'll see the same biology questions in Full Length Test #2.\n \n \n \n {content.filter(item => match.url.includes('plus') ? isBootcampPlusStudent && item.plusPack : !item.plusPack).map((item, index) => (\n 0 && !isUpgraded}\n />\n ))}\n \n );\n}\n\nFullLengthTestDirectory.propTypes = {};\nFullLengthTestDirectory.defaultProps = {};\n\nexport default FullLengthTestDirectory;\n","import React from 'react';\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\n\nimport MasteryBank from '../../../components/MasteryBank';\nimport QuestionBank from '../../../components/QBank';\n\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\n\nimport {getInObj} from '@bootcamp/shared/src/util';\n\nconst BookmarkBank = ({match, location, ...props}) => {\n const {config} = useBootcampConfigContext();\n const {DEFAULT_USER_ID, cognitoUser} = useUserDataContext();\n\n useDocumentTitle(`${config.meta.siteTitle} | Bookmarked Questions Review`);\n\n const username = getInObj(['attributes', 'name'], cognitoUser, '');\n\n const {tagId, tagIds, themePalette} = config.classrooms.find(({route}) => route === match.params.classroom) || {};\n const collectedIds = tagId\n ? [tagId]\n : tagIds ? tagIds\n : config.classrooms.reduce((acc, {tagId, tagIds}) => [...acc, ...(tagIds ? tagIds : [tagId])], []);\n\n return (\n \n {(totalQuestions) => (\n \n )}\n \n );\n};\n\nBookmarkBank.defaultProps = {};\nBookmarkBank.propTypes = {};\n\nexport default BookmarkBank;\n","import React, {useState, useEffect} from 'react';\nimport styled from 'styled-components';\n\nimport {Body3} from '../../../components/Typography';\n\nimport Grid from '../../components/Grid';\nimport ClassroomCard from '../../components/Cards/ClassroomBookmark';\nimport ClassroomCardDefault from '../../components/Cards/Classroom';\nimport {getAllQuestionMasteryIdsTagsByUserId} from '@bootcamp/shared/src/requests';\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {useBootcampConfigContext} from '../../../contexts/BootcampConfig';\n\nimport BookmarkQuestionBank from './QuestionBank';\nimport Container from '../PageContainer';\n\nimport Overview from '../../components/Cards/Overview';\nimport Breadcrumbs from '../../../components/NavBar/components/Breadcrumbs';\nimport PageTabs from '../../components/PageTabs';\nimport {colors} from '@bootcamp/shared/src/styles/theme';\nimport {Helmet} from 'react-helmet';\n\nimport {Bookmark} from '@styled-icons/heroicons-outline/Bookmark';\n\nconst StyledBreadcrumbs = styled(Breadcrumbs)`\n margin-bottom: ${({theme}) => theme.layouts.spacing.s};\n`;\nconst StyledClassroomCard = styled(ClassroomCard)`\n flex: 1;\n margin-right: ${({theme}) => theme.layouts.spacing.xl};\n color: black;\n\n &:last-child {\n margin-right: 0;\n }\n\n ${({theme}) => theme.mediaQueries.laptop} {\n margin-right: 0px;\n margin-bottom: 0 0 ${({theme}) => theme.layouts.spacing.m};\n }\n`;\n\nconst StyledOverview = styled(Overview)`\n margin-bottom: 0;\n background: none;\n border: none;\n box-shadow: none;\n padding: 0px;\n max-width: 750px;\n /* copy / pasted from the Hero typography element for easy testing */\n\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-bottom: 0px;\n }\n`;\n\nconst StyledBookmark = styled(Bookmark)`\n color: ${({theme}) => theme.overlays.opacity.light._400};\n`;\n\nconst BookmarkLabel = styled(Body3)`\n color: ${({theme}) => theme.colors.neutralsPalette.grey};\n`;\n\nfunction renderCards(config, bootcamp, bookmarkCounts) {\n const gridLayout = bootcamp === 'inbde';\n\n return gridLayout\n ? (\n (\n {bookmarkCounts[name]} questions bookmarked}\n />\n )}\n />\n ) : (\n config.classrooms.map(({icon, themePalette, name, route, tagId, locked, questionCount}) => (\n }\n themePalette={themePalette}\n name={name}\n route={`/${bootcamp}/bookmarks/${route}`}\n locked={!bookmarkCounts[name]}\n questionCount={bookmarkCounts[name]}\n showProgress={false}\n lightMode\n />\n ))\n )\n}\n\nconst Bookmarks = ({history, match}) => {\n const [userData, setUserData] = useState([]);\n const {DEFAULT_USER_ID} = useUserDataContext();\n const {config} = useBootcampConfigContext();\n const bootcamp = match?.params?.bootcamp;\n const subjects = config.classrooms.map(({name}) => name);\n\n const grossAnatomyTagIds = config.classrooms.find(({name}) => name === 'Gross Anatomy')?.tagIds;\n\n const bookmarkCounts = userData.filter(({bookmarked}) => bookmarked).reduce((acc, {bookmarked, question}) => {\n const {subject: defaultSubject, id} = (question?.tags?.items?.find(({tag}) => !!tag.subject) || {tag: {}})?.tag || {};\n\n const subject = grossAnatomyTagIds?.some(tagId => tagId === id) ? 'Gross Anatomy' : defaultSubject;\n\n return {\n ...acc,\n [subject]: acc[subject] + 1\n }\n }, subjects.reduce((acc, subject) => ({...acc, [subject]: 0}), {}));\n\n\n useEffect(() => {\n async function fetchUserData () {\n if (!DEFAULT_USER_ID) return;\n const filter = {bookmarked: {eq: true}};\n try {\n const {data: {QuestionMasteryByWpUserId: {items: progressData}}} = await getAllQuestionMasteryIdsTagsByUserId(DEFAULT_USER_ID, filter);\n setUserData(progressData);\n } catch (e) {\n console.log(e);\n }\n }\n fetchUserData();\n }, [DEFAULT_USER_ID]);\n\n return (\n \n \n {config.meta.siteTitle} | Bookmarked Questions\n \n \n \n \n \n {renderCards(config, bootcamp, bookmarkCounts)}\n \n );\n};\n\nBookmarks.defaultProps = {};\nBookmarks.propTypes = {};\n\nexport {BookmarkQuestionBank};\nexport default Bookmarks;\n","import React from 'react';\nimport {useHistory} from 'react-router-dom';\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\nimport {Checkout} from '../../../components/Form';\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport styled from 'styled-components';\nconst ContainerBackgroundColor = styled.div`\n width: 100%;\n height: 100%;\n background: ${({theme}) => theme.colors.brandPalette.royal.dark};\n overflow: hidden;\n`;\nconst ScrollWrapper = styled.div`\n overflow-y: scroll;\n margin-top: 71px;\n height: calc(100% - 71px);\n ${({theme}) => theme.mediaQueries.tablet} {\n margin-top: 55px;\n height: calc(100% - 55px);\n }\n`;\nconst CheckoutPage = ({location}) => {\n useDocumentTitle('Bootcamp.com | Checkout');\n\n const {bootcamp} = useUserDataContext();\n const urlParams = new URLSearchParams(location.search);\n const priceId = urlParams.get('priceId');\n const {push} = useHistory();\n if (!priceId) window.location = 'https://bootcamp.com';\n return (\n \n \n push({\n pathname: `/${bootcamp}/thank-you`,\n state: {intentId, referrer: 'checkout'},\n })}\n bootcamp={bootcamp}\n />\n \n \n );\n};\n\nexport default CheckoutPage;\n","import React, {useEffect} from 'react';\nimport {useHistory} from 'react-router-dom';\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\n// import {Checkout} from '../../../components/Form';\nimport {useUserDataContext} from '../../../contexts/UserData';\nimport {FullPageSpinner} from '@bootcamp/web/src/components/Branding';\nimport styled from 'styled-components';\nimport {invokeLambda} from '@bootcamp/shared/src/requests'\nconst Loader = styled(FullPageSpinner)`\n background: ${({theme}) => theme.colors.brandPalette.royal.dark};\n`\n\nconst CheckoutRedirect = ({location}) => {\n useDocumentTitle('Bootcamp.com | Checkout');\n\n const {bootcamp, cognitoUser} = useUserDataContext();\n const urlParams = new URLSearchParams(location.search);\n const priceId = urlParams.get('priceId');\n const mode = urlParams.get('mode');\n const afterpay = urlParams.get('afterpay');\n const {push} = useHistory();\n\n if (!priceId) window.location = 'https://bootcamp.com';\n useEffect(() => {\n async function setupCheckout () {\n\n if (cognitoUser.attributes?.email) {\n try {\n const {checkoutUrl} = await invokeLambda('tbc-Stripe-Checkout', {\n userMembershipsId: cognitoUser.getUsername(),\n email: cognitoUser.attributes.email,\n price: priceId,\n mode,\n bootcamp,\n afterpay,\n });\n window.location = checkoutUrl;\n } catch (error) {\n console.log('error setting up checkout', error);\n push('/');\n }\n }\n }\n setupCheckout();\n }, [cognitoUser])\n\n return (\n \n );\n};\n\nCheckoutRedirect.propTypes = {};\n\nexport default CheckoutRedirect;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport {H3} from '../../../components/Typography';\nimport {Container, TitleBar, Content as CardContent, Detail, DetailLabel, DetailContent} from '../AccountPage/components/Cards/shared';\n\nconst Content = styled(CardContent)`\n padding-bottom: ${({theme}) => theme.layouts.spacing.xl};\n`;\nconst StyledDetail = styled(Detail)`\n &:last-child {\n margin-bottom: 0;\n }\n`;\n\nfunction formatAmount(amount) {\n const parsed = parseInt(amount);\n\n return (parsed / 100).toFixed(2);\n}\n\nconst Receipt = ({amount, currency, last4}) => {\n\n const loading = !amount && !currency && !last4;\n\n if (loading) return null;\n\n return (\n \n \n

Your Bootcamp.com Receipt

\n
\n \n \n Purchase Date\n {new Date().toLocaleString('en-US', {dateStyle: 'long'})}\n \n \n Amount Paid\n ${formatAmount(amount)} {currency?.toUpperCase()}\n \n {last4 && \n Payment Method\n {`**** **** **** ${last4}`}\n }\n \n
\n );\n};\n\nReceipt.defaultProps = {};\nReceipt.propTypes = {};\n\nexport default Receipt;\n","import React, {useCallback, useRef, useEffect} from 'react';\nimport {Redirect} from 'react-router-dom';\nimport styled from 'styled-components';\nimport API from '@aws-amplify/api';\n\nimport {useAsync} from '../../../hooks';\nimport {LoadingSpinner} from '../../../components/Branding';\nimport {Body2} from '../../../components/Typography';\n\nimport {createWidget} from \"@typeform/embed\";\nimport \"@typeform/embed/build/css/widget.css\";\nimport * as Sentry from '@sentry/react'; // TODO set up sentry for app.bootcamp\n\nimport Receipt from './Receipt';\n\nimport {IntercomAPI} from 'react-intercom';\nimport TagManager from 'react-gtm-module';\nimport {getMembership} from '@bootcamp/shared/src/requests'\nimport {useUserDataContext} from '@bootcamp/web/src/contexts/UserData'\nimport {invokeLambda} from '@bootcamp/shared/src/requests';\n\nconst Container = styled.div`\n height: 100%;\n margin-bottom: 14px;\n padding: ${({theme}) => theme.layouts.spacing.xl} ${({theme}) => theme.layouts.spacing.m} ${({theme}) => theme.layouts.spacing.m};\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding-top: ${({theme}) => theme.layouts.spacing.m};\n }\n overflow-y: auto;\n`;\nconst EmbedWrapper = styled.div`\n position: relative;\n width: 100%;\n height: 100vh;\n max-width: 640px;\n max-height: 640px;\n margin: 0 auto ${({theme}) => theme.layouts.spacing.xl};\n box-shadow: 0px 8px 20px rgba(0, 0, 0, 0.12);\n`;\nconst Typeform = styled.div`\n width: 100%;\n height: 100%;\n`;\nconst LoadingSpinnerContainer = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 50px;\n`;\nconst ErrorText = styled(Body2)`\n color: white;\n`;\n\nfunction formatReceiptFromPaymentIntent(result) {\n if (result?.url === '/stripe/billing' || result?.body?.subscription) {\n const {amount, paymentMethod: paymentMethodDetails} = result?.body;\n return {amount, ...paymentMethodDetails}\n }\n const {amount, payment_method, currency} = result?.body?.paymentIntent || {};\n const paymentMethodDetails = payment_method?.card || {};\n return {amount, ...paymentMethodDetails, currency}\n}\n\nconst feedbackFormIdByBootcamp = {\n dat: 'RokieLsJ',\n oat: 'F3gEwHuy',\n inbde: 'b4e2VndJ',\n 'med-school': 'xAho4SSo',\n 'dental-school': 'QzVA2150',\n anatomy: 'TBMrel22',\n nclex: 'Zlj9pQ4q',\n mcat: 'W4bv0Lnr'\n};\n\nconst ThankYou = ({match, location}) => {\n const {bootcamp} = match.params;\n const urlParams = new URLSearchParams(location.search);\n const {intentId, referrer} = location.state || {};\n const typeformContainer = useRef();\n const {cognitoUser} = useUserDataContext();\n const sessionId = urlParams.get('session_id');\n\n const fetchPaymentIntent = useCallback(async () => {\n const result = await invokeLambda('tbc-Stripe', {path: '/stripe/get-payment-intent-or-subscription-from-checkout-session', sessionId});\n return result;\n }, []);\n const {pending: fetchingPaymentIntent, value: paymentIntent, error: fetchError} = useAsync(fetchPaymentIntent);\n const receipt = formatReceiptFromPaymentIntent(paymentIntent);\n useEffect(() => {\n if (!typeformContainer || !typeformContainer.current || !feedbackFormIdByBootcamp[bootcamp]) return;\n\n createWidget(feedbackFormIdByBootcamp[bootcamp], {container: typeformContainer.current});\n\n }, [typeformContainer]);\n\n useEffect(() => {\n const trackMembership = async () => {\n try {\n const membershipId = paymentIntent.body.subscription || paymentIntent.body.paymentIntent.id\n window.localStorage.setItem(`${membershipId}-tracked`, true);\n const {data: {getMembership: membershipInput}} = await getMembership(membershipId);\n const discountedPrice = paymentIntent.body.amount || paymentIntent.body.paymentIntent.amount;\n const originalPrice = discountedPrice;\n const priceId = membershipInput.productId;\n const productName = paymentIntent.body.paymentIntent.metadata.title;\n const discountCode = paymentIntent.body.promoCode;\n // update intercom user attributes\n // create intercom event\n await IntercomAPI('trackEvent', membershipId.startsWith('sub_') ? 'Upgraded to monthly plan' : `Account Upgraded: Joined group(s) ${membershipInput.groups.join(', ')}`, {\n ...membershipInput,\n groups: JSON.stringify(membershipInput.groups),\n discountCode,\n discountedPrice: (discountedPrice / 100).toFixed(2),\n originalPrice: (originalPrice / 100).toFixed(2),\n });\n TagManager.dataLayer({\n dataLayer: {\n 'transactionId': membershipInput.id,\n 'transactionTotal': (discountedPrice / 100).toFixed(2),\n 'transactionCoupon': discountCode,\n 'transactionProducts': [{\n 'sku': priceId,\n 'item_id': priceId,\n 'name': productName || priceId,\n 'item_name': productName || priceId,\n 'price': (discountedPrice / 100).toFixed(2),\n 'quantity': 1\n }],\n 'email': cognitoUser?.attributes?.email,\n 'event': 'Transaction Complete',\n }\n })\n await IntercomAPI('update', {discountCode, bootcamp});\n window.rewardful && window.rewardful('convert', {email: membershipInput.userMembershipsId});\n } catch (e) {\n console.log(e);\n Sentry.captureException({error: JSON.stringify(e)});\n }\n }\n if (sessionId && paymentIntent && !window.localStorage.getItem(`${paymentIntent?.body?.paymentIntent?.id}-tracked`)) {\n trackMembership();\n }\n }, [paymentIntent])\n\n if (fetchError || paymentIntent?.error) return \n\n return (\n \n {\n feedbackFormIdByBootcamp[bootcamp] && (\n \n \n \n )\n }\n {\n fetchingPaymentIntent ?\n \n \n \n : fetchError || paymentIntent?.error ?\n \n Error fetching receipt. Please contact support for more info.\n \n : \n }\n \n );\n};\n\nThankYou.defaultProps = {};\nThankYou.propTypes = {};\n\nexport default ThankYou;\n","import React, {useMemo, useState} from 'react';\nimport styled from 'styled-components';\nimport {useDocumentTitle} from '@bootcamp/shared/src/util/hooks';\nimport {useHistory} from 'react-router-dom';\n\nimport {Selector} from '../../pages/ScoreReport/components/Filter';\n\nimport {useBootcampConfigContext} from '@bootcamp/web/src/contexts/BootcampConfig';\nimport {Element as FAQElement} from '@bootcamp/web/src/bootcamps/components/WebflowFAQs';\nimport Breadcrumbs from '../../../components/NavBar/components/Breadcrumbs';\n\nimport {\n PageHeader,\n Wrapper,\n ElementWrapper,\n StyledCard,\n LoadingWrapper\n} from '@bootcamp/web/src/bootcamps/pages/ScoreReport';\n\nimport Details from '@bootcamp/web/src/bootcamps/pages/ScoreReport/components/Details';\nimport Score from '@bootcamp/web/src/bootcamps/pages/ScoreReport/components/Score';\nimport Subject from '@bootcamp/web/src/bootcamps/pages/ScoreReport/components/Subject';\nimport Question from '@bootcamp/web/src/bootcamps/pages/ScoreReport/components/Question';\nimport Time from '@bootcamp/web/src/bootcamps/pages/ScoreReport/components/Time';\nimport ScoreDistributionChart from '@bootcamp/web/src/components/Charts/ScoreDistribution';\n\nimport {Heading, Title, TitleWithFilter, SubTitle} from '@bootcamp/web/src/bootcamps/components/Performance/shared';\n\nimport {ConfigProvider, useConfigState} from '@bootcamp/web/src/bootcamps/pages/ScoreReport/context';\n\nimport {findInConfigById} from '@bootcamp/shared/src/util';\nimport { useUserDataContext } from '../../../contexts/UserData';\n\nfunction getTestTitle(config, testId) {\n try {\n const configHit = findInConfigById(config, testId);\n const fltConfigHit = [config?.studyTools?.[0]?.content?.find(({ id }) => id === testId)];\n\n const test = (configHit || fltConfigHit)?.[0];\n\n return test?.name;\n } catch (error) {\n console.log('error getting test name', error);\n return 'Practice Test'\n }\n}\n\nconst ChartCard = styled(StyledCard)`\n padding: 24px;\n\n ${({theme}) => theme.mediaQueries.tablet} {\n padding: 16px;\n }\n`;\n\nconst optionsByBootcamp = {\n dat: [\n {value:\"Biology\", text: 'Biology'},\n {value:\"General Chemistry\", text: 'General Chemistry'},\n {value:\"Organic Chemistry\", text: 'Organic Chemistry'},\n {value:\"Perceptual Ability\", text: 'Perceptual Ability'},\n {value:\"Reading Comprehension\", text: 'Reading Comprehension'},\n {value:\"Quantitative Reasoning\", text: 'Quantitative Reasoning'},\n ],\n oat: [\n {value:\"Biology\", text: 'Biology'},\n {value:\"General Chemistry\", text: 'General Chemistry'},\n {value:\"Organic Chemistry\", text: 'Organic Chemistry'},\n {value:\"Reading Comprehension\", text: 'Reading Comprehension'},\n {value:\"Quantitative Reasoning\", text: 'Quantitative Reasoning'},\n {value:\"Physics\", text: 'Physics'},\n ],\n};\n\nconst DistributionChart = ({testTitle, isFullLength}) => {\n const [subject, setSubject] = useState('Biology');\n const {scoring, bootcamp} = useConfigState();\n const testNumber = testTitle.match(/#(.*)/)[1];\n const subjectTestTitle = `${subject} Test #${testNumber}`;\n\n const title = isFullLength ? subjectTestTitle : testTitle;\n\n const score = isFullLength\n ? scoring?.subjectBreakdown?.[subject]?.score\n : scoring?.overview?.score;\n\n return (\n \n \n \n \n {isFullLength ? 'Subject Comparison' : 'Comparison'}\n \n {isFullLength &&\n \n }\n \n See how you compare to other students based on the number of questions you answered correctly. \n \n \n \n \n \n );\n}\n\nconst faqItems = [\n {title: \"How can I improve my score?\", text: \"The best way to improve your score is to make sure you are reading through each explanation thoroughly - even for the questions you got correct. Review the Subject Breakdown table above and focus on subjects marked with a red icon - that's where you can improve the most!\"},\n];\n\nconst TestReview = ({match}) => {\n const history = useHistory();\n const {config} = useBootcampConfigContext();\n const {bootcamp} = useUserDataContext();\n const {params: {id}} = match;\n\n const testTitle = useMemo(() => getTestTitle(config, id), [id]);\n const isFullLength = testTitle?.match('Full Length');\n\n useDocumentTitle(`${config.meta.siteTitle} | Test Review`);\n \n if (window.location.pathname.includes('sample-test')) {\n return (\n \n \n \n \n DAT Sample Test\n \n \n \n \n
\n \n \n \n \n \n \n \n FAQs\n \n {faqItems.map(({title, text}) => )}\n \n \n \n \n )\n }\n\n\n return (\n \n \n \n \n {testTitle}\n \n \n \n \n
\n \n \n \n \n \n