{"version":3,"file":"mathseeds-client-467b794830aa12f510eb26c3f0050873.js","names":["globalThis","crypto","randomUUID","uuidV4","App","Application","constructor","super","arguments","_defineProperty","this","config","modulePrefix","podModulePrefix","Resolver","_exports","default","structuredClone","startLog","rollbar","checkIgnore","ignoredMessages","loadInitializers","__COLOCATED_TEMPLATE__","_templateFactory","createTemplateFactory","id","block","moduleName","isStrictMode","ActivitySidebar","_class","Component","owner","args","_descriptor","activitySidebar","close","isOpen","toggle","changeActivity","changeActivityAction","_applyDecoratedDescriptor","prototype","service","configurable","enumerable","writable","initializer","action","Object","getOwnPropertyDescriptor","_component","setComponentTemplate","ActivityItem","activity","status","icon","thumbnail","ActivityList","selectedActivity","moveUp","document","dispatchEvent","Event","moveDown","templateOnly","StudentInfo","name","avatar","position","points","AssignmentsAssignmentOverlayComponent","ContentInteractive","_initializerDefineProperty","_descriptor2","_descriptor3","_descriptor4","_descriptor5","loader","framework","jesterLoader","Error","concat","externalController","_this$args","contentActions","contentSpec","assertContentActions","logger","APP","enableMessengerLogging","event","_len","length","Array","_key","console","log","createExternalController","variables","bgmDisabled","user","backgroundMusicDisabled","featureFlags","client","features","getClient","flagNames","getObjectValue","payload","Set","filter","flagName","getBooleanValue","onError","error","router","transitionTo","DebugObservable","key","subscribe","unsubscribe","next","value","currentValue","JSON","stringify","data","complete","debug","tracked","ContentInteractiveDebugComponent","_class2","getDebug","_ref","actions","_ref2","_slicedToArray","actionParams","params","_ref3","entries","_ref4","param","push","debugActions","values","defineProperty","get","debugValues","subscriptions","observable","debugSubscriptions","copyToClipboard","target","HTMLElement","dataset","debugData","startsWith","endsWith","slice","navigator","clipboard","writeText","onSubmit","actionKey","_debug$actions$get","preventDefault","debugAction","debugParams","currentTarget","HTMLFormElement","Map","formData","FormData","_ref5","_ref6","paramType","type","set","Number","fromEntries","ArcadeGame","saveScore","saveScoreAction","goBackToArcade","goBackToArcadeAction","ArcadeLobbyGame","playGame","playGameAction","Avatar","saveDNA","dna","saveDNAAction","interactive","callInteractionMethod","Awards","print","printAction","DrivingTests","showQuiz","showQuizAction","Game","gameStarted","gameStartedAction","score","showLeaderboard","showLeaderboardAction","showLobby","showLobbyAction","Quiz","completeQuiz","results","completeQuizAction","then","passed","showRace","FinishedMathseeds","goToPreviousMap","goToPreviousMapAction","goToDrivingTests","goToDrivingTestsAction","goToArcade","goToArcadeAction","goToMentalMinute","goToMentalMinuteAction","LessonActivityGame","saveProgress","rewardStudent","saveProgressAction","saveQuizProgress","showButtons","saveQuizProgressAction","goToMinigame","goToMinigameAction","nextAction","playAgain","resetNextable","goBack","incrementScore","amount","undefined","incrementScoreAction","LessonActivityMinigame","goToMap","goToMapAction","goBackAction","playLesson","stepIndex","playLessonAction","playQuiz","playQuizAction","previousMap","previousMapAction","nextMap","nextMapAction","_this$args$onInit","onInit","call","quizCompleted","promise","quizCompletedAction","recentQuizCompletePromise","PlacementTest","placementTestComplete","response","completeTestAction","finishTest","finishTestAction","Playroom","playActivity","playActivityAction","playSubGame","playBook","playVideo","Activity","SampleGame","window","history","back","hideLoadingScreen","hideLoadingScreenAction","ShopGame","purchaseItem","item","purchaseAction","result","purchasedItem","insufficientFunds","Treehouse","goToChangeRoom","goToChangeRoomAction","goToRewardsRoom","goToRewardsRoomAction","setItemPosition","code","room","roomGroup","roomGroupIndex","setItemPositionAction","ToggleDebug","toggleDebug","debugMode","DialogCloseComponent","LeaderBoard","continue","ErrorAlert","showReloadIcon","buttonText","errorMessage","buttonAction","e","toggleErrorMessage","showErrorMessage","isAndroid","userAgent","match","FullNav","documentElement","clientHeight","innerHeight","clientWidth","innerWidth","element","querySelector","scale","offset","resizeNavItemsList","backgroundImage","backgroundSrc","bgSrc","htmlSafe","h","windowHeight","w","windowWidth","x","y","baseHeight","baseWidth","Math","min","background","navList","style","transform","left","top","height","isTouchPosOnElement","resolvedEvent","__originalEvent","originalEvent","changedTouches","pageX","pageXOffset","pageY","pageYOffset","elOfTouchPos","elementFromPoint","elOfTouchPosExists","elsAsArray","querySelectorAll","elOfTouchPosMatchesComponent","indexOf","NavItem","_this","touchState","clickBehaviour","handleMouseEnter","handleMouseLeave","isTouchingButton","navItemElement","locked","hoverEnabled","hoverScale","rotation","initialScale","title","_this$args$title","doHover","_this$args$doHover","_this$args$w","_this$args$h","_this$args$x","_this$args$y","_this$args$rotation","fontSize","_this$args$fontSize","scaleRange","scaleDown","isTablet","safeString","labelStyle","scoreTextStyle","_this$args$onClick","sounds","play","onClick","NavWelcome","avatarStyle","guaranteedAvatarUrl","avatarUrl","defaultAvatarURL","fontSizeAdjustment","nameFontSize","LoadingScreenComponent","loading","loadingUi","isLoading","hide","QuestNotificationComponent","currencyAmount","student","acorns","quest","currentQuest","alertAnytime","displayQuestAlertIfRequired","showQuestAlert","questGoalForNotification","inAssignmentMode","assignments","hasTask","jesterManifests","acknowledgeQuestGoalAlert","goalId","awarded","closeQuestAlert","onContentError","readyForUserInput","Controller","bye","session","signOut","saveArcadeGameScore","gameId","model","_ENV$APP$apiEndpoint","ky","post","ENV","apiEndpoint","apiNamespace","json","errorHandler","handleError","updateAcorns","refetch","url","playGameResponse","minigameAuth","enableGameNamed","studentAvatarUpdateMutationDocument","graphql","apollo","mutate","mutation","input","imageData","currentMap","certificateUrl","URL","certificate","goHome","goNext","unhandledError","awardsContentSpec","gameUrl","isAssignmentMode","assignmentMode","retry","limit","methods","body","URLSearchParams","queryParams","grade","category","lesson","shouldLogout","rosterEnabled","currentTask","transitionToLobby","product","_descriptor6","quiz","number","isAssignment","studentContext","_this$assignments$cur","taskId","assignmentUuid","__typename","canCompleteDrivingTestAssignmentTask","precinct","remoteId","gradePosition","resultsWithGradePosition","grade_position","operationResults","operations","completeDrivingTestsQuiz","Promise","all","fetch","studentProgress","fetchProgress","getLastPlayableMap","lastMap","_dec","_dec2","options","lessonType","numberOfLessons","i","lessonNumber","lessonsPerMap","progress","mapNumber","ceil","toFixed","label","generateLessonOptions","_dec3","map","numberOfMaps","generateMapOptions","_dec4","_dec5","debugValue","_descriptor7","_descriptor8","task","assignmentThumbnailUrl","_this$task","thumbnailUrl","assignmentTitle","lessonId","split","capitalize","join","gradeLessonNumber","assignmentName","matcher","replace","assignmentDueDate","formatDueDate","Date","endAt","assignmentTimeRemaining","dateFromNow","now","assignmentInstruction","AssignmentTaskMyLessons","AssignmentTaskDrivingTests","assignmentRouteParams","_this$task2","targetRouteParams","greetings","welcomeGreeting","randomIndex","floor","random","currentPositionTitle","currentLesson","myLessonsCurrentLesson","hasFinishedLessons","myLessonsCurrentMap","showPlacementTestText","showMyLessonsPlacementTest","lessonsTitle","startTask","_this$task$targetRout","_toArray","routeName","models","_arrayLikeToArray","myProgram","hello","welcomeName","progressPage","numberFacts","playRoom","mentalMinute","myLessons","dailyFruit","drivingTest","myAwards","songs","library","shop","arcade","treehouse","acornCount","logo","resetProgressToPlacementTest","resetMyLessonsPlacementTestProgress","resetProgressToLessonPosition","resetMyLessonsLessonProgress","parseInt","resetProgressToMapQuizPosition","resetMyLessonsMapQuizProgress","resetProgressToCompleteLessonsPrecinct","myLessonsActivityResultCreateMutationDocument","quizDebugAnswers","correctCount","totalCount","area","attempts","topic","question_answers","fill","_","correct","correct_answer","selected_answer","question_number","question","instruction","quizResult","a","b","c","d","_descriptor9","_descriptor0","_descriptor1","_descriptor10","_descriptor11","activityId","activityIndex","nextActivity","enableMinigame","minigameName","studentPassedQuiz","total","currentAssignmentTaskForActivity","canCompleteLessonAssignmentTask","mapId","calculateMap","renderQuestAlert","newActivityID","policy","canPlayLessonActivity","incrementAcorns","nextRoute","uuid","attemptUuid","student_event","event_type","toString","assignment_task_id","assignment_uuid","attempt_uuid","credentials","prefixUrl","studentOperationsUrl","timeout","assignment","assignmentTaskId","_args$uuid","lessonInPrecinct","activityInLesson","goToLobby","completeActivity","isLastActivity","minigame_name","_this$nextActivity","nextActivityId","send","save","findLessonIdForStep","previousMapId","nextMapId","_this$model","correct_count","incorrectCount","incorrect_count","total_count","goToWelcomeScreen","reload","transition","setShouldRefresh","lesson_id","delayOpts","contentError","goToLesson","goToNextLesson","nextLessonId","lessonSet","currentLessonIdForLessonSetId","previousLessonId","mentalMinuteLessonIdFromRouteInfo","currentRoute","progressPolicy","goToProgress","showBadges","printLessonSetCertificate","lessonSetId","unixTimeSeconds","getLessonSetUpdatedAt","printMentalMinuteCertificate","templateId","dasherize","timestamp","locale","printProgramCertificate","getLatestLessonSetUpdatedAt","lessonsContentSpec","badgeCategoryOffsetForAreaId","space","medieval","fantasy","aztec","farmyard","circus","egypt","rainforest","africa","_ref2$reload","printBadgeCertificate","areaId","categoryOffset","progressContentSpec","_this$previousUrl","location","previousUrl","completeTest","skipped","completePlacement","nextable","resolve","purchase","items","login","signIn","setupDeprecationWorkflow","throwOnUnhandled","workflow","source","_source","documents","types","StudentAvatarUpdateDocument","MyLessonsActivityResultCreateDocument","GetInitialAppDataDocument","ArcadeGamesDocument","GetMyAwardsDocument","AssignmentTaskFragmentDoc","GetStudentCurrentTaskDocument","ResetMyLessonsLessonProgressDocument","ResetMyLessonsMapQuizProgressDocument","ResetMyLessonsPlacementTestProgressDocument","StudentItemsFragmentFragmentDoc","StudentItemPlacementUpdateDocument","ItemPurchaseDocument","StudentQuestDataFragmentFragmentDoc","GetStudentQuestDocument","AcknowledgeQuestGoalAlertDocument","StudentProgressFragmentFragmentDoc","GetProgressDocument","StudentUserFragmentFragmentDoc","StudentAvatarFragmentFragmentDoc","StudentLocaleFragmentFragmentDoc","StudentQueryDocumentDocument","BadgeColourEnum","CustomerTypeEnum","QuestGoalStatusEnum","kind","definitions","typeCondition","selectionSet","selections","directives","alias","operation","variableDefinitions","variable","keys","_gql","forEach","possibleTypes","Assignment","AssignmentDetails","AssignmentTask","AssignmentTaskDetails","ItemPurchasePayload","QuestGoalPrimary","titleCase","decamelize","helper","initialize","lessonSets","lessonIds","modifier","_element","_named","listener","addEventListener","runInDebug","removeEventListener","named","fit","fitty","setNavItemElement","scrollToItem","scrollUp","itemClosestToCenterOfList","scrollDown","list","listHeight","getComputedStyle","parseFloat","paddingTop","paddingBottom","contentHeight","itemHeight","getBoundingClientRect","marginTop","marginBottom","outerHeightWithMargin","scrollTop","max","scrollTo","behavior","_element$querySelecto","_centerItem$attribute","listItems","listRect","parentElement","round","centerOfList","topOfRange","bottomOfRange","centerItem","find","rect","bottom","itemId","attributes","getNamedItem","cleanup","instance","resizeHandler","WindowResizeModifier","Modifier","registerDestructor","modify","debounce","parent","use","resource","on","lookup","watchOptions","from","fragment","query","watchFragment","currentResult","cell","cache","identify","initialResult","readFragment","subscription","Fragment","current","clientOptions","mutateResult","Mutation","watchQuery","partial","updateQuery","mapFn","Query","isUncaught","checkIgnorePredicate","checkIgnorePredicates","ignoreUnknownScriptError","_isUncaught","_payload","String","includes","Router","EmberRouter","locationType","rootURL","route","path","initialAppQueryDocument","Route","_descriptor12","_descriptor13","_descriptor14","_descriptor15","_descriptor16","_descriptor17","_descriptor18","_descriptor19","_showLoadingScreen","_hideLoadingScreen","one","setup","willDestroy","off","show","_transition$to","_transition$from","_transition$to2","_transition$to3","to","enabled","routeInfo","willHideLoadingScreenManually","metadata","resolvedModel","_transition$to$name","_transition$to4","_trackPage","page","currentURL","currentRouteName","metrics","trackPage","timeOnTask","pingTaskByRoute","isEnabled","posthog","capture","_capturePageView","_currentURL$split$","contentType","info","studentMetrics","capturePageView","beforeModel","_isGuestSession","asGuest","releaseChecker","start","longSessionKiller","setupV2","_setCaperMusicToggle","_addCaperFeatures","caperLoader","accent","setAccent","jesterAccent","afterModel","_student","checkTransition","willTransition","followRedirects","toRoute","refresher","refreshIfSafeAndScheduled","trigger","isErrorRepresentingNetworkError","isAuthorizationError","isApolloError","targetName","CAPER_MUSIC_ENABLED","CAPER_FEATURES","gamesAccess","gameName","game_id","arcadeGamesQueryDocument","firstName","games","arcadeGames","interactiveConfig","load","UrlMaker","caperTomfooleryActivityUrl","urlForArcadeHighScore","claimGameToken","_this$student$dna","_objectWithoutProperties","_excluded","changingRoomJsonUrl","getMyAwardsQueryDocument","buildRouteInfoMetadata","fetchPolicy","manifests","badges","certificates","mapCertificates","canPlayDrivingTest","_config$APP$apiEndpoi","_await$ky$get$json","can_play","Boolean","schoolCurrentGrade","_this$studentProgress","drivingTests","progressResults","currentGrade","driving_tests_progress","LeaderboardRoute","rootUrl","hash","studentHighScore","highScores","QuizRouteModel","gradeId","grade_id","categoryId","category_id","numberId","number_id","gradeResults","replaceWith","LessonRouteModel","_ref$activities","activities","index","cloneDeep","findActivity","findActivityManifest","_this$findActivity","lessonManifest","lastActivity","modelFor","paramsFor","activity_id","_rawManifest$content$","_rawManifest$content","lessonModel","introOutroType","allManifests","content","hasIntroOutro","include_caper_intro_outro","minigame","minigameVariables","minigame_variables","_await$Promise$all2","fetchManifest","outros","intros","outro","sample","intro","sideBarActivityData","thumb","_createConfigForMinigame","miniGameUrl","urlForMiniGameHighScore","minigames_scores","err","currentActivityForLesson","MapRouteModel","_ref$id","currentPosition","isQuizComplete","isMathseedsFinished","map_id","canPlayMap","canPlayNextMap","_this$user$student$dn","map_number","lesson_number","quiz_complete","avatarJsonUrl","canPlayQuizForMap","canPlayLesson","_params","studentName","hasPrintService","getShouldRefresh","scheduleRefresh","isRefreshable","refreshModel","bestScores","_fetchBestScores","_this$session$state$d","_this$session$state$d2","mentalMinuteScoresUrl","method","headers","Authorization","state","token","bestScoresJson","_parseBestScoresResponse","best_scores","isArray","NoAccessRoute","validProps","playroom","_get","access_type","setupController","controller","playroomAccess","activityType","activity_type","manifestUrl","recommendedTargetRoute","SampleLessonRouteModel","isIframe","_lessonActivityJSON$j","sampleLessonManifestUrl","_error","lessonActivityJSON","hideBackButton","_this$user$student","treehouseItems","urlMaker","Service","open","loadDevMessages","loadErrorMessages","_config$APP","apolloURL","href","typePolicies","fields","read","readField","fieldName","drivingTestsLevelIndex","Student","studentId","hexDna","_client","WeakMap","properties","_apollo$connectToDevT","_classPrivateFieldInitSpec","InMemoryCache","introspectionResult","httpLink","createHttpLink","uri","errorLink","graphQLErrors","networkError","message","retryLink","RetryLink","retryIf","_input","isApolloNetworkErrorRetryable","_classPrivateFieldSet","ApolloClient","link","devtools","connectToDevTools","_classPrivateFieldGet","clearStore","waitFor","getStudentCurrentTaskQueryDocument","useQuery","_this$_assignmentQuer","_assignmentQuery","assignmentTask","fetchTaskIfDue","_refetchAfter","_this$currentTask","isEqual","_transitionToArray","urlParams","_getParamValuesFromRouteInfo","paramNames","paramName","CaperLoaderService","_loader","variant","activityAccent","ContentLoader","contentLoader","caper","manifest","init","certificateHost","base64Url","base64url","TextEncoder","encode","pad","deviceDetection","isNativeMobile","searchParams","_printImage","printImage","resetMyLessonsLessonProgressMutationDocument","resetMyLessonsMapQuizProgressMutationDocument","resetMyLessonsPlacementTestProgressMutationDocument","debugAllowed","_enabled","enable","disable","ApolloError","pathname","StudentItemsFragment","studentItemPlacementUpdateMutationDocument","itemPurchaseMutationDocument","useFragment","_this$_itemsFragment$","_this$_itemsFragment$2","_itemsFragment","StudentItem","bind","_this$_itemsFragment$3","_this$_itemsFragment$4","_this$_itemsFragment$5","_this$_itemsFragment$6","itemCount","_result$data","itemPurchase","JesterLoaderService","jester","lesson_set","MentalMinuteProgressPolicyService","defaultLessonSets","_lessonSets","lessonIdAsNumber","findLessonSetIdByLessonId","_this$findLessonSetBy","findLessonSetByLessonId","nextLessonIdInLessonSet","_lessonSet$lessonIds","previousIndex","every","finalLessonId","currentActivity","isCurrentMap","currentPositionIsQuiz","lessonMap","_config$posthog","projectToken","apiHost","customProperties","application","isInstalled","$set","customer_type","customerType","toLowerCase","_setup","api_host","autocapture","capture_pageleave","capture_pageview","capture_performance","advanced_disable_flags","bootstrap","distinctID","isIdentifiedID","reset","StudentQuestQueryDocument","acknowledgeQuestGoalAlertMutationDocument","_this$_studentQuestQu","_studentQuestQuery","_this$currentQuest","primaryGoal","ShowCompleteAlert","Incomplete","progressCurrent","AuthSessionService","loginUrl","logoutUrl","SoundsService","Howl","src","mute","hidden","onVisibilityChange","volume","howl","muteFlag","Howler","StudentMetricsService","defaultConfig","resolveContext","isGuest","_this$user","sessionId","getSessionIdFromJwt","StudentProgressFragment","progressQueryDocument","_progressQuery","myLessonsCurrentLessonNumber","showPlacementTest","addition_subtraction","currentLessonSet","additionSubtraction","multiplication_division","multiplicationDivision","updated_at","updatedAt","_ENV$APP$timeOnTask","routeTaskIds","timeOnTaskUrl","TimeOnTask","totter","TimeOnTaskClass","syncOptions","syncUrl","getAuthCallback","async","authToken","getTokenForStudent","unwrapOr","_taskIdForRoute","totterTaskId","_this$totter","trackSession","created_at","keepAlive","flattenedRouteTaskIds","_flattenedRouteTaskIds","routeNames","pop","taskIds","flattened","StudentLocaleFragment","StudentQueryDocument","DEFAULT_DNA","head","legs","arms","hat","belt","dress","jacket","mask","necklace","shirt","shoes","wristband","_this$_studentQuery$c","_studentQuery","_this$_studentQuery$c2","_this$_localeFragment","_this$_localeFragment2","_localeFragment","isCanadaAware","setupFeatureFlags","setPerson","userID","subscribeToSessionChanges","context","targetingKey","flags","provider","createOfrepInMemoryProvider","B2CStudent","unsubscribeFromSessionChanges","unsubscribeSessionChangeHandlers","onUnauthenticated","onMismatched","WindowService","_location","item_count","games_played_count","stash","dna_id","item_ids","roster_enabled","obj","depth","camelize","walk","isDate","isRegex","RegExp","reduce","acc","date","diff","getTime","DIFF_YEAR_AGO","_msToAbsolute","DIFF_MONTHS_AGO","DIFF_MONTH_AGO","DIFF_DAYS_AGO","DIFF_DAY_AGO","DIFF_HOURS_AGO","DIFF_HOUR_AGO","DIFF_MINUTES_AGO","DIFF_MINUTE_AGO","DIFF_SECONDS_AGO","DIFF_SECONDS_FROM_NOW","DIFF_MINUTE_FROM_NOW","DIFF_MINUTES_FROM_NOW","DIFF_HOUR_FROM_NOW","DIFF_HOURS_FROM_NOW","DIFF_DAY_FROM_NOW","DIFF_DAYS_FROM_NOW","DIFF_MONTH_FROM_NOW","DIFF_MONTHS_FROM_NOW","DIFF_YEAR_FROM_NOW","abs","ONE_MINUTE","ONE_SECOND","ONE_HOUR","ONE_DAY","ONE_MONTH","ONE_YEAR","ms","unit","converted","minutes","hours","days","months","years","propertyKey","add","DebugContent","DebugContentSymbol","Symbol","for","Reflect","setDebug","unrecoverableErrorCheck","ContentError","errorIsActionable","isErrorLike","cause","isNetworkError","hasStatusCode","statusCode","XMLHttpRequest","ScriptBlockedError","HTTPError","isApolloLinkErrorLike","_error$graphQLErrors","some","hasOwnProperty","dateOfMonth","getDate","dayOfWeek","getDay","month","getMonth","updatedAtNumber","isNaN","updatedAtDates","isMentalMinuteLessonRoute","_routeInfo$find","hiddenPrintContainerId","printContainer","firstChild","remove","hiddenImage","createElement","printPromise","reject","onload","setTimeout","onerror","appendChild","setPosition","_data","_setPosition","detached","getDetached","getRoom","getRoomGroup","getRoomGroupIndex","imageUrl","getImageUrl","audioUrl","getAudioUrl","animationUrl","getAnimationUrl","animationJson","getAnimationJson","footprint","getFootprint","getName","getKind","rg","_ENV$contentLoader$ca","assetHosts","releaseSha","define","metaName","prefix","rawConfig","getAttribute","exports","parse","decodeURIComponent","runningTests","require","create","emberGitSha","awards","driving_tests","dashboard","my_lessons","mental_minute","assetHost"],"sources":["vendor/ember-cli/app-prefix.js","mathseeds-client/app.js","mathseeds-client/components/activity-sidebar.ts","mathseeds-client/components/activity-sidebar/activity-item.ts","mathseeds-client/components/activity-sidebar/activity-list.ts","mathseeds-client/components/activity-sidebar/nav-links.js","mathseeds-client/components/activity-sidebar/student-info.ts","mathseeds-client/components/assignments/assignment-overlay.ts","mathseeds-client/components/content-interactive.ts","mathseeds-client/components/content-interactive/debug.ts","mathseeds-client/components/content-interactives/arcade/arcade-game.js","mathseeds-client/components/content-interactives/arcade/arcade-lobby-game.js","mathseeds-client/components/content-interactives/avatar.js","mathseeds-client/components/content-interactives/awards.js","mathseeds-client/components/content-interactives/driving-tests.js","mathseeds-client/components/content-interactives/driving-tests/game.js","mathseeds-client/components/content-interactives/driving-tests/quiz.js","mathseeds-client/components/content-interactives/finished-mathseeds.js","mathseeds-client/components/content-interactives/lesson-activity-game.js","mathseeds-client/components/content-interactives/lesson-activity-minigame.js","mathseeds-client/components/content-interactives/map.js","mathseeds-client/components/content-interactives/map/quiz.js","mathseeds-client/components/content-interactives/placement-test.js","mathseeds-client/components/content-interactives/playroom.js","mathseeds-client/components/content-interactives/playroom/activity.js","mathseeds-client/components/content-interactives/sample-game.js","mathseeds-client/components/content-interactives/shop-game.js","mathseeds-client/components/content-interactives/treehouse.js","mathseeds-client/components/debug-app/toggle-debug/index.js","mathseeds-client/components/device-rotate-notification.js","mathseeds-client/components/dialog/close.ts","mathseeds-client/components/dialog/overlay.js","mathseeds-client/components/driving-tests/leader-board.js","mathseeds-client/components/error-alert.ts","mathseeds-client/components/full-nav/index.js","mathseeds-client/components/full-nav/nav-item.js","mathseeds-client/components/full-nav/nav-welcome.js","mathseeds-client/components/full-viewport.js","mathseeds-client/components/hidden-print-container.js","mathseeds-client/components/home-button.js","mathseeds-client/components/loading-screen.ts","mathseeds-client/components/quest/notification.ts","mathseeds-client/controllers/application-error.ts","mathseeds-client/controllers/arcade/game.ts","mathseeds-client/controllers/arcade/index.ts","mathseeds-client/controllers/avatar.ts","mathseeds-client/controllers/awards.ts","mathseeds-client/controllers/driving-tests/game.ts","mathseeds-client/controllers/driving-tests/index.ts","mathseeds-client/controllers/driving-tests/leaderboard.ts","mathseeds-client/controllers/driving-tests/quiz.ts","mathseeds-client/controllers/finished-mathseeds.ts","mathseeds-client/controllers/index.ts","mathseeds-client/controllers/lesson/activity/index.ts","mathseeds-client/controllers/lesson/activity/minigame.ts","mathseeds-client/controllers/map/index.ts","mathseeds-client/controllers/map/quiz.ts","mathseeds-client/controllers/mental-minute-sets/lessons.ts","mathseeds-client/controllers/mental-minute-sets/progress.ts","mathseeds-client/controllers/network-error.ts","mathseeds-client/controllers/placement-test.ts","mathseeds-client/controllers/playroom/activity.ts","mathseeds-client/controllers/playroom/index.ts","mathseeds-client/controllers/sample/lesson.js","mathseeds-client/controllers/shop.ts","mathseeds-client/controllers/treehouse.ts","mathseeds-client/controllers/unauthorised.ts","mathseeds-client/deprecation-workflow.js","mathseeds-client/graphql/gql.ts","mathseeds-client/graphql/graphql.ts","mathseeds-client/graphql/index.ts","mathseeds-client/graphql/introspection-result.ts","mathseeds-client/helpers/title-case.ts","mathseeds-client/initializers/ember-cli-mirage.js","mathseeds-client/lesson-data/mental-minute.js","mathseeds-client/modifiers/caper-load-complete.ts","mathseeds-client/modifiers/fit-text.ts","mathseeds-client/modifiers/set-nav-item.ts","mathseeds-client/modifiers/sidebar-activity-list-scroll.ts","mathseeds-client/modifiers/window-resize.ts","mathseeds-client/resources/fragment.ts","mathseeds-client/resources/mutation.ts","mathseeds-client/resources/query.ts","mathseeds-client/rollbar/check-ignore.js","mathseeds-client/router.js","mathseeds-client/routes/application.ts","mathseeds-client/routes/arcade.ts","mathseeds-client/routes/arcade/game.ts","mathseeds-client/routes/arcade/index.ts","mathseeds-client/routes/avatar.ts","mathseeds-client/routes/awards.ts","mathseeds-client/routes/driving-tests/game.ts","mathseeds-client/routes/driving-tests/index.ts","mathseeds-client/routes/driving-tests/leaderboard.ts","mathseeds-client/routes/driving-tests/quiz.ts","mathseeds-client/routes/finished-mathseeds.ts","mathseeds-client/routes/lesson.ts","mathseeds-client/routes/lesson/activity.ts","mathseeds-client/routes/lesson/activity/index.ts","mathseeds-client/routes/lesson/activity/minigame.ts","mathseeds-client/routes/lesson/index.ts","mathseeds-client/routes/map.ts","mathseeds-client/routes/map/index.ts","mathseeds-client/routes/map/next.ts","mathseeds-client/routes/map/quiz.ts","mathseeds-client/routes/mental-minute-sets/lessons.ts","mathseeds-client/routes/mental-minute-sets/lessons/index.ts","mathseeds-client/routes/mental-minute-sets/lessons/lesson.ts","mathseeds-client/routes/mental-minute-sets/progress.ts","mathseeds-client/routes/no-access.ts","mathseeds-client/routes/placement-test.ts","mathseeds-client/routes/playroom.ts","mathseeds-client/routes/playroom/activity.ts","mathseeds-client/routes/playroom/index.ts","mathseeds-client/routes/recommended.ts","mathseeds-client/routes/sample/lesson.js","mathseeds-client/routes/shop.ts","mathseeds-client/routes/treehouse.ts","mathseeds-client/routes/unauthorised.ts","mathseeds-client/services/activity-sidebar.ts","mathseeds-client/services/apollo.ts","mathseeds-client/services/assignments.ts","mathseeds-client/services/caper-loader.ts","mathseeds-client/services/certificate.ts","mathseeds-client/services/debug-mode.ts","mathseeds-client/services/error-handler.ts","mathseeds-client/services/items.ts","mathseeds-client/services/jester-loader.ts","mathseeds-client/services/loading-ui.ts","mathseeds-client/services/mental-minute-progress-policy.js","mathseeds-client/services/my-lessons.ts","mathseeds-client/services/posthog.ts","mathseeds-client/services/quest.ts","mathseeds-client/services/session.ts","mathseeds-client/services/sounds.ts","mathseeds-client/services/student-metrics.ts","mathseeds-client/services/student-progress.ts","mathseeds-client/services/time-on-task.js","mathseeds-client/services/user.ts","mathseeds-client/services/window.ts","mathseeds-client/student/guest-student.js","mathseeds-client/utils/camelize-keys.js","mathseeds-client/utils/date-from-now.ts","mathseeds-client/utils/debug.ts","mathseeds-client/utils/errors.ts","mathseeds-client/utils/format-due-date.ts","mathseeds-client/utils/mental-minute-sets.ts","mathseeds-client/utils/mental-minute-sets/lessons.js","mathseeds-client/utils/mental-minute-sets/lessons/lesson.js","mathseeds-client/utils/print-image.ts","mathseeds-client/utils/progress-tools.ts","mathseeds-client/utils/student-item.ts","mathseeds-client/utils/url-maker.js","vendor/ember-cli/app-config.js","vendor/ember-cli/app-boot.js"],"sourcesContent":["'use strict';\n\n\n","import Application from '@ember/application'\nimport Resolver from 'ember-resolver'\nimport loadInitializers from 'ember-load-initializers'\nimport { startLog } from '@blakeelearning/log'\nimport { checkIgnore } from 'mathseeds-client/rollbar/check-ignore'\nimport config from './config/environment'\nimport structuredClone from '@ungap/structured-clone'\n\n/**\n * This is a polyfill for Error.cause\n * It can be removed once our all browsers support it natively -\n * see https://caniuse.com/mdn-javascript_builtins_error_cause\n */\nimport 'core-js/stable/error'\n\n/**\n * We need a working version of crypto.randomUUID for ember-data when using\n * store.createRecord(). Added in Safari 15.4, so we need a polyfill for now.\n */\nimport { v4 as uuidV4 } from 'uuid'\n\nif (globalThis.crypto && typeof globalThis.crypto.randomUUID !== 'function') {\n  globalThis.crypto.randomUUID = uuidV4\n}\n\nexport default class App extends Application {\n  modulePrefix = config.modulePrefix\n\n  podModulePrefix = config.podModulePrefix\n\n  Resolver = Resolver\n}\n\n// Polyfill global structuredClone if the environment doesn't provide it\nif (!globalThis.structuredClone) {\n  globalThis.structuredClone = structuredClone\n}\n\nstartLog({\n  ...config,\n  rollbar: {\n    ...config.rollbar,\n    checkIgnore,\n    ignoredMessages: [\n      // ignore ScriptBlockedError\n      // ignoredMessages matchers are actually regular expressions\n      // https://docs.rollbar.com/docs/javascript#ignoring-specific-exception-messages\n      /^Script '.*' blocked$/,\n    ],\n  },\n})\nloadInitializers(App, config.modulePrefix)\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<activity-sidebar\\n  class=\\\"activity-sidebar{{if this.isOpen ' open'}}\\\"\\n  data-test-activity-sidebar\\n  ...attributes\\n>\\n\\n  <ActivitySidebar::StudentInfo\\n    @name={{@studentName}}\\n    @avatar={{@avatarUrl}}\\n    @position={{@position}}\\n    @points={{@points}}\\n    @assignmentMode={{@assignmentMode}}\\n  />\\n\\n  {{! replaces nav-links component below for mobile screen sizes via css media query }}\\n  <ActivitySidebar::NavLinks\\n    @homeLink={{@homeLink}}\\n    @lessonsRoute={{@lessonsRoute}}\\n    @lessonsModel={{@lessonsModel}}\\n    @display=\\\"small\\\"\\n    @assignmentMode={{@assignmentMode}}\\n  />\\n\\n  <ActivitySidebar::ActivityList\\n    @activities={{@activities}}\\n    @selectedActivity={{@selectedActivity}}\\n    @changeActivityAction={{this.changeActivity}}\\n  />\\n\\n  <ActivitySidebar::NavLinks\\n    @homeLabel=\\\"Home\\\"\\n    @homeLink={{@homeLink}}\\n    @lessonsRoute={{@lessonsRoute}}\\n    @lessonsModel={{@lessonsModel}}\\n    @lessonsLabel={{@lessonsLabel}}\\n    @display=\\\"large\\\"\\n    @assignmentMode={{@assignmentMode}}\\n  />\\n\\n  {{! Arrow button toggle }}\\n  <div\\n    class=\\\"activity-sidebar-toggle\\\"\\n    data-test-activity-sidebar-toggle\\n    role=\\\"button\\\"\\n    {{on \\\"click\\\" this.toggle}}\\n  >\\n    <FaIcon\\n      @icon=\\\"caret-right\\\"\\n      @size=\\\"4x\\\"\\n      aria-hidden=\\\"false\\\"\\n      aria-label=\\\"Toggle Sidebar\\\"\\n    />\\n  </div>\\n</activity-sidebar>\", {\"contents\":\"<activity-sidebar\\n  class=\\\"activity-sidebar{{if this.isOpen ' open'}}\\\"\\n  data-test-activity-sidebar\\n  ...attributes\\n>\\n\\n  <ActivitySidebar::StudentInfo\\n    @name={{@studentName}}\\n    @avatar={{@avatarUrl}}\\n    @position={{@position}}\\n    @points={{@points}}\\n    @assignmentMode={{@assignmentMode}}\\n  />\\n\\n  {{! replaces nav-links component below for mobile screen sizes via css media query }}\\n  <ActivitySidebar::NavLinks\\n    @homeLink={{@homeLink}}\\n    @lessonsRoute={{@lessonsRoute}}\\n    @lessonsModel={{@lessonsModel}}\\n    @display=\\\"small\\\"\\n    @assignmentMode={{@assignmentMode}}\\n  />\\n\\n  <ActivitySidebar::ActivityList\\n    @activities={{@activities}}\\n    @selectedActivity={{@selectedActivity}}\\n    @changeActivityAction={{this.changeActivity}}\\n  />\\n\\n  <ActivitySidebar::NavLinks\\n    @homeLabel=\\\"Home\\\"\\n    @homeLink={{@homeLink}}\\n    @lessonsRoute={{@lessonsRoute}}\\n    @lessonsModel={{@lessonsModel}}\\n    @lessonsLabel={{@lessonsLabel}}\\n    @display=\\\"large\\\"\\n    @assignmentMode={{@assignmentMode}}\\n  />\\n\\n  {{! Arrow button toggle }}\\n  <div\\n    class=\\\"activity-sidebar-toggle\\\"\\n    data-test-activity-sidebar-toggle\\n    role=\\\"button\\\"\\n    {{on \\\"click\\\" this.toggle}}\\n  >\\n    <FaIcon\\n      @icon=\\\"caret-right\\\"\\n      @size=\\\"4x\\\"\\n      aria-hidden=\\\"false\\\"\\n      aria-label=\\\"Toggle Sidebar\\\"\\n    />\\n  </div>\\n</activity-sidebar>\",\"moduleName\":\"mathseeds-client/components/activity-sidebar.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/activity-sidebar.hbs\"}});\nimport { action } from '@ember/object'\nimport Component from '@glimmer/component'\nimport type { SideBarActivityData } from './activity-sidebar/activity-item'\nimport { service } from '@ember/service'\nimport type ActivitySidebarService from 'mathseeds-client/services/activity-sidebar'\nimport type Owner from '@ember/owner'\n\ninterface Args {\n  studentName: string\n  avatarUrl: string\n  position: string\n  points: number\n\n  homeLink: string\n  lessonsRoute: string\n  lessonsModel: unknown\n  lessonsLabel: string\n  programRoute: string\n  programLabel: string\n  currentMap: number\n\n  activities: SideBarActivityData[]\n  selectedActivity: number\n  changeActivityAction: (id: number) => void\n}\n\nexport default class ActivitySidebar extends Component<Args> {\n  constructor(owner: Owner, args: Args) {\n    super(owner, args)\n    this.activitySidebar.close()\n  }\n  @service declare activitySidebar: ActivitySidebarService\n\n  get isOpen() {\n    return this.activitySidebar.isOpen\n  }\n\n  @action\n  toggle() {\n    this.activitySidebar.toggle()\n  }\n\n  @action\n  changeActivity(id: number) {\n    this.activitySidebar.close()\n    this.args.changeActivityAction(id)\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<li\\n  class=\\\"activity-item {{this.status}}\\\"\\n  data-item=\\\"{{this.id}}\\\"\\n  role=\\\"button\\\"\\n  ...attributes\\n>\\n  <img src={{this.thumbnail}} alt=\\\"activity item\\\" />\\n  <span class=\\\"activity-item-number\\\">{{this.id}}</span>\\n  <span class=\\\"activity-item-status\\\">\\n    <FaIcon @icon={{this.icon}} />\\n  </span>\\n</li>\", {\"contents\":\"<li\\n  class=\\\"activity-item {{this.status}}\\\"\\n  data-item=\\\"{{this.id}}\\\"\\n  role=\\\"button\\\"\\n  ...attributes\\n>\\n  <img src={{this.thumbnail}} alt=\\\"activity item\\\" />\\n  <span class=\\\"activity-item-number\\\">{{this.id}}</span>\\n  <span class=\\\"activity-item-status\\\">\\n    <FaIcon @icon={{this.icon}} />\\n  </span>\\n</li>\",\"moduleName\":\"mathseeds-client/components/activity-sidebar/activity-item.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/activity-sidebar/activity-item.hbs\"}});\nimport Component from '@glimmer/component'\n\ninterface Args {\n  activity: SideBarActivityData\n}\n\nexport interface SideBarActivityData {\n  id: number\n  status: 'unlocked' | 'locked' | 'complete'\n  thumbnail: string | undefined\n}\n\nexport default class ActivityItem extends Component<Args> {\n  get activity() {\n    return this.args.activity\n  }\n\n  get id() {\n    return this.activity.id\n  }\n\n  get status() {\n    return this.activity.status\n  }\n\n  get icon() {\n    if (this.status === 'unlocked') return 'lock-open'\n    if (this.status === 'complete') return 'check'\n    return 'lock'\n  }\n\n  get thumbnail() {\n    return this.activity.thumbnail\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<activity-sidebar-activities\\n  class=\\\"activity-sidebar-activities gradient-border\\\"\\n  data-test-activity-sidebar-activities\\n>\\n  <div\\n    class=\\\"activity-sidebar-arrow up\\\"\\n    data-test-up-arrow\\n    role=\\\"button\\\"\\n    {{on \\\"click\\\" this.moveUp}}\\n  >\\n    <span class=\\\"sr-only\\\">Up</span>\\n  </div>\\n  <div\\n    class=\\\"activity-list-overlay\\\"\\n    {{sidebar-activity-list-scroll this.selectedActivity}}\\n  >\\n    <ul class=\\\"activity-sidebar-info activity-list\\\" data-test-activity-list>\\n      {{#each @activities as |activity|}}\\n        <ActivitySidebar::ActivityItem\\n          @activity={{activity}}\\n          data-test-activity-item={{activity.id}}\\n          {{on \\\"click\\\" (fn this.changeActivity activity)}}\\n        />\\n      {{/each}}\\n    </ul>\\n  </div>\\n  <div\\n    class=\\\"activity-sidebar-arrow down\\\"\\n    data-test-down-arrow\\n    role=\\\"button\\\"\\n    {{on \\\"click\\\" this.moveDown}}\\n  >\\n    <span class=\\\"sr-only\\\">Down</span>\\n  </div>\\n</activity-sidebar-activities>\", {\"contents\":\"<activity-sidebar-activities\\n  class=\\\"activity-sidebar-activities gradient-border\\\"\\n  data-test-activity-sidebar-activities\\n>\\n  <div\\n    class=\\\"activity-sidebar-arrow up\\\"\\n    data-test-up-arrow\\n    role=\\\"button\\\"\\n    {{on \\\"click\\\" this.moveUp}}\\n  >\\n    <span class=\\\"sr-only\\\">Up</span>\\n  </div>\\n  <div\\n    class=\\\"activity-list-overlay\\\"\\n    {{sidebar-activity-list-scroll this.selectedActivity}}\\n  >\\n    <ul class=\\\"activity-sidebar-info activity-list\\\" data-test-activity-list>\\n      {{#each @activities as |activity|}}\\n        <ActivitySidebar::ActivityItem\\n          @activity={{activity}}\\n          data-test-activity-item={{activity.id}}\\n          {{on \\\"click\\\" (fn this.changeActivity activity)}}\\n        />\\n      {{/each}}\\n    </ul>\\n  </div>\\n  <div\\n    class=\\\"activity-sidebar-arrow down\\\"\\n    data-test-down-arrow\\n    role=\\\"button\\\"\\n    {{on \\\"click\\\" this.moveDown}}\\n  >\\n    <span class=\\\"sr-only\\\">Down</span>\\n  </div>\\n</activity-sidebar-activities>\",\"moduleName\":\"mathseeds-client/components/activity-sidebar/activity-list.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/activity-sidebar/activity-list.hbs\"}});\nimport { action } from '@ember/object'\nimport Component from '@glimmer/component'\nimport type { SideBarActivityData } from './activity-item'\n\ninterface Args {\n  selectedActivity: number\n  activities: SideBarActivityData[]\n  changeActivityAction: (id: number) => void\n}\n\nexport default class ActivityList extends Component<Args> {\n  get selectedActivity() {\n    return this.args.selectedActivity\n  }\n\n  @action\n  moveUp() {\n    document.dispatchEvent(new Event('activity-sidebar-up'))\n  }\n  @action\n  moveDown() {\n    document.dispatchEvent(new Event('activity-sidebar-down'))\n  }\n\n  @action\n  changeActivity(activity: SideBarActivityData) {\n    if (activity.status == 'complete') {\n      this.args.changeActivityAction(activity.id)\n    }\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<activity-sidebar-nav\\n  class=\\\"activity-sidebar-nav\\\"\\n  data-test-activity-sidebar-nav\\n>\\n  <ul class=\\\"activity-sidebar-nav-{{@display}}\\\">\\n    {{#unless @assignmentMode}}\\n      <li data-test-activity-lessons-link>\\n        <LinkTo @route={{@lessonsRoute}} @model={{@lessonsModel}}>\\n          <div class=\\\"activity-egg-button lessons\\\"></div>{{@lessonsLabel}}\\n        </LinkTo>\\n      </li>\\n    {{/unless}}\\n    <li data-test-activity-home-link>\\n      <LinkTo @route={{@homeLink}}>\\n        <div class=\\\"activity-egg-button sidebar-home\\\"></div>{{@homeLabel}}\\n      </LinkTo>\\n    </li>\\n  </ul>\\n</activity-sidebar-nav>\", {\"contents\":\"<activity-sidebar-nav\\n  class=\\\"activity-sidebar-nav\\\"\\n  data-test-activity-sidebar-nav\\n>\\n  <ul class=\\\"activity-sidebar-nav-{{@display}}\\\">\\n    {{#unless @assignmentMode}}\\n      <li data-test-activity-lessons-link>\\n        <LinkTo @route={{@lessonsRoute}} @model={{@lessonsModel}}>\\n          <div class=\\\"activity-egg-button lessons\\\"></div>{{@lessonsLabel}}\\n        </LinkTo>\\n      </li>\\n    {{/unless}}\\n    <li data-test-activity-home-link>\\n      <LinkTo @route={{@homeLink}}>\\n        <div class=\\\"activity-egg-button sidebar-home\\\"></div>{{@homeLabel}}\\n      </LinkTo>\\n    </li>\\n  </ul>\\n</activity-sidebar-nav>\",\"moduleName\":\"mathseeds-client/components/activity-sidebar/nav-links.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/activity-sidebar/nav-links.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<activity-sidebar-student\\n  class=\\\"activity-sidebar-student\\\"\\n  data-test-activity-sidebar-student\\n  ...attributes\\n>\\n  <div class=\\\"activity-sidebar-student-wrapper\\\">\\n    <div class=\\\"activity-sidebar-name activity-sidebar-gradient\\\">\\n      <div\\n        class=\\\"activity-sidebar-info\\\"\\n        data-test-activity-sidebar-student-name-container\\n      >\\n        <span\\n          {{fit-text maxSize=25 multiLine=false}}\\n          class=\\\"w-full truncate\\\"\\n          data-test-activity-sidebar-student-name\\n        >{{this.name}}</span>\\n      </div>\\n    </div>\\n    <div class=\\\"activity-sidebar-stats activity-sidebar-gradient\\\">\\n      <div class=\\\"activity-sidebar-info\\\">\\n        <div class=\\\"activity-sidebar-detail activity-sidebar-avatar\\\">\\n          <img\\n            src={{this.avatar}}\\n            alt=\\\"avatar\\\"\\n            data-test-activity-sidebar-student-avatar-image\\n          />\\n        </div>\\n        <div\\n          class=\\\"activity-sidebar-detail activity-sidebar-lesson\\n            {{if @assignmentMode 'assignment'}}\\\"\\n          data-test-activity-sidebar-student-lesson\\n        >\\n          {{#if @assignmentMode}}\\n            <span class=\\\"assignment\\\">Assignment</span>\\n          {{/if}}\\n          <span>Lesson</span>\\n          <span class=\\\"number\\\">\\n            {{this.position}}\\n          </span>\\n        </div>\\n        <div\\n          class=\\\"activity-sidebar-detail activity-sidebar-points acorns\\\"\\n          data-test-activity-sidebar-student-points-container\\n        >\\n          <span\\n            {{fit-text maxSize=20}}\\n            data-test-activity-sidebar-student-points\\n          >\\n            {{this.points}}</span>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n</activity-sidebar-student>\", {\"contents\":\"<activity-sidebar-student\\n  class=\\\"activity-sidebar-student\\\"\\n  data-test-activity-sidebar-student\\n  ...attributes\\n>\\n  <div class=\\\"activity-sidebar-student-wrapper\\\">\\n    <div class=\\\"activity-sidebar-name activity-sidebar-gradient\\\">\\n      <div\\n        class=\\\"activity-sidebar-info\\\"\\n        data-test-activity-sidebar-student-name-container\\n      >\\n        <span\\n          {{fit-text maxSize=25 multiLine=false}}\\n          class=\\\"w-full truncate\\\"\\n          data-test-activity-sidebar-student-name\\n        >{{this.name}}</span>\\n      </div>\\n    </div>\\n    <div class=\\\"activity-sidebar-stats activity-sidebar-gradient\\\">\\n      <div class=\\\"activity-sidebar-info\\\">\\n        <div class=\\\"activity-sidebar-detail activity-sidebar-avatar\\\">\\n          <img\\n            src={{this.avatar}}\\n            alt=\\\"avatar\\\"\\n            data-test-activity-sidebar-student-avatar-image\\n          />\\n        </div>\\n        <div\\n          class=\\\"activity-sidebar-detail activity-sidebar-lesson\\n            {{if @assignmentMode 'assignment'}}\\\"\\n          data-test-activity-sidebar-student-lesson\\n        >\\n          {{#if @assignmentMode}}\\n            <span class=\\\"assignment\\\">Assignment</span>\\n          {{/if}}\\n          <span>Lesson</span>\\n          <span class=\\\"number\\\">\\n            {{this.position}}\\n          </span>\\n        </div>\\n        <div\\n          class=\\\"activity-sidebar-detail activity-sidebar-points acorns\\\"\\n          data-test-activity-sidebar-student-points-container\\n        >\\n          <span\\n            {{fit-text maxSize=20}}\\n            data-test-activity-sidebar-student-points\\n          >\\n            {{this.points}}</span>\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n</activity-sidebar-student>\",\"moduleName\":\"mathseeds-client/components/activity-sidebar/student-info.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/activity-sidebar/student-info.hbs\"}});\nimport Component from '@glimmer/component'\n\ninterface Args {\n  name: string\n  avatar: string\n  position: string\n  points: number\n}\n\nexport default class StudentInfo extends Component<Args> {\n  get name() {\n    return this.args.name\n  }\n\n  get avatar() {\n    return this.args.avatar\n  }\n\n  get position() {\n    return this.args.position\n  }\n\n  get points() {\n    return this.args.points\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div data-test-assignment-overlay class=\\\"assignments-content\\\">\\n  <div data-test-assignment-preview class=\\\"assignments-preview-lesson\\\">\\n    <div class=\\\"panel\\\">\\n      <h4>Assignment</h4>\\n      <div class=\\\"preview\\\">\\n        <img\\n          data-test-assignment-preview-thumbnail\\n          src={{@thumbnailUrl}}\\n          alt=\\\"Assignment Cover\\\"\\n        />\\n      </div>\\n      <div class=\\\"instructions\\\">\\n        <h6 data-test-assignment-preview-title>{{@title}}</h6>\\n        <p data-test-assignment-preview-name>{{@name}}</p>\\n\\n        <h6>What you need to do</h6>\\n        <p data-test-assignment-preview-instruction>{{@instruction}}</p>\\n\\n        <h6>Due</h6>\\n        <p\\n          data-test-assignment-preview-time-remaining\\n          class=\\\"red\\\"\\n        >{{@timeRemaining}}</p>\\n        <p data-test-assignment-preview-due-date>{{@dueDate}}</p>\\n      </div>\\n    </div>\\n  </div>\\n  <div class=\\\"assignment-start\\\">\\n    <h5>You have a new assignment from your teacher.</h5>\\n    <button data-test-start-assignment {{on \\\"click\\\" @startTask}} type=\\\"button\\\">\\n      Start now\\n    </button>\\n    <p>It must be completed before you can move on to other activities.</p>\\n    <button\\n      data-test-logout\\n      class=\\\"logout\\\"\\n      {{on \\\"click\\\" @logout}}\\n      type=\\\"button\\\"\\n    >\\n      Logout\\n    </button>\\n  </div>\\n</div>\", {\"contents\":\"<div data-test-assignment-overlay class=\\\"assignments-content\\\">\\n  <div data-test-assignment-preview class=\\\"assignments-preview-lesson\\\">\\n    <div class=\\\"panel\\\">\\n      <h4>Assignment</h4>\\n      <div class=\\\"preview\\\">\\n        <img\\n          data-test-assignment-preview-thumbnail\\n          src={{@thumbnailUrl}}\\n          alt=\\\"Assignment Cover\\\"\\n        />\\n      </div>\\n      <div class=\\\"instructions\\\">\\n        <h6 data-test-assignment-preview-title>{{@title}}</h6>\\n        <p data-test-assignment-preview-name>{{@name}}</p>\\n\\n        <h6>What you need to do</h6>\\n        <p data-test-assignment-preview-instruction>{{@instruction}}</p>\\n\\n        <h6>Due</h6>\\n        <p\\n          data-test-assignment-preview-time-remaining\\n          class=\\\"red\\\"\\n        >{{@timeRemaining}}</p>\\n        <p data-test-assignment-preview-due-date>{{@dueDate}}</p>\\n      </div>\\n    </div>\\n  </div>\\n  <div class=\\\"assignment-start\\\">\\n    <h5>You have a new assignment from your teacher.</h5>\\n    <button data-test-start-assignment {{on \\\"click\\\" @startTask}} type=\\\"button\\\">\\n      Start now\\n    </button>\\n    <p>It must be completed before you can move on to other activities.</p>\\n    <button\\n      data-test-logout\\n      class=\\\"logout\\\"\\n      {{on \\\"click\\\" @logout}}\\n      type=\\\"button\\\"\\n    >\\n      Logout\\n    </button>\\n  </div>\\n</div>\",\"moduleName\":\"mathseeds-client/components/assignments/assignment-overlay.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/assignments/assignment-overlay.hbs\"}});\nimport Component from '@glimmer/component'\nimport { assert } from '@ember/debug'\nimport type { Task } from 'mathseeds-client/services/assignments'\nimport type Owner from '@ember/owner'\n\ninterface Args {\n  startTask(task: Task): void\n  logout(): void\n  task: Task\n}\n\n/**\n * Component for the assignment overlay on the fullscreen nav that shows up\n * when a student has tasks to perform as part of their assigned work.\n *\n * @example\n *    <Aasignments::AssignmentOverlay\n *      @task={{task}}\n *      @startTask=(action 'startTaskAction')\n *      @logout=(action 'logoutAction')\n *    }}\n */\nexport default class AssignmentsAssignmentOverlayComponent extends Component<Args> {\n  constructor(owner: Owner, args: Args) {\n    super(owner, args)\n    assert(`startTask is required.`, typeof args.startTask === 'function')\n    assert(`logout is required.`, typeof args.logout === 'function')\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<FullViewport>\\n  <div\\n    {{content-interactive\\n      this.loader\\n      externalController=this.externalController\\n      manifests=@manifests\\n      variables=this.variables\\n      onError=this.onError\\n      features=this.featureFlags\\n    }}\\n    data-test-content-loader-interactive\\n    class=\\\"content-interactive__center\\\"\\n  />\\n</FullViewport>\", {\"contents\":\"<FullViewport>\\n  <div\\n    {{content-interactive\\n      this.loader\\n      externalController=this.externalController\\n      manifests=@manifests\\n      variables=this.variables\\n      onError=this.onError\\n      features=this.featureFlags\\n    }}\\n    data-test-content-loader-interactive\\n    class=\\\"content-interactive__center\\\"\\n  />\\n</FullViewport>\",\"moduleName\":\"mathseeds-client/components/content-interactive.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/content-interactive.hbs\"}});\nimport Component from '@glimmer/component'\nimport { inject as service } from '@ember/service'\nimport config from 'mathseeds-client/config/environment'\nimport type { FeatureService } from '@blakeelearning/features'\nimport type { ExternalController, Logger } from '@blakeelearning/messenger'\nimport {\n  createExternalController,\n  isContentSpec,\n  assertContentActions,\n} from '@blakeelearning/messenger'\nimport { assert } from '@ember/debug'\nimport type JesterLoaderService from 'mathseeds-client/services/jester-loader'\nimport { action } from '@ember/object'\nimport type { Log } from '@blakeelearning/log'\nimport type RouterService from '@ember/routing/router-service'\nimport type UserService from 'mathseeds-client/services/user'\n\ninterface ContentInteractiveComponentArgs {\n  contentActions: Record<string, (...args: unknown[]) => unknown>\n  contentSpec: unknown\n  accentOverride?: string\n  manifests: [key: string, url: string][]\n  variables: Record<string, unknown>\n  framework: 'jester' | 'caper'\n}\n\nexport default class ContentInteractive extends Component<ContentInteractiveComponentArgs> {\n  @service declare features: FeatureService\n\n  @service\n  declare jesterLoader: JesterLoaderService\n\n  @service\n  declare log: Log\n\n  @service\n  declare router: RouterService\n\n  @service\n  declare user: UserService\n\n  get loader() {\n    if (this.args.framework === 'jester') {\n      return this.jesterLoader.loader\n    }\n\n    throw new Error(`Unsupported framework: ${this.args.framework}`)\n  }\n\n  get externalController(): ExternalController {\n    const { contentActions, contentSpec } = this.args\n    assert(\n      '@contentSpec must be a valid contentSpec object',\n      isContentSpec(contentSpec),\n    )\n    assertContentActions(contentActions, contentSpec)\n\n    const {\n      APP: { enableMessengerLogging },\n    } = config\n\n    let logger: Logger | undefined\n\n    if (enableMessengerLogging) {\n      logger = (name, event, ...args) => {\n        console.log(\n          '%c[%s :: %s]',\n          'color: lavender; background-color: #836bb6; font-weight: bold',\n          name,\n          event,\n          ...args,\n        )\n      }\n    }\n\n    return createExternalController(contentActions, contentSpec, {\n      // onUnrecoverableError: (error) => {\n      //   this.errorHandler.handleUnrecoverableError(error)\n      // },\n      logger,\n    })\n  }\n\n  get variables() {\n    return {\n      ...this.args.variables,\n      bgmDisabled: this.user.backgroundMusicDisabled,\n    }\n  }\n\n  get featureFlags() {\n    const client = this.features.getClient()\n    const { payload: flagNames } = client.getObjectValue<{ payload: string[] }>(\n      'ms_jester-flag-names',\n      { payload: [] },\n    )\n\n    return [\n      ...new Set([\n        ...flagNames.filter((flagName) =>\n          client.getBooleanValue(flagName, false),\n        ),\n      ]),\n    ]\n  }\n\n  @action\n  onError(error: Error) {\n    this.log.error(error)\n    void this.router.transitionTo('application-error')\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"content-interactive-debug\\\">\\n  {{#each this.debugActions as |action|}}\\n    <form {{on \\\"submit\\\" (fn this.onSubmit action.key)}}>\\n      {{#each action.params as |param|}}\\n        <fieldset>\\n          <label for=\\\"{{action.key}}-{{param.name}}\\\">\\n            {{title-case param.name}}\\n          </label>\\n          {{#if (eq param.type \\\"select\\\")}}\\n            <select\\n              class=\\\"form-select\\\"\\n              id=\\\"{{action.key}}-{{param.name}}\\\"\\n              name={{param.name}}\\n              required\\n            >\\n              <option value=\\\"\\\">Select {{param.name}}</option>\\n              {{#each param.options as |item|}}\\n                <option\\n                  value={{item.value}}\\n                  selected={{eq param.value item.value}}\\n                >\\n                  {{item.label}}\\n                </option>\\n              {{/each}}\\n            </select>\\n          {{else}}\\n            <input\\n              class=\\\"form-input\\\"\\n              id=\\\"{{action.key}}-{{param.name}}\\\"\\n              name={{param.name}}\\n              type={{param.type}}\\n              value={{param.value}}\\n            />\\n          {{/if}}\\n        </fieldset>\\n      {{/each}}\\n\\n      <button data-test-debug-action={{action.key}} type=\\\"submit\\\">\\n        {{title-case action.key}}\\n      </button>\\n    </form>\\n  {{/each}}\\n\\n  {{#each this.debugValues as |value|}}\\n    <figure>\\n      <figcaption>\\n        {{title-case value}}\\n      </figcaption>\\n\\n      <pre\\n        data-test-debug-value={{value}}\\n        data-debug=\\\"{{get this value}}\\\"\\n        title=\\\"Copy to Clipboard\\\"\\n        role=\\\"button\\\"\\n        tabindex=\\\"0\\\"\\n        {{on \\\"click\\\" this.copyToClipboard}}\\n      ></pre>\\n    </figure>\\n  {{/each}}\\n\\n  {{#each this.debugSubscriptions as |subscription|}}\\n    <figure>\\n      <figcaption>\\n        {{title-case subscription.key}}\\n      </figcaption>\\n\\n      <pre\\n        data-test-debug-value={{subscription.key}}\\n        data-debug=\\\"{{subscription.currentValue}}\\\"\\n        title=\\\"Copy to Clipboard\\\"\\n        role=\\\"button\\\"\\n        tabindex=\\\"0\\\"\\n        {{on \\\"click\\\" this.copyToClipboard}}\\n      ></pre>\\n    </figure>\\n  {{/each}}\\n</div>\", {\"contents\":\"<div class=\\\"content-interactive-debug\\\">\\n  {{#each this.debugActions as |action|}}\\n    <form {{on \\\"submit\\\" (fn this.onSubmit action.key)}}>\\n      {{#each action.params as |param|}}\\n        <fieldset>\\n          <label for=\\\"{{action.key}}-{{param.name}}\\\">\\n            {{title-case param.name}}\\n          </label>\\n          {{#if (eq param.type \\\"select\\\")}}\\n            <select\\n              class=\\\"form-select\\\"\\n              id=\\\"{{action.key}}-{{param.name}}\\\"\\n              name={{param.name}}\\n              required\\n            >\\n              <option value=\\\"\\\">Select {{param.name}}</option>\\n              {{#each param.options as |item|}}\\n                <option\\n                  value={{item.value}}\\n                  selected={{eq param.value item.value}}\\n                >\\n                  {{item.label}}\\n                </option>\\n              {{/each}}\\n            </select>\\n          {{else}}\\n            <input\\n              class=\\\"form-input\\\"\\n              id=\\\"{{action.key}}-{{param.name}}\\\"\\n              name={{param.name}}\\n              type={{param.type}}\\n              value={{param.value}}\\n            />\\n          {{/if}}\\n        </fieldset>\\n      {{/each}}\\n\\n      <button data-test-debug-action={{action.key}} type=\\\"submit\\\">\\n        {{title-case action.key}}\\n      </button>\\n    </form>\\n  {{/each}}\\n\\n  {{#each this.debugValues as |value|}}\\n    <figure>\\n      <figcaption>\\n        {{title-case value}}\\n      </figcaption>\\n\\n      <pre\\n        data-test-debug-value={{value}}\\n        data-debug=\\\"{{get this value}}\\\"\\n        title=\\\"Copy to Clipboard\\\"\\n        role=\\\"button\\\"\\n        tabindex=\\\"0\\\"\\n        {{on \\\"click\\\" this.copyToClipboard}}\\n      ></pre>\\n    </figure>\\n  {{/each}}\\n\\n  {{#each this.debugSubscriptions as |subscription|}}\\n    <figure>\\n      <figcaption>\\n        {{title-case subscription.key}}\\n      </figcaption>\\n\\n      <pre\\n        data-test-debug-value={{subscription.key}}\\n        data-debug=\\\"{{subscription.currentValue}}\\\"\\n        title=\\\"Copy to Clipboard\\\"\\n        role=\\\"button\\\"\\n        tabindex=\\\"0\\\"\\n        {{on \\\"click\\\" this.copyToClipboard}}\\n      ></pre>\\n    </figure>\\n  {{/each}}\\n</div>\",\"moduleName\":\"mathseeds-client/components/content-interactive/debug.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/content-interactive/debug.hbs\"}});\nimport { assert } from '@ember/debug'\nimport { action } from '@ember/object'\nimport Component from '@glimmer/component'\nimport { tracked } from '@glimmer/tracking'\nimport type { Subscribe } from '@blakeelearning/messenger'\nimport { getDebug } from 'mathseeds-client/utils/debug'\nimport type { DebugActionParam } from 'mathseeds-client/utils/debug'\nimport type Owner from '@ember/owner'\n\ninterface Args {\n  contentActions?: Record<string | symbol, unknown>\n}\n\ntype DebugParam = DebugActionParam & {\n  /**\n   * The name of the input field\n   */\n  name: string\n}\n\ninterface DebugAction {\n  key: string | symbol\n  params: DebugParam[]\n}\n\nclass DebugObservable {\n  @tracked currentValue?: string\n\n  key: string | symbol\n\n  // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n  unsubscribe?: (() => void) | void\n\n  constructor(key: string | symbol, subscribe: Subscribe) {\n    this.key = key\n\n    this.unsubscribe = subscribe({\n      next: (value) => {\n        this.currentValue = JSON.stringify(value.data, null, 2)\n      },\n      error(error) {\n        console.error(error)\n      },\n      complete() {\n        console.debug('done')\n      },\n    })\n  }\n}\n\n/**\n * Displays values and actions from the DebugContent in a debug menu\n *\n * Displays values as JSON strings\n *\n * Displays actions a form, with action params as input fields\n */\nexport default class ContentInteractiveDebugComponent extends Component<Args> {\n  debugValues: (string | symbol)[] = []\n\n  debugActions: DebugAction[] = []\n\n  debugSubscriptions: DebugObservable[] = []\n\n  constructor(owner: Owner, args: Args) {\n    super(owner, args)\n\n    const debug = getDebug(this.contentActions)\n\n    for (const [key, actionParams] of debug.actions) {\n      const params = []\n\n      if (typeof actionParams !== 'undefined') {\n        for (const [name, param] of Object.entries(actionParams)) {\n          params.push({ name, ...param })\n        }\n      }\n\n      this.debugActions.push({ key, params })\n    }\n\n    for (const key of debug.values) {\n      Object.defineProperty(this, key, {\n        get() {\n          // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n          return JSON.stringify(this.contentActions[key], null, 2)\n        },\n      })\n\n      this.debugValues.push(key)\n    }\n\n    for (const key of debug.subscriptions) {\n      const subscribe = this.contentActions[key]\n\n      if (typeof subscribe === 'function') {\n        const observable = new DebugObservable(key, subscribe as Subscribe)\n        this.debugSubscriptions.push(observable)\n      }\n    }\n  }\n\n  get contentActions() {\n    assert(\n      'contentActions must be defined',\n      typeof this.args.contentActions !== 'undefined',\n    )\n\n    return this.args.contentActions\n  }\n\n  @action\n  copyToClipboard(event: Event) {\n    if (\n      event.target instanceof HTMLElement &&\n      typeof event.target.dataset['debug'] === 'string'\n    ) {\n      let debugData = event.target.dataset['debug']\n      if (debugData.startsWith(`\"`) && debugData.endsWith(`\"`)) {\n        debugData = debugData.slice(1, -1)\n      }\n      void navigator.clipboard.writeText(debugData)\n    }\n  }\n\n  @action\n  onSubmit(actionKey: string, event: Event) {\n    event.preventDefault()\n\n    const debug = getDebug(this.contentActions)\n    const debugAction = this.contentActions[actionKey]\n    const debugParams = debug.actions.get(actionKey) ?? []\n\n    assert('debug action must be a function', typeof debugAction === 'function')\n\n    if (event.currentTarget instanceof HTMLFormElement) {\n      const params = new Map()\n      const formData = new FormData(event.currentTarget)\n\n      for (const [key, paramType] of Object.entries(debugParams)) {\n        let value: unknown = formData.get(key)\n\n        if (\n          paramType.type === 'select' &&\n          typeof value === 'string' &&\n          paramType.values\n        ) {\n          value = paramType.values[value]\n        }\n\n        if (paramType.type === 'number') {\n          params.set(key, Number(value))\n        } else {\n          params.set(key, value)\n        }\n      }\n\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n      debugAction(Object.fromEntries(params))\n    }\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\", {\"contents\":\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\",\"moduleName\":\"mathseeds-client/components/content-interactives/arcade/arcade-game.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/content-interactives/arcade/arcade-game.hbs\"}});\nimport { action } from '@ember/object'\nimport Component from '@glimmer/component'\n\n/**\n * @param interactiveConfig is a config object loaded via the interactive-loader service\n */\n\nexport default class ArcadeGame extends Component {\n  @action\n  saveScore(...args) {\n    this.args.saveScoreAction(...args)\n  }\n\n  @action\n  goBackToArcade() {\n    this.args.goBackToArcadeAction()\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\", {\"contents\":\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\",\"moduleName\":\"mathseeds-client/components/content-interactives/arcade/arcade-lobby-game.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/content-interactives/arcade/arcade-lobby-game.hbs\"}});\nimport { action } from '@ember/object'\nimport Component from '@glimmer/component'\n\n/**\n * @param interactiveConfig is a config object loaded via the interactive-loader service\n */\n\nexport default class ArcadeLobbyGame extends Component {\n  @action\n  playGame(...args) {\n    this.args.playGameAction(...args)\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\", {\"contents\":\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\",\"moduleName\":\"mathseeds-client/components/content-interactives/avatar.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/content-interactives/avatar.hbs\"}});\nimport { action } from '@ember/object'\nimport Component from '@glimmer/component'\n\nexport default class Avatar extends Component {\n  @action\n  async saveDNA(dna, thumbnail) {\n    await this.args.saveDNAAction(dna, thumbnail)\n    this.interactive.callInteractionMethod('dnaSaved')\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\", {\"contents\":\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\",\"moduleName\":\"mathseeds-client/components/content-interactives/awards.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/content-interactives/awards.hbs\"}});\nimport Component from '@glimmer/component'\n\nexport default class Awards extends Component {\n  async print(args) {\n    await this.args.printAction(args)\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\", {\"contents\":\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\",\"moduleName\":\"mathseeds-client/components/content-interactives/driving-tests.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/content-interactives/driving-tests.hbs\"}});\nimport { action } from '@ember/object'\nimport Component from '@glimmer/component'\n\n/**\n * @param interactiveConfig is a config object loaded via the interactive-loader service\n */\n\nexport default class DrivingTests extends Component {\n  @action\n  showQuiz(...args) {\n    this.args.showQuizAction(...args)\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\", {\"contents\":\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\",\"moduleName\":\"mathseeds-client/components/content-interactives/driving-tests/game.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/content-interactives/driving-tests/game.hbs\"}});\nimport { action } from '@ember/object'\nimport Component from '@glimmer/component'\n\n/**\n * @param interactiveConfig is a config object loaded via the interactive-loader service\n */\n\nexport default class Game extends Component {\n  @action\n  gameStarted() {\n    this.args.gameStartedAction()\n  }\n\n  @action\n  saveScore(score) {\n    this.args.saveScoreAction(score)\n  }\n\n  @action\n  showLeaderboard() {\n    this.args.showLeaderboardAction()\n  }\n\n  @action\n  showLobby() {\n    this.args.showLobbyAction()\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\", {\"contents\":\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\",\"moduleName\":\"mathseeds-client/components/content-interactives/driving-tests/quiz.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/content-interactives/driving-tests/quiz.hbs\"}});\nimport { action } from '@ember/object'\nimport Component from '@glimmer/component'\n\n/**\n * @param interactiveConfig is a config object loaded via the interactive-loader service\n */\n\nexport default class Quiz extends Component {\n  @action\n  showLobby() {\n    this.args.showLobbyAction()\n  }\n\n  @action\n  completeQuiz(results) {\n    return this.args.completeQuizAction(results).then(() => {\n      if (results.passed) {\n        return this.interactive.callInteractionMethod('quizResultsSaved')\n      }\n    })\n  }\n\n  @action\n  showRace() {\n    this.args.playGameAction()\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\", {\"contents\":\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\",\"moduleName\":\"mathseeds-client/components/content-interactives/finished-mathseeds.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/content-interactives/finished-mathseeds.hbs\"}});\nimport { action } from '@ember/object'\nimport Component from '@glimmer/component'\n\nexport default class FinishedMathseeds extends Component {\n  @action\n  goToPreviousMap() {\n    return this.args.goToPreviousMapAction()\n  }\n\n  @action\n  goToDrivingTests() {\n    return this.args.goToDrivingTestsAction()\n  }\n\n  @action\n  goToArcade() {\n    return this.args.goToArcadeAction()\n  }\n\n  @action\n  goToMentalMinute() {\n    return this.args.goToMentalMinuteAction()\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"content-interactive\\\" ...attributes>\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\", {\"contents\":\"<div class=\\\"content-interactive\\\" ...attributes>\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\",\"moduleName\":\"mathseeds-client/components/content-interactives/lesson-activity-game.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/content-interactives/lesson-activity-game.hbs\"}});\nimport { action } from '@ember/object'\nimport Component from '@glimmer/component'\n\nexport default class LessonActivityGame extends Component {\n  @action\n  saveProgress(rewardStudent) {\n    this.args.saveProgressAction(rewardStudent).then(() => {\n      this.interactive.callInteractionMethod('nextable')\n    })\n  }\n\n  @action\n  async saveQuizProgress(...args) {\n    const showButtons = await this.args.saveQuizProgressAction(...args)\n\n    this.interactive.callInteractionMethod('showButtons', showButtons)\n  }\n\n  @action\n  goToMinigame(...args) {\n    this.args.goToMinigameAction(...args)\n  }\n\n  @action\n  next() {\n    this.args.nextAction()\n  }\n\n  @action\n  playAgain() {\n    this.args.resetNextable()\n  }\n\n  // No-op - prevent an exception from being thrown.\n  @action\n  goBack() {}\n\n  @action\n  incrementScore(amount = 1) {\n    this.args.incrementScoreAction(amount)\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\", {\"contents\":\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\",\"moduleName\":\"mathseeds-client/components/content-interactives/lesson-activity-minigame.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/content-interactives/lesson-activity-minigame.hbs\"}});\nimport { action } from '@ember/object'\nimport Component from '@glimmer/component'\n\nexport default class LessonActivityMinigame extends Component {\n  @action\n  saveScore({ score }) {\n    this.args.saveScoreAction({ score })\n  }\n\n  @action\n  next() {\n    this.args.nextAction()\n  }\n\n  @action\n  goToMap() {\n    this.args.goToMapAction()\n  }\n\n  @action\n  goBack() {\n    this.args.goBackAction()\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\", {\"contents\":\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\",\"moduleName\":\"mathseeds-client/components/content-interactives/map.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/content-interactives/map.hbs\"}});\nimport { action } from '@ember/object'\nimport Component from '@glimmer/component'\n\n/**\n * @param interactiveConfig - config object loaded via the interactive-loader service\n */\n\nexport default class Map extends Component {\n  @action\n  playLesson(stepIndex) {\n    this.args.playLessonAction(stepIndex)\n  }\n\n  @action\n  playQuiz() {\n    this.args.playQuizAction()\n  }\n\n  @action\n  previousMap() {\n    this.args.previousMapAction()\n  }\n\n  @action\n  nextMap() {\n    this.args.nextMapAction()\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\", {\"contents\":\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\",\"moduleName\":\"mathseeds-client/components/content-interactives/map/quiz.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/content-interactives/map/quiz.hbs\"}});\nimport { action } from '@ember/object'\nimport Component from '@glimmer/component'\n\nexport default class Quiz extends Component {\n  constructor(owner, args) {\n    super(owner, args)\n\n    this.args.onInit?.(this)\n  }\n\n  recentQuizCompletePromise = null\n\n  @action\n  quizCompleted(results) {\n    const promise = this.args.quizCompletedAction(results)\n    this.recentQuizCompletePromise = promise\n  }\n\n  @action\n  incrementScore(amount) {\n    this.args.incrementScoreAction(amount)\n  }\n\n  @action\n  next() {\n    this.recentQuizCompletePromise.then(() => {\n      this.args.nextMapAction()\n    })\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\", {\"contents\":\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\",\"moduleName\":\"mathseeds-client/components/content-interactives/placement-test.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/content-interactives/placement-test.hbs\"}});\nimport { action } from '@ember/object'\nimport Component from '@glimmer/component'\n\n// eslint-disable-next-line ember/no-test-import-export\nexport default class PlacementTest extends Component {\n  @action\n  async placementTestComplete(...args) {\n    const response = await this.args.completeTestAction(...args)\n    // if nextable is set to true go to the next step, as required by the interactive\n    this.interactive.callInteractionMethod('nextable', response)\n  }\n\n  @action\n  async finishTest() {\n    await this.args.finishTestAction()\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\", {\"contents\":\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\",\"moduleName\":\"mathseeds-client/components/content-interactives/playroom.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/content-interactives/playroom.hbs\"}});\nimport { action } from '@ember/object'\nimport Component from '@glimmer/component'\n\n/**\n * @param interactiveConfig is a config object loaded via the interactive-loader service\n */\n\nexport default class Playroom extends Component {\n  constructor(owner, args) {\n    super(owner, args)\n\n    this.args.onInit?.(this)\n  }\n\n  playActivity(...args) {\n    this.args.playActivityAction(...args)\n  }\n\n  @action\n  playSubGame(name) {\n    this.playActivity(name, 'activity')\n  }\n\n  @action\n  playBook(name) {\n    this.playActivity(name, 'book')\n  }\n\n  @action\n  playVideo(name) {\n    this.playActivity(name, 'video')\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"content-interactive\\\" ...attributes>\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\", {\"contents\":\"<div class=\\\"content-interactive\\\" ...attributes>\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\",\"moduleName\":\"mathseeds-client/components/content-interactives/playroom/activity.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/content-interactives/playroom/activity.hbs\"}});\nimport { action } from '@ember/object'\nimport Component from '@glimmer/component'\n\nexport default class Activity extends Component {\n  @action\n  goBack() {\n    this.args.goBackAction()\n  }\n\n  @action\n  saveProgress() {\n    // The playroom doesn't have progress to save, but we reuse the same book\n    // activity that lessons use and that does have progress to save. We don't\n    // have to wait for an ajax request to complete because we don't have\n    // progress to save. This means we can immediately call the nextable\n    // method.\n    this.interactive.callInteractionMethod('nextable')\n  }\n\n  @action\n  next() {\n    return this.args.goBackAction()\n  }\n\n  @action\n  incrementScore() {\n    // No Op\n    // Used in book reader as part of lessons\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"content-interactive content-interactives-sample-game\\\">\\n  {{#unless @hideBackButton}}\\n    <input\\n      class=\\\"back-arrow-button\\\"\\n      aria-label=\\\"Go back\\\"\\n      type=\\\"button\\\"\\n      onclick={{this.goBack}}\\n    />\\n  {{/unless}}\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\", {\"contents\":\"<div class=\\\"content-interactive content-interactives-sample-game\\\">\\n  {{#unless @hideBackButton}}\\n    <input\\n      class=\\\"back-arrow-button\\\"\\n      aria-label=\\\"Go back\\\"\\n      type=\\\"button\\\"\\n      onclick={{this.goBack}}\\n    />\\n  {{/unless}}\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\",\"moduleName\":\"mathseeds-client/components/content-interactives/sample-game.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/content-interactives/sample-game.hbs\"}});\nimport { action } from '@ember/object'\nimport Component from '@glimmer/component'\n\nexport default class SampleGame extends Component {\n  @action\n  next() {\n    this.args.nextAction()\n  }\n\n  @action\n  saveProgress() {\n    this.args.saveProgressAction()\n  }\n\n  @action\n  playAgain() {\n    this.args.resetNextable()\n  }\n\n  @action\n  goBack() {\n    window.history.back()\n  }\n\n  @action\n  hideLoadingScreen() {\n    this.args.hideLoadingScreenAction()\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\", {\"contents\":\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\",\"moduleName\":\"mathseeds-client/components/content-interactives/shop-game.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/content-interactives/shop-game.hbs\"}});\nimport { action } from '@ember/object'\nimport Component from '@glimmer/component'\n\nexport default class ShopGame extends Component {\n  constructor(owner, args) {\n    super(owner, args)\n\n    this.args.onInit?.(this)\n  }\n\n  @action\n  purchaseItem(item) {\n    this.args.purchaseAction(item).then((result) => {\n      const { purchasedItem, insufficientFunds } = result\n      if (insufficientFunds) {\n        // 'this.interactive' is set from content-loader onto this external controller\n        return this.interactive.callInteractionMethod('insufficientFunds')\n      }\n      if (purchasedItem) {\n        return this.interactive.callInteractionMethod(\n          'purchasedItem',\n          purchasedItem,\n        )\n      }\n    })\n  }\n\n  // Content doesn't know when to show a success or fail message for shop purchases\n  // FE needs to send a `callInteractionMethod` so that content can send the response\n  // didUpdateAttrs() {\n  //   super.didUpdateAttrs()\n  //   const { purchasedItem } = this\n  //   const { insufficientFunds } = this\n  //   if (insufficientFunds) {\n  //     // 'this.interactive' is set from content-loader onto this external controller\n  //     return this.interactive.callInteractionMethod('insufficientFunds')\n  //   }t\n  //   if (purchasedItem) {\n  //     return this.interactive.callInteractionMethod('purchasedItem', purchasedItem)\n  //   }\n  // }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\", {\"contents\":\"<div class=\\\"content-interactive\\\">\\n  <ContentLoader::Interactive\\n    @interactiveConfig={{@interactiveConfig}}\\n    @externalController={{this}}\\n  />\\n</div>\",\"moduleName\":\"mathseeds-client/components/content-interactives/treehouse.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/content-interactives/treehouse.hbs\"}});\nimport { action } from '@ember/object'\nimport Component from '@glimmer/component'\n\n/**\n * @param interactiveConfig is a config object loaded via the interactive-loader service\n */\nexport default class Treehouse extends Component {\n  constructor(owner, args) {\n    super(owner, args)\n    this.args.onInit?.(this)\n  }\n\n  @action\n  goToChangeRoom() {\n    this.args.goToChangeRoomAction()\n  }\n\n  @action\n  goToRewardsRoom() {\n    this.args.goToRewardsRoomAction()\n  }\n\n  @action\n  async setItemPosition(code, room, roomGroup, roomGroupIndex) {\n    await this.args.setItemPositionAction(code, room, roomGroup, roomGroupIndex)\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if this.debugMode.debugAllowed}}\\n  <div data-test-toggle-debug class=\\\"debug-wrapper\\\">\\n    <button\\n      data-test-toggle-debug-button\\n      class=\\\"debug\\\"\\n      type=\\\"button\\\"\\n      {{on \\\"click\\\" this.toggleDebug}}\\n    >\\n      {{#if this.debugMode.enabled}}\\n        Disable Debug Mode\\n      {{else}}\\n        Enable Debug Mode\\n      {{/if}}\\n    </button>\\n    {{#if this.debugMode.enabled}}\\n      {{yield}}\\n    {{/if}}\\n  </div>\\n{{/if}}\", {\"contents\":\"{{#if this.debugMode.debugAllowed}}\\n  <div data-test-toggle-debug class=\\\"debug-wrapper\\\">\\n    <button\\n      data-test-toggle-debug-button\\n      class=\\\"debug\\\"\\n      type=\\\"button\\\"\\n      {{on \\\"click\\\" this.toggleDebug}}\\n    >\\n      {{#if this.debugMode.enabled}}\\n        Disable Debug Mode\\n      {{else}}\\n        Enable Debug Mode\\n      {{/if}}\\n    </button>\\n    {{#if this.debugMode.enabled}}\\n      {{yield}}\\n    {{/if}}\\n  </div>\\n{{/if}}\",\"moduleName\":\"mathseeds-client/components/debug-app/toggle-debug/index.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/debug-app/toggle-debug/index.hbs\"}});\nimport { action } from '@ember/object'\nimport { inject as service } from '@ember/service'\nimport Component from '@glimmer/component'\n\n/**\n * Provide a button to toggle debug mode globally\n *\n * @module DebugAppToggleDebugComponent\n */\nexport default class ToggleDebug extends Component {\n  @service\n  debugMode\n\n  @action\n  toggleDebug() {\n    this.debugMode.toggle()\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"device-rotate-notification-container\\\" data-test-rotate-notification>\\n  <img\\n    src={{asset-url \\\"/assets/rotate_white.png\\\"}}\\n    alt=\\\"Please rotate your device\\\"\\n    class=\\\"rotate-icon\\\"\\n  />\\n  <h2>Please rotate your device.</h2>\\n</div>\", {\"contents\":\"<div class=\\\"device-rotate-notification-container\\\" data-test-rotate-notification>\\n  <img\\n    src={{asset-url \\\"/assets/rotate_white.png\\\"}}\\n    alt=\\\"Please rotate your device\\\"\\n    class=\\\"rotate-icon\\\"\\n  />\\n  <h2>Please rotate your device.</h2>\\n</div>\",\"moduleName\":\"mathseeds-client/components/device-rotate-notification.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/device-rotate-notification.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<button type=\\\"button\\\" aria-label=\\\"Close\\\" {{on \\\"click\\\" @onClick}} ...attributes>\\n  {{#if (has-block)}}\\n    {{yield}}\\n  {{else}}\\n    <FaIcon @icon=\\\"xmark\\\" />\\n  {{/if}}\\n</button>\", {\"contents\":\"<button type=\\\"button\\\" aria-label=\\\"Close\\\" {{on \\\"click\\\" @onClick}} ...attributes>\\n  {{#if (has-block)}}\\n    {{yield}}\\n  {{else}}\\n    <FaIcon @icon=\\\"xmark\\\" />\\n  {{/if}}\\n</button>\",\"moduleName\":\"mathseeds-client/components/dialog/close.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/dialog/close.hbs\"}});\nimport Component from '@glimmer/component'\n\ninterface DialogCloseSignature {\n  Args: {\n    onClick?: (event: MouseEvent) => void\n  }\n  Element: HTMLButtonElement\n}\n\n// eslint-disable-next-line ember/no-empty-glimmer-component-classes\nexport default class DialogCloseComponent extends Component<DialogCloseSignature> {}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<FullViewport tabindex=\\\"-1\\\" class=\\\"dialog-overlay\\\" ...attributes>\\n  {{yield}}\\n</FullViewport>\", {\"contents\":\"<FullViewport tabindex=\\\"-1\\\" class=\\\"dialog-overlay\\\" ...attributes>\\n  {{yield}}\\n</FullViewport>\",\"moduleName\":\"mathseeds-client/components/dialog/overlay.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/dialog/overlay.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"driving-tests-leader-board\\\">\\n  <div class=\\\"panel\\\">\\n    <h1>Driving Tests Leaderboard</h1>\\n\\n    <div class=\\\"content\\\">\\n      <div class=\\\"board\\\">\\n        {{#each @highScores as |highScore|}}\\n          <div class=\\\"row\\\">\\n            <div class=\\\"rank\\\"></div>\\n            <div class=\\\"name\\\">{{highScore.student_name}}</div>\\n            <div class=\\\"score\\\">{{highScore.score}}</div>\\n          </div>\\n        {{/each}}\\n      </div>\\n\\n      <aside>\\n        <div class=\\\"highest-score\\\">\\n          Your highest score is:\\n          {{@studentHighScore.score}}\\n        </div>\\n\\n        <button\\n          type=\\\"button\\\"\\n          class=\\\"return-to-quiz\\\"\\n          {{on \\\"click\\\" this.continue}}\\n        >Return to quiz</button>\\n      </aside>\\n    </div>\\n  </div>\\n</div>\", {\"contents\":\"<div class=\\\"driving-tests-leader-board\\\">\\n  <div class=\\\"panel\\\">\\n    <h1>Driving Tests Leaderboard</h1>\\n\\n    <div class=\\\"content\\\">\\n      <div class=\\\"board\\\">\\n        {{#each @highScores as |highScore|}}\\n          <div class=\\\"row\\\">\\n            <div class=\\\"rank\\\"></div>\\n            <div class=\\\"name\\\">{{highScore.student_name}}</div>\\n            <div class=\\\"score\\\">{{highScore.score}}</div>\\n          </div>\\n        {{/each}}\\n      </div>\\n\\n      <aside>\\n        <div class=\\\"highest-score\\\">\\n          Your highest score is:\\n          {{@studentHighScore.score}}\\n        </div>\\n\\n        <button\\n          type=\\\"button\\\"\\n          class=\\\"return-to-quiz\\\"\\n          {{on \\\"click\\\" this.continue}}\\n        >Return to quiz</button>\\n      </aside>\\n    </div>\\n  </div>\\n</div>\",\"moduleName\":\"mathseeds-client/components/driving-tests/leader-board.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/driving-tests/leader-board.hbs\"}});\nimport Component from '@glimmer/component'\nimport { action } from '@ember/object'\n\nexport default class LeaderBoard extends Component {\n  @action\n  continue() {\n    this.args.continue()\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<main ...attributes class=\\\"error-alert\\\" data-test-error-alert>\\n  <image class=\\\"error-alert__logo\\\" alt=\\\"Mathseeds logo\\\"></image>\\n  <h1 class=\\\"error-alert__heading\\\" data-test-error-alert-heading>Uh-oh!</h1>\\n  <h2 class=\\\"error-alert__subheading\\\" data-test-error-alert-subheading>\\n    Something has gone wrong.\\n  </h2>\\n  <button\\n    type=\\\"button\\\"\\n    class=\\\"error-alert__action-button\\\"\\n    data-test-error-alert-action-button\\n    {{on \\\"click\\\" this.buttonAction}}\\n  >\\n    <div class=\\\"error-alert__action-inner\\\">\\n      <div class=\\\"error-alert__action-content\\\">\\n        {{#if this.showReloadIcon}}\\n          <div class=\\\"error-alert__reload-icon\\\"></div>\\n        {{/if}}\\n        <span class=\\\"error-alert__action-text\\\">{{@buttonText}}</span>\\n      </div>\\n    </div>\\n  </button>\\n  {{#if this.errorMessage}}\\n    <button\\n      data-test-toggle-error-button\\n      class=\\\"error-alert__toggle-error-button\\\"\\n      type=\\\"button\\\"\\n      {{on \\\"click\\\" this.toggleErrorMessage}}\\n    >\\n      {{#if this.showErrorMessage}}\\n        Hide Error Message\\n      {{else}}\\n        Show Error Message\\n      {{/if}}\\n    </button>\\n    {{#if this.showErrorMessage}}\\n      <p class=\\\"error-alert__message\\\" data-test-error-message>\\n        {{this.errorMessage}}\\n      </p>\\n    {{/if}}\\n  {{/if}}\\n</main>\", {\"contents\":\"<main ...attributes class=\\\"error-alert\\\" data-test-error-alert>\\n  <image class=\\\"error-alert__logo\\\" alt=\\\"Mathseeds logo\\\"></image>\\n  <h1 class=\\\"error-alert__heading\\\" data-test-error-alert-heading>Uh-oh!</h1>\\n  <h2 class=\\\"error-alert__subheading\\\" data-test-error-alert-subheading>\\n    Something has gone wrong.\\n  </h2>\\n  <button\\n    type=\\\"button\\\"\\n    class=\\\"error-alert__action-button\\\"\\n    data-test-error-alert-action-button\\n    {{on \\\"click\\\" this.buttonAction}}\\n  >\\n    <div class=\\\"error-alert__action-inner\\\">\\n      <div class=\\\"error-alert__action-content\\\">\\n        {{#if this.showReloadIcon}}\\n          <div class=\\\"error-alert__reload-icon\\\"></div>\\n        {{/if}}\\n        <span class=\\\"error-alert__action-text\\\">{{@buttonText}}</span>\\n      </div>\\n    </div>\\n  </button>\\n  {{#if this.errorMessage}}\\n    <button\\n      data-test-toggle-error-button\\n      class=\\\"error-alert__toggle-error-button\\\"\\n      type=\\\"button\\\"\\n      {{on \\\"click\\\" this.toggleErrorMessage}}\\n    >\\n      {{#if this.showErrorMessage}}\\n        Hide Error Message\\n      {{else}}\\n        Show Error Message\\n      {{/if}}\\n    </button>\\n    {{#if this.showErrorMessage}}\\n      <p class=\\\"error-alert__message\\\" data-test-error-message>\\n        {{this.errorMessage}}\\n      </p>\\n    {{/if}}\\n  {{/if}}\\n</main>\",\"moduleName\":\"mathseeds-client/components/error-alert.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/error-alert.hbs\"}});\nimport { action } from '@ember/object'\nimport Component from '@glimmer/component'\nimport { tracked } from '@glimmer/tracking'\n\ninterface ErrorAlertArgs {\n  buttonText: 'Login' | 'Reload' | 'Home'\n  buttonAction: () => void\n  errorMessage?: string\n}\n\nexport default class ErrorAlert extends Component<ErrorAlertArgs> {\n  @tracked showErrorMessage = false\n\n  get showReloadIcon() {\n    return this.args.buttonText === 'Reload'\n  }\n\n  get errorMessage() {\n    return this.args.errorMessage\n  }\n\n  @action\n  buttonAction(e: Event) {\n    e.preventDefault()\n    this.args.buttonAction()\n  }\n\n  @action\n  toggleErrorMessage() {\n    this.showErrorMessage = !this.showErrorMessage\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<full-nav\\n  class=\\\"full-nav-container\\\"\\n  {{window-resize this.resize}}\\n  ...attributes\\n>\\n  {{#if @bgSrc}}\\n    <div class=\\\"outer nav-wrap\\\" data-fullscreen-wrapper>\\n      <div\\n        class=\\\"background\\\"\\n        style={{this.backgroundImage}}\\n        data-background-image\\n      >\\n        <div class=\\\"nav-item-list\\\" data-nav-items-list data-test-nav-items-list>\\n          {{yield}}\\n        </div>\\n      </div>\\n    </div>\\n  {{else}}\\n    <div class=\\\"nav-item-list\\\" data-nav-items-list data-test-nav-items-list>\\n      {{yield}}\\n    </div>\\n  {{/if}}\\n</full-nav>\", {\"contents\":\"<full-nav\\n  class=\\\"full-nav-container\\\"\\n  {{window-resize this.resize}}\\n  ...attributes\\n>\\n  {{#if @bgSrc}}\\n    <div class=\\\"outer nav-wrap\\\" data-fullscreen-wrapper>\\n      <div\\n        class=\\\"background\\\"\\n        style={{this.backgroundImage}}\\n        data-background-image\\n      >\\n        <div class=\\\"nav-item-list\\\" data-nav-items-list data-test-nav-items-list>\\n          {{yield}}\\n        </div>\\n      </div>\\n    </div>\\n  {{else}}\\n    <div class=\\\"nav-item-list\\\" data-nav-items-list data-test-nav-items-list>\\n      {{yield}}\\n    </div>\\n  {{/if}}\\n</full-nav>\",\"moduleName\":\"mathseeds-client/components/full-nav/index.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/full-nav/index.hbs\"}});\nimport { htmlSafe } from '@ember/template'\nimport { inject as service } from '@ember/service'\nimport Component from '@glimmer/component'\n\nfunction isAndroid() {\n  return navigator.userAgent.match(/(Android)/)\n}\n\n/**\n * full-nav is the wrapping component. It doesn't take any properties, but must\n * surround any full-nav/nav-avatar, full-nav/nav-item, full-nav/nav-avatar and\n * full-nav/nav-text.\n *\n * @class full-nav\n * @extends Ember.Component\n *\n * @property {string} bgSrc - `src` attribute of the `img` tag that will be used\n * as the background image.\n */\nexport default class FullNav extends Component {\n  @service sounds\n\n  baseWidth = 1024\n\n  baseHeight = 768\n\n  get backgroundImage() {\n    const backgroundSrc = this.args.bgSrc\n    return htmlSafe(\n      `background: url(${backgroundSrc}) no-repeat center center; background-size: cover;`,\n    )\n  }\n\n  preventDefault(e) {\n    e.preventDefault()\n  }\n\n  // Using innerWidth & innerHeight to fix notched iPhones and glitchy resizes on desktop.\n  // documentElement.clientWidth/clientHeight (the viewport excluding scrollbars, and\n  // what jQuery's $(window).width()/.height() returned) is needed for android or else\n  // the scale is completely wrong.\n  windowHeight = () =>\n    isAndroid() ? document.documentElement.clientHeight : window.innerHeight\n\n  windowWidth = () =>\n    isAndroid() ? document.documentElement.clientWidth : window.innerWidth\n\n  /**\n   * Using the width and height of the window, this function determines how a 4:3 ratio rectangle would best fit within\n   * it (portrait or landscape - ie whether it should be width or height constrained), and calculates the amount\n   * of X or Y offset in order to center that rectangle.\n   *\n   * !isLandscape\n   *  _________\n   * |         |\n   * |         |                   isLandscape\n   * |_________|            ____________________________\n   * |         |           |       |            |       |\n   * | 4:3 nav |    OR     |       |   4:3 nav  |       |\n   * |         |           |       |            |       |\n   * |_________|           |_______|____________|_______|\n   * |         |^                                <----->\n   * |         || y offset                        x offset\n   * |_________|v\n   *\n   * @returns {object} returns an object with x and y offset pixel values as integers\n   *\n   */\n  offset() {\n    const h = this.windowHeight()\n    const w = this.windowWidth()\n\n    const isLandscape = w / h > 4 / 3\n    let x = 0\n    let y = 0\n\n    if (isLandscape) {\n      x = (w - (4.0 * h) / 3.0) / 2.0\n    } else {\n      y = (h - (3.0 * w) / 4.0) / 2.0\n    }\n    return { x, y }\n  }\n\n  scale() {\n    const h = this.windowHeight() / this.baseHeight\n    const w = this.windowWidth() / this.baseWidth\n\n    return Math.min(w, h)\n  }\n\n  resize = () => {\n    const element = document.querySelector('.full-nav-container')\n    if (!element) return\n    const scale = this.scale()\n    const offset = this.offset()\n    this.resizeNavItemsList(element, scale, offset)\n  }\n\n  resizeNavItemsList(element, scale, offset) {\n    const background = element.querySelector('.background')\n    const navList = element.querySelector('[data-nav-items-list]')\n    if (navList) {\n      navList.style.transform = `scale(${scale})`\n      navList.style.left = `${offset.x}px`\n      navList.style.top = `${offset.y}px`\n    }\n    if (background) {\n      background.style.height = `${this.windowHeight()}px`\n    }\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div\\n  class=\\\"nav-item text-center {{@navType}} {{if @locked 'locked'}}\\\"\\n  style={{this.style}}\\n  data-test-fullscreen-nav-item={{@navType}}\\n  {{set-nav-item this.setNavItem}}\\n  ...attributes\\n>\\n  {{#if (eq @navType \\\"scoreText\\\")}}\\n    <div class=\\\"label-back\\\" style={{this.scoreTextStyle}}>\\n      <span class=\\\"label\\\" style={{this.labelStyle}}>{{this.title}}</span>\\n    </div>\\n  {{else}}\\n    {{! template-lint-disable no-nested-interactive }}\\n    <button\\n      data-test-nav-item-wrapper\\n      type=\\\"button\\\"\\n      aria-label={{@navType}}\\n      class=\\\"nav-item-wrapper\\\"\\n      {{on \\\"mouseout\\\" this.handleMouseLeave}}\\n      {{on \\\"mouseover\\\" this.handleMouseEnter}}\\n      {{on \\\"click\\\" this.doClick}}\\n      {{on \\\"touchstart\\\" this.onTouchStart}}\\n      {{on \\\"touchend\\\" this.onTouchEnd}}\\n      {{on \\\"touchmove\\\" this.onTouchMove}}\\n      {{on \\\"focus\\\" this.onFocus}}\\n      {{on \\\"blur\\\" this.onBlur}}\\n    >\\n      <span class=\\\"sprite {{@navType}}\\\" data-test-fullscreen-nav={{@navType}}>\\n        {{yield}}\\n      </span>\\n\\n      {{#unless @noLabel}}\\n        <div class=\\\"label-back\\\">\\n          <span class=\\\"label\\\" style={{this.labelStyle}}>{{this.title}}</span>\\n        </div>\\n      {{/unless}}\\n\\n      {{#unless @noOverlay}}\\n        {{! Elliptical overlay to make click area continuous. }}\\n        <div class=\\\"nav-overlay\\\"></div>\\n      {{/unless}}\\n    </button>\\n  {{/if}}\\n</div>\", {\"contents\":\"<div\\n  class=\\\"nav-item text-center {{@navType}} {{if @locked 'locked'}}\\\"\\n  style={{this.style}}\\n  data-test-fullscreen-nav-item={{@navType}}\\n  {{set-nav-item this.setNavItem}}\\n  ...attributes\\n>\\n  {{#if (eq @navType \\\"scoreText\\\")}}\\n    <div class=\\\"label-back\\\" style={{this.scoreTextStyle}}>\\n      <span class=\\\"label\\\" style={{this.labelStyle}}>{{this.title}}</span>\\n    </div>\\n  {{else}}\\n    {{! template-lint-disable no-nested-interactive }}\\n    <button\\n      data-test-nav-item-wrapper\\n      type=\\\"button\\\"\\n      aria-label={{@navType}}\\n      class=\\\"nav-item-wrapper\\\"\\n      {{on \\\"mouseout\\\" this.handleMouseLeave}}\\n      {{on \\\"mouseover\\\" this.handleMouseEnter}}\\n      {{on \\\"click\\\" this.doClick}}\\n      {{on \\\"touchstart\\\" this.onTouchStart}}\\n      {{on \\\"touchend\\\" this.onTouchEnd}}\\n      {{on \\\"touchmove\\\" this.onTouchMove}}\\n      {{on \\\"focus\\\" this.onFocus}}\\n      {{on \\\"blur\\\" this.onBlur}}\\n    >\\n      <span class=\\\"sprite {{@navType}}\\\" data-test-fullscreen-nav={{@navType}}>\\n        {{yield}}\\n      </span>\\n\\n      {{#unless @noLabel}}\\n        <div class=\\\"label-back\\\">\\n          <span class=\\\"label\\\" style={{this.labelStyle}}>{{this.title}}</span>\\n        </div>\\n      {{/unless}}\\n\\n      {{#unless @noOverlay}}\\n        {{! Elliptical overlay to make click area continuous. }}\\n        <div class=\\\"nav-overlay\\\"></div>\\n      {{/unless}}\\n    </button>\\n  {{/if}}\\n</div>\",\"moduleName\":\"mathseeds-client/components/full-nav/nav-item.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/full-nav/nav-item.hbs\"}});\nimport Component from '@glimmer/component'\nimport { inject as service } from '@ember/service'\nimport { htmlSafe } from '@ember/template'\nimport { set } from '@ember/object'\nimport { indexOf } from 'lodash'\n\n/**\n * Tests if the given touch events registered position sits on the the given element\n * @param {Event} event\n * @param element\n * @returns {boolean}\n */\nfunction isTouchPosOnElement(event, element) {\n  /**\n   * NOTE: originalEvent is specific to $(jquery) events\n   * deprecated, and removed in ember v4\n   * https://deprecations.emberjs.com/v3.x/#toc_jquery-event\n   */\n  const resolvedEvent =\n    event instanceof Event\n      ? event\n      : event.__originalEvent || event.originalEvent\n  const x = resolvedEvent.changedTouches[0].pageX - window.pageXOffset\n  const y = resolvedEvent.changedTouches[0].pageY - window.pageYOffset\n  const elOfTouchPos = document.elementFromPoint(x, y)\n  const elOfTouchPosExists = elOfTouchPos !== null\n  const elsAsArray = Array.prototype.slice.call(element.querySelectorAll('*'))\n  const elOfTouchPosMatchesComponent =\n    elOfTouchPos === element || indexOf(elsAsArray, elOfTouchPos) >= 0\n  return elOfTouchPosExists && elOfTouchPosMatchesComponent\n}\n\nconst NOTCLICKED = 0\nconst ONITEM = 1\nconst LEFTITEM = 2\n/**\n * full-nav/nav-item is the main component you will use. It's a way to put a sprite\n * span on the screen in a location, of a size, with a rotation and text\n * beneath it. You'll typically create a nav-item for each link on the\n * navigation page, and set it's picture from CSS.\n *\n * @example\n * {{full-nav/nav-item\n *   onClick=(action \"songs\") isTablet=isTablet navType=\"songs\" title=\"Songs\"\n *   x=250 y=505 w=110 h=110 fontSize=18 rotation=-9\n *   scaleDown=true\n * }}\n *\n * @class full-nav/nav-item\n * @extends Ember.Component\n *\n * @property {Function} onClick - Closure action, what to do when clicked.\n * @property {Boolean} isTablet - Used to determine if hover events should be enabled (`false`) or disabled (`true`).\n * @property {String} navType - Sets the class of the internal span.sprite element. You will use this as part of your selector when setting the image on the nav item.\n * @property {String} title - The text beneath a `nav-item`.\n * @property {Number} x - The x position of the centre of the `nav-item` sprite in a 1024x768 area.\n * @property {Number} y - The y position of the centre of the `nav-item` sprite in a 1024x768 area.\n * @property {Number} w - The width of the `nav-item` sprite in a 1024x768 area.\n * @property {Number} h - The height of the `nav-item` sprite in a 1024x768 area. Does not include the title text.\n * @property {Number} fontSize - The target fontSize of the title text in a 1024x768 area.\n * @property {Number} [rotation=0] - Degrees of rotation. Negative values rotate anti-clockwise, positive values rotate clockwise.\n * @property {Boolean} [scaleDown=false] - If `true`, shrinks the element by 20%. Useful for the bottom row of navigation in mathseeds.\n * @property {Boolean} [noLabel=false] - If `true`, will not insert a label.\n * @property {Boolean} [doHover=true] - If `false` will disable the scaling effect as a user hovers over a `nav-item`.\n * @property {Boolean} [locked=false] - If true, will disable clicking and adds the locked class.\n */\nexport default class NavItem extends Component {\n  get title() {\n    return this.args.title ?? ''\n  }\n\n  get doHover() {\n    return this.args.doHover ?? true\n  }\n\n  @service sounds\n\n  touchState = NOTCLICKED\n\n  // position and size\n  get w() {\n    return this.args.w ?? 0\n  }\n\n  get h() {\n    return this.args.h ?? 0\n  }\n\n  get x() {\n    return this.args.x ?? 0\n  }\n\n  get y() {\n    return this.args.y ?? 0\n  }\n\n  get rotation() {\n    return this.args.rotation ?? 0\n  }\n\n  get fontSize() {\n    return this.args.fontSize ?? 20\n  }\n\n  get scaleRange() {\n    if (this.args.scaleDown) {\n      return [0.8, 1]\n    }\n    return [1, 1.1]\n  }\n\n  get initialScale() {\n    return this.scaleRange[0]\n  }\n\n  get hoverScale() {\n    return this.scaleRange[1]\n  }\n\n  get hoverEnabled() {\n    return this.doHover && !this.args.isTablet\n  }\n\n  get style() {\n    const x = this.x - this.w / 2\n    const y = this.y - this.h / 2\n\n    const safeString = `\n      transform: scale(${this.initialScale}) rotate(${this.rotation}deg);\n      position: absolute; left: ${x}px; top: ${y}px;\n    `\n\n    return htmlSafe(safeString)\n  }\n\n  get labelStyle() {\n    return htmlSafe(`font-size: ${this.fontSize}px;`)\n  }\n\n  get scoreTextStyle() {\n    const safeString = `\n      position:absolute;\n      left: calc(${this.w / 2}px);\n      top: ${this.h}px;\n      transform: translateX(-50%) rotate(${this.rotation}deg);\n    `\n    return htmlSafe(safeString)\n  }\n\n  /**\n   * The click should only be called from a mouse click\n   */\n  doClick = () => {\n    if (this.touchState === ONITEM || this.touchState === LEFTITEM) return\n    this.clickBehaviour()\n  }\n\n  /**\n   * Whenever we click the component we play a sound and execute the passed onClick action\n   */\n  clickBehaviour() {\n    if (!this.args.locked) {\n      this.sounds.play('snap')\n      this.args.onClick?.()\n    }\n  }\n\n  /**\n   * Touch start is executed when we start touching an item which will reuse the mouseEnter code\n   * We also set a local variable which tracks the current touch state. Here we setting it\n   * be `onitem`.\n   */\n  onTouchStart = () => {\n    set(this, 'touchState', ONITEM)\n    this.handleMouseEnter(1.2)\n  }\n\n  /**\n   * Executes the mouse leave functionality and checks if we release the button on the button.\n   * click doesn't seem to be fired once you move your finger so this will take care of that\n   * @param e\n   * @returns {Boolean}\n   */\n  onTouchEnd = (e) => {\n    this.handleMouseLeave()\n    const isTouchingButton = isTouchPosOnElement(e, this.navItemElement)\n    if (isTouchingButton) this.clickBehaviour()\n    return isTouchingButton\n  }\n\n  /**\n   * Touch move does 2 things, first it will check if we leave the button and trigger the mouse leave function\n   * Secondly we check if we return to the same button and trigger the mouseEnter function.\n   * To do so we use the touch state variable which get set accordingly.\n   * @param e\n   */\n  onTouchMove = (e) => {\n    const isTouchingButton = isTouchPosOnElement(e, this.navItemElement)\n    if (!isTouchingButton) {\n      set(this, 'touchState', LEFTITEM)\n      this.handleMouseLeave()\n    }\n    if (isTouchingButton && this.touchState === LEFTITEM) {\n      set(this, 'touchState', ONITEM)\n      this.handleMouseEnter(1.2)\n    }\n  }\n\n  onFocus = () => {\n    this.handleMouseEnter(1.2)\n  }\n\n  onBlur = () => {\n    this.handleMouseLeave()\n  }\n\n  setNavItem = (element) => {\n    this.navItemElement = element\n  }\n\n  handleMouseEnter = (scale = 1.05) => {\n    if (typeof scale !== 'number') scale = 1.05\n    if (!this.args.locked && this.hoverEnabled) {\n      this.navItemElement.style.transform = `scale(${this.hoverScale}) rotate(${this.rotation}deg)`\n    }\n  }\n\n  handleMouseLeave = () => {\n    if (!this.args.locked && this.hoverEnabled) {\n      this.navItemElement.style.transform = `scale(${this.initialScale}) rotate(${this.rotation}deg)`\n    }\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div\\n  class=\\\"nav-welcome welcome-header\\\"\\n  style={{this.style}}\\n  data-test-fullscreen-nav-welcome\\n>\\n  <div class=\\\"avatar-wrap\\\">\\n    <button\\n      class=\\\"avatar nav-item\\\"\\n      type=\\\"button\\\"\\n      style={{this.avatarStyle}}\\n      aria-label=\\\"Avatar\\\"\\n      data-test-nav-welcome-avatar\\n      {{on \\\"click\\\" @onClick}}\\n    />\\n  </div>\\n\\n  <div class=\\\"details\\\" data-test-nav-welcome-details>\\n    <h1 class=\\\"welcome\\\" data-test-nav-welcome-prefix>\\n      <span class=\\\"welcome-message\\\">\\n        {{@welcomeMessage}}\\n      </span>\\n\\n      <span\\n        class=\\\"name\\\"\\n        style={{this.fontSizeAdjustment}}\\n        {{fit-text maxSize=@nameFontSize minSize=18}}\\n        data-test-nav-welcome-name\\n      >\\n        {{@name}}\\n      </span>\\n    </h1>\\n  </div>\\n</div>\", {\"contents\":\"<div\\n  class=\\\"nav-welcome welcome-header\\\"\\n  style={{this.style}}\\n  data-test-fullscreen-nav-welcome\\n>\\n  <div class=\\\"avatar-wrap\\\">\\n    <button\\n      class=\\\"avatar nav-item\\\"\\n      type=\\\"button\\\"\\n      style={{this.avatarStyle}}\\n      aria-label=\\\"Avatar\\\"\\n      data-test-nav-welcome-avatar\\n      {{on \\\"click\\\" @onClick}}\\n    />\\n  </div>\\n\\n  <div class=\\\"details\\\" data-test-nav-welcome-details>\\n    <h1 class=\\\"welcome\\\" data-test-nav-welcome-prefix>\\n      <span class=\\\"welcome-message\\\">\\n        {{@welcomeMessage}}\\n      </span>\\n\\n      <span\\n        class=\\\"name\\\"\\n        style={{this.fontSizeAdjustment}}\\n        {{fit-text maxSize=@nameFontSize minSize=18}}\\n        data-test-nav-welcome-name\\n      >\\n        {{@name}}\\n      </span>\\n    </h1>\\n  </div>\\n</div>\",\"moduleName\":\"mathseeds-client/components/full-nav/nav-welcome.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/full-nav/nav-welcome.hbs\"}});\nimport Component from '@glimmer/component'\nimport { htmlSafe } from '@ember/template'\n\n/**\n * full-nav/nav-welcome is a component for rendering a student's avatar and a welcome message with their name.\n *\n * @example\n * {{full-nav/nav-welcome\n *   avatarUrl=\"http://awesome.com/image1.png\" defaultAvatarURL='/assets/default-avatar.png'\n *   welcomeMessage=\"Hello!\" name=\"BillNye\" nameFontSize=55\n *   x=510 y=78 w=500 h=100\n * }}\n *\n * @class full-nav/nav-welcome\n *\n * @property {string} avatarUrl - 'avatarUrl' string to render as the background-image\n * @property {String} defaultAvatar - The default avatar image url\n * @property {String} welcomeMessage - The message to greet the student.\n * @property {String} name - The student's name to be displayed.\n * @property {Number} nameFontSize - The size the student's name should be.\n * @property {Number} x - The x position of the centre of the `nav-welcome` in a 1024x768 area.\n * @property {Number} y - The y position of the centre of the `nav-welcome` in a 1024x768 area.\n * @property {Number} w - The width of the `nav-welcome` in a 1024x768 area.\n * @property {Number} h - The height of the `nav-welcome` in a 1024x768 area.\n */\n\nexport default class NavWelcome extends Component {\n  get style() {\n    const x = this.args.x - this.args.w / 2\n    const y = this.args.y - this.args.h / 2\n\n    const safeString = `\n      position: absolute;\n      left: ${x}px;\n      top: ${y}px;\n      height: ${this.args.h}px;\n      width: ${this.args.w}px;\n    `\n\n    return htmlSafe(safeString)\n  }\n\n  get avatarStyle() {\n    const guaranteedAvatarUrl =\n      this.args.avatarUrl || this.args.defaultAvatarURL\n    return htmlSafe(`background-image: url(${guaranteedAvatarUrl});`)\n  }\n\n  get fontSizeAdjustment() {\n    return htmlSafe(`\n      font-size: ${this.args.nameFontSize}px;\n    `)\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div\\n  class=\\\"full-viewport\\\"\\n  {{device/detection-classes \\\"iphone\\\"}}\\n  {{device/bind-viewport-height propertyName=\\\"--iphone-viewport-height\\\"}}\\n  data-test-full-viewport\\n  ...attributes\\n>\\n  {{yield}}\\n</div>\", {\"contents\":\"<div\\n  class=\\\"full-viewport\\\"\\n  {{device/detection-classes \\\"iphone\\\"}}\\n  {{device/bind-viewport-height propertyName=\\\"--iphone-viewport-height\\\"}}\\n  data-test-full-viewport\\n  ...attributes\\n>\\n  {{yield}}\\n</div>\",\"moduleName\":\"mathseeds-client/components/full-viewport.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/full-viewport.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div id=\\\"hidden-print-container\\\" data-test-hidden-print-container>\\n  {{yield}}\\n</div>\", {\"contents\":\"<div id=\\\"hidden-print-container\\\" data-test-hidden-print-container>\\n  {{yield}}\\n</div>\",\"moduleName\":\"mathseeds-client/components/hidden-print-container.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/hidden-print-container.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<home-button>\\n  <LinkTo @route=\\\"index\\\" class=\\\"home-link\\\" data-test-home={{true}}>\\n    Home\\n  </LinkTo>\\n</home-button>\", {\"contents\":\"<home-button>\\n  <LinkTo @route=\\\"index\\\" class=\\\"home-link\\\" data-test-home={{true}}>\\n    Home\\n  </LinkTo>\\n</home-button>\",\"moduleName\":\"mathseeds-client/components/home-button.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/home-button.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<loading-screen\\n  class=\\\"loading-screen\\n    {{if this.loading 'show-loading'}}\\n    {{unless this.loading 'fade-out'}}\\\"\\n  data-test-loading-screen\\n  ...attributes\\n  {{caper-load-complete this.hideLoadingScreen}}\\n>\\n  <img\\n    src=\\\"{{asset-url 'assets/nav-icons/ruby_loading.svg'}}\\\"\\n    alt=\\\"Mathseeds Loading\\\"\\n  />\\n</loading-screen>\", {\"contents\":\"<loading-screen\\n  class=\\\"loading-screen\\n    {{if this.loading 'show-loading'}}\\n    {{unless this.loading 'fade-out'}}\\\"\\n  data-test-loading-screen\\n  ...attributes\\n  {{caper-load-complete this.hideLoadingScreen}}\\n>\\n  <img\\n    src=\\\"{{asset-url 'assets/nav-icons/ruby_loading.svg'}}\\\"\\n    alt=\\\"Mathseeds Loading\\\"\\n  />\\n</loading-screen>\",\"moduleName\":\"mathseeds-client/components/loading-screen.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/loading-screen.hbs\"}});\nimport { action } from '@ember/object'\nimport { inject as service } from '@ember/service'\nimport Component from '@glimmer/component'\nimport type LoadingUiService from 'mathseeds-client/services/loading-ui'\n\nexport default class LoadingScreenComponent extends Component {\n  @service declare loadingUi: LoadingUiService\n\n  get loading() {\n    return this.loadingUi.isLoading\n  }\n\n  @action\n  hideLoadingScreen() {\n    this.loadingUi.hide()\n  }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#unless this.inAssignmentMode}}\\n  {{#let (unique-id) as |titleId|}}\\n    {{! template-lint-disable no-unused-block-params }}\\n    <Dialog\\n      class=\\\"quest-notification dialog-container\\n        {{if this.showQuestAlert 'open-notification'}}\\\"\\n      @open={{this.showQuestAlert}}\\n      role=\\\"alertdialog\\\"\\n      aria-labelledby={{titleId}}\\n      data-test-quest-notification\\n      as |dialog|\\n    >\\n      {{#if this.showQuestAlert}}\\n        <Dialog::Overlay\\n          role=\\\"document\\\"\\n          tabindex=\\\"0\\\"\\n          {{content-interactive\\n            this.jesterLoader.loader\\n            externalController=this\\n            manifests=this.jesterManifests\\n            runtimeVariables=this.variables\\n            onError=this.onContentError\\n          }}\\n        />\\n      {{/if}}\\n    </Dialog>\\n  {{/let}}\\n{{/unless}}\", {\"contents\":\"{{#unless this.inAssignmentMode}}\\n  {{#let (unique-id) as |titleId|}}\\n    {{! template-lint-disable no-unused-block-params }}\\n    <Dialog\\n      class=\\\"quest-notification dialog-container\\n        {{if this.showQuestAlert 'open-notification'}}\\\"\\n      @open={{this.showQuestAlert}}\\n      role=\\\"alertdialog\\\"\\n      aria-labelledby={{titleId}}\\n      data-test-quest-notification\\n      as |dialog|\\n    >\\n      {{#if this.showQuestAlert}}\\n        <Dialog::Overlay\\n          role=\\\"document\\\"\\n          tabindex=\\\"0\\\"\\n          {{content-interactive\\n            this.jesterLoader.loader\\n            externalController=this\\n            manifests=this.jesterManifests\\n            runtimeVariables=this.variables\\n            onError=this.onContentError\\n          }}\\n        />\\n      {{/if}}\\n    </Dialog>\\n  {{/let}}\\n{{/unless}}\",\"moduleName\":\"mathseeds-client/components/quest/notification.hbs\",\"parseOptions\":{\"srcName\":\"mathseeds-client/components/quest/notification.hbs\"}});\nimport { action } from '@ember/object'\nimport Component from '@glimmer/component'\nimport { service } from '@ember/service'\nimport type QuestService from 'mathseeds-client/services/quest'\nimport type AssignmentsService from 'mathseeds-client/services/assignments'\nimport type Owner from '@ember/owner'\nimport type JesterLoaderService from 'mathseeds-client/services/jester-loader'\nimport type LoadingUiService from 'mathseeds-client/services/loading-ui'\nimport type UserService from 'mathseeds-client/services/user'\n\ninterface QuestNotificationComponentArgs {\n  alertAnytime?: boolean\n}\n\nexport default class QuestNotificationComponent extends Component<QuestNotificationComponentArgs> {\n  @service declare assignments: AssignmentsService\n\n  @service declare quest: QuestService\n\n  @service declare jesterLoader: JesterLoaderService\n\n  @service declare user: UserService\n\n  @service declare loadingUi: LoadingUiService\n\n  variables\n\n  constructor(owner: Owner, args: QuestNotificationComponentArgs) {\n    super(owner, args)\n    this.variables = {\n      currencyAmount: this.user.student.acorns,\n      name: this.user.student.name,\n      quest: this.quest.currentQuest,\n    }\n    if (this.args.alertAnytime) this.quest.displayQuestAlertIfRequired()\n  }\n\n  get showQuestAlert() {\n    return this.quest.showQuestAlert\n  }\n\n  get questGoalForNotification() {\n    return this.quest.questGoalForNotification\n  }\n\n  get inAssignmentMode() {\n    return this.assignments.hasTask\n  }\n\n  get jesterManifests() {\n    return [['index', 'three-essentials/quest-reward']]\n  }\n\n  @action\n  acknowledgeQuestGoalAlert() {\n    if (!this.questGoalForNotification) return\n\n    void this.quest.acknowledgeQuestGoalAlert({\n      goalId: this.questGoalForNotification.id,\n    })\n  }\n\n  @action\n  awarded() {\n    this.acknowledgeQuestGoalAlert()\n  }\n\n  @action\n  close() {\n    this.quest.closeQuestAlert()\n  }\n\n  @action\n  onContentError(error: Error) {\n    console.log(error)\n  }\n\n  @action\n  readyForUserInput() {\n    this.loadingUi.hide()\n  }\n}\n","import { action } from '@ember/object'\nimport Controller from '@ember/controller'\nimport { inject as service } from '@ember/service'\nimport type SessionService from 'mathseeds-client/services/session'\n\nexport default class ApplicationErrorController extends Controller {\n  @service\n  declare session: SessionService\n\n  @action\n  bye() {\n    this.session.signOut()\n  }\n}\n","import { action } from '@ember/object'\nimport { inject as service } from '@ember/service'\nimport ky from 'ky'\nimport Controller from '@ember/controller'\nimport ENV from 'mathseeds-client/config/environment'\nimport type UserService from 'mathseeds-client/services/user'\nimport type RouterService from '@ember/routing/router-service'\nimport type ErrorHandlerService from 'mathseeds-client/services/error-handler'\nimport type { ModelFor } from 'mathseeds-client/utils/route-model'\nimport type GameRoute from 'mathseeds-client/routes/arcade/game'\n\nexport default class GameController extends Controller {\n  @service\n  declare user: UserService\n\n  @service\n  declare router: RouterService\n\n  @service\n  declare errorHandler: ErrorHandlerService\n\n  declare model: ModelFor<GameRoute>\n\n  get student() {\n    return this.user.student\n  }\n\n  @action\n  async saveArcadeGameScore({ score }: { score: number }) {\n    const gameId = this.model.name\n\n    try {\n      await ky.post(\n        `${ENV.APP.apiEndpoint ?? '/'}${ENV.APP.apiNamespace}/arcade/score`,\n        {\n          json: { id: gameId, score },\n        },\n      )\n    } catch (error) {\n      this.errorHandler.handleError(error)\n      throw error\n    }\n  }\n\n  @action\n  goBackToArcade() {\n    this.router.transitionTo('arcade.index')\n  }\n}\n","import { action } from '@ember/object'\nimport { inject as service } from '@ember/service'\nimport Controller from '@ember/controller'\nimport ky from 'ky'\nimport ENV from 'mathseeds-client/config/environment'\nimport type { MinigameAuthService } from '@blakeelearning/minigame-auth'\nimport type UserService from 'mathseeds-client/services/user'\nimport type RouterService from '@ember/routing/router-service'\nimport type ErrorHandlerService from 'mathseeds-client/services/error-handler'\n\nexport default class IndexController extends Controller {\n  @service\n  declare minigameAuth: MinigameAuthService\n\n  @service\n  declare user: UserService\n\n  @service\n  declare router: RouterService\n\n  @service\n  declare errorHandler: ErrorHandlerService\n\n  get student() {\n    return this.user.student\n  }\n\n  async updateAcorns() {\n    await this.user.refetch()\n  }\n\n  /**\n   * Triggers arcade game to play.\n   * dataType: 'text' is necessary because the server is sending the content-type: application/json header\n   * with an invalid json response. This triggers an ajax failure.\n   *\n   * @param {string} name - The name of the arcade game.\n   */\n  @action\n  async playGame(name: string) {\n    const url = `${ENV.APP.apiEndpoint ?? '/'}${ENV.APP.apiNamespace}/arcade/play`\n    let response\n\n    try {\n      const playGameResponse = await ky.post(url, {\n        json: { id: name },\n      })\n      response = await playGameResponse.json<{ error?: string }>()\n    } catch (error) {\n      this.errorHandler.handleError(error)\n      throw error\n    }\n\n    // Backend returns an empty object if it's a success and an error when failed\n    const hasPurchasedGamePlay = !response.error\n    if (hasPurchasedGamePlay) {\n      this.minigameAuth.enableGameNamed(name)\n      await this.updateAcorns()\n      this.router.transitionTo('arcade.game', name)\n      return\n    } else {\n      // This will indicate to caper-activity that the student has insufficient funds\n      return false\n    }\n  }\n}\n","import { action } from '@ember/object'\nimport { inject as service } from '@ember/service'\nimport Controller from '@ember/controller'\nimport type ApolloService from 'mathseeds-client/services/apollo'\nimport type UserService from 'mathseeds-client/services/user'\nimport { graphql } from 'mathseeds-client/graphql'\nimport type ErrorHandlerService from 'mathseeds-client/services/error-handler'\n\ninterface AvatarDNA {\n  arms: string\n  head: string\n  legs: string\n  belt: string | null\n  dress: string | null\n  hat: string | null\n  jacket: string | null\n  mask: string | null\n  necklace: string | null\n  shirt: string | null\n  shoes: string | null\n  wristband: string | null\n}\n\nconst studentAvatarUpdateMutationDocument = graphql(/* GraphQL */ `\n  mutation studentAvatarUpdate($input: StudentAvatarUpdateInput!) {\n    studentAvatarUpdate(input: $input) {\n      student {\n        ...StudentAvatarFragment\n      }\n    }\n  }\n`)\n\nexport default class AvatarController extends Controller {\n  @service\n  declare user: UserService\n\n  @service\n  declare apollo: ApolloService\n\n  @service\n  declare errorHandler: ErrorHandlerService\n\n  @action\n  async saveDNA(dna: AvatarDNA, thumbnail: string) {\n    try {\n      await this.apollo.mutate({\n        mutation: studentAvatarUpdateMutationDocument,\n        variables: {\n          input: {\n            ...dna,\n            imageData: thumbnail,\n          },\n        },\n      })\n    } catch (error) {\n      this.errorHandler.handleError(error)\n      throw error\n    }\n  }\n}\n","import { action } from '@ember/object'\nimport { inject as service } from '@ember/service'\nimport Controller from '@ember/controller'\nimport type { MapCertificateData } from 'mathseeds-client/services/certificate'\nimport type CertificateService from 'mathseeds-client/services/certificate'\nimport type RouterService from '@ember/routing/router-service'\nimport type AwardsRoute from 'mathseeds-client/routes/awards'\nimport type { ModelFrom } from 'mathseeds-client/utils/type-utils'\nimport { awardsContentSpec } from '@blakeelearning/content-specs-mathseeds'\nimport type { ContentActions } from '@blakeelearning/messenger'\nimport type LoadingUiService from 'mathseeds-client/services/loading-ui'\n\ntype PrintArgs = MapCertificateData | PrintMessage\ninterface PrintMessage {\n  certificateUrl: string\n}\n\nexport default class AwardsController\n  extends Controller\n  implements ContentActions<typeof awardsContentSpec>\n{\n  declare model: ModelFrom<AwardsRoute>\n\n  @service declare certificate: CertificateService\n\n  @service declare router: RouterService\n\n  @service declare loadingUi: LoadingUiService\n\n  get currentMap() {\n    return this.model.variables.currentMap\n  }\n\n  @action\n  readyForUserInput() {\n    this.loadingUi.hide()\n  }\n\n  @action\n  async print(args: PrintArgs) {\n    const { certificateUrl } = args as PrintMessage\n    const url = new URL(certificateUrl)\n    return this.certificate.print(url)\n  }\n\n  @action\n  goHome() {\n    void this.router.transitionTo('/')\n  }\n\n  @action\n  goNext() {\n    void this.router.transitionTo('map', this.currentMap)\n  }\n\n  @action\n  unhandledError() {}\n\n  get contentSpec() {\n    return awardsContentSpec\n  }\n}\n\ndeclare module '@ember/controller' {\n  interface Registry {\n    awards: AwardsController\n  }\n}\n","import { action } from '@ember/object'\nimport { inject as service } from '@ember/service'\nimport Controller from '@ember/controller'\nimport ky from 'ky'\nimport ENV from 'mathseeds-client/config/environment'\nimport type RouterService from '@ember/routing/router-service'\nimport type ErrorHandlerService from 'mathseeds-client/services/error-handler'\nimport type { FeatureService } from '@blakeelearning/features'\nimport type GameRoute from 'mathseeds-client/routes/driving-tests/game'\nimport type { ModelFor } from 'mathseeds-client/utils/route-model'\n\nexport default class GameController extends Controller {\n  @service\n  declare features: FeatureService\n\n  @service\n  declare router: RouterService\n\n  @service\n  declare errorHandler: ErrorHandlerService\n\n  declare model: ModelFor<GameRoute>\n\n  get gameUrl() {\n    return `${ENV.APP.apiEndpoint ?? '/'}${ENV.APP.apiNamespace}/driving_tests/game`\n  }\n\n  get isAssignmentMode() {\n    return this.model.assignmentMode\n  }\n\n  @action\n  async gameStarted() {\n    /**\n     * This endpoint fails intermittently, so we try up to three times to make\n     * the request when failures are due to abort errors.   The function uses\n     * exponential back-off, and with default settings that means that the\n     * second try will happen 1 second after the first fails, and the third\n     * will happen two seconds after that.\n     */\n\n    try {\n      const response = await ky.post(this.gameUrl, {\n        retry: { limit: 3, methods: ['post'] },\n      })\n      return await response.json()\n    } catch (error) {\n      this.errorHandler.handleError(error)\n      throw error\n    }\n  }\n\n  @action\n  async saveScore(score: string) {\n    try {\n      const response = await ky.post(`${this.gameUrl}/complete`, {\n        body: new URLSearchParams([['game[score]', score]]),\n      })\n      const json = await response.json<{ error?: string }>()\n\n      if (json.error) {\n        throw new Error(json.error)\n      } else {\n        return json\n      }\n    } catch (error) {\n      this.errorHandler.handleError(error)\n      throw error\n    }\n  }\n\n  @action\n  showLobby() {\n    this.router.transitionTo('driving-tests')\n  }\n\n  @action\n  showLeaderboard() {\n    this.router.transitionTo('driving-tests.leaderboard', {\n      queryParams: {\n        assignmentMode: this.isAssignmentMode,\n      },\n    })\n  }\n}\n","import { action } from '@ember/object'\nimport Controller from '@ember/controller'\nimport { inject as service } from '@ember/service'\nimport type RouterService from '@ember/routing/router-service'\n\nexport default class IndexController extends Controller {\n  @service\n  declare router: RouterService\n\n  @action\n  showQuizAction(grade: string, category: string, lesson: string) {\n    this.router.transitionTo('driving-tests.quiz', grade, category, lesson)\n  }\n}\n","import { action } from '@ember/object'\nimport Controller from '@ember/controller'\nimport { inject as service } from '@ember/service'\nimport type RouterService from '@ember/routing/router-service'\nimport type UserService from 'mathseeds-client/services/user'\nimport type AssignmentsService from 'mathseeds-client/services/assignments'\nimport type SessionService from 'mathseeds-client/services/session'\nimport type { ModelFor } from 'mathseeds-client/utils/route-model'\nimport type LeaderboardRoute from 'mathseeds-client/routes/driving-tests/leaderboard'\n\nexport default class LeaderboardController extends Controller {\n  @service\n  declare router: RouterService\n\n  @service\n  declare user: UserService\n\n  @service\n  declare assignments: AssignmentsService\n\n  @service\n  declare session: SessionService\n\n  declare model: ModelFor<LeaderboardRoute>\n\n  get shouldLogout() {\n    return (\n      this.user.student.rosterEnabled &&\n      this.model.assignmentMode &&\n      !this.assignments.currentTask\n    )\n  }\n\n  @action\n  transitionToLobby() {\n    if (this.shouldLogout) {\n      this.session.signOut()\n      return\n    }\n    this.router.transitionTo('driving-tests')\n  }\n}\n","import { action } from '@ember/object'\nimport { inject as service } from '@ember/service'\nimport Controller from '@ember/controller'\nimport config from 'mathseeds-client/config/environment'\nimport type { StudentOperationsService } from '@blakeelearning/student-operations'\n\ntype DrivingTestQuizResults = Parameters<\n  StudentOperationsService['completeDrivingTestsQuiz']\n>[1]\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\nimport type AssignmentsService from 'mathseeds-client/services/assignments'\nimport type UserService from 'mathseeds-client/services/user'\nimport type RouterService from '@ember/routing/router-service'\nimport type ErrorHandlerService from 'mathseeds-client/services/error-handler'\nimport type QuizRoute from 'mathseeds-client/routes/driving-tests/quiz'\nimport type { ModelFor } from 'mathseeds-client/utils/route-model'\n\nconst {\n  APP: { product },\n} = config\n\nexport default class QuizController extends Controller {\n  @service\n  declare operations: StudentOperationsService\n\n  @service\n  declare studentProgress: StudentProgressService\n\n  @service\n  declare assignments: AssignmentsService\n\n  @service\n  declare user: UserService\n\n  @service\n  declare router: RouterService\n\n  @service\n  declare errorHandler: ErrorHandlerService\n\n  declare model: ModelFor<QuizRoute>\n\n  get grade() {\n    return this.model.quiz.grade\n  }\n\n  get category() {\n    return this.model.quiz.category\n  }\n\n  get number() {\n    return this.model.quiz.number\n  }\n\n  get isAssignmentMode() {\n    return this.model.isAssignment\n  }\n\n  get studentContext() {\n    let taskId\n    let assignmentUuid\n\n    if (\n      this.assignments.currentTask?.__typename ===\n        'AssignmentTaskDrivingTests' &&\n      this.assignments.canCompleteDrivingTestAssignmentTask(\n        this.grade,\n        this.category,\n        this.number,\n      )\n    ) {\n      taskId = this.assignments.currentTask.id\n      assignmentUuid = this.assignments.currentTask.assignmentUuid\n    }\n\n    return {\n      product,\n      precinct: 'driving_tests',\n      remoteId: this.user.student.remoteId,\n      taskId,\n      assignmentUuid,\n    }\n  }\n\n  @action\n  showLobby() {\n    this.router.transitionTo('driving-tests')\n  }\n\n  @action\n  async completeQuizAction(results: DrivingTestQuizResults) {\n    const { currentTask } = this.assignments\n    const gradePosition =\n      currentTask?.__typename === 'AssignmentTaskDrivingTests'\n        ? currentTask.gradePosition\n        : undefined\n\n    const resultsWithGradePosition: DrivingTestQuizResults & {\n      grade_position?: number\n    } = {\n      ...results,\n      ...(gradePosition !== undefined ? { grade_position: gradePosition } : {}),\n    }\n\n    try {\n      const operationResults = await this.operations.completeDrivingTestsQuiz(\n        this.studentContext,\n        resultsWithGradePosition,\n      )\n\n      await Promise.all([\n        this.assignments.fetch(),\n        this.studentProgress.fetchProgress(),\n      ])\n\n      return operationResults\n    } catch (error) {\n      this.errorHandler.handleError(error)\n      throw error\n    }\n  }\n\n  @action\n  playGameAction() {\n    this.router.transitionTo('driving-tests.game', {\n      queryParams: {\n        assignmentMode: this.isAssignmentMode,\n      },\n    })\n  }\n}\n","import { action } from '@ember/object'\nimport Controller from '@ember/controller'\nimport ENV from 'mathseeds-client/config/environment'\nimport { inject as service } from '@ember/service'\nimport type RouterService from '@ember/routing/router-service'\n\nexport default class FinishedMathseedsController extends Controller {\n  @service\n  declare router: RouterService\n\n  getLastPlayableMap() {\n    return ENV.APP.lastMap\n  }\n\n  @action\n  goToPreviousMap() {\n    this.router.transitionTo('map.index', this.getLastPlayableMap())\n  }\n\n  @action\n  goToDrivingTests() {\n    this.router.transitionTo('driving-tests')\n  }\n\n  @action\n  goToArcade() {\n    this.router.transitionTo('arcade')\n  }\n\n  @action\n  goToMentalMinute() {\n    // Go to latest mental minute lesson\n    this.router.transitionTo('mental-minute-sets.lessons')\n  }\n}\n","import { action } from '@ember/object'\nimport { assert } from '@ember/debug'\nimport { inject as service } from '@ember/service'\nimport Controller from '@ember/controller'\nimport config from 'mathseeds-client/config/environment'\nimport formatDueDate from 'mathseeds-client/utils/format-due-date'\nimport dateFromNow from 'mathseeds-client/utils/date-from-now'\nimport { capitalize } from '@ember/string'\nimport { debugAction, debugValue } from 'mathseeds-client/utils/debug'\nimport type { FeatureService } from '@blakeelearning/features'\nimport type AssignmentsService from 'mathseeds-client/services/assignments'\nimport type UserService from 'mathseeds-client/services/user'\nimport type RouterService from '@ember/routing/router-service'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\nimport type QuestService from 'mathseeds-client/services/quest'\nimport type DebugModeService from 'mathseeds-client/services/debug-mode'\nimport type SessionService from 'mathseeds-client/services/session'\n\nexport default class IndexController extends Controller {\n  @service\n  declare features: FeatureService\n\n  @service\n  declare assignments: AssignmentsService\n\n  @service\n  declare user: UserService\n\n  @service\n  declare router: RouterService\n\n  @service\n  declare studentProgress: StudentProgressService\n\n  @service\n  declare quest: QuestService\n\n  @service\n  declare debugMode: DebugModeService\n\n  @service\n  declare session: SessionService\n\n  get student() {\n    return this.user.student\n  }\n\n  get avatarUrl() {\n    return this.user.student.avatarUrl\n  }\n\n  get task() {\n    return this.assignments.currentTask\n  }\n\n  get hasTask() {\n    return this.assignments.hasTask\n  }\n\n  get assignmentThumbnailUrl() {\n    return this.task?.thumbnailUrl\n  }\n\n  get assignmentTitle() {\n    if (!this.task) return undefined\n    if (this.task.__typename === 'AssignmentTaskMyLessons') {\n      return `Lesson ${this.task.lessonId}`\n    }\n\n    return `${this.task.category.split('_').map(capitalize).join(' ')}: Lesson ${this.task.gradeLessonNumber}`\n  }\n\n  get assignmentName() {\n    if (!this.task) return undefined\n\n    if (this.task.__typename === 'AssignmentTaskMyLessons') {\n      const matcher = /Lesson [0-9]* - /g\n      return capitalize(this.task.title.replace(matcher, ''))\n    }\n\n    return this.task.title\n  }\n\n  get assignmentDueDate() {\n    if (!this.task) return undefined\n    return formatDueDate(new Date(this.task.endAt))\n  }\n\n  get assignmentTimeRemaining() {\n    if (!this.task) return undefined\n\n    // TODO: The dateFromNow util can be replaced with date-fns intlFormatDistance once we drop support for ios13\n    return dateFromNow(new Date(this.task.endAt), Date.now())\n  }\n\n  get assignmentInstruction() {\n    if (!this.task) return undefined\n\n    const instructionForType = {\n      AssignmentTaskMyLessons:\n        'You must complete all the activities in the lesson.',\n      AssignmentTaskDrivingTests: `You must complete the Driving Test.`,\n    }\n\n    return instructionForType[this.task.__typename]\n  }\n\n  get assignmentRouteParams() {\n    return this.task?.targetRouteParams\n  }\n\n  isTablet = false\n\n  get greetings() {\n    return ['Hello,', 'Hi,', 'Welcome,']\n  }\n\n  get welcomeGreeting() {\n    const randomIndex = Math.floor(Math.random() * this.greetings.length)\n    return this.greetings[randomIndex]\n  }\n\n  get currentPositionTitle() {\n    const currentLesson = this.studentProgress.myLessonsCurrentLesson\n    if (currentLesson === 'quiz') {\n      return 'Quiz'\n    }\n    return currentLesson\n  }\n\n  get hasFinishedLessons() {\n    return this.studentProgress.myLessonsCurrentMap > config.APP.lastMap\n  }\n\n  get showPlacementTestText() {\n    return this.studentProgress.showMyLessonsPlacementTest\n  }\n\n  get lessonsTitle() {\n    if (this.hasFinishedLessons) {\n      return 'Complete!'\n    }\n    return 'Lessons'\n  }\n\n  @action\n  startTask() {\n    if (!this.task) return\n    const [routeName, ...models] = this.task.targetRouteParams\n    assert('targetRouteParams must include a route name', routeName)\n\n    /**\n     * `targetRouteParams` is a variable-length array (its length depends on\n     * the assignment task type), but `transitionTo`'s types only accept\n     * fixed-length tuples, so we go via a loosely-typed reference to avoid\n     * fighting TypeScript's spread-into-union-of-tuples limitation.\n     */\n    const router = this.router as unknown as {\n      transitionTo(...args: unknown[]): unknown\n    }\n    return router.transitionTo(routeName, ...models)\n  }\n\n  @action\n  myProgram() {\n    return undefined\n  }\n\n  @action\n  avatar() {\n    this.router.transitionTo('avatar')\n  }\n\n  @action\n  hello() {\n    return undefined\n  }\n\n  @action\n  welcomeName() {\n    return undefined\n  }\n\n  @action\n  progressPage() {\n    return undefined\n  }\n\n  @action\n  numberFacts() {\n    return undefined\n  }\n\n  @action\n  playRoom() {\n    this.router.transitionTo('playroom')\n  }\n\n  @action\n  mentalMinute() {\n    this.router.transitionTo('mental-minute-sets.lessons')\n  }\n\n  @action\n  myLessons() {\n    this.router.transitionTo('map', this.studentProgress.myLessonsCurrentMap)\n  }\n\n  @action\n  dailyFruit() {\n    return undefined\n  }\n\n  @action\n  drivingTest() {\n    this.router.transitionTo('driving-tests')\n  }\n\n  @action\n  myAwards() {\n    this.router.transitionTo('awards')\n  }\n\n  @action\n  songs() {\n    return undefined\n  }\n\n  @action\n  library() {\n    return undefined\n  }\n\n  @action\n  shop() {\n    this.router.transitionTo('shop')\n  }\n\n  @action\n  arcade() {\n    this.router.transitionTo('arcade.index')\n  }\n\n  @action\n  treehouse() {\n    this.router.transitionTo('treehouse')\n  }\n\n  @action\n  bye() {\n    this.session.signOut()\n  }\n\n  @action\n  acornCount() {\n    return undefined\n  }\n\n  @action\n  logo() {\n    return undefined\n  }\n\n  @action\n  @debugAction()\n  async resetProgressToPlacementTest() {\n    await this.debugMode.resetMyLessonsPlacementTestProgress()\n  }\n\n  @action\n  @debugAction({\n    lesson: {\n      type: 'select',\n      options: generateLessonOptions('myLessons', 200),\n    },\n    activity: {\n      type: 'number',\n      value: '1',\n    },\n  })\n  async resetProgressToLessonPosition({\n    lesson,\n    activity,\n  }: {\n    lesson: string\n    activity: string\n  }) {\n    await this.debugMode.resetMyLessonsLessonProgress(\n      parseInt(lesson, 10),\n      parseInt(activity, 10),\n    )\n  }\n\n  @action\n  @debugAction({\n    map: {\n      type: 'select',\n      options: generateMapOptions(40),\n    },\n  })\n  async resetProgressToMapQuizPosition({ map }: { map: string }) {\n    await this.debugMode.resetMyLessonsMapQuizProgress(parseInt(map, 10))\n  }\n\n  @action\n  @debugAction()\n  async resetProgressToCompleteLessonsPrecinct() {\n    await this.debugMode.resetMyLessonsLessonProgress(201, 1)\n  }\n\n  @debugValue()\n  get currentQuest() {\n    return this.quest.currentQuest\n  }\n}\n\nfunction generateLessonOptions(\n  lessonType: 'myLessons',\n  numberOfLessons: number,\n) {\n  const options = []\n  let i = 0\n\n  for (i; i < numberOfLessons; i++) {\n    const lessonNumber = i + 1\n    const progressInfoForLessons = config.studentProgress.progress\n    const { lessonsPerMap } = progressInfoForLessons[lessonType]\n    const mapNumber = Math.ceil(lessonNumber / lessonsPerMap)\n\n    options.push({\n      value: lessonNumber.toFixed(),\n      label: `Lesson ${lessonNumber} - Map ${mapNumber}`,\n    })\n  }\n  return options\n}\n\nfunction generateMapOptions(numberOfMaps: number) {\n  const options = []\n  let i = 0\n\n  for (i; i < numberOfMaps; i++) {\n    const mapNumber = i + 1\n\n    options.push({\n      value: mapNumber.toFixed(),\n      label: ` Map ${mapNumber}`,\n    })\n  }\n  return options\n}\n","import { inject as service } from '@ember/service'\nimport Controller from '@ember/controller'\nimport { set, action } from '@ember/object'\nimport config from 'mathseeds-client/config/environment'\nimport { calculateMap } from 'mathseeds-client/utils/progress-tools'\nimport { debugAction, debugValue } from 'mathseeds-client/utils/debug'\nimport { graphql } from 'mathseeds-client/graphql'\nimport { v4 as uuidV4 } from 'uuid'\nimport ky from 'ky'\nimport { isTesting, macroCondition } from '@embroider/macros'\nimport type ApolloService from 'mathseeds-client/services/apollo'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\nimport type MyLessonsService from 'mathseeds-client/services/my-lessons'\nimport type AssignmentsService from 'mathseeds-client/services/assignments'\nimport type { FeatureService } from '@blakeelearning/features'\nimport type { MinigameAuthService } from '@blakeelearning/minigame-auth'\nimport type UserService from 'mathseeds-client/services/user'\nimport type RouterService from '@ember/routing/router-service'\nimport type LoadingUiService from 'mathseeds-client/services/loading-ui'\nimport type ActivitySidebarService from 'mathseeds-client/services/activity-sidebar'\nimport type QuestService from 'mathseeds-client/services/quest'\nimport type SessionService from 'mathseeds-client/services/session'\nimport type ErrorHandlerService from 'mathseeds-client/services/error-handler'\nimport type IndexRoute from 'mathseeds-client/routes/lesson/activity/index'\nimport type { RouteModel } from '@ember/routing/router-service'\nimport type { ModelFor } from 'mathseeds-client/utils/route-model'\n\nconst quizPassPercentage = 65\n\ninterface QuizProgressResults {\n  area?: string\n  attempts?: number\n  topic?: string\n  question_answers?: {\n    question_number?: number\n    question?: string\n    instruction?: string\n    correct?: boolean\n    correct_answer?: string\n    selected_answer?: string\n  }[]\n  uuid?: string\n}\n\nconst {\n  APP: { product },\n  studentProgress: {\n    progress: {\n      myLessons: { lessonsPerMap },\n    },\n  },\n} = config\n\nconst myLessonsActivityResultCreateMutationDocument = graphql(/* GraphQL */ `\n  mutation myLessonsActivityResultCreate(\n    $input: MyLessonsActivityResultCreateInput!\n  ) {\n    myLessonsActivityResultCreate(input: $input) {\n      myLessonsActivityResult {\n        reward {\n          acorns\n        }\n      }\n      student {\n        id\n        ...StudentProgressFragment\n        ...AssignmentTask\n        ...StudentQuestDataFragment\n      }\n    }\n  }\n`)\n\nconst quizDebugAnswers = (correctCount: number, totalCount: number) => {\n  return {\n    area: 'debug mode',\n    attempts: 1,\n    topic: 'debug mode',\n    question_answers: new Array(totalCount).fill(undefined).map((_, i) => {\n      const correct = i < correctCount\n      const correct_answer = `debug mode correct answer ${i}`\n      const selected_answer = correct\n        ? correct_answer\n        : `debug mode incorrect answer ${i}`\n\n      return {\n        question_number: i + 1,\n        question: `debug mode question ${i}`,\n        instruction: `debug mode instruction ${i}`,\n        correct,\n        correct_answer,\n        selected_answer,\n      }\n    }),\n  }\n}\n\nexport default class IndexController extends Controller {\n  @service\n  declare apollo: ApolloService\n\n  @service\n  declare studentProgress: StudentProgressService\n\n  @service('my-lessons')\n  declare policy: MyLessonsService\n\n  @service\n  declare assignments: AssignmentsService\n\n  @service\n  declare features: FeatureService\n\n  @service\n  declare minigameAuth: MinigameAuthService\n\n  @service\n  declare user: UserService\n\n  @service\n  declare router: RouterService\n\n  @service\n  declare loadingUi: LoadingUiService\n\n  @service\n  declare activitySidebar: ActivitySidebarService\n\n  @service\n  declare quest: QuestService\n\n  @service\n  declare session: SessionService\n\n  @service\n  declare errorHandler: ErrorHandlerService\n\n  declare model: ModelFor<IndexRoute>\n\n  get lessonId() {\n    return this.model.lesson.id\n  }\n\n  get activityId() {\n    return this.model.id\n  }\n\n  get activityIndex() {\n    return this.activityId - 1\n  }\n\n  get nextActivity() {\n    return this.model.lesson.nextActivity(this.activityIndex)\n  }\n\n  nextable = false\n\n  enableMinigame() {\n    const { minigameName } = this.model\n    if (minigameName) this.minigameAuth.enableGameNamed(minigameName)\n  }\n\n  studentPassedQuiz(correct: number, total: number) {\n    const passed = (correct / total) * 100 >= quizPassPercentage\n    return passed\n  }\n\n  get currentAssignmentTaskForActivity() {\n    if (\n      this.assignments.currentTask?.__typename === 'AssignmentTaskMyLessons' &&\n      this.assignments.canCompleteLessonAssignmentTask(\n        this.lessonId,\n        this.activityId,\n      )\n    ) {\n      return this.assignments.currentTask\n    }\n\n    return undefined\n  }\n\n  get studentContext() {\n    const currentTask = this.currentAssignmentTaskForActivity\n\n    return {\n      product,\n      precinct: 'my_lessons',\n      remoteId: this.user.student.remoteId,\n      taskId: currentTask?.id,\n      assignmentUuid: currentTask?.assignmentUuid,\n    }\n  }\n\n  get currentPositionTitle() {\n    if (this.isAssignmentMode) return this.lessonId\n    const currentLesson = this.studentProgress.myLessonsCurrentLesson\n    return currentLesson === 'quiz' ? 'Quiz' : currentLesson\n  }\n\n  get isAssignmentMode() {\n    return this.model.isAssignment\n  }\n\n  get mapId() {\n    return calculateMap(Number(this.lessonId), lessonsPerMap)\n  }\n\n  get renderQuestAlert() {\n    return this.quest.showQuestAlert\n  }\n\n  get shouldLogout() {\n    return (\n      this.user.student.rosterEnabled &&\n      this.isAssignmentMode &&\n      !this.assignments.currentTask\n    )\n  }\n\n  @action\n  changeActivity(newActivityID: number) {\n    if (this.policy.canPlayLessonActivity(this.lessonId, newActivityID)) {\n      this.router.transitionTo('lesson.activity', newActivityID)\n    }\n  }\n\n  @action\n  incrementScore(amount: number) {\n    this.user.incrementAcorns(amount)\n  }\n\n  @action\n  next() {\n    if (this.shouldLogout) {\n      this.session.signOut()\n      return\n    }\n\n    let nextRoute: [string, RouteModel] = ['map', this.mapId]\n\n    if (this.nextActivity) {\n      this.activitySidebar.close()\n      // Reset nextable so the check for: 'was false and is now true' in the component.\n      this.resetNextable()\n\n      nextRoute = ['lesson.activity', this.nextActivity.id]\n    }\n\n    this.quest.displayQuestAlertIfRequired(nextRoute)\n  }\n\n  @action\n  resetNextable() {\n    set(this, 'nextable', false)\n  }\n\n  @action\n  async saveQuizProgress({\n    area,\n    attempts,\n    topic,\n    question_answers,\n    uuid,\n  }: QuizProgressResults = {}) {\n    const activity = this.activityId\n    const lesson = this.lessonId\n    const attemptUuid = uuid ?? uuidV4()\n    const currentTask = this.currentAssignmentTaskForActivity\n    const json = {\n      student_event: {\n        event_type: 'CompleteLessonQuiz',\n        precinct: 'my_lessons',\n        // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-conversion -- lesson.id is typed as string, but some callers/tests still pass a number\n        lesson: lesson.toString(),\n        activity: activity.toString(),\n        attempts: attempts?.toString(),\n        area,\n        topic,\n        question_answers: question_answers?.map(\n          ({\n            question_number,\n            question,\n            instruction,\n            correct,\n            correct_answer,\n            selected_answer,\n          }) => ({\n            question_number: question_number?.toString(),\n            question,\n            instruction,\n            correct: correct?.toString(),\n            correct_answer: correct_answer?.toString(),\n            selected_answer: selected_answer?.toString(),\n          }),\n        ),\n        assignment_task_id: currentTask?.id.toString(),\n        assignment_uuid: currentTask?.assignmentUuid,\n        attempt_uuid: attemptUuid,\n      },\n    }\n\n    // This prevents retries from slowing down tests\n    let delayOpts\n    if (macroCondition(isTesting())) {\n      delayOpts = { delay: () => 0 }\n    }\n\n    try {\n      const { passed } = await ky\n        .post('student_events', {\n          credentials: 'include',\n          json,\n          prefixUrl: config.studentOperationsUrl,\n          retry: {\n            limit: 3,\n            methods: ['post'],\n            ...delayOpts,\n          },\n          timeout: false,\n        })\n        .json<{ passed: boolean }>()\n\n      await Promise.all([\n        this.user.refetch(),\n        this.studentProgress.fetchProgress(),\n        this.assignments.fetch(),\n        this.quest.fetch(),\n      ])\n\n      if (passed) {\n        this.enableMinigame()\n      }\n\n      return passed\n    } catch (error) {\n      this.errorHandler.handleError(error)\n      throw error\n    }\n  }\n\n  @action\n  async saveProgress(args: { uuid?: string } = {}) {\n    const { activityId, lessonId } = this\n\n    const currentTask = this.currentAssignmentTaskForActivity\n    const assignment = currentTask && {\n      assignmentTaskId: Number(currentTask.id),\n      assignmentUuid: currentTask.assignmentUuid,\n    }\n\n    try {\n      await this.apollo.mutate({\n        mutation: myLessonsActivityResultCreateMutationDocument,\n        variables: {\n          input: {\n            lessonInPrecinct: Number(lessonId),\n            activityInLesson: activityId,\n            attemptUuid: args.uuid ?? uuidV4(),\n            ...(assignment ? { assignment } : {}),\n          },\n        },\n      })\n    } catch (error) {\n      this.errorHandler.handleError(error)\n      throw error\n    }\n    set(this, 'nextable', true)\n  }\n\n  @action\n  goToMinigame() {\n    this.router.transitionTo(\n      'lesson.activity.minigame',\n      this.lessonId,\n      this.activityId,\n    )\n  }\n\n  @action\n  goToMap() {\n    this.router.transitionTo('map', this.mapId)\n  }\n\n  @action\n  goToLobby() {\n    this.router.transitionTo('index')\n  }\n\n  @action\n  hideLoadingScreen() {\n    this.loadingUi.hide()\n  }\n\n  @debugAction()\n  @action\n  async completeActivity() {\n    if (this.model.isLastActivity) {\n      console.debug('The final activity is a quiz, use Complete quiz instead')\n      return\n    }\n    await this.saveProgress()\n    this.next()\n  }\n\n  @debugAction({\n    quizResult: {\n      type: 'select',\n      options: [\n        { label: '7/10', value: 'a' },\n        { label: '8/10', value: 'b' },\n        { label: '9/10', value: 'c' },\n        { label: '10/10', value: 'd' },\n      ],\n      values: {\n        a: quizDebugAnswers(7, 10),\n        b: quizDebugAnswers(8, 10),\n        c: quizDebugAnswers(9, 10),\n        d: quizDebugAnswers(10, 10),\n      },\n    },\n  })\n  @action\n  async completeQuiz({ quizResult }: { quizResult: QuizProgressResults }) {\n    if (!this.model.isLastActivity) {\n      console.debug(\n        'Only the final activity is a quiz, use Complete activity instead',\n      )\n      return\n    }\n\n    await this.saveQuizProgress(quizResult)\n\n    if (this.model.minigameName) {\n      this.goToMinigame()\n    } else {\n      this.next()\n    }\n  }\n\n  @debugValue()\n  get currentQuest() {\n    return this.quest.currentQuest\n  }\n}\n","import { action } from '@ember/object'\nimport { inject as service } from '@ember/service'\nimport ky from 'ky'\nimport Controller from '@ember/controller'\nimport ENV from 'mathseeds-client/config/environment'\nimport { calculateMap } from 'mathseeds-client/utils/progress-tools'\nimport { debugAction } from 'mathseeds-client/utils/debug'\nimport type UserService from 'mathseeds-client/services/user'\nimport type DebugModeService from 'mathseeds-client/services/debug-mode'\nimport type RouterService from '@ember/routing/router-service'\nimport type AssignmentsService from 'mathseeds-client/services/assignments'\nimport type ErrorHandlerService from 'mathseeds-client/services/error-handler'\nimport type MinigameRoute from 'mathseeds-client/routes/lesson/activity/minigame'\nimport type SessionService from 'mathseeds-client/services/session'\nimport type { ModelFor } from 'mathseeds-client/utils/route-model'\n\nexport default class MinigameController extends Controller {\n  @service\n  declare user: UserService\n\n  @service\n  declare debugMode: DebugModeService\n\n  @service\n  declare router: RouterService\n\n  @service\n  declare assignments: AssignmentsService\n\n  @service\n  declare session: SessionService\n\n  @service\n  declare errorHandler: ErrorHandlerService\n\n  declare model: ModelFor<MinigameRoute>\n\n  get student() {\n    return this.user.student\n  }\n\n  get activityIndex() {\n    return this.model.activityId - 1\n  }\n\n  get nextActivity() {\n    const { activityIndex } = this\n    return this.model.lesson.nextActivity(activityIndex)\n  }\n\n  get isAssignmentMode() {\n    return this.model.isAssignment\n  }\n\n  get shouldLogout() {\n    return (\n      this.student.rosterEnabled &&\n      this.isAssignmentMode &&\n      !this.assignments.currentTask\n    )\n  }\n\n  @action\n  async saveScore({ score }: { score: number }) {\n    const gameId = this.model.name\n\n    try {\n      await ky.post(\n        `${ENV.APP.apiEndpoint ?? '/'}${ENV.APP.apiNamespace}/minigames_scores`,\n        {\n          json: { minigame_name: gameId, score },\n        },\n      )\n    } catch (error) {\n      this.errorHandler.handleError(error)\n      throw error\n    }\n  }\n\n  @action\n  next() {\n    if (this.shouldLogout) {\n      this.session.signOut()\n      return\n    }\n\n    const nextActivityId = this.nextActivity?.id\n\n    if (nextActivityId) {\n      this.router.transitionTo('lesson.activity', nextActivityId)\n    } else {\n      this.send('goToMap')\n    }\n  }\n\n  @action\n  goToMap() {\n    const currentLesson = Number(this.model.lesson.id)\n    const { lessonsPerMap } = ENV.studentProgress.progress.myLessons\n    const nextMap = calculateMap(currentLesson, lessonsPerMap)\n    this.router.transitionTo('map', nextMap)\n  }\n\n  @action\n  goBack() {\n    this.router.transitionTo('lesson.activity')\n  }\n\n  @debugAction({\n    score: { type: 'number', value: '5000' },\n  })\n  @action\n  async save({ score }: { score: number }) {\n    await this.saveScore({ score })\n    this.next()\n  }\n}\n","import { action } from '@ember/object'\nimport Controller from '@ember/controller'\nimport { inject as service } from '@ember/service'\nimport type RouterService from '@ember/routing/router-service'\nimport type IndexRoute from 'mathseeds-client/routes/map/index'\nimport type { ModelFrom } from 'mathseeds-client/utils/type-utils'\n\nexport default class IndexController extends Controller {\n  @service\n  declare router: RouterService\n\n  declare model: ModelFrom<IndexRoute>\n\n  get map() {\n    return this.model.map\n  }\n\n  // stepIndex is the refers to the index a lesson\n  @action\n  playLesson(stepIndex: number) {\n    const lessonId = this.map.findLessonIdForStep(stepIndex)\n    return this.router.transitionTo('lesson', lessonId)\n  }\n\n  @action\n  playQuiz() {\n    return this.router.transitionTo('map.quiz', this.map.id)\n  }\n\n  @action\n  previousMap() {\n    return this.router.transitionTo('map.index', this.map.previousMapId)\n  }\n\n  @action\n  nextMap() {\n    return this.router.transitionTo('map.index', this.map.nextMapId)\n  }\n}\n","import { action } from '@ember/object'\nimport { inject as service } from '@ember/service'\nimport Controller from '@ember/controller'\nimport config from 'mathseeds-client/config/environment'\nimport { debugAction } from 'mathseeds-client/utils/debug'\nimport ky from 'ky'\nimport { isTesting, macroCondition } from '@embroider/macros'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\nimport type ErrorHandlerService from 'mathseeds-client/services/error-handler'\nimport type UserService from 'mathseeds-client/services/user'\nimport type RouterService from '@ember/routing/router-service'\nimport type QuestService from 'mathseeds-client/services/quest'\nimport type { FeatureService } from '@blakeelearning/features'\nimport type QuizRoute from 'mathseeds-client/routes/map/quiz'\nimport type { ModelFrom } from 'mathseeds-client/utils/type-utils'\n\nexport default class QuizController extends Controller {\n  @service\n  declare studentProgress: StudentProgressService\n\n  @service\n  declare errorHandler: ErrorHandlerService\n\n  @service\n  declare user: UserService\n\n  @service\n  declare router: RouterService\n\n  @service\n  declare quest: QuestService\n\n  @service\n  declare features: FeatureService\n\n  declare model: ModelFrom<QuizRoute> | undefined\n\n  get student() {\n    return this.user.student\n  }\n\n  get renderQuestAlert() {\n    return this.quest.showQuestAlert\n  }\n\n  @action\n  incrementScore(amount: number) {\n    this.user.incrementAcorns(amount)\n  }\n\n  @action\n  async quizCompleted(results: {\n    correct_count?: number\n    incorrect_count?: number\n    total_count?: number\n  }) {\n    const mapNumber = this.model?.id\n    const {\n      correct_count: correctCount,\n      incorrect_count: incorrectCount,\n      total_count: totalCount,\n    } = results\n\n    const json = {\n      student_event: {\n        event_type: 'CompleteMapQuiz',\n        precinct: 'my_lessons',\n        quiz: mapNumber?.toString(),\n        correct_count: correctCount?.toString(),\n        total_count: (incorrectCount !== undefined && correctCount !== undefined\n          ? correctCount + incorrectCount\n          : totalCount\n        )?.toString(),\n      },\n    }\n\n    // This prevents retries from slowing down tests\n    let delayOpts\n    if (macroCondition(isTesting())) {\n      delayOpts = { delay: () => 0 }\n    }\n\n    try {\n      // Bypass @blakeelearning/student-operations here: its `_createEvent`\n      // uses ky's defaults (10s timeout, no POST retries), so a slow\n      // student_events call throws a TimeoutError that isn't recognised as\n      // a network error and the completion is lost. Post directly instead,\n      // matching the retry/timeout override used for CompleteLessonQuiz and\n      // CompleteMentalMinuteQuiz elsewhere in this app.\n      await ky\n        .post('student_events', {\n          credentials: 'include',\n          json,\n          prefixUrl: config.studentOperationsUrl,\n          retry: {\n            limit: 3,\n            methods: ['post'],\n            ...delayOpts,\n          },\n          timeout: false,\n        })\n        .json()\n\n      await Promise.all([\n        this.studentProgress.fetchProgress(),\n        this.quest.fetch(),\n      ])\n    } catch (error) {\n      this.errorHandler.handleError(error)\n      throw error\n    }\n  }\n\n  @action\n  nextMap() {\n    const nextRoute: [string] = ['map.next']\n\n    this.quest.displayQuestAlertIfRequired(nextRoute)\n  }\n\n  @debugAction({\n    quizResult: {\n      type: 'select',\n      options: [\n        { label: '15/15 - Pass', value: '15' },\n        { label: '10/15 - Pass', value: '10' },\n        { label: '5/15 - Fail', value: '5' },\n        { label: '0/15 - Fail', value: '0' },\n      ],\n      values: {\n        15: { correctCount: 15, totalCount: 15 },\n        10: { correctCount: 10, totalCount: 15 },\n        5: { correctCount: 5, totalCount: 15 },\n        0: { correctCount: 0, totalCount: 15 },\n      },\n    },\n  })\n  @action\n  async completeQuiz({\n    quizResult,\n  }: {\n    quizResult: { correctCount: number; totalCount: number }\n  }) {\n    const { correctCount, totalCount } = quizResult\n    await this.quizCompleted({\n      correct_count: correctCount,\n      incorrect_count: totalCount - correctCount,\n      total_count: totalCount,\n    })\n\n    const passed = correctCount / totalCount >= 0.65\n    if (passed) this.nextMap()\n  }\n}\n","import { action } from '@ember/object'\nimport { assert } from '@ember/debug'\nimport { inject as service } from '@ember/service'\nimport Controller from '@ember/controller'\nimport { dasherize } from '@ember/string'\nimport type MentalMinuteProgressPolicyService from 'mathseeds-client/services/mental-minute-progress-policy'\nimport { currentLessonIdForLessonSetId } from 'mathseeds-client/services/mental-minute-progress-policy'\nimport {\n  getLatestLessonSetUpdatedAt,\n  getLessonSetUpdatedAt,\n} from 'mathseeds-client/utils/mental-minute-sets'\nimport type { MentalMinuteLessonSetId } from 'mathseeds-client/utils/mental-minute-sets'\nimport { setShouldRefresh } from 'mathseeds-client/utils/mental-minute-sets/lessons'\nimport { mentalMinuteLessonIdFromRouteInfo } from 'mathseeds-client/utils/mental-minute-sets/lessons/lesson'\nimport { lessonsContentSpec } from '@blakeelearning/content-specs-mathseeds'\nimport type { LessonsContentSpec } from '@blakeelearning/content-specs-mathseeds'\nimport type { ContentActions } from '@blakeelearning/messenger'\nimport { contentError } from 'mathseeds-client/utils/errors'\nimport config from 'mathseeds-client/config/environment'\nimport ky from 'ky'\nimport { isTesting, macroCondition } from '@embroider/macros'\nimport { v4 as uuidV4 } from 'uuid'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\nimport type { Log } from '@blakeelearning/log'\nimport type RouterService from '@ember/routing/router-service'\nimport type UserService from 'mathseeds-client/services/user'\nimport type CertificateService from 'mathseeds-client/services/certificate'\nimport type LoadingUiService from 'mathseeds-client/services/loading-ui'\n\nexport default class LessonsController\n  extends Controller\n  implements ContentActions<LessonsContentSpec>\n{\n  @service\n  declare studentProgress: StudentProgressService\n\n  @service\n  declare log: Log\n\n  @service('mental-minute-progress-policy')\n  declare progressPolicy: MentalMinuteProgressPolicyService\n\n  @service\n  declare router: RouterService\n\n  @service\n  declare user: UserService\n\n  @service\n  declare certificate: CertificateService\n\n  @service\n  declare loadingUi: LoadingUiService\n\n  @action\n  readyForUserInput() {\n    this.loadingUi.hide()\n  }\n\n  @action\n  goToLobby() {\n    this.router.transitionTo('index')\n  }\n\n  @action\n  goToWelcomeScreen({ reload } = { reload: false }) {\n    const transition = this.router.transitionTo('mental-minute-sets.lessons')\n    if (reload) setShouldRefresh(transition)\n  }\n\n  /**\n   * Posts the result of the end of the quiz to backend.\n   * And updates the precinct progress in the store\n   * @param {Object} results - The results object\n   * @param {Number} results.correct_count - The number of correct answers\n   * @param {Number} results.total_count - The total number of answers\n   * @param {Number} results.lesson_id - The ID number of the lesson\n   */\n  @action\n  async completeQuiz({\n    correct_count: correctCount,\n    total_count: totalCount,\n    lesson_id: lessonId,\n    uuid: attemptUuid,\n  }: {\n    correct_count: number\n    total_count: number\n    lesson_id: number\n    uuid?: string\n  }) {\n    try {\n      const json = {\n        student_event: {\n          event_type: 'CompleteMentalMinuteQuiz',\n          precinct: 'mental_minute',\n          lesson: lessonId.toString(),\n          correct_count: correctCount.toString(),\n          total_count: totalCount.toString(),\n          attempt_uuid: attemptUuid ?? uuidV4(),\n        },\n      }\n\n      // This prevents retries from slowing down tests\n      let delayOpts\n      if (macroCondition(isTesting())) {\n        delayOpts = { delay: () => 0 }\n      }\n\n      const response = await ky\n        .post('student_events', {\n          credentials: 'include',\n          json,\n          prefixUrl: config.studentOperationsUrl,\n          retry: {\n            limit: 3,\n            methods: ['post'],\n            ...delayOpts,\n          },\n          timeout: false,\n        })\n        .json()\n\n      await this.studentProgress.fetchProgress()\n      // Update acorns\n      await this.user.refetch()\n\n      return response\n    } catch (error) {\n      this.log.error(\n        'sending mental minute quiz results failed',\n        error as Error,\n      )\n      throw contentError('SavingQuizResultsFailed', error)\n    }\n  }\n\n  @action\n  goToLesson({ lessonId, reload }: { lessonId: number; reload: boolean }) {\n    const transition = this.router.transitionTo(\n      'mental-minute-sets.lessons.lesson',\n      lessonId,\n    )\n    if (reload) setShouldRefresh(transition)\n  }\n\n  @action\n  goToNextLesson(\n    {\n      reload,\n      lessonSet,\n    }: {\n      reload: boolean\n      lessonSet?: MentalMinuteLessonSetId\n    } = { reload: false },\n  ) {\n    let nextLessonId: number | undefined\n    if (lessonSet) {\n      nextLessonId = currentLessonIdForLessonSetId(\n        lessonSet,\n        this.studentProgress.mentalMinute,\n      )\n    } else {\n      const previousLessonId = mentalMinuteLessonIdFromRouteInfo(\n        this.router.currentRoute,\n      )\n      nextLessonId = this.progressPolicy.nextLessonId({ previousLessonId })\n    }\n    assert('there must be a next lesson to go to', nextLessonId !== undefined)\n    this.goToLesson({ lessonId: nextLessonId, reload })\n  }\n\n  @action\n  goToProgress({ showBadges }: { showBadges: boolean }) {\n    const queryParams = { queryParams: { showBadges } }\n    this.router.transitionTo('mental-minute-sets.progress', queryParams)\n  }\n\n  /**\n   * Called by the lesson activity to print a mental minute lesson set certificate.\n   */\n  @action\n  async printLessonSetCertificate({\n    lessonSetId,\n  }: {\n    lessonSetId: MentalMinuteLessonSetId\n  }) {\n    const unixTimeSeconds = getLessonSetUpdatedAt(\n      this.studentProgress.mentalMinute,\n      lessonSetId,\n    )\n    try {\n      await this.certificate.printMentalMinuteCertificate({\n        templateId: `${dasherize(lessonSetId)}-certificate`,\n        name: this.user.student.name,\n        timestamp: unixTimeSeconds ? unixTimeSeconds * 1000 : Date.now(),\n        locale: this.user.student.locale,\n      })\n    } catch (error) {\n      throw contentError('PrintFailed', error)\n    }\n  }\n\n  /**\n   * Called by the lesson activity to print the mental minute program certificate.\n   */\n  @action\n  async printProgramCertificate() {\n    const unixTimeSeconds = getLatestLessonSetUpdatedAt(\n      this.studentProgress.mentalMinute,\n    )\n    try {\n      await this.certificate.printMentalMinuteCertificate({\n        templateId: `program-certificate`,\n        name: this.user.student.name,\n        timestamp: unixTimeSeconds ? unixTimeSeconds * 1000 : Date.now(),\n        locale: this.user.student.locale,\n      })\n    } catch (error) {\n      throw contentError('PrintFailed', error)\n    }\n  }\n\n  @action\n  unhandledError() {}\n\n  get contentSpec() {\n    return lessonsContentSpec\n  }\n}\n\ndeclare module '@ember/controller' {\n  interface Registry {\n    lessons: LessonsController\n  }\n}\n","import { action } from '@ember/object'\nimport { inject as service } from '@ember/service'\nimport Controller from '@ember/controller'\nimport { currentLessonIdForLessonSetId } from 'mathseeds-client/services/mental-minute-progress-policy'\nimport { progressContentSpec } from '@blakeelearning/content-specs-mathseeds'\nimport type { ProgressContentSpec } from '@blakeelearning/content-specs-mathseeds'\nimport type { ContentActions } from '@blakeelearning/messenger'\nimport { contentError } from 'mathseeds-client/utils/errors'\nimport type UserService from 'mathseeds-client/services/user'\nimport type CertificateService from 'mathseeds-client/services/certificate'\nimport type LoadingUiService from 'mathseeds-client/services/loading-ui'\nimport type RouterService from '@ember/routing/router-service'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\nimport type { MentalMinuteLessonSetId } from 'mathseeds-client/utils/mental-minute-sets'\n\nconst badgeCategoryOffsetForAreaId = {\n  space: 'addition1',\n  medieval: 'addition2',\n  'fruit-n-veg': 'addition3',\n  fantasy: 'addition4',\n  'under-the-sea': 'subtraction1',\n  aztec: 'subtraction2',\n  'bees-knees': 'subtraction3',\n  farmyard: 'subtraction4',\n  circus: 'multiplication1',\n  egypt: 'multiplication2',\n  rainforest: 'division1',\n  africa: 'division2',\n}\n\nexport default class ProgressController\n  extends Controller\n  implements ContentActions<ProgressContentSpec>\n{\n  override queryParams = ['showBadges']\n\n  showBadges = false\n\n  @service\n  declare router: RouterService\n\n  @service\n  declare user: UserService\n\n  @service\n  declare certificate: CertificateService\n\n  @service\n  declare loadingUi: LoadingUiService\n\n  @service\n  declare studentProgress: StudentProgressService\n\n  @action\n  readyForUserInput() {\n    this.loadingUi.hide()\n  }\n\n  @action\n  goToLobby() {\n    this.router.transitionTo('index')\n  }\n\n  @action\n  goToWelcomeScreen({ reload } = { reload: false }) {\n    if (reload) {\n      this.router.transitionTo('mental-minute-sets.lessons', {\n        queryParams: { reload },\n      })\n    } else {\n      this.router.transitionTo('mental-minute-sets.lessons')\n    }\n  }\n\n  @action\n  goToLesson({\n    lessonId,\n    reload = false,\n  }: {\n    lessonId: number\n    reload?: boolean\n  }) {\n    this.router.transitionTo('mental-minute-sets.lessons.lesson', lessonId, {\n      queryParams: { reload },\n    })\n  }\n\n  @action\n  goToNextLesson(\n    {\n      lessonSet,\n      reload,\n    }: {\n      lessonSet?: MentalMinuteLessonSetId\n      reload: boolean\n    } = { reload: false },\n  ) {\n    let lessonId: number | undefined\n    if (lessonSet) {\n      lessonId = currentLessonIdForLessonSetId(\n        lessonSet,\n        this.studentProgress.mentalMinute,\n      )\n      this.goToLesson({ lessonId, reload })\n    } else {\n      // next lesson is unknown, transition to welcome screen\n      this.router.transitionTo('mental-minute-sets.lessons')\n    }\n  }\n\n  @action\n  async printBadgeCertificate({\n    areaId,\n  }: {\n    areaId: keyof typeof badgeCategoryOffsetForAreaId\n  }) {\n    const categoryOffset = badgeCategoryOffsetForAreaId[areaId]\n\n    try {\n      await this.certificate.printMentalMinuteCertificate({\n        templateId: `badges-${categoryOffset}-${areaId}-certificate`,\n        name: this.user.student.name,\n        timestamp: Date.now(), // TODO: maybe we want to try and derive this from progress data some how...\n        locale: this.user.student.locale,\n      })\n    } catch (error) {\n      throw contentError('PrintFailed', error)\n    }\n  }\n\n  @action\n  unhandledError() {}\n\n  get contentSpec() {\n    return progressContentSpec\n  }\n}\n\ndeclare module '@ember/controller' {\n  interface Registry {\n    progress: ProgressController\n  }\n}\n","import { action } from '@ember/object'\nimport { inject as service } from '@ember/service'\nimport type RouterService from '@ember/routing/router-service'\nimport Controller from '@ember/controller'\nimport type WindowService from 'mathseeds-client/services/window'\n\nexport default class NetworkErrorController extends Controller {\n  override queryParams = ['previousUrl']\n\n  previousUrl: string | null = null\n\n  @service\n  declare router: RouterService\n\n  @service\n  declare window: WindowService\n\n  @action\n  reload() {\n    this.window.location.replace(this.previousUrl ?? '/')\n  }\n}\n","import { action } from '@ember/object'\nimport { inject as service } from '@ember/service'\nimport Controller from '@ember/controller'\nimport config from 'mathseeds-client/config/environment'\nimport { tracked } from '@glimmer/tracking'\nimport type { StudentOperationsService } from '@blakeelearning/student-operations'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\nimport type UserService from 'mathseeds-client/services/user'\nimport type RouterService from '@ember/routing/router-service'\nimport type ErrorHandlerService from 'mathseeds-client/services/error-handler'\n\nconst {\n  APP: { product },\n  studentProgress: {\n    progress: {\n      myLessons: { lessonsPerMap },\n    },\n  },\n} = config\n\n/**\n * The placement test controller\n *\n * @class PlacementTestController\n * @extends Ember.Controller\n */\n\n// eslint-disable-next-line ember/no-test-import-export\nexport default class PlacementTestController extends Controller {\n  @service\n  declare operations: StudentOperationsService\n\n  @service\n  declare studentProgress: StudentProgressService\n\n  @service\n  declare user: UserService\n\n  @service\n  declare router: RouterService\n\n  @service\n  declare errorHandler: ErrorHandlerService\n\n  @tracked\n  nextable = false\n\n  get studentContext() {\n    return {\n      product,\n      precinct: 'my_lessons',\n      remoteId: this.user.student.remoteId,\n    }\n  }\n\n  /**\n   * Places a student based on a mapId, this mapId typically comes from a\n   * caper placement test.\n   *\n   * @instance\n   * @memberOf PlacementTestController\n   *\n   * @param {Number} mapId The map id to place for, e.g., 1, 2, 23, etc.\n   */\n  @action\n  async completeTest(mapId: number, skipped = false) {\n    const lessonId = (mapId - 1) * lessonsPerMap + 1\n\n    try {\n      await this.operations.completePlacement(\n        this.studentContext,\n        lessonId,\n        skipped,\n      )\n      await this.studentProgress.fetchProgress()\n\n      this.nextable = true\n    } catch (error) {\n      this.errorHandler.handleError(error)\n      throw error\n    }\n  }\n\n  /**\n   * Transitions to the map at the student's current level of progress.\n   *\n   * @instance\n   * @memberOf PlacementTestController\n   */\n  @action\n  finishTest() {\n    this.router.transitionTo('map', this.studentProgress.myLessonsCurrentMap)\n  }\n}\n","import { action } from '@ember/object'\nimport Controller from '@ember/controller'\nimport { inject as service } from '@ember/service'\nimport type RouterService from '@ember/routing/router-service'\nimport type LoadingUiService from 'mathseeds-client/services/loading-ui'\n\nexport default class ActivityController extends Controller {\n  @service\n  declare router: RouterService\n\n  @service\n  declare loadingUi: LoadingUiService\n\n  @action\n  goBack() {\n    this.router.transitionTo('playroom')\n  }\n\n  @action\n  hideLoadingScreen() {\n    this.loadingUi.hide()\n  }\n}\n","import { action } from '@ember/object'\nimport Controller from '@ember/controller'\nimport { inject as service } from '@ember/service'\nimport type RouterService from '@ember/routing/router-service'\n\nexport default class IndexController extends Controller {\n  @service\n  declare router: RouterService\n\n  @action\n  playActivity(name: string, type: string) {\n    this.router.transitionTo('playroom.activity', type, name)\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Controller from '@ember/controller'\nimport { action } from '@ember/object'\n\nexport default class LessonController extends Controller {\n  @service\n  loadingUi\n\n  @action\n  next() {}\n\n  @action\n  resetNextable() {}\n\n  @action\n  saveProgress() {\n    /*\n     * Our sample lessons are designed to, once completed, return the user to\n     * the previous page in their browser history. Sample lessons are\n     * accessed via country-specific marketing sites like readingeggs.cn,\n     * readingeggs.com.au, etc, or the RE parent dashboard Sample Lessons\n     * page.\n     */\n    window.history.back()\n    return Promise.resolve()\n  }\n\n  @action\n  hideLoadingScreen() {\n    this.loadingUi.hide()\n  }\n}\n","import { action } from '@ember/object'\nimport Controller from '@ember/controller'\nimport { inject as service } from '@ember/service'\nimport type ItemsService from 'mathseeds-client/services/items'\nimport type ErrorHandlerService from 'mathseeds-client/services/error-handler'\n\nexport default class ShopController extends Controller {\n  @service\n  declare items: ItemsService\n\n  @service\n  declare errorHandler: ErrorHandlerService\n\n  @action\n  async purchase(item: { id: string }) {\n    try {\n      return await this.items.purchaseItem(item.id)\n    } catch (error) {\n      this.errorHandler.handleError(error)\n      throw error\n    }\n  }\n}\n","import { action } from '@ember/object'\nimport Controller from '@ember/controller'\nimport { inject as service } from '@ember/service'\nimport type RouterService from '@ember/routing/router-service'\nimport type ItemsService from 'mathseeds-client/services/items'\n\nexport default class TreehouseController extends Controller {\n  @service\n  declare router: RouterService\n\n  @service\n  declare items: ItemsService\n\n  @action\n  goToRewardsRoom() {\n    this.router.transitionTo('awards')\n  }\n\n  @action\n  goToChangeRoom() {\n    this.router.transitionTo('avatar')\n  }\n\n  @action\n  async setItemPosition(\n    code: string,\n    room: string | null,\n    roomGroup: number | null,\n    roomGroupIndex: number | null,\n  ) {\n    await this.items.setItemPosition(code, room, roomGroup, roomGroupIndex)\n  }\n}\n","import { action } from '@ember/object'\nimport Controller from '@ember/controller'\nimport { inject as service } from '@ember/service'\nimport type RouterService from '@ember/routing/router-service'\nimport type SessionService from 'mathseeds-client/services/session'\n\nexport default class UnauthorisedController extends Controller {\n  @service\n  declare router: RouterService\n\n  @service\n  declare session: SessionService\n\n  @action\n  login() {\n    this.session.signIn()\n  }\n}\n","import setupDeprecationWorkflow from 'ember-cli-deprecation-workflow'\n\n/**\n * Docs: https://github.com/ember-cli/ember-cli-deprecation-workflow\n */\nsetupDeprecationWorkflow({\n  /**\n    false by default, but if a developer / team wants to be more aggressive about being proactive with\n    handling their deprecations, this should be set to \"true\"\n  */\n  throwOnUnhandled: false,\n  workflow: [\n    /* ... handlers ... */\n    /* to generate this list, run your app for a while (or run the test suite),\n     * and then run in the browser console:\n     *\n     *    deprecationWorkflow.flushDeprecations()\n     *\n     * And copy the handlers here\n     */\n    /* example: */\n    /* { handler: 'silence', matchId: 'template-action' }, */\n  ],\n})\n","/* eslint-disable */\nimport * as types from './graphql';\nimport type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';\n\n/**\n * Map of all GraphQL operations in the project.\n *\n * This map has several performance disadvantages:\n * 1. It is not tree-shakeable, so it will include all operations in the project.\n * 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle.\n * 3. It does not support dead code elimination, so it will add unused operations.\n *\n * Therefore it is highly recommended to use the babel or swc plugin for production.\n * Learn more about it here: https://the-guild.dev/graphql/codegen/plugins/presets/preset-client#reducing-bundle-size\n */\ntype Documents = {\n    \"\\n  mutation studentAvatarUpdate($input: StudentAvatarUpdateInput!) {\\n    studentAvatarUpdate(input: $input) {\\n      student {\\n        ...StudentAvatarFragment\\n      }\\n    }\\n  }\\n\": typeof types.StudentAvatarUpdateDocument,\n    \"\\n  mutation myLessonsActivityResultCreate(\\n    $input: MyLessonsActivityResultCreateInput!\\n  ) {\\n    myLessonsActivityResultCreate(input: $input) {\\n      myLessonsActivityResult {\\n        reward {\\n          acorns\\n        }\\n      }\\n      student {\\n        id\\n        ...StudentProgressFragment\\n        ...AssignmentTask\\n        ...StudentQuestDataFragment\\n      }\\n    }\\n  }\\n\": typeof types.MyLessonsActivityResultCreateDocument,\n    \"\\n  query GetInitialAppData {\\n    student {\\n      ...StudentUserFragment\\n      ...StudentLocaleFragment\\n      ...StudentAvatarFragment\\n      ...AssignmentTask\\n      ...StudentProgressFragment\\n      ...StudentQuestDataFragment\\n      ...StudentItemsFragment\\n    }\\n  }\\n\": typeof types.GetInitialAppDataDocument,\n    \"\\n  query ArcadeGames {\\n    arcadeGames {\\n      cost\\n      id\\n      name\\n      title\\n    }\\n  }\\n\": typeof types.ArcadeGamesDocument,\n    \"\\n  query GetMyAwards {\\n    student {\\n      id\\n      badges {\\n        id\\n        lesson\\n        colour\\n      }\\n      certificates {\\n        mapCertificates {\\n          id\\n          url\\n          map\\n          createdAt\\n        }\\n      }\\n      progress {\\n        myLessons {\\n          currentMap\\n        }\\n      }\\n    }\\n  }\\n\": typeof types.GetMyAwardsDocument,\n    \"\\n  fragment AssignmentTask on Student {\\n    assignmentTask {\\n      ... on AssignmentTaskMyLessons {\\n        activityId\\n        assignmentUuid\\n        endAt\\n        id\\n        lessonId\\n        thumbnailUrl\\n        title\\n        targetRouteParams @client\\n      }\\n      ... on AssignmentTaskDrivingTests {\\n        assignmentUuid\\n        category\\n        endAt\\n        gradePosition\\n        gradeLessonNumber\\n        id\\n        thumbnailUrl\\n        title\\n        targetRouteParams @client\\n      }\\n      ... on Error {\\n        message\\n      }\\n      __typename\\n    }\\n  }\\n\": typeof types.AssignmentTaskFragmentDoc,\n    \"\\n  query GetStudentCurrentTask {\\n    student {\\n      __typename\\n      id\\n      ...AssignmentTask\\n    }\\n  }\\n\": typeof types.GetStudentCurrentTaskDocument,\n    \"\\n    mutation ResetMyLessonsLessonProgress(\\n      $input: StudentProgressMyLessonsLessonResetInput!\\n    ) {\\n      studentProgressMyLessonsLessonReset(input: $input) {\\n        student {\\n          id\\n          ...StudentProgressFragment\\n        }\\n      }\\n    }\\n  \": typeof types.ResetMyLessonsLessonProgressDocument,\n    \"\\n    mutation ResetMyLessonsMapQuizProgress(\\n      $input: StudentProgressMyLessonsMapQuizResetInput!\\n    ) {\\n      studentProgressMyLessonsMapQuizReset(input: $input) {\\n        student {\\n          id\\n          ...StudentProgressFragment\\n        }\\n      }\\n    }\\n  \": typeof types.ResetMyLessonsMapQuizProgressDocument,\n    \"\\n    mutation ResetMyLessonsPlacementTestProgress {\\n      studentProgressMyLessonsPlacementTestReset {\\n        student {\\n          id\\n          ...StudentProgressFragment\\n        }\\n      }\\n    }\\n  \": typeof types.ResetMyLessonsPlacementTestProgressDocument,\n    \"\\n  fragment StudentItemsFragment on Student {\\n    items {\\n      animationJson\\n      animationUrl\\n      audioUrl\\n      code\\n      footprint\\n      id\\n      imageUrl\\n      kind\\n      room\\n      roomGroup\\n      roomGroupIndex\\n    }\\n  }\\n\": typeof types.StudentItemsFragmentFragmentDoc,\n    \"\\n  mutation StudentItemPlacementUpdate(\\n    $input: StudentItemPlacementUpdateInput!\\n  ) {\\n    studentItemPlacementUpdate(input: $input) {\\n      student {\\n        id\\n        ...StudentItemsFragment\\n      }\\n    }\\n  }\\n\": typeof types.StudentItemPlacementUpdateDocument,\n    \"\\n  mutation ItemPurchase($input: ItemPurchaseInput!) {\\n    itemPurchase(input: $input) {\\n      ... on ItemPurchaseSuccess {\\n        student {\\n          id\\n          acorns\\n          ...StudentItemsFragment\\n        }\\n      }\\n      ... on ItemPurchaseInsufficientFunds {\\n        student {\\n          id\\n          acorns\\n        }\\n      }\\n    }\\n  }\\n\": typeof types.ItemPurchaseDocument,\n    \"\\n  fragment StudentQuestDataFragment on Student {\\n    id\\n    quest {\\n      primaryGoal {\\n        __typename\\n        goalType: __typename\\n        ... on QuestGoalLesson {\\n          rewardAmount\\n          id\\n          lesson\\n          progressCurrent\\n          progressTotal\\n          status\\n        }\\n        ... on QuestGoalMap {\\n          rewardAmount\\n          id\\n          map\\n          progressCurrent\\n          progressTotal\\n          status\\n        }\\n      }\\n    }\\n  }\\n\": typeof types.StudentQuestDataFragmentFragmentDoc,\n    \"\\n  query GetStudentQuest {\\n    student {\\n      ...StudentQuestDataFragment\\n    }\\n  }\\n\": typeof types.GetStudentQuestDocument,\n    \"\\n  mutation AcknowledgeQuestGoalAlert(\\n    $input: StudentQuestGoalAcknowledgeCompleteInput!\\n  ) {\\n    studentQuestGoalAcknowledgeComplete(input: $input) {\\n      student {\\n        id\\n        acorns\\n        ...StudentQuestDataFragment\\n      }\\n    }\\n  }\\n\": typeof types.AcknowledgeQuestGoalAlertDocument,\n    \"\\n  fragment StudentProgressFragment on Student {\\n    progress {\\n      drivingTests {\\n        currentGrade\\n        results {\\n          data\\n          geometry\\n          measurement\\n          number\\n          operations\\n          patterns\\n        }\\n      }\\n      myLessons {\\n        currentLesson\\n        currentMap\\n        currentActivity\\n        showPlacementTest\\n      }\\n      mentalMinute {\\n        currentLesson\\n        currentLessonSet {\\n          additionSubtraction\\n          multiplicationDivision\\n        }\\n        updatedAt {\\n          additionSubtraction\\n          multiplicationDivision\\n        }\\n      }\\n    }\\n  }\\n\": typeof types.StudentProgressFragmentFragmentDoc,\n    \"\\n  query GetProgress {\\n    student {\\n      id\\n      ...StudentProgressFragment\\n    }\\n  }\\n\": typeof types.GetProgressDocument,\n    \"\\n  fragment StudentUserFragment on Student {\\n    acorns\\n    customerType\\n    gradePosition\\n    id\\n    name\\n    firstName\\n    remoteId\\n    backgroundMusicDisabled\\n    gamesAccess\\n    playroomAccess\\n    rosterEnabled\\n  }\\n\": typeof types.StudentUserFragmentFragmentDoc,\n    \"\\n  fragment StudentAvatarFragment on Student {\\n    id\\n    avatarUrl\\n    avatarJsonUrl @client\\n    dna {\\n      arms\\n      belt\\n      dress\\n      hat\\n      head\\n      jacket\\n      legs\\n      mask\\n      necklace\\n      shirt\\n      shoes\\n      wristband\\n    }\\n  }\\n\": typeof types.StudentAvatarFragmentFragmentDoc,\n    \"\\n  fragment StudentLocaleFragment on Student {\\n    locale\\n  }\\n\": typeof types.StudentLocaleFragmentFragmentDoc,\n    \"\\n  query StudentQueryDocument {\\n    student {\\n      ...StudentUserFragment\\n      ...StudentLocaleFragment\\n      ...StudentAvatarFragment\\n    }\\n  }\\n\": typeof types.StudentQueryDocumentDocument,\n};\nconst documents: Documents = {\n    \"\\n  mutation studentAvatarUpdate($input: StudentAvatarUpdateInput!) {\\n    studentAvatarUpdate(input: $input) {\\n      student {\\n        ...StudentAvatarFragment\\n      }\\n    }\\n  }\\n\": types.StudentAvatarUpdateDocument,\n    \"\\n  mutation myLessonsActivityResultCreate(\\n    $input: MyLessonsActivityResultCreateInput!\\n  ) {\\n    myLessonsActivityResultCreate(input: $input) {\\n      myLessonsActivityResult {\\n        reward {\\n          acorns\\n        }\\n      }\\n      student {\\n        id\\n        ...StudentProgressFragment\\n        ...AssignmentTask\\n        ...StudentQuestDataFragment\\n      }\\n    }\\n  }\\n\": types.MyLessonsActivityResultCreateDocument,\n    \"\\n  query GetInitialAppData {\\n    student {\\n      ...StudentUserFragment\\n      ...StudentLocaleFragment\\n      ...StudentAvatarFragment\\n      ...AssignmentTask\\n      ...StudentProgressFragment\\n      ...StudentQuestDataFragment\\n      ...StudentItemsFragment\\n    }\\n  }\\n\": types.GetInitialAppDataDocument,\n    \"\\n  query ArcadeGames {\\n    arcadeGames {\\n      cost\\n      id\\n      name\\n      title\\n    }\\n  }\\n\": types.ArcadeGamesDocument,\n    \"\\n  query GetMyAwards {\\n    student {\\n      id\\n      badges {\\n        id\\n        lesson\\n        colour\\n      }\\n      certificates {\\n        mapCertificates {\\n          id\\n          url\\n          map\\n          createdAt\\n        }\\n      }\\n      progress {\\n        myLessons {\\n          currentMap\\n        }\\n      }\\n    }\\n  }\\n\": types.GetMyAwardsDocument,\n    \"\\n  fragment AssignmentTask on Student {\\n    assignmentTask {\\n      ... on AssignmentTaskMyLessons {\\n        activityId\\n        assignmentUuid\\n        endAt\\n        id\\n        lessonId\\n        thumbnailUrl\\n        title\\n        targetRouteParams @client\\n      }\\n      ... on AssignmentTaskDrivingTests {\\n        assignmentUuid\\n        category\\n        endAt\\n        gradePosition\\n        gradeLessonNumber\\n        id\\n        thumbnailUrl\\n        title\\n        targetRouteParams @client\\n      }\\n      ... on Error {\\n        message\\n      }\\n      __typename\\n    }\\n  }\\n\": types.AssignmentTaskFragmentDoc,\n    \"\\n  query GetStudentCurrentTask {\\n    student {\\n      __typename\\n      id\\n      ...AssignmentTask\\n    }\\n  }\\n\": types.GetStudentCurrentTaskDocument,\n    \"\\n    mutation ResetMyLessonsLessonProgress(\\n      $input: StudentProgressMyLessonsLessonResetInput!\\n    ) {\\n      studentProgressMyLessonsLessonReset(input: $input) {\\n        student {\\n          id\\n          ...StudentProgressFragment\\n        }\\n      }\\n    }\\n  \": types.ResetMyLessonsLessonProgressDocument,\n    \"\\n    mutation ResetMyLessonsMapQuizProgress(\\n      $input: StudentProgressMyLessonsMapQuizResetInput!\\n    ) {\\n      studentProgressMyLessonsMapQuizReset(input: $input) {\\n        student {\\n          id\\n          ...StudentProgressFragment\\n        }\\n      }\\n    }\\n  \": types.ResetMyLessonsMapQuizProgressDocument,\n    \"\\n    mutation ResetMyLessonsPlacementTestProgress {\\n      studentProgressMyLessonsPlacementTestReset {\\n        student {\\n          id\\n          ...StudentProgressFragment\\n        }\\n      }\\n    }\\n  \": types.ResetMyLessonsPlacementTestProgressDocument,\n    \"\\n  fragment StudentItemsFragment on Student {\\n    items {\\n      animationJson\\n      animationUrl\\n      audioUrl\\n      code\\n      footprint\\n      id\\n      imageUrl\\n      kind\\n      room\\n      roomGroup\\n      roomGroupIndex\\n    }\\n  }\\n\": types.StudentItemsFragmentFragmentDoc,\n    \"\\n  mutation StudentItemPlacementUpdate(\\n    $input: StudentItemPlacementUpdateInput!\\n  ) {\\n    studentItemPlacementUpdate(input: $input) {\\n      student {\\n        id\\n        ...StudentItemsFragment\\n      }\\n    }\\n  }\\n\": types.StudentItemPlacementUpdateDocument,\n    \"\\n  mutation ItemPurchase($input: ItemPurchaseInput!) {\\n    itemPurchase(input: $input) {\\n      ... on ItemPurchaseSuccess {\\n        student {\\n          id\\n          acorns\\n          ...StudentItemsFragment\\n        }\\n      }\\n      ... on ItemPurchaseInsufficientFunds {\\n        student {\\n          id\\n          acorns\\n        }\\n      }\\n    }\\n  }\\n\": types.ItemPurchaseDocument,\n    \"\\n  fragment StudentQuestDataFragment on Student {\\n    id\\n    quest {\\n      primaryGoal {\\n        __typename\\n        goalType: __typename\\n        ... on QuestGoalLesson {\\n          rewardAmount\\n          id\\n          lesson\\n          progressCurrent\\n          progressTotal\\n          status\\n        }\\n        ... on QuestGoalMap {\\n          rewardAmount\\n          id\\n          map\\n          progressCurrent\\n          progressTotal\\n          status\\n        }\\n      }\\n    }\\n  }\\n\": types.StudentQuestDataFragmentFragmentDoc,\n    \"\\n  query GetStudentQuest {\\n    student {\\n      ...StudentQuestDataFragment\\n    }\\n  }\\n\": types.GetStudentQuestDocument,\n    \"\\n  mutation AcknowledgeQuestGoalAlert(\\n    $input: StudentQuestGoalAcknowledgeCompleteInput!\\n  ) {\\n    studentQuestGoalAcknowledgeComplete(input: $input) {\\n      student {\\n        id\\n        acorns\\n        ...StudentQuestDataFragment\\n      }\\n    }\\n  }\\n\": types.AcknowledgeQuestGoalAlertDocument,\n    \"\\n  fragment StudentProgressFragment on Student {\\n    progress {\\n      drivingTests {\\n        currentGrade\\n        results {\\n          data\\n          geometry\\n          measurement\\n          number\\n          operations\\n          patterns\\n        }\\n      }\\n      myLessons {\\n        currentLesson\\n        currentMap\\n        currentActivity\\n        showPlacementTest\\n      }\\n      mentalMinute {\\n        currentLesson\\n        currentLessonSet {\\n          additionSubtraction\\n          multiplicationDivision\\n        }\\n        updatedAt {\\n          additionSubtraction\\n          multiplicationDivision\\n        }\\n      }\\n    }\\n  }\\n\": types.StudentProgressFragmentFragmentDoc,\n    \"\\n  query GetProgress {\\n    student {\\n      id\\n      ...StudentProgressFragment\\n    }\\n  }\\n\": types.GetProgressDocument,\n    \"\\n  fragment StudentUserFragment on Student {\\n    acorns\\n    customerType\\n    gradePosition\\n    id\\n    name\\n    firstName\\n    remoteId\\n    backgroundMusicDisabled\\n    gamesAccess\\n    playroomAccess\\n    rosterEnabled\\n  }\\n\": types.StudentUserFragmentFragmentDoc,\n    \"\\n  fragment StudentAvatarFragment on Student {\\n    id\\n    avatarUrl\\n    avatarJsonUrl @client\\n    dna {\\n      arms\\n      belt\\n      dress\\n      hat\\n      head\\n      jacket\\n      legs\\n      mask\\n      necklace\\n      shirt\\n      shoes\\n      wristband\\n    }\\n  }\\n\": types.StudentAvatarFragmentFragmentDoc,\n    \"\\n  fragment StudentLocaleFragment on Student {\\n    locale\\n  }\\n\": types.StudentLocaleFragmentFragmentDoc,\n    \"\\n  query StudentQueryDocument {\\n    student {\\n      ...StudentUserFragment\\n      ...StudentLocaleFragment\\n      ...StudentAvatarFragment\\n    }\\n  }\\n\": types.StudentQueryDocumentDocument,\n};\n\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n *\n *\n * @example\n * ```ts\n * const query = graphql(`query GetUser($id: ID!) { user(id: $id) { name } }`);\n * ```\n *\n * The query argument is unknown!\n * Please regenerate the types.\n */\nexport function graphql(source: string): unknown;\n\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n  mutation studentAvatarUpdate($input: StudentAvatarUpdateInput!) {\\n    studentAvatarUpdate(input: $input) {\\n      student {\\n        ...StudentAvatarFragment\\n      }\\n    }\\n  }\\n\"): (typeof documents)[\"\\n  mutation studentAvatarUpdate($input: StudentAvatarUpdateInput!) {\\n    studentAvatarUpdate(input: $input) {\\n      student {\\n        ...StudentAvatarFragment\\n      }\\n    }\\n  }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n  mutation myLessonsActivityResultCreate(\\n    $input: MyLessonsActivityResultCreateInput!\\n  ) {\\n    myLessonsActivityResultCreate(input: $input) {\\n      myLessonsActivityResult {\\n        reward {\\n          acorns\\n        }\\n      }\\n      student {\\n        id\\n        ...StudentProgressFragment\\n        ...AssignmentTask\\n        ...StudentQuestDataFragment\\n      }\\n    }\\n  }\\n\"): (typeof documents)[\"\\n  mutation myLessonsActivityResultCreate(\\n    $input: MyLessonsActivityResultCreateInput!\\n  ) {\\n    myLessonsActivityResultCreate(input: $input) {\\n      myLessonsActivityResult {\\n        reward {\\n          acorns\\n        }\\n      }\\n      student {\\n        id\\n        ...StudentProgressFragment\\n        ...AssignmentTask\\n        ...StudentQuestDataFragment\\n      }\\n    }\\n  }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n  query GetInitialAppData {\\n    student {\\n      ...StudentUserFragment\\n      ...StudentLocaleFragment\\n      ...StudentAvatarFragment\\n      ...AssignmentTask\\n      ...StudentProgressFragment\\n      ...StudentQuestDataFragment\\n      ...StudentItemsFragment\\n    }\\n  }\\n\"): (typeof documents)[\"\\n  query GetInitialAppData {\\n    student {\\n      ...StudentUserFragment\\n      ...StudentLocaleFragment\\n      ...StudentAvatarFragment\\n      ...AssignmentTask\\n      ...StudentProgressFragment\\n      ...StudentQuestDataFragment\\n      ...StudentItemsFragment\\n    }\\n  }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n  query ArcadeGames {\\n    arcadeGames {\\n      cost\\n      id\\n      name\\n      title\\n    }\\n  }\\n\"): (typeof documents)[\"\\n  query ArcadeGames {\\n    arcadeGames {\\n      cost\\n      id\\n      name\\n      title\\n    }\\n  }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n  query GetMyAwards {\\n    student {\\n      id\\n      badges {\\n        id\\n        lesson\\n        colour\\n      }\\n      certificates {\\n        mapCertificates {\\n          id\\n          url\\n          map\\n          createdAt\\n        }\\n      }\\n      progress {\\n        myLessons {\\n          currentMap\\n        }\\n      }\\n    }\\n  }\\n\"): (typeof documents)[\"\\n  query GetMyAwards {\\n    student {\\n      id\\n      badges {\\n        id\\n        lesson\\n        colour\\n      }\\n      certificates {\\n        mapCertificates {\\n          id\\n          url\\n          map\\n          createdAt\\n        }\\n      }\\n      progress {\\n        myLessons {\\n          currentMap\\n        }\\n      }\\n    }\\n  }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n  fragment AssignmentTask on Student {\\n    assignmentTask {\\n      ... on AssignmentTaskMyLessons {\\n        activityId\\n        assignmentUuid\\n        endAt\\n        id\\n        lessonId\\n        thumbnailUrl\\n        title\\n        targetRouteParams @client\\n      }\\n      ... on AssignmentTaskDrivingTests {\\n        assignmentUuid\\n        category\\n        endAt\\n        gradePosition\\n        gradeLessonNumber\\n        id\\n        thumbnailUrl\\n        title\\n        targetRouteParams @client\\n      }\\n      ... on Error {\\n        message\\n      }\\n      __typename\\n    }\\n  }\\n\"): (typeof documents)[\"\\n  fragment AssignmentTask on Student {\\n    assignmentTask {\\n      ... on AssignmentTaskMyLessons {\\n        activityId\\n        assignmentUuid\\n        endAt\\n        id\\n        lessonId\\n        thumbnailUrl\\n        title\\n        targetRouteParams @client\\n      }\\n      ... on AssignmentTaskDrivingTests {\\n        assignmentUuid\\n        category\\n        endAt\\n        gradePosition\\n        gradeLessonNumber\\n        id\\n        thumbnailUrl\\n        title\\n        targetRouteParams @client\\n      }\\n      ... on Error {\\n        message\\n      }\\n      __typename\\n    }\\n  }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n  query GetStudentCurrentTask {\\n    student {\\n      __typename\\n      id\\n      ...AssignmentTask\\n    }\\n  }\\n\"): (typeof documents)[\"\\n  query GetStudentCurrentTask {\\n    student {\\n      __typename\\n      id\\n      ...AssignmentTask\\n    }\\n  }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n    mutation ResetMyLessonsLessonProgress(\\n      $input: StudentProgressMyLessonsLessonResetInput!\\n    ) {\\n      studentProgressMyLessonsLessonReset(input: $input) {\\n        student {\\n          id\\n          ...StudentProgressFragment\\n        }\\n      }\\n    }\\n  \"): (typeof documents)[\"\\n    mutation ResetMyLessonsLessonProgress(\\n      $input: StudentProgressMyLessonsLessonResetInput!\\n    ) {\\n      studentProgressMyLessonsLessonReset(input: $input) {\\n        student {\\n          id\\n          ...StudentProgressFragment\\n        }\\n      }\\n    }\\n  \"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n    mutation ResetMyLessonsMapQuizProgress(\\n      $input: StudentProgressMyLessonsMapQuizResetInput!\\n    ) {\\n      studentProgressMyLessonsMapQuizReset(input: $input) {\\n        student {\\n          id\\n          ...StudentProgressFragment\\n        }\\n      }\\n    }\\n  \"): (typeof documents)[\"\\n    mutation ResetMyLessonsMapQuizProgress(\\n      $input: StudentProgressMyLessonsMapQuizResetInput!\\n    ) {\\n      studentProgressMyLessonsMapQuizReset(input: $input) {\\n        student {\\n          id\\n          ...StudentProgressFragment\\n        }\\n      }\\n    }\\n  \"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n    mutation ResetMyLessonsPlacementTestProgress {\\n      studentProgressMyLessonsPlacementTestReset {\\n        student {\\n          id\\n          ...StudentProgressFragment\\n        }\\n      }\\n    }\\n  \"): (typeof documents)[\"\\n    mutation ResetMyLessonsPlacementTestProgress {\\n      studentProgressMyLessonsPlacementTestReset {\\n        student {\\n          id\\n          ...StudentProgressFragment\\n        }\\n      }\\n    }\\n  \"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n  fragment StudentItemsFragment on Student {\\n    items {\\n      animationJson\\n      animationUrl\\n      audioUrl\\n      code\\n      footprint\\n      id\\n      imageUrl\\n      kind\\n      room\\n      roomGroup\\n      roomGroupIndex\\n    }\\n  }\\n\"): (typeof documents)[\"\\n  fragment StudentItemsFragment on Student {\\n    items {\\n      animationJson\\n      animationUrl\\n      audioUrl\\n      code\\n      footprint\\n      id\\n      imageUrl\\n      kind\\n      room\\n      roomGroup\\n      roomGroupIndex\\n    }\\n  }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n  mutation StudentItemPlacementUpdate(\\n    $input: StudentItemPlacementUpdateInput!\\n  ) {\\n    studentItemPlacementUpdate(input: $input) {\\n      student {\\n        id\\n        ...StudentItemsFragment\\n      }\\n    }\\n  }\\n\"): (typeof documents)[\"\\n  mutation StudentItemPlacementUpdate(\\n    $input: StudentItemPlacementUpdateInput!\\n  ) {\\n    studentItemPlacementUpdate(input: $input) {\\n      student {\\n        id\\n        ...StudentItemsFragment\\n      }\\n    }\\n  }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n  mutation ItemPurchase($input: ItemPurchaseInput!) {\\n    itemPurchase(input: $input) {\\n      ... on ItemPurchaseSuccess {\\n        student {\\n          id\\n          acorns\\n          ...StudentItemsFragment\\n        }\\n      }\\n      ... on ItemPurchaseInsufficientFunds {\\n        student {\\n          id\\n          acorns\\n        }\\n      }\\n    }\\n  }\\n\"): (typeof documents)[\"\\n  mutation ItemPurchase($input: ItemPurchaseInput!) {\\n    itemPurchase(input: $input) {\\n      ... on ItemPurchaseSuccess {\\n        student {\\n          id\\n          acorns\\n          ...StudentItemsFragment\\n        }\\n      }\\n      ... on ItemPurchaseInsufficientFunds {\\n        student {\\n          id\\n          acorns\\n        }\\n      }\\n    }\\n  }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n  fragment StudentQuestDataFragment on Student {\\n    id\\n    quest {\\n      primaryGoal {\\n        __typename\\n        goalType: __typename\\n        ... on QuestGoalLesson {\\n          rewardAmount\\n          id\\n          lesson\\n          progressCurrent\\n          progressTotal\\n          status\\n        }\\n        ... on QuestGoalMap {\\n          rewardAmount\\n          id\\n          map\\n          progressCurrent\\n          progressTotal\\n          status\\n        }\\n      }\\n    }\\n  }\\n\"): (typeof documents)[\"\\n  fragment StudentQuestDataFragment on Student {\\n    id\\n    quest {\\n      primaryGoal {\\n        __typename\\n        goalType: __typename\\n        ... on QuestGoalLesson {\\n          rewardAmount\\n          id\\n          lesson\\n          progressCurrent\\n          progressTotal\\n          status\\n        }\\n        ... on QuestGoalMap {\\n          rewardAmount\\n          id\\n          map\\n          progressCurrent\\n          progressTotal\\n          status\\n        }\\n      }\\n    }\\n  }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n  query GetStudentQuest {\\n    student {\\n      ...StudentQuestDataFragment\\n    }\\n  }\\n\"): (typeof documents)[\"\\n  query GetStudentQuest {\\n    student {\\n      ...StudentQuestDataFragment\\n    }\\n  }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n  mutation AcknowledgeQuestGoalAlert(\\n    $input: StudentQuestGoalAcknowledgeCompleteInput!\\n  ) {\\n    studentQuestGoalAcknowledgeComplete(input: $input) {\\n      student {\\n        id\\n        acorns\\n        ...StudentQuestDataFragment\\n      }\\n    }\\n  }\\n\"): (typeof documents)[\"\\n  mutation AcknowledgeQuestGoalAlert(\\n    $input: StudentQuestGoalAcknowledgeCompleteInput!\\n  ) {\\n    studentQuestGoalAcknowledgeComplete(input: $input) {\\n      student {\\n        id\\n        acorns\\n        ...StudentQuestDataFragment\\n      }\\n    }\\n  }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n  fragment StudentProgressFragment on Student {\\n    progress {\\n      drivingTests {\\n        currentGrade\\n        results {\\n          data\\n          geometry\\n          measurement\\n          number\\n          operations\\n          patterns\\n        }\\n      }\\n      myLessons {\\n        currentLesson\\n        currentMap\\n        currentActivity\\n        showPlacementTest\\n      }\\n      mentalMinute {\\n        currentLesson\\n        currentLessonSet {\\n          additionSubtraction\\n          multiplicationDivision\\n        }\\n        updatedAt {\\n          additionSubtraction\\n          multiplicationDivision\\n        }\\n      }\\n    }\\n  }\\n\"): (typeof documents)[\"\\n  fragment StudentProgressFragment on Student {\\n    progress {\\n      drivingTests {\\n        currentGrade\\n        results {\\n          data\\n          geometry\\n          measurement\\n          number\\n          operations\\n          patterns\\n        }\\n      }\\n      myLessons {\\n        currentLesson\\n        currentMap\\n        currentActivity\\n        showPlacementTest\\n      }\\n      mentalMinute {\\n        currentLesson\\n        currentLessonSet {\\n          additionSubtraction\\n          multiplicationDivision\\n        }\\n        updatedAt {\\n          additionSubtraction\\n          multiplicationDivision\\n        }\\n      }\\n    }\\n  }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n  query GetProgress {\\n    student {\\n      id\\n      ...StudentProgressFragment\\n    }\\n  }\\n\"): (typeof documents)[\"\\n  query GetProgress {\\n    student {\\n      id\\n      ...StudentProgressFragment\\n    }\\n  }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n  fragment StudentUserFragment on Student {\\n    acorns\\n    customerType\\n    gradePosition\\n    id\\n    name\\n    firstName\\n    remoteId\\n    backgroundMusicDisabled\\n    gamesAccess\\n    playroomAccess\\n    rosterEnabled\\n  }\\n\"): (typeof documents)[\"\\n  fragment StudentUserFragment on Student {\\n    acorns\\n    customerType\\n    gradePosition\\n    id\\n    name\\n    firstName\\n    remoteId\\n    backgroundMusicDisabled\\n    gamesAccess\\n    playroomAccess\\n    rosterEnabled\\n  }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n  fragment StudentAvatarFragment on Student {\\n    id\\n    avatarUrl\\n    avatarJsonUrl @client\\n    dna {\\n      arms\\n      belt\\n      dress\\n      hat\\n      head\\n      jacket\\n      legs\\n      mask\\n      necklace\\n      shirt\\n      shoes\\n      wristband\\n    }\\n  }\\n\"): (typeof documents)[\"\\n  fragment StudentAvatarFragment on Student {\\n    id\\n    avatarUrl\\n    avatarJsonUrl @client\\n    dna {\\n      arms\\n      belt\\n      dress\\n      hat\\n      head\\n      jacket\\n      legs\\n      mask\\n      necklace\\n      shirt\\n      shoes\\n      wristband\\n    }\\n  }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n  fragment StudentLocaleFragment on Student {\\n    locale\\n  }\\n\"): (typeof documents)[\"\\n  fragment StudentLocaleFragment on Student {\\n    locale\\n  }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n  query StudentQueryDocument {\\n    student {\\n      ...StudentUserFragment\\n      ...StudentLocaleFragment\\n      ...StudentAvatarFragment\\n    }\\n  }\\n\"): (typeof documents)[\"\\n  query StudentQueryDocument {\\n    student {\\n      ...StudentUserFragment\\n      ...StudentLocaleFragment\\n      ...StudentAvatarFragment\\n    }\\n  }\\n\"];\n\nexport function graphql(source: string) {\n  return (documents as any)[source] ?? {};\n}\n\nexport type DocumentType<TDocumentNode extends DocumentNode<any, any>> = TDocumentNode extends DocumentNode<  infer TType,  any>  ? TType  : never;","/* eslint-disable */\nimport type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';\nexport type Maybe<T> = T | null;\nexport type InputMaybe<T> = Maybe<T>;\nexport type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };\nexport type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };\nexport type MakeEmpty<T extends { [key: string]: unknown }, K extends keyof T> = { [_ in K]?: never };\nexport type Incremental<T> = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never };\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n  ID: { input: string; output: string; }\n  String: { input: string; output: string; }\n  Boolean: { input: boolean; output: boolean; }\n  Int: { input: number; output: number; }\n  Float: { input: number; output: number; }\n  /** An ISO 8601-encoded datetime */\n  ISO8601DateTime: { input: string; output: string; }\n};\n\n/** An arcade game available in the mathseeds arcade */\nexport type ArcadeGame = {\n  __typename?: 'ArcadeGame';\n  cost: Scalars['Int']['output'];\n  id: Scalars['ID']['output'];\n  name: Scalars['String']['output'];\n  title: Scalars['String']['output'];\n};\n\nexport type Assignment = AssignmentDrivingTests | AssignmentMyLessons;\n\nexport type AssignmentDetails = {\n  /** Unique identifier of the assignment to which this task belongs */\n  assignmentUuid: Scalars['ID']['output'];\n  /** Timestamp when the task expires. Show the modal to the student until this time. */\n  endAt: Scalars['ISO8601DateTime']['output'];\n  /** The task ID from assignments-api. Example: 325396 */\n  id: Scalars['ID']['output'];\n  /** URL of the image shown to the student in the modal to push them into the assignment work. */\n  thumbnailUrl: Scalars['String']['output'];\n  /**\n   * Text shown to the student in the modal to push them into the assignment work.\n   * For a Book or BookChapter, this is the `bookName` of the book. For a Lesson or\n   * a Spelling, it's the lesson name.\n   */\n  title: Scalars['String']['output'];\n};\n\nexport type AssignmentDrivingTests = AssignmentDetails & {\n  __typename?: 'AssignmentDrivingTests';\n  /** The activity number. Example: \"1\" */\n  activityId: Scalars['ID']['output'];\n  /** Unique identifier of the assignment to which this task belongs */\n  assignmentUuid: Scalars['ID']['output'];\n  /** Lesson category, Example: \"geometry\" */\n  category: Scalars['String']['output'];\n  /** Timestamp when the task expires. Show the modal to the student until this time. */\n  endAt: Scalars['ISO8601DateTime']['output'];\n  /** The lesson identifier within the grade */\n  gradeLessonNumber: Scalars['Int']['output'];\n  /** grade position number */\n  gradePosition: Scalars['Int']['output'];\n  /** The task ID from assignments-api. Example: 325396 */\n  id: Scalars['ID']['output'];\n  /** The lesson id. Example: \"105\" */\n  lessonId: Scalars['ID']['output'];\n  /** URL of the image shown to the student in the modal to push them into the assignment work. */\n  thumbnailUrl: Scalars['String']['output'];\n  /**\n   * Text shown to the student in the modal to push them into the assignment work.\n   * For a Book or BookChapter, this is the `bookName` of the book. For a Lesson or\n   * a Spelling, it's the lesson name.\n   */\n  title: Scalars['String']['output'];\n};\n\nexport type AssignmentInputs = {\n  /** The task id inside of the assignment */\n  assignmentTaskId: Scalars['Int']['input'];\n  /** A unique id of the assignment */\n  assignmentUuid: Scalars['String']['input'];\n};\n\nexport type AssignmentMyLessons = AssignmentDetails & {\n  __typename?: 'AssignmentMyLessons';\n  /** The activity number. Example: \"1\" */\n  activityId: Scalars['ID']['output'];\n  /** Unique identifier of the assignment to which this task belongs */\n  assignmentUuid: Scalars['ID']['output'];\n  /** Timestamp when the task expires. Show the modal to the student until this time. */\n  endAt: Scalars['ISO8601DateTime']['output'];\n  /** The task ID from assignments-api. Example: 325396 */\n  id: Scalars['ID']['output'];\n  /** The lesson number. Example: \"105\" */\n  lessonId: Scalars['ID']['output'];\n  /** URL of the image shown to the student in the modal to push them into the assignment work. */\n  thumbnailUrl: Scalars['String']['output'];\n  /**\n   * Text shown to the student in the modal to push them into the assignment work.\n   * For a Book or BookChapter, this is the `bookName` of the book. For a Lesson or\n   * a Spelling, it's the lesson name.\n   */\n  title: Scalars['String']['output'];\n};\n\nexport type AssignmentTask = AssignmentTaskDrivingTests | AssignmentTaskMyLessons | Error;\n\nexport type AssignmentTaskDetails = {\n  /** Unique identifier of the assignment to which this task belongs */\n  assignmentUuid: Scalars['ID']['output'];\n  /** Timestamp when the task expires. Show the modal to the student until this time. */\n  endAt: Scalars['ISO8601DateTime']['output'];\n  /** The task ID from assignments-api. Example: 325396 */\n  id: Scalars['ID']['output'];\n  /** URL of the image shown to the student in the modal to push them into the assignment work. */\n  thumbnailUrl: Scalars['String']['output'];\n  /**\n   * Text shown to the student in the modal to push them into the assignment work.\n   * For a Book or BookChapter, this is the `bookName` of the book. For a Lesson or\n   * a Spelling, it's the lesson name.\n   */\n  title: Scalars['String']['output'];\n};\n\nexport type AssignmentTaskDrivingTests = AssignmentTaskDetails & {\n  __typename?: 'AssignmentTaskDrivingTests';\n  /** The activity number. Example: \"1\" */\n  activityId: Scalars['ID']['output'];\n  /** Unique identifier of the assignment to which this task belongs */\n  assignmentUuid: Scalars['ID']['output'];\n  /** Lesson category, Example: \"geometry\" */\n  category: Scalars['String']['output'];\n  /** Timestamp when the task expires. Show the modal to the student until this time. */\n  endAt: Scalars['ISO8601DateTime']['output'];\n  /** The lesson identifier within the grade */\n  gradeLessonNumber: Scalars['Int']['output'];\n  /** grade position number */\n  gradePosition: Scalars['Int']['output'];\n  /** The task ID from assignments-api. Example: 325396 */\n  id: Scalars['ID']['output'];\n  /** The lesson id. Example: \"105\" */\n  lessonId: Scalars['ID']['output'];\n  targetRouteParams: Array<Scalars['String']['output']>;\n  /** URL of the image shown to the student in the modal to push them into the assignment work. */\n  thumbnailUrl: Scalars['String']['output'];\n  /**\n   * Text shown to the student in the modal to push them into the assignment work.\n   * For a Book or BookChapter, this is the `bookName` of the book. For a Lesson or\n   * a Spelling, it's the lesson name.\n   */\n  title: Scalars['String']['output'];\n};\n\nexport type AssignmentTaskMyLessons = AssignmentTaskDetails & {\n  __typename?: 'AssignmentTaskMyLessons';\n  /** The activity number. Example: \"1\" */\n  activityId: Scalars['ID']['output'];\n  /** Unique identifier of the assignment to which this task belongs */\n  assignmentUuid: Scalars['ID']['output'];\n  /** Timestamp when the task expires. Show the modal to the student until this time. */\n  endAt: Scalars['ISO8601DateTime']['output'];\n  /** The task ID from assignments-api. Example: 325396 */\n  id: Scalars['ID']['output'];\n  /** The lesson number. Example: \"105\" */\n  lessonId: Scalars['ID']['output'];\n  targetRouteParams: Array<Scalars['String']['output']>;\n  /** URL of the image shown to the student in the modal to push them into the assignment work. */\n  thumbnailUrl: Scalars['String']['output'];\n  /**\n   * Text shown to the student in the modal to push them into the assignment work.\n   * For a Book or BookChapter, this is the `bookName` of the book. For a Lesson or\n   * a Spelling, it's the lesson name.\n   */\n  title: Scalars['String']['output'];\n};\n\n/** DNA values for a student avatar */\nexport type AvatarDna = {\n  __typename?: 'AvatarDna';\n  /** Arm detail */\n  arms: Scalars['String']['output'];\n  /** Belt detail */\n  belt?: Maybe<Scalars['String']['output']>;\n  /** Dress detail */\n  dress?: Maybe<Scalars['String']['output']>;\n  /** Hat detail */\n  hat?: Maybe<Scalars['String']['output']>;\n  /** Head detail */\n  head: Scalars['String']['output'];\n  /** Jacket detail */\n  jacket?: Maybe<Scalars['String']['output']>;\n  /** Leg detail */\n  legs: Scalars['String']['output'];\n  /** Mask detail */\n  mask?: Maybe<Scalars['String']['output']>;\n  /** Necklace detail */\n  necklace?: Maybe<Scalars['String']['output']>;\n  /** Shirt detail */\n  shirt?: Maybe<Scalars['String']['output']>;\n  /** Shoes detail */\n  shoes?: Maybe<Scalars['String']['output']>;\n  /** Wristband detail */\n  wristband?: Maybe<Scalars['String']['output']>;\n};\n\n/** A badge is derived from a from an end of lesson quiz result */\nexport type Badge = {\n  __typename?: 'Badge';\n  /** Badge colour */\n  colour: BadgeColourEnum;\n  /** Lesson quiz result id */\n  id: Scalars['ID']['output'];\n  /** Lesson number */\n  lesson: Scalars['Int']['output'];\n};\n\nexport enum BadgeColourEnum {\n  /** Bronze badge colour */\n  Bronze = 'bronze',\n  /** Gold badge colour */\n  Gold = 'gold',\n  /** Silver badge colour */\n  Silver = 'silver'\n}\n\nexport type Certificates = {\n  __typename?: 'Certificates';\n  mapCertificates: Array<MapCertificate>;\n};\n\nexport enum CustomerTypeEnum {\n  /** Business-to-business school student */\n  B2BStudent = 'B2B_STUDENT',\n  /** Business-to-consumer homeschool student */\n  B2CHomeschoolStudent = 'B2C_HOMESCHOOL_STUDENT',\n  /** Business-to-consumer student */\n  B2CStudent = 'B2C_STUDENT'\n}\n\n/** Driving Test progression system of the student */\nexport type DrivingTestsProgress = {\n  __typename?: 'DrivingTestsProgress';\n  currentGrade: Scalars['Int']['output'];\n  results: Array<DrivingTestsProgressResults>;\n};\n\nexport type DrivingTestsProgressResults = {\n  __typename?: 'DrivingTestsProgressResults';\n  data: Scalars['Int']['output'];\n  geometry: Scalars['Int']['output'];\n  measurement: Scalars['Int']['output'];\n  number: Scalars['Int']['output'];\n  operations: Scalars['Int']['output'];\n  patterns: Scalars['Int']['output'];\n};\n\nexport type Error = {\n  __typename?: 'Error';\n  message: Scalars['String']['output'];\n};\n\nexport type ItemPurchaseInput = {\n  /** The code of the item to purchase */\n  code: Scalars['ID']['input'];\n};\n\nexport type ItemPurchaseInsufficientFunds = {\n  __typename?: 'ItemPurchaseInsufficientFunds';\n  /** Student detail */\n  student: Student;\n};\n\nexport type ItemPurchasePayload = ItemPurchaseInsufficientFunds | ItemPurchaseSuccess;\n\nexport type ItemPurchaseSuccess = {\n  __typename?: 'ItemPurchaseSuccess';\n  /** Student detail */\n  student: Student;\n};\n\n/** A certificate for completion of a map within the lessons area */\nexport type MapCertificate = {\n  __typename?: 'MapCertificate';\n  /** Certificate completion timestamp */\n  createdAt: Scalars['ISO8601DateTime']['output'];\n  /** Certificate ID */\n  id: Scalars['ID']['output'];\n  /** Map number */\n  map: Scalars['Int']['output'];\n  /** A url to retrieve a certificate image */\n  url: Scalars['String']['output'];\n};\n\n/** Mental Minutes progression system for the student */\nexport type MentalMinuteProgress = {\n  __typename?: 'MentalMinuteProgress';\n  /** lesson */\n  currentLesson: Scalars['Int']['output'];\n  /** lesson set */\n  currentLessonSet: MentalMinuteProgressResultsCurrentLessonSet;\n  /** updated at */\n  updatedAt: MentalMinuteProgressResultsUpdatedAt;\n};\n\nexport type MentalMinuteProgressResultsCurrentLessonSet = {\n  __typename?: 'MentalMinuteProgressResultsCurrentLessonSet';\n  /** addition subtraction */\n  additionSubtraction: Scalars['Int']['output'];\n  /** multiplication division */\n  multiplicationDivision: Scalars['Int']['output'];\n};\n\nexport type MentalMinuteProgressResultsUpdatedAt = {\n  __typename?: 'MentalMinuteProgressResultsUpdatedAt';\n  additionSubtraction?: Maybe<Scalars['ISO8601DateTime']['output']>;\n  multiplicationDivision?: Maybe<Scalars['ISO8601DateTime']['output']>;\n};\n\nexport type Mutation = {\n  __typename?: 'Mutation';\n  /** Purchase an item for a student */\n  itemPurchase: ItemPurchasePayload;\n  myLessonsActivityResultCreate: MyLessonsActivityResultCreateOutput;\n  studentAvatarUpdate: StudentAvatarUpdatePayload;\n  /** Update the placement of an item in the treehouse */\n  studentItemPlacementUpdate: StudentItemPlacementUpdatePayload;\n  studentProgressMyLessonsLessonReset: StudentProgressMyLessonsLessonResetPayload;\n  studentProgressMyLessonsMapQuizReset: StudentProgressMyLessonsMapQuizResetPayload;\n  studentProgressMyLessonsPlacementTestReset: StudentProgressMyLessonsPlacementTestResetPayload;\n  studentQuestGoalAcknowledgeComplete: StudentQuestGoalAcknowledgeCompletePayload;\n};\n\n\nexport type MutationItemPurchaseArgs = {\n  input: ItemPurchaseInput;\n};\n\n\nexport type MutationMyLessonsActivityResultCreateArgs = {\n  input: MyLessonsActivityResultCreateInput;\n};\n\n\nexport type MutationStudentAvatarUpdateArgs = {\n  input: StudentAvatarUpdateInput;\n};\n\n\nexport type MutationStudentItemPlacementUpdateArgs = {\n  input: StudentItemPlacementUpdateInput;\n};\n\n\nexport type MutationStudentProgressMyLessonsLessonResetArgs = {\n  input: StudentProgressMyLessonsLessonResetInput;\n};\n\n\nexport type MutationStudentProgressMyLessonsMapQuizResetArgs = {\n  input: StudentProgressMyLessonsMapQuizResetInput;\n};\n\n\nexport type MutationStudentQuestGoalAcknowledgeCompleteArgs = {\n  input: StudentQuestGoalAcknowledgeCompleteInput;\n};\n\n/** Details for the my lessons activity result */\nexport type MyLessonsActivityResult = {\n  __typename?: 'MyLessonsActivityResult';\n  /** Rewards earned for activity */\n  reward: MyLessonsActivityReward;\n};\n\nexport type MyLessonsActivityResultCreateInput = {\n  /** The position of this activity in the lesson, starting at 1 */\n  activityInLesson: Scalars['Int']['input'];\n  /** Assignment inputs */\n  assignment?: InputMaybe<AssignmentInputs>;\n  /** A unique id for an activity attempt */\n  attemptUuid: Scalars['String']['input'];\n  /** The position of this activity's lesson in this precinct, starting at 1 */\n  lessonInPrecinct: Scalars['Int']['input'];\n};\n\n/** The results of a My Lessons precinct activity */\nexport type MyLessonsActivityResultCreateOutput = {\n  __typename?: 'MyLessonsActivityResultCreateOutput';\n  /** A payload of my lessons activty result data */\n  myLessonsActivityResult: MyLessonsActivityResult;\n  /** Student detail */\n  student: Student;\n};\n\nexport type MyLessonsActivityReward = {\n  __typename?: 'MyLessonsActivityReward';\n  /** The number of acorns earned */\n  acorns: Scalars['Int']['output'];\n};\n\n/** Lesson progression system for the student */\nexport type MyLessonsProgress = {\n  __typename?: 'MyLessonsProgress';\n  /** Student's current activity position */\n  currentActivity: Scalars['Int']['output'];\n  /** Student's current lesson position, eg '10' or 'quiz' */\n  currentLesson: Scalars['String']['output'];\n  /** Student's current map position */\n  currentMap: Scalars['Int']['output'];\n  showPlacementTest: Scalars['Boolean']['output'];\n};\n\nexport type Progress = {\n  __typename?: 'Progress';\n  drivingTests: DrivingTestsProgress;\n  mentalMinute: MentalMinuteProgress;\n  myLessons: MyLessonsProgress;\n};\n\nexport type Query = {\n  __typename?: 'Query';\n  /** list of all arcade games */\n  arcadeGames: Array<ArcadeGame>;\n  /** details of the current student */\n  student: Student;\n};\n\n/** The student's current quest */\nexport type Quest = {\n  __typename?: 'Quest';\n  primaryGoal?: Maybe<QuestGoalPrimary>;\n};\n\nexport type QuestGoalLesson = {\n  __typename?: 'QuestGoalLesson';\n  /**\n   * The number of acorns rewarded for completing the goal\n   * @deprecated Use rewardAmount instead\n   */\n  acornReward: Scalars['Int']['output'];\n  id: Scalars['ID']['output'];\n  /** The lesson which must be completed to complete the goal */\n  lesson: Scalars['Int']['output'];\n  /** The students current goal progress */\n  progressCurrent: Scalars['Int']['output'];\n  /** The goal progress required to complete */\n  progressTotal: Scalars['Int']['output'];\n  /** The number of acorns rewarded for completing */\n  rewardAmount: Scalars['Int']['output'];\n  status: QuestGoalStatusEnum;\n};\n\nexport type QuestGoalMap = {\n  __typename?: 'QuestGoalMap';\n  /**\n   * The number of acorns rewarded for completing\n   * @deprecated Use rewardAmount instead\n   */\n  acornReward: Scalars['Int']['output'];\n  /** @deprecated Use progressCurrent >= progressTotal instead */\n  complete: Scalars['Boolean']['output'];\n  id: Scalars['ID']['output'];\n  /** The map which must be completed to complete the goal */\n  map: Scalars['Int']['output'];\n  /** The students current goal progress */\n  progressCurrent: Scalars['Int']['output'];\n  /** The goal progress required to complete */\n  progressTotal: Scalars['Int']['output'];\n  /** The number of acorns rewarded for completing */\n  rewardAmount: Scalars['Int']['output'];\n  status: QuestGoalStatusEnum;\n};\n\nexport type QuestGoalPrimary = QuestGoalLesson | QuestGoalMap;\n\nexport enum QuestGoalStatusEnum {\n  /** A quest goal that has been completed and acknowledged by the student */\n  Complete = 'COMPLETE',\n  /** A quest goal that is not yet complete */\n  Incomplete = 'INCOMPLETE',\n  /** A quest goal that has been completed but not yet acknowledged by the student */\n  ShowCompleteAlert = 'SHOW_COMPLETE_ALERT'\n}\n\n/** a student */\nexport type Student = {\n  __typename?: 'Student';\n  /** Reward currency */\n  acorns: Scalars['Int']['output'];\n  /**\n   * The current assignment for the student. They need to complete this before any\n   * other work. `null` if there is no current assignment for them.\n   */\n  assignment?: Maybe<Assignment>;\n  /**\n   * The current assignment task for the student. They need to complete this before\n   * any other work.`null` if there is no current assignment task for them. Or an\n   * error if the API call failed.\n   * @deprecated Use `assignment` instead. This field will be removed in a future version.\n   */\n  assignmentTask?: Maybe<AssignmentTask>;\n  avatarJsonUrl: Scalars['String']['output'];\n  /** URL for the student's avatar image */\n  avatarUrl: Scalars['String']['output'];\n  /** whether background music is disabled for the student */\n  backgroundMusicDisabled: Scalars['Boolean']['output'];\n  /** Collection of highest-scoring badge results per lesson */\n  badges: Array<Badge>;\n  /** Students certificates */\n  certificates: Certificates;\n  /** The student customer type from Gravity */\n  customerType: CustomerTypeEnum;\n  /** The student's avatar DNA */\n  dna: AvatarDna;\n  /** Student's first name */\n  firstName: Scalars['String']['output'];\n  /** whether the student can access games */\n  gamesAccess: Scalars['Boolean']['output'];\n  gradePosition: Scalars['Int']['output'];\n  /** Student ID in mathseeds database */\n  id: Scalars['ID']['output'];\n  /** The student's owned items */\n  items: Array<StudentItem>;\n  locale: Scalars['String']['output'];\n  /** Student short name eg \"Jane A.\" */\n  name: Scalars['String']['output'];\n  /** whether the student can access the playroom */\n  playroomAccess: Scalars['Boolean']['output'];\n  /** Progress for current student */\n  progress: Progress;\n  /** The student's current quest. Will be null if there is no quest available. */\n  quest?: Maybe<Quest>;\n  /** Student ID in gravity */\n  remoteId: Scalars['ID']['output'];\n  /** whether the student belongs to a roster school */\n  rosterEnabled: Scalars['Boolean']['output'];\n};\n\nexport type StudentAvatarUpdateInput = {\n  /** Arm detail */\n  arms: Scalars['String']['input'];\n  /** Belt detail */\n  belt?: InputMaybe<Scalars['String']['input']>;\n  /** Dress detail */\n  dress?: InputMaybe<Scalars['String']['input']>;\n  /** Hat detail */\n  hat?: InputMaybe<Scalars['String']['input']>;\n  /** Head detail */\n  head: Scalars['String']['input'];\n  /** Base 64 image data of the new avatar */\n  imageData: Scalars['String']['input'];\n  /** Jacket detail */\n  jacket?: InputMaybe<Scalars['String']['input']>;\n  /** Leg detail */\n  legs: Scalars['String']['input'];\n  /** Mask detail */\n  mask?: InputMaybe<Scalars['String']['input']>;\n  /** Necklace detail */\n  necklace?: InputMaybe<Scalars['String']['input']>;\n  /** Shirt detail */\n  shirt?: InputMaybe<Scalars['String']['input']>;\n  /** Shoes detail */\n  shoes?: InputMaybe<Scalars['String']['input']>;\n  /** Wristband detail */\n  wristband?: InputMaybe<Scalars['String']['input']>;\n};\n\n/** The result of updating a student avatar */\nexport type StudentAvatarUpdatePayload = {\n  __typename?: 'StudentAvatarUpdatePayload';\n  student: Student;\n};\n\nexport type StudentItem = {\n  __typename?: 'StudentItem';\n  animationJson?: Maybe<Scalars['String']['output']>;\n  animationUrl?: Maybe<Scalars['String']['output']>;\n  audioUrl?: Maybe<Scalars['String']['output']>;\n  code: Scalars['String']['output'];\n  footprint?: Maybe<Scalars['Int']['output']>;\n  id: Scalars['ID']['output'];\n  imageUrl?: Maybe<Scalars['String']['output']>;\n  kind?: Maybe<Scalars['String']['output']>;\n  room?: Maybe<Scalars['String']['output']>;\n  roomGroup?: Maybe<Scalars['Float']['output']>;\n  roomGroupIndex?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type StudentItemPlacementUpdateInput = {\n  /** The code of the item to update */\n  code: Scalars['ID']['input'];\n  /** The room the item is located in */\n  room?: InputMaybe<Scalars['String']['input']>;\n  /** A number used by content to position the item */\n  roomGroup?: InputMaybe<Scalars['Float']['input']>;\n  /** A number used by content to position the item */\n  roomGroupIndex?: InputMaybe<Scalars['Float']['input']>;\n};\n\nexport type StudentItemPlacementUpdatePayload = {\n  __typename?: 'StudentItemPlacementUpdatePayload';\n  /** Student detail */\n  student: Student;\n};\n\nexport type StudentProgressMyLessonsLessonResetInput = {\n  /** An activity number */\n  activity: Scalars['Int']['input'];\n  /** A lesson number */\n  lesson: Scalars['Int']['input'];\n};\n\n/** The result of resetting the students progress */\nexport type StudentProgressMyLessonsLessonResetPayload = {\n  __typename?: 'StudentProgressMyLessonsLessonResetPayload';\n  student: Student;\n};\n\nexport type StudentProgressMyLessonsMapQuizResetInput = {\n  /** A map number */\n  map: Scalars['Int']['input'];\n};\n\n/** The result of resetting the students progress */\nexport type StudentProgressMyLessonsMapQuizResetPayload = {\n  __typename?: 'StudentProgressMyLessonsMapQuizResetPayload';\n  student: Student;\n};\n\n/** The result of resetting the students progress */\nexport type StudentProgressMyLessonsPlacementTestResetPayload = {\n  __typename?: 'StudentProgressMyLessonsPlacementTestResetPayload';\n  student: Student;\n};\n\nexport type StudentQuestGoalAcknowledgeCompleteInput = {\n  /** A unique id for a quest goal record */\n  goalId: Scalars['String']['input'];\n};\n\n/** The results of the student acknowldging the completion of a quest goal */\nexport type StudentQuestGoalAcknowledgeCompletePayload = {\n  __typename?: 'StudentQuestGoalAcknowledgeCompletePayload';\n  student: Student;\n};\n\nexport type StudentAvatarUpdateMutationVariables = Exact<{\n  input: StudentAvatarUpdateInput;\n}>;\n\n\nexport type StudentAvatarUpdateMutation = { __typename?: 'Mutation', studentAvatarUpdate: { __typename?: 'StudentAvatarUpdatePayload', student: { __typename?: 'Student', id: string, avatarUrl: string, avatarJsonUrl: string, dna: { __typename?: 'AvatarDna', arms: string, belt?: string | null, dress?: string | null, hat?: string | null, head: string, jacket?: string | null, legs: string, mask?: string | null, necklace?: string | null, shirt?: string | null, shoes?: string | null, wristband?: string | null } } } };\n\nexport type MyLessonsActivityResultCreateMutationVariables = Exact<{\n  input: MyLessonsActivityResultCreateInput;\n}>;\n\n\nexport type MyLessonsActivityResultCreateMutation = { __typename?: 'Mutation', myLessonsActivityResultCreate: { __typename?: 'MyLessonsActivityResultCreateOutput', myLessonsActivityResult: { __typename?: 'MyLessonsActivityResult', reward: { __typename?: 'MyLessonsActivityReward', acorns: number } }, student: { __typename?: 'Student', id: string, progress: { __typename?: 'Progress', drivingTests: { __typename?: 'DrivingTestsProgress', currentGrade: number, results: Array<{ __typename?: 'DrivingTestsProgressResults', data: number, geometry: number, measurement: number, number: number, operations: number, patterns: number }> }, myLessons: { __typename?: 'MyLessonsProgress', currentLesson: string, currentMap: number, currentActivity: number, showPlacementTest: boolean }, mentalMinute: { __typename?: 'MentalMinuteProgress', currentLesson: number, currentLessonSet: { __typename?: 'MentalMinuteProgressResultsCurrentLessonSet', additionSubtraction: number, multiplicationDivision: number }, updatedAt: { __typename?: 'MentalMinuteProgressResultsUpdatedAt', additionSubtraction?: string | null, multiplicationDivision?: string | null } } }, assignmentTask?: { __typename: 'AssignmentTaskDrivingTests', assignmentUuid: string, category: string, endAt: string, gradePosition: number, gradeLessonNumber: number, id: string, thumbnailUrl: string, title: string, targetRouteParams: Array<string> } | { __typename: 'AssignmentTaskMyLessons', activityId: string, assignmentUuid: string, endAt: string, id: string, lessonId: string, thumbnailUrl: string, title: string, targetRouteParams: Array<string> } | { __typename: 'Error', message: string } | null, quest?: { __typename?: 'Quest', primaryGoal?: { __typename: 'QuestGoalLesson', rewardAmount: number, id: string, lesson: number, progressCurrent: number, progressTotal: number, status: QuestGoalStatusEnum, goalType: 'QuestGoalLesson' } | { __typename: 'QuestGoalMap', rewardAmount: number, id: string, map: number, progressCurrent: number, progressTotal: number, status: QuestGoalStatusEnum, goalType: 'QuestGoalMap' } | null } | null } } };\n\nexport type GetInitialAppDataQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type GetInitialAppDataQuery = { __typename?: 'Query', student: { __typename?: 'Student', acorns: number, customerType: CustomerTypeEnum, gradePosition: number, id: string, name: string, firstName: string, remoteId: string, backgroundMusicDisabled: boolean, gamesAccess: boolean, playroomAccess: boolean, rosterEnabled: boolean, locale: string, avatarUrl: string, avatarJsonUrl: string, dna: { __typename?: 'AvatarDna', arms: string, belt?: string | null, dress?: string | null, hat?: string | null, head: string, jacket?: string | null, legs: string, mask?: string | null, necklace?: string | null, shirt?: string | null, shoes?: string | null, wristband?: string | null }, assignmentTask?: { __typename: 'AssignmentTaskDrivingTests', assignmentUuid: string, category: string, endAt: string, gradePosition: number, gradeLessonNumber: number, id: string, thumbnailUrl: string, title: string, targetRouteParams: Array<string> } | { __typename: 'AssignmentTaskMyLessons', activityId: string, assignmentUuid: string, endAt: string, id: string, lessonId: string, thumbnailUrl: string, title: string, targetRouteParams: Array<string> } | { __typename: 'Error', message: string } | null, progress: { __typename?: 'Progress', drivingTests: { __typename?: 'DrivingTestsProgress', currentGrade: number, results: Array<{ __typename?: 'DrivingTestsProgressResults', data: number, geometry: number, measurement: number, number: number, operations: number, patterns: number }> }, myLessons: { __typename?: 'MyLessonsProgress', currentLesson: string, currentMap: number, currentActivity: number, showPlacementTest: boolean }, mentalMinute: { __typename?: 'MentalMinuteProgress', currentLesson: number, currentLessonSet: { __typename?: 'MentalMinuteProgressResultsCurrentLessonSet', additionSubtraction: number, multiplicationDivision: number }, updatedAt: { __typename?: 'MentalMinuteProgressResultsUpdatedAt', additionSubtraction?: string | null, multiplicationDivision?: string | null } } }, quest?: { __typename?: 'Quest', primaryGoal?: { __typename: 'QuestGoalLesson', rewardAmount: number, id: string, lesson: number, progressCurrent: number, progressTotal: number, status: QuestGoalStatusEnum, goalType: 'QuestGoalLesson' } | { __typename: 'QuestGoalMap', rewardAmount: number, id: string, map: number, progressCurrent: number, progressTotal: number, status: QuestGoalStatusEnum, goalType: 'QuestGoalMap' } | null } | null, items: Array<{ __typename?: 'StudentItem', animationJson?: string | null, animationUrl?: string | null, audioUrl?: string | null, code: string, footprint?: number | null, id: string, imageUrl?: string | null, kind?: string | null, room?: string | null, roomGroup?: number | null, roomGroupIndex?: number | null }> } };\n\nexport type ArcadeGamesQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type ArcadeGamesQuery = { __typename?: 'Query', arcadeGames: Array<{ __typename?: 'ArcadeGame', cost: number, id: string, name: string, title: string }> };\n\nexport type GetMyAwardsQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type GetMyAwardsQuery = { __typename?: 'Query', student: { __typename?: 'Student', id: string, badges: Array<{ __typename?: 'Badge', id: string, lesson: number, colour: BadgeColourEnum }>, certificates: { __typename?: 'Certificates', mapCertificates: Array<{ __typename?: 'MapCertificate', id: string, url: string, map: number, createdAt: string }> }, progress: { __typename?: 'Progress', myLessons: { __typename?: 'MyLessonsProgress', currentMap: number } } } };\n\nexport type AssignmentTaskFragment = { __typename?: 'Student', assignmentTask?: { __typename: 'AssignmentTaskDrivingTests', assignmentUuid: string, category: string, endAt: string, gradePosition: number, gradeLessonNumber: number, id: string, thumbnailUrl: string, title: string, targetRouteParams: Array<string> } | { __typename: 'AssignmentTaskMyLessons', activityId: string, assignmentUuid: string, endAt: string, id: string, lessonId: string, thumbnailUrl: string, title: string, targetRouteParams: Array<string> } | { __typename: 'Error', message: string } | null };\n\nexport type GetStudentCurrentTaskQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type GetStudentCurrentTaskQuery = { __typename?: 'Query', student: { __typename: 'Student', id: string, assignmentTask?: { __typename: 'AssignmentTaskDrivingTests', assignmentUuid: string, category: string, endAt: string, gradePosition: number, gradeLessonNumber: number, id: string, thumbnailUrl: string, title: string, targetRouteParams: Array<string> } | { __typename: 'AssignmentTaskMyLessons', activityId: string, assignmentUuid: string, endAt: string, id: string, lessonId: string, thumbnailUrl: string, title: string, targetRouteParams: Array<string> } | { __typename: 'Error', message: string } | null } };\n\nexport type ResetMyLessonsLessonProgressMutationVariables = Exact<{\n  input: StudentProgressMyLessonsLessonResetInput;\n}>;\n\n\nexport type ResetMyLessonsLessonProgressMutation = { __typename?: 'Mutation', studentProgressMyLessonsLessonReset: { __typename?: 'StudentProgressMyLessonsLessonResetPayload', student: { __typename?: 'Student', id: string, progress: { __typename?: 'Progress', drivingTests: { __typename?: 'DrivingTestsProgress', currentGrade: number, results: Array<{ __typename?: 'DrivingTestsProgressResults', data: number, geometry: number, measurement: number, number: number, operations: number, patterns: number }> }, myLessons: { __typename?: 'MyLessonsProgress', currentLesson: string, currentMap: number, currentActivity: number, showPlacementTest: boolean }, mentalMinute: { __typename?: 'MentalMinuteProgress', currentLesson: number, currentLessonSet: { __typename?: 'MentalMinuteProgressResultsCurrentLessonSet', additionSubtraction: number, multiplicationDivision: number }, updatedAt: { __typename?: 'MentalMinuteProgressResultsUpdatedAt', additionSubtraction?: string | null, multiplicationDivision?: string | null } } } } } };\n\nexport type ResetMyLessonsMapQuizProgressMutationVariables = Exact<{\n  input: StudentProgressMyLessonsMapQuizResetInput;\n}>;\n\n\nexport type ResetMyLessonsMapQuizProgressMutation = { __typename?: 'Mutation', studentProgressMyLessonsMapQuizReset: { __typename?: 'StudentProgressMyLessonsMapQuizResetPayload', student: { __typename?: 'Student', id: string, progress: { __typename?: 'Progress', drivingTests: { __typename?: 'DrivingTestsProgress', currentGrade: number, results: Array<{ __typename?: 'DrivingTestsProgressResults', data: number, geometry: number, measurement: number, number: number, operations: number, patterns: number }> }, myLessons: { __typename?: 'MyLessonsProgress', currentLesson: string, currentMap: number, currentActivity: number, showPlacementTest: boolean }, mentalMinute: { __typename?: 'MentalMinuteProgress', currentLesson: number, currentLessonSet: { __typename?: 'MentalMinuteProgressResultsCurrentLessonSet', additionSubtraction: number, multiplicationDivision: number }, updatedAt: { __typename?: 'MentalMinuteProgressResultsUpdatedAt', additionSubtraction?: string | null, multiplicationDivision?: string | null } } } } } };\n\nexport type ResetMyLessonsPlacementTestProgressMutationVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type ResetMyLessonsPlacementTestProgressMutation = { __typename?: 'Mutation', studentProgressMyLessonsPlacementTestReset: { __typename?: 'StudentProgressMyLessonsPlacementTestResetPayload', student: { __typename?: 'Student', id: string, progress: { __typename?: 'Progress', drivingTests: { __typename?: 'DrivingTestsProgress', currentGrade: number, results: Array<{ __typename?: 'DrivingTestsProgressResults', data: number, geometry: number, measurement: number, number: number, operations: number, patterns: number }> }, myLessons: { __typename?: 'MyLessonsProgress', currentLesson: string, currentMap: number, currentActivity: number, showPlacementTest: boolean }, mentalMinute: { __typename?: 'MentalMinuteProgress', currentLesson: number, currentLessonSet: { __typename?: 'MentalMinuteProgressResultsCurrentLessonSet', additionSubtraction: number, multiplicationDivision: number }, updatedAt: { __typename?: 'MentalMinuteProgressResultsUpdatedAt', additionSubtraction?: string | null, multiplicationDivision?: string | null } } } } } };\n\nexport type StudentItemsFragmentFragment = { __typename?: 'Student', items: Array<{ __typename?: 'StudentItem', animationJson?: string | null, animationUrl?: string | null, audioUrl?: string | null, code: string, footprint?: number | null, id: string, imageUrl?: string | null, kind?: string | null, room?: string | null, roomGroup?: number | null, roomGroupIndex?: number | null }> };\n\nexport type StudentItemPlacementUpdateMutationVariables = Exact<{\n  input: StudentItemPlacementUpdateInput;\n}>;\n\n\nexport type StudentItemPlacementUpdateMutation = { __typename?: 'Mutation', studentItemPlacementUpdate: { __typename?: 'StudentItemPlacementUpdatePayload', student: { __typename?: 'Student', id: string, items: Array<{ __typename?: 'StudentItem', animationJson?: string | null, animationUrl?: string | null, audioUrl?: string | null, code: string, footprint?: number | null, id: string, imageUrl?: string | null, kind?: string | null, room?: string | null, roomGroup?: number | null, roomGroupIndex?: number | null }> } } };\n\nexport type ItemPurchaseMutationVariables = Exact<{\n  input: ItemPurchaseInput;\n}>;\n\n\nexport type ItemPurchaseMutation = { __typename?: 'Mutation', itemPurchase: { __typename?: 'ItemPurchaseInsufficientFunds', student: { __typename?: 'Student', id: string, acorns: number } } | { __typename?: 'ItemPurchaseSuccess', student: { __typename?: 'Student', id: string, acorns: number, items: Array<{ __typename?: 'StudentItem', animationJson?: string | null, animationUrl?: string | null, audioUrl?: string | null, code: string, footprint?: number | null, id: string, imageUrl?: string | null, kind?: string | null, room?: string | null, roomGroup?: number | null, roomGroupIndex?: number | null }> } } };\n\nexport type StudentQuestDataFragmentFragment = { __typename?: 'Student', id: string, quest?: { __typename?: 'Quest', primaryGoal?: { __typename: 'QuestGoalLesson', rewardAmount: number, id: string, lesson: number, progressCurrent: number, progressTotal: number, status: QuestGoalStatusEnum, goalType: 'QuestGoalLesson' } | { __typename: 'QuestGoalMap', rewardAmount: number, id: string, map: number, progressCurrent: number, progressTotal: number, status: QuestGoalStatusEnum, goalType: 'QuestGoalMap' } | null } | null };\n\nexport type GetStudentQuestQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type GetStudentQuestQuery = { __typename?: 'Query', student: { __typename?: 'Student', id: string, quest?: { __typename?: 'Quest', primaryGoal?: { __typename: 'QuestGoalLesson', rewardAmount: number, id: string, lesson: number, progressCurrent: number, progressTotal: number, status: QuestGoalStatusEnum, goalType: 'QuestGoalLesson' } | { __typename: 'QuestGoalMap', rewardAmount: number, id: string, map: number, progressCurrent: number, progressTotal: number, status: QuestGoalStatusEnum, goalType: 'QuestGoalMap' } | null } | null } };\n\nexport type AcknowledgeQuestGoalAlertMutationVariables = Exact<{\n  input: StudentQuestGoalAcknowledgeCompleteInput;\n}>;\n\n\nexport type AcknowledgeQuestGoalAlertMutation = { __typename?: 'Mutation', studentQuestGoalAcknowledgeComplete: { __typename?: 'StudentQuestGoalAcknowledgeCompletePayload', student: { __typename?: 'Student', id: string, acorns: number, quest?: { __typename?: 'Quest', primaryGoal?: { __typename: 'QuestGoalLesson', rewardAmount: number, id: string, lesson: number, progressCurrent: number, progressTotal: number, status: QuestGoalStatusEnum, goalType: 'QuestGoalLesson' } | { __typename: 'QuestGoalMap', rewardAmount: number, id: string, map: number, progressCurrent: number, progressTotal: number, status: QuestGoalStatusEnum, goalType: 'QuestGoalMap' } | null } | null } } };\n\nexport type StudentProgressFragmentFragment = { __typename?: 'Student', progress: { __typename?: 'Progress', drivingTests: { __typename?: 'DrivingTestsProgress', currentGrade: number, results: Array<{ __typename?: 'DrivingTestsProgressResults', data: number, geometry: number, measurement: number, number: number, operations: number, patterns: number }> }, myLessons: { __typename?: 'MyLessonsProgress', currentLesson: string, currentMap: number, currentActivity: number, showPlacementTest: boolean }, mentalMinute: { __typename?: 'MentalMinuteProgress', currentLesson: number, currentLessonSet: { __typename?: 'MentalMinuteProgressResultsCurrentLessonSet', additionSubtraction: number, multiplicationDivision: number }, updatedAt: { __typename?: 'MentalMinuteProgressResultsUpdatedAt', additionSubtraction?: string | null, multiplicationDivision?: string | null } } } };\n\nexport type GetProgressQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type GetProgressQuery = { __typename?: 'Query', student: { __typename?: 'Student', id: string, progress: { __typename?: 'Progress', drivingTests: { __typename?: 'DrivingTestsProgress', currentGrade: number, results: Array<{ __typename?: 'DrivingTestsProgressResults', data: number, geometry: number, measurement: number, number: number, operations: number, patterns: number }> }, myLessons: { __typename?: 'MyLessonsProgress', currentLesson: string, currentMap: number, currentActivity: number, showPlacementTest: boolean }, mentalMinute: { __typename?: 'MentalMinuteProgress', currentLesson: number, currentLessonSet: { __typename?: 'MentalMinuteProgressResultsCurrentLessonSet', additionSubtraction: number, multiplicationDivision: number }, updatedAt: { __typename?: 'MentalMinuteProgressResultsUpdatedAt', additionSubtraction?: string | null, multiplicationDivision?: string | null } } } } };\n\nexport type StudentUserFragmentFragment = { __typename?: 'Student', acorns: number, customerType: CustomerTypeEnum, gradePosition: number, id: string, name: string, firstName: string, remoteId: string, backgroundMusicDisabled: boolean, gamesAccess: boolean, playroomAccess: boolean, rosterEnabled: boolean };\n\nexport type StudentAvatarFragmentFragment = { __typename?: 'Student', id: string, avatarUrl: string, avatarJsonUrl: string, dna: { __typename?: 'AvatarDna', arms: string, belt?: string | null, dress?: string | null, hat?: string | null, head: string, jacket?: string | null, legs: string, mask?: string | null, necklace?: string | null, shirt?: string | null, shoes?: string | null, wristband?: string | null } };\n\nexport type StudentLocaleFragmentFragment = { __typename?: 'Student', locale: string };\n\nexport type StudentQueryDocumentQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type StudentQueryDocumentQuery = { __typename?: 'Query', student: { __typename?: 'Student', acorns: number, customerType: CustomerTypeEnum, gradePosition: number, id: string, name: string, firstName: string, remoteId: string, backgroundMusicDisabled: boolean, gamesAccess: boolean, playroomAccess: boolean, rosterEnabled: boolean, locale: string, avatarUrl: string, avatarJsonUrl: string, dna: { __typename?: 'AvatarDna', arms: string, belt?: string | null, dress?: string | null, hat?: string | null, head: string, jacket?: string | null, legs: string, mask?: string | null, necklace?: string | null, shirt?: string | null, shoes?: string | null, wristband?: string | null } } };\n\nexport const AssignmentTaskFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AssignmentTask\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"assignmentTask\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AssignmentTaskMyLessons\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"activityId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"assignmentUuid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lessonId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"thumbnailUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"targetRouteParams\"},\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"client\"}}]}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AssignmentTaskDrivingTests\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"assignmentUuid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"gradePosition\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"gradeLessonNumber\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"thumbnailUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"targetRouteParams\"},\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"client\"}}]}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Error\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"message\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}}]}}]} as unknown as DocumentNode<AssignmentTaskFragment, unknown>;\nexport const StudentItemsFragmentFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentItemsFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"animationJson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"animationUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"audioUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"code\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"footprint\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"imageUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"kind\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"room\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"roomGroup\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"roomGroupIndex\"}}]}}]}}]} as unknown as DocumentNode<StudentItemsFragmentFragment, unknown>;\nexport const StudentQuestDataFragmentFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentQuestDataFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"quest\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"primaryGoal\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"goalType\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"QuestGoalLesson\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rewardAmount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lesson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progressCurrent\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progressTotal\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"QuestGoalMap\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rewardAmount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"map\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progressCurrent\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progressTotal\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"}}]}}]}}]}}]}}]} as unknown as DocumentNode<StudentQuestDataFragmentFragment, unknown>;\nexport const StudentProgressFragmentFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentProgressFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progress\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"drivingTests\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentGrade\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"results\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"data\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"geometry\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"measurement\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"number\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"operations\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"patterns\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"myLessons\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentLesson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentMap\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentActivity\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"showPlacementTest\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mentalMinute\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentLesson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentLessonSet\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"additionSubtraction\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"multiplicationDivision\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"updatedAt\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"additionSubtraction\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"multiplicationDivision\"}}]}}]}}]}}]}}]} as unknown as DocumentNode<StudentProgressFragmentFragment, unknown>;\nexport const StudentUserFragmentFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentUserFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"acorns\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"customerType\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"gradePosition\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"firstName\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"remoteId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"backgroundMusicDisabled\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"gamesAccess\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playroomAccess\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rosterEnabled\"}}]}}]} as unknown as DocumentNode<StudentUserFragmentFragment, unknown>;\nexport const StudentAvatarFragmentFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentAvatarFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"avatarUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"avatarJsonUrl\"},\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"client\"}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dna\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"arms\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"belt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dress\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hat\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"head\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jacket\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"legs\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mask\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"necklace\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"shirt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"shoes\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"wristband\"}}]}}]}}]} as unknown as DocumentNode<StudentAvatarFragmentFragment, unknown>;\nexport const StudentLocaleFragmentFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentLocaleFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"locale\"}}]}}]} as unknown as DocumentNode<StudentLocaleFragmentFragment, unknown>;\nexport const StudentAvatarUpdateDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"studentAvatarUpdate\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentAvatarUpdateInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"studentAvatarUpdate\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"student\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentAvatarFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentAvatarFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"avatarUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"avatarJsonUrl\"},\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"client\"}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dna\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"arms\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"belt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dress\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hat\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"head\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jacket\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"legs\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mask\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"necklace\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"shirt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"shoes\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"wristband\"}}]}}]}}]} as unknown as DocumentNode<StudentAvatarUpdateMutation, StudentAvatarUpdateMutationVariables>;\nexport const MyLessonsActivityResultCreateDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"myLessonsActivityResultCreate\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MyLessonsActivityResultCreateInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"myLessonsActivityResultCreate\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"myLessonsActivityResult\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reward\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"acorns\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"student\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentProgressFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AssignmentTask\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentQuestDataFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentProgressFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progress\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"drivingTests\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentGrade\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"results\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"data\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"geometry\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"measurement\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"number\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"operations\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"patterns\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"myLessons\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentLesson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentMap\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentActivity\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"showPlacementTest\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mentalMinute\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentLesson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentLessonSet\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"additionSubtraction\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"multiplicationDivision\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"updatedAt\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"additionSubtraction\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"multiplicationDivision\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AssignmentTask\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"assignmentTask\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AssignmentTaskMyLessons\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"activityId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"assignmentUuid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lessonId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"thumbnailUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"targetRouteParams\"},\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"client\"}}]}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AssignmentTaskDrivingTests\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"assignmentUuid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"gradePosition\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"gradeLessonNumber\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"thumbnailUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"targetRouteParams\"},\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"client\"}}]}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Error\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"message\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentQuestDataFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"quest\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"primaryGoal\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"goalType\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"QuestGoalLesson\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rewardAmount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lesson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progressCurrent\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progressTotal\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"QuestGoalMap\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rewardAmount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"map\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progressCurrent\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progressTotal\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"}}]}}]}}]}}]}}]} as unknown as DocumentNode<MyLessonsActivityResultCreateMutation, MyLessonsActivityResultCreateMutationVariables>;\nexport const GetInitialAppDataDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetInitialAppData\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"student\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentUserFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentLocaleFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentAvatarFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AssignmentTask\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentProgressFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentQuestDataFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentItemsFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentUserFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"acorns\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"customerType\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"gradePosition\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"firstName\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"remoteId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"backgroundMusicDisabled\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"gamesAccess\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playroomAccess\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rosterEnabled\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentLocaleFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"locale\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentAvatarFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"avatarUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"avatarJsonUrl\"},\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"client\"}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dna\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"arms\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"belt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dress\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hat\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"head\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jacket\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"legs\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mask\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"necklace\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"shirt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"shoes\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"wristband\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AssignmentTask\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"assignmentTask\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AssignmentTaskMyLessons\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"activityId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"assignmentUuid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lessonId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"thumbnailUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"targetRouteParams\"},\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"client\"}}]}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AssignmentTaskDrivingTests\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"assignmentUuid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"gradePosition\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"gradeLessonNumber\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"thumbnailUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"targetRouteParams\"},\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"client\"}}]}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Error\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"message\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentProgressFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progress\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"drivingTests\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentGrade\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"results\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"data\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"geometry\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"measurement\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"number\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"operations\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"patterns\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"myLessons\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentLesson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentMap\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentActivity\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"showPlacementTest\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mentalMinute\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentLesson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentLessonSet\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"additionSubtraction\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"multiplicationDivision\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"updatedAt\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"additionSubtraction\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"multiplicationDivision\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentQuestDataFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"quest\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"primaryGoal\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"goalType\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"QuestGoalLesson\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rewardAmount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lesson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progressCurrent\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progressTotal\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"QuestGoalMap\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rewardAmount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"map\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progressCurrent\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progressTotal\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentItemsFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"animationJson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"animationUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"audioUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"code\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"footprint\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"imageUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"kind\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"room\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"roomGroup\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"roomGroupIndex\"}}]}}]}}]} as unknown as DocumentNode<GetInitialAppDataQuery, GetInitialAppDataQueryVariables>;\nexport const ArcadeGamesDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"ArcadeGames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"arcadeGames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cost\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}]}}]}}]} as unknown as DocumentNode<ArcadeGamesQuery, ArcadeGamesQueryVariables>;\nexport const GetMyAwardsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetMyAwards\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"student\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"badges\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lesson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"colour\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"certificates\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mapCertificates\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"url\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"map\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progress\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"myLessons\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentMap\"}}]}}]}}]}}]}}]} as unknown as DocumentNode<GetMyAwardsQuery, GetMyAwardsQueryVariables>;\nexport const GetStudentCurrentTaskDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetStudentCurrentTask\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"student\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"AssignmentTask\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"AssignmentTask\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"assignmentTask\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AssignmentTaskMyLessons\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"activityId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"assignmentUuid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lessonId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"thumbnailUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"targetRouteParams\"},\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"client\"}}]}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AssignmentTaskDrivingTests\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"assignmentUuid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"category\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endAt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"gradePosition\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"gradeLessonNumber\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"thumbnailUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"targetRouteParams\"},\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"client\"}}]}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Error\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"message\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}}]}}]}}]} as unknown as DocumentNode<GetStudentCurrentTaskQuery, GetStudentCurrentTaskQueryVariables>;\nexport const ResetMyLessonsLessonProgressDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"ResetMyLessonsLessonProgress\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentProgressMyLessonsLessonResetInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"studentProgressMyLessonsLessonReset\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"student\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentProgressFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentProgressFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progress\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"drivingTests\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentGrade\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"results\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"data\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"geometry\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"measurement\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"number\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"operations\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"patterns\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"myLessons\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentLesson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentMap\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentActivity\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"showPlacementTest\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mentalMinute\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentLesson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentLessonSet\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"additionSubtraction\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"multiplicationDivision\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"updatedAt\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"additionSubtraction\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"multiplicationDivision\"}}]}}]}}]}}]}}]} as unknown as DocumentNode<ResetMyLessonsLessonProgressMutation, ResetMyLessonsLessonProgressMutationVariables>;\nexport const ResetMyLessonsMapQuizProgressDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"ResetMyLessonsMapQuizProgress\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentProgressMyLessonsMapQuizResetInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"studentProgressMyLessonsMapQuizReset\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"student\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentProgressFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentProgressFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progress\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"drivingTests\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentGrade\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"results\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"data\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"geometry\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"measurement\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"number\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"operations\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"patterns\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"myLessons\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentLesson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentMap\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentActivity\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"showPlacementTest\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mentalMinute\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentLesson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentLessonSet\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"additionSubtraction\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"multiplicationDivision\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"updatedAt\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"additionSubtraction\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"multiplicationDivision\"}}]}}]}}]}}]}}]} as unknown as DocumentNode<ResetMyLessonsMapQuizProgressMutation, ResetMyLessonsMapQuizProgressMutationVariables>;\nexport const ResetMyLessonsPlacementTestProgressDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"ResetMyLessonsPlacementTestProgress\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"studentProgressMyLessonsPlacementTestReset\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"student\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentProgressFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentProgressFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progress\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"drivingTests\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentGrade\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"results\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"data\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"geometry\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"measurement\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"number\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"operations\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"patterns\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"myLessons\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentLesson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentMap\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentActivity\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"showPlacementTest\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mentalMinute\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentLesson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentLessonSet\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"additionSubtraction\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"multiplicationDivision\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"updatedAt\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"additionSubtraction\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"multiplicationDivision\"}}]}}]}}]}}]}}]} as unknown as DocumentNode<ResetMyLessonsPlacementTestProgressMutation, ResetMyLessonsPlacementTestProgressMutationVariables>;\nexport const StudentItemPlacementUpdateDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentItemPlacementUpdate\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentItemPlacementUpdateInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"studentItemPlacementUpdate\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"student\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentItemsFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentItemsFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"animationJson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"animationUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"audioUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"code\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"footprint\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"imageUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"kind\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"room\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"roomGroup\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"roomGroupIndex\"}}]}}]}}]} as unknown as DocumentNode<StudentItemPlacementUpdateMutation, StudentItemPlacementUpdateMutationVariables>;\nexport const ItemPurchaseDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"ItemPurchase\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ItemPurchaseInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"itemPurchase\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ItemPurchaseSuccess\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"student\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"acorns\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentItemsFragment\"}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ItemPurchaseInsufficientFunds\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"student\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"acorns\"}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentItemsFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"animationJson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"animationUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"audioUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"code\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"footprint\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"imageUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"kind\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"room\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"roomGroup\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"roomGroupIndex\"}}]}}]}}]} as unknown as DocumentNode<ItemPurchaseMutation, ItemPurchaseMutationVariables>;\nexport const GetStudentQuestDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetStudentQuest\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"student\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentQuestDataFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentQuestDataFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"quest\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"primaryGoal\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"goalType\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"QuestGoalLesson\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rewardAmount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lesson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progressCurrent\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progressTotal\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"QuestGoalMap\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rewardAmount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"map\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progressCurrent\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progressTotal\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"}}]}}]}}]}}]}}]} as unknown as DocumentNode<GetStudentQuestQuery, GetStudentQuestQueryVariables>;\nexport const AcknowledgeQuestGoalAlertDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"AcknowledgeQuestGoalAlert\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentQuestGoalAcknowledgeCompleteInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"studentQuestGoalAcknowledgeComplete\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"student\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"acorns\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentQuestDataFragment\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentQuestDataFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"quest\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"primaryGoal\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"goalType\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"QuestGoalLesson\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rewardAmount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lesson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progressCurrent\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progressTotal\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"QuestGoalMap\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rewardAmount\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"map\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progressCurrent\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progressTotal\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"}}]}}]}}]}}]}}]} as unknown as DocumentNode<AcknowledgeQuestGoalAlertMutation, AcknowledgeQuestGoalAlertMutationVariables>;\nexport const GetProgressDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetProgress\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"student\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentProgressFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentProgressFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"progress\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"drivingTests\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentGrade\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"results\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"data\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"geometry\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"measurement\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"number\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"operations\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"patterns\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"myLessons\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentLesson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentMap\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentActivity\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"showPlacementTest\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mentalMinute\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentLesson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentLessonSet\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"additionSubtraction\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"multiplicationDivision\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"updatedAt\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"additionSubtraction\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"multiplicationDivision\"}}]}}]}}]}}]}}]} as unknown as DocumentNode<GetProgressQuery, GetProgressQueryVariables>;\nexport const StudentQueryDocumentDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentQueryDocument\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"student\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentUserFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentLocaleFragment\"}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentAvatarFragment\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentUserFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"acorns\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"customerType\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"gradePosition\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"firstName\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"remoteId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"backgroundMusicDisabled\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"gamesAccess\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playroomAccess\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rosterEnabled\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentLocaleFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"locale\"}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"StudentAvatarFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Student\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"avatarUrl\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"avatarJsonUrl\"},\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"client\"}}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dna\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"arms\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"belt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dress\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hat\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"head\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jacket\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"legs\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mask\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"necklace\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"shirt\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"shoes\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"wristband\"}}]}}]}}]} as unknown as DocumentNode<StudentQueryDocumentQuery, StudentQueryDocumentQueryVariables>;","export * from \"./gql\";","\n      export interface PossibleTypesResultData {\n        possibleTypes: {\n          [key: string]: string[]\n        }\n      }\n      const result: PossibleTypesResultData = {\n  \"possibleTypes\": {\n    \"Assignment\": [\n      \"AssignmentDrivingTests\",\n      \"AssignmentMyLessons\"\n    ],\n    \"AssignmentDetails\": [\n      \"AssignmentDrivingTests\",\n      \"AssignmentMyLessons\"\n    ],\n    \"AssignmentTask\": [\n      \"AssignmentTaskDrivingTests\",\n      \"AssignmentTaskMyLessons\",\n      \"Error\"\n    ],\n    \"AssignmentTaskDetails\": [\n      \"AssignmentTaskDrivingTests\",\n      \"AssignmentTaskMyLessons\"\n    ],\n    \"ItemPurchasePayload\": [\n      \"ItemPurchaseInsufficientFunds\",\n      \"ItemPurchaseSuccess\"\n    ],\n    \"QuestGoalPrimary\": [\n      \"QuestGoalLesson\",\n      \"QuestGoalMap\"\n    ]\n  }\n};\n      export default result;\n    ","import { helper } from '@ember/component/helper'\nimport { capitalize, decamelize } from '@ember/string'\n\nexport const titleCase = ([value]: [string]) =>\n  capitalize(decamelize(value)).replace(/_/g, ' ')\n\nexport default helper(titleCase)\n","\n        export default {\n          name: 'ember-cli-mirage',\n          initialize() {}\n        };\n      ","export const lessonSets = [\n  {\n    id: 'addition_subtraction',\n    lessonIds: [\n      1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n      32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, 60,\n      61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 74, 75, 76, 78, 79, 80, 82, 83, 84, 85, 87, 88, 89, 91, 92, 94, 95,\n      96, 97, 98, 101, 102, 105, 106, 109, 112, 117, 122, 127, 132, 137,\n    ],\n  },\n  {\n    id: 'multiplication_division',\n    lessonIds: [\n      52, 62, 73, 77, 81, 86, 90, 93, 99, 100, 103, 104, 107, 108, 110, 111, 113, 114, 115, 116, 118, 119, 120, 121,\n      123, 124, 125, 126, 128, 129, 130, 131, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145,\n    ],\n  },\n]\n","import { modifier } from 'ember-modifier'\nimport { assert, runInDebug } from '@ember/debug'\n\n/**\n * Modifier which calls a listener function when a `LOAD_COMPLETE` event is fired by a caper activity.\n */\nexport default modifier(function caperLoadComplete(_element, [listener]: [EventListener], _named) {\n  assert('listener must be a function', typeof listener === 'function')\n\n  document.addEventListener(\n    'LOAD_COMPLETE',\n    (e) => {\n      runInDebug(() => {\n        console.log(`%ccaper-load-complete-modifier clearing loading screen`, 'color: blue; font-size: 1.05rem')\n      })\n\n      listener(e)\n    },\n    false,\n  )\n\n  return () => {\n    document.removeEventListener('LOAD_COMPLETE', listener, false)\n  }\n})\n","import { assert } from '@ember/debug'\nimport { modifier } from 'ember-modifier'\nimport fitty from 'fitty'\nimport type { FittyOptions } from 'fitty'\n\ninterface FitTextSignature {\n  Args: {\n    Named: FittyOptions\n  }\n  Element: Element\n}\n\nexport default modifier<FitTextSignature>(function fitText(element, _, named) {\n  assert('element must be a HTMLElement', element instanceof HTMLElement)\n  const fit = fitty(element, named)\n\n  return () => {\n    fit.unsubscribe()\n  }\n})\n","import { modifier } from 'ember-modifier'\n\ninterface SetNavItemSignature {\n  Element: Element\n  Args: {\n    Positional: [setNavItemElement: (element: Element) => void]\n  }\n}\n\nexport default modifier<SetNavItemSignature>(function setNavItem(\n  element,\n  [setNavItemElement],\n) {\n  setNavItemElement(element)\n})\n","import { assert } from '@ember/debug'\nimport { modifier } from 'ember-modifier'\n\nexport default modifier(function sidebarActivityListScroll(\n  element,\n  [currentActivityId]: [number],\n) {\n  scrollToItem(currentActivityId, element)\n\n  const scrollUp = () => {\n    scrollToItem(itemClosestToCenterOfList(element) - 1, element)\n  }\n  const scrollDown = () => {\n    scrollToItem(itemClosestToCenterOfList(element) + 1, element)\n  }\n\n  document.addEventListener('activity-sidebar-up', scrollUp)\n  document.addEventListener('activity-sidebar-down', scrollDown)\n\n  return () => {\n    document.removeEventListener('activity-sidebar-up', scrollUp)\n    document.removeEventListener('activity-sidebar-down', scrollDown)\n  }\n})\n\nfunction outerHeightWithMargin(element: Element) {\n  const height = element.getBoundingClientRect().height\n  const style = getComputedStyle(element)\n  const margin = parseFloat(style.marginTop) + parseFloat(style.marginBottom)\n\n  return height + margin\n}\n\n/**\n * The content-box height of an element, i.e. excluding padding and border.\n *\n * Equivalent to jQuery's `.height()`, which this replaced. `clientHeight` on\n * its own is not the same thing — it includes padding, and the list this is\n * used on is padded, so using it would shift every activity off-centre by\n * half the padding.\n */\nfunction contentHeight(element: Element) {\n  const style = getComputedStyle(element)\n\n  return (\n    element.clientHeight -\n    parseFloat(style.paddingTop) -\n    parseFloat(style.paddingBottom)\n  )\n}\n\nfunction scrollToItem(id: number, element: Element) {\n  const list = element.querySelector('ul')\n  if (!list) return\n\n  const listHeight = contentHeight(list)\n  const item = element.querySelector(`[data-item=\"${id.toString()}\"]`)\n\n  if (!item || !listHeight) return\n  const itemHeight = outerHeightWithMargin(item)\n  const offset = Math.max((id - 1) * itemHeight, 0)\n  const scrollTop = offset - listHeight / 2 + itemHeight / 2\n\n  // Issuing a new smooth scroll supersedes any in-flight one, which is what\n  // the jQuery `.stop()` before `.animate()` used to do explicitly.\n  list.scrollTo({ top: scrollTop, behavior: 'smooth' })\n}\n\nfunction itemClosestToCenterOfList(element: Element): number {\n  const listItems = element.querySelectorAll('ul li')\n  const listRect = element\n    .querySelector('ul')\n    ?.parentElement?.getBoundingClientRect()\n\n  assert('list must exist', listRect)\n  assert('list must contain items', listItems[0])\n\n  const itemHeight = Math.round(listItems[0].getBoundingClientRect().height)\n\n  const listHeight = listRect.height\n\n  const centerOfList = Math.round(listHeight / 2 + listRect.top)\n\n  const padding = 10\n\n  const topOfRange = centerOfList - itemHeight - padding\n  const bottomOfRange = centerOfList + itemHeight + padding\n\n  const centerItem = [...listItems].find((item) => {\n    const rect = item.getBoundingClientRect()\n    const top = Math.round(rect.top)\n    const bottom = Math.round(rect.bottom)\n\n    return top >= topOfRange && bottom <= bottomOfRange\n  })\n\n  if (!centerItem) throw new Error('cant find center item')\n  const itemId = centerItem.attributes.getNamedItem('data-item')?.value\n  if (!itemId) throw new Error('item missing data-item attribute')\n  return parseInt(itemId, 10)\n}\n","import type Owner from '@ember/owner'\nimport Modifier from 'ember-modifier'\nimport type { ArgsFor, PositionalArgs } from 'ember-modifier'\nimport { registerDestructor } from '@ember/destroyable'\nimport { debounce } from 'lodash'\nimport { assert } from '@ember/debug'\n\ninterface WindowResizeSignature {\n  Element: Element\n  Args: {\n    Positional: [resizeHandler: () => void]\n  }\n}\n\nfunction cleanup(instance: WindowResizeModifier) {\n  window.removeEventListener('resize', instance.resizeHandler)\n}\n\nexport default class WindowResizeModifier extends Modifier<WindowResizeSignature> {\n  resizeHandler = () => {}\n\n  constructor(owner: Owner, args: ArgsFor<WindowResizeSignature>) {\n    super(owner, args)\n    registerDestructor(this, cleanup)\n  }\n\n  override modify(\n    element: WindowResizeSignature['Element'],\n    [resizeHandler]: PositionalArgs<WindowResizeSignature>,\n  ) {\n    assert('element must be a HTMLElement', element instanceof HTMLElement)\n\n    this.resizeHandler = debounce(resizeHandler, 100)\n\n    resizeHandler() // resize immediately after insert into DOM\n    cleanup(this)\n    window.addEventListener('resize', this.resizeHandler)\n  }\n}\n","import type { OperationVariables, WatchFragmentOptions } from '@apollo/client'\nimport { cell, resource, use } from 'ember-resources'\n\nfunction Fragment<TFragmentData = unknown, TVariables = OperationVariables>(\n  options: () => WatchFragmentOptions<TFragmentData, TVariables>,\n) {\n  return resource(({ owner, on }) => {\n    const apollo = owner.lookup('service:apollo')\n    const watchOptions = options()\n    const { from, fragment } = watchOptions\n    const query = apollo.watchFragment(watchOptions)\n\n    const currentResult = cell<TFragmentData | undefined>()\n\n    // Find the id of the object to read the initial fragment data\n    const id = typeof from === 'string' ? from : apollo.cache.identify(from)\n\n    if (id) {\n      // Attempt to read the initial fragment data from the cache\n      const initialResult = apollo.cache.readFragment({\n        id,\n        fragment: fragment,\n      })\n\n      if (initialResult) {\n        // If there is initial data, set the current result\n        currentResult.set(initialResult as TFragmentData)\n      }\n    }\n\n    const subscription = query.subscribe((result) => {\n      if (result.complete) {\n        currentResult.set(result.data)\n      }\n    })\n\n    on.cleanup(() => {\n      subscription.unsubscribe()\n    })\n\n    return currentResult\n  })\n}\n\n/**\n * Watches the cache for changes to the provided frament.\n *\n * @returns a resource that will update with the latest fragment data.\n */\nexport function useFragment<\n  TFragmentData = unknown,\n  TVariables = OperationVariables,\n>(\n  parent: object,\n  options: () => WatchFragmentOptions<TVariables, TFragmentData>,\n) {\n  return use(parent, Fragment(options))\n}\n","import type {\n  ApolloCache,\n  BaseMutationOptions,\n  DefaultContext,\n  DocumentNode,\n  MutationOptions,\n  OperationVariables,\n  TypedDocumentNode,\n} from '@apollo/client'\nimport { cell, resource, use } from 'ember-resources'\nimport type { Reactive } from 'ember-resources'\n\nexport interface MutationResult<\n  TData = unknown,\n  TVariables = OperationVariables,\n  TContext = DefaultContext,\n  TCache extends ApolloCache<unknown> = ApolloCache<unknown>,\n> {\n  result: TData | undefined\n  mutate(\n    // eslint-disable-next-line @typescript-eslint/no-deprecated\n    options: BaseMutationOptions<TData, TVariables, TContext, TCache>,\n  ): Promise<TData | null | undefined>\n}\n\nfunction Mutation<\n  TData = unknown,\n  TVariables = OperationVariables,\n  TContext = DefaultContext,\n  TCache extends ApolloCache<unknown> = ApolloCache<unknown>,\n>(\n  mutation: DocumentNode | TypedDocumentNode<TData, TVariables>,\n): MutationResult<TData, TVariables, TContext, TCache> {\n  return resource(({ owner }) => {\n    const apollo = owner.lookup('service:apollo')\n    const result = cell<TData | undefined>()\n\n    return () => ({\n      result: result.current,\n      async mutate(options) {\n        const clientOptions = { ...options, mutation } as MutationOptions<TData>\n        const mutateResult = await apollo.mutate(clientOptions)\n\n        if (mutateResult.data) {\n          result.set(mutateResult.data)\n        }\n\n        return mutateResult.data\n      },\n    })\n  })\n}\n\n/**\n * A resource that can perform the provided mutation.\n *\n * @returns a resource that will update with the latest mutation result,\n * and a method to perform the mutation.\n */\nexport function useMutation<TData = unknown, TVariables = OperationVariables>(\n  parent: object,\n  mutation: DocumentNode | TypedDocumentNode<TData, TVariables>,\n): Reactive<MutationResult<TData, TVariables>> {\n  return use(parent, Mutation(mutation))\n}\n","import type {\n  ApolloQueryResult,\n  OperationVariables,\n  WatchQueryOptions,\n} from '@apollo/client'\nimport { cell, resource, use } from 'ember-resources'\n\nexport interface WatchQuery<TData, TVariables extends OperationVariables> {\n  data: TData | undefined\n  refetch(variables?: Partial<TVariables>): Promise<ApolloQueryResult<TData>>\n  result(): Promise<ApolloQueryResult<TData>>\n  updateQuery(\n    mapFn: (\n      previousQueryResult: TData,\n      options: {\n        variables?: OperationVariables\n      },\n    ) => TData,\n  ): void\n}\n\nfunction Query<\n  T = unknown,\n  TVariables extends OperationVariables = OperationVariables,\n>(options: () => WatchQueryOptions<TVariables, T>): WatchQuery<T, TVariables> {\n  return resource(({ owner, on }) => {\n    const apollo = owner.lookup('service:apollo')\n\n    const currentResult = cell<T | undefined>()\n    const query = apollo.watchQuery(options())\n\n    const subscription = query.subscribe((result) => {\n      if (!result.partial) {\n        currentResult.set(result.data)\n      }\n    })\n\n    on.cleanup(() => {\n      subscription.unsubscribe()\n    })\n\n    return () => ({\n      data: currentResult.current,\n      refetch(variables?: Partial<TVariables>) {\n        return query.refetch(variables)\n      },\n      result() {\n        // eslint-disable-next-line @typescript-eslint/no-deprecated\n        return query.result()\n      },\n      updateQuery(mapFn) {\n        query.updateQuery(mapFn as Parameters<typeof query.updateQuery>[0])\n      },\n    })\n  })\n}\n\n/**\n * Watches the cache for changes to the provided query.\n *\n * @returns a resource that will update with the latest query data,\n * and methods to refetch or update the query.\n */\nexport function useQuery<\n  T = unknown,\n  TVariables extends OperationVariables = OperationVariables,\n>(parent: object, options: () => WatchQueryOptions<TVariables, T>) {\n  return use(parent, Query(options))\n}\n","/**\n * Before Rollbar creates an item (posts to the Rollbar server) it will look for a checkIgnore method passed to its config.\n * This module exports a checkIgnore function that is passed to Rollbar config via the `rollbar-check-ignore` instance initializer.\n *\n * The 'higher-order' checkIgnore function is composed of an array of predicate functions, each predicate function\n * must return false for the higher order function to return false.\n *\n * To add a new checkIgnore predicate function, define it in the module and add it to the `checkIgnorePredicates` array.\n *\n * @see https://docs.rollbar.com/docs/rollbarjs-configuration-reference\n */\n\n/**\n https://rollbar.com/blake-elearning/mathseeds-client/items/5772/\n * @param {Boolean} isUncaught\n * @param {Array} args\n * @param {Object} payload\n */\nexport const ignoreUnknownScriptError = function (_isUncaught, args, _payload) {\n  const [error] = args\n  return error && String(error).includes('Script error.')\n}\n\nexport const checkIgnorePredicates = [ignoreUnknownScriptError]\n\n/**\n * Exports a checkIgnore function to be passed to Rollbar config,\n * function loops over all predicate functions in checkIgnorePredicates.\n * - each function returns true if an error should not be sent to rollbar.\n * - each function has the same signature as the rollbar sdk config.checkIgnore function.\n * @param {Boolean} isUncaught\n * @param {Array} args\n * @param {Object} payload\n * @returns true if the Rollbar item should be ignored (not posted to the server).\n */\nexport function checkIgnore(isUncaught, args, payload) {\n  for (const checkIgnorePredicate of checkIgnorePredicates) {\n    if (checkIgnorePredicate(isUncaught, args, payload)) return true\n  }\n  return false\n}\n","import EmberRouter from '@ember/routing/router'\nimport config from './config/environment'\n\nexport default class Router extends EmberRouter {\n  location = config.locationType\n\n  rootURL = config.rootURL\n}\n\nRouter.map(function () {\n  this.route('application-error')\n  this.route('network-error')\n  this.route('unauthorised')\n\n  this.route('arcade', function () {\n    this.route('game', { path: '/game/:game_id' })\n  })\n  this.route('avatar')\n  this.route('awards')\n  this.route('finished-mathseeds')\n  this.route('lesson', { path: '/lesson/:lesson_id' }, function () {\n    this.route('activity', { path: '/:activity_id' }, function () {\n      this.route('minigame')\n    })\n  })\n  this.route('map', { path: '/map/:map_id' }, function () {\n    this.route('quiz')\n    this.route('next')\n  })\n\n  this.route('mental-minute-sets', { path: 'mental-minute' }, function () {\n    this.route('progress')\n    this.route('lessons', { path: '/' }, function () {\n      this.route('index', { path: '/' })\n      this.route('lesson', { path: '/:lesson_id' })\n    })\n  })\n\n  this.route('placement-test')\n  this.route('playroom', function () {\n    this.route('activity', { path: '/:activity_type/:activity_id' })\n  })\n  this.route('reader', { path: '/reader/:book_id' })\n  this.route('sample', function () {\n    this.route('lesson', { path: '/lesson/:lesson_id' })\n  })\n  this.route('recommended')\n  this.route('shop')\n  this.route('treehouse')\n  this.route('driving-tests', function () {\n    this.route('quiz', { path: 'quiz/:grade_id/:category_id/:number_id' })\n    this.route('game')\n\n    this.route('leaderboard')\n  })\n  this.route('no-access', { path: '/no-access/:access_type' })\n})\n","import { action } from '@ember/object'\nimport { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport { runInDebug } from '@ember/debug'\nimport type { Log } from '@blakeelearning/log'\nimport type ReleaseCheckerService from '@blakeelearning/app-refresher/release-checker/service'\nimport type LongSessionKillerService from '@blakeelearning/app-refresher/long-session-killer/service'\nimport type RefresherService from '@blakeelearning/app-refresher/refresher/service'\nimport type { StudentOperationsService } from '@blakeelearning/student-operations'\nimport type MetricsService from 'ember-metrics'\nimport type TimeOnTaskService from 'mathseeds-client/services/time-on-task'\nimport type { FeatureService } from '@blakeelearning/features'\nimport type LoadingUiService from 'mathseeds-client/services/loading-ui'\nimport type DebugModeService from 'mathseeds-client/services/debug-mode'\nimport type Owner from '@ember/owner'\nimport type Transition from '@ember/routing/transition'\nimport type RouterService from '@ember/routing/router-service'\nimport type RouteInfo from '@ember/routing/route-info'\nimport type { RouteInfoWithAttributes } from '@ember/routing/route-info'\nimport config from 'mathseeds-client/config/environment'\nimport type AssignmentsService from 'mathseeds-client/services/assignments'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\nimport type QuestService from 'mathseeds-client/services/quest'\nimport type CaperLoaderService from 'mathseeds-client/services/caper-loader'\nimport {\n  isErrorRepresentingNetworkError,\n  isAuthorizationError,\n} from 'mathseeds-client/utils/errors'\nimport type UserService from 'mathseeds-client/services/user'\nimport type PosthogService from 'mathseeds-client/services/posthog'\nimport type StudentMetricsService from 'mathseeds-client/services/student-metrics'\nimport type JesterLoaderService from 'mathseeds-client/services/jester-loader'\nimport type ApolloService from 'mathseeds-client/services/apollo'\nimport { graphql } from 'mathseeds-client/graphql'\nimport type SessionService from 'mathseeds-client/services/session'\nimport type { UserStudent } from 'mathseeds-client/services/user'\nimport { isApolloError } from '@apollo/client/core'\n\ndeclare global {\n  interface Window {\n    CAPER_FEATURES?: string[]\n    CAPER_MUSIC_ENABLED?: boolean\n  }\n}\n\nexport const initialAppQueryDocument = graphql(/* GraphQL */ `\n  query GetInitialAppData {\n    student {\n      ...StudentUserFragment\n      ...StudentLocaleFragment\n      ...StudentAvatarFragment\n      ...AssignmentTask\n      ...StudentProgressFragment\n      ...StudentQuestDataFragment\n      ...StudentItemsFragment\n    }\n  }\n`)\n\nexport default class ApplicationRoute extends Route {\n  @service\n  declare caperLoader: CaperLoaderService\n\n  @service\n  declare log: Log\n\n  @service\n  declare user: UserService\n\n  @service\n  declare releaseChecker: ReleaseCheckerService\n\n  @service\n  declare longSessionKiller: LongSessionKillerService\n\n  @service\n  declare router: RouterService\n\n  @service\n  declare metrics: MetricsService\n\n  @service\n  declare refresher: RefresherService\n\n  @service\n  declare timeOnTask: TimeOnTaskService\n\n  @service\n  declare assignments: AssignmentsService\n\n  @service\n  declare features: FeatureService\n\n  @service\n  declare studentProgress: StudentProgressService\n\n  @service\n  declare loadingUi: LoadingUiService\n\n  @service\n  declare debugMode: DebugModeService\n\n  @service\n  declare operations: StudentOperationsService\n\n  @service\n  declare quest: QuestService\n\n  @service\n  declare jesterLoader: JesterLoaderService\n\n  @service\n  declare apollo: ApolloService\n\n  @service\n  declare session: SessionService\n\n  @service\n  declare posthog: PosthogService\n\n  @service\n  declare studentMetrics: StudentMetricsService\n\n  constructor(owner: Owner) {\n    super(owner)\n\n    // @ts-expect-error ember types are not up to date\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    this.router.on('routeWillChange', this, this._showLoadingScreen)\n    // @ts-expect-error ember types are not up to date\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    this.router.on('routeDidChange', this, this._hideLoadingScreen)\n    // This will track the initial page load, after which we depend on\n    // `trackPage` events being emitted.\n    // @ts-expect-error ember types are not up to date\n\n    this.router.one('routeDidChange', this, '_trackPage')\n    this.on('trackPage', this, '_trackPage')\n\n    this.operations.setup({\n      product: config.APP.product,\n      studentOperationsUrl: config.studentOperationsUrl,\n    })\n  }\n\n  override willDestroy() {\n    // @ts-expect-error ember types are not up to date\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    this.router.off('routeWillChange', this, this._showLoadingScreen)\n    // @ts-expect-error ember types are not up to date\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    this.router.off('routeDidChange', this, this._hideLoadingScreen)\n\n    this.off('trackPage', this, '_trackPage')\n    // @ts-expect-error ember types are not up to date\n\n    this.router.off('routeDidChange', this, '_trackPage')\n    super.willDestroy()\n  }\n\n  _showLoadingScreen() {\n    this.loadingUi.show()\n  }\n\n  _hideLoadingScreen(transition: Transition) {\n    if (\n      transition.to?.parent?.name === transition.from?.parent?.name &&\n      transition.to?.parent?.name === 'mental-minute-sets.lessons'\n    ) {\n      runInDebug(() => {\n        console.log(\n          `%c transitioning between mental minute lessons, hiding loading screen.`,\n          'color: blue; font-size: 1.05rem',\n        )\n      })\n      this.loadingUi.hide()\n      return\n    }\n\n    // Search the list of `routeInfo` objects from the top down using `find()` for a resolved model containing an `interactiveConfig` to determine if the loading screen should be hidden later once the content interactive is done loading. For Caper a `LOAD_COMPLETE` event is fired which we catch in the `caper-load-complete` modifier. For Jester, we setup a `readyForUserInput` action on the controller.\n    const shouldWaitForContentInteractiveToLoad =\n      !this.debugMode.enabled &&\n      transition.to?.find((routeInfo) => {\n        let willHideLoadingScreenManually = false\n\n        if (\n          typeof routeInfo.metadata === 'object' &&\n          routeInfo.metadata !== null &&\n          'willHideLoadingScreenManually' in routeInfo.metadata &&\n          typeof routeInfo.metadata.willHideLoadingScreenManually === 'boolean'\n        ) {\n          willHideLoadingScreenManually =\n            routeInfo.metadata.willHideLoadingScreenManually\n        }\n\n        if (willHideLoadingScreenManually) return true\n\n        const resolvedModel = (routeInfo as RouteInfoWithAttributes).attributes\n\n        if (!resolvedModel || typeof resolvedModel !== 'object') return false\n\n        runInDebug(() => {\n          if ('interactiveConfig' in resolvedModel) {\n            console.log(\n              `%cFound \"interactiveConfig\" in model for \"${transition.to?.name ?? 'unknown'}\" route. Loading screen should be hidden when content is ready.`,\n              'color: blue; font-size: 1.05rem',\n            )\n          }\n        })\n        return 'interactiveConfig' in resolvedModel\n      })\n\n    // Don't hide the loading screen if we should wait for content to finish loading.\n    if (shouldWaitForContentInteractiveToLoad) return\n\n    this.loadingUi.hide()\n  }\n\n  _trackPage() {\n    const page = this.router.currentURL\n    const title = this.router.currentRouteName || 'unknown'\n\n    this.metrics.trackPage({ page, title })\n    void this.timeOnTask.pingTaskByRoute(this.router.currentRouteName)\n\n    if (this.features.isEnabled('ms_posthog-capture-pageviews')) {\n      this.posthog.capture('$pageview')\n    }\n\n    this._capturePageView()\n  }\n\n  /**\n   * Reports the page view to the metrics collector.\n   *\n   * `routeInfo` defaults to the router's current leaf route, which Ember sets\n   * to `transition.to` in `routeDidChange` — so it is the settled destination\n   * at both `_trackPage` call sites, and carries the resolved model\n   * attributes we need to tell caper and jester content apart.\n   */\n  _capturePageView(\n    // Ember types `currentRoute` as always present, but it is null until the\n    // first transition has settled.\n    routeInfo: RouteInfo | null = this.router.currentRoute,\n  ) {\n    if (!this.features.isEnabled('ms_kafka-page-views')) return\n\n    const { currentURL } = this.router\n    if (!currentURL) return\n\n    let contentType = 'html'\n\n    routeInfo?.find((info) => {\n      const resolvedModel = (info as RouteInfoWithAttributes).attributes\n\n      if (!resolvedModel || typeof resolvedModel !== 'object') return false\n\n      if ('interactiveConfig' in resolvedModel) {\n        contentType = 'caper'\n        return true\n      }\n\n      if ('manifests' in resolvedModel) {\n        contentType = 'jester'\n        return true\n      }\n\n      return false\n    })\n\n    this.studentMetrics.capturePageView({\n      contentType,\n      path: currentURL.split('?')[0] ?? '',\n    })\n  }\n\n  override async beforeModel(transition: Transition) {\n    if (this._isGuestSession(transition)) {\n      await this.user.asGuest()\n    } else {\n      this.releaseChecker.start()\n      this.longSessionKiller.start()\n\n      await this.apollo.query({\n        query: initialAppQueryDocument,\n      })\n\n      await this.user.setup()\n\n      await Promise.all([\n        this.assignments.setup(),\n        this.studentProgress.fetchProgress(),\n        this.quest.fetch(),\n      ])\n\n      this.posthog.setup()\n      this.studentMetrics.setup()\n\n      if (this.features.isEnabled('ms_time-on-task-v2')) {\n        this.timeOnTask.setupV2()\n      }\n    }\n\n    this._setCaperMusicToggle(!this.user.backgroundMusicDisabled)\n    this._addCaperFeatures()\n    this.caperLoader.setup({ accent: this.user.locale })\n    this.jesterLoader.setAccent(this.user.jesterAccent)\n  }\n\n  override model() {\n    return { locale: this.user.locale }\n  }\n\n  override async afterModel(_student: UserStudent, transition: Transition) {\n    if (this._isGuestSession(transition)) {\n      return\n    }\n\n    await this.assignments.checkTransition(transition)\n  }\n\n  @action\n  override willTransition(transition: Transition) {\n    if (this.assignments.hasTask) {\n      void this.assignments.checkTransition(transition)\n    }\n\n    void transition.followRedirects().then((toRoute) => {\n      if (toRoute instanceof Route) {\n        const willRefresh = this.refresher.refreshIfSafeAndScheduled(\n          toRoute.routeName,\n        )\n        if (!willRefresh) this.trigger('trackPage')\n      }\n    })\n  }\n\n  // Route error handlers are called synchronously so cannot return a promise\n  // which also means we can't use async/await\n  @action\n  override error(error: unknown, transition: Transition) {\n    if (isErrorRepresentingNetworkError(error)) {\n      return true\n    }\n\n    if (this._isGuestSession(transition)) {\n      return false\n    }\n\n    if (isAuthorizationError(error)) {\n      if (transition.from) {\n        this.session.signOut()\n      } else {\n        this.session.signIn()\n      }\n      return false\n    }\n\n    // Do not log Apollo errors as they are already logged by the Apollo client\n    // eslint-disable-next-line @typescript-eslint/no-deprecated\n    if (!isApolloError(error as Error)) {\n      this.log.error(error as Error)\n    }\n\n    return true\n  }\n\n  _isGuestSession(transition: Transition) {\n    return transition.targetName === 'sample.lesson'\n  }\n\n  /**\n   * Caper will check this global variable to determine if it should play music.\n   */\n  _setCaperMusicToggle(value: boolean) {\n    window.CAPER_MUSIC_ENABLED = value\n  }\n\n  _addCaperFeatures() {\n    const client = this.features.getClient()\n    const { payload: flagNames } = client.getObjectValue<{ payload: string[] }>(\n      'ms_caper-flag-names',\n      { payload: [] },\n    )\n\n    window.CAPER_FEATURES = [\n      ...new Set(\n        flagNames.filter((flagName) => client.getBooleanValue(flagName, false)),\n      ),\n    ]\n  }\n}\n","import Route from '@ember/routing/route'\nimport type RouterService from '@ember/routing/router-service'\nimport { inject as service } from '@ember/service'\nimport type UserService from 'mathseeds-client/services/user'\n\nexport default class ArcadeRoute extends Route {\n  @service\n  declare router: RouterService\n\n  @service\n  declare user: UserService\n\n  override beforeModel() {\n    if (!this.user.student.gamesAccess) {\n      this.router.transitionTo('no-access', 'arcade')\n    }\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport UrlMaker from 'mathseeds-client/utils/url-maker'\nimport { arcadeGamesQueryDocument } from 'mathseeds-client/routes/arcade/index'\nimport type ApolloService from 'mathseeds-client/services/apollo'\nimport type CaperLoaderService from 'mathseeds-client/services/caper-loader'\nimport type UserService from 'mathseeds-client/services/user'\nimport type RouterService from '@ember/routing/router-service'\nimport type { MinigameAuthService } from '@blakeelearning/minigame-auth'\nimport type { InteractiveConfig } from '@blakeelearning/content-loader-core'\n\ninterface RouteParams {\n  game_id: string\n}\n\ninterface Model {\n  interactiveConfig: InteractiveConfig\n  name: string\n}\n\nexport default class GameRoute extends Route {\n  @service\n  declare apollo: ApolloService\n\n  @service\n  declare minigameAuth: MinigameAuthService\n\n  @service\n  declare caperLoader: CaperLoaderService\n\n  @service\n  declare user: UserService\n\n  @service\n  declare router: RouterService\n\n  get student() {\n    return this.user.student\n  }\n\n  override async model({ game_id: gameName }: RouteParams): Promise<Model> {\n    const result = await this.apollo.query({ query: arcadeGamesQueryDocument })\n    const variables = {\n      student: { name: this.student.firstName },\n      games: result.data.arcadeGames,\n    }\n\n    const interactiveConfig = await this.caperLoader.load(\n      [\n        UrlMaker.caperTomfooleryActivityUrl(\n          this.student.locale,\n          `mathseeds/activities/${gameName}`,\n        ),\n        UrlMaker.urlForArcadeHighScore(this.student, gameName),\n      ],\n      variables,\n    )\n\n    return {\n      interactiveConfig,\n      name: gameName,\n    }\n  }\n\n  override afterModel(model: Model) {\n    if (!this.minigameAuth.claimGameToken(model.name)) {\n      this.router.transitionTo('arcade.index')\n    }\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport UrlMaker from 'mathseeds-client/utils/url-maker'\nimport { graphql } from 'mathseeds-client/graphql'\nimport type ApolloService from 'mathseeds-client/services/apollo'\nimport type CaperLoaderService from 'mathseeds-client/services/caper-loader'\nimport type UserService from 'mathseeds-client/services/user'\nimport type { InteractiveConfig } from '@blakeelearning/content-loader-core'\n\nexport const arcadeGamesQueryDocument = graphql(/* GraphQL */ `\n  query ArcadeGames {\n    arcadeGames {\n      cost\n      id\n      name\n      title\n    }\n  }\n`)\n\ninterface Model {\n  interactiveConfig: InteractiveConfig\n}\n\nexport default class IndexRoute extends Route {\n  @service\n  declare apollo: ApolloService\n\n  @service\n  declare caperLoader: CaperLoaderService\n\n  @service\n  declare user: UserService\n\n  get student() {\n    return this.user.student\n  }\n\n  override async model(): Promise<Model> {\n    const result = await this.apollo.query({ query: arcadeGamesQueryDocument })\n\n    const variables = {\n      student: this.student,\n      games: result.data.arcadeGames,\n    }\n\n    const interactiveConfig = await this.caperLoader.load(\n      [\n        UrlMaker.caperTomfooleryActivityUrl(\n          this.student.locale,\n          'mathseeds/activities/arcade',\n        ),\n      ],\n      variables,\n    )\n\n    return { interactiveConfig }\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport UrlMaker from 'mathseeds-client/utils/url-maker'\nimport type CaperLoaderService from 'mathseeds-client/services/caper-loader'\nimport type UserService from 'mathseeds-client/services/user'\nimport type ItemsService from 'mathseeds-client/services/items'\n\nexport default class AvatarRoute extends Route {\n  @service\n  declare user: UserService\n\n  @service\n  declare caperLoader: CaperLoaderService\n\n  @service\n  declare items: ItemsService\n\n  get student() {\n    return this.user.student\n  }\n\n  override async model() {\n    const { __typename, ...dna } = this.student.dna\n    const variables = {\n      student: {\n        ...this.student,\n        dna,\n        items: this.items.data,\n      },\n    }\n\n    const interactiveConfig = await this.caperLoader.load(\n      [\n        UrlMaker.caperTomfooleryActivityUrl(\n          this.user.locale,\n          'mathseeds/activities/changing_room',\n        ),\n        this.items.changingRoomJsonUrl,\n      ],\n      variables,\n    )\n\n    return { interactiveConfig }\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport { graphql } from 'mathseeds-client/graphql'\nimport type { CaperLoader } from '@blakeelearning/content-loader-core'\nimport type ApolloService from 'mathseeds-client/services/apollo'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\nimport type { FeatureService } from '@blakeelearning/features'\nimport type RouterService from '@ember/routing/router-service'\nimport type { Badge, MapCertificate } from 'mathseeds-client/graphql/graphql'\n\nexport const getMyAwardsQueryDocument = graphql(/* GraphQL */ `\n  query GetMyAwards {\n    student {\n      id\n      badges {\n        id\n        lesson\n        colour\n      }\n      certificates {\n        mapCertificates {\n          id\n          url\n          map\n          createdAt\n        }\n      }\n      progress {\n        myLessons {\n          currentMap\n        }\n      }\n    }\n  }\n`)\n\ninterface Variables {\n  badges: Badge[]\n  certificates: MapCertificate[]\n  currentMap: number\n}\n\ninterface ModelForRoute {\n  variables: Variables\n  manifests: string[][]\n}\n\nexport default class AwardsRoute extends Route {\n  @service\n  declare apollo: ApolloService\n\n  @service\n  declare caperLoader: CaperLoader\n\n  @service\n  declare studentProgress: StudentProgressService\n\n  @service\n  declare features: FeatureService\n\n  @service declare router: RouterService\n\n  override buildRouteInfoMetadata() {\n    return {\n      willHideLoadingScreenManually: true,\n    }\n  }\n\n  override async model(): Promise<ModelForRoute> {\n    const {\n      data: { student },\n    } = await this.apollo.query({\n      query: getMyAwardsQueryDocument,\n      /**\n       * Using network-only here since we haven't configured apollo\n       * cache updates when map quizzes and lesson quizzes are completed.\n       * Eventually we will be able to switch to cache-first once\n       * we have converted the required student operations to gql mutations.\n       */\n      fetchPolicy: 'network-only',\n    })\n\n    const badges = student.badges\n    const certificates = student.certificates.mapCertificates\n    const currentMap = this.studentProgress.myLessonsCurrentMap\n\n    return {\n      manifests: [['index', 'activities/my-awards']],\n      variables: {\n        badges,\n        certificates,\n        currentMap,\n      },\n    }\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport ky from 'ky'\nimport config from 'mathseeds-client/config/environment'\nimport UrlMaker from 'mathseeds-client/utils/url-maker'\nimport type CaperLoaderService from 'mathseeds-client/services/caper-loader'\nimport type { Log } from '@blakeelearning/log'\nimport type UserService from 'mathseeds-client/services/user'\nimport type RouterService from '@ember/routing/router-service'\n\nexport default class GameRoute extends Route {\n  @service\n  declare caperLoader: CaperLoaderService\n\n  @service\n  declare log: Log\n\n  @service\n  declare user: UserService\n\n  @service\n  declare router: RouterService\n\n  async canPlayDrivingTest() {\n    const gameUrl = `${config.APP.apiEndpoint ?? '/'}${config.APP.apiNamespace}/driving_tests/game`\n\n    try {\n      /**\n       * Because this request is idempotent, try up to three times to fetch\n       * before giving up.\n       */\n      const { can_play: canPlay } = await ky\n        .get(gameUrl, { retry: { limit: 3 } })\n        .json<{ can_play: boolean }>()\n      return canPlay\n      /**\n       * This endpoint fails intermittently, so we try up to three times to make\n       * the request when failures are due to abort errors. ky uses exponential\n       * back-off, and with default settings that means that the second try\n       * will happen 1 second after the first fails, and the third will happen\n       * two seconds after that.\n       */\n    } catch (error) {\n      this.log.error('can play driving test endpoint failed', error as Error)\n      return false\n    }\n  }\n\n  override async beforeModel() {\n    const canPlayDrivingTest = await this.canPlayDrivingTest()\n\n    if (!canPlayDrivingTest) {\n      this.router.transitionTo('driving-tests')\n    }\n  }\n\n  override async model(params: { assignmentMode?: string }) {\n    const variables = {}\n    const interactiveConfig = await this.caperLoader.load(\n      [\n        UrlMaker.caperTomfooleryActivityUrl(\n          this.user.student.locale,\n          'driving_tests/activities/driving_test_game',\n        ),\n      ],\n      variables,\n    )\n\n    return {\n      interactiveConfig,\n      assignmentMode: Boolean(params.assignmentMode),\n    }\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport UrlMaker from 'mathseeds-client/utils/url-maker'\nimport type UserService from 'mathseeds-client/services/user'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\nimport type CaperLoaderService from 'mathseeds-client/services/caper-loader'\n\nexport default class IndexRoute extends Route {\n  @service\n  declare studentProgress: StudentProgressService\n\n  @service\n  declare caperLoader: CaperLoaderService\n\n  @service\n  declare user: UserService\n\n  override async model() {\n    const schoolCurrentGrade = this.user.student.gradePosition\n    const { results: progressResults, currentGrade } =\n      this.studentProgress.drivingTests\n\n    const variables = {\n      student: {\n        driving_tests_progress: JSON.stringify(progressResults),\n      },\n      currentGrade: Math.max(currentGrade, schoolCurrentGrade),\n    }\n\n    const interactiveConfig = await this.caperLoader.load(\n      [\n        UrlMaker.caperTomfooleryActivityUrl(\n          this.user.locale,\n          'driving_tests/activities/driving_test_lobby',\n        ),\n      ],\n      variables,\n    )\n\n    return { interactiveConfig }\n  }\n}\n","import Route from '@ember/routing/route'\nimport ky from 'ky'\nimport { hash } from 'rsvp'\nimport config from 'mathseeds-client/config/environment'\n\nexport default class LeaderboardRoute extends Route {\n  override async model(params: { assignmentMode?: string }) {\n    const rootUrl = `${config.APP.apiEndpoint ?? '/'}${config.APP.apiNamespace}/driving_tests`\n\n    const scores = await hash({\n      studentHighScore: ky.get(`${rootUrl}/high_score`).json(),\n      highScores: ky.get(`${rootUrl}/high_scores`).json(),\n    })\n\n    return {\n      ...scores,\n      assignmentMode: Boolean(params.assignmentMode),\n    }\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport UrlMaker from 'mathseeds-client/utils/url-maker'\nimport type RouterService from '@ember/routing/router-service'\nimport type UserService from 'mathseeds-client/services/user'\nimport type CaperLoaderService from 'mathseeds-client/services/caper-loader'\nimport type AssignmentsService from 'mathseeds-client/services/assignments'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\nimport type { DrivingTestsProgressResults } from 'mathseeds-client/graphql/graphql'\nimport type { InteractiveConfig } from '@blakeelearning/content-loader-core'\n\ntype DrivingTestCategory = keyof Omit<DrivingTestsProgressResults, '__typename'>\n\nexport class QuizRouteModel {\n  grade: number\n  category: DrivingTestCategory\n  number: number\n\n  constructor({\n    grade,\n    category,\n    number,\n  }: {\n    grade: number\n    category: DrivingTestCategory\n    number: number\n  }) {\n    this.grade = grade\n    this.category = category\n    this.number = number\n  }\n}\n\ninterface QuizModel {\n  interactiveConfig: InteractiveConfig\n  quiz: QuizRouteModel\n  isAssignment: boolean\n}\n\nexport default class QuizRoute extends Route {\n  @service\n  declare studentProgress: StudentProgressService\n\n  @service\n  declare assignments: AssignmentsService\n\n  @service declare caperLoader: CaperLoaderService\n\n  @service\n  declare user: UserService\n\n  @service\n  declare router: RouterService\n\n  override async model({\n    grade_id: gradeId,\n    category_id: categoryId,\n    number_id: numberId,\n  }: {\n    grade_id: string\n    category_id: DrivingTestCategory\n    number_id: string\n  }): Promise<QuizModel> {\n    const quiz = new QuizRouteModel({\n      grade: parseInt(gradeId, 10),\n      category: categoryId,\n      number: parseInt(numberId, 10),\n    })\n\n    const isAssignment = this.assignments.canCompleteDrivingTestAssignmentTask(\n      quiz.grade,\n      quiz.category,\n      quiz.number,\n    )\n\n    const variables = {\n      grade: quiz.grade,\n      category: quiz.category,\n      quiz: quiz.number,\n    }\n\n    const interactiveConfig = await this.caperLoader.load(\n      [\n        UrlMaker.caperTomfooleryActivityUrl(\n          this.user.student.locale,\n          `driving_tests/${quiz.category}/${String(quiz.grade)}/${String(quiz.number)}`,\n        ),\n      ],\n      variables,\n    )\n\n    return { interactiveConfig, quiz, isAssignment }\n  }\n\n  override afterModel({ quiz, isAssignment }: QuizModel) {\n    if (isAssignment) return\n\n    const gradeResults = this.studentProgress.drivingTests.results[quiz.grade]\n\n    if (gradeResults && quiz.number > gradeResults[quiz.category] + 1) {\n      this.router.transitionTo('driving-tests')\n    }\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport UrlMaker from 'mathseeds-client/utils/url-maker'\nimport config from 'mathseeds-client/config/environment'\nimport type CaperLoaderService from 'mathseeds-client/services/caper-loader'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\nimport type UserService from 'mathseeds-client/services/user'\nimport type RouterService from '@ember/routing/router-service'\n\nexport default class FinishedMathseedsRoute extends Route {\n  @service declare caperLoader: CaperLoaderService\n\n  @service\n  declare studentProgress: StudentProgressService\n\n  @service\n  declare user: UserService\n\n  @service\n  declare router: RouterService\n\n  override beforeModel() {\n    const currentMap = this.studentProgress.myLessonsCurrentMap\n    if (currentMap <= config.APP.lastMap) {\n      this.router.replaceWith('map', currentMap)\n    }\n  }\n\n  override async model() {\n    const variables = {\n      name: this.user.student.name,\n    }\n\n    const interactiveConfig = await this.caperLoader.load(\n      [\n        UrlMaker.caperTomfooleryActivityUrl(\n          this.user.student.locale,\n          'mathseeds/activities/finished_mathseeds',\n        ),\n      ],\n      variables,\n    )\n\n    return { interactiveConfig }\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport ky from 'ky'\nimport { cloneDeep } from 'lodash'\nimport UrlMaker from 'mathseeds-client/utils/url-maker'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\nimport type MyLessonsService from 'mathseeds-client/services/my-lessons'\nimport type AssignmentsService from 'mathseeds-client/services/assignments'\nimport type UserService from 'mathseeds-client/services/user'\nimport type RouterService from '@ember/routing/router-service'\nimport type { FeatureService } from '@blakeelearning/features'\n\nexport interface Activity {\n  lesson: LessonRouteModel\n  id: number\n  json: unknown\n}\n\ninterface LessonRouteModelArgs {\n  id: string\n  activities?: unknown[]\n}\n\nexport class LessonRouteModel {\n  id: string\n  activities: Activity[]\n\n  constructor({ id, activities = [] }: LessonRouteModelArgs) {\n    this.activities = activities.map((json, index) => {\n      return { lesson: this, id: index + 1, json }\n    })\n\n    this.id = id\n  }\n\n  // Finders\n  // Note: activityIndex is 1-indexed\n  nextActivity(activityIndex: number) {\n    return cloneDeep(this.activities[activityIndex + 1])\n  }\n\n  findActivity(activityIndex: number) {\n    return cloneDeep(this.activities[activityIndex - 1])\n  }\n\n  /**\n   * Find an activity manifest by its index (1-based)\n   *\n   * @method function\n   * @memberOf Lesson\n   * @param {Number} activityIndex - the index (1-based index) of the activity to find\n   * @return {Object} A clone of the activity object's manifest at the specified index\n   */\n  findActivityManifest(activityIndex: number) {\n    return this.findActivity(activityIndex)?.json\n  }\n}\n\nexport default class LessonRoute extends Route<LessonRouteModel> {\n  @service\n  declare studentProgress: StudentProgressService\n\n  @service('my-lessons')\n  declare policy: MyLessonsService\n\n  @service\n  declare assignments: AssignmentsService\n\n  @service\n  declare user: UserService\n\n  @service\n  declare router: RouterService\n\n  @service\n  declare features: FeatureService\n\n  override beforeModel() {\n    if (this.assignments.hasTask) return\n\n    if (this.studentProgress.showMyLessonsPlacementTest) {\n      this.router.transitionTo('placement-test')\n    }\n  }\n\n  override async model({ lesson_id: lessonId }: { lesson_id: string }) {\n    const lessonManifest = await ky\n      .get(\n        UrlMaker.caperTomfooleryActivityUrl(\n          this.user.student.locale,\n          `mathseeds/lessons/${lessonId}`,\n        ),\n      )\n      .json<{ activities: unknown[] }>()\n    return new LessonRouteModel({\n      id: lessonId,\n      activities: lessonManifest.activities,\n    })\n  }\n\n  override afterModel(lesson: LessonRouteModel) {\n    if (this.assignments.hasTask) {\n      return\n    }\n\n    if (!this.policy.canPlayLessonActivity(lesson.id, 1)) {\n      this.router.transitionTo(\n        'lesson',\n        this.studentProgress.myLessonsCurrentLesson,\n      )\n    }\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport { sample } from 'lodash'\nimport config from 'mathseeds-client/config/environment'\nimport UrlMaker from 'mathseeds-client/utils/url-maker'\nimport { calculateMap } from 'mathseeds-client/utils/progress-tools'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\nimport type MyLessonsService from 'mathseeds-client/services/my-lessons'\nimport type CaperLoaderService from 'mathseeds-client/services/caper-loader'\nimport type AssignmentsService from 'mathseeds-client/services/assignments'\nimport type UserService from 'mathseeds-client/services/user'\nimport type RouterService from '@ember/routing/router-service'\nimport type { ActivityManifestBundle } from '@blakeelearning/content-loader-core'\nimport type { LessonRouteModel } from '../lesson'\n\ninterface ActivityManifestVariables {\n  include_caper_intro_outro?: boolean\n  minigame?: string\n  minigame_variables?: unknown\n}\n\nconst {\n  studentProgress: {\n    progress: {\n      myLessons: { lessonsPerMap },\n    },\n  },\n} = config\n\nexport default class ActivityRoute extends Route {\n  @service\n  declare studentProgress: StudentProgressService\n\n  @service('my-lessons')\n  declare policy: MyLessonsService\n\n  @service\n  declare caperLoader: CaperLoaderService\n\n  @service\n  declare assignments: AssignmentsService\n\n  @service\n  declare user: UserService\n\n  @service\n  declare router: RouterService\n\n  get student() {\n    return this.user.student\n  }\n\n  override beforeModel() {\n    const lesson = this.modelFor('lesson') as LessonRouteModel\n    const lastActivity = lesson.activities.length\n    const { activity_id: activityId } = this.paramsFor('lesson.activity') as {\n      activity_id: string\n    }\n\n    if (parseInt(activityId, 10) > lastActivity) {\n      this.router.transitionTo('lesson.activity', lastActivity)\n    }\n  }\n\n  // because sub routes don't have params, we load it here\n  override async model(params: { activity_id: string }) {\n    const lessonModel = this.modelFor('lesson') as LessonRouteModel\n    const lessonId = lessonModel.id\n    const activityId = parseInt(params.activity_id, 10)\n\n    const isAssignment = this.assignments.canCompleteLessonAssignmentTask(\n      lessonId,\n      activityId,\n    )\n\n    const variables = { student: this.student, isAssignment }\n\n    const map = calculateMap(Number(lessonId), lessonsPerMap)\n    const isLastActivity = lessonModel.activities.length === activityId\n    const introOutroType = map > 30 ? 'teen' : 'junior'\n\n    // Manifest is loaded in Parent route (lesson)\n    // findActivityManifest passes the preloaded manifest to the interactiveLoader.\n    const allManifests: ActivityManifestBundle[] = [\n      lessonModel.findActivityManifest(activityId) as ActivityManifestBundle,\n    ]\n    const rawManifest = allManifests[0] as {\n      content?: { variables?: ActivityManifestVariables }\n    }\n    const {\n      include_caper_intro_outro: hasIntroOutro,\n      minigame: minigameName,\n      minigame_variables: minigameVariables,\n    } = rawManifest.content?.variables ?? {}\n\n    if (hasIntroOutro) {\n      const [outros, intros] = await Promise.all([\n        this.caperLoader.fetchManifest(\n          UrlMaker.caperTomfooleryActivityUrl(\n            this.student.locale,\n            `mathseeds/lessons/activity_outros/${introOutroType}`,\n          ),\n        ),\n        this.caperLoader.fetchManifest(\n          UrlMaker.caperTomfooleryActivityUrl(\n            this.student.locale,\n            `mathseeds/lessons/activity_intros/${introOutroType}`,\n          ),\n        ),\n      ])\n\n      const outro = { content: sample(outros['outros'] as unknown[]) }\n      const intro = { content: sample(intros['intros'] as unknown[]) }\n\n      allManifests.push(intro, outro)\n    }\n\n    const interactiveConfig = await this.caperLoader.load(\n      allManifests,\n      variables,\n    )\n\n    const sideBarActivityData = lessonModel.activities.map((activity) => {\n      const { id, json } = activity\n\n      let thumbnail\n      if (\n        json &&\n        typeof json === 'object' &&\n        'thumb' in json &&\n        typeof json.thumb === 'string'\n      ) {\n        thumbnail = json.thumb\n      }\n\n      let status = 'locked'\n      if (id === activityId) {\n        status = 'unlocked'\n      } else if (this.policy.canPlayLessonActivity(lessonId, id)) {\n        status = 'complete'\n      }\n\n      return { id, status, thumbnail }\n    })\n\n    return {\n      interactiveConfig,\n      lesson: lessonModel,\n      id: activityId,\n      minigameName,\n      minigameVariables,\n      isLastActivity,\n      isAssignment,\n      sideBarActivityData,\n    }\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport type RouterService from '@ember/routing/router-service'\nimport type MyLessonsService from 'mathseeds-client/services/my-lessons'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\nimport type AssignmentsService from 'mathseeds-client/services/assignments'\nimport type { ModelFor } from 'mathseeds-client/utils/route-model'\nimport type ActivityRoute from '../activity'\n\nexport default class IndexRoute extends Route {\n  @service('my-lessons')\n  declare policy: MyLessonsService\n\n  @service\n  declare studentProgress: StudentProgressService\n\n  @service\n  declare assignments: AssignmentsService\n\n  @service\n  declare router: RouterService\n\n  override model() {\n    return this.modelFor('lesson.activity') as ModelFor<ActivityRoute>\n  }\n\n  override afterModel(model: ModelFor<ActivityRoute>) {\n    const lessonId = model.lesson.id\n    const activityId = model.id\n\n    if (this.assignments.hasTask) return\n\n    if (!this.policy.canPlayLessonActivity(lessonId, activityId)) {\n      this.router.transitionTo(\n        'lesson.index',\n        this.studentProgress.myLessonsCurrentLesson,\n      )\n    }\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport ky from 'ky'\nimport UrlMaker from 'mathseeds-client/utils/url-maker'\nimport config from 'mathseeds-client/config/environment'\nimport { calculateMap } from 'mathseeds-client/utils/progress-tools'\nimport type { MinigameAuthService } from '@blakeelearning/minigame-auth'\nimport type UserService from 'mathseeds-client/services/user'\nimport type { UserStudent } from 'mathseeds-client/services/user'\nimport type CaperLoaderService from 'mathseeds-client/services/caper-loader'\nimport type RouterService from '@ember/routing/router-service'\nimport type { ModelFor } from 'mathseeds-client/utils/route-model'\nimport type ActivityRoute from '../activity'\nimport type { LessonRouteModel } from '../../lesson'\nimport type { InteractiveConfig } from '@blakeelearning/content-loader-core'\n\ninterface MinigameRouteModel {\n  interactiveConfig: InteractiveConfig\n  name: string | undefined\n  activityId: number\n  lesson: LessonRouteModel\n  isAssignment: boolean\n}\n\nexport default class MinigameRoute extends Route {\n  @service\n  declare minigameAuth: MinigameAuthService\n\n  @service\n  declare caperLoader: CaperLoaderService\n\n  @service\n  declare user: UserService\n\n  @service\n  declare router: RouterService\n\n  get student() {\n    return this.user.student\n  }\n\n  override async model(): Promise<MinigameRouteModel> {\n    const {\n      minigameName,\n      minigameVariables,\n      id: activityId,\n      lesson,\n      isAssignment,\n    } = this.modelFor('lesson.activity') as ModelFor<ActivityRoute>\n\n    const variables = await this._createConfigForMinigame(\n      this.student,\n      minigameName!,\n      minigameVariables as Record<string, unknown>,\n    )\n    const interactiveConfig = await this.caperLoader.load(\n      [\n        UrlMaker.caperTomfooleryActivityUrl(\n          this.student.locale,\n          `mathseeds/activities/${minigameName!}`,\n        ),\n      ],\n      variables,\n    )\n\n    return {\n      interactiveConfig,\n      name: minigameName,\n      activityId,\n      lesson,\n      isAssignment,\n    }\n  }\n\n  override afterModel({ name }: MinigameRouteModel) {\n    if (!name || !this.minigameAuth.claimGameToken(name)) {\n      this.goToMap()\n      return\n    }\n  }\n\n  goToMap() {\n    const activity = this.modelFor('lesson.activity') as ModelFor<ActivityRoute>\n    const lessonId = activity.lesson.id\n    const { lessonsPerMap } = config.studentProgress.progress.myLessons\n    const nextMap = calculateMap(Number(lessonId), lessonsPerMap)\n    this.router.transitionTo('map', nextMap)\n  }\n\n  async _createConfigForMinigame(\n    { id, firstName: name }: UserStudent,\n    minigameName: string,\n    minigameVariables: Record<string, unknown>,\n  ) {\n    const miniGameUrl = UrlMaker.urlForMiniGameHighScore(minigameName)\n    try {\n      const { minigames_scores } = await ky\n        .get(miniGameUrl)\n        .json<{ minigames_scores: unknown }>()\n\n      return { student: { id, name }, minigames_scores, ...minigameVariables }\n    } catch (err) {\n      console.log(err)\n      return { student: { id, name }, ...minigameVariables }\n    }\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport type MyLessonsService from 'mathseeds-client/services/my-lessons'\nimport type UserService from 'mathseeds-client/services/user'\nimport type RouterService from '@ember/routing/router-service'\nimport type { LessonRouteModel } from 'mathseeds-client/routes/lesson'\n\nexport default class IndexRoute extends Route {\n  @service('my-lessons')\n  declare policy: MyLessonsService\n\n  @service\n  declare user: UserService\n\n  @service\n  declare router: RouterService\n\n  override afterModel() {\n    const { id: lessonId } = this.modelFor('lesson') as LessonRouteModel\n    const activityId = this.policy.currentActivityForLesson(lessonId)\n\n    // redirect to activity based on progress or first activity for lesson\n    this.router.transitionTo('lesson.activity.index', lessonId, activityId)\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport config from 'mathseeds-client/config/environment'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\nimport type UserService from 'mathseeds-client/services/user'\nimport type RouterService from '@ember/routing/router-service'\nimport type MyLessonsService from 'mathseeds-client/services/my-lessons'\n\ninterface MapRouteModelArgs {\n  id?: number\n  currentPosition: string\n  isQuizComplete: boolean\n}\n\nexport class MapRouteModel {\n  /**\n   * Identifier for this map\n   */\n  id: number\n  currentPosition: string\n  isQuizComplete: boolean\n\n  constructor({ id = 1, currentPosition, isQuizComplete }: MapRouteModelArgs) {\n    this.id = id\n    this.currentPosition = currentPosition\n    this.isQuizComplete = isQuizComplete\n  }\n\n  get isMathseedsFinished() {\n    return this.id > config.APP.lastMap\n  }\n\n  // stepIndex is the refers to the index a lesson\n  findLessonIdForStep(stepIndex: number) {\n    const mapIndex = this.id - 1\n    const { lessonsPerMap } = config.studentProgress.progress.myLessons\n    return mapIndex * lessonsPerMap + stepIndex\n  }\n\n  get previousMapId() {\n    if (this.id <= 1) {\n      return 1\n    }\n    return this.id - 1\n  }\n\n  get nextMapId() {\n    return this.id + 1\n  }\n}\n\nexport default class MapRoute extends Route {\n  @service\n  declare studentProgress: StudentProgressService\n\n  @service('my-lessons')\n  declare policy: MyLessonsService\n\n  @service\n  declare user: UserService\n\n  @service\n  declare router: RouterService\n\n  get student() {\n    return this.user.student\n  }\n\n  override beforeModel() {\n    if (this.studentProgress.showMyLessonsPlacementTest) {\n      this.router.transitionTo('placement-test')\n    }\n  }\n\n  override model({ map_id: mapId }: { map_id: string }) {\n    return new MapRouteModel({\n      id: parseInt(mapId, 10),\n      currentPosition: this.studentProgress.myLessonsCurrentLesson,\n      isQuizComplete: this.policy.isQuizComplete(parseInt(mapId, 10)),\n    })\n  }\n\n  override afterModel(model: MapRouteModel) {\n    if (this.policy.canPlayMap(model.id)) {\n      if (model.isMathseedsFinished) {\n        this.router.transitionTo('finished-mathseeds')\n      }\n    } else {\n      this.router.transitionTo('map', this.studentProgress.myLessonsCurrentMap)\n    }\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport UrlMaker from 'mathseeds-client/utils/url-maker'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\nimport type CaperLoaderService from 'mathseeds-client/services/caper-loader'\nimport type MyLessonsService from 'mathseeds-client/services/my-lessons'\nimport type { InteractiveConfig } from '@blakeelearning/content-loader-core'\nimport type UserService from 'mathseeds-client/services/user'\nimport type { MapRouteModel } from 'mathseeds-client/routes/map'\n\ninterface Model {\n  interactiveConfig: InteractiveConfig\n  map: MapRouteModel\n}\n\nexport default class IndexRoute extends Route {\n  @service\n  declare caperLoader: CaperLoaderService\n\n  @service\n  declare studentProgress: StudentProgressService\n\n  @service('my-lessons')\n  declare policy: MyLessonsService\n\n  @service\n  declare user: UserService\n\n  override async model(): Promise<Model> {\n    const { map_id: mapId } = this.paramsFor('map') as { map_id: string }\n    const map = this.modelFor('map') as MapRouteModel\n    const { nextMapId } = map\n\n    const isQuizComplete = this.policy.isQuizComplete(Number(mapId))\n    const canPlayNextMap = this.policy.canPlayMap(nextMapId)\n\n    const { __typename, ...dna } = this.user.student.dna\n\n    const variables = {\n      student: {},\n      dna,\n      map_number: mapId,\n      lesson_number: this.studentProgress.myLessonsCurrentLesson,\n      quiz_complete: isQuizComplete,\n      canPlayNextMap,\n    }\n\n    const interactiveConfig = await this.caperLoader.load(\n      [\n        UrlMaker.caperTomfooleryActivityUrl(\n          this.user.student.locale,\n          `mathseeds/map/${mapId}`,\n        ),\n        this.user.student.avatarJsonUrl,\n      ],\n      variables,\n    )\n\n    return { interactiveConfig, map }\n  }\n}\n","import Route from '@ember/routing/route'\nimport type RouterService from '@ember/routing/router-service'\nimport { inject as service } from '@ember/service'\nimport type { MapRouteModel } from 'mathseeds-client/routes/map'\n\nexport default class NextRoute extends Route {\n  @service\n  declare router: RouterService\n\n  override beforeModel() {\n    const map = this.modelFor('map') as MapRouteModel\n\n    if (map.isMathseedsFinished) {\n      this.router.transitionTo('finished-mathseeds')\n    } else {\n      this.router.transitionTo('map', map.nextMapId)\n    }\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport UrlMaker from 'mathseeds-client/utils/url-maker'\nimport type RouterService from '@ember/routing/router-service'\nimport type UserService from 'mathseeds-client/services/user'\nimport type CaperLoaderService from 'mathseeds-client/services/caper-loader'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\nimport type MyLessonsService from 'mathseeds-client/services/my-lessons'\nimport type { MapRouteModel } from '../map'\nimport type { InteractiveConfig } from '@blakeelearning/content-loader-core'\n\ninterface Model {\n  interactiveConfig: InteractiveConfig\n  id: number\n}\n\nexport default class QuizRoute extends Route {\n  @service\n  declare studentProgress: StudentProgressService\n\n  @service\n  declare caperLoader: CaperLoaderService\n\n  @service('my-lessons')\n  declare policy: MyLessonsService\n\n  @service\n  declare user: UserService\n\n  @service\n  declare router: RouterService\n\n  override beforeModel(): void {\n    const map = this.modelFor('map') as MapRouteModel\n    if (!this.policy.canPlayQuizForMap(map.id)) {\n      this.router.transitionTo(\n        'map.index',\n        this.studentProgress.myLessonsCurrentMap,\n      )\n    }\n  }\n\n  override async model(): Promise<Model> {\n    const { id: mapId } = this.modelFor('map') as MapRouteModel\n\n    const interactiveConfig = await this.caperLoader.load(\n      [\n        UrlMaker.caperTomfooleryActivityUrl(\n          this.user.student.locale,\n          `mathseeds/quizzes/${String(mapId)}`,\n        ),\n      ],\n      {},\n    )\n\n    return { interactiveConfig, id: mapId }\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport type Transition from '@ember/routing/transition'\nimport { mentalMinuteLessonIdFromRouteInfo } from 'mathseeds-client/utils/mental-minute-sets/lessons/lesson'\nimport type MentalMinuteProgressPolicyService from 'mathseeds-client/services/mental-minute-progress-policy'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\nimport type UserService from 'mathseeds-client/services/user'\nimport type RouterService from '@ember/routing/router-service'\n// import type { Log } from '@blakeelearning/log'\n\nexport default class LessonsRoute extends Route {\n  @service('mental-minute-progress-policy')\n  declare progressPolicy: MentalMinuteProgressPolicyService\n\n  // @service declare log: Log\n\n  @service declare studentProgress: StudentProgressService\n\n  @service declare user: UserService\n\n  @service declare router: RouterService\n\n  override buildRouteInfoMetadata() {\n    return {\n      willHideLoadingScreenManually: true,\n    }\n  }\n\n  override beforeModel(transition: Transition) {\n    const { to: routeInfo } = transition\n\n    const lessonId = mentalMinuteLessonIdFromRouteInfo(routeInfo)\n\n    // redirect to the landing page if attempting to visit unknown lesson or future lesson\n    if (\n      lessonId &&\n      !this.progressPolicy.canPlayLesson(\n        lessonId,\n        this.studentProgress.mentalMinute,\n      )\n    ) {\n      this.router.transitionTo('mental-minute-sets.lessons.index')\n    }\n  }\n\n  override model(_params: Record<string, unknown>, transition: Transition) {\n    const { to: routeInfo } = transition\n\n    const lessonId = mentalMinuteLessonIdFromRouteInfo(routeInfo)\n\n    const studentName = this.user.student.name\n\n    const manifests = [['lesson', 'activities/mental-minute-v2']]\n\n    const variables = {\n      progress: this.studentProgress.mentalMinute.results,\n      lessonId,\n      studentName,\n      hasPrintService: true,\n    }\n\n    return { manifests, variables }\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport type Transition from '@ember/routing/transition'\nimport { getShouldRefresh } from 'mathseeds-client/utils/mental-minute-sets/lessons'\nimport type RefresherService from '@blakeelearning/app-refresher/refresher/service'\n\nexport default class IndexRoute extends Route {\n  @service\n  declare refresher: RefresherService\n\n  override beforeModel(transition: Transition) {\n    if (getShouldRefresh(transition)) {\n      this.refresher.scheduleRefresh()\n    }\n  }\n\n  isRefreshable() {\n    return true\n  }\n\n  override model() {}\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport type Transition from '@ember/routing/transition'\nimport { getShouldRefresh } from 'mathseeds-client/utils/mental-minute-sets/lessons'\nimport type RefresherService from '@blakeelearning/app-refresher/refresher/service'\n\nexport default class LessonRoute extends Route {\n  @service declare refresher: RefresherService\n\n  override beforeModel(transition: Transition) {\n    if (getShouldRefresh(transition)) {\n      this.refresher.scheduleRefresh()\n    }\n  }\n\n  isRefreshable() {\n    return true\n  }\n\n  override model() {\n    /**\n     * This empty model hook prevents Ember's default behaviour of attempting\n     * to load a model from the ember-data store that matches the current\n     * lesson ID in the URL.\n     */\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport { assert, warn } from '@ember/debug'\nimport config from 'mathseeds-client/config/environment'\nimport ky from 'ky'\nimport type { FeatureService } from '@blakeelearning/features'\n// import type { SessionService } from '@blakeelearning/auth'\nimport type SessionService from 'mathseeds-client/services/session'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\nimport type { Log } from '@blakeelearning/log'\n\ninterface BestScore {\n  best_score: number\n  first_score: number\n  lesson: number\n  student_id: number\n}\n\ninterface BestScoresResponse {\n  best_scores?: BestScore[][]\n}\n\nexport default class ProgressRoute extends Route {\n  @service declare log: Log\n\n  @service declare studentProgress: StudentProgressService\n\n  @service declare session: SessionService\n\n  @service declare features: FeatureService\n\n  override queryParams = {\n    showBadges: {\n      replace: true,\n      refreshModel: false,\n    },\n  }\n\n  override buildRouteInfoMetadata() {\n    return {\n      willHideLoadingScreenManually: true,\n    }\n  }\n\n  override async model({ showBadges }: { showBadges: boolean }) {\n    const bestScores = await this._fetchBestScores()\n\n    const manifests = [['progress', 'activities/mental-minute-v2']]\n    const variables = {\n      progress: this.studentProgress.mentalMinute.results,\n      showBadges,\n      bestScores,\n      hasPrintService: true,\n    }\n\n    return { manifests, variables }\n  }\n\n  /**\n   * Fetches the best scores for the current student (mathseeds API will fetch student id from JWT)\n   * @returns {Object[]} - an array of best scores arrays, should only be 1 best scores array for the current student\n   * [\n   *   [\n   *     { best_score: 10, first_score: 5, lesson: 1, student_id: 1 },\n   *     { best_score: 15, first_score: 3, lesson: 2, student_id: 1 },\n   *   ],\n   * ]\n   */\n  async _fetchBestScores() {\n    try {\n      const mentalMinuteScoresUrl = `${config.APP.apiEndpoint ?? '/'}${config.APP.apiNamespace}/mental_minute_scores`\n\n      const response = await ky(mentalMinuteScoresUrl, {\n        method: 'GET',\n        headers: {\n          Authorization: this.session.state.data?.token ?? undefined,\n        },\n      })\n      const bestScoresJson = await response.json<BestScoresResponse>()\n\n      return this._parseBestScoresResponse(bestScoresJson)\n    } catch (error) {\n      warn(`Mental Minute best scores failed to load`, {\n        id: 'mental-minute-sets/progress:best-scores-failed',\n      })\n      this.log.error(`Mental Minute best scores failed to load`, error as Error)\n      return [] // Just continue with empty best scores response\n    }\n  }\n\n  /**\n   * Accepts a best scores JSON response from the student-events API, and returns the first array of best scores\n   *\n   * @param bestScoresJson - best scores JSON response from the student-events API\n   * @returns if valid, the first array of best scores, else throws an error\n   */\n  _parseBestScoresResponse(bestScoresJson: BestScoresResponse) {\n    assert(\n      'Invalid format for mental minute best scores',\n      bestScoresJson.best_scores && Array.isArray(bestScoresJson.best_scores),\n    )\n\n    const hasScores =\n      bestScoresJson.best_scores.length > 0 &&\n      Array.isArray(bestScoresJson.best_scores[0])\n    return hasScores ? bestScoresJson.best_scores[0] : []\n  }\n}\n","import Route from '@ember/routing/route'\nimport { get } from '@ember/object'\n\nexport default class NoAccessRoute extends Route {\n  /**\n   * Lookup object of valid things for the \"no-access\" page.\n   * We don't want people able to pass random params to `no-access/garbage` and have it show\n   * in the UI, so this lookup hash allows us defined what we actually support.\n   */\n\n  get validProps() {\n    return {\n      arcade: 'Arcade',\n      playroom: 'Playroom',\n    }\n  }\n\n  override model(params: { access_type: string }) {\n    return get(this, `validProps.${params.access_type}`) ?? ''\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport UrlMaker from 'mathseeds-client/utils/url-maker'\nimport type Controller from '@ember/controller'\nimport type Transition from '@ember/routing/transition'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\nimport type CaperLoaderService from 'mathseeds-client/services/caper-loader'\nimport type UserService from 'mathseeds-client/services/user'\nimport type RouterService from '@ember/routing/router-service'\n\n// eslint-disable-next-line ember/no-test-import-export\nexport default class PlacementTestRoute extends Route {\n  @service\n  declare studentProgress: StudentProgressService\n\n  @service\n  declare caperLoader: CaperLoaderService\n\n  @service\n  declare user: UserService\n\n  @service\n  declare router: RouterService\n\n  override beforeModel() {\n    if (!this.studentProgress.showMyLessonsPlacementTest) {\n      this.router.transitionTo('map', this.studentProgress.myLessonsCurrentMap)\n    }\n  }\n\n  override async model() {\n    const variables = {\n      student: {\n        name: this.user.student.name,\n      },\n    }\n\n    const interactiveConfig = await this.caperLoader.load(\n      [\n        UrlMaker.caperTomfooleryActivityUrl(\n          this.user.student.locale,\n          'mathseeds/activities/placement_test',\n        ),\n      ],\n      variables,\n    )\n\n    return { interactiveConfig }\n  }\n\n  override setupController(\n    controller: Controller & { nextable: boolean },\n    model: unknown,\n    transition: Transition,\n  ) {\n    super.setupController(controller, model, transition)\n    controller.nextable = false\n  }\n}\n","import Route from '@ember/routing/route'\nimport type RouterService from '@ember/routing/router-service.js'\nimport { inject as service } from '@ember/service'\nimport type UserService from 'mathseeds-client/services/user.js'\n\nexport default class PlayroomRoute extends Route {\n  @service\n  declare router: RouterService\n\n  @service\n  declare user: UserService\n\n  override beforeModel() {\n    if (!this.user.student.playroomAccess) {\n      this.router.transitionTo('no-access', 'playroom')\n    }\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport UrlMaker from 'mathseeds-client/utils/url-maker'\nimport type CaperLoaderService from 'mathseeds-client/services/caper-loader'\nimport type UserService from 'mathseeds-client/services/user'\nimport type { InteractiveConfig } from '@blakeelearning/content-loader-core'\n\ninterface RouteParams {\n  activity_type: string\n  activity_id: string\n}\n\ninterface Model {\n  interactiveConfig: InteractiveConfig\n}\n\nexport default class ActivityRoute extends Route {\n  @service\n  declare caperLoader: CaperLoaderService\n\n  @service\n  declare user: UserService\n\n  override async model({\n    activity_type: activityType,\n    activity_id: activityId,\n  }: RouteParams): Promise<Model> {\n    const manifestUrl =\n      activityType === 'activity'\n        ? UrlMaker.caperTomfooleryActivityUrl(\n            this.user.student.locale,\n            `mathseeds/activities/${activityId}`,\n          )\n        : UrlMaker.caperTomfooleryActivityUrl(\n            this.user.student.locale,\n            `mathseeds/activities/${activityType}/${activityId}`,\n          )\n    const interactiveConfig = await this.caperLoader.load([manifestUrl], {})\n\n    return { interactiveConfig }\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport UrlMaker from 'mathseeds-client/utils/url-maker'\nimport type UserService from 'mathseeds-client/services/user'\nimport type CaperLoaderService from 'mathseeds-client/services/caper-loader'\n\nexport default class IndexRoute extends Route {\n  @service\n  declare caperLoader: CaperLoaderService\n\n  @service\n  declare user: UserService\n\n  get student() {\n    return this.user.student\n  }\n\n  override async model() {\n    const interactiveConfig = await this.caperLoader.load(\n      [\n        UrlMaker.caperTomfooleryActivityUrl(\n          this.student.locale,\n          'mathseeds/activities/playroom',\n        ),\n      ],\n      {},\n    )\n\n    return { interactiveConfig }\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport type QuestService from 'mathseeds-client/services/quest'\nimport type RouterService from '@ember/routing/router-service'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\n\nexport default class RecommendedRoute extends Route {\n  @service declare studentProgress: StudentProgressService\n\n  @service declare quest: QuestService\n\n  @service declare router: RouterService\n\n  override beforeModel() {\n    if (this.studentProgress.showMyLessonsPlacementTest) {\n      void this.router.replaceWith('placement-test')\n      return\n    }\n    if (this.quest.recommendedTargetRoute) {\n      // @ts-expect-error router params type no bueno\n      void this.router.replaceWith(...this.quest.recommendedTargetRoute)\n      return\n    }\n    void this.router.replaceWith('/')\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport { sample } from 'lodash'\nimport UrlMaker from 'mathseeds-client/utils/url-maker'\n\nexport class SampleLessonRouteModel {\n  activities = []\n  id = null\n\n  constructor({ id, activities = [] }) {\n    this.activities = activities.map((json, index) => {\n      return { lesson: this, id: index + 1, json }\n    })\n\n    this.id = id\n  }\n}\n\nexport default class LessonRoute extends Route {\n  @service caperLoader\n\n  queryParams = {\n    isIframe: {\n      refreshModel: true,\n    },\n  }\n\n  async model({ lesson_id: id, isIframe }) {\n    const locale = 'au' // using 'au' locale version since that's the current BE behavior\n    const sampleLessonManifestUrl = UrlMaker.caperTomfooleryActivityUrl(\n      locale,\n      `sample_lessons/lessons/${id}`,\n    )\n\n    let lessonManifest\n    try {\n      lessonManifest = await this.caperLoader.fetchManifest(\n        sampleLessonManifestUrl,\n      )\n    } catch (_error) {\n      window.history.back()\n      return\n    }\n    const lesson = new SampleLessonRouteModel({\n      id,\n      activities: lessonManifest.activities,\n    })\n    const lessonActivityJSON = lesson.activities[0]\n\n    const allManifests = [lessonActivityJSON.json]\n    const hasIntroOutro =\n      lessonActivityJSON.json.content?.variables?.include_caper_intro_outro\n\n    // Checks if the interactives include_caper_intro_outro key is true\n    if (hasIntroOutro) {\n      const [outros, intros] = await Promise.all([\n        this.caperLoader.fetchManifest(\n          UrlMaker.caperTomfooleryActivityUrl(\n            locale,\n            `mathseeds/lessons/activity_outros/junior`,\n          ),\n        ),\n        this.caperLoader.fetchManifest(\n          UrlMaker.caperTomfooleryActivityUrl(\n            locale,\n            `mathseeds/lessons/activity_intros/junior`,\n          ),\n        ),\n      ])\n\n      // Gets a single random manifest from the collection.\n      const outro = { content: sample(outros.outros) }\n      const intro = { content: sample(intros.intros) }\n\n      allManifests.push(intro, outro)\n    }\n\n    const interactiveConfig = await this.caperLoader.load(allManifests)\n\n    const hideBackButton = isIframe === 'true'\n\n    return { interactiveConfig, lessonActivityJSON, id, hideBackButton }\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport UrlMaker from 'mathseeds-client/utils/url-maker'\nimport type UserService from 'mathseeds-client/services/user'\nimport type ItemsService from 'mathseeds-client/services/items'\nimport type CaperLoaderService from 'mathseeds-client/services/caper-loader'\n\nexport default class ShopRoute extends Route {\n  @service\n  declare caperLoader: CaperLoaderService\n\n  @service\n  declare user: UserService\n\n  @service\n  declare items: ItemsService\n\n  override async model() {\n    const { __typename, ...dna } = this.user.student.dna\n    const variables = {\n      student: {\n        ...this.user.student,\n        dna,\n        items: this.items.data,\n      },\n    }\n\n    const interactiveConfig = await this.caperLoader.load(\n      [\n        UrlMaker.caperTomfooleryActivityUrl(\n          this.user.student.locale,\n          'treehouse/shop',\n        ),\n        UrlMaker.caperTomfooleryActivityUrl(this.user.student.locale, 'avatar'),\n        this.user.student.avatarJsonUrl,\n      ],\n      variables,\n    )\n\n    return { interactiveConfig }\n  }\n}\n","import { inject as service } from '@ember/service'\nimport Route from '@ember/routing/route'\nimport urlMaker from 'mathseeds-client/utils/url-maker'\nimport type UserService from 'mathseeds-client/services/user'\nimport type ItemsService from 'mathseeds-client/services/items'\nimport type CaperLoaderService from 'mathseeds-client/services/caper-loader'\n\nexport default class TreehouseRoute extends Route {\n  @service\n  declare caperLoader: CaperLoaderService\n\n  @service\n  declare user: UserService\n\n  @service\n  declare items: ItemsService\n\n  override async model() {\n    const {\n      dna: { __typename, ...dna },\n      avatarJsonUrl,\n    } = this.user.student\n    const variables = {\n      student: {\n        // student.treehouseItems provides a legacy interface to content where a bunch of methods are called on the items directly. As of May 2026 this is still in use.\n        treehouseItems: this.items.treehouseItems,\n        // student.items is being provided as a migration path for content to move away from the legacy interface\n        items: this.items.data,\n      },\n      dna,\n    }\n\n    const interactiveConfig = await this.caperLoader.load(\n      [\n        urlMaker.caperTomfooleryActivityUrl(\n          this.user.student.locale,\n          'mathseeds/activities/treehouse',\n        ),\n        avatarJsonUrl,\n      ],\n      variables,\n    )\n\n    return {\n      interactiveConfig,\n    }\n  }\n}\n","import Route from '@ember/routing/route'\nimport { inject as service } from '@ember/service'\nimport type RouterService from '@ember/routing/router-service'\nimport type Transition from '@ember/routing/transition'\nimport type SessionService from 'mathseeds-client/services/session'\n\nexport default class UnauthorisedRoute extends Route {\n  @service\n  declare router: RouterService\n\n  @service\n  declare session: SessionService\n\n  override beforeModel(transition: Transition) {\n    if (transition.from) {\n      return\n    }\n    // redirect to sign in if transition.from is empty, which means this is the initial load\n    this.session.signIn()\n  }\n}\n","import Service from '@ember/service'\nimport { tracked } from '@glimmer/tracking'\n\nexport default class ActivitySidebarService extends Service {\n  @tracked isOpen = false\n\n  close() {\n    this.isOpen = false\n  }\n\n  open() {\n    this.isOpen = true\n  }\n\n  toggle() {\n    this.isOpen = !this.isOpen\n  }\n}\n\ndeclare module '@ember/service' {\n  interface Registry {\n    'activity-sidebar': ActivitySidebarService\n  }\n}\n","import type {\n  ApolloQueryResult,\n  FetchResult,\n  MutationOptions,\n  NormalizedCacheObject,\n  Observable,\n  ObservableQuery,\n  OperationVariables,\n  QueryOptions,\n  WatchFragmentOptions,\n  WatchFragmentResult,\n  WatchQueryOptions,\n} from '@apollo/client/core'\nimport {\n  createHttpLink,\n  from,\n  InMemoryCache,\n  ApolloClient,\n} from '@apollo/client/core'\nimport { RetryLink } from '@apollo/client/link/retry'\nimport introspectionResult from 'mathseeds-client/graphql/introspection-result'\nimport config from 'mathseeds-client/config/environment'\nimport type { TypedTypePolicies } from 'mathseeds-client/graphql/apollo-helpers'\nimport {\n  isApolloNetworkErrorRetryable,\n  isAuthorizationError,\n} from 'mathseeds-client/utils/errors'\nimport { waitFor } from '@ember/test-waiters'\nimport { onError } from '@apollo/client/link/error'\nimport { loadErrorMessages, loadDevMessages } from '@apollo/client/dev'\nimport { runInDebug } from '@ember/debug'\nimport Service, { service } from '@ember/service'\nimport type { Log } from '@blakeelearning/log'\nimport { isTesting, macroCondition } from '@embroider/macros'\n\nrunInDebug(() => {\n  loadDevMessages()\n  loadErrorMessages()\n})\n\nconst {\n  APP: { apiEndpoint, apollo },\n} = config\n\nlet apolloURL = '/graphql'\n\nif (apiEndpoint) {\n  apolloURL = new URL(apolloURL, apiEndpoint).href\n}\n\nconst typePolicies: TypedTypePolicies = {\n  AssignmentTaskMyLessons: {\n    fields: {\n      targetRouteParams: {\n        read(_, { readField }) {\n          const lessonId = readField({ fieldName: 'lessonId' })\n          const activityId = readField({ fieldName: 'activityId' })\n          return ['lesson.activity.index', lessonId, activityId]\n        },\n      },\n    },\n  },\n  AssignmentTaskDrivingTests: {\n    fields: {\n      targetRouteParams: {\n        read(_, { readField }) {\n          const gradePosition = readField({ fieldName: 'gradePosition' })\n          const drivingTestsLevelIndex = Number(gradePosition) - 1\n\n          // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n          const gradeLessonNumber: number = readField({\n            fieldName: 'gradeLessonNumber',\n          })!\n          const category = readField({ fieldName: 'category' })\n\n          return [\n            'driving-tests.quiz',\n            drivingTestsLevelIndex.toString(),\n            category,\n            gradeLessonNumber.toString(),\n          ]\n        },\n      },\n    },\n  },\n  Student: {\n    fields: {\n      avatarJsonUrl: {\n        read(_, { readField }) {\n          const avatarUrl = readField({ fieldName: 'avatarUrl' })\n          const studentId = readField({ fieldName: 'id' })\n          if (typeof avatarUrl !== 'string' || typeof studentId !== 'string') {\n            return undefined\n          }\n          const hexDna = avatarUrl.replace(/.*\\//, '').replace('.png', '')\n\n          return `${config.APP.apiEndpoint ?? '/'}${config.APP.apiNamespace}/students/${studentId}/avatar.json?${hexDna}`\n        },\n      },\n    },\n  },\n}\n\nexport default class ApolloService extends Service {\n  @service\n  declare log: Log\n\n  #client: ApolloClient<NormalizedCacheObject>\n\n  constructor(properties?: object) {\n    super(properties)\n\n    const cache = new InMemoryCache({\n      typePolicies,\n      /**\n       * Declare Possible Types\n       *\n       * This is required for when we use fragments on union types or interfaces\n       * Otherwise Apollo doesn't know what to do, and strips all the fields from the response\n       * @see {@link https://github.com/apollographql/apollo-client/issues/7050}\n       * @see {@link https://www.apollographql.com/docs/react/data/fragments/#using-fragments-with-unions-and-interfaces}\n       */\n      possibleTypes: introspectionResult.possibleTypes,\n    })\n\n    const httpLink = createHttpLink({\n      credentials: 'same-origin',\n      uri: apolloURL,\n    })\n\n    const errorLink = onError((error) => {\n      // Don't log authorisation errors - these are handled by error routes, etc.\n      if (isAuthorizationError(error)) return\n\n      // eslint-disable-next-line @typescript-eslint/no-deprecated\n      const { graphQLErrors, networkError } = error\n\n      if (graphQLErrors) {\n        graphQLErrors.forEach(({ message, ...error }) => {\n          this.log.error(message, error)\n        })\n      }\n\n      if (networkError) {\n        this.log.error(networkError)\n      }\n    })\n\n    // This prevents retries from slowing down tests\n    let delayOpts = undefined\n    if (macroCondition(isTesting())) {\n      delayOpts = { delay: () => 0 }\n    }\n    const retryLink = new RetryLink({\n      ...delayOpts,\n      attempts: {\n        max: 5,\n        retryIf: (error, { variables }) => {\n          return (\n            isApolloNetworkErrorRetryable(error) &&\n            !!(variables as { input?: { attemptUuid?: string } }).input\n              ?.attemptUuid\n          )\n        },\n      },\n    })\n\n    this.#client = new ApolloClient({\n      cache,\n      link: from([retryLink, errorLink, httpLink]),\n      devtools: {\n        enabled: apollo.connectToDevTools ?? false,\n      },\n    })\n  }\n\n  get cache() {\n    return this.#client.cache\n  }\n\n  override willDestroy() {\n    void this.#client.clearStore()\n  }\n\n  @waitFor\n  async mutate<\n    T = unknown,\n    TVariables extends OperationVariables = OperationVariables,\n  >(options: MutationOptions<T, TVariables>): Promise<FetchResult<T>> {\n    return this.#client.mutate(options)\n  }\n\n  @waitFor\n  async query<\n    T = unknown,\n    TVariables extends OperationVariables = OperationVariables,\n  >(options: QueryOptions<TVariables, T>): Promise<ApolloQueryResult<T>> {\n    return this.#client.query(options)\n  }\n\n  watchQuery<\n    T = unknown,\n    TVariables extends OperationVariables = OperationVariables,\n  >(options: WatchQueryOptions<TVariables, T>): ObservableQuery<T, TVariables> {\n    return this.#client.watchQuery(options)\n  }\n\n  watchFragment<TFragmentData = unknown, TVariables = OperationVariables>(\n    options: WatchFragmentOptions<TFragmentData, TVariables>,\n  ): Observable<WatchFragmentResult<TFragmentData>> {\n    return this.#client.watchFragment(options)\n  }\n}\n\ndeclare module '@ember/service' {\n  interface Registry {\n    apollo: ApolloService\n  }\n}\n","import type Transition from '@ember/routing/transition'\nimport type RouterService from '@ember/routing/router-service'\nimport Service, { inject as service } from '@ember/service'\nimport { isEqual } from 'lodash'\nimport { graphql } from 'mathseeds-client/graphql'\nimport type { DocumentType } from 'mathseeds-client/graphql'\nimport type ApolloService from './apollo'\nimport { useQuery } from 'mathseeds-client/resources/query'\n\nexport const AssignmentTask = graphql(/* GraphQL */ `\n  fragment AssignmentTask on Student {\n    assignmentTask {\n      ... on AssignmentTaskMyLessons {\n        activityId\n        assignmentUuid\n        endAt\n        id\n        lessonId\n        thumbnailUrl\n        title\n        targetRouteParams @client\n      }\n      ... on AssignmentTaskDrivingTests {\n        assignmentUuid\n        category\n        endAt\n        gradePosition\n        gradeLessonNumber\n        id\n        thumbnailUrl\n        title\n        targetRouteParams @client\n      }\n      ... on Error {\n        message\n      }\n      __typename\n    }\n  }\n`)\n\nconst getStudentCurrentTaskQueryDocument = graphql(/* GraphQL */ `\n  query GetStudentCurrentTask {\n    student {\n      __typename\n      id\n      ...AssignmentTask\n    }\n  }\n`)\n\nexport type Task = NonNullable<CurrentTask>\n\nexport type CurrentTask = Exclude<\n  DocumentType<typeof AssignmentTask>['assignmentTask'],\n  { __typename: 'Error' }\n>\n\nconst FIVE_MINUTES = 5 * 60 * 1000\n\nexport default class AssignmentsService extends Service {\n  @service declare apollo: ApolloService\n\n  @service declare router: RouterService\n\n  get hasTask() {\n    return Boolean(this.currentTask)\n  }\n\n  get currentTask() {\n    const currentTask =\n      this._assignmentQuery.current.data?.student.assignmentTask\n\n    /**\n     * If we receive an error on the student.assignmentTask field then we pretend the student\n     * has no assignment task by returning null. We don't need to log this error\n     * since the backend will have already sent it to rollbar.\n     */\n\n    return currentTask?.__typename === 'Error' ? null : currentTask\n  }\n\n  _assignmentQuery = useQuery(this, () => ({\n    query: getStudentCurrentTaskQueryDocument,\n  }))\n\n  _refetchAfter = 0\n\n  async fetchTaskIfDue() {\n    if (!this.currentTask && this._refetchAfter < Date.now()) {\n      await this.fetch()\n    }\n  }\n\n  async setup() {\n    await this._assignmentQuery.current.result()\n    this._refetchAfter = Date.now() + FIVE_MINUTES\n  }\n\n  async fetch() {\n    await this._assignmentQuery.current.refetch()\n    await this.setup()\n  }\n\n  /**\n   * Checks if a transition is allowed given a student's current task. A transition is\n   * allowed if:\n   *\n   * 1. They have no current task\n   * 2. They have a current task and it is the index route\n   * 3. They have a current task and it is the lesson.activity.minigame route\n   * 3. They have a current task and it is the driving-tests.game route\n   * 4. They have a current task and it is the route for that task\n   *\n   * If not allowed we send the student to the index route\n   *\n   */\n  async checkTransition(transition: Transition) {\n    await this.fetchTaskIfDue()\n\n    if (!this.hasTask) return\n\n    if (transition.targetName === 'index') return\n\n    // lessons minigame\n    if (transition.targetName === 'lesson.activity.minigame') return\n\n    // driving test minigame\n    if (transition.targetName === 'driving-tests.game') return\n\n    if (\n      isEqual(\n        this._transitionToArray(transition),\n        this.currentTask?.targetRouteParams,\n      )\n    ) {\n      return\n    }\n\n    void this.router.replaceWith('index')\n  }\n\n  canCompleteLessonAssignmentTask(\n    lessonId: number | string,\n    activityId: number,\n  ) {\n    const { currentTask } = this\n    if (!currentTask) return false\n    if (currentTask.__typename !== 'AssignmentTaskMyLessons') return false\n    if (currentTask.lessonId !== lessonId.toString()) return false\n    if (currentTask.activityId !== activityId.toString()) return false\n    return true\n  }\n\n  canCompleteDrivingTestAssignmentTask(\n    grade: number,\n    category: string,\n    number: number,\n  ) {\n    const { currentTask } = this\n    if (!currentTask) return false\n    if (currentTask.__typename !== 'AssignmentTaskDrivingTests') return false\n    if (currentTask.gradePosition !== grade + 1) return false\n    if (currentTask.category !== category) return false\n    if (currentTask.gradeLessonNumber !== number) return false\n    return true\n  }\n\n  _transitionToArray(transition: Transition) {\n    const urlParams = this._getParamValuesFromRouteInfo(transition.to)\n    return [transition.targetName, ...urlParams]\n  }\n\n  _getParamValuesFromRouteInfo(\n    routeInfo: Transition['to'],\n  ): (string | undefined)[] {\n    if (!routeInfo) {\n      return []\n    }\n\n    const parts = this._getParamValuesFromRouteInfo(routeInfo.parent)\n\n    const rest = routeInfo.paramNames.map(\n      (paramName) => routeInfo.params[paramName],\n    )\n\n    return [...parts, ...rest]\n  }\n}\n\ndeclare module '@ember/service' {\n  interface Registry {\n    assignments: AssignmentsService\n  }\n}\n","import Service from '@ember/service'\nimport { ContentLoader, activityAccent } from '@blakeelearning/content-loader'\nimport type {\n  ActivityManifestBundle,\n  Manifest,\n} from '@blakeelearning/content-loader-core'\nimport config from 'mathseeds-client/config/environment'\n\nexport default class CaperLoaderService extends Service {\n  _loader?: ContentLoader\n\n  get loader() {\n    if (!this._loader) throw new Error('loader is unset')\n    return this._loader\n  }\n\n  setup({ accent }: { accent: string }) {\n    const variant = activityAccent(accent)\n\n    this._loader = new ContentLoader({\n      framework: 'caper',\n      config: config.contentLoader.caper,\n      variant,\n    })\n  }\n\n  load(\n    manifests: (Manifest | ActivityManifestBundle)[],\n    variables: Record<string, unknown>,\n  ) {\n    return this.loader.load(manifests as Manifest[], variables)\n  }\n\n  fetchManifest(manifest: Manifest, init?: RequestInit) {\n    return this.loader.fetchManifest(manifest, init)\n  }\n}\n\ndeclare module '@ember/service' {\n  interface Registry {\n    'caper-loader': CaperLoaderService\n  }\n}\n","import Service, { inject as service } from '@ember/service'\nimport { base64url } from 'rfc4648'\nimport type DeviceDetection from '@blakeelearning/device/device/detection/service'\nimport config from 'mathseeds-client/config/environment'\nimport printImage from 'mathseeds-client/utils/print-image'\n\nconst { certificateHost } = config.APP\n\nexport interface MapCertificateData {\n  map: number\n  name: string\n  percentage: number\n  colour: 'gold' | 'silver' | 'bronze'\n  timestamp: number\n}\n\nexport interface MentalMinuteCertificateData {\n  templateId: string\n  name: string\n  timestamp: number\n  locale: string\n}\n\nexport default class CertificateService extends Service {\n  @service('device/detection') declare deviceDetection: DeviceDetection\n\n  async printMentalMinuteCertificate({\n    templateId,\n    name,\n    timestamp,\n    locale,\n  }: MentalMinuteCertificateData) {\n    const base64Url = base64url.stringify(\n      new TextEncoder().encode(\n        JSON.stringify([templateId, name, timestamp, locale]),\n      ),\n      { pad: false },\n    )\n    const certificateUrl = new URL(\n      `ms-mm/legacy/${base64Url}.svg`,\n      certificateHost,\n    )\n\n    await this.print(certificateUrl)\n  }\n\n  async print(url: URL): Promise<void> {\n    if (this.deviceDetection.isNativeMobile) {\n      // The prescence of this param will result in an SVG element with `width=100% height=auto` attributes. The mobile apps require this for print layout.\n      url.searchParams.set('fitpage', '')\n      // Mobile apps will intercept these calls and take care of printing from there.\n      window.open(url.href, '_blank')\n      return\n    }\n\n    await this._printImage(url.href)\n  }\n\n  _printImage(url: string) {\n    return printImage(url)\n  }\n}\ndeclare module '@ember/service' {\n  interface Registry {\n    certificate: CertificateService\n  }\n}\n","import Service, { inject as service } from '@ember/service'\nimport { tracked } from '@glimmer/tracking'\nimport { graphql } from 'mathseeds-client/graphql'\nimport type ApolloService from './apollo'\nimport type { FeatureService } from '@blakeelearning/features'\n\nexport const resetMyLessonsLessonProgressMutationDocument = graphql(\n  /* GraphQL */ `\n    mutation ResetMyLessonsLessonProgress(\n      $input: StudentProgressMyLessonsLessonResetInput!\n    ) {\n      studentProgressMyLessonsLessonReset(input: $input) {\n        student {\n          id\n          ...StudentProgressFragment\n        }\n      }\n    }\n  `,\n)\n\nexport const resetMyLessonsMapQuizProgressMutationDocument = graphql(\n  /* GraphQL */ `\n    mutation ResetMyLessonsMapQuizProgress(\n      $input: StudentProgressMyLessonsMapQuizResetInput!\n    ) {\n      studentProgressMyLessonsMapQuizReset(input: $input) {\n        student {\n          id\n          ...StudentProgressFragment\n        }\n      }\n    }\n  `,\n)\n\nexport const resetMyLessonsPlacementTestProgressMutationDocument = graphql(\n  /* GraphQL */ `\n    mutation ResetMyLessonsPlacementTestProgress {\n      studentProgressMyLessonsPlacementTestReset {\n        student {\n          id\n          ...StudentProgressFragment\n        }\n      }\n    }\n  `,\n)\n\nexport default class DebugModeService extends Service {\n  @service declare apollo: ApolloService\n\n  @service\n  declare features: FeatureService\n\n  @tracked _enabled = false\n\n  get debugAllowed() {\n    return this.features.isEnabled('debug-allowed')\n  }\n\n  get enabled() {\n    return this.debugAllowed && this._enabled\n  }\n\n  enable() {\n    if (this.debugAllowed) this._enabled = true\n  }\n\n  disable() {\n    this._enabled = false\n  }\n\n  toggle() {\n    if (this.enabled) {\n      this.disable()\n    } else {\n      this.enable()\n    }\n  }\n\n  async resetMyLessonsLessonProgress(lesson: number, activity: number) {\n    if (this.debugAllowed) {\n      await this.apollo.mutate({\n        mutation: resetMyLessonsLessonProgressMutationDocument,\n        variables: {\n          input: {\n            lesson,\n            activity,\n          },\n        },\n      })\n    }\n  }\n\n  async resetMyLessonsMapQuizProgress(map: number) {\n    if (this.debugAllowed) {\n      await this.apollo.mutate({\n        mutation: resetMyLessonsMapQuizProgressMutationDocument,\n        variables: {\n          input: {\n            map,\n          },\n        },\n      })\n    }\n  }\n\n  async resetMyLessonsPlacementTestProgress() {\n    if (this.debugAllowed) {\n      await this.apollo.mutate({\n        mutation: resetMyLessonsPlacementTestProgressMutationDocument,\n      })\n    }\n  }\n}\n\ndeclare module '@ember/service' {\n  interface Registry {\n    'debug-mode': DebugModeService\n  }\n}\n","import { ApolloError } from '@apollo/client/core'\nimport type { Log } from '@blakeelearning/log'\nimport type RouterService from '@ember/routing/router-service'\nimport Service, { service } from '@ember/service'\nimport {\n  isAuthorizationError,\n  isApolloNetworkErrorRetryable,\n  isErrorRepresentingNetworkError,\n} from 'mathseeds-client/utils/errors'\nimport type WindowService from './window'\n\nexport default class ErrorHandlerService extends Service {\n  @service declare router: RouterService\n\n  @service declare log: Log\n\n  @service declare window: WindowService\n\n  handleError(error: unknown) {\n    if (isAuthorizationError(error)) {\n      void this.router.transitionTo('unauthorised')\n      return\n    }\n\n    if (\n      isErrorRepresentingNetworkError(error) ||\n      (error instanceof ApolloError &&\n        isApolloNetworkErrorRetryable(error.networkError))\n    ) {\n      void this.router.transitionTo('network-error', {\n        queryParams: {\n          previousUrl:\n            this.router.currentRouteName === 'network-error'\n              ? '/'\n              : this.window.location.pathname,\n        },\n      })\n      return\n    }\n\n    this.log.error(error as Error)\n    void this.router.transitionTo('application-error')\n  }\n}\n\ndeclare module '@ember/service' {\n  interface Registry {\n    'error-handler': ErrorHandlerService\n  }\n}\n","import Service, { inject as service } from '@ember/service'\nimport type ApolloService from 'mathseeds-client/services/apollo'\nimport type UserService from 'mathseeds-client/services/user'\nimport { graphql } from 'mathseeds-client/graphql'\nimport { useFragment } from 'mathseeds-client/resources/fragment'\nimport { StudentItem } from 'mathseeds-client/utils/student-item'\nimport config from 'mathseeds-client/config/environment'\nimport type { ItemPurchaseMutation } from 'mathseeds-client/graphql/graphql'\n\nexport const StudentItemsFragment = graphql(/* GraphQL */ `\n  fragment StudentItemsFragment on Student {\n    items {\n      animationJson\n      animationUrl\n      audioUrl\n      code\n      footprint\n      id\n      imageUrl\n      kind\n      room\n      roomGroup\n      roomGroupIndex\n    }\n  }\n`)\n\nconst studentItemPlacementUpdateMutationDocument = graphql(/* GraphQL */ `\n  mutation StudentItemPlacementUpdate(\n    $input: StudentItemPlacementUpdateInput!\n  ) {\n    studentItemPlacementUpdate(input: $input) {\n      student {\n        id\n        ...StudentItemsFragment\n      }\n    }\n  }\n`)\n\nconst itemPurchaseMutationDocument = graphql(/* GraphQL */ `\n  mutation ItemPurchase($input: ItemPurchaseInput!) {\n    itemPurchase(input: $input) {\n      ... on ItemPurchaseSuccess {\n        student {\n          id\n          acorns\n          ...StudentItemsFragment\n        }\n      }\n      ... on ItemPurchaseInsufficientFunds {\n        student {\n          id\n          acorns\n        }\n      }\n    }\n  }\n`)\n\nexport default class ItemsService extends Service {\n  @service declare apollo: ApolloService\n\n  @service declare user: UserService\n\n  _itemsFragment = useFragment(this, () => ({\n    fragment: StudentItemsFragment,\n    from: {\n      __typename: 'Student' as const,\n      id: this.user.student.id,\n    },\n  }))\n\n  get treehouseItems(): StudentItem[] {\n    return (this._itemsFragment.current?.items ?? []).map(\n      (item) => new StudentItem(item, this.setItemPosition.bind(this)),\n    )\n  }\n\n  get data() {\n    return this._itemsFragment.current?.items ?? []\n  }\n\n  get changingRoomJsonUrl(): string {\n    const { apiEndpoint, apiNamespace } = config.APP\n    const itemCount = this._itemsFragment.current?.items.length ?? 0\n    return `${apiEndpoint ?? '/'}${apiNamespace}/students/${this.user.student.id}/changing_room.json?${itemCount.toString()}`\n  }\n\n  async setItemPosition(\n    code: string,\n    room: string | null,\n    roomGroup: number | null,\n    roomGroupIndex: number | null,\n  ) {\n    await this.apollo.mutate({\n      mutation: studentItemPlacementUpdateMutationDocument,\n      variables: {\n        input: {\n          code,\n          room,\n          roomGroup,\n          roomGroupIndex,\n        },\n      },\n    })\n  }\n\n  async purchaseItem(code: string) {\n    const result = await this.apollo.mutate<ItemPurchaseMutation>({\n      mutation: itemPurchaseMutationDocument,\n      variables: { input: { code } },\n    })\n    const payload = result.data?.itemPurchase\n    if (payload?.__typename === 'ItemPurchaseSuccess') {\n      const purchasedItem = payload.student.items.find((i) => i.code === code)\n      return { insufficientFunds: false, purchasedItem: purchasedItem ?? null }\n    }\n    return { insufficientFunds: true, purchasedItem: null }\n  }\n}\n\ndeclare module '@ember/service' {\n  interface Registry {\n    items: ItemsService\n  }\n}\n","import type Owner from '@ember/owner'\nimport Service from '@ember/service'\nimport { ContentLoader, activityAccent } from '@blakeelearning/content-loader'\nimport type { Manifest } from '@blakeelearning/content-loader-core'\nimport config from 'mathseeds-client/config/environment'\n\nexport default class JesterLoaderService extends Service {\n  loader: ContentLoader\n\n  constructor(owner: Owner) {\n    super(owner)\n\n    this.loader = new ContentLoader({\n      framework: 'jester',\n      config: config.contentLoader.jester,\n    })\n  }\n\n  setAccent(accent: string) {\n    const variant = activityAccent(accent)\n\n    if (this.loader.variant !== variant) {\n      this.loader = new ContentLoader({\n        variant,\n        framework: 'jester',\n        config: config.contentLoader.jester,\n      })\n    }\n  }\n\n  load(manifests: Manifest[], variables?: Record<string, unknown>) {\n    return this.loader.load(manifests, variables ?? {})\n  }\n}\n\ndeclare module '@ember/service' {\n  interface Registry {\n    'jester-loader': JesterLoaderService\n  }\n}\n","import { runInDebug } from '@ember/debug'\nimport Service from '@ember/service'\nimport { tracked } from '@glimmer/tracking'\n\n/**\n * A service to hold the loading state used by the loading-screen component to determine if it should be visible.\n *\n * In the application route listeners are attached to the router.\n *\n * For each `routeWillChange` event the show() method is called (excluding debug mode). This can be overridden per route by adding metadata to the routeInfo object as follows:\n * @example\n * ```\n * buildRouteInfoMetadata(){\n *  return {\n *    optOutLoadingScreen: true,\n *  }\n * }\n * ```\n * On a `routeDidChange` event we traverse the list of routeInfo objects from the top down, checking if any resolved model contains an `interactiveConfig` or a `loader`.\n * The existence of these keys indicate that a route is loading an interactive and will handle clearing the loading screen manually. If neither of these keys are found we clear the loading screen automatically.\n *\n * For Jester a `readyForUserInput` content action should call `hide()` on this service.\n *\n * For Caper we are listening for a `LOAD_COMPLETE` event via the `caper-load-complete` modifier which is applied directly to the `loading-screen` component.\n *\n * @class LoadingUiService\n */\nexport default class LoadingUiService extends Service {\n  @tracked isLoading = false\n\n  show() {\n    runInDebug(() => {\n      console.log(`%cshow loading screen`, 'color: blue; font-size: 1.05rem')\n    })\n    this.isLoading = true\n  }\n\n  hide() {\n    runInDebug(() => {\n      console.log(`%chide loading screen`, 'color: blue; font-size: 1.05rem')\n    })\n    this.isLoading = false\n  }\n}\n\ndeclare module '@ember/service' {\n  interface Registry {\n    'loading-ui': LoadingUiService\n  }\n}\n","import Service from '@ember/service'\nimport { lessonSets as defaultLessonSets } from 'mathseeds-client/lesson-data/mental-minute'\n\n/**\n * What lesson is the student up to for a given lesson set?\n * @param {String} lessonSetId\n * @param {MentalMinuteStudentProgress} progress\n * @returns {Number}\n */\nexport function currentLessonIdForLessonSetId(lessonSetId, progress) {\n  return Number(progress.results.lesson_set[lessonSetId])\n}\n\n/**\n * @class MentalMinuteProgressPolicy\n * @extends Ember.Service\n * @description\n * `student-progress` provides a MentalMinuteProgress record that can be used by functions of this service\n * to answer questions about a student's mental minute progress such as 'have they finished all lessons?'\n * and 'what lesson have they gotten up to?'.\n *\n * An example MentalMinuteProgress record would look like:\n *\n * {\n *   precinct: 'mental_minute'\n *   product: 'ms'\n *   studentId: '1'\n *   results: {\n *     lesson: '1' // current lesson\n *     lesson_set: {\n *       addition_subtraction: 1, // current lesson for this lesson set\n *       multiplication_division: 52, // current lesson for this lesson set\n *     }\n *   }\n * }\n *\n * To answer questions about the student's mental minute progress, this service needs knowledge\n * of the lessons that make up a lesson set. This knowledge is taken from `./lesson-data.json`\n * and replaced with data during tests with calls to {sevice.lessonSets = }.\n *\n * @todo move lesson-data.js into a lesson data repository.\n */\n\nexport default class MentalMinuteProgressPolicyService extends Service {\n  /**\n   * @type {Array<LessonSet>}\n   */\n  _lessonSets = defaultLessonSets\n\n  /**\n   * @type {Array<LessonSet>}\n   * @member\n   * @example\n   *\n   * ```js\n   * mentalMinuteProgressPolicy.lessonSets = [\n   *   {\n   *     id: 'addition_subtraction',\n   *     finalLessonId: 6,\n   *     lessonIds: [1, 2, 3, 4, 6],\n   *   },\n   *   {\n   *     id: 'multiplication_division',\n   *     finalLessonId: 8,\n   *     lessonIds: [5, 7, 8],\n   *   }\n   * ]\n   * ```\n   */\n  set lessonSets(lessonSets) {\n    this._lessonSets = lessonSets\n  }\n\n  /**\n   * Based on the student's mental minute progress record, are they allowed to play the given lesson?\n   * @param {Number} lessonId\n   * @param {MentalMinuteStudentProgress} progress\n   * @returns {Boolean}\n   */\n  canPlayLesson(lessonId, progress) {\n    const lessonIdAsNumber = Number(lessonId)\n    if (typeof lessonIdAsNumber !== 'number') return false\n\n    const lessonSetId = this.findLessonSetIdByLessonId(lessonIdAsNumber)\n    if (typeof lessonSetId !== 'string') return false\n\n    const currentLessonId = currentLessonIdForLessonSetId(lessonSetId, progress)\n    return lessonIdAsNumber <= currentLessonId\n  }\n\n  /**\n   * Which lesson set is the lesson a member of?\n   * @param {Number} lessonId\n   * @returns {String|undefined}\n   */\n  findLessonSetIdByLessonId(lessonId) {\n    return this.findLessonSetByLessonId(lessonId)?.id\n  }\n\n  /**\n   * Which lesson set is the lesson a member of?\n   * @param {Number} lessonId\n   * @returns {LessonSet|undefined}\n   */\n  findLessonSetByLessonId(lessonId) {\n    return this._lessonSets.find((lessonSet) =>\n      lessonSet.lessonIds.includes(lessonId),\n    )\n  }\n\n  /**\n   * Given the previous lesson id, what is the next lesson id?\n   * @param {Object} params\n   * @param {Number|undefined} params.previousLessonId\n   * @returns {Number|undefined}\n   */\n  nextLessonId({ previousLessonId }) {\n    const lessonSet = this.findLessonSetByLessonId(previousLessonId)\n    return this.nextLessonIdInLessonSet({ previousLessonId, lessonSet })\n  }\n\n  /**\n   * Given the previous lesson id, what is the next lesson id in the lesson set?\n   * @param {Object} params\n   * @param {Number} params.previousLessonId\n   * @param {LessonSet} params.lessonSet\n   * @returns {Number|undefined}\n   */\n  nextLessonIdInLessonSet({ previousLessonId, lessonSet }) {\n    const previousIndex = lessonSet.lessonIds.indexOf(previousLessonId)\n    return lessonSet.lessonIds?.[previousIndex + 1]\n  }\n\n  /**\n   * Does a student's progress record indicate completion of all mental minute lesson sets?\n   * @param  {MentalMinuteStudentProgress} progress the student's progress record\n   * @return {Boolean}\n   */\n  hasFinishedLessons(progress) {\n    return this._lessonSets.every(({ id, finalLessonId }) => {\n      const currentLessonId = currentLessonIdForLessonSetId(id, progress)\n      return currentLessonId > finalLessonId\n    })\n  }\n}\n","import Service, { service } from '@ember/service'\nimport config from 'mathseeds-client/config/environment'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\nimport { calculateMap } from 'mathseeds-client/utils/progress-tools'\n\nexport default class MyLessonsService extends Service {\n  @service declare studentProgress: StudentProgressService\n\n  get currentMap() {\n    return this.studentProgress.myLessonsCurrentMap\n  }\n\n  get currentLesson() {\n    return this.studentProgress.myLessonsCurrentLesson\n  }\n\n  get currentActivity() {\n    return this.studentProgress.myLessons.currentActivity\n  }\n\n  canPlayMap(map: number) {\n    return this.currentMap >= map\n  }\n\n  canPlayQuizForMap(map: number) {\n    const isCurrentMap = this.currentMap === map\n    const currentPositionIsQuiz = this.currentLesson === 'quiz'\n\n    return this.currentMap > map || (isCurrentMap && currentPositionIsQuiz)\n  }\n\n  currentActivityForLesson(lessonId: string) {\n    if (parseInt(lessonId, 10) === parseInt(this.currentLesson, 10)) {\n      return this.currentActivity\n    }\n    return 1\n  }\n\n  canPlayLessonActivity(lesson: string, activity: number) {\n    const { currentLesson, currentMap, currentActivity } = this\n    const { lessonsPerMap } = config.studentProgress.progress.myLessons\n    const lessonNumber = parseInt(lesson, 10)\n    const lessonMap = calculateMap(lessonNumber, lessonsPerMap)\n\n    // Later Map\n    if (lessonMap > currentMap) {\n      return false\n    }\n\n    // Earlier map\n    if (lessonMap < currentMap) {\n      return true\n    }\n\n    // From here on, we're on the same map the lesson is progress-wise\n    // Being on the quiz means you completed all previous lessons and activities\n    if (currentLesson === 'quiz') {\n      return true\n    }\n\n    // Later lesson\n    if (lessonNumber > parseInt(currentLesson, 10)) {\n      return false\n    }\n\n    // Earlier lesson\n    if (lessonNumber < parseInt(currentLesson, 10)) {\n      return true\n    }\n\n    // Earlier or current activity\n    if (activity <= currentActivity) {\n      return true\n    }\n\n    // Only option left is to be a later activity\n    return false\n  }\n\n  isQuizComplete(map: number) {\n    return this.currentMap > map\n  }\n}\n\ndeclare module '@ember/service' {\n  interface Registry {\n    'my-lessons': MyLessonsService\n  }\n}\n","import Service, { inject as service } from '@ember/service'\nimport posthog, { type CaptureOptions, type Properties } from 'posthog-js'\nimport { tracked } from '@glimmer/tracking'\nimport config from 'mathseeds-client/config/environment'\nimport type { FeatureService } from '@blakeelearning/features'\nimport type UserService from './user'\n\nconst {\n  posthog: { projectToken, apiHost },\n} = config\n\nexport default class PosthogService extends Service {\n  @service declare user: UserService\n\n  @service declare features: FeatureService\n\n  @tracked isInstalled = false\n\n  capture(\n    event: string,\n    customProperties?: Properties,\n    options?: CaptureOptions,\n  ) {\n    const properties = { application: 'ms', ...customProperties }\n\n    console.debug('Capturing Posthog event', { event, properties, options })\n    if (!this.isInstalled) {\n      console.debug('Posthog is not installed, skipping capture')\n      return\n    }\n    posthog.capture(event, properties, {\n      ...options,\n      $set: {\n        customer_type: this.user.student.customerType.toLowerCase(),\n        ...options?.$set,\n      },\n    })\n  }\n\n  setup() {\n    if (\n      !config.posthog.enabled ||\n      !this.features.isEnabled('posthog-capture')\n    ) {\n      console.debug('Posthog is not enabled')\n      return\n    }\n\n    this._setup()\n  }\n\n  _setup() {\n    posthog.init(projectToken, {\n      api_host: apiHost,\n      autocapture: false,\n      capture_pageleave: false,\n      capture_pageview: false,\n      capture_performance: false,\n      advanced_disable_flags: true,\n      bootstrap: {\n        distinctID: this.user.student.remoteId,\n        isIdentifiedID: true,\n      },\n    })\n\n    this.isInstalled = true\n  }\n\n  reset() {\n    if (!this.isInstalled) return\n    posthog.reset()\n  }\n}\n\ndeclare module '@ember/service' {\n  interface Registry {\n    posthog: PosthogService\n  }\n}\n","import Service, { service } from '@ember/service'\nimport { QuestGoalStatusEnum } from 'mathseeds-client/graphql/graphql'\nimport type { StudentQuestGoalAcknowledgeCompleteInput } from 'mathseeds-client/graphql/graphql'\nimport type RouterService from '@ember/routing/router-service'\nimport { graphql } from 'mathseeds-client/graphql'\nimport { tracked } from '@glimmer/tracking'\nimport type { RouteModel } from '@ember/routing/router-service'\nimport type LoadingUiService from './loading-ui'\nimport type ApolloService from './apollo'\nimport { useQuery } from 'mathseeds-client/resources/query'\nimport type UserService from './user'\n\ngraphql(/* GraphQL */ `\n  fragment StudentQuestDataFragment on Student {\n    id\n    quest {\n      primaryGoal {\n        __typename\n        goalType: __typename\n        ... on QuestGoalLesson {\n          rewardAmount\n          id\n          lesson\n          progressCurrent\n          progressTotal\n          status\n        }\n        ... on QuestGoalMap {\n          rewardAmount\n          id\n          map\n          progressCurrent\n          progressTotal\n          status\n        }\n      }\n    }\n  }\n`)\n\nconst StudentQuestQueryDocument = graphql(/* GraphQL */ `\n  query GetStudentQuest {\n    student {\n      ...StudentQuestDataFragment\n    }\n  }\n`)\n\nexport const acknowledgeQuestGoalAlertMutationDocument = graphql(/* GraphQL */ `\n  mutation AcknowledgeQuestGoalAlert(\n    $input: StudentQuestGoalAcknowledgeCompleteInput!\n  ) {\n    studentQuestGoalAcknowledgeComplete(input: $input) {\n      student {\n        id\n        acorns\n        ...StudentQuestDataFragment\n      }\n    }\n  }\n`)\n\nexport default class QuestService extends Service {\n  @service declare apollo: ApolloService\n\n  @tracked showQuestAlert = false\n\n  @service declare router: RouterService\n\n  @service declare loadingUi: LoadingUiService\n\n  @service declare user: UserService\n\n  _studentQuestQuery = useQuery(this, () => ({\n    query: StudentQuestQueryDocument,\n  }))\n\n  nextRoute: [string] | [string, RouteModel] | undefined\n\n  get currentQuest() {\n    return this._studentQuestQuery.current.data?.student.quest\n  }\n\n  get questGoalForNotification() {\n    const primaryGoal = this.currentQuest?.primaryGoal\n    if (primaryGoal?.status === QuestGoalStatusEnum.ShowCompleteAlert)\n      return primaryGoal\n    return undefined\n  }\n\n  get recommendedTargetRoute() {\n    if (!this.currentQuest) return\n\n    const primaryGoal = this.currentQuest.primaryGoal\n    if (primaryGoal?.status === QuestGoalStatusEnum.Incomplete) {\n      switch (primaryGoal.__typename) {\n        case 'QuestGoalLesson':\n          return [\n            'lesson.activity',\n            primaryGoal.lesson.toString(),\n            (primaryGoal.progressCurrent + 1).toString(),\n          ]\n        case 'QuestGoalMap':\n          return ['map.quiz', primaryGoal.map.toString()]\n        default:\n          return undefined\n      }\n    }\n    return\n  }\n\n  async acknowledgeQuestGoalAlert(\n    input: StudentQuestGoalAcknowledgeCompleteInput,\n  ) {\n    await this.apollo.mutate({\n      mutation: acknowledgeQuestGoalAlertMutationDocument,\n      variables: {\n        input,\n      },\n    })\n  }\n\n  displayQuestAlertIfRequired(nextRoute?: [string] | [string, RouteModel]) {\n    if (this.questGoalForNotification) {\n      this.nextRoute = nextRoute\n      this.loadingUi.show()\n      this.showQuestAlert = true\n    } else {\n      // @ts-expect-error router params type no bueno\n      if (nextRoute) void this.router.transitionTo(...nextRoute)\n    }\n  }\n\n  async fetch() {\n    await this._studentQuestQuery.current.refetch()\n  }\n\n  closeQuestAlert() {\n    this.showQuestAlert = false\n    if (this.nextRoute) {\n      const nextRoute = this.nextRoute\n      this.nextRoute = undefined\n      // @ts-expect-error router params type no bueno\n      void this.router.transitionTo(...nextRoute)\n    }\n  }\n}\n\ndeclare module '@ember/service' {\n  interface Registry {\n    quest: QuestService\n  }\n}\n","import { SessionService as AuthSessionService } from '@blakeelearning/auth'\nimport type RouterService from '@ember/routing/router-service'\nimport { service } from '@ember/service'\nimport config from 'mathseeds-client/config/environment'\nimport type PosthogService from 'mathseeds-client/services/posthog'\n\nexport default class SessionService extends AuthSessionService {\n  @service declare router: RouterService\n\n  @service declare posthog: PosthogService\n\n  signIn(location = window.location) {\n    location.replace(config.loginUrl)\n  }\n\n  signOut(location = window.location) {\n    this.posthog.reset()\n    location.replace(config.logoutUrl)\n  }\n}\n\ndeclare module '@blakeelearning/auth' {\n  interface Session {\n    token: string | null\n  }\n}\n\ndeclare module '@ember/service' {\n  interface Registry {\n    session: SessionService\n  }\n}\n","import { Howl, Howler } from 'howler'\nimport Service from '@ember/service'\n\n/**\n * This service creates small sound cache and audio api.\n * We are using howler as our sound library and this acts as mini interface for the load play and mute.\n * Instead of reloading sounds every time a component is created the service will hold onto the howls and\n * play them back later when needed.\n *\n * @example\n *  sounds.load(['path/to/sound.mp3','path/to/sound.webm'], 'ring')\n *  sounds.play('ring')\n *\n * I introduced the sound name (string) to easily work with certain sounds it seems common practise in\n * a lot of sound libs, but howler did not have that concept (only for sound sprites)\n */\nexport default class SoundsService extends Service {\n  constructor(properties: Record<string, unknown>) {\n    super(properties)\n\n    // add event lister to mute all sounds globally when the tab is not active\n    document.addEventListener(\n      'visibilitychange',\n      this.onVisibilityChange,\n      false,\n    )\n\n    // mute all sounds when the tab is not active on first render\n    this.onVisibilityChange()\n  }\n\n  /**\n   * Cache of sounds by name\n   */\n  sounds = new Map([\n    [\n      'snap',\n      new Howl({\n        src: '/assets/sounds/snap.mp3',\n      }),\n    ],\n  ])\n\n  /**\n   * callback function to mute all sounds if the tab is not\n   */\n  onVisibilityChange = () => {\n    this.mute(document.hidden)\n  }\n\n  /**\n   * Plays a howl when found in the cache\n   * @param name - id name of the sound\n   * @param volume - volume level from 1 - 0\n   */\n  play(name: string, volume = 1) {\n    const howl = this.sounds.get(name)\n    if (howl) {\n      howl.volume(volume)\n      howl.play()\n    }\n  }\n\n  /**\n   * Mute all sounds managed by howler\n   *\n   * @param {Boolean} muteFlag\n   */\n  mute(muteFlag = true) {\n    Howler.mute(muteFlag)\n  }\n\n  /**\n   * Remove all self created event listeners from document.\n   */\n  override willDestroy() {\n    document.removeEventListener(\n      'visibilitychange',\n      this.onVisibilityChange,\n      false,\n    )\n  }\n}\n","import { service } from '@ember/service'\nimport {\n  StudentMetricsService,\n  getSessionIdFromJwt,\n  type StudentMetricsConfig,\n  type StudentMetricsContext,\n} from '@blakeelearning/student-metrics'\nimport type UserService from 'mathseeds-client/services/user'\nimport type SessionService from 'mathseeds-client/services/session'\n\n/**\n * The addon does not reexport this service into the app tree, so each host app\n * owns the `student-metrics` key by subclassing the base class and declaring\n * the registry entry itself. This is the same arrangement `@blakeelearning/auth`\n * uses for its session service (see ./session.ts).\n */\nexport default class StudentMetrics extends StudentMetricsService {\n  @service declare user: UserService\n\n  @service declare session: SessionService\n\n  /**\n   * Idempotent, and safe to call before any flag check — reporting itself is\n   * gated by `ms_kafka-page-views` at the call site.\n   */\n  override setup(config: StudentMetricsConfig = this.defaultConfig): void {\n    super.setup(config)\n  }\n\n  private get defaultConfig(): StudentMetricsConfig {\n    return {\n      application: 'ms',\n      resolveContext: () => this.resolveContext(),\n    }\n  }\n\n  private resolveContext(): StudentMetricsContext | undefined {\n    // Guests get a synthetic student whose ids are not numeric, so skip them.\n    if (this.user.isGuest) return undefined\n\n    try {\n      const { student, locale } = this.user\n\n      return {\n        // `remoteId` is the student's id in gravity, which is the cross-product\n        // identifier the collector expects.\n        studentId: student.remoteId,\n        customerType: student.customerType,\n        locale,\n        sessionId: getSessionIdFromJwt(this.session.state.data?.token),\n      }\n    } catch {\n      // `user.student` throws before `user.setup()` has run.\n      return undefined\n    }\n  }\n}\n\ndeclare module '@ember/service' {\n  interface Registry {\n    'student-metrics': StudentMetrics\n  }\n}\n","import Service, { service } from '@ember/service'\nimport config from 'mathseeds-client/config/environment'\nimport { graphql } from 'mathseeds-client/graphql'\nimport type ApolloService from './apollo'\nimport { useQuery } from 'mathseeds-client/resources/query'\n\nexport const StudentProgressFragment = graphql(/* GraphQL */ `\n  fragment StudentProgressFragment on Student {\n    progress {\n      drivingTests {\n        currentGrade\n        results {\n          data\n          geometry\n          measurement\n          number\n          operations\n          patterns\n        }\n      }\n      myLessons {\n        currentLesson\n        currentMap\n        currentActivity\n        showPlacementTest\n      }\n      mentalMinute {\n        currentLesson\n        currentLessonSet {\n          additionSubtraction\n          multiplicationDivision\n        }\n        updatedAt {\n          additionSubtraction\n          multiplicationDivision\n        }\n      }\n    }\n  }\n`)\n\nconst progressQueryDocument = graphql(/* GraphQL */ `\n  query GetProgress {\n    student {\n      id\n      ...StudentProgressFragment\n    }\n  }\n`)\n\nexport default class StudentProgressService extends Service {\n  @service declare apollo: ApolloService\n\n  _progressQuery = useQuery(this, () => ({\n    query: progressQueryDocument,\n  }))\n\n  get progress() {\n    if (!this._progressQuery.current.data)\n      throw new Error('progress has not been fetched')\n    return this._progressQuery.current.data.student.progress\n  }\n\n  get myLessons() {\n    return this.progress.myLessons\n  }\n\n  get myLessonsCurrentMap() {\n    return this.myLessons.currentMap\n  }\n\n  get myLessonsCurrentLesson() {\n    return this.myLessons.currentLesson\n  }\n\n  get myLessonsCurrentLessonNumber() {\n    if (this.myLessonsCurrentLesson === 'quiz') {\n      return (\n        this.myLessonsCurrentMap *\n        config.studentProgress.progress.myLessons.lessonsPerMap\n      )\n    }\n    return parseInt(this.myLessonsCurrentLesson, 10)\n  }\n\n  get showMyLessonsPlacementTest() {\n    return this.myLessons.showPlacementTest\n  }\n\n  get drivingTests() {\n    return this.progress.drivingTests\n  }\n\n  get mentalMinute() {\n    return {\n      results: {\n        lesson: this.progress.mentalMinute.currentLesson,\n        lesson_set: {\n          addition_subtraction:\n            this.progress.mentalMinute.currentLessonSet.additionSubtraction,\n          multiplication_division:\n            this.progress.mentalMinute.currentLessonSet.multiplicationDivision,\n        },\n        updated_at: {\n          addition_subtraction:\n            this.progress.mentalMinute.updatedAt.additionSubtraction,\n          multiplication_division:\n            this.progress.mentalMinute.updatedAt.multiplicationDivision,\n        },\n      },\n    }\n  }\n\n  /**\n   * Performs the initial watchQuery for the student's progress on the first call and will refetch the query on subsequent calls\n   */\n  async fetchProgress() {\n    const { data } = await this._progressQuery.current.refetch()\n    return data.student.progress\n  }\n}\n\ndeclare module '@ember/service' {\n  interface Registry {\n    'student-progress': StudentProgressService\n  }\n}\n","import ENV from 'mathseeds-client/config/environment'\nimport Service, { inject as service } from '@ember/service'\nimport { TimeOnTask } from '@blakeelearning/totter'\nimport ky from 'ky'\n\nconst {\n  APP: {\n    timeOnTask: { apiNamespace, routeTaskIds },\n  },\n  timeOnTaskUrl,\n} = ENV\n\nexport default class TimeOnTaskService extends Service {\n  @service('auth-token') authToken\n  @service user\n\n  TimeOnTaskClass = TimeOnTask\n  totter = null\n\n  setupV2() {\n    this.totter = new this.TimeOnTaskClass(this.user.student.remoteId, {\n      product: 'ms',\n      syncOptions: {\n        syncUrl: `${timeOnTaskUrl}/api/v2/complete_events`,\n        getAuthCallback: async () => {\n          const tokenResult = await this.authToken.getTokenForStudent()\n          return tokenResult.unwrapOr('')\n        },\n      },\n    })\n  }\n\n  /**\n   * If a task id exists for the current route or one of its ancestors, post to re-student ToT endpoint\n   * @param {String} routeName a period delimited String e.g. \"storylands.lesson.activity\"\n   * @example\n   *\n   * // calling `pingTaskByRoute(\"storylands.lesson.activity\")` will look for:\n   * // 1. \"storylands.lesson.activity\"\n   * // 2. \"storylands.lesson\"\n   * // 3. \"storylands\"\n   * // Because a task id exists for the \"storylands\" route, it will be sent in the post to re-student ToT endpoint\n   */\n\n  async pingTaskByRoute(routeName) {\n    const taskId = this._taskIdForRoute(routeName)\n    const totterTaskId = taskId ?? routeName\n\n    if (totterTaskId) {\n      void this.totter?.trackSession(totterTaskId)\n    }\n\n    if (taskId) {\n      await ky.post('time_on_task', {\n        json: { task: taskId, created_at: Date.now() },\n        keepAlive: true,\n        retry: {\n          limit: 10,\n          methods: ['options', 'post'],\n        },\n        prefixUrl: `/${apiNamespace}`,\n      })\n    }\n  }\n\n  /**\n   * Provide a route name and this will return the task id if it or a parent route is present in the routeTaskIds\n   * mapping defined in the environment config.\n   *\n   * @param {String} routeName - the route to find a task id for\n   * @returns {String} taskId - the task id associated with the route. Null if it or a parent route is not mapped.\n   */\n  _taskIdForRoute(routeName) {\n    const flattenedRouteTaskIds = this._flattenedRouteTaskIds(routeTaskIds)\n\n    if (!routeName) return null\n    const routeNames = routeName.split('.')\n\n    while (routeNames.length) {\n      const key = routeNames.join('.')\n      const taskId = flattenedRouteTaskIds[key]\n      if (taskId) {\n        return taskId\n      }\n      routeNames.pop()\n    }\n    return null\n  }\n\n  /**\n   * Flatten the config structure to 'nested.route.name': 'taskId' for every route entry for easier parsing\n   * flattened = {\n   *   awards: 'awards',\n   *   bookcase: 'house',\n   *   'changing-room': 'avatar',\n   *   house: 'house',\n   *   ...\n   * }\n   * @param {Object} taskIds - task ids for each route\n   * @returns {Object}\n   */\n\n  _flattenedRouteTaskIds(taskIds) {\n    const flattened = {}\n\n    Object.entries(taskIds).forEach(([taskId, routes]) => {\n      routes.forEach((route) => {\n        flattened[route] = taskId\n      })\n    })\n\n    return flattened\n  }\n}\n","import Service, { inject as service } from '@ember/service'\nimport type { Log } from '@blakeelearning/log'\nimport {\n  createOfrepInMemoryProvider,\n  type FeatureService,\n  type OfrepFlag,\n} from '@blakeelearning/features'\nimport { debug } from '@ember/debug'\nimport { graphql } from 'mathseeds-client/graphql'\nimport { useQuery } from 'mathseeds-client/resources/query'\nimport { useFragment } from 'mathseeds-client/resources/fragment'\nimport { tracked } from '@glimmer/tracking'\nimport type RouterService from '@ember/routing/router-service'\nimport config from 'mathseeds-client/config/environment'\nimport {\n  CustomerTypeEnum,\n  type StudentUserFragmentFragment,\n} from 'mathseeds-client/graphql/graphql'\nimport type SessionService from 'mathseeds-client/services/session'\nimport ky from 'ky'\n\ngraphql(/* GraphQL */ `\n  fragment StudentUserFragment on Student {\n    acorns\n    customerType\n    gradePosition\n    id\n    name\n    firstName\n    remoteId\n    backgroundMusicDisabled\n    gamesAccess\n    playroomAccess\n    rosterEnabled\n  }\n`)\n\ngraphql(/* GraphQL */ `\n  fragment StudentAvatarFragment on Student {\n    id\n    avatarUrl\n    avatarJsonUrl @client\n    dna {\n      arms\n      belt\n      dress\n      hat\n      head\n      jacket\n      legs\n      mask\n      necklace\n      shirt\n      shoes\n      wristband\n    }\n  }\n`)\n\nconst StudentLocaleFragment = graphql(/* GraphQL */ `\n  fragment StudentLocaleFragment on Student {\n    locale\n  }\n`)\n\nconst StudentQueryDocument = graphql(/* GraphQL */ `\n  query StudentQueryDocument {\n    student {\n      ...StudentUserFragment\n      ...StudentLocaleFragment\n      ...StudentAvatarFragment\n    }\n  }\n`)\n\nconst DEFAULT_AVATAR_URL =\n  'https://avatars.static.readingeggs.com/ms/e3713849.png'\n\nconst DEFAULT_DNA = {\n  head: 'default_head_0',\n  legs: 'default_legs_0',\n  arms: 'default_arms_0',\n  hat: 'default_hat_0',\n  belt: null,\n  dress: null,\n  jacket: null,\n  mask: null,\n  necklace: null,\n  shirt: null,\n  shoes: null,\n  wristband: null,\n}\n\ninterface OfrepBulkEvaluationResponse {\n  flags: OfrepFlag[]\n}\nexport type UserStudent = StudentUserFragmentFragment\n\nexport default class UserService extends Service {\n  @service declare log: Log\n\n  @service declare features: FeatureService\n\n  @service declare router: RouterService\n\n  @service declare session: SessionService\n\n  _studentQuery = useQuery(this, () => {\n    if (this.isGuest) {\n      return {\n        query: StudentQueryDocument,\n        fetchPolicy: 'cache-only',\n      }\n    }\n\n    return {\n      query: StudentQueryDocument,\n    }\n  })\n\n  _localeFragment = useFragment(this, () => ({\n    fragment: StudentLocaleFragment,\n    from: {\n      __typename: 'Student',\n      id: this._studentQuery.current.data?.student.id,\n    },\n  }))\n\n  unsubscribeSessionChangeHandlers: (() => void)[] = []\n\n  @tracked isGuest = false\n\n  @tracked backgroundMusicDisabled = false\n\n  get student() {\n    const student = this._studentQuery.current.data?.student\n    if (!student) {\n      throw new Error('student is unset')\n    }\n    return student\n  }\n\n  get locale() {\n    return this._localeFragment.current?.locale ?? 'au'\n  }\n\n  get jesterAccent() {\n    const isCanadaAware = this.features.isEnabled('ms_canada-aware')\n    if (this.locale === 'ca' && !isCanadaAware) {\n      return 'us'\n    }\n\n    return this.locale\n  }\n\n  async setup(): Promise<void> {\n    await this._studentQuery.current.result()\n    await this.setupFeatureFlags()\n\n    if (this.backgroundMusicDisabled !== this.student.backgroundMusicDisabled) {\n      this.backgroundMusicDisabled = this.student.backgroundMusicDisabled\n    }\n\n    this.log.setPerson({ id: this.student.id })\n\n    this.session.setup({\n      ...config.session,\n      userID: this.student.remoteId,\n    })\n\n    this.subscribeToSessionChanges()\n  }\n\n  async setupFeatureFlags(): Promise<void> {\n    const response = await ky.post('/ofrep/v1/evaluate/flags', {\n      json: {\n        context: {\n          targetingKey: this.student.remoteId,\n          customer_type: this.student.customerType.toLowerCase(),\n        },\n      },\n      retry: {\n        limit: 3,\n        methods: ['POST'],\n      },\n    })\n\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n    const { flags } = (await response.json()) as OfrepBulkEvaluationResponse\n\n    const provider = createOfrepInMemoryProvider(flags)\n\n    await this.features.setup({\n      logger: console,\n      provider,\n    })\n  }\n\n  /**\n   * Setup a guest student - used for sample lessons.\n   */\n  async asGuest() {\n    this.isGuest = true\n    this.log.setPerson({ id: 'guest-student' })\n    this._studentQuery.current.updateQuery(() => ({\n      __typename: 'Query',\n      student: {\n        __typename: 'Student',\n        id: 'guest-student',\n        remoteId: 'guest-student-remote-id',\n        name: 'Guest Student',\n        firstName: 'Guest',\n        locale: 'au',\n        backgroundMusicDisabled: false,\n        gamesAccess: true,\n        playroomAccess: true,\n        rosterEnabled: false,\n        acorns: 0,\n        customerType: CustomerTypeEnum.B2CStudent,\n        gradePosition: 0,\n        avatarUrl: DEFAULT_AVATAR_URL,\n        avatarJsonUrl: '',\n        dna: {\n          __typename: 'AvatarDna',\n          ...DEFAULT_DNA,\n        },\n        items: [],\n      },\n    }))\n    return this._studentQuery.current.result()\n  }\n\n  async refetch() {\n    await this._studentQuery.current.refetch()\n  }\n\n  incrementAcorns(amount: number) {\n    debug(`incrementAcorns() updating apollo cache`)\n    this._studentQuery.current.updateQuery((data) => {\n      return {\n        __typename: 'Query',\n        student: {\n          ...data.student,\n          acorns: data.student.acorns + amount,\n        },\n      }\n    })\n  }\n\n  reset(location = window.location) {\n    location.replace('/')\n  }\n\n  subscribeToSessionChanges() {\n    this.unsubscribeFromSessionChanges()\n\n    this.unsubscribeSessionChangeHandlers.push(\n      this.session.onUnauthenticated(() => {\n        this.session.signOut()\n      }),\n      this.session.onMismatched(() => {\n        this.reset()\n      }),\n    )\n  }\n\n  unsubscribeFromSessionChanges() {\n    for (const unsubscribe of this.unsubscribeSessionChangeHandlers) {\n      unsubscribe()\n    }\n    this.unsubscribeSessionChangeHandlers = []\n  }\n\n  override willDestroy(): void {\n    this.unsubscribeFromSessionChanges()\n  }\n}\n\ndeclare module '@ember/service' {\n  interface Registry {\n    user: UserService\n  }\n}\n","import Service from '@ember/service'\n\nexport default class WindowService extends Service {\n  _location: Location = window.location\n\n  get location() {\n    return this._location\n  }\n}\n\ndeclare module '@ember/service' {\n  interface Registry {\n    window: WindowService\n  }\n}\n","export default {\n  student: {\n    id: 'me',\n    name: 'Guest Student',\n    locale: 'au',\n    acorns: 0,\n    remoteId: 0,\n    item_count: 0,\n    games_played_count: 0,\n    stash: '',\n    dna_id: 1,\n    item_ids: [],\n    roster_enabled: false,\n  },\n}\n","import { camelize } from '@ember/string'\n\nexport default function camelizeKeys(obj, depth = 5) {\n  if (typeof obj === 'string') return camelize(obj)\n  return walk(obj, depth) // to stop infinite descent\n}\n\nconst isArray =\n  Array.isArray ||\n  function (obj) {\n    return obj instanceof Array\n  }\n\nconst isDate = function (obj) {\n  return obj instanceof Date\n}\n\nconst isRegex = function (obj) {\n  return obj instanceof RegExp\n}\n\nfunction walk(obj, depth) {\n  if (depth <= 0) return obj\n  if (!obj || typeof obj !== 'object') return obj\n  if (isDate(obj) || isRegex(obj)) return obj\n  if (isArray(obj)) return obj.map(walk)\n  if (typeof obj !== 'object') return obj\n  return Object.keys(obj).reduce(function (acc, key) {\n    const camel = camelize(key)\n    acc[camel] = walk(obj[key], depth - 1)\n    return acc\n  }, {})\n}\n","const { abs, ceil, floor } = Math\n\n// This utility is a reimplementation of moment.js's `fromNow` and\n// `toNow` functions, using the same buckets of time for translating\n// relative dates to readable strings like: 'a few seconds ago', 'a year ago', etc\n// https://momentjs.com/docs/#/displaying/fromnow/\n// https://momentjs.com/docs/#/displaying/tonow/\n\n// TODO: This util can be replaced with date-fns intlFormatDistance once we drop support for ios13\n\nconst ONE_SECOND = 1000\nconst ONE_MINUTE = ONE_SECOND * 60\nconst ONE_HOUR = ONE_MINUTE * 60\nconst ONE_DAY = ONE_HOUR * 24\nconst ONE_MONTH = ONE_DAY * 31\nconst ONE_YEAR = ONE_DAY * 365\nconst DIFF_SECONDS_FROM_NOW = ONE_SECOND * 45\nconst DIFF_MINUTE_FROM_NOW = ONE_SECOND * 90\nconst DIFF_MINUTES_FROM_NOW = ONE_MINUTE * 45\nconst DIFF_HOUR_FROM_NOW = ONE_MINUTE * 90\nconst DIFF_HOURS_FROM_NOW = ONE_HOUR * 22\nconst DIFF_DAY_FROM_NOW = ONE_HOUR * 36\nconst DIFF_DAYS_FROM_NOW = ONE_DAY * 26\nconst DIFF_MONTH_FROM_NOW = ONE_DAY * 45\nconst DIFF_MONTHS_FROM_NOW = ONE_DAY * 319\nconst DIFF_YEAR_FROM_NOW = ONE_DAY * 547\nconst DIFF_SECONDS_AGO = DIFF_SECONDS_FROM_NOW * -1\nconst DIFF_MINUTE_AGO = DIFF_MINUTE_FROM_NOW * -1\nconst DIFF_MINUTES_AGO = DIFF_MINUTES_FROM_NOW * -1\nconst DIFF_HOUR_AGO = DIFF_HOUR_FROM_NOW * -1\nconst DIFF_HOURS_AGO = DIFF_HOURS_FROM_NOW * -1\nconst DIFF_DAY_AGO = DIFF_DAY_FROM_NOW * -1\nconst DIFF_DAYS_AGO = DIFF_DAYS_FROM_NOW * -1\nconst DIFF_MONTH_AGO = DIFF_MONTH_FROM_NOW * -1\nconst DIFF_MONTHS_AGO = DIFF_MONTHS_FROM_NOW * -1\nconst DIFF_YEAR_AGO = DIFF_YEAR_FROM_NOW * -1\n\nexport default function dateFromNow(date: Date, now = Date.now()): string {\n  const diff = date.getTime() - now\n\n  if (diff <= DIFF_YEAR_AGO) {\n    return `${_msToAbsolute(diff, 'years')} years ago`\n  }\n  if (diff > DIFF_YEAR_AGO && diff <= DIFF_MONTHS_AGO) {\n    return 'a year ago'\n  }\n  if (diff > DIFF_MONTHS_AGO && diff <= DIFF_MONTH_AGO) {\n    return `${_msToAbsolute(diff, 'months')} months ago`\n  }\n  if (diff > DIFF_MONTH_AGO && diff <= DIFF_DAYS_AGO) {\n    return 'a month ago'\n  }\n  if (diff > DIFF_DAYS_AGO && diff <= DIFF_DAY_AGO) {\n    return `${_msToAbsolute(diff, 'days')} days ago`\n  }\n  if (diff > DIFF_DAY_AGO && diff <= DIFF_HOURS_AGO) {\n    return 'a day ago'\n  }\n  if (diff > DIFF_HOURS_AGO && diff <= DIFF_HOUR_AGO) {\n    return `${_msToAbsolute(diff, 'hours')} hours ago`\n  }\n  if (diff > DIFF_HOUR_AGO && diff <= DIFF_MINUTES_AGO) {\n    return 'an hour ago'\n  }\n  if (diff > DIFF_MINUTES_AGO && diff <= DIFF_MINUTE_AGO) {\n    return `${_msToAbsolute(diff, 'minutes')} minutes ago`\n  }\n  if (diff > DIFF_MINUTE_AGO && diff <= DIFF_SECONDS_AGO) {\n    return 'a minute ago'\n  }\n  if (diff > DIFF_SECONDS_AGO && diff < 0) {\n    return 'a few seconds ago'\n  }\n  if (diff >= 0 && diff < DIFF_SECONDS_FROM_NOW) {\n    return 'in seconds'\n  }\n  if (diff >= DIFF_SECONDS_FROM_NOW && diff < DIFF_MINUTE_FROM_NOW) {\n    return 'in a minute'\n  }\n  if (diff >= DIFF_MINUTE_FROM_NOW && diff < DIFF_MINUTES_FROM_NOW) {\n    return `in ${_msToAbsolute(diff, 'minutes')} minutes`\n  }\n  if (diff >= DIFF_MINUTES_FROM_NOW && diff < DIFF_HOUR_FROM_NOW) {\n    return 'in an hour'\n  }\n  if (diff >= DIFF_HOUR_FROM_NOW && diff < DIFF_HOURS_FROM_NOW) {\n    return `in ${_msToAbsolute(diff, 'hours')} hours`\n  }\n  if (diff >= DIFF_HOURS_FROM_NOW && diff < DIFF_DAY_FROM_NOW) {\n    return 'in a day'\n  }\n  if (diff >= DIFF_DAY_FROM_NOW && diff < DIFF_DAYS_FROM_NOW) {\n    return `in ${_msToAbsolute(diff, 'days')} days`\n  }\n  if (diff >= DIFF_DAYS_FROM_NOW && diff < DIFF_MONTH_FROM_NOW) {\n    return 'in a month'\n  }\n  if (diff >= DIFF_MONTH_FROM_NOW && diff < DIFF_MONTHS_FROM_NOW) {\n    return `in ${_msToAbsolute(diff, 'months')} months`\n  }\n  if (diff >= DIFF_MONTHS_FROM_NOW && diff < DIFF_YEAR_FROM_NOW) {\n    return 'in a year'\n  }\n  if (diff >= DIFF_YEAR_FROM_NOW) {\n    return `in ${_msToAbsolute(diff, 'years')} years`\n  }\n  return ''\n}\n\ntype TimeUnit = 'minutes' | 'hours' | 'days' | 'months' | 'years'\n\nfunction _msToAbsolute(ms: number, unit: TimeUnit): string {\n  const conversionFactor = {\n    minutes: ONE_MINUTE,\n    hours: ONE_HOUR,\n    days: ONE_DAY,\n    months: ONE_MONTH,\n    years: ONE_YEAR,\n  }[unit]\n\n  const converted = abs(ms / conversionFactor)\n  return converted < 2 ? ceil(converted).toString() : floor(converted).toString()\n}\n","export type DebugActionParam =\n  | {\n      type: 'checkbox' | 'date' | 'number' | 'text'\n\n      value?: string | undefined\n    }\n  | {\n      type: 'select'\n\n      options: { label: string; value: string }[]\n\n      values?: Record<string, unknown>\n    }\n\nexport type DebugAction = Record<string, DebugActionParam>\n\n/**\n * Marks this property as a debug value.\n * This property will be displayed in the debug menu as JSON.\n *\n * @example\n * ```ts\n * @debugValue()\n * get someValue() {\n *   return { foo: 'bar', baz: true }\n * }\n * ```\n *\n * @returns a property decorator\n */\nexport function debugValue(): PropertyDecorator {\n  return function (target, propertyKey) {\n    const debug = getDebug(target)\n    debug.values.add(propertyKey)\n  }\n}\n\n/**\n * Marks this action as a debug action.\n * This action and it's params will be avaliable in the debug menu.\n *\n * Each param will be displayed as an input element with the provided type.\n * Default values can optionally be provided for type 'text' | 'number' | 'object'.\n *\n * @param params Debug action params\n * @returns a method decorator\n *\n * @example\n * ```ts\n * @action\n * @debugAction({ foo: {type: 'text', value: 'baz'}, bar: {type: 'date'} })\n * doSomething(foo: string, bar: Date) {\n *   // do something\n * }\n * ```\n */\nexport function debugAction(params?: DebugAction): MethodDecorator {\n  return function (target, propertyKey) {\n    const debug = getDebug(target)\n    debug.actions.set(propertyKey, params)\n  }\n}\n\nexport function debugSubscription(): MethodDecorator {\n  return function (target, propertyKey) {\n    const debug = getDebug(target)\n    debug.subscriptions.add(propertyKey)\n  }\n}\n\n/**\n * Context for the content-interactive debug menu\n */\nexport class DebugContent {\n  /**\n   * Set of keys to lookup when debugging component values\n   */\n  values = new Set<string | symbol>()\n\n  /**\n   * Map of keys and config to lookup when debugging component actions\n   */\n  actions = new Map<string | symbol, DebugAction | undefined>()\n\n  /**\n   * Set of something\n   */\n  subscriptions = new Set<string | symbol>()\n}\n\n/** Unique symbol to lookup the DebugContent class */\nexport const DebugContentSymbol = Symbol.for('debug-content')\n\n/**\n * Gets the DebugContent of an object. Creates a new DebugContent if one doesn't exists already.\n *\n * @param context object to apply the DebugContent too\n * @returns The DebugContent\n */\nexport function getDebug(context: object): DebugContent {\n  const debug: unknown = Reflect.get(context, DebugContentSymbol)\n\n  if (debug instanceof DebugContent) {\n    return debug\n  }\n\n  return setDebug(context, new DebugContent())\n}\n\n/**\n * Sets the provided DebugContent on the context object\n *\n * @param context object to apply the DebugContent too\n * @param debug the DebugContent to apply to the context\n * @returns The DebugContent\n */\nexport function setDebug(context: object, debug: DebugContent): DebugContent {\n  Reflect.defineProperty(context, DebugContentSymbol, {\n    value: debug,\n  })\n\n  return debug\n}\n","import { HTTPError } from 'ky'\nimport isNetworkError from 'is-network-error'\nimport { ScriptBlockedError } from '@blakeelearning/content-loader'\nimport { isApolloError, type ApolloError } from '@apollo/client/core'\n\n/**\n * This describes any object that has a name and a message.  All standard\n * JavaScript errors (Error, TypeError, etc.) implement this interface.\n */\nexport interface ErrorLike {\n  name: string\n  message: string\n}\n\ntype ErrorCheck = (error: unknown) => boolean\n\nclass ContentError extends Error {\n  constructor(name: string, error: unknown) {\n    let message: string\n    let cause: ErrorLike | undefined\n\n    if (isErrorLike(error)) {\n      message = error.message\n      cause = error\n    } else if (typeof error === 'string') {\n      message = error\n    } else {\n      message = `Unrecognised error: ${String(error)}`\n    }\n\n    super(message, { cause })\n    this.name = name\n  }\n}\n\n// See https://developer.mozilla.org/en-US/docs/Web/API/fetch#exceptions\ntype FetchAPINetworkError = TypeError\n\n// See https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#xmlhttprequests_being_stopped\ntype XMLHttpRequestWithZeroStatus = XMLHttpRequest & { status: 0 }\n\n// Not very well documented, but some info is available in https://www.apollographql.com/docs/react/api/link/apollo-link-error/ - note that the `networkError` property can also be a ServerError\ntype ApolloErrorWithNetworkError = ApolloError & {\n  networkError: FetchAPINetworkError\n}\n\nexport type ErrorRepresentingNetworkError =\n  | FetchAPINetworkError\n  | XMLHttpRequestWithZeroStatus\n  | ApolloErrorWithNetworkError\n  | ScriptBlockedError\n\n/**\n * This function can be used to tell us if an error we are seeing was caused by\n * a failed request.  In general, any such error does not need to be logged to\n * rollbar so long as we can handle it by advising the student to check their\n * connection and try again.\n *\n * We're using the term \"network error\" here to mean an HTTP request for which\n * the browser has yielded no response.  These are also called abort errors\n * sometimes, but network error is the term used in {@link\n * https://developer.mozilla.org/en-US/docs/Web/API/fetch}.\n */\nexport function isErrorRepresentingNetworkError(\n  error: unknown,\n): error is ErrorRepresentingNetworkError {\n  if (error instanceof XMLHttpRequest) return error.status === 0\n  // eslint-disable-next-line @typescript-eslint/no-deprecated\n  if (error instanceof Error && isApolloError(error))\n    return isNetworkError(error.networkError)\n  if (error instanceof ScriptBlockedError) return true\n  return isNetworkError(error)\n}\n\ntype ResponseWith401Status = Response & { status: 401 }\ntype HTTPErrorWith401Response = HTTPError & { response: ResponseWith401Status }\n\ntype XMLHttpRequestWith401Status = XMLHttpRequest & { status: 401 }\n\n// Matches both a real ApolloError (thrown from client.query()/mutate()) and\n// the plain ErrorResponse object passed to an `onError` link's callback -\n// neither of which is guaranteed to be an `instanceof Error`, but both expose\n// networkError/graphQLErrors as own properties.\ninterface ApolloLinkErrorLike {\n  networkError?: { statusCode: number } | null\n  graphQLErrors?: readonly { message: string }[]\n}\n\nexport type AuthorizationError =\n  | HTTPErrorWith401Response\n  | XMLHttpRequestWith401Status\n  | ApolloLinkErrorLike\n\nfunction isApolloLinkErrorLike(error: unknown): error is ApolloLinkErrorLike {\n  return (\n    typeof error === 'object' &&\n    error !== null &&\n    ('networkError' in error || 'graphQLErrors' in error)\n  )\n}\n\nexport function isAuthorizationError(\n  error: unknown,\n): error is AuthorizationError {\n  if (error instanceof HTTPError) return error.response.status === 401\n  if (error instanceof XMLHttpRequest) return error.status === 401\n  if (isApolloLinkErrorLike(error)) {\n    if (\n      hasStatusCode(error.networkError) &&\n      error.networkError.statusCode === 401\n    )\n      return true\n    if (error.graphQLErrors?.some((error) => error.message === 'Unauthorized'))\n      return true\n  }\n\n  return false\n}\n\n/**\n * This determines if a given error message/error object pair are actionable.\n * The definition of actionable is something that if we see it reported in\n * Rollbar, we can take some action to either resolve or ameliorate the\n * issue.\n *\n * At present, the errors we consider un-actionable are:\n *\n * 1. network errors\n * 2. authorization errors\n *\n * Anything else might be actionable.\n */\nexport function errorIsActionable(error: Error): boolean {\n  if (error instanceof ContentError && isErrorLike(error.cause)) {\n    return errorIsActionable(error.cause)\n  }\n  return !isErrorRepresentingNetworkError(error) && !isAuthorizationError(error)\n}\n\n/**\n * Wraps errors with the given error name, provided that they are not\n * considered a priori unrecoverable in the current context.  If they are, they\n * are returned unchanged.\n *\n * The \"name\" argument is intended to by used by the externalController wrapper\n * to determine if an error is recoverable.  As such, the errors created by\n * this function can be thrown from controller code interfacing with Content\n * when something goes awry.  The original error is wrapped using Error.cause so\n * that its stack trace (if any) is not lost.\n *\n * The second argument to this function can be an error object, an \"error-like\"\n * (object with name and message), a string, or any other type that can be\n * converted to a string.\n *\n * It is also possible to pass an error check function as the third argument.\n * If provided, this function will be used to determine whether to wrap the\n * error or not.  This is done because there are some errors that we never want\n * to give our content code the opportunity to recover from.  By default only\n * UnauthorizedErrors are treated as definitely unrecoverable.\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause}\n * @example\n * try {\n *   doSomething()\n * } catch (error) {\n *   throw contentError('MyErrorName', error)\n * }\n *\n * @example\n * throw contentError('MyErrorName', 'my message')\n */\nexport function contentError(\n  name: string,\n  error: unknown,\n  unrecoverableErrorCheck: ErrorCheck = isAuthorizationError,\n): unknown {\n  if (unrecoverableErrorCheck(error)) {\n    return error\n  }\n  return new ContentError(name, error)\n}\n\nexport function isErrorLike(error: unknown): error is ErrorLike {\n  return (\n    typeof error === 'object' &&\n    error !== null &&\n    'name' in error &&\n    'message' in error &&\n    typeof error.name === 'string' &&\n    typeof error.message === 'string'\n  )\n}\n\nfunction hasStatusCode(obj: unknown): obj is { statusCode: number } {\n  return (\n    !!obj &&\n    typeof obj === 'object' &&\n    obj.hasOwnProperty('statusCode') &&\n    typeof (obj as { statusCode: unknown }).statusCode === 'number'\n  )\n}\n\n/**\n * This is used to decide if a \"network error\" (Apollo term) can be retried.\n * We follow the ky logic for this, which says that any failed request (also\n * called a \"network error\", but meaning a fetch request that didn't resolve),\n * as well as certain 4xx and 5xx server errors can be.\n */\nexport function isApolloNetworkErrorRetryable(error: unknown): boolean {\n  return (\n    isNetworkError(error) ||\n    (hasStatusCode(error) &&\n      [408, 413, 429, 500, 502, 503, 504].includes(error.statusCode))\n  )\n}\n","import { assert } from '@ember/debug'\n\nexport default function formatDueDate(date: Date): string {\n  const dateOfMonth = date.getDate()\n  const dayOfWeek = {\n    0: 'Sunday',\n    1: 'Monday',\n    2: 'Tuesday',\n    3: 'Wednesday',\n    4: 'Thursday',\n    5: 'Friday',\n    6: 'Saturday',\n  }[date.getDay()]\n  const month = {\n    0: 'January',\n    1: 'February',\n    2: 'March',\n    3: 'April',\n    4: 'May',\n    5: 'June',\n    6: 'July',\n    7: 'August',\n    8: 'September',\n    9: 'October',\n    10: 'November',\n    11: 'December',\n  }[date.getMonth()]\n\n  assert('dayOfWeek must be a string', typeof dayOfWeek === 'string')\n  assert('month must be a string', typeof month === 'string')\n\n  return `${dayOfWeek}, ${dateOfMonth.toString()} ${month}`\n}\n","import { max } from 'lodash'\nimport type StudentProgressService from 'mathseeds-client/services/student-progress'\n\nexport type MentalMinuteLessonSetId =\n  | 'addition_subtraction'\n  | 'multiplication_division'\n\nexport function getLatestLessonSetUpdatedAt(\n  progress: StudentProgressService['mentalMinute'],\n) {\n  const updatedAtDates = (\n    [\n      'addition_subtraction',\n      'multiplication_division',\n    ] as MentalMinuteLessonSetId[]\n  ).map((lessonSetId) => getLessonSetUpdatedAt(progress, lessonSetId))\n  return max(updatedAtDates)\n}\n\nexport function getLessonSetUpdatedAt(\n  progress: StudentProgressService['mentalMinute'],\n  lessonSetId: MentalMinuteLessonSetId,\n) {\n  const updatedAt = progress.results.updated_at[lessonSetId]\n  if (!updatedAt) return undefined\n  const updatedAtNumber = Number(updatedAt)\n  return Number.isNaN(updatedAtNumber) ? undefined : updatedAtNumber\n}\n","/**\n * Marks a given transition as needing a refresh on completion\n *\n * @param {Transition} transition\n * @returns {Transition} the transition that was passed in, marked as needing a\n *   refresh\n */\nexport function setShouldRefresh(transition) {\n  transition.data.reload = true\n  return transition\n}\n\n/**\n * Indicates whether a given transition has been marked as needing a refresh on\n * completion\n *\n * @param {Transition} transition\n * @returns {Boolean} true if the transition has been marked as needing a refresh\n */\nexport function getShouldRefresh(transition) {\n  return Boolean(transition.data.reload)\n}\n","/**\n * @param {RouteInfo} routeInfo\n * @param {String} routeInfo.name\n */\nexport const isMentalMinuteLessonRoute = ({ name }) =>\n  name === 'mental-minute-sets.lessons.lesson'\n\n/**\n * @param {RouteInfo} routeInfo\n * @returns {Number|undefined}\n */\nexport const mentalMinuteLessonIdFromRouteInfo = (routeInfo) => {\n  const lessonId = routeInfo.find(isMentalMinuteLessonRoute)?.params?.lesson_id\n  return lessonId ? Number(lessonId) : undefined\n}\n","/**\n * This util is designed to be used in conjuntion with the hidden-print-container component.\n */\nexport default async function printImage(url: string): Promise<void> {\n  const hiddenPrintContainerId = 'hidden-print-container'\n\n  const printContainer = document.querySelector(`div#${hiddenPrintContainerId}`)\n  if (!printContainer) throw new Error('Missing print container element')\n\n  while (printContainer.firstChild) {\n    printContainer.firstChild.remove()\n  }\n\n  const hiddenImage = document.createElement('img')\n  hiddenImage.src = url\n\n  const printPromise = new Promise<void>((resolve, reject) => {\n    hiddenImage.onload = () => {\n      /**\n       * This (ugly but functional) timeout is the most reliable way to ensure that Safari prints a fully rendered certificate.\n       * The following didn't work:\n       * -------------------------------\n       * await hiddenImage.decode()\n       * resolve()\n       * window.print()\n       * -------------------------------\n       * hiddenImage.decoding = 'sync' // Tried on it's own and incombination with the above\n       * -------------------------------\n       * requestAnimationFrame(() => {\n       *  requestAnimationFrame(() => {\n       *    resolve()\n       *    window.print()\n       *  })\n       * })\n       * -------------------------------\n       */\n      setTimeout(() => {\n        resolve()\n        const hiddenPrintImage = document.querySelector(`div#${hiddenPrintContainerId} > img`)\n        if (hiddenPrintImage === hiddenImage) window.print()\n      }, 500)\n    }\n    hiddenImage.onerror = () => {\n      reject(new Error('Failed to load image'))\n    }\n  })\n\n  printContainer.appendChild(hiddenImage)\n\n  return printPromise\n}\n","/**\n * Calculate the map which a lesson belongs to\n */\nexport function calculateMap(lesson: number, lessonsPerMap: number) {\n  const lessonId = Math.max(1, lesson)\n  return Math.ceil(lessonId / lessonsPerMap)\n}\n","import type { StudentItemsFragmentFragment } from 'mathseeds-client/graphql/graphql'\n\ntype ItemData = StudentItemsFragmentFragment['items'][number]\n\ntype SetPositionFn = (\n  code: string,\n  room: string | null,\n  roomGroup: number | null,\n  roomGroupIndex: number | null,\n) => Promise<void>\n\nexport class StudentItem {\n  _data: ItemData\n  private _setPosition: SetPositionFn\n\n  constructor(data: ItemData, setPosition: SetPositionFn) {\n    this._data = data\n    this._setPosition = setPosition\n  }\n\n  get detached() {\n    return !this._data.room\n  }\n\n  getDetached() {\n    return this.detached\n  }\n\n  get room() {\n    return this._data.room\n  }\n\n  getRoom() {\n    return this.room\n  }\n\n  get roomGroup() {\n    return this._data.roomGroup\n  }\n\n  getRoomGroup() {\n    return this.roomGroup\n  }\n\n  get roomGroupIndex() {\n    return this._data.roomGroupIndex\n  }\n\n  getRoomGroupIndex() {\n    return this.roomGroupIndex\n  }\n\n  get imageUrl() {\n    return this._data.imageUrl\n  }\n\n  getImageUrl() {\n    return this.imageUrl\n  }\n\n  get audioUrl() {\n    return this._data.audioUrl\n  }\n\n  getAudioUrl() {\n    return this.audioUrl\n  }\n\n  get animationUrl() {\n    return this._data.animationUrl\n  }\n\n  getAnimationUrl() {\n    return this.animationUrl\n  }\n\n  get animationJson() {\n    return this._data.animationJson\n  }\n\n  getAnimationJson() {\n    return this.animationJson\n  }\n\n  get footprint() {\n    return this._data.footprint\n  }\n\n  getFootprint() {\n    return this.footprint\n  }\n\n  get name() {\n    return this._data.code\n  }\n\n  getName() {\n    return this.name\n  }\n\n  get kind() {\n    return this._data.kind\n  }\n\n  getKind() {\n    return this.kind\n  }\n\n  async setPosition(\n    room: string | null,\n    roomGroup: 'wallpaper' | number | null,\n    roomGroupIndex: number | null,\n  ) {\n    const rg = typeof roomGroup === 'string' ? null : roomGroup\n    this._data = { ...this._data, room, roomGroup: rg, roomGroupIndex }\n    await this._setPosition(this._data.code, room, rg, roomGroupIndex)\n  }\n}\n","import ENV from 'mathseeds-client/config/environment'\n\nfunction _apiResource(resource) {\n  return `${ENV.APP.apiEndpoint ?? '/'}${ENV.APP.apiNamespace}/${resource}`\n}\n\nconst UrlMaker = {\n  urlForArcadeHighScore(_student, gameId) {\n    return _apiResource(`arcade/high_scores/${gameId}`)\n  },\n\n  urlForMiniGameHighScore(gameId) {\n    return `/api/v2/minigames_scores/${gameId}`\n  },\n\n  caperTomfooleryActivityUrl(locale, path) {\n    const { assetHosts, releaseSha } = ENV.contentLoader.caper\n\n    const baseUrl = new URL(\n      `/mathseeds/releases/${releaseSha}/data/${locale}/${path}.json`,\n      assetHosts.code,\n    )\n    return baseUrl.href\n  },\n}\n\nexport default UrlMaker\n","define('mathseeds-client/config/environment', [], function() {\n  var prefix = 'mathseeds-client';\ntry {\n  var metaName = prefix + '/config/environment';\n  var rawConfig = document.querySelector('meta[name=\"' + metaName + '\"]').getAttribute('content');\n  var config = JSON.parse(decodeURIComponent(rawConfig));\n\n  var exports = { 'default': config };\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n  return exports;\n}\ncatch(err) {\n  throw new Error('Could not read config from meta tag with name \"' + metaName + '\".');\n}\n\n});\n","\n          if (!runningTests) {\n            require(\"mathseeds-client/app\")[\"default\"].create({\"product\":\"maths\",\"emberGitSha\":\"abc\",\"lastMap\":40,\"timeOnTask\":{\"apiNamespace\":\"api/v1\",\"routeTaskIds\":{\"arcade\":[\"arcade\"],\"avatar\":[\"avatar\"],\"awards\":[\"awards\"],\"driving_tests\":[\"driving-tests\"],\"dashboard\":[\"index\"],\"my_lessons\":[\"lesson\",\"map.quiz\",\"map.index\"],\"mental_minute\":[\"mental-minute\",\"mental-minute-sets\"],\"playroom\":[\"playroom\"],\"shop\":[\"shop\"],\"treehouse\":[\"treehouse\"]}},\"apiNamespace\":\"api/v2\",\"assetHost\":\"https://assets.static.readingeggs.com\",\"certificateHost\":\"https://certificates.blake-staging.com\",\"apollo\":{\"connectToDevTools\":true},\"enableMessengerLogging\":true});\n          }\n        \n"],"mappings":"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"}