├── .gitattributes
├── .github
└── PULL_REQUEST_TEMPLATE.md
├── .gitignore
├── CONTRIBUTING
├── License.txt
├── README.md
├── androidsvg
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── caverock
│ │ └── androidsvg
│ │ ├── CSSParser.java
│ │ ├── IntegerParser.java
│ │ ├── LibConfig.java
│ │ ├── NumberParser.java
│ │ ├── PreserveAspectRatio.java
│ │ ├── SVG.java
│ │ ├── SVGAndroidRenderer.java
│ │ ├── SVGExternalFileResolver.java
│ │ ├── SVGImageView.java
│ │ ├── SVGParseException.java
│ │ ├── SVGParser.java
│ │ └── SimpleAssetResolver.java
│ └── res
│ └── values
│ └── attrs.xml
├── app
├── .gitignore
├── build.gradle
├── google-services.json
├── libs
│ └── flexbox-release.aar
├── proguard-rules-dev.pro
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── org
│ │ ├── stepic
│ │ └── droid
│ │ │ └── ui
│ │ │ └── activities
│ │ │ └── LoginActivityTest.java
│ │ └── stepik
│ │ └── android
│ │ ├── cache
│ │ └── base
│ │ │ └── database
│ │ │ └── MigrationFrameworkTest.kt
│ │ └── view
│ │ └── auth
│ │ └── ui
│ │ └── activity
│ │ ├── AuthSampleTest.kt
│ │ ├── CredentialAuthScreen.kt
│ │ └── SocialAuthScreen.kt
│ ├── debug
│ ├── assets
│ │ └── configs
│ │ │ ├── config_dev.json
│ │ │ ├── config_production.json
│ │ │ └── config_release.json
│ ├── java
│ │ └── org
│ │ │ ├── stepic
│ │ │ └── droid
│ │ │ │ ├── configuration
│ │ │ │ ├── EndpointInfo.kt
│ │ │ │ ├── EndpointInfoFactory.kt
│ │ │ │ └── EndpointResolverImpl.kt
│ │ │ │ └── util
│ │ │ │ └── DebugToolsHelper.kt
│ │ │ └── stepik
│ │ │ └── android
│ │ │ ├── domain
│ │ │ └── debug
│ │ │ │ ├── interactor
│ │ │ │ ├── DebugInteractor.kt
│ │ │ │ ├── InAppPurchasesInteractor.kt
│ │ │ │ └── SplitTestsInteractor.kt
│ │ │ │ └── model
│ │ │ │ ├── DebugSettings.kt
│ │ │ │ ├── EndpointConfig.kt
│ │ │ │ └── SplitTestData.kt
│ │ │ ├── presentation
│ │ │ └── debug
│ │ │ │ ├── DebugFeature.kt
│ │ │ │ ├── DebugViewModel.kt
│ │ │ │ ├── InAppPurchasesFeature.kt
│ │ │ │ ├── InAppPurchasesViewModel.kt
│ │ │ │ ├── SplitTestsFeature.kt
│ │ │ │ ├── SplitTestsViewModel.kt
│ │ │ │ ├── dispatcher
│ │ │ │ ├── DebugActionDispatcher.kt
│ │ │ │ ├── InAppPurchasesActionDispatcher.kt
│ │ │ │ └── SplitTestsActionDispatcher.kt
│ │ │ │ └── reducer
│ │ │ │ ├── DebugReducer.kt
│ │ │ │ ├── InAppPurchasesReducer.kt
│ │ │ │ └── SplitTestsReducer.kt
│ │ │ └── view
│ │ │ ├── debug
│ │ │ └── ui
│ │ │ │ ├── activity
│ │ │ │ └── InAppPurchasesActivity.kt
│ │ │ │ ├── adapter
│ │ │ │ └── delegate
│ │ │ │ │ ├── InAppPurchaseAdapterDelegate.kt
│ │ │ │ │ └── SplitTestDataAdapterDelegate.kt
│ │ │ │ ├── dialog
│ │ │ │ └── SplitTestsDialogFragment.kt
│ │ │ │ └── fragment
│ │ │ │ ├── DebugFragment.kt
│ │ │ │ └── DebugMenu.kt
│ │ │ └── injection
│ │ │ └── debug
│ │ │ ├── DebugComponent.kt
│ │ │ ├── DebugPresentationModule.kt
│ │ │ ├── InAppPurchasesComponent.kt
│ │ │ ├── InAppPurchasesPresentationModule.kt
│ │ │ ├── SplitTestsComponent.kt
│ │ │ └── SplitTestsPresentationModule.kt
│ └── res
│ │ └── layout
│ │ ├── activity_in_app_purchases.xml
│ │ ├── fragment_debug.xml
│ │ └── item_in_app_purchase.xml
│ ├── main
│ ├── AndroidManifest.xml
│ ├── assets
│ │ ├── allAnimations
│ │ │ ├── firstAnimation.json
│ │ │ ├── fourthAnimation.json
│ │ │ ├── secondAnimation.json
│ │ │ └── thirdAnimation.json
│ │ ├── configs
│ │ │ └── config.json
│ │ ├── css
│ │ │ ├── base-style-night.css
│ │ │ ├── base-style.css
│ │ │ ├── hljs-night.css
│ │ │ ├── hljs.css
│ │ │ └── wysiwyg.css
│ │ ├── fonts
│ │ │ ├── pt_mono.ttf
│ │ │ ├── roboto_bold.ttf
│ │ │ ├── roboto_bolditalic.ttf
│ │ │ ├── roboto_italic.ttf
│ │ │ ├── roboto_light.ttf
│ │ │ ├── roboto_medium.ttf
│ │ │ └── roboto_regular.ttf
│ │ ├── images
│ │ │ └── vector
│ │ │ │ └── achievements
│ │ │ │ ├── active_days_streak
│ │ │ │ ├── 1.svg
│ │ │ │ ├── 2.svg
│ │ │ │ └── 3.svg
│ │ │ │ ├── certificates_distinction_count
│ │ │ │ ├── 1.svg
│ │ │ │ ├── 2.svg
│ │ │ │ ├── 3.svg
│ │ │ │ └── 4.svg
│ │ │ │ ├── certificates_regular_count
│ │ │ │ ├── 1.svg
│ │ │ │ ├── 2.svg
│ │ │ │ ├── 3.svg
│ │ │ │ └── 4.svg
│ │ │ │ ├── code_quizzes_solved_cpp
│ │ │ │ ├── 1.svg
│ │ │ │ ├── 2.svg
│ │ │ │ ├── 3.svg
│ │ │ │ ├── 4.svg
│ │ │ │ ├── 5.svg
│ │ │ │ └── 6.svg
│ │ │ │ ├── code_quizzes_solved_java
│ │ │ │ ├── 1.svg
│ │ │ │ ├── 2.svg
│ │ │ │ ├── 3.svg
│ │ │ │ ├── 4.svg
│ │ │ │ ├── 5.svg
│ │ │ │ └── 6.svg
│ │ │ │ ├── code_quizzes_solved_python
│ │ │ │ ├── 1.svg
│ │ │ │ ├── 2.svg
│ │ │ │ ├── 3.svg
│ │ │ │ ├── 4.svg
│ │ │ │ ├── 5.svg
│ │ │ │ └── 6.svg
│ │ │ │ ├── course_reviews_count
│ │ │ │ ├── 1.svg
│ │ │ │ ├── 2.svg
│ │ │ │ └── 3.svg
│ │ │ │ ├── ic_empty_achievement.svg
│ │ │ │ ├── steps_solved
│ │ │ │ ├── 1.svg
│ │ │ │ ├── 2.svg
│ │ │ │ ├── 3.svg
│ │ │ │ ├── 4.svg
│ │ │ │ ├── 5.svg
│ │ │ │ └── 6.svg
│ │ │ │ ├── steps_solved_choice
│ │ │ │ ├── 1.svg
│ │ │ │ ├── 2.svg
│ │ │ │ ├── 3.svg
│ │ │ │ ├── 4.svg
│ │ │ │ ├── 5.svg
│ │ │ │ └── 6.svg
│ │ │ │ ├── steps_solved_code
│ │ │ │ ├── 1.svg
│ │ │ │ ├── 2.svg
│ │ │ │ ├── 3.svg
│ │ │ │ ├── 4.svg
│ │ │ │ ├── 5.svg
│ │ │ │ └── 6.svg
│ │ │ │ ├── steps_solved_number
│ │ │ │ ├── 1.svg
│ │ │ │ ├── 2.svg
│ │ │ │ ├── 3.svg
│ │ │ │ ├── 4.svg
│ │ │ │ ├── 5.svg
│ │ │ │ └── 6.svg
│ │ │ │ └── steps_solved_streak
│ │ │ │ ├── 1.svg
│ │ │ │ ├── 2.svg
│ │ │ │ ├── 3.svg
│ │ │ │ ├── 4.svg
│ │ │ │ ├── 5.svg
│ │ │ │ └── 6.svg
│ │ ├── katex
│ │ │ ├── auto-render.min.js
│ │ │ ├── fonts
│ │ │ │ ├── KaTeX_AMS-Regular.ttf
│ │ │ │ ├── KaTeX_Caligraphic-Bold.ttf
│ │ │ │ ├── KaTeX_Caligraphic-Regular.ttf
│ │ │ │ ├── KaTeX_Fraktur-Bold.ttf
│ │ │ │ ├── KaTeX_Fraktur-Regular.ttf
│ │ │ │ ├── KaTeX_Main-Bold.ttf
│ │ │ │ ├── KaTeX_Main-BoldItalic.ttf
│ │ │ │ ├── KaTeX_Main-Italic.ttf
│ │ │ │ ├── KaTeX_Main-Regular.ttf
│ │ │ │ ├── KaTeX_Math-BoldItalic.ttf
│ │ │ │ ├── KaTeX_Math-Italic.ttf
│ │ │ │ ├── KaTeX_Math-Regular.ttf
│ │ │ │ ├── KaTeX_SansSerif-Bold.ttf
│ │ │ │ ├── KaTeX_SansSerif-Italic.ttf
│ │ │ │ ├── KaTeX_SansSerif-Regular.ttf
│ │ │ │ ├── KaTeX_Script-Regular.ttf
│ │ │ │ ├── KaTeX_Size1-Regular.ttf
│ │ │ │ ├── KaTeX_Size2-Regular.ttf
│ │ │ │ ├── KaTeX_Size3-Regular.ttf
│ │ │ │ ├── KaTeX_Size4-Regular.ttf
│ │ │ │ └── KaTeX_Typewriter-Regular.ttf
│ │ │ ├── katex.min.css
│ │ │ └── katex.min.js
│ │ ├── scripts
│ │ │ └── highlight.pack.js
│ │ └── web
│ │ │ └── images
│ │ │ ├── arrow_left.svg
│ │ │ ├── arrow_right.svg
│ │ │ └── cube-scan.svg
│ ├── java
│ │ └── org
│ │ │ ├── stepic
│ │ │ └── droid
│ │ │ │ ├── adaptive
│ │ │ │ ├── listeners
│ │ │ │ │ ├── AdaptiveReactionListener.kt
│ │ │ │ │ └── AnswerListener.kt
│ │ │ │ ├── math
│ │ │ │ │ └── LinearRegression.java
│ │ │ │ ├── model
│ │ │ │ │ ├── AdaptiveStatsTabs.kt
│ │ │ │ │ ├── AdaptiveWeekProgress.kt
│ │ │ │ │ ├── Card.kt
│ │ │ │ │ └── LocalExpItem.kt
│ │ │ │ ├── ui
│ │ │ │ │ ├── activities
│ │ │ │ │ │ ├── AdaptiveCourseActivity.kt
│ │ │ │ │ │ ├── AdaptiveOnboardingActivity.kt
│ │ │ │ │ │ └── AdaptiveStatsActivity.kt
│ │ │ │ │ ├── adapters
│ │ │ │ │ │ ├── AdaptiveRatingAdapter.kt
│ │ │ │ │ │ ├── AdaptiveStatsViewPagerAdapter.kt
│ │ │ │ │ │ ├── AdaptiveWeeksAdapter.kt
│ │ │ │ │ │ ├── OnboardingQuizCardsAdapter.kt
│ │ │ │ │ │ ├── QuizCardViewHolder.kt
│ │ │ │ │ │ └── QuizCardsAdapter.kt
│ │ │ │ │ ├── animations
│ │ │ │ │ │ ├── CardAnimations.java
│ │ │ │ │ │ ├── RecommendationsFragmentAnimations.kt
│ │ │ │ │ │ └── SupportViewPropertyAnimator.kt
│ │ │ │ │ ├── custom
│ │ │ │ │ │ ├── CardScrollView.kt
│ │ │ │ │ │ ├── QuizCardsContainer.java
│ │ │ │ │ │ ├── SwipeableLayout.java
│ │ │ │ │ │ ├── container
│ │ │ │ │ │ │ ├── ContainerAdapter.kt
│ │ │ │ │ │ │ └── ContainerView.java
│ │ │ │ │ │ └── morphing
│ │ │ │ │ │ │ ├── GradientDrawableWrapper.kt
│ │ │ │ │ │ │ ├── MorphingAnimation.kt
│ │ │ │ │ │ │ ├── MorphingHelper.kt
│ │ │ │ │ │ │ └── MorphingView.kt
│ │ │ │ │ ├── dialogs
│ │ │ │ │ │ └── AdaptiveLevelDialogFragment.kt
│ │ │ │ │ └── fragments
│ │ │ │ │ │ ├── AdaptiveOnboardingFragment.kt
│ │ │ │ │ │ ├── AdaptiveProgressFragment.kt
│ │ │ │ │ │ ├── AdaptiveRatingFragment.kt
│ │ │ │ │ │ └── RecommendationsFragment.kt
│ │ │ │ └── util
│ │ │ │ │ ├── AdaptiveCoursesResolver.kt
│ │ │ │ │ ├── ExpHelper.kt
│ │ │ │ │ └── RatingNamesGenerator.kt
│ │ │ │ ├── analytic
│ │ │ │ ├── AmplitudeAnalytic.kt
│ │ │ │ ├── Analytic.java
│ │ │ │ ├── AnalyticImpl.kt
│ │ │ │ ├── BranchParams.kt
│ │ │ │ ├── LoginInteractionType.kt
│ │ │ │ ├── StepikAnalytic.kt
│ │ │ │ ├── StepikAnalyticImpl.kt
│ │ │ │ └── experiments
│ │ │ │ │ ├── CoursePurchaseWebviewSplitTest.kt
│ │ │ │ │ ├── DeferredAuthSplitTest.kt
│ │ │ │ │ ├── DiscountButtonAppearanceSplitTest.kt
│ │ │ │ │ ├── OnboardingSplitTestVersion2.kt
│ │ │ │ │ ├── SplitTest.kt
│ │ │ │ │ └── SplitTestsHolder.kt
│ │ │ │ ├── base
│ │ │ │ ├── App.kt
│ │ │ │ ├── Client.kt
│ │ │ │ ├── ClientImpl.kt
│ │ │ │ ├── FragmentActivityBase.java
│ │ │ │ ├── FragmentBase.kt
│ │ │ │ ├── ListenerContainer.kt
│ │ │ │ ├── ListenerContainerImpl.kt
│ │ │ │ └── SingleFragmentActivity.kt
│ │ │ │ ├── code
│ │ │ │ ├── data
│ │ │ │ │ ├── AutocompleteContainer.kt
│ │ │ │ │ ├── AutocompleteDictionary.kt
│ │ │ │ │ └── AutocompleteState.kt
│ │ │ │ ├── highlight
│ │ │ │ │ ├── ParserContainer.kt
│ │ │ │ │ ├── prettify
│ │ │ │ │ │ ├── PrettifyParser.java
│ │ │ │ │ │ ├── lang
│ │ │ │ │ │ │ ├── Lang.java
│ │ │ │ │ │ │ ├── LangAppollo.java
│ │ │ │ │ │ │ ├── LangBasic.java
│ │ │ │ │ │ │ ├── LangClj.java
│ │ │ │ │ │ │ ├── LangDart.java
│ │ │ │ │ │ │ ├── LangErlang.java
│ │ │ │ │ │ │ ├── LangGo.java
│ │ │ │ │ │ │ ├── LangHs.java
│ │ │ │ │ │ │ ├── LangKotlin.java
│ │ │ │ │ │ │ ├── LangLisp.java
│ │ │ │ │ │ │ ├── LangLlvm.java
│ │ │ │ │ │ │ ├── LangLua.java
│ │ │ │ │ │ │ ├── LangMatlab.java
│ │ │ │ │ │ │ ├── LangMl.java
│ │ │ │ │ │ │ ├── LangMumps.java
│ │ │ │ │ │ │ ├── LangN.java
│ │ │ │ │ │ │ ├── LangPascal.java
│ │ │ │ │ │ │ ├── LangProto.java
│ │ │ │ │ │ │ ├── LangR.java
│ │ │ │ │ │ │ ├── LangRd.java
│ │ │ │ │ │ │ ├── LangScala.java
│ │ │ │ │ │ │ ├── LangSql.java
│ │ │ │ │ │ │ ├── LangTcl.java
│ │ │ │ │ │ │ ├── LangTex.java
│ │ │ │ │ │ │ ├── LangVb.java
│ │ │ │ │ │ │ ├── LangVhdl.java
│ │ │ │ │ │ │ ├── LangXq.java
│ │ │ │ │ │ │ └── LangYaml.java
│ │ │ │ │ │ └── parser
│ │ │ │ │ │ │ ├── CombinePrefixPattern.java
│ │ │ │ │ │ │ ├── Job.java
│ │ │ │ │ │ │ ├── Prettify.java
│ │ │ │ │ │ │ └── Util.java
│ │ │ │ │ ├── syntaxhighlight
│ │ │ │ │ │ ├── ParseResult.java
│ │ │ │ │ │ └── Parser.java
│ │ │ │ │ └── themes
│ │ │ │ │ │ ├── CodeSyntax.kt
│ │ │ │ │ │ ├── CodeTheme.kt
│ │ │ │ │ │ └── Presets.kt
│ │ │ │ ├── ui
│ │ │ │ │ ├── CodeAnalyzer.kt
│ │ │ │ │ ├── CodeEditor.kt
│ │ │ │ │ └── CodeEditorLayout.kt
│ │ │ │ └── util
│ │ │ │ │ └── CodeToolbarUtil.kt
│ │ │ │ ├── concurrency
│ │ │ │ ├── HandlerBaseDelegate.kt
│ │ │ │ ├── IHandler.kt
│ │ │ │ ├── MainHandler.kt
│ │ │ │ ├── MainHandlerAnalyticImpl.kt
│ │ │ │ ├── MainHandlerImpl.kt
│ │ │ │ └── SingleThreadExecutor.kt
│ │ │ │ ├── configuration
│ │ │ │ ├── Config.java
│ │ │ │ ├── ConfigImpl.kt
│ │ │ │ ├── EndpointResolver.kt
│ │ │ │ ├── RemoteConfig.kt
│ │ │ │ └── analytic
│ │ │ │ │ ├── AdaptiveBackendUrlUserProperty.kt
│ │ │ │ │ ├── AdaptiveCoursesUserProperty.kt
│ │ │ │ │ ├── CoursePurchaseFlowProperty.kt
│ │ │ │ │ ├── CourseRevenueAvailableUserProperty.kt
│ │ │ │ │ ├── LocalSubmissionsEnabledUserProperty.kt
│ │ │ │ │ ├── MinDelayRateDialogUserProperty.kt
│ │ │ │ │ ├── NewHomeScreenEnabledUserProperty.kt
│ │ │ │ │ ├── PersonalizedOnboardingCourseListsUserProperty.kt
│ │ │ │ │ ├── SearchQueryParamsUserProperty.kt
│ │ │ │ │ └── ShowStreakDialogAfterLoginUserProperty.kt
│ │ │ │ ├── core
│ │ │ │ ├── ComponentManager.kt
│ │ │ │ ├── ComponentManagerImpl.kt
│ │ │ │ ├── DeadlineType.kt
│ │ │ │ ├── DefaultFilter.kt
│ │ │ │ ├── DefaultFilterImpl.kt
│ │ │ │ ├── GoogleApiChecker.kt
│ │ │ │ ├── GoogleApiCheckerImpl.kt
│ │ │ │ ├── HasComponent.java
│ │ │ │ ├── LessonSessionManager.kt
│ │ │ │ ├── LocalLessonSessionManagerImpl.kt
│ │ │ │ ├── PerFragment.java
│ │ │ │ ├── ProgressHandler.java
│ │ │ │ ├── ScreenManager.java
│ │ │ │ ├── ScreenManagerImpl.java
│ │ │ │ ├── ShareHelper.kt
│ │ │ │ ├── ShareHelperImpl.kt
│ │ │ │ ├── StepikDevicePoster.kt
│ │ │ │ ├── StepikDevicePosterImpl.kt
│ │ │ │ ├── StepikLogoutManager.kt
│ │ │ │ ├── earlystreak
│ │ │ │ │ ├── EarlyStreakPosterImpl.kt
│ │ │ │ │ └── contract
│ │ │ │ │ │ ├── EarlyStreakListener.kt
│ │ │ │ │ │ └── EarlyStreakPoster.kt
│ │ │ │ ├── internetstate
│ │ │ │ │ ├── InternetEnabledPosterImpl.kt
│ │ │ │ │ └── contract
│ │ │ │ │ │ ├── InternetEnabledListener.kt
│ │ │ │ │ │ └── InternetEnabledPoster.kt
│ │ │ │ └── presenters
│ │ │ │ │ ├── AdaptiveProgressPresenter.kt
│ │ │ │ │ ├── AdaptiveRatingPresenter.kt
│ │ │ │ │ ├── CardPresenter.kt
│ │ │ │ │ ├── HomeStreakPresenter.kt
│ │ │ │ │ ├── NotificationListPresenter.kt
│ │ │ │ │ ├── PresenterBase.kt
│ │ │ │ │ ├── PresenterContract.kt
│ │ │ │ │ ├── PresenterWithPotentialLeak.kt
│ │ │ │ │ ├── ProfileMainFeedPresenter.kt
│ │ │ │ │ ├── RecommendationsPresenter.kt
│ │ │ │ │ ├── SearchSuggestionsPresenter.kt
│ │ │ │ │ ├── SplashPresenter.kt
│ │ │ │ │ ├── StoreManagementPresenter.kt
│ │ │ │ │ └── contracts
│ │ │ │ │ ├── AdaptiveProgressView.kt
│ │ │ │ │ ├── AdaptiveRatingView.kt
│ │ │ │ │ ├── CardView.kt
│ │ │ │ │ ├── HomeStreakView.kt
│ │ │ │ │ ├── NotificationListView.kt
│ │ │ │ │ ├── ProfileMainFeedView.kt
│ │ │ │ │ ├── RecommendationsView.kt
│ │ │ │ │ ├── SearchSuggestionsView.kt
│ │ │ │ │ ├── SplashView.kt
│ │ │ │ │ ├── StoreManagementView.kt
│ │ │ │ │ └── TextFeedbackView.kt
│ │ │ │ ├── di
│ │ │ │ ├── AppCoreComponent.kt
│ │ │ │ ├── AppCoreModule.kt
│ │ │ │ ├── AppSingleton.kt
│ │ │ │ ├── ConfigModule.kt
│ │ │ │ ├── FirebaseModule.kt
│ │ │ │ ├── GoogleModule.kt
│ │ │ │ ├── NotificationModule.kt
│ │ │ │ ├── NotificationsBadgesModule.kt
│ │ │ │ ├── RecentActiveCourseModule.kt
│ │ │ │ ├── RemoteMessageHandlersModule.kt
│ │ │ │ ├── adaptive
│ │ │ │ │ ├── AdaptiveCourseComponent.kt
│ │ │ │ │ ├── AdaptiveCourseModule.kt
│ │ │ │ │ └── AdaptiveCourseScope.kt
│ │ │ │ ├── analytic
│ │ │ │ │ └── AnalyticModule.kt
│ │ │ │ ├── course_general
│ │ │ │ │ └── CourseEnrollmentBusModule.kt
│ │ │ │ ├── home
│ │ │ │ │ ├── HomeComponent.kt
│ │ │ │ │ └── HomeScope.kt
│ │ │ │ ├── mainscreen
│ │ │ │ │ ├── MainScreenComponent.kt
│ │ │ │ │ └── MainScreenScope.kt
│ │ │ │ ├── notifications
│ │ │ │ │ ├── NotificationsComponent.kt
│ │ │ │ │ └── NotificationsScope.kt
│ │ │ │ ├── qualifiers
│ │ │ │ │ ├── BackgroundScheduler.kt
│ │ │ │ │ ├── CourseId.kt
│ │ │ │ │ ├── MainScheduler.kt
│ │ │ │ │ ├── PersistenceProgressStatusMapper.kt
│ │ │ │ │ ├── PersonalOffersScheduler.kt
│ │ │ │ │ └── WishlistScheduler.kt
│ │ │ │ ├── splash
│ │ │ │ │ ├── SplashComponent.kt
│ │ │ │ │ └── SplashScope.kt
│ │ │ │ └── storage
│ │ │ │ │ ├── StorageComponent.kt
│ │ │ │ │ ├── StorageModule.kt
│ │ │ │ │ └── StorageSingleton.kt
│ │ │ │ ├── features
│ │ │ │ ├── achievements
│ │ │ │ │ └── service
│ │ │ │ │ │ └── AchievementsNotificationService.kt
│ │ │ │ └── stories
│ │ │ │ │ ├── mapper
│ │ │ │ │ └── StoryTemplatesMapper.kt
│ │ │ │ │ ├── model
│ │ │ │ │ ├── FeedbackStoryPart.kt
│ │ │ │ │ ├── PlainTextWithButtonStoryPart.kt
│ │ │ │ │ └── ViewedStoryTemplate.kt
│ │ │ │ │ ├── repository
│ │ │ │ │ ├── StoryTemplatesRepository.kt
│ │ │ │ │ └── StoryTemplatesRepositoryImpl.kt
│ │ │ │ │ ├── storage
│ │ │ │ │ ├── dao
│ │ │ │ │ │ └── ViewedStoryTemplatesDaoImpl.kt
│ │ │ │ │ └── structure
│ │ │ │ │ │ └── DbStructureViewedStoryTemplates.kt
│ │ │ │ │ └── ui
│ │ │ │ │ ├── activity
│ │ │ │ │ └── StoriesActivity.kt
│ │ │ │ │ ├── adapter
│ │ │ │ │ └── StoriesAdapter.kt
│ │ │ │ │ └── delegate
│ │ │ │ │ ├── FeedbackStoryPartDelegate.kt
│ │ │ │ │ ├── PlainTextWithButtonStoryPartDelegate.kt
│ │ │ │ │ └── StoriesActivityDelegate.kt
│ │ │ │ ├── jsonHelpers
│ │ │ │ ├── adapters
│ │ │ │ │ ├── CodeOptionsAdapterFactory.kt
│ │ │ │ │ └── UTCDateAdapter.kt
│ │ │ │ ├── deserializers
│ │ │ │ │ ├── DatasetDeserializer.kt
│ │ │ │ │ ├── FeedbackDeserializer.kt
│ │ │ │ │ └── ReplyDeserializer.java
│ │ │ │ └── serializers
│ │ │ │ │ └── ReplySerializer.java
│ │ │ │ ├── model
│ │ │ │ ├── AchievementNotification.kt
│ │ │ │ ├── BlockPersistentWrapper.kt
│ │ │ │ ├── CertificateListItem.kt
│ │ │ │ ├── CollectionDescriptionColors.kt
│ │ │ │ ├── Credentials.kt
│ │ │ │ ├── CurrentStreakExtended.kt
│ │ │ │ ├── Device.kt
│ │ │ │ ├── LessonSession.kt
│ │ │ │ ├── NotificationCategory.kt
│ │ │ │ ├── OnboardingType.kt
│ │ │ │ ├── Option.kt
│ │ │ │ ├── RemoteLastStep.kt
│ │ │ │ ├── SearchQuery.kt
│ │ │ │ ├── StepikFilter.kt
│ │ │ │ ├── ViewedNotification.kt
│ │ │ │ └── code
│ │ │ │ │ └── ProgrammingLanguage.kt
│ │ │ │ ├── notifications
│ │ │ │ ├── BlockNotificationIntervalProvider.kt
│ │ │ │ ├── NotificationActionsHelper.kt
│ │ │ │ ├── NotificationBroadcastReceiver.kt
│ │ │ │ ├── NotificationTimeChecker.kt
│ │ │ │ ├── NotificationTimeCheckerImpl.kt
│ │ │ │ ├── StepicFcmListenerService.kt
│ │ │ │ ├── badges
│ │ │ │ │ ├── NotificationsBadgesListener.kt
│ │ │ │ │ ├── NotificationsBadgesLogoutPoster.kt
│ │ │ │ │ └── NotificationsBadgesManager.kt
│ │ │ │ ├── handlers
│ │ │ │ │ ├── AchievementsRemoteMessageHandler.kt
│ │ │ │ │ └── RemoteMessageHandler.kt
│ │ │ │ └── model
│ │ │ │ │ ├── Notification.kt
│ │ │ │ │ ├── NotificationStatuses.kt
│ │ │ │ │ ├── RetentionNotificationType.kt
│ │ │ │ │ └── StepikNotificationChannel.kt
│ │ │ │ ├── persistence
│ │ │ │ ├── content
│ │ │ │ │ ├── StepContentResolver.kt
│ │ │ │ │ ├── StepContentResolverImpl.kt
│ │ │ │ │ └── processors
│ │ │ │ │ │ ├── ImageStepContentProcessor.kt
│ │ │ │ │ │ ├── StepContentProcessor.kt
│ │ │ │ │ │ └── VideoStepContentProcessor.kt
│ │ │ │ ├── di
│ │ │ │ │ ├── ContentModule.kt
│ │ │ │ │ ├── DownloadInteractorsModule.kt
│ │ │ │ │ ├── FSLock.kt
│ │ │ │ │ ├── PersistenceModule.kt
│ │ │ │ │ ├── PersistenceScope.kt
│ │ │ │ │ ├── ProgressProvidersModule.kt
│ │ │ │ │ └── StructureResolversModule.kt
│ │ │ │ ├── downloads
│ │ │ │ │ ├── DownloadErrorPoster.kt
│ │ │ │ │ ├── DownloadTaskManager.kt
│ │ │ │ │ ├── DownloadTaskManagerImpl.kt
│ │ │ │ │ ├── DownloadsSyncronizer.kt
│ │ │ │ │ ├── helpers
│ │ │ │ │ │ ├── AddDownloadTaskHelper.kt
│ │ │ │ │ │ ├── AddDownloadTaskHelperImpl.kt
│ │ │ │ │ │ ├── RemoveDownloadTaskHelper.kt
│ │ │ │ │ │ └── RemoveDownloadTaskHelperImpl.kt
│ │ │ │ │ ├── interactor
│ │ │ │ │ │ ├── DownloadInteractor.kt
│ │ │ │ │ │ ├── DownloadInteractorBase.kt
│ │ │ │ │ │ └── RemovalDownloadsInteractor.kt
│ │ │ │ │ ├── progress
│ │ │ │ │ │ ├── CourseDownloadProgressProvider.kt
│ │ │ │ │ │ ├── DownloadProgressProvider.kt
│ │ │ │ │ │ ├── DownloadProgressProviderBase.kt
│ │ │ │ │ │ ├── ProgressHelper.kt
│ │ │ │ │ │ ├── SectionDownloadProgressProvider.kt
│ │ │ │ │ │ ├── UnitDownloadProgressProvider.kt
│ │ │ │ │ │ └── mapper
│ │ │ │ │ │ │ ├── DownloadProgressStatusMapper.kt
│ │ │ │ │ │ │ └── DownloadProgressStatusMapperImpl.kt
│ │ │ │ │ └── resolvers
│ │ │ │ │ │ ├── DownloadTitleResolver.kt
│ │ │ │ │ │ ├── DownloadTitleResolverImpl.kt
│ │ │ │ │ │ └── structure
│ │ │ │ │ │ ├── CourseStructureResolverImpl.kt
│ │ │ │ │ │ ├── SectionStructureResolver.kt
│ │ │ │ │ │ ├── StepStructureResolver.kt
│ │ │ │ │ │ ├── StepStructureResolverImpl.kt
│ │ │ │ │ │ ├── StructureResolver.kt
│ │ │ │ │ │ ├── UnitStructureResolver.kt
│ │ │ │ │ │ └── UnitStructureResolverImpl.kt
│ │ │ │ ├── files
│ │ │ │ │ ├── ExternalStorageManager.kt
│ │ │ │ │ └── ExternalStorageManagerImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── DownloadConfiguration.kt
│ │ │ │ │ ├── DownloadItem.kt
│ │ │ │ │ ├── DownloadProgress.kt
│ │ │ │ │ ├── DownloadRequest.kt
│ │ │ │ │ ├── DownloadTask.kt
│ │ │ │ │ ├── PersistentItem.kt
│ │ │ │ │ ├── PersistentState.kt
│ │ │ │ │ ├── StepPersistentWrapper.kt
│ │ │ │ │ ├── StorageLocation.kt
│ │ │ │ │ ├── Structure.kt
│ │ │ │ │ └── SystemDownloadRecord.kt
│ │ │ │ ├── providers
│ │ │ │ │ └── GenericFileProvider.kt
│ │ │ │ ├── repository
│ │ │ │ │ └── DownloadsRepositoryImpl.kt
│ │ │ │ ├── service
│ │ │ │ │ ├── DownloadCompleteReceiver.kt
│ │ │ │ │ ├── DownloadCompleteService.kt
│ │ │ │ │ └── FileTransferService.kt
│ │ │ │ └── storage
│ │ │ │ │ ├── PersistentItemObserver.kt
│ │ │ │ │ ├── PersistentItemObserverImpl.kt
│ │ │ │ │ ├── PersistentStateManager.kt
│ │ │ │ │ ├── PersistentStateManagerImpl.kt
│ │ │ │ │ ├── dao
│ │ │ │ │ ├── PersistentItemDao.kt
│ │ │ │ │ ├── PersistentItemDaoImpl.kt
│ │ │ │ │ ├── PersistentStateDao.kt
│ │ │ │ │ ├── PersistentStateDaoImpl.kt
│ │ │ │ │ ├── SystemDownloadsDao.kt
│ │ │ │ │ └── SystemDownloadsDaoImpl.kt
│ │ │ │ │ └── structure
│ │ │ │ │ ├── DBStructurePersistentItem.kt
│ │ │ │ │ └── DBStructurePersistentState.kt
│ │ │ │ ├── preferences
│ │ │ │ ├── SharedPreferenceHelper.java
│ │ │ │ ├── UserPreferences.java
│ │ │ │ └── VideoPlaybackRate.kt
│ │ │ │ ├── receivers
│ │ │ │ ├── DownloadClickReceiver.kt
│ │ │ │ ├── InternetConnectionEnabledReceiver.java
│ │ │ │ ├── InternetConnectionStateListener.kt
│ │ │ │ └── InternetConnectionStateNotifier.kt
│ │ │ │ ├── services
│ │ │ │ └── NotificationsViewPusher.kt
│ │ │ │ ├── social
│ │ │ │ └── SocialMedia.kt
│ │ │ │ ├── storage
│ │ │ │ ├── dao
│ │ │ │ │ ├── AdaptiveExpDao.kt
│ │ │ │ │ ├── AdaptiveExpDaoImpl.kt
│ │ │ │ │ ├── AssignmentDaoImpl.kt
│ │ │ │ │ ├── BlockDaoImpl.kt
│ │ │ │ │ ├── CourseDaoImpl.kt
│ │ │ │ │ ├── CourseReviewSummaryDaoImpl.kt
│ │ │ │ │ ├── CourseReviewsDaoImpl.kt
│ │ │ │ │ ├── DaoBase.java
│ │ │ │ │ ├── IDao.kt
│ │ │ │ │ ├── LastStepDaoImpl.kt
│ │ │ │ │ ├── LessonDaoImpl.kt
│ │ │ │ │ ├── NotificationDaoImpl.java
│ │ │ │ │ ├── ProgressDaoImpl.kt
│ │ │ │ │ ├── SearchQueryDao.kt
│ │ │ │ │ ├── SearchQueryDaoImpl.kt
│ │ │ │ │ ├── SectionDaoImpl.kt
│ │ │ │ │ ├── SectionDateEventDaoImpl.kt
│ │ │ │ │ ├── StepDaoImpl.kt
│ │ │ │ │ ├── UnitDaoImpl.kt
│ │ │ │ │ ├── VideoTimestampDaoImpl.kt
│ │ │ │ │ ├── ViewAssignmentDaoImpl.java
│ │ │ │ │ └── ViewedNotificationsQueueDaoImpl.kt
│ │ │ │ ├── migration
│ │ │ │ │ ├── LegacyDatabaseMigrations.java
│ │ │ │ │ ├── MigrationFrom33To34.kt
│ │ │ │ │ ├── MigrationFrom34To35.kt
│ │ │ │ │ ├── MigrationFrom35To36.kt
│ │ │ │ │ ├── MigrationFrom36To37.kt
│ │ │ │ │ ├── MigrationFrom37To38.kt
│ │ │ │ │ ├── MigrationFrom38To39.kt
│ │ │ │ │ ├── MigrationFrom39To40.kt
│ │ │ │ │ ├── MigrationFrom40To41.kt
│ │ │ │ │ ├── MigrationFrom41To42.kt
│ │ │ │ │ ├── MigrationFrom42To43.kt
│ │ │ │ │ ├── MigrationFrom43To44.kt
│ │ │ │ │ ├── MigrationFrom44To45.kt
│ │ │ │ │ ├── MigrationFrom45To46.kt
│ │ │ │ │ ├── MigrationFrom46To47.kt
│ │ │ │ │ ├── MigrationFrom47To48.kt
│ │ │ │ │ ├── MigrationFrom48To49.kt
│ │ │ │ │ ├── MigrationFrom49To50.kt
│ │ │ │ │ ├── MigrationFrom50To51.kt
│ │ │ │ │ ├── MigrationFrom51To52.kt
│ │ │ │ │ ├── MigrationFrom52To53.kt
│ │ │ │ │ ├── MigrationFrom53To54.kt
│ │ │ │ │ ├── MigrationFrom54To55.kt
│ │ │ │ │ ├── MigrationFrom55To56.kt
│ │ │ │ │ ├── MigrationFrom56To57.kt
│ │ │ │ │ ├── MigrationFrom57To58.kt
│ │ │ │ │ ├── MigrationFrom58To59.kt
│ │ │ │ │ ├── MigrationFrom59To60.kt
│ │ │ │ │ ├── MigrationFrom60To61.kt
│ │ │ │ │ ├── MigrationFrom61To62.kt
│ │ │ │ │ ├── MigrationFrom62To63.kt
│ │ │ │ │ ├── MigrationFrom63To64.kt
│ │ │ │ │ ├── MigrationFrom64To65.kt
│ │ │ │ │ ├── MigrationFrom65To66.kt
│ │ │ │ │ ├── MigrationFrom66To67.kt
│ │ │ │ │ ├── MigrationFrom67To68.kt
│ │ │ │ │ ├── MigrationFrom68To69.kt
│ │ │ │ │ ├── MigrationFrom69To70.kt
│ │ │ │ │ ├── MigrationFrom70To71.kt
│ │ │ │ │ ├── MigrationFrom71To72.kt
│ │ │ │ │ ├── MigrationFrom72To73.kt
│ │ │ │ │ ├── MigrationFrom73To74.kt
│ │ │ │ │ ├── MigrationFrom74To75.kt
│ │ │ │ │ ├── MigrationFrom75To76.kt
│ │ │ │ │ ├── MigrationFrom76To77.kt
│ │ │ │ │ ├── MigrationFrom77To78.kt
│ │ │ │ │ ├── MigrationFrom78To79.kt
│ │ │ │ │ ├── MigrationFrom79To80.kt
│ │ │ │ │ ├── MigrationFrom80To81.kt
│ │ │ │ │ └── Migrations.kt
│ │ │ │ ├── operations
│ │ │ │ │ ├── DatabaseFacade.kt
│ │ │ │ │ ├── DatabaseOperations.kt
│ │ │ │ │ ├── DatabaseOperationsImpl.kt
│ │ │ │ │ └── ResultHandler.java
│ │ │ │ └── structure
│ │ │ │ │ ├── DbStructureAdaptiveExp.kt
│ │ │ │ │ ├── DbStructureAssignment.java
│ │ │ │ │ ├── DbStructureBlock.kt
│ │ │ │ │ ├── DbStructureCachedVideo.java
│ │ │ │ │ ├── DbStructureCalendarSection.java
│ │ │ │ │ ├── DbStructureCertificateViewItem.java
│ │ │ │ │ ├── DbStructureCourse.kt
│ │ │ │ │ ├── DbStructureCourseList.kt
│ │ │ │ │ ├── DbStructureEnrolledAndFeaturedCourses.java
│ │ │ │ │ ├── DbStructureLastStep.kt
│ │ │ │ │ ├── DbStructureLesson.java
│ │ │ │ │ ├── DbStructureNotification.java
│ │ │ │ │ ├── DbStructureProgress.kt
│ │ │ │ │ ├── DbStructureSearchQuery.kt
│ │ │ │ │ ├── DbStructureSections.kt
│ │ │ │ │ ├── DbStructureSharedDownloads.java
│ │ │ │ │ ├── DbStructureStep.java
│ │ │ │ │ ├── DbStructureUnit.java
│ │ │ │ │ ├── DbStructureVideoTimestamp.java
│ │ │ │ │ ├── DbStructureVideoUrl.kt
│ │ │ │ │ ├── DbStructureViewQueue.java
│ │ │ │ │ └── DbStructureViewedNotificationsQueue.kt
│ │ │ │ ├── ui
│ │ │ │ ├── activities
│ │ │ │ │ ├── AboutAppActivity.kt
│ │ │ │ │ ├── AnimatedOnboardingActivity.kt
│ │ │ │ │ ├── BackToExitActivityBase.kt
│ │ │ │ │ ├── BackToExitActivityWithSmartLockBase.kt
│ │ │ │ │ ├── FeedbackActivity.kt
│ │ │ │ │ ├── MainFeedActivity.kt
│ │ │ │ │ ├── NotificationSettingsActivity.kt
│ │ │ │ │ ├── PhotoViewActivity.kt
│ │ │ │ │ ├── SmartLockActivityBase.kt
│ │ │ │ │ ├── SplashActivity.kt
│ │ │ │ │ ├── StoreManagementActivity.kt
│ │ │ │ │ └── contracts
│ │ │ │ │ │ ├── CloseButtonInToolbar.kt
│ │ │ │ │ │ ├── OnNextClickedListener.kt
│ │ │ │ │ │ └── RootScreen.kt
│ │ │ │ ├── adapters
│ │ │ │ │ ├── CodeToolbarAdapter.kt
│ │ │ │ │ ├── NotificationAdapter.java
│ │ │ │ │ ├── OnboardingAdapter.kt
│ │ │ │ │ ├── SearchQueriesAdapter.kt
│ │ │ │ │ ├── SocialAuthAdapter.java
│ │ │ │ │ ├── SocialLinksAdapter.kt
│ │ │ │ │ ├── StepFragmentAdapter.kt
│ │ │ │ │ └── StepikRadioGroupAdapter.kt
│ │ │ │ ├── custom
│ │ │ │ │ ├── ArrowImageView.kt
│ │ │ │ │ ├── AutoCompleteSearchView.kt
│ │ │ │ │ ├── BetterSwitch.java
│ │ │ │ │ ├── CircleProgressView.kt
│ │ │ │ │ ├── CustomFontURLSpan.kt
│ │ │ │ │ ├── ExpandableTextView.java
│ │ │ │ │ ├── LoadingView.kt
│ │ │ │ │ ├── OnboardingPageTransformer.kt
│ │ │ │ │ ├── PlaceholderTextView.kt
│ │ │ │ │ ├── RoundedBorderMaskView.kt
│ │ │ │ │ ├── SelectableTextView.kt
│ │ │ │ │ ├── StepikCheckBox.java
│ │ │ │ │ ├── StepikOptionView.java
│ │ │ │ │ ├── StepikRadioButton.java
│ │ │ │ │ ├── StepikRadioGroup.java
│ │ │ │ │ ├── StepikSlowViewPager.kt
│ │ │ │ │ ├── StepikSwipeRefreshLayout.kt
│ │ │ │ │ ├── StickyHeaderAdapter.kt
│ │ │ │ │ ├── StickyHeaderDecoration.kt
│ │ │ │ │ ├── TouchDispatchableFrameLayout.java
│ │ │ │ │ ├── WrapContentLinearLayoutManager.java
│ │ │ │ │ ├── control_bar
│ │ │ │ │ │ └── ControlBarView.kt
│ │ │ │ │ └── vertical_progress_bar
│ │ │ │ │ │ └── VerticalProgressBar.kt
│ │ │ │ ├── custom_exo
│ │ │ │ │ ├── AppCompatSeekTimeBar.kt
│ │ │ │ │ └── NavigationBarUtil.kt
│ │ │ │ ├── dialogs
│ │ │ │ │ ├── AllowMobileDataDialogFragment.kt
│ │ │ │ │ ├── CertificateShareDialog.java
│ │ │ │ │ ├── CertificateShareDialogFragment.java
│ │ │ │ │ ├── ChangeCodeLanguageDialog.kt
│ │ │ │ │ ├── ChooseStorageDialog.kt
│ │ │ │ │ ├── ClearVideosDialog.kt
│ │ │ │ │ ├── DiscardTextDialogFragment.kt
│ │ │ │ │ ├── LoadingProgressDialogFragment.kt
│ │ │ │ │ ├── LogoutAreYouSureDialog.kt
│ │ │ │ │ ├── MovingProgressDialogFragment.kt
│ │ │ │ │ ├── ProgrammingLanguageChooserDialogFragment.kt
│ │ │ │ │ ├── RemindPasswordDialogFragment.java
│ │ │ │ │ ├── ResetCodeDialogFragment.kt
│ │ │ │ │ ├── StepShareDialog.java
│ │ │ │ │ ├── StepShareDialogFragment.java
│ │ │ │ │ ├── TimeIntervalPickerDialogFragment.kt
│ │ │ │ │ ├── UnauthorizedDialogFragment.java
│ │ │ │ │ ├── VideoQualityDetailedDialog.kt
│ │ │ │ │ ├── VideoQualityDialog.kt
│ │ │ │ │ ├── VideoQualityDialogBase.kt
│ │ │ │ │ ├── VideoQualityDialogInPlayer.kt
│ │ │ │ │ └── WantMoveDataDialog.kt
│ │ │ │ ├── fragments
│ │ │ │ │ ├── AboutAppFragment.kt
│ │ │ │ │ ├── FeedbackFragment.kt
│ │ │ │ │ ├── HomeFragment.kt
│ │ │ │ │ ├── NotificationListFragment.java
│ │ │ │ │ ├── NotificationSettingsFragment.kt
│ │ │ │ │ ├── NotificationsFragment.java
│ │ │ │ │ ├── OnboardingFragment.kt
│ │ │ │ │ └── StoreManagementFragment.kt
│ │ │ │ ├── listeners
│ │ │ │ │ ├── OnItemClickListener.kt
│ │ │ │ │ └── OnRootTouchedListener.java
│ │ │ │ ├── quiz
│ │ │ │ │ ├── ChoiceQuizDelegate.kt
│ │ │ │ │ ├── NotSupportedQuizDelegate.kt
│ │ │ │ │ ├── NumberQuizDelegate.kt
│ │ │ │ │ ├── QuizDelegate.kt
│ │ │ │ │ └── StringQuizDelegate.kt
│ │ │ │ └── util
│ │ │ │ │ ├── CloseIconHolder.kt
│ │ │ │ │ ├── ContextMenuRecyclerView.java
│ │ │ │ │ ├── CoursesSnapHelper.kt
│ │ │ │ │ ├── GridSpacesItemDecoration.java
│ │ │ │ │ ├── KeyboardHelper.kt
│ │ │ │ │ ├── PopupHelper.kt
│ │ │ │ │ ├── StartSnapHelper.java
│ │ │ │ │ ├── TimeIntervalUtil.kt
│ │ │ │ │ ├── ToolbarHelper.kt
│ │ │ │ │ ├── VerticalScrollingBehavior.java
│ │ │ │ │ └── ViewExtensions.kt
│ │ │ │ ├── util
│ │ │ │ ├── AndroidDeviceUtil.kt
│ │ │ │ ├── AndroidDevices.java
│ │ │ │ ├── AppConstants.java
│ │ │ │ ├── AtomicBooleanExtension.kt
│ │ │ │ ├── ColorUtil.kt
│ │ │ │ ├── CompatibilityExtensions.kt
│ │ │ │ ├── ContextExtensions.kt
│ │ │ │ ├── CourseExtensions.kt
│ │ │ │ ├── CursorExtensions.kt
│ │ │ │ ├── DateExtensions.kt
│ │ │ │ ├── DateTimeHelper.kt
│ │ │ │ ├── DbParseHelper.kt
│ │ │ │ ├── DeviceInfoUtil.java
│ │ │ │ ├── DisplayUtils.java
│ │ │ │ ├── EditTextExtensions.kt
│ │ │ │ ├── FileExtensions.kt
│ │ │ │ ├── FloatExtensions.kt
│ │ │ │ ├── FragmentManagerExtensions.kt
│ │ │ │ ├── HtmlHelper.java
│ │ │ │ ├── IntentExtensions.kt
│ │ │ │ ├── JsonExtensions.kt
│ │ │ │ ├── KotlinUtil.kt
│ │ │ │ ├── LoginInteractionTypeUtil.kt
│ │ │ │ ├── MonadUtil.kt
│ │ │ │ ├── NetworkExtensions.kt
│ │ │ │ ├── NotificationChannelInitializer.kt
│ │ │ │ ├── NumberExtensions.kt
│ │ │ │ ├── PermissionExtensions.kt
│ │ │ │ ├── ProgressHelper.java
│ │ │ │ ├── RWLocks.java
│ │ │ │ ├── RatingUtil.kt
│ │ │ │ ├── RxUtil.kt
│ │ │ │ ├── SectionExtensions.kt
│ │ │ │ ├── StepExtensions.kt
│ │ │ │ ├── StepikUtil.kt
│ │ │ │ ├── StringExtensions.kt
│ │ │ │ ├── StringUtil.java
│ │ │ │ ├── SuppressFBWarnings.kt
│ │ │ │ ├── TextUtil.kt
│ │ │ │ ├── TextViewUtil.kt
│ │ │ │ ├── ValidatorUtil.java
│ │ │ │ ├── VideoQualityExtension.kt
│ │ │ │ ├── resolvers
│ │ │ │ │ ├── StepTypeResolver.kt
│ │ │ │ │ ├── StepTypeResolverImpl.java
│ │ │ │ │ ├── VideoUrlQualityHelper.kt
│ │ │ │ │ └── text
│ │ │ │ │ │ ├── NotificationTextResolver.kt
│ │ │ │ │ │ ├── OlLiTagHandler.java
│ │ │ │ │ │ ├── TextResolver.java
│ │ │ │ │ │ ├── TextResolverImpl.kt
│ │ │ │ │ │ └── TextResult.kt
│ │ │ │ └── rx
│ │ │ │ │ └── ObservableReduceMap.kt
│ │ │ │ └── web
│ │ │ │ └── storage
│ │ │ │ └── model
│ │ │ │ ├── StorageRecord.kt
│ │ │ │ └── StorageRecordWrapped.kt
│ │ │ └── stepik
│ │ │ └── android
│ │ │ ├── cache
│ │ │ ├── analytic
│ │ │ │ ├── AnalyticCacheDataSourceImpl.kt
│ │ │ │ ├── converter
│ │ │ │ │ └── JsonElementConverter.kt
│ │ │ │ ├── dao
│ │ │ │ │ └── AnalyticDao.kt
│ │ │ │ ├── model
│ │ │ │ │ └── AnalyticLocalEvent.kt
│ │ │ │ └── structure
│ │ │ │ │ └── DbStructureAnalytic.kt
│ │ │ ├── announcement
│ │ │ │ ├── AnnouncementCacheDataSourceImpl.kt
│ │ │ │ └── dao
│ │ │ │ │ └── AnnouncementDao.kt
│ │ │ ├── assignment
│ │ │ │ ├── AssignmentCacheDataSourceImpl.kt
│ │ │ │ └── structure
│ │ │ │ │ └── DbStructureAssignment.kt
│ │ │ ├── attempt
│ │ │ │ ├── AttemptCacheDataSourceImpl.kt
│ │ │ │ ├── dao
│ │ │ │ │ └── AttemptDaoImpl.kt
│ │ │ │ └── structure
│ │ │ │ │ └── DbStructureAttempt.kt
│ │ │ ├── base
│ │ │ │ ├── database
│ │ │ │ │ ├── AnalyticDatabase.kt
│ │ │ │ │ ├── AnalyticDatabaseInfo.kt
│ │ │ │ │ └── AppDatabase.kt
│ │ │ │ └── mapper
│ │ │ │ │ ├── CollectionConverter.kt
│ │ │ │ │ └── DateConverter.kt
│ │ │ ├── block
│ │ │ │ └── structure
│ │ │ │ │ └── DbStructureBlock.kt
│ │ │ ├── calendar
│ │ │ │ └── CalendarCacheDataSourceImpl.kt
│ │ │ ├── catalog
│ │ │ │ ├── CatalogCacheDataSourceImpl.kt
│ │ │ │ ├── dao
│ │ │ │ │ └── CatalogBlockDao.kt
│ │ │ │ └── mapper
│ │ │ │ │ ├── CatalogBlockContentSerializer.kt
│ │ │ │ │ └── CatalogBlockContentTypeConverter.kt
│ │ │ ├── certificates
│ │ │ │ ├── dao
│ │ │ │ │ └── CertificateDaoImpl.kt
│ │ │ │ ├── source
│ │ │ │ │ └── CertificateCacheDataSourceImpl.kt
│ │ │ │ └── structure
│ │ │ │ │ └── DbStructureCertificate.kt
│ │ │ ├── code_preference
│ │ │ │ ├── CodePreferenceCacheDataSourceImpl.kt
│ │ │ │ ├── dao
│ │ │ │ │ └── CodePreferenceDao.kt
│ │ │ │ └── model
│ │ │ │ │ └── CodePreference.kt
│ │ │ ├── comment_banner
│ │ │ │ └── structure
│ │ │ │ │ └── DbStructureCommentBanner.kt
│ │ │ ├── course
│ │ │ │ └── source
│ │ │ │ │ ├── CourseCacheDataSourceImpl.kt
│ │ │ │ │ ├── CourseReviewSummaryCacheDataSourceImpl.kt
│ │ │ │ │ ├── EnrollmentCacheDataSourceImpl.kt
│ │ │ │ │ └── structure
│ │ │ │ │ └── DbStructureCourseReviewSummary.kt
│ │ │ ├── course_calendar
│ │ │ │ ├── CourseCalendarDataSourceImpl.kt
│ │ │ │ └── structure
│ │ │ │ │ └── DbStructureSectionDateEvent.kt
│ │ │ ├── course_collection
│ │ │ │ ├── CourseCollectionCacheDataSourceImpl.kt
│ │ │ │ ├── dao
│ │ │ │ │ └── CourseCollectionDaoImpl.kt
│ │ │ │ └── structure
│ │ │ │ │ └── DbStructureCourseCollection.kt
│ │ │ ├── course_list
│ │ │ │ ├── CourseListQueryCacheDataSourceImpl.kt
│ │ │ │ ├── dao
│ │ │ │ │ └── CourseListQueryDaoImpl.kt
│ │ │ │ └── structure
│ │ │ │ │ └── DbStructureCourseListQuery.kt
│ │ │ ├── course_payments
│ │ │ │ ├── CoursePaymentsCacheDataSourceImpl.kt
│ │ │ │ ├── dao
│ │ │ │ │ └── CoursePaymentsDaoImpl.kt
│ │ │ │ └── structure
│ │ │ │ │ └── DbStructureCoursePayments.kt
│ │ │ ├── course_purchase
│ │ │ │ ├── BillingPurchasePayloadCacheDataSourceImpl.kt
│ │ │ │ └── dao
│ │ │ │ │ └── BillingPurchasePayloadDao.kt
│ │ │ ├── course_recommendations
│ │ │ │ ├── CourseRecommendationsCacheDataSourceImpl.kt
│ │ │ │ └── dao
│ │ │ │ │ └── CourseRecommendationsDao.kt
│ │ │ ├── course_reviews
│ │ │ │ ├── CourseReviewsCacheDataSourceImpl.kt
│ │ │ │ └── structure
│ │ │ │ │ └── DbStructureCourseReview.kt
│ │ │ ├── discussion_thread
│ │ │ │ ├── DiscussionThreadCacheDataSourceImpl.kt
│ │ │ │ ├── dao
│ │ │ │ │ └── DiscussionThreadDaoImpl.kt
│ │ │ │ └── structure
│ │ │ │ │ └── DbStructureDiscussionThread.kt
│ │ │ ├── download
│ │ │ │ ├── DownloadCacheDataSourceImpl.kt
│ │ │ │ └── dao
│ │ │ │ │ ├── DownloadedCoursesDao.java
│ │ │ │ │ └── DownloadedCoursesDaoImpl.kt
│ │ │ ├── email_address
│ │ │ │ └── EmailAddressCacheDataSourceImpl.kt
│ │ │ ├── exam_session
│ │ │ │ ├── ExamSessionCacheDataSourceImpl.kt
│ │ │ │ └── dao
│ │ │ │ │ └── ExamSessionDao.kt
│ │ │ ├── feedback
│ │ │ │ └── FeedbackCacheDataSourceImpl.kt
│ │ │ ├── last_step
│ │ │ │ └── LastStepCacheDataSourceImpl.kt
│ │ │ ├── lesson
│ │ │ │ ├── LessonCacheDataSourceImpl.kt
│ │ │ │ └── structure
│ │ │ │ │ └── DbStructureLesson.kt
│ │ │ ├── mobile_tiers
│ │ │ │ ├── LightSkuCacheDataSourceImpl.kt
│ │ │ │ ├── MobileTiersCacheDataSourceImpl.kt
│ │ │ │ └── dao
│ │ │ │ │ ├── LightSkuDao.kt
│ │ │ │ │ └── MobileTiersDao.kt
│ │ │ ├── network
│ │ │ │ ├── NetworkTypeCacheDataSourceImpl.kt
│ │ │ │ └── tracker
│ │ │ │ │ └── NetworkStateTracker.kt
│ │ │ ├── notification
│ │ │ │ └── NotificationCacheDataSourceImpl.kt
│ │ │ ├── personal_deadlines
│ │ │ │ ├── DeadlinesBannerCacheDataSourceImpl.kt
│ │ │ │ ├── DeadlinesCacheDataSourceImpl.kt
│ │ │ │ ├── dao
│ │ │ │ │ ├── DeadlinesBannerDao.java
│ │ │ │ │ ├── DeadlinesBannerDaoImpl.kt
│ │ │ │ │ ├── PersonalDeadlinesDao.kt
│ │ │ │ │ └── PersonalDeadlinesDaoImpl.kt
│ │ │ │ ├── mapper
│ │ │ │ │ └── DeadlineEntityMapper.kt
│ │ │ │ ├── model
│ │ │ │ │ └── DeadlineEntity.kt
│ │ │ │ └── structure
│ │ │ │ │ ├── DbStructureDeadlines.kt
│ │ │ │ │ └── DbStructureDeadlinesBanner.kt
│ │ │ ├── proctor_session
│ │ │ │ ├── ProctorSessionCacheDataSourceImpl.kt
│ │ │ │ └── dao
│ │ │ │ │ └── ProctorSessionDao.kt
│ │ │ ├── profile
│ │ │ │ └── ProfileCacheDataSourceImpl.kt
│ │ │ ├── progress
│ │ │ │ └── ProgressCacheDataSourceImpl.kt
│ │ │ ├── purchase_notification
│ │ │ │ ├── PurchaseNotificationCacheDataSourceImpl.kt
│ │ │ │ ├── dao
│ │ │ │ │ ├── PurchaseNotificationDao.kt
│ │ │ │ │ └── PurchaseNotificationDaoImpl.kt
│ │ │ │ └── structure
│ │ │ │ │ └── DbStructurePurchaseNotification.kt
│ │ │ ├── review_instruction
│ │ │ │ ├── ReviewInstructionCacheDataSourceImpl.kt
│ │ │ │ ├── dao
│ │ │ │ │ └── ReviewInstructionDao.kt
│ │ │ │ └── mapper
│ │ │ │ │ └── ReviewStrategyTypeConverter.kt
│ │ │ ├── review_session
│ │ │ │ ├── ReviewSessionCacheDataSourceImpl.kt
│ │ │ │ └── dao
│ │ │ │ │ └── ReviewSessionDao.kt
│ │ │ ├── rubric
│ │ │ │ └── dao
│ │ │ │ │ └── RubricDao.kt
│ │ │ ├── search
│ │ │ │ └── SearchCacheDataSourceImpl.kt
│ │ │ ├── section
│ │ │ │ ├── SectionCacheDataSourceImpl.kt
│ │ │ │ └── structure
│ │ │ │ │ └── DbStructureSection.kt
│ │ │ ├── social_profile
│ │ │ │ ├── SocialProfileCacheDataSourceImpl.kt
│ │ │ │ ├── dao
│ │ │ │ │ └── SocialProfileDaoImpl.kt
│ │ │ │ └── structure
│ │ │ │ │ └── DbStructureSocialProfile.kt
│ │ │ ├── step
│ │ │ │ ├── StepCacheDataSourceImpl.kt
│ │ │ │ └── structure
│ │ │ │ │ └── DbStructureStep.kt
│ │ │ ├── story
│ │ │ │ ├── StoryReactionCacheDataSourceImpl.kt
│ │ │ │ ├── dao
│ │ │ │ │ └── StoryReactionDao.kt
│ │ │ │ └── model
│ │ │ │ │ └── StoryReactionEntity.kt
│ │ │ ├── submission
│ │ │ │ ├── SubmissionCacheDataSourceImpl.kt
│ │ │ │ ├── dao
│ │ │ │ │ └── SubmissionDaoImpl.kt
│ │ │ │ └── structure
│ │ │ │ │ └── DbStructureSubmission.kt
│ │ │ ├── unit
│ │ │ │ ├── UnitCacheDataSourceImpl.kt
│ │ │ │ └── structure
│ │ │ │ │ └── DbStructureUnit.kt
│ │ │ ├── user
│ │ │ │ ├── UserCacheDataSourceImpl.kt
│ │ │ │ ├── dao
│ │ │ │ │ └── UserDaoImpl.kt
│ │ │ │ └── structure
│ │ │ │ │ └── DbStructureUser.kt
│ │ │ ├── user_courses
│ │ │ │ ├── UserCoursesCacheDataSourceImpl.kt
│ │ │ │ ├── dao
│ │ │ │ │ ├── UserCourseDao.kt
│ │ │ │ │ └── UserCourseDaoImpl.kt
│ │ │ │ └── structure
│ │ │ │ │ └── DbStructureUserCourse.kt
│ │ │ ├── video
│ │ │ │ ├── VideoCacheDataSourceImpl.kt
│ │ │ │ ├── dao
│ │ │ │ │ ├── VideoDao.kt
│ │ │ │ │ ├── VideoDaoImpl.kt
│ │ │ │ │ ├── VideoEntityDaoImpl.kt
│ │ │ │ │ └── VideoUrlEntityDaoImpl.kt
│ │ │ │ ├── mapper
│ │ │ │ │ └── VideoEntityMapper.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── VideoEntity.kt
│ │ │ │ │ └── VideoUrlEntity.kt
│ │ │ │ └── structure
│ │ │ │ │ ├── VideoDbScheme.kt
│ │ │ │ │ └── VideoUrlDbScheme.kt
│ │ │ ├── video_player
│ │ │ │ ├── VideoTimestampCacheDataSourceImpl.kt
│ │ │ │ └── model
│ │ │ │ │ └── VideoTimestamp.kt
│ │ │ ├── view_assignment
│ │ │ │ └── ViewAssignmentCacheDataSourceImpl.kt
│ │ │ ├── visited_courses
│ │ │ │ ├── VisitedCoursesCacheDataSourceImpl.kt
│ │ │ │ └── dao
│ │ │ │ │ └── VisitedCourseDao.kt
│ │ │ └── wishlist
│ │ │ │ ├── WishlistCacheDataSourceImpl.kt
│ │ │ │ └── dao
│ │ │ │ └── WishlistDao.kt
│ │ │ ├── data
│ │ │ ├── achievement
│ │ │ │ ├── repository
│ │ │ │ │ └── AchievementRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── AchievementRemoteDataSource.kt
│ │ │ ├── analytic
│ │ │ │ ├── mapper
│ │ │ │ │ └── AnalyticBatchMapper.kt
│ │ │ │ ├── repository
│ │ │ │ │ └── AnalyticRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── AnalyticCacheDataSource.kt
│ │ │ │ │ └── AnalyticRemoteDataSource.kt
│ │ │ ├── announcement
│ │ │ │ ├── repository
│ │ │ │ │ └── AnnouncementRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── AnnouncementCacheDataSource.kt
│ │ │ │ │ └── AnnouncementRemoteDataSource.kt
│ │ │ ├── assignment
│ │ │ │ ├── repository
│ │ │ │ │ └── AssignmentRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── AssignmentCacheDataSource.kt
│ │ │ │ │ └── AssignmentRemoteDataSource.kt
│ │ │ ├── attempt
│ │ │ │ ├── repository
│ │ │ │ │ └── AttemptRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── AttemptCacheDataSource.kt
│ │ │ │ │ └── AttemptRemoteDataSource.kt
│ │ │ ├── auth
│ │ │ │ ├── repository
│ │ │ │ │ └── AuthRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── AuthRemoteDataSource.kt
│ │ │ ├── base
│ │ │ │ └── repository
│ │ │ │ │ └── delegate
│ │ │ │ │ ├── ListRepositoryDelegate.kt
│ │ │ │ │ └── SingleRepositoryDelegate.kt
│ │ │ ├── calendar
│ │ │ │ ├── repository
│ │ │ │ │ └── CalendarRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── CalendarCacheDataSource.kt
│ │ │ ├── catalog
│ │ │ │ ├── repository
│ │ │ │ │ └── CatalogRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── CatalogCacheDataSource.kt
│ │ │ │ │ └── CatalogRemoteDataSource.kt
│ │ │ ├── certificate
│ │ │ │ ├── repository
│ │ │ │ │ └── CertificateRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── CertificateCacheDataSource.kt
│ │ │ │ │ └── CertificateRemoteDataSource.kt
│ │ │ ├── code_preference
│ │ │ │ ├── repository
│ │ │ │ │ └── CodePreferenceRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── CodePreferenceCacheDataSource.kt
│ │ │ ├── comment
│ │ │ │ ├── repository
│ │ │ │ │ └── CommentRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── CommentRemoteDataSource.kt
│ │ │ ├── course
│ │ │ │ ├── repository
│ │ │ │ │ ├── CoursePurchaseDataRepositoryImpl.kt
│ │ │ │ │ ├── CourseRepositoryImpl.kt
│ │ │ │ │ ├── CourseReviewSummaryRepositoryImpl.kt
│ │ │ │ │ └── EnrollmentRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── CourseCacheDataSource.kt
│ │ │ │ │ ├── CourseRemoteDataSource.kt
│ │ │ │ │ ├── CourseReviewSummaryCacheDataSource.kt
│ │ │ │ │ ├── CourseReviewSummaryRemoteDataSource.kt
│ │ │ │ │ ├── EnrollmentCacheDataSource.kt
│ │ │ │ │ └── EnrollmentRemoteDataSource.kt
│ │ │ ├── course_calendar
│ │ │ │ ├── repository
│ │ │ │ │ └── CourseCalendarRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── CourseCalendarCacheDataSource.kt
│ │ │ ├── course_collection
│ │ │ │ ├── repository
│ │ │ │ │ └── CourseCollectionRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── CourseCollectionCacheDataSource.kt
│ │ │ │ │ └── CourseCollectionRemoteDataSource.kt
│ │ │ ├── course_list
│ │ │ │ ├── model
│ │ │ │ │ └── CourseListQueryData.kt
│ │ │ │ └── source
│ │ │ │ │ └── CourseListQueryCacheDataSource.kt
│ │ │ ├── course_payments
│ │ │ │ ├── repository
│ │ │ │ │ └── CoursePaymentsRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── CoursePaymentsCacheDataSource.kt
│ │ │ │ │ └── CoursePaymentsRemoteDataSource.kt
│ │ │ ├── course_purchase
│ │ │ │ ├── repository
│ │ │ │ │ └── BillingPurchasePayloadRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── BillingPurchasePayloadCacheDataSource.kt
│ │ │ ├── course_recommendations
│ │ │ │ ├── repository
│ │ │ │ │ └── CourseRecommendationsRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── CourseRecommendationsCacheDataSource.kt
│ │ │ │ │ └── CourseRecommendationsRemoteDataSource.kt
│ │ │ ├── course_revenue
│ │ │ │ ├── repository
│ │ │ │ │ ├── CourseBeneficiariesRepositoryImpl.kt
│ │ │ │ │ ├── CourseBenefitByMonthsRepositoryImpl.kt
│ │ │ │ │ ├── CourseBenefitSummariesRepositoryImpl.kt
│ │ │ │ │ └── CourseBenefitsRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── CourseBeneficiariesRemoteDataSource.kt
│ │ │ │ │ ├── CourseBenefitByMonthsRemoteDataSource.kt
│ │ │ │ │ ├── CourseBenefitSummariesRemoteDataSource.kt
│ │ │ │ │ └── CourseBenefitsRemoteDataSource.kt
│ │ │ ├── course_reviews
│ │ │ │ ├── repository
│ │ │ │ │ └── CourseReviewsRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── CourseReviewsCacheDataSource.kt
│ │ │ │ │ └── CourseReviewsRemoteDataSource.kt
│ │ │ ├── device
│ │ │ │ ├── repository
│ │ │ │ │ └── DeviceRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── DeviceRemoteDataSource.kt
│ │ │ ├── discussion_proxy
│ │ │ │ ├── repository
│ │ │ │ │ └── DiscussionProxyRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── DiscussionProxyRemoteDataSource.kt
│ │ │ ├── discussion_thread
│ │ │ │ ├── repository
│ │ │ │ │ └── DiscussionThreadRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── DiscussionThreadCacheDataSource.kt
│ │ │ │ │ └── DiscussionThreadRemoteDataSource.kt
│ │ │ ├── download
│ │ │ │ ├── repository
│ │ │ │ │ └── DownloadRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── DownloadCacheDataSource.kt
│ │ │ ├── email_address
│ │ │ │ ├── repository
│ │ │ │ │ └── EmailAddressRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── EmailAddressCacheDataSource.kt
│ │ │ │ │ └── EmailAddressRemoteDataSource.kt
│ │ │ ├── exam_session
│ │ │ │ ├── repository
│ │ │ │ │ └── ExamSessionRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── ExamSessionCacheDataSource.kt
│ │ │ │ │ └── ExamSessionRemoteDataSource.kt
│ │ │ ├── feedback
│ │ │ │ ├── repository
│ │ │ │ │ └── FeedbackRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── FeedbackCacheDataSource.kt
│ │ │ ├── last_step
│ │ │ │ ├── repository
│ │ │ │ │ └── LastStepRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── LastStepCacheDataSource.kt
│ │ │ │ │ └── LastStepRemoteDataSource.kt
│ │ │ ├── lesson
│ │ │ │ ├── repository
│ │ │ │ │ └── LessonRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── LessonCacheDataSource.kt
│ │ │ │ │ └── LessonRemoteDataSource.kt
│ │ │ ├── magic_links
│ │ │ │ ├── repository
│ │ │ │ │ └── MagicLinksRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── MagicLinksRemoteDataSource.kt
│ │ │ ├── mobile_tiers
│ │ │ │ ├── repository
│ │ │ │ │ ├── LightSkuRepositoryImpl.kt
│ │ │ │ │ └── MobileTiersRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── LightSkuCacheDataSource.kt
│ │ │ │ │ ├── MobileTiersCacheDataSource.kt
│ │ │ │ │ └── MobileTiersRemoteDataSource.kt
│ │ │ ├── network
│ │ │ │ ├── repository
│ │ │ │ │ └── NetworkTypeRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── NetworkTypeCacheDataSource.kt
│ │ │ ├── notification
│ │ │ │ ├── repository
│ │ │ │ │ └── NotificationRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── NotificationCacheDataSource.kt
│ │ │ │ │ └── NotificationRemoteDataSource.kt
│ │ │ ├── personal_deadlines
│ │ │ │ ├── DeadlinesHelper.kt
│ │ │ │ ├── repository
│ │ │ │ │ ├── DeadlinesBannerRepositoryImpl.kt
│ │ │ │ │ └── DeadlinesRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── DeadlinesBannerCacheDataSource.kt
│ │ │ │ │ ├── DeadlinesCacheDataSource.kt
│ │ │ │ │ └── DeadlinesRemoteDataSource.kt
│ │ │ ├── personal_offers
│ │ │ │ ├── repository
│ │ │ │ │ └── PersonalOffersRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── PersonalOffersRemoteDataSource.kt
│ │ │ ├── proctor_session
│ │ │ │ ├── repository
│ │ │ │ │ └── ProctorSessionRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── ProctorSessionCacheDataSource.kt
│ │ │ │ │ └── ProctorSessionRemoteDataSource.kt
│ │ │ ├── profile
│ │ │ │ ├── repository
│ │ │ │ │ └── ProfileRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── ProfileCacheDataSource.kt
│ │ │ │ │ └── ProfileRemoteDataSource.kt
│ │ │ ├── progress
│ │ │ │ ├── repository
│ │ │ │ │ └── ProgressRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── ProgressCacheDataSource.kt
│ │ │ │ │ └── ProgressRemoteDataSource.kt
│ │ │ ├── purchase_notification
│ │ │ │ ├── model
│ │ │ │ │ └── PurchaseNotificationScheduled.kt
│ │ │ │ ├── repository
│ │ │ │ │ └── PurchaseNotificationRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── PurchaseNotificationCacheDataSource.kt
│ │ │ ├── rating
│ │ │ │ ├── repository
│ │ │ │ │ └── RatingRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── RatingRemoteDataSource.kt
│ │ │ ├── recommendation
│ │ │ │ ├── repository
│ │ │ │ │ └── RecommendationRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── RecommendationRemoteDataSource.kt
│ │ │ ├── review
│ │ │ │ ├── repository
│ │ │ │ │ └── ReviewRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── ReviewRemoteDataSource.kt
│ │ │ ├── review_instruction
│ │ │ │ ├── repository
│ │ │ │ │ └── ReviewInstructionRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── ReviewInstructionCacheDataSource.kt
│ │ │ │ │ └── ReviewInstructionRemoteDataSource.kt
│ │ │ ├── review_session
│ │ │ │ ├── repository
│ │ │ │ │ └── ReviewSessionRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── ReviewSessionCacheDataSource.kt
│ │ │ │ │ └── ReviewSessionRemoteDataSource.kt
│ │ │ ├── search
│ │ │ │ ├── repository
│ │ │ │ │ └── SearchRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── SearchCacheDataSource.kt
│ │ │ │ │ └── SearchRemoteDataSource.kt
│ │ │ ├── search_result
│ │ │ │ ├── repository
│ │ │ │ │ └── SearchResultRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── SearchResultRemoteDataSource.kt
│ │ │ ├── section
│ │ │ │ ├── repository
│ │ │ │ │ └── SectionRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── SectionCacheDataSource.kt
│ │ │ │ │ └── SectionRemoteDataSource.kt
│ │ │ ├── social_profile
│ │ │ │ ├── repository
│ │ │ │ │ └── SocialProfileRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── SocialProfileCacheDataSource.kt
│ │ │ │ │ └── SocialProfileRemoteDataSource.kt
│ │ │ ├── step
│ │ │ │ ├── repository
│ │ │ │ │ └── StepRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── StepCacheDataSource.kt
│ │ │ │ │ └── StepRemoteDataSource.kt
│ │ │ ├── step_source
│ │ │ │ ├── repository
│ │ │ │ │ └── StepSourceRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── StepSourceRemoteDataSource.kt
│ │ │ ├── stories
│ │ │ │ └── source
│ │ │ │ │ └── StoryTemplatesRemoteDataSource.kt
│ │ │ ├── story
│ │ │ │ ├── repository
│ │ │ │ │ └── StoryReactionRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── StoryReactionCacheDataSource.kt
│ │ │ ├── submission
│ │ │ │ ├── repository
│ │ │ │ │ └── SubmissionRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── SubmissionCacheDataSource.kt
│ │ │ │ │ └── SubmissionRemoteDataSource.kt
│ │ │ ├── unit
│ │ │ │ ├── repository
│ │ │ │ │ └── UnitRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── UnitCacheDataSource.kt
│ │ │ │ │ └── UnitRemoteDataSource.kt
│ │ │ ├── user
│ │ │ │ ├── repository
│ │ │ │ │ └── UserRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── UserCacheDataSource.kt
│ │ │ │ │ └── UserRemoteDataSource.kt
│ │ │ ├── user_activity
│ │ │ │ ├── repository
│ │ │ │ │ └── UserActivityRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── UserActivityRemoteDataSource.kt
│ │ │ ├── user_code_run
│ │ │ │ ├── repository
│ │ │ │ │ └── UserCodeRunRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── UserCodeRunRemoteDataSource.kt
│ │ │ ├── user_courses
│ │ │ │ ├── repository
│ │ │ │ │ └── UserCoursesRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── UserCoursesCacheDataSource.kt
│ │ │ │ │ └── UserCoursesRemoteDataSource.kt
│ │ │ ├── user_profile
│ │ │ │ ├── repository
│ │ │ │ │ └── UserProfileRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── UserProfileRemoteDataSource.kt
│ │ │ ├── video_player
│ │ │ │ ├── repository
│ │ │ │ │ └── VideoTimestampRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── VideoTimestampCacheDataSource.kt
│ │ │ ├── view_assignment
│ │ │ │ ├── repository
│ │ │ │ │ └── ViewAssignmentRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── ViewAssignmentCacheDataSource.kt
│ │ │ │ │ └── ViewAssignmentRemoteDataSource.kt
│ │ │ ├── visited_courses
│ │ │ │ ├── repository
│ │ │ │ │ └── VisitedCoursesRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ ├── VisitedCoursesCacheDataSource.kt
│ │ │ │ │ └── VisitedCoursesRemoteDataSource.kt
│ │ │ ├── vote
│ │ │ │ ├── repository
│ │ │ │ │ └── VoteRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ │ └── VoteRemoteDataSource.kt
│ │ │ └── wishlist
│ │ │ │ ├── repository
│ │ │ │ └── WishlistRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ ├── WishlistCacheDataSource.kt
│ │ │ │ └── WishlistRemoteDataSource.kt
│ │ │ ├── domain
│ │ │ ├── achievement
│ │ │ │ ├── interactor
│ │ │ │ │ └── AchievementInteractor.kt
│ │ │ │ ├── model
│ │ │ │ │ └── AchievementItem.kt
│ │ │ │ └── repository
│ │ │ │ │ └── AchievementRepository.kt
│ │ │ ├── analytic
│ │ │ │ ├── interactor
│ │ │ │ │ └── AnalyticInteractor.kt
│ │ │ │ └── repository
│ │ │ │ │ └── AnalyticRepository.kt
│ │ │ ├── announcement
│ │ │ │ ├── model
│ │ │ │ │ └── Announcement.kt
│ │ │ │ └── repository
│ │ │ │ │ └── AnnouncementRepository.kt
│ │ │ ├── app_rating
│ │ │ │ └── interactor
│ │ │ │ │ └── AppRatingInteractor.kt
│ │ │ ├── assignment
│ │ │ │ └── repository
│ │ │ │ │ └── AssignmentRepository.kt
│ │ │ ├── attempt
│ │ │ │ └── repository
│ │ │ │ │ └── AttemptRepository.kt
│ │ │ ├── auth
│ │ │ │ ├── interactor
│ │ │ │ │ └── AuthInteractor.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── LoginFailType.kt
│ │ │ │ │ ├── RegistrationError.kt
│ │ │ │ │ ├── SocialAuthError.kt
│ │ │ │ │ └── SocialAuthType.kt
│ │ │ │ └── repository
│ │ │ │ │ └── AuthRepository.kt
│ │ │ ├── banner
│ │ │ │ ├── analytic
│ │ │ │ │ ├── PromoBannerClickedAnalyticEvent.kt
│ │ │ │ │ └── PromoBannerSeen.kt
│ │ │ │ ├── interactor
│ │ │ │ │ └── BannerInteractor.kt
│ │ │ │ └── model
│ │ │ │ │ └── Banner.kt
│ │ │ ├── base
│ │ │ │ ├── DataSourceType.kt
│ │ │ │ ├── InternalDeeplinkURLSpan.kt
│ │ │ │ └── analytic
│ │ │ │ │ ├── AnalyticEvent.kt
│ │ │ │ │ ├── AnalyticEventExtensions.kt
│ │ │ │ │ ├── AnalyticSource.kt
│ │ │ │ │ ├── UserProperty.kt
│ │ │ │ │ └── UserPropertySource.kt
│ │ │ ├── calendar
│ │ │ │ ├── model
│ │ │ │ │ ├── CalendarEventData.kt
│ │ │ │ │ └── CalendarItem.kt
│ │ │ │ └── repository
│ │ │ │ │ └── CalendarRepository.kt
│ │ │ ├── catalog
│ │ │ │ ├── interactor
│ │ │ │ │ └── CatalogInteractor.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── CatalogAuthor.kt
│ │ │ │ │ ├── CatalogBlock.kt
│ │ │ │ │ ├── CatalogBlockContent.kt
│ │ │ │ │ ├── CatalogCourseList.kt
│ │ │ │ │ └── CatalogSpecialization.kt
│ │ │ │ └── repository
│ │ │ │ │ └── CatalogRepository.kt
│ │ │ ├── certificate
│ │ │ │ ├── interactor
│ │ │ │ │ └── CertificatesInteractor.kt
│ │ │ │ └── repository
│ │ │ │ │ └── CertificateRepository.kt
│ │ │ ├── code_preference
│ │ │ │ ├── interactor
│ │ │ │ │ └── CodePreferenceInteractor.kt
│ │ │ │ ├── model
│ │ │ │ │ └── InitCodePreference.kt
│ │ │ │ └── repository
│ │ │ │ │ └── CodePreferenceRepository.kt
│ │ │ ├── comment
│ │ │ │ ├── interactor
│ │ │ │ │ ├── CommentInteractor.kt
│ │ │ │ │ └── ComposeCommentInteractor.kt
│ │ │ │ ├── mapper
│ │ │ │ │ └── CommentsDataMapper.kt
│ │ │ │ ├── model
│ │ │ │ │ └── CommentsData.kt
│ │ │ │ └── repository
│ │ │ │ │ └── CommentRepository.kt
│ │ │ ├── course
│ │ │ │ ├── analytic
│ │ │ │ │ ├── BuyCoursePressedEvent.kt
│ │ │ │ │ ├── CourseCardSeenAnalyticEvent.kt
│ │ │ │ │ ├── CourseJoinedEvent.kt
│ │ │ │ │ ├── CoursePreviewScreenOpenedAnalyticEvent.kt
│ │ │ │ │ ├── CourseViewSource.kt
│ │ │ │ │ ├── UserCourseActionEvent.kt
│ │ │ │ │ └── batch
│ │ │ │ │ │ ├── BuyCoursePressedAnalyticBatchEvent.kt
│ │ │ │ │ │ ├── CourseCardSeenAnalyticBatchEvent.kt
│ │ │ │ │ │ └── CoursePreviewScreenOpenedAnalyticBatchEvent.kt
│ │ │ │ ├── interactor
│ │ │ │ │ ├── ContinueLearningInteractor.kt
│ │ │ │ │ ├── CourseEnrollmentInteractor.kt
│ │ │ │ │ ├── CourseIndexingInteractor.kt
│ │ │ │ │ ├── CourseInteractor.kt
│ │ │ │ │ └── CourseStatsInteractor.kt
│ │ │ │ ├── mapper
│ │ │ │ │ ├── CourseStateMapper.kt
│ │ │ │ │ └── CourseStatsMapper.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── CourseHeaderData.kt
│ │ │ │ │ ├── CoursePurchasePayload.kt
│ │ │ │ │ ├── CourseStats.kt
│ │ │ │ │ ├── EnrollmentState.kt
│ │ │ │ │ └── SourceTypeComposition.kt
│ │ │ │ └── repository
│ │ │ │ │ ├── CoursePurchaseDataRepository.kt
│ │ │ │ │ ├── CourseRepository.kt
│ │ │ │ │ ├── CourseReviewSummaryRepository.kt
│ │ │ │ │ └── EnrollmentRepository.kt
│ │ │ ├── course_calendar
│ │ │ │ ├── interactor
│ │ │ │ │ └── CourseCalendarInteractor.kt
│ │ │ │ ├── model
│ │ │ │ │ └── SectionDateEvent.kt
│ │ │ │ └── repository
│ │ │ │ │ └── CourseCalendarRepository.kt
│ │ │ ├── course_collection
│ │ │ │ ├── interactor
│ │ │ │ │ └── CourseCollectionInteractor.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── CourseCollectionQuery.kt
│ │ │ │ │ └── CourseCollectionResult.kt
│ │ │ │ └── repository
│ │ │ │ │ └── CourseCollectionRepository.kt
│ │ │ ├── course_complete
│ │ │ │ ├── analytic
│ │ │ │ │ ├── FinishedStepsBackToAssignmentsPressedAnalyticEvent.kt
│ │ │ │ │ ├── FinishedStepsFindNewCoursePressedAnalyticEvent.kt
│ │ │ │ │ ├── FinishedStepsLeaveReviewPressedAnalyticEvent.kt
│ │ │ │ │ ├── FinishedStepsScreenOpenedAnalyticEvent.kt
│ │ │ │ │ ├── FinishedStepsSharePressedAnalyticEvent.kt
│ │ │ │ │ └── FinishedStepsViewCertificatePressedAnalyticEvent.kt
│ │ │ │ ├── interactor
│ │ │ │ │ └── CourseCompleteInteractor.kt
│ │ │ │ └── model
│ │ │ │ │ └── CourseCompleteInfo.kt
│ │ │ ├── course_content
│ │ │ │ └── interactor
│ │ │ │ │ └── CourseContentInteractor.kt
│ │ │ ├── course_continue
│ │ │ │ └── analytic
│ │ │ │ │ └── CourseContinuePressedEvent.kt
│ │ │ ├── course_info
│ │ │ │ ├── interactor
│ │ │ │ │ └── CourseInfoInteractor.kt
│ │ │ │ └── model
│ │ │ │ │ └── CourseInfoData.kt
│ │ │ ├── course_list
│ │ │ │ ├── interactor
│ │ │ │ │ ├── CourseListInteractor.kt
│ │ │ │ │ ├── CourseListSearchInteractor.kt
│ │ │ │ │ ├── CourseListUserInteractor.kt
│ │ │ │ │ ├── CourseListVisitedInteractor.kt
│ │ │ │ │ └── RemindAppNotificationInteractor.kt
│ │ │ │ └── model
│ │ │ │ │ ├── CourseListItem.kt
│ │ │ │ │ ├── CourseListQuery.kt
│ │ │ │ │ ├── UserCourseQuery.kt
│ │ │ │ │ └── UserCoursesLoaded.kt
│ │ │ ├── course_news
│ │ │ │ ├── analytic
│ │ │ │ │ └── CourseNewsScreenOpenedAnalyticEvent.kt
│ │ │ │ ├── exception
│ │ │ │ │ └── NotEnrolledException.kt
│ │ │ │ ├── interactor
│ │ │ │ │ └── CourseNewsInteractor.kt
│ │ │ │ └── model
│ │ │ │ │ └── CourseNewsListItem.kt
│ │ │ ├── course_payments
│ │ │ │ ├── exception
│ │ │ │ │ ├── CourseAlreadyOwnedException.kt
│ │ │ │ │ └── CoursePurchaseVerificationException.kt
│ │ │ │ ├── mapper
│ │ │ │ │ └── DefaultPromoCodeMapper.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── CoursePayment.kt
│ │ │ │ │ ├── CoursePurchaseInfo.kt
│ │ │ │ │ ├── DeeplinkPromoCode.kt
│ │ │ │ │ ├── DefaultPromoCode.kt
│ │ │ │ │ └── PromoCodeSku.kt
│ │ │ │ └── repository
│ │ │ │ │ └── CoursePaymentsRepository.kt
│ │ │ ├── course_purchase
│ │ │ │ ├── analytic
│ │ │ │ │ ├── BuyCourseIAPFlowFailureAnalyticEvent.kt
│ │ │ │ │ ├── BuyCourseIAPFlowStartAnalyticEvent.kt
│ │ │ │ │ ├── BuyCourseIAPFlowSuccessAnalyticEvent.kt
│ │ │ │ │ ├── BuyCoursePromoFailureAnalyticEvent.kt
│ │ │ │ │ ├── BuyCoursePromoStartPressedAnalyticEvent.kt
│ │ │ │ │ ├── BuyCoursePromoSuccessAnalyticEvent.kt
│ │ │ │ │ ├── BuyCourseVerificationFailureAnalyticEvent.kt
│ │ │ │ │ ├── BuyCourseVerificationSuccessAnalyticEvent.kt
│ │ │ │ │ ├── CoursePurchaseSource.kt
│ │ │ │ │ ├── RestoreCoursePurchaseFailureAnalyticEvent.kt
│ │ │ │ │ ├── RestoreCoursePurchasePressedAnalyticEvent.kt
│ │ │ │ │ ├── RestoreCoursePurchaseSource.kt
│ │ │ │ │ └── RestoreCoursePurchaseSuccessAnalyticEvent.kt
│ │ │ │ ├── error
│ │ │ │ │ └── BillingException.kt
│ │ │ │ ├── interactor
│ │ │ │ │ └── CoursePurchaseInteractor.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── BillingPurchasePayload.kt
│ │ │ │ │ ├── CoursePurchaseFlow.kt
│ │ │ │ │ ├── CoursePurchaseObfuscatedParams.kt
│ │ │ │ │ └── PurchaseFlowData.kt
│ │ │ │ └── repository
│ │ │ │ │ └── BillingPurchasePayloadRepository.kt
│ │ │ ├── course_recommendations
│ │ │ │ ├── interactor
│ │ │ │ │ └── CourseRecommendationsInteractor.kt
│ │ │ │ ├── model
│ │ │ │ │ └── CourseRecommendation.kt
│ │ │ │ └── repository
│ │ │ │ │ └── CourseRecommendationsRepository.kt
│ │ │ ├── course_revenue
│ │ │ │ ├── analytic
│ │ │ │ │ ├── CourseBenefitClickedEvent.kt
│ │ │ │ │ ├── CourseBenefitsScreenOpenedEvent.kt
│ │ │ │ │ └── CourseBenefitsSummaryClicked.kt
│ │ │ │ ├── interactor
│ │ │ │ │ └── CourseBenefitsInteractor.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── CourseBeneficiary.kt
│ │ │ │ │ ├── CourseBenefit.kt
│ │ │ │ │ ├── CourseBenefitByMonth.kt
│ │ │ │ │ ├── CourseBenefitByMonthListItem.kt
│ │ │ │ │ ├── CourseBenefitListItem.kt
│ │ │ │ │ └── CourseBenefitSummary.kt
│ │ │ │ └── repository
│ │ │ │ │ ├── CourseBeneficiariesRepository.kt
│ │ │ │ │ ├── CourseBenefitByMonthsRepository.kt
│ │ │ │ │ ├── CourseBenefitSummariesRepository.kt
│ │ │ │ │ └── CourseBenefitsRepository.kt
│ │ │ ├── course_reviews
│ │ │ │ ├── analytic
│ │ │ │ │ ├── CourseReviewCreatedAnalyticEvent.kt
│ │ │ │ │ ├── CourseReviewDeletedAnalyticEvent.kt
│ │ │ │ │ ├── CourseReviewUpdatedAnalyticEvent.kt
│ │ │ │ │ ├── CourseReviewViewSource.kt
│ │ │ │ │ ├── CreateCourseReviewPressedAnalyticEvent.kt
│ │ │ │ │ ├── EditCourseReviewPressedAnalyticEvent.kt
│ │ │ │ │ └── UserCourseReviewsScreenOpenedAnalyticEvent.kt
│ │ │ │ ├── interactor
│ │ │ │ │ ├── ComposeCourseReviewInteractor.kt
│ │ │ │ │ └── CourseReviewsInteractor.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── CourseReview.kt
│ │ │ │ │ └── CourseReviewItem.kt
│ │ │ │ └── repository
│ │ │ │ │ └── CourseReviewsRepository.kt
│ │ │ ├── course_search
│ │ │ │ ├── analytic
│ │ │ │ │ ├── CourseContentSearchResultClicked.kt
│ │ │ │ │ ├── CourseContentSearchScreenOpenedAnalyticEvent.kt
│ │ │ │ │ └── CourseContentSearchedAnalyticEvent.kt
│ │ │ │ ├── interactor
│ │ │ │ │ └── CourseSearchInteractor.kt
│ │ │ │ └── model
│ │ │ │ │ ├── CourseSearchResult.kt
│ │ │ │ │ └── CourseSearchResultListItem.kt
│ │ │ ├── device
│ │ │ │ └── repository
│ │ │ │ │ └── DeviceRepository.kt
│ │ │ ├── discussion_proxy
│ │ │ │ ├── interactor
│ │ │ │ │ └── DiscussionProxyInteractor.kt
│ │ │ │ ├── mapper
│ │ │ │ │ └── DiscussionProxyMapper.kt
│ │ │ │ ├── model
│ │ │ │ │ └── DiscussionOrder.kt
│ │ │ │ └── repository
│ │ │ │ │ └── DiscussionProxyRepository.kt
│ │ │ ├── discussion_thread
│ │ │ │ └── repository
│ │ │ │ │ └── DiscussionThreadRepository.kt
│ │ │ ├── download
│ │ │ │ ├── interactor
│ │ │ │ │ └── DownloadsInteractor.kt
│ │ │ │ ├── mapper
│ │ │ │ │ └── DownloadProgressStatusMapperImpl.kt
│ │ │ │ └── repository
│ │ │ │ │ └── DownloadRepository.kt
│ │ │ ├── email_address
│ │ │ │ └── repository
│ │ │ │ │ └── EmailAddressRepository.kt
│ │ │ ├── exam
│ │ │ │ ├── interactor
│ │ │ │ │ └── ExamSessionDataInteractor.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── ExamStatus.kt
│ │ │ │ │ └── SessionData.kt
│ │ │ │ └── resolver
│ │ │ │ │ └── ExamStatusResolver.kt
│ │ │ ├── exam_session
│ │ │ │ ├── model
│ │ │ │ │ └── ExamSession.kt
│ │ │ │ └── repository
│ │ │ │ │ └── ExamSessionRepository.kt
│ │ │ ├── feedback
│ │ │ │ ├── interactor
│ │ │ │ │ └── FeedbackInteractor.kt
│ │ │ │ ├── model
│ │ │ │ │ └── SupportEmailData.kt
│ │ │ │ └── repository
│ │ │ │ │ └── FeedbackRepository.kt
│ │ │ ├── filter
│ │ │ │ ├── analytic
│ │ │ │ │ └── ContenLanguageChangedAnalyticEvent.kt
│ │ │ │ └── model
│ │ │ │ │ ├── CourseListFilterQuery.kt
│ │ │ │ │ └── SubmissionsFilterQuery.kt
│ │ │ ├── home
│ │ │ │ └── interactor
│ │ │ │ │ └── HomeInteractor.kt
│ │ │ ├── last_step
│ │ │ │ ├── model
│ │ │ │ │ └── LastStep.kt
│ │ │ │ └── repository
│ │ │ │ │ └── LastStepRepository.kt
│ │ │ ├── latex
│ │ │ │ ├── mapper
│ │ │ │ │ └── LatexTextMapper.kt
│ │ │ │ └── model
│ │ │ │ │ ├── LatexData.kt
│ │ │ │ │ ├── Settings.kt
│ │ │ │ │ ├── block
│ │ │ │ │ ├── ContentBlock.kt
│ │ │ │ │ ├── HighlightScriptBlock.kt
│ │ │ │ │ ├── HorizontalScrollBlock.kt
│ │ │ │ │ ├── KotlinRunnableSamplesScriptBlock.kt
│ │ │ │ │ ├── LatexScriptBlock.kt
│ │ │ │ │ ├── MetaBlock.kt
│ │ │ │ │ ├── ModelViewerBlock.kt
│ │ │ │ │ └── WebScriptBlock.kt
│ │ │ │ │ └── rule
│ │ │ │ │ ├── ContentRule.kt
│ │ │ │ │ ├── RelativePathContentRule.kt
│ │ │ │ │ └── ReplaceModelViewWithImage.kt
│ │ │ ├── lesson
│ │ │ │ ├── interactor
│ │ │ │ │ ├── LessonContentInteractor.kt
│ │ │ │ │ └── LessonInteractor.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── LessonData.kt
│ │ │ │ │ ├── LessonDeepLinkData.kt
│ │ │ │ │ └── StepItem.kt
│ │ │ │ └── repository
│ │ │ │ │ └── LessonRepository.kt
│ │ │ ├── lesson_demo
│ │ │ │ ├── interactor
│ │ │ │ │ └── LessonDemoInteractor.kt
│ │ │ │ └── model
│ │ │ │ │ └── LessonDemoData.kt
│ │ │ ├── magic_links
│ │ │ │ ├── interactor
│ │ │ │ │ └── MagicLinkInteractor.kt
│ │ │ │ ├── model
│ │ │ │ │ └── MagicLink.kt
│ │ │ │ └── repository
│ │ │ │ │ └── MagicLinksRepository.kt
│ │ │ ├── mobile_tiers
│ │ │ │ ├── interactor
│ │ │ │ │ └── MobileTiersInteractor.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── LightSku.kt
│ │ │ │ │ └── MobileTier.kt
│ │ │ │ └── repository
│ │ │ │ │ ├── LightSkuRepository.kt
│ │ │ │ │ └── MobileTiersRepository.kt
│ │ │ ├── network
│ │ │ │ ├── exception
│ │ │ │ │ └── NetworkRequirementsNotSatisfiedException.kt
│ │ │ │ └── repository
│ │ │ │ │ └── NetworkTypeRepository.kt
│ │ │ ├── notification
│ │ │ │ ├── interactor
│ │ │ │ │ └── CourseNotificationInteractor.kt
│ │ │ │ └── repository
│ │ │ │ │ └── NotificationRepository.kt
│ │ │ ├── onboarding
│ │ │ │ └── analytic
│ │ │ │ │ ├── OnboardingAllCoursesAnalyticEvent.kt
│ │ │ │ │ ├── OnboardingBackToGoalsAnalyticEvent.kt
│ │ │ │ │ ├── OnboardingClosedAnalyticEvent.kt
│ │ │ │ │ ├── OnboardingCompletedAnalyticEvent.kt
│ │ │ │ │ ├── OnboardingCourseListSelectedAnalyticEvent.kt
│ │ │ │ │ ├── OnboardingGoalSelectedAnalyticEvent.kt
│ │ │ │ │ ├── OnboardingOpenedAnalyticEvent.kt
│ │ │ │ │ └── OnboardingParseErrorAnalyticEvent.kt
│ │ │ ├── personal_deadlines
│ │ │ │ ├── analytic
│ │ │ │ │ ├── DeadlinesNotificationClicked.kt
│ │ │ │ │ ├── DeadlinesNotificationDismissed.kt
│ │ │ │ │ └── DeadlinesNotificationShown.kt
│ │ │ │ ├── interactor
│ │ │ │ │ ├── DeadlinesInteractor.kt
│ │ │ │ │ ├── DeadlinesNotificationInteractor.kt
│ │ │ │ │ └── DeadlinesSynchronizationInteractor.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── Deadline.kt
│ │ │ │ │ ├── DeadlinesWrapper.kt
│ │ │ │ │ └── LearningRate.kt
│ │ │ │ ├── repository
│ │ │ │ │ ├── DeadlinesBannerRepository.kt
│ │ │ │ │ └── DeadlinesRepository.kt
│ │ │ │ └── resolver
│ │ │ │ │ ├── DeadlinesResolver.kt
│ │ │ │ │ └── DeadlinesResolverImpl.kt
│ │ │ ├── personal_offers
│ │ │ │ ├── model
│ │ │ │ │ └── PersonalOffers.kt
│ │ │ │ └── repository
│ │ │ │ │ └── PersonalOffersRepository.kt
│ │ │ ├── proctor_session
│ │ │ │ ├── model
│ │ │ │ │ └── ProctorSession.kt
│ │ │ │ └── repository
│ │ │ │ │ └── ProctorSessionRepository.kt
│ │ │ ├── profile
│ │ │ │ ├── interactor
│ │ │ │ │ ├── ProfileGuestInteractor.kt
│ │ │ │ │ └── ProfileInteractor.kt
│ │ │ │ ├── model
│ │ │ │ │ └── ProfileData.kt
│ │ │ │ └── repository
│ │ │ │ │ └── ProfileRepository.kt
│ │ │ ├── profile_activities
│ │ │ │ ├── interactor
│ │ │ │ │ └── ProfileActivitiesInteractor.kt
│ │ │ │ └── model
│ │ │ │ │ └── ProfileActivitiesData.kt
│ │ │ ├── profile_edit
│ │ │ │ └── ProfileEditInteractor.kt
│ │ │ ├── progress
│ │ │ │ ├── interactor
│ │ │ │ │ └── LocalProgressInteractor.kt
│ │ │ │ ├── mapper
│ │ │ │ │ └── ProgressableMapper.kt
│ │ │ │ └── repository
│ │ │ │ │ └── ProgressRepository.kt
│ │ │ ├── purchase_notification
│ │ │ │ ├── analytic
│ │ │ │ │ ├── PurchaseNotificationClicked.kt
│ │ │ │ │ ├── PurchaseNotificationDismissed.kt
│ │ │ │ │ └── PurchaseNotificationShown.kt
│ │ │ │ ├── interactor
│ │ │ │ │ ├── PurchaseNotificationInteractor.kt
│ │ │ │ │ └── PurchaseReminderInteractor.kt
│ │ │ │ └── repository
│ │ │ │ │ └── PurchaseNotificationRepository.kt
│ │ │ ├── rating
│ │ │ │ └── repository
│ │ │ │ │ └── RatingRepository.kt
│ │ │ ├── recommendation
│ │ │ │ └── repository
│ │ │ │ │ └── RecommendationRepository.kt
│ │ │ ├── remind
│ │ │ │ └── analytic
│ │ │ │ │ ├── RemindAppNotificationClicked.kt
│ │ │ │ │ ├── RemindAppNotificationDismissed.kt
│ │ │ │ │ ├── RemindAppNotificationShown.kt
│ │ │ │ │ ├── RemindRegistrationNotificationClicked.kt
│ │ │ │ │ ├── RemindRegistrationNotificationDismissed.kt
│ │ │ │ │ └── RemindRegistrationNotificationShown.kt
│ │ │ ├── retention
│ │ │ │ └── analytic
│ │ │ │ │ ├── RetentionNotificationClicked.kt
│ │ │ │ │ ├── RetentionNotificationDismissed.kt
│ │ │ │ │ └── RetentionNotificationShown.kt
│ │ │ ├── review
│ │ │ │ ├── model
│ │ │ │ │ └── Review.kt
│ │ │ │ └── repository
│ │ │ │ │ └── ReviewRepository.kt
│ │ │ ├── review_instruction
│ │ │ │ ├── model
│ │ │ │ │ ├── ReviewInstruction.kt
│ │ │ │ │ └── ReviewInstructionData.kt
│ │ │ │ └── repository
│ │ │ │ │ └── ReviewInstructionRepository.kt
│ │ │ ├── review_session
│ │ │ │ ├── model
│ │ │ │ │ ├── ReviewSession.kt
│ │ │ │ │ └── ReviewSessionData.kt
│ │ │ │ └── repository
│ │ │ │ │ └── ReviewSessionRepository.kt
│ │ │ ├── rubric
│ │ │ │ └── model
│ │ │ │ │ └── Rubric.kt
│ │ │ ├── search
│ │ │ │ └── repository
│ │ │ │ │ └── SearchRepository.kt
│ │ │ ├── search_result
│ │ │ │ ├── mapper
│ │ │ │ │ └── SearchResultRemoteQueryParamsMapper.kt
│ │ │ │ ├── model
│ │ │ │ │ └── SearchResultQuery.kt
│ │ │ │ └── repository
│ │ │ │ │ └── SearchResultRepository.kt
│ │ │ ├── section
│ │ │ │ └── repository
│ │ │ │ │ └── SectionRepository.kt
│ │ │ ├── settings
│ │ │ │ └── interactor
│ │ │ │ │ ├── SettingsAccountDeletionInteractor.kt
│ │ │ │ │ └── VideoQualityInteractor.kt
│ │ │ ├── social_profile
│ │ │ │ ├── interactor
│ │ │ │ │ └── SocialProfileInteractor.kt
│ │ │ │ └── repository
│ │ │ │ │ └── SocialProfileRepository.kt
│ │ │ ├── solutions
│ │ │ │ ├── interactor
│ │ │ │ │ └── SolutionsInteractor.kt
│ │ │ │ ├── mapper
│ │ │ │ │ └── SolutionItemMapper.kt
│ │ │ │ └── model
│ │ │ │ │ └── SolutionItem.kt
│ │ │ ├── step
│ │ │ │ ├── analytic
│ │ │ │ │ └── StepAnalyticExtension.kt
│ │ │ │ ├── interactor
│ │ │ │ │ ├── StepIndexingInteractor.kt
│ │ │ │ │ ├── StepInteractor.kt
│ │ │ │ │ └── StepNavigationInteractor.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── StepDirectionData.kt
│ │ │ │ │ └── StepNavigationDirection.kt
│ │ │ │ └── repository
│ │ │ │ │ └── StepRepository.kt
│ │ │ ├── step_content_text
│ │ │ │ ├── interactor
│ │ │ │ │ └── TextContentFontInteractor.kt
│ │ │ │ └── model
│ │ │ │ │ └── FontSize.kt
│ │ │ ├── step_content_video
│ │ │ │ ├── interactor
│ │ │ │ │ └── VideoLengthInteractor.kt
│ │ │ │ └── mapper
│ │ │ │ │ └── VideoLengthMapper.kt
│ │ │ ├── step_quiz
│ │ │ │ ├── interactor
│ │ │ │ │ └── StepQuizInteractor.kt
│ │ │ │ └── model
│ │ │ │ │ ├── StepQuizLessonData.kt
│ │ │ │ │ └── StepQuizRestrictions.kt
│ │ │ ├── step_quiz_review
│ │ │ │ └── interactor
│ │ │ │ │ └── StepQuizReviewInteractor.kt
│ │ │ ├── step_source
│ │ │ │ ├── interactor
│ │ │ │ │ └── StepSourceInteractor.kt
│ │ │ │ └── repository
│ │ │ │ │ └── StepSourceRepository.kt
│ │ │ ├── stories
│ │ │ │ └── interactor
│ │ │ │ │ └── StoriesInteractor.kt
│ │ │ ├── story
│ │ │ │ ├── interactor
│ │ │ │ │ └── StoryReactionInteractor.kt
│ │ │ │ ├── model
│ │ │ │ │ └── StoryReaction.kt
│ │ │ │ └── repository
│ │ │ │ │ └── StoryReactionRepository.kt
│ │ │ ├── story_deeplink
│ │ │ │ ├── interactor
│ │ │ │ │ └── StoryDeepLinkInteractor.kt
│ │ │ │ └── model
│ │ │ │ │ └── StoryDeepLinkNotification.kt
│ │ │ ├── streak
│ │ │ │ ├── analytic
│ │ │ │ │ ├── StreakNotificationClicked.kt
│ │ │ │ │ ├── StreakNotificationDismissed.kt
│ │ │ │ │ └── StreakNotificationShown.kt
│ │ │ │ └── interactor
│ │ │ │ │ └── StreakInteractor.kt
│ │ │ ├── submission
│ │ │ │ ├── interactor
│ │ │ │ │ ├── LastSubmissionInteractor.kt
│ │ │ │ │ └── SubmissionInteractor.kt
│ │ │ │ ├── model
│ │ │ │ │ └── SubmissionItem.kt
│ │ │ │ └── repository
│ │ │ │ │ └── SubmissionRepository.kt
│ │ │ ├── unit
│ │ │ │ └── repository
│ │ │ │ │ └── UnitRepository.kt
│ │ │ ├── user
│ │ │ │ └── repository
│ │ │ │ │ └── UserRepository.kt
│ │ │ ├── user_activity
│ │ │ │ └── repository
│ │ │ │ │ └── UserActivityRepository.kt
│ │ │ ├── user_code_run
│ │ │ │ ├── interactor
│ │ │ │ │ └── UserCodeRunInteractor.kt
│ │ │ │ └── repository
│ │ │ │ │ └── UserCodeRunRepository.kt
│ │ │ ├── user_courses
│ │ │ │ ├── interactor
│ │ │ │ │ └── UserCoursesInteractor.kt
│ │ │ │ ├── model
│ │ │ │ │ └── UserCourse.kt
│ │ │ │ └── repository
│ │ │ │ │ └── UserCoursesRepository.kt
│ │ │ ├── user_profile
│ │ │ │ └── repository
│ │ │ │ │ └── UserProfileRepository.kt
│ │ │ ├── user_reviews
│ │ │ │ ├── interactor
│ │ │ │ │ └── UserCourseReviewsInteractor.kt
│ │ │ │ └── model
│ │ │ │ │ ├── UserCourseReviewItem.kt
│ │ │ │ │ ├── UserCourseReviewOperation.kt
│ │ │ │ │ └── UserCourseReviewsResult.kt
│ │ │ ├── video_player
│ │ │ │ ├── analytic
│ │ │ │ │ ├── PIPActivated.kt
│ │ │ │ │ ├── VideoPlayerControlClickedEvent.kt
│ │ │ │ │ └── VideoQualityChangedEvent.kt
│ │ │ │ ├── interactor
│ │ │ │ │ └── VideoPlayerSettingsInteractor.kt
│ │ │ │ └── repository
│ │ │ │ │ └── VideoTimestampRepository.kt
│ │ │ ├── view_assignment
│ │ │ │ ├── interactor
│ │ │ │ │ ├── DeferrableViewAssignmentReportInteractor.kt
│ │ │ │ │ └── ViewAssignmentReportInteractor.kt
│ │ │ │ ├── repository
│ │ │ │ │ └── ViewAssignmentRepository.kt
│ │ │ │ └── service
│ │ │ │ │ └── DeferrableViewAssignmentReportService.kt
│ │ │ ├── visited_courses
│ │ │ │ ├── interactor
│ │ │ │ │ └── VisitedCoursesInteractor.kt
│ │ │ │ ├── model
│ │ │ │ │ └── VisitedCourse.kt
│ │ │ │ └── repository
│ │ │ │ │ └── VisitedCoursesRepository.kt
│ │ │ ├── vote
│ │ │ │ └── repository
│ │ │ │ │ └── VoteRepository.kt
│ │ │ └── wishlist
│ │ │ │ ├── analytic
│ │ │ │ ├── CourseWishlistAddedEvent.kt
│ │ │ │ ├── CourseWishlistRemovedEvent.kt
│ │ │ │ └── WishlistOpenedEvent.kt
│ │ │ │ ├── interactor
│ │ │ │ ├── CourseListWishInteractor.kt
│ │ │ │ └── WishlistInteractor.kt
│ │ │ │ ├── model
│ │ │ │ ├── WishlistEntry.kt
│ │ │ │ └── WishlistOperationData.kt
│ │ │ │ └── repository
│ │ │ │ └── WishlistRepository.kt
│ │ │ ├── presentation
│ │ │ ├── achievement
│ │ │ │ ├── AchievementsPresenter.kt
│ │ │ │ └── AchievementsView.kt
│ │ │ ├── auth
│ │ │ │ ├── CredentialAuthPresenter.kt
│ │ │ │ ├── CredentialAuthView.kt
│ │ │ │ ├── RegistrationPresenter.kt
│ │ │ │ ├── RegistrationView.kt
│ │ │ │ ├── SocialAuthPresenter.kt
│ │ │ │ └── SocialAuthView.kt
│ │ │ ├── banner
│ │ │ │ ├── BannerFeature.kt
│ │ │ │ ├── dispatcher
│ │ │ │ │ └── BannerActionDispatcher.kt
│ │ │ │ └── reducer
│ │ │ │ │ └── BannerReducer.kt
│ │ │ ├── base
│ │ │ │ ├── PresenterBase.kt
│ │ │ │ ├── PresenterViewHolder.kt
│ │ │ │ └── injection
│ │ │ │ │ ├── DaggerViewModelFactory.kt
│ │ │ │ │ └── ViewModelKey.kt
│ │ │ ├── catalog
│ │ │ │ ├── CatalogFeature.kt
│ │ │ │ ├── CatalogViewModel.kt
│ │ │ │ ├── dispatcher
│ │ │ │ │ └── CatalogActionDispatcher.kt
│ │ │ │ └── reducer
│ │ │ │ │ └── CatalogReducer.kt
│ │ │ ├── certificate
│ │ │ │ ├── CertificatesPresenter.kt
│ │ │ │ └── CertificatesView.kt
│ │ │ ├── comment
│ │ │ │ ├── CommentsPresenter.kt
│ │ │ │ ├── CommentsView.kt
│ │ │ │ ├── ComposeCommentPresenter.kt
│ │ │ │ ├── ComposeCommentView.kt
│ │ │ │ ├── mapper
│ │ │ │ │ └── CommentsStateMapper.kt
│ │ │ │ └── model
│ │ │ │ │ └── CommentItem.kt
│ │ │ ├── course
│ │ │ │ ├── CoursePresenter.kt
│ │ │ │ ├── CourseView.kt
│ │ │ │ ├── mapper
│ │ │ │ │ └── EnrollmentErrorMapper.kt
│ │ │ │ ├── model
│ │ │ │ │ └── EnrollmentError.kt
│ │ │ │ └── resolver
│ │ │ │ │ └── CoursePurchaseDataResolver.kt
│ │ │ ├── course_calendar
│ │ │ │ └── model
│ │ │ │ │ └── CalendarError.kt
│ │ │ ├── course_complete
│ │ │ │ ├── CourseCompleteFeature.kt
│ │ │ │ ├── CourseCompleteViewModel.kt
│ │ │ │ ├── dispatcher
│ │ │ │ │ └── CourseCompleteActionDispatcher.kt
│ │ │ │ └── reducer
│ │ │ │ │ └── CourseCompleteReducer.kt
│ │ │ ├── course_content
│ │ │ │ ├── CourseContentPresenter.kt
│ │ │ │ ├── CourseContentView.kt
│ │ │ │ └── mapper
│ │ │ │ │ ├── CourseContentItemMapper.kt
│ │ │ │ │ ├── CourseContentSectionDatesMapper.kt
│ │ │ │ │ └── CourseContentStateMapper.kt
│ │ │ ├── course_continue
│ │ │ │ ├── CourseContinueView.kt
│ │ │ │ ├── delegate
│ │ │ │ │ ├── CourseContinuePresenterDelegate.kt
│ │ │ │ │ └── CourseContinuePresenterDelegateImpl.kt
│ │ │ │ └── model
│ │ │ │ │ └── CourseContinueInteractionSource.kt
│ │ │ ├── course_continue_redux
│ │ │ │ ├── CourseContinueFeature.kt
│ │ │ │ ├── dispatcher
│ │ │ │ │ └── CourseContinueActionDispatcher.kt
│ │ │ │ └── reducer
│ │ │ │ │ └── CourseContinueReducer.kt
│ │ │ ├── course_info
│ │ │ │ ├── CourseInfoPresenter.kt
│ │ │ │ └── CourseInfoView.kt
│ │ │ ├── course_list
│ │ │ │ ├── CourseListCollectionPresenter.kt
│ │ │ │ ├── CourseListCollectionView.kt
│ │ │ │ ├── CourseListQueryPresenter.kt
│ │ │ │ ├── CourseListQueryView.kt
│ │ │ │ ├── CourseListSearchPresenter.kt
│ │ │ │ ├── CourseListSearchResultView.kt
│ │ │ │ ├── CourseListUserPresenter.kt
│ │ │ │ ├── CourseListUserView.kt
│ │ │ │ ├── CourseListView.kt
│ │ │ │ ├── CourseListVisitedPresenter.kt
│ │ │ │ ├── CourseListWishPresenter.kt
│ │ │ │ ├── CourseListWishView.kt
│ │ │ │ └── mapper
│ │ │ │ │ ├── CourseListCollectionStateMapper.kt
│ │ │ │ │ ├── CourseListQueryStateMapper.kt
│ │ │ │ │ ├── CourseListStateMapper.kt
│ │ │ │ │ ├── CourseListUserStateMapper.kt
│ │ │ │ │ └── CourseListWishStateMapper.kt
│ │ │ ├── course_list_redux
│ │ │ │ ├── CourseListFeature.kt
│ │ │ │ ├── dispatcher
│ │ │ │ │ └── CourseListActionDispatcher.kt
│ │ │ │ ├── mapper
│ │ │ │ │ └── CourseListStateMapper.kt
│ │ │ │ ├── model
│ │ │ │ │ └── CatalogBlockStateWrapper.kt
│ │ │ │ └── reducer
│ │ │ │ │ └── CourseListReducer.kt
│ │ │ ├── course_news
│ │ │ │ ├── CourseNewsFeature.kt
│ │ │ │ ├── CourseNewsViewModel.kt
│ │ │ │ ├── dispatcher
│ │ │ │ │ └── CourseNewsActionDispatcher.kt
│ │ │ │ └── reducer
│ │ │ │ │ └── CourseNewsReducer.kt
│ │ │ ├── course_purchase
│ │ │ │ ├── CoursePurchaseFeature.kt
│ │ │ │ ├── CoursePurchaseViewModel.kt
│ │ │ │ ├── dispatcher
│ │ │ │ │ └── CoursePurchaseActionDispatcher.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── CoursePurchaseData.kt
│ │ │ │ │ └── CoursePurchaseDataResult.kt
│ │ │ │ └── reducer
│ │ │ │ │ └── CoursePurchaseReducer.kt
│ │ │ ├── course_revenue
│ │ │ │ ├── CourseBenefitSummaryFeature.kt
│ │ │ │ ├── CourseBenefitsFeature.kt
│ │ │ │ ├── CourseBenefitsMonthlyFeature.kt
│ │ │ │ ├── CourseRevenueFeature.kt
│ │ │ │ ├── CourseRevenueViewModel.kt
│ │ │ │ ├── dispatcher
│ │ │ │ │ ├── CourseBenefitSummaryActionDispatcher.kt
│ │ │ │ │ ├── CourseBenefitsActionDispatcher.kt
│ │ │ │ │ ├── CourseBenefitsMonthlyActionDispatcher.kt
│ │ │ │ │ └── CourseRevenueActionDispatcher.kt
│ │ │ │ └── reducer
│ │ │ │ │ ├── CourseBenefitSummaryReducer.kt
│ │ │ │ │ ├── CourseBenefitsMonthlyReducer.kt
│ │ │ │ │ ├── CourseBenefitsReducer.kt
│ │ │ │ │ └── CourseRevenueReducer.kt
│ │ │ ├── course_reviews
│ │ │ │ ├── ComposeCourseReviewPresenter.kt
│ │ │ │ ├── ComposeCourseReviewView.kt
│ │ │ │ ├── CourseReviewsPresenter.kt
│ │ │ │ ├── CourseReviewsView.kt
│ │ │ │ └── mapper
│ │ │ │ │ └── CourseReviewsStateMapper.kt
│ │ │ ├── course_search
│ │ │ │ ├── CourseSearchFeature.kt
│ │ │ │ ├── CourseSearchViewModel.kt
│ │ │ │ ├── dispatcher
│ │ │ │ │ └── CourseSearchActionDispatcher.kt
│ │ │ │ ├── mapper
│ │ │ │ │ └── CourseSearchResultItemsMapper.kt
│ │ │ │ └── reducer
│ │ │ │ │ └── CourseSearchReducer.kt
│ │ │ ├── download
│ │ │ │ ├── DownloadPresenter.kt
│ │ │ │ ├── DownloadView.kt
│ │ │ │ └── mapper
│ │ │ │ │ └── DownloadItemsStateMapper.kt
│ │ │ ├── enrollment
│ │ │ │ ├── EnrollmentFeature.kt
│ │ │ │ └── dispatcher
│ │ │ │ │ └── EnrollmentActionDispatcher.kt
│ │ │ ├── fast_continue
│ │ │ │ ├── FastContinuePresenter.kt
│ │ │ │ └── FastContinueView.kt
│ │ │ ├── feedback
│ │ │ │ ├── FeedbackPresenter.kt
│ │ │ │ └── FeedbackView.kt
│ │ │ ├── filter
│ │ │ │ ├── FilterQueryView.kt
│ │ │ │ ├── FiltersFeature.kt
│ │ │ │ ├── FiltersPresenter.kt
│ │ │ │ ├── FiltersView.kt
│ │ │ │ ├── dispatcher
│ │ │ │ │ └── FiltersActionDispatcher.kt
│ │ │ │ └── reducer
│ │ │ │ │ └── FiltersReducer.kt
│ │ │ ├── font_size_settings
│ │ │ │ ├── FontSizePresenter.kt
│ │ │ │ └── FontSizeView.kt
│ │ │ ├── in_app_web_view
│ │ │ │ ├── InAppWebViewPresenter.kt
│ │ │ │ └── InAppWebViewView.kt
│ │ │ ├── lesson
│ │ │ │ ├── LessonPresenter.kt
│ │ │ │ ├── LessonView.kt
│ │ │ │ └── mapper
│ │ │ │ │ └── LessonStateMapper.kt
│ │ │ ├── lesson_demo
│ │ │ │ ├── LessonDemoFeature.kt
│ │ │ │ ├── LessonDemoViewModel.kt
│ │ │ │ ├── dispatcher
│ │ │ │ │ └── LessonDemoActionDispatcher.kt
│ │ │ │ └── reducer
│ │ │ │ │ └── LessonDemoReducer.kt
│ │ │ ├── magic_links
│ │ │ │ ├── MagicLinkPresenter.kt
│ │ │ │ └── MagicLinkView.kt
│ │ │ ├── personal_deadlines
│ │ │ │ └── model
│ │ │ │ │ └── PersonalDeadlinesState.kt
│ │ │ ├── profile
│ │ │ │ ├── ProfilePresenter.kt
│ │ │ │ └── ProfileView.kt
│ │ │ ├── profile_achievements
│ │ │ │ └── ProfileAchievementsPresenter.kt
│ │ │ ├── profile_activities
│ │ │ │ ├── ProfileActivitiesPresenter.kt
│ │ │ │ └── ProfileActivitiesView.kt
│ │ │ ├── profile_certificates
│ │ │ │ ├── ProfileCertificatesPresenter.kt
│ │ │ │ └── ProfileCertificatesView.kt
│ │ │ ├── profile_courses
│ │ │ │ ├── ProfileCoursesPresenter.kt
│ │ │ │ └── ProfileCoursesView.kt
│ │ │ ├── profile_detail
│ │ │ │ ├── ProfileDetailPresenter.kt
│ │ │ │ └── ProfileDetailView.kt
│ │ │ ├── profile_edit
│ │ │ │ ├── ProfileEditInfoPresenter.kt
│ │ │ │ ├── ProfileEditInfoView.kt
│ │ │ │ ├── ProfileEditPasswordPresenter.kt
│ │ │ │ ├── ProfileEditPasswordView.kt
│ │ │ │ ├── ProfileEditPresenter.kt
│ │ │ │ └── ProfileEditView.kt
│ │ │ ├── profile_id
│ │ │ │ ├── ProfileIdPresenter.kt
│ │ │ │ └── ProfileIdView.kt
│ │ │ ├── profile_links
│ │ │ │ ├── ProfileLinksPresenter.kt
│ │ │ │ └── ProfileLinksView.kt
│ │ │ ├── profile_notification
│ │ │ │ ├── ProfileNotificationPresenter.kt
│ │ │ │ └── ProfileNotificationView.kt
│ │ │ ├── progress
│ │ │ │ ├── ProgressFeature.kt
│ │ │ │ └── dispatcher
│ │ │ │ │ └── ProgressActionDispatcher.kt
│ │ │ ├── redux
│ │ │ │ └── RefCounterExtension.kt
│ │ │ ├── settings
│ │ │ │ ├── SettingsPresenter.kt
│ │ │ │ └── SettingsView.kt
│ │ │ ├── solutions
│ │ │ │ ├── SolutionsPresenter.kt
│ │ │ │ ├── SolutionsView.kt
│ │ │ │ └── mapper
│ │ │ │ │ └── SolutionsStateMapper.kt
│ │ │ ├── step
│ │ │ │ ├── StepPresenter.kt
│ │ │ │ ├── StepView.kt
│ │ │ │ └── mapper
│ │ │ │ │ └── NavigationActionMapper.kt
│ │ │ ├── step_content_text
│ │ │ │ ├── TextStepContentPresenter.kt
│ │ │ │ └── TextStepContentView.kt
│ │ │ ├── step_content_video
│ │ │ │ ├── VideoStepContentPresenter.kt
│ │ │ │ └── VideoStepContentView.kt
│ │ │ ├── step_quiz
│ │ │ │ ├── StepQuizFeature.kt
│ │ │ │ ├── StepQuizViewModel.kt
│ │ │ │ ├── dispatcher
│ │ │ │ │ └── StepQuizActionDispatcher.kt
│ │ │ │ ├── model
│ │ │ │ │ └── ReplyResult.kt
│ │ │ │ └── reducer
│ │ │ │ │ └── StepQuizReducer.kt
│ │ │ ├── step_quiz_code
│ │ │ │ ├── StepQuizCodeRunPresenter.kt
│ │ │ │ └── StepQuizRunCodeView.kt
│ │ │ ├── step_quiz_review
│ │ │ │ ├── StepQuizReviewFeature.kt
│ │ │ │ ├── StepQuizReviewTeacherFeature.kt
│ │ │ │ ├── StepQuizReviewTeacherViewModel.kt
│ │ │ │ ├── StepQuizReviewViewModel.kt
│ │ │ │ ├── dispatcher
│ │ │ │ │ ├── StepQuizReviewActionDispatcher.kt
│ │ │ │ │ └── StepQuizReviewTeacherActionDispatcher.kt
│ │ │ │ └── reducer
│ │ │ │ │ ├── StepQuizReviewReducer.kt
│ │ │ │ │ └── StepQuizReviewTeacherReducer.kt
│ │ │ ├── step_source
│ │ │ │ ├── EditStepSourcePresenter.kt
│ │ │ │ └── EditStepSourceView.kt
│ │ │ ├── stories
│ │ │ │ ├── StoriesFeature.kt
│ │ │ │ ├── dispatcher
│ │ │ │ │ └── StoriesActionDispatcher.kt
│ │ │ │ └── reducer
│ │ │ │ │ └── StoriesReducer.kt
│ │ │ ├── story
│ │ │ │ ├── StoryActionDispatcher.kt
│ │ │ │ ├── StoryFeature.kt
│ │ │ │ └── StoryReducer.kt
│ │ │ ├── story_deeplink
│ │ │ │ ├── StoryDeepLinkPresenter.kt
│ │ │ │ └── StoryDeepLinkView.kt
│ │ │ ├── submission
│ │ │ │ ├── SubmissionsPresenter.kt
│ │ │ │ └── SubmissionsView.kt
│ │ │ ├── user_courses
│ │ │ │ ├── UserCoursesFeature.kt
│ │ │ │ ├── dispatcher
│ │ │ │ │ └── UserCoursesActionDispatcher.kt
│ │ │ │ └── model
│ │ │ │ │ └── UserCourseAction.kt
│ │ │ ├── user_reviews
│ │ │ │ ├── UserReviewsFeature.kt
│ │ │ │ ├── UserReviewsViewModel.kt
│ │ │ │ ├── dispatcher
│ │ │ │ │ └── UserReviewsActionDispatcher.kt
│ │ │ │ ├── mapper
│ │ │ │ │ └── UserReviewsStateMapper.kt
│ │ │ │ └── reducer
│ │ │ │ │ └── UserReviewsReducer.kt
│ │ │ ├── video_player
│ │ │ │ ├── VideoPlayerPresenter.kt
│ │ │ │ └── VideoPlayerView.kt
│ │ │ └── wishlist
│ │ │ │ ├── WishlistFeature.kt
│ │ │ │ ├── WishlistOperationFeature.kt
│ │ │ │ ├── WishlistViewModel.kt
│ │ │ │ ├── dispatcher
│ │ │ │ ├── WishlistActionDispatcher.kt
│ │ │ │ └── WishlistOperationActionDispatcher.kt
│ │ │ │ ├── model
│ │ │ │ └── WishlistAction.kt
│ │ │ │ └── reducer
│ │ │ │ ├── WishlistOperationReducer.kt
│ │ │ │ └── WishlistReducer.kt
│ │ │ ├── remote
│ │ │ ├── achievement
│ │ │ │ ├── AchievementRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── AchievementProgressesResponse.kt
│ │ │ │ │ └── AchievementsResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── AchievementsService.kt
│ │ │ ├── analytic
│ │ │ │ ├── AnalyticRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── AnalyticBatchEvent.kt
│ │ │ │ └── service
│ │ │ │ │ └── AnalyticService.kt
│ │ │ ├── announcement
│ │ │ │ ├── AnnouncementRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── AnnouncementResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── AnnouncementService.kt
│ │ │ ├── assignment
│ │ │ │ ├── AssignmentRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── AssignmentResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── AssignmentService.kt
│ │ │ ├── attempt
│ │ │ │ ├── AttemptRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── AttemptRequest.kt
│ │ │ │ │ └── AttemptResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── AttemptService.kt
│ │ │ ├── auth
│ │ │ │ ├── AuthRemoteDataSourceImpl.kt
│ │ │ │ ├── exception
│ │ │ │ │ └── FailRefreshException.java
│ │ │ │ ├── interceptor
│ │ │ │ │ └── AuthInterceptor.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── OAuthResponse.kt
│ │ │ │ │ ├── StepikProfileResponse.kt
│ │ │ │ │ ├── TokenType.kt
│ │ │ │ │ └── UserRegistrationRequest.kt
│ │ │ │ └── service
│ │ │ │ │ ├── EmptyAuthService.kt
│ │ │ │ │ └── OAuthService.kt
│ │ │ ├── base
│ │ │ │ ├── CookieHelper.kt
│ │ │ │ ├── NetworkFactory.kt
│ │ │ │ ├── ReactiveCollectionsExtensions.kt
│ │ │ │ ├── UserAgentProvider.kt
│ │ │ │ ├── UserAgentProviderImpl.kt
│ │ │ │ ├── mapper
│ │ │ │ │ └── MetaResponsePageMapper.kt
│ │ │ │ └── model
│ │ │ │ │ └── MetaResponse.kt
│ │ │ ├── catalog
│ │ │ │ ├── CatalogRemoteDataSourceImpl.kt
│ │ │ │ ├── deserializers
│ │ │ │ │ └── CatalogBlockDeserializer.kt
│ │ │ │ ├── model
│ │ │ │ │ └── CatalogBlockResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── CatalogService.kt
│ │ │ ├── certificate
│ │ │ │ ├── model
│ │ │ │ │ ├── CertificateRequest.kt
│ │ │ │ │ └── CertificateResponse.kt
│ │ │ │ ├── service
│ │ │ │ │ └── CertificateService.kt
│ │ │ │ └── source
│ │ │ │ │ └── CertificateRemoteDataSourceImpl.kt
│ │ │ ├── comment
│ │ │ │ ├── CommentRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── CommentRequest.kt
│ │ │ │ │ └── CommentResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── CommentService.kt
│ │ │ ├── course
│ │ │ │ ├── model
│ │ │ │ │ ├── CourseResponse.kt
│ │ │ │ │ ├── CourseReviewSummaryResponse.kt
│ │ │ │ │ └── EnrollmentRequest.kt
│ │ │ │ ├── service
│ │ │ │ │ ├── CourseReviewSummaryService.kt
│ │ │ │ │ ├── CourseService.kt
│ │ │ │ │ └── EnrollmentService.kt
│ │ │ │ └── source
│ │ │ │ │ ├── CourseRemoteDataSourceImpl.kt
│ │ │ │ │ ├── CourseReviewSummaryRemoteDataSourceImpl.kt
│ │ │ │ │ └── EnrollmentRemoteDataSourceImpl.kt
│ │ │ ├── course_collection
│ │ │ │ ├── CourseCollectionRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── CourseCollectionsResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── CourseCollectionService.kt
│ │ │ ├── course_payments
│ │ │ │ ├── CoursePaymentsRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── CoursePaymentRequest.kt
│ │ │ │ │ ├── CoursePaymentsResponse.kt
│ │ │ │ │ ├── PromoCodeRequest.kt
│ │ │ │ │ └── PromoCodeResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── CoursePaymentService.kt
│ │ │ ├── course_recommendations
│ │ │ │ ├── CourseRecommendationsRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── CourseRecommendationsResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── CourseRecommendationsService.kt
│ │ │ ├── course_revenue
│ │ │ │ ├── CourseBeneficiariesRemoteDataSourceImpl.kt
│ │ │ │ ├── CourseBenefitByMonthsRemoteDataSourceImpl.kt
│ │ │ │ ├── CourseBenefitSummariesRemoteDataSourceImpl.kt
│ │ │ │ ├── CourseBenefitsRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── CourseBeneficiariesResponse.kt
│ │ │ │ │ ├── CourseBenefitByMonthsResponse.kt
│ │ │ │ │ ├── CourseBenefitSummariesResponse.kt
│ │ │ │ │ └── CourseBenefitsResponse.kt
│ │ │ │ └── service
│ │ │ │ │ ├── CourseBeneficiariesService.kt
│ │ │ │ │ ├── CourseBenefitByMonthsService.kt
│ │ │ │ │ ├── CourseBenefitSummariesService.kt
│ │ │ │ │ └── CourseBenefitsService.kt
│ │ │ ├── course_reviews
│ │ │ │ ├── CourseReviewsRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── CourseReviewRequest.kt
│ │ │ │ │ └── CourseReviewsResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── CourseReviewService.kt
│ │ │ ├── device
│ │ │ │ ├── DeviceRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── DeviceRequest.kt
│ │ │ │ │ └── DeviceResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── DeviceService.kt
│ │ │ ├── discussion_proxy
│ │ │ │ ├── DiscussionProxyRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── DiscussionProxyResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── DiscussionProxyService.kt
│ │ │ ├── discussion_thread
│ │ │ │ ├── DiscussionThreadRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── DiscussionThreadResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── DiscussionThreadService.kt
│ │ │ ├── email_address
│ │ │ │ ├── EmailAddressRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── EmailAddressRequest.kt
│ │ │ │ │ └── EmailAddressResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── EmailAddressService.kt
│ │ │ ├── exam_session
│ │ │ │ ├── ExamSessionRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── ExamSessionResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── ExamSessionService.kt
│ │ │ ├── last_step
│ │ │ │ ├── LastStepRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── LastStepResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── LastStepService.kt
│ │ │ ├── lesson
│ │ │ │ ├── LessonRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── LessonResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── LessonService.kt
│ │ │ ├── magic_links
│ │ │ │ ├── MagicLinksRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── MagicLinksRequest.kt
│ │ │ │ │ └── MagicLinksResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── MagicLinksService.kt
│ │ │ ├── mobile_tiers
│ │ │ │ ├── MobileTiersRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── MobileTierCalculation.kt
│ │ │ │ │ └── MobileTiersResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── MobileTiersService.kt
│ │ │ ├── notification
│ │ │ │ ├── NotificationRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── NotificationRequest.kt
│ │ │ │ │ ├── NotificationResponse.kt
│ │ │ │ │ └── NotificationStatusesResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── NotificationService.kt
│ │ │ ├── personal_deadlines
│ │ │ │ ├── DeadlinesRemoteDataSourceImpl.kt
│ │ │ │ └── mapper
│ │ │ │ │ └── DeadlinesMapper.kt
│ │ │ ├── personal_offers
│ │ │ │ ├── PersonalOffersRemoteDataSourceImpl.kt
│ │ │ │ └── mapper
│ │ │ │ │ └── PersonalOffersMapper.kt
│ │ │ ├── proctor_session
│ │ │ │ ├── ProctorSessionRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── ProctorSessionResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── ProctorSessionService.kt
│ │ │ ├── profile
│ │ │ │ ├── ProfileRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── ProfilePasswordRequest.kt
│ │ │ │ │ ├── ProfileRequest.kt
│ │ │ │ │ └── ProfileResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── ProfileService.kt
│ │ │ ├── progress
│ │ │ │ ├── ProgressRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── ProgressResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── ProgressService.kt
│ │ │ ├── rating
│ │ │ │ ├── RatingRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── RatingRequest.kt
│ │ │ │ │ ├── RatingResponse.kt
│ │ │ │ │ └── RatingRestoreResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── RatingService.kt
│ │ │ ├── recommendation
│ │ │ │ ├── RecommendationRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── RecommendationReactionsRequest.kt
│ │ │ │ │ └── RecommendationsResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── RecommendationService.kt
│ │ │ ├── remote_storage
│ │ │ │ ├── model
│ │ │ │ │ ├── StorageRequest.kt
│ │ │ │ │ └── StorageResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── RemoteStorageService.kt
│ │ │ ├── review
│ │ │ │ ├── ReviewRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── ReviewRequest.kt
│ │ │ │ │ └── ReviewResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── ReviewService.kt
│ │ │ ├── review_instruction
│ │ │ │ ├── ReviewInstructionRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── ReviewInstructionResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── ReviewInstructionService.kt
│ │ │ ├── review_session
│ │ │ │ ├── ReviewSessionRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── ReviewSessionRequest.kt
│ │ │ │ │ └── ReviewSessionResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── ReviewSessionService.kt
│ │ │ ├── search
│ │ │ │ ├── SearchRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── QueriesResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── SearchService.kt
│ │ │ ├── search_result
│ │ │ │ ├── SearchResultRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── SearchResultResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── SearchResultService.kt
│ │ │ ├── section
│ │ │ │ ├── SectionRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── SectionResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── SectionService.kt
│ │ │ ├── social_profile
│ │ │ │ ├── SocialProfileRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── SocialProfilesResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── SocialProfilesService.kt
│ │ │ ├── step
│ │ │ │ ├── StepRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── StepResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── StepService.kt
│ │ │ ├── step_source
│ │ │ │ ├── StepSourceRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── StepSourceRequest.kt
│ │ │ │ │ └── StepSourceResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── StepSourceService.kt
│ │ │ ├── stories
│ │ │ │ ├── StoryTemplatesRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── StoryTemplatesResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── StoryService.kt
│ │ │ ├── submission
│ │ │ │ ├── SubmissionRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── SubmissionRequest.kt
│ │ │ │ │ └── SubmissionResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── SubmissionService.kt
│ │ │ ├── unit
│ │ │ │ ├── UnitRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── UnitResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── UnitService.kt
│ │ │ ├── user
│ │ │ │ ├── UserRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── UserResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── UserService.kt
│ │ │ ├── user_activity
│ │ │ │ ├── UserActivityRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── UserActivityResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── UserActivityService.kt
│ │ │ ├── user_code_run
│ │ │ │ ├── UserCodeRunRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── UserCodeRunRequest.kt
│ │ │ │ │ └── UserCodeRunResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── UserCodeRunService.kt
│ │ │ ├── user_courses
│ │ │ │ ├── UserCoursesRemoteDataSourceImpl.kt
│ │ │ │ ├── mapper
│ │ │ │ │ └── UserCourseQueryMapper.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── UserCoursesRequest.kt
│ │ │ │ │ └── UserCoursesResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── UserCoursesService.kt
│ │ │ ├── user_profile
│ │ │ │ ├── UserProfileRemoteDataSourceImpl.kt
│ │ │ │ └── service
│ │ │ │ │ └── UserProfileService.kt
│ │ │ ├── view_assignment
│ │ │ │ ├── ViewAssignmentRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── ViewAssignmentRequest.kt
│ │ │ │ └── service
│ │ │ │ │ └── ViewAssignmentService.kt
│ │ │ ├── visited_courses
│ │ │ │ ├── VisitedCoursesRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ └── VisitedCoursesResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── VisitedCourseService.kt
│ │ │ ├── vote
│ │ │ │ ├── VoteRemoteDataSourceImpl.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── VoteRequest.kt
│ │ │ │ │ └── VoteResponse.kt
│ │ │ │ └── service
│ │ │ │ │ └── VoteService.kt
│ │ │ └── wishlist
│ │ │ │ ├── WishlistRemoteDataSourceImpl.kt
│ │ │ │ ├── WishlistService.kt
│ │ │ │ └── model
│ │ │ │ ├── WishlistRequest.kt
│ │ │ │ └── WishlistResponse.kt
│ │ │ └── view
│ │ │ ├── achievement
│ │ │ └── ui
│ │ │ │ ├── activity
│ │ │ │ └── AchievementsListActivity.kt
│ │ │ │ ├── adapter
│ │ │ │ └── delegate
│ │ │ │ │ ├── AchievementAdapterDelegate.kt
│ │ │ │ │ └── AchievementTileAdapterDelegate.kt
│ │ │ │ ├── delegate
│ │ │ │ └── AchievementTileDelegate.kt
│ │ │ │ ├── dialog
│ │ │ │ └── AchievementDetailsDialog.kt
│ │ │ │ ├── fragment
│ │ │ │ └── AchievementsListFragment.kt
│ │ │ │ ├── resolver
│ │ │ │ └── AchievementResourceResolver.kt
│ │ │ │ └── view
│ │ │ │ ├── AchievementCircleProgressView.kt
│ │ │ │ └── VectorRatingBar.kt
│ │ │ ├── analytic
│ │ │ └── AnalyticContentProvider.kt
│ │ │ ├── app_rating
│ │ │ └── ui
│ │ │ │ └── dialog
│ │ │ │ └── RateAppDialog.kt
│ │ │ ├── auth
│ │ │ ├── extension
│ │ │ │ └── LoginFailTypeExtension.kt
│ │ │ ├── model
│ │ │ │ ├── AutoAuth.kt
│ │ │ │ └── SocialNetwork.kt
│ │ │ └── ui
│ │ │ │ └── activity
│ │ │ │ ├── CredentialAuthActivity.kt
│ │ │ │ ├── RegistrationActivity.kt
│ │ │ │ └── SocialAuthActivity.kt
│ │ │ ├── banner
│ │ │ ├── extension
│ │ │ │ └── ItemBannerBindingExtension.kt
│ │ │ └── mapper
│ │ │ │ └── BannerResourcesMapper.kt
│ │ │ ├── base
│ │ │ ├── receiver
│ │ │ │ └── DismissedNotificationReceiver.kt
│ │ │ ├── routing
│ │ │ │ ├── ExternalDeepLinkProcessor.kt
│ │ │ │ └── InternalDeeplinkRouter.kt
│ │ │ ├── ui
│ │ │ │ ├── adapter
│ │ │ │ │ └── layoutmanager
│ │ │ │ │ │ └── TableLayoutManager.kt
│ │ │ │ ├── drawable
│ │ │ │ │ └── GravityDrawable.kt
│ │ │ │ ├── extension
│ │ │ │ │ ├── ColorExtensions.kt
│ │ │ │ │ ├── DrawableExtensions.kt
│ │ │ │ │ ├── ExternalLinkWebViewClient.kt
│ │ │ │ │ ├── FragmentExtensions.kt
│ │ │ │ │ └── RecyclerViewExtensions.kt
│ │ │ │ ├── mapper
│ │ │ │ │ └── DateMapper.kt
│ │ │ │ ├── span
│ │ │ │ │ └── TypefaceSpanCompat.java
│ │ │ │ └── widget
│ │ │ │ │ ├── ClearFocusEditText.kt
│ │ │ │ │ └── StoriesClearFocusEditText.kt
│ │ │ └── web
│ │ │ │ └── CustomTabsHelper.java
│ │ │ ├── catalog
│ │ │ ├── mapper
│ │ │ │ ├── AuthorCountMapper.kt
│ │ │ │ └── CourseCountMapper.kt
│ │ │ ├── model
│ │ │ │ └── CatalogItem.kt
│ │ │ └── ui
│ │ │ │ ├── adapter
│ │ │ │ └── delegate
│ │ │ │ │ ├── AuthorAdapterDelegate.kt
│ │ │ │ │ ├── AuthorListAdapterDelegate.kt
│ │ │ │ │ ├── CourseListAdapterDelegate.kt
│ │ │ │ │ ├── FiltersAdapterDelegate.kt
│ │ │ │ │ ├── LoadingAdapterDelegate.kt
│ │ │ │ │ ├── OfflineAdapterDelegate.kt
│ │ │ │ │ ├── RecommendedCourseListAdapterDelegate.kt
│ │ │ │ │ ├── SimpleCourseListDefaultAdapterDelegate.kt
│ │ │ │ │ ├── SimpleCourseListGridAdapterDelegate.kt
│ │ │ │ │ ├── SimpleCourseListGridFirstAdapter.kt
│ │ │ │ │ ├── SimpleCourseListsDefaultAdapterDelegate.kt
│ │ │ │ │ ├── SimpleCourseListsGridAdapterDelegate.kt
│ │ │ │ │ ├── SpecializationAdapterDelegate.kt
│ │ │ │ │ ├── SpecializationListAdapterDelegate.kt
│ │ │ │ │ └── StoriesAdapterDelegate.kt
│ │ │ │ ├── delegate
│ │ │ │ └── CatalogBlockHeaderDelegate.kt
│ │ │ │ └── fragment
│ │ │ │ └── CatalogFragment.kt
│ │ │ ├── certificate
│ │ │ └── ui
│ │ │ │ ├── activity
│ │ │ │ └── CertificatesActivity.kt
│ │ │ │ ├── adapter
│ │ │ │ └── delegate
│ │ │ │ │ ├── CertificateProfileAdapterDelegate.kt
│ │ │ │ │ ├── CertificatesAdapterDelegate.kt
│ │ │ │ │ └── CertificatesProfilePlaceholderAdapterDelegate.kt
│ │ │ │ └── dialog
│ │ │ │ ├── CertificateNameChangeConfirmationDialog.kt
│ │ │ │ └── CertificateNameChangeDialog.kt
│ │ │ ├── comment
│ │ │ ├── model
│ │ │ │ ├── CommentTag.kt
│ │ │ │ ├── DiscussionOrderItem.kt
│ │ │ │ └── DiscussionThreadContainer.kt
│ │ │ └── ui
│ │ │ │ ├── activity
│ │ │ │ └── CommentsActivity.kt
│ │ │ │ ├── adapter
│ │ │ │ ├── decorator
│ │ │ │ │ └── CommentItemDecoration.kt
│ │ │ │ └── delegate
│ │ │ │ │ ├── CommentDataAdapterDelegate.kt
│ │ │ │ │ ├── CommentLoadMoreRepliesAdapterDelegate.kt
│ │ │ │ │ ├── CommentPlaceholderAdapterDelegate.kt
│ │ │ │ │ └── CommentTagsAdapterDelegate.kt
│ │ │ │ └── dialog
│ │ │ │ ├── ComposeCommentDialogFragment.kt
│ │ │ │ ├── RemoveCommentDialogFragment.kt
│ │ │ │ └── SolutionCommentDialogFragment.kt
│ │ │ ├── course
│ │ │ ├── mapper
│ │ │ │ └── DisplayPriceMapper.kt
│ │ │ ├── model
│ │ │ │ └── CoursePromoCodeInfo.kt
│ │ │ ├── resolver
│ │ │ │ └── CoursePromoCodeResolver.kt
│ │ │ ├── routing
│ │ │ │ ├── CourseBranchDeepLinkParser.kt
│ │ │ │ ├── CourseBranchDeepLinkRouter.kt
│ │ │ │ ├── CourseDeepLinkBuilder.kt
│ │ │ │ ├── CourseDeepLinkHandler.kt
│ │ │ │ └── CourseScreenBranchRoute.kt
│ │ │ └── ui
│ │ │ │ ├── activity
│ │ │ │ └── CourseActivity.kt
│ │ │ │ ├── adapter
│ │ │ │ └── CoursePagerAdapter.kt
│ │ │ │ └── delegates
│ │ │ │ ├── CourseHeaderDelegate.kt
│ │ │ │ ├── CourseProgressDelegate.kt
│ │ │ │ └── CourseStatsDelegate.kt
│ │ │ ├── course_calendar
│ │ │ └── ui
│ │ │ │ ├── ChooseCalendarDialog.kt
│ │ │ │ └── ExplainCalendarPermissionDialog.kt
│ │ │ ├── course_complete
│ │ │ ├── model
│ │ │ │ └── CourseCompleteDialogViewInfo.kt
│ │ │ └── ui
│ │ │ │ └── dialog
│ │ │ │ └── CourseCompleteBottomSheetDialogFragment.kt
│ │ │ ├── course_content
│ │ │ ├── model
│ │ │ │ ├── CourseContentItem.kt
│ │ │ │ ├── CourseContentSectionDate.kt
│ │ │ │ └── RequiredSection.kt
│ │ │ └── ui
│ │ │ │ ├── adapter
│ │ │ │ ├── CourseContentAdapter.kt
│ │ │ │ ├── CourseContentDiffCallback.kt
│ │ │ │ ├── CourseContentTimelineAdapter.kt
│ │ │ │ ├── decorators
│ │ │ │ │ └── CourseContentTimelineDecorator.kt
│ │ │ │ └── delegates
│ │ │ │ │ ├── control_bar
│ │ │ │ │ ├── CourseContentControlBarClickListener.kt
│ │ │ │ │ └── CourseContentControlBarDelegate.kt
│ │ │ │ │ ├── section
│ │ │ │ │ ├── CourseContentSectionClickListener.kt
│ │ │ │ │ └── CourseContentSectionDelegate.kt
│ │ │ │ │ └── unit
│ │ │ │ │ ├── CourseContentUnitClickListener.kt
│ │ │ │ │ ├── CourseContentUnitDelegate.kt
│ │ │ │ │ └── CourseContentUnitPlaceholderDelegate.kt
│ │ │ │ ├── dialog
│ │ │ │ └── RemoveCachedContentDialog.kt
│ │ │ │ ├── fragment
│ │ │ │ ├── CourseContentFragment.kt
│ │ │ │ └── listener
│ │ │ │ │ ├── CourseContentSectionClickListenerImpl.kt
│ │ │ │ │ └── CourseContentUnitClickListenerImpl.kt
│ │ │ │ └── view
│ │ │ │ └── DownloadStatusView.kt
│ │ │ ├── course_info
│ │ │ ├── mapper
│ │ │ │ └── CourseInfoMapper.kt
│ │ │ ├── model
│ │ │ │ ├── CourseInfoItem.kt
│ │ │ │ └── CourseInfoType.kt
│ │ │ └── ui
│ │ │ │ ├── adapter
│ │ │ │ ├── decorators
│ │ │ │ │ └── CourseInfoDividerDecorator.kt
│ │ │ │ └── delegates
│ │ │ │ │ ├── CourseInfoAboutAdapterDelegate.kt
│ │ │ │ │ ├── CourseInfoAuthorsAdapterDelegate.kt
│ │ │ │ │ ├── CourseInfoInstructorsDelegate.kt
│ │ │ │ │ ├── CourseInfoSkillsAdapterDelegate.kt
│ │ │ │ │ ├── CourseInfoSummaryAdapterDelegate.kt
│ │ │ │ │ ├── CourseInfoTextBlockDelegate.kt
│ │ │ │ │ ├── CourseInfoVideoBlockDelegate.kt
│ │ │ │ │ └── instructors
│ │ │ │ │ ├── CourseInfoInstructorDataAdapterDelegate.kt
│ │ │ │ │ └── CourseInfoInstructorPlaceholderAdapterDelegate.kt
│ │ │ │ └── fragment
│ │ │ │ └── CourseInfoFragment.kt
│ │ │ ├── course_list
│ │ │ ├── delegate
│ │ │ │ ├── CourseCollectionAuthorListAdapterDelegate.kt
│ │ │ │ ├── CourseCollectionSimilarCoursesListAdapterDelegate.kt
│ │ │ │ ├── CourseContinueViewDelegate.kt
│ │ │ │ └── CourseListViewDelegate.kt
│ │ │ ├── notification
│ │ │ │ └── RemindAppNotificationDelegate.kt
│ │ │ ├── resolver
│ │ │ │ └── TableLayoutHorizontalSpanCountResolver.kt
│ │ │ ├── routing
│ │ │ │ └── CourseListCollectionDeepLinkHandler.kt
│ │ │ └── ui
│ │ │ │ ├── activity
│ │ │ │ ├── CourseListCollectionActivity.kt
│ │ │ │ ├── CourseListQueryActivity.kt
│ │ │ │ ├── CourseListSearchActivity.kt
│ │ │ │ ├── CourseListUserActivity.kt
│ │ │ │ ├── CourseListVisitedActivity.kt
│ │ │ │ └── CourseListWishActivity.kt
│ │ │ │ ├── adapter
│ │ │ │ ├── decorator
│ │ │ │ │ └── CourseListCollectionHeaderDecoration.kt
│ │ │ │ ├── delegate
│ │ │ │ │ ├── CourseListItemAdapterDelegate.kt
│ │ │ │ │ ├── CourseListPlaceHolderAdapterDelegate.kt
│ │ │ │ │ ├── CourseListViewAllAdapterDelegate.kt
│ │ │ │ │ ├── VisitedCourseListItemAdapterDelegate.kt
│ │ │ │ │ └── VisitedCourseListPlaceHolderAdapterDelegate.kt
│ │ │ │ └── viewpager
│ │ │ │ │ └── CourseListUserPagerAdapter.kt
│ │ │ │ ├── delegate
│ │ │ │ └── CoursePropertiesDelegate.kt
│ │ │ │ ├── fragment
│ │ │ │ ├── CourseListCollectionFragment.kt
│ │ │ │ ├── CourseListPopularFragment.kt
│ │ │ │ ├── CourseListQueryFragment.kt
│ │ │ │ ├── CourseListSearchFragment.kt
│ │ │ │ ├── CourseListUserFragment.kt
│ │ │ │ ├── CourseListUserHorizontalFragment.kt
│ │ │ │ ├── CourseListVisitedFragment.kt
│ │ │ │ ├── CourseListVisitedHorizontalFragment.kt
│ │ │ │ └── CourseListWishFragment.kt
│ │ │ │ └── widget
│ │ │ │ ├── CertificateProgressView.kt
│ │ │ │ └── CourseListSkeletonView.kt
│ │ │ ├── course_news
│ │ │ ├── model
│ │ │ │ └── AnnouncementBadge.kt
│ │ │ └── ui
│ │ │ │ ├── adapter
│ │ │ │ └── delegate
│ │ │ │ │ └── CourseNewsAdapterDelegate.kt
│ │ │ │ └── fragment
│ │ │ │ └── CourseNewsFragment.kt
│ │ │ ├── course_purchase
│ │ │ ├── delegate
│ │ │ │ ├── BuyActionViewDelegate.kt
│ │ │ │ ├── PromoCodeViewDelegate.kt
│ │ │ │ └── WishlistViewDelegate.kt
│ │ │ └── ui
│ │ │ │ └── dialog
│ │ │ │ └── CoursePurchaseBottomSheetDialogFragment.kt
│ │ │ ├── course_revenue
│ │ │ ├── mapper
│ │ │ │ └── RevenuePriceMapper.kt
│ │ │ ├── model
│ │ │ │ └── CourseBenefitOperationItem.kt
│ │ │ └── ui
│ │ │ │ ├── activity
│ │ │ │ └── CourseRevenueActivity.kt
│ │ │ │ ├── adapter
│ │ │ │ └── delegate
│ │ │ │ │ ├── CourseBenefitsAdapterDelegate.kt
│ │ │ │ │ ├── CourseBenefitsListAdapterDelegate.kt
│ │ │ │ │ ├── CourseBenefitsLoadingAdapterDelegate.kt
│ │ │ │ │ ├── CourseBenefitsMonthlyAdapterDelegate.kt
│ │ │ │ │ ├── CourseBenefitsMonthlyListAdapterDelegate.kt
│ │ │ │ │ └── CourseBenefitsMonthlyLoadingAdapterDelegate.kt
│ │ │ │ ├── delegate
│ │ │ │ └── CourseBenefitSummaryViewDelegate.kt
│ │ │ │ └── dialog
│ │ │ │ └── TransactionBottomSheetDialogFragment.kt
│ │ │ ├── course_reviews
│ │ │ └── ui
│ │ │ │ ├── adapter
│ │ │ │ └── delegates
│ │ │ │ │ ├── CourseReviewDataDelegate.kt
│ │ │ │ │ ├── CourseReviewPlaceholderDelegate.kt
│ │ │ │ │ ├── CourseReviewSummaryDelegate.kt
│ │ │ │ │ └── CourseReviewsComposeBannerDelegate.kt
│ │ │ │ ├── dialog
│ │ │ │ └── ComposeCourseReviewDialogFragment.kt
│ │ │ │ └── fragment
│ │ │ │ └── CourseReviewsFragment.kt
│ │ │ ├── course_search
│ │ │ ├── adapter
│ │ │ │ └── delegate
│ │ │ │ │ └── CourseSearchResultAdapterDelegate.kt
│ │ │ └── dialog
│ │ │ │ └── CourseSearchDialogFragment.kt
│ │ │ ├── download
│ │ │ └── ui
│ │ │ │ ├── activity
│ │ │ │ └── DownloadActivity.kt
│ │ │ │ └── adapter
│ │ │ │ └── DownloadedCoursesAdapterDelegate.kt
│ │ │ ├── fast_continue
│ │ │ └── ui
│ │ │ │ └── fragment
│ │ │ │ ├── FastContinueFragment.kt
│ │ │ │ └── FastContinueNewHomeFragment.kt
│ │ │ ├── filter
│ │ │ └── ui
│ │ │ │ └── dialog
│ │ │ │ ├── CoursesLangDialogFragment.kt
│ │ │ │ └── FilterBottomSheetDialogFragment.kt
│ │ │ ├── font_size_settings
│ │ │ └── ui
│ │ │ │ └── dialog
│ │ │ │ └── ChooseFontSizeDialogFragment.kt
│ │ │ ├── fragment_pager
│ │ │ ├── ActiveFragmentPagerAdapter.kt
│ │ │ └── FragmentDelegateScrollStateChangeListener.kt
│ │ │ ├── glide
│ │ │ ├── mapper
│ │ │ │ ├── ImageResourceDecoder.kt
│ │ │ │ ├── ImageResourceTranscoder.kt
│ │ │ │ ├── RelativeUrlLoader.java
│ │ │ │ └── SvgSoftwareLayerSetter.java
│ │ │ ├── model
│ │ │ │ ├── GlideRequestFactory.kt
│ │ │ │ └── ImageResource.kt
│ │ │ └── ui
│ │ │ │ └── extension
│ │ │ │ └── GlideImageViewWrapper.kt
│ │ │ ├── in_app_web_view
│ │ │ ├── routing
│ │ │ │ └── InAppWebViewUrlProcessor.kt
│ │ │ └── ui
│ │ │ │ ├── activity
│ │ │ │ └── InAppWebViewActivity.kt
│ │ │ │ └── dialog
│ │ │ │ └── InAppWebViewDialogFragment.kt
│ │ │ ├── injection
│ │ │ ├── achievement
│ │ │ │ └── AchievementDataModule.kt
│ │ │ ├── achievements
│ │ │ │ ├── AchievementsComponent.kt
│ │ │ │ └── AchievementsModule.kt
│ │ │ ├── analytic
│ │ │ │ ├── AnalyticComponent.kt
│ │ │ │ └── AnalyticModule.kt
│ │ │ ├── announcement
│ │ │ │ └── AnnouncementDataModule.kt
│ │ │ ├── assignment
│ │ │ │ └── AssignmentDataModule.kt
│ │ │ ├── attempt
│ │ │ │ └── AttemptDataModule.kt
│ │ │ ├── auth
│ │ │ │ ├── AuthComponent.kt
│ │ │ │ ├── AuthDataModule.kt
│ │ │ │ └── AuthModule.kt
│ │ │ ├── base
│ │ │ │ └── Authorized.kt
│ │ │ ├── calendar
│ │ │ │ └── CalendarDataModule.kt
│ │ │ ├── catalog
│ │ │ │ ├── CatalogBlockPresentationModule.kt
│ │ │ │ ├── CatalogBusModule.kt
│ │ │ │ ├── CatalogComponent.kt
│ │ │ │ ├── CatalogDataModule.kt
│ │ │ │ └── FiltersBus.kt
│ │ │ ├── certificate
│ │ │ │ ├── CertificateComponent.kt
│ │ │ │ ├── CertificateDataModule.kt
│ │ │ │ └── CertificateModule.kt
│ │ │ ├── code_preference
│ │ │ │ └── CodePreferenceDataModule.kt
│ │ │ ├── comment
│ │ │ │ ├── CommentDataModule.kt
│ │ │ │ ├── CommentsComponent.kt
│ │ │ │ ├── CommentsModule.kt
│ │ │ │ ├── ComposeCommentComponent.kt
│ │ │ │ └── ComposeCommentModule.kt
│ │ │ ├── course
│ │ │ │ ├── CourseComponent.kt
│ │ │ │ ├── CourseDataModule.kt
│ │ │ │ ├── CourseHeaderDelegateFactory.kt
│ │ │ │ ├── CourseModule.kt
│ │ │ │ ├── CourseNewsPresentationModule.kt
│ │ │ │ ├── CoursePresentationComponent.kt
│ │ │ │ ├── CoursePresentationModule.kt
│ │ │ │ ├── CoursePresentationScope.kt
│ │ │ │ ├── CoursePurchaseDataModule.kt
│ │ │ │ ├── CourseRoutingModule.kt
│ │ │ │ ├── CourseScope.kt
│ │ │ │ └── EnrollmentCourseUpdates.kt
│ │ │ ├── course_calendar
│ │ │ │ └── CourseCalendarDataModule.kt
│ │ │ ├── course_collection
│ │ │ │ └── CourseCollectionDataModule.kt
│ │ │ ├── course_complete
│ │ │ │ ├── CourseCompleteComponent.kt
│ │ │ │ └── CourseCompletePresentationModule.kt
│ │ │ ├── course_list
│ │ │ │ ├── CourseListBusModule.kt
│ │ │ │ ├── UserCoursesLoadedBus.kt
│ │ │ │ ├── UserCoursesOperationBus.kt
│ │ │ │ ├── UserCoursesUpdateBus.kt
│ │ │ │ ├── WishlistOperationBus.kt
│ │ │ │ ├── collection
│ │ │ │ │ ├── CourseListCollectionComponent.kt
│ │ │ │ │ ├── CourseListCollectionModule.kt
│ │ │ │ │ └── CourseListCollectionScope.kt
│ │ │ │ ├── factory
│ │ │ │ │ ├── CourseListAdapterDelegateFactory.kt
│ │ │ │ │ └── RecommendedCourseListAdapterDelegateFactory.kt
│ │ │ │ ├── query
│ │ │ │ │ ├── CourseListQueryComponent.kt
│ │ │ │ │ ├── CourseListQueryModule.kt
│ │ │ │ │ └── CourseListQueryScope.kt
│ │ │ │ ├── search_result
│ │ │ │ │ ├── CourseListSearchResultComponent.kt
│ │ │ │ │ ├── CourseListSearchResultModule.kt
│ │ │ │ │ └── CourseListSearchResultScope.kt
│ │ │ │ ├── user
│ │ │ │ │ ├── CourseListUserComponent.kt
│ │ │ │ │ ├── CourseListUserModule.kt
│ │ │ │ │ └── CourseListUserScope.kt
│ │ │ │ ├── visited
│ │ │ │ │ ├── CourseListVisitedComponent.kt
│ │ │ │ │ ├── CourseListVisitedModule.kt
│ │ │ │ │ └── CourseListVisitedScope.kt
│ │ │ │ └── wishlist
│ │ │ │ │ ├── CourseListWishComponent.kt
│ │ │ │ │ ├── CourseListWishModule.kt
│ │ │ │ │ └── CourseListWishScope.kt
│ │ │ ├── course_payments
│ │ │ │ └── CoursePaymentsDataModule.kt
│ │ │ ├── course_purchase
│ │ │ │ ├── CoursePurchaseComponent.kt
│ │ │ │ ├── CoursePurchaseDataModule.kt
│ │ │ │ └── CoursePurchasePresentationModule.kt
│ │ │ ├── course_recommendations
│ │ │ │ └── CourseRecommendationsDataModule.kt
│ │ │ ├── course_revenue
│ │ │ │ ├── CourseBeneficiariesDataModule.kt
│ │ │ │ ├── CourseBenefitByMonthsDataModule.kt
│ │ │ │ ├── CourseBenefitSummariesDataModule.kt
│ │ │ │ ├── CourseBenefitsDataModule.kt
│ │ │ │ ├── CourseRevenueComponent.kt
│ │ │ │ └── CourseRevenuePresentationModule.kt
│ │ │ ├── course_reviews
│ │ │ │ ├── ComposeCourseReviewComponent.kt
│ │ │ │ ├── ComposeCourseReviewModule.kt
│ │ │ │ └── CourseReviewsDataModule.kt
│ │ │ ├── course_search
│ │ │ │ ├── CourseSearchComponent.kt
│ │ │ │ └── CourseSearchPresentationModule.kt
│ │ │ ├── device
│ │ │ │ └── DeviceDataModule.kt
│ │ │ ├── discussion_proxy
│ │ │ │ └── DiscussionProxyDataModule.kt
│ │ │ ├── discussion_thread
│ │ │ │ └── DiscussionThreadDataModule.kt
│ │ │ ├── download
│ │ │ │ ├── DownloadComponent.kt
│ │ │ │ ├── DownloadDataModule.kt
│ │ │ │ ├── DownloadModule.kt
│ │ │ │ └── DownloadsProgressStatusMapper.kt
│ │ │ ├── email_address
│ │ │ │ └── EmailAddressDataModule.kt
│ │ │ ├── exam_session
│ │ │ │ └── ExamSessionDataModule.kt
│ │ │ ├── fast_continue
│ │ │ │ ├── FastContinueComponent.kt
│ │ │ │ ├── FastContinueModule.kt
│ │ │ │ └── FastContinueScope.kt
│ │ │ ├── feedback
│ │ │ │ ├── FeedbackComponent.kt
│ │ │ │ ├── FeedbackDataModule.kt
│ │ │ │ └── FeedbackModule.kt
│ │ │ ├── filter
│ │ │ │ ├── FilterComponent.kt
│ │ │ │ └── FilterModule.kt
│ │ │ ├── font_size_settings
│ │ │ │ ├── FontSizeComponent.kt
│ │ │ │ └── FontSizeModule.kt
│ │ │ ├── glide
│ │ │ │ └── GlideCustomModule.java
│ │ │ ├── in_app_web_view
│ │ │ │ ├── InAppWebViewComponent.kt
│ │ │ │ └── InAppWebViewModule.kt
│ │ │ ├── last_step
│ │ │ │ └── LastStepDataModule.kt
│ │ │ ├── learning_actions
│ │ │ │ └── LearningActionsComponent.kt
│ │ │ ├── lesson
│ │ │ │ ├── LessonComponent.kt
│ │ │ │ ├── LessonDataModule.kt
│ │ │ │ └── LessonModule.kt
│ │ │ ├── lesson_demo
│ │ │ │ ├── LessonDemoComponent.kt
│ │ │ │ └── LessonDemoPresentationModule.kt
│ │ │ ├── magic_links
│ │ │ │ ├── MagicLinksComponent.kt
│ │ │ │ ├── MagicLinksDataModule.kt
│ │ │ │ └── MagicLinksModule.kt
│ │ │ ├── mobile_tiers
│ │ │ │ └── MobileTiersDataModule.kt
│ │ │ ├── network
│ │ │ │ ├── NetworkDataModule.kt
│ │ │ │ └── NetworkModule.kt
│ │ │ ├── notification
│ │ │ │ └── NotificationDataModule.kt
│ │ │ ├── personal_deadlines
│ │ │ │ └── PersonalDeadlinesDataModule.kt
│ │ │ ├── personal_offers
│ │ │ │ └── PersonalOffersDataModule.kt
│ │ │ ├── proctor_session
│ │ │ │ └── ProctorSessionDataModule.kt
│ │ │ ├── profile
│ │ │ │ ├── ProfileBusModule.kt
│ │ │ │ ├── ProfileComponent.kt
│ │ │ │ ├── ProfileCoursesComponent.kt
│ │ │ │ ├── ProfileCoursesPresentationModule.kt
│ │ │ │ ├── ProfileCoursesScope.kt
│ │ │ │ ├── ProfileDataModule.kt
│ │ │ │ ├── ProfileModule.kt
│ │ │ │ ├── ProfileScope.kt
│ │ │ │ └── UserId.kt
│ │ │ ├── profile_edit
│ │ │ │ ├── ProfileEditComponent.kt
│ │ │ │ └── ProfileEditModule.kt
│ │ │ ├── progress
│ │ │ │ ├── ProgressBusModule.kt
│ │ │ │ └── ProgressDataModule.kt
│ │ │ ├── purchase_notification
│ │ │ │ └── PurchaseNotificationDataModule.kt
│ │ │ ├── qualifiers
│ │ │ │ ├── AuthLock.kt
│ │ │ │ ├── AuthServiceQualifiers.kt
│ │ │ │ └── DebugInterceptors.kt
│ │ │ ├── rating
│ │ │ │ └── RatingDataModule.kt
│ │ │ ├── recommendation
│ │ │ │ └── RecommendationModule.kt
│ │ │ ├── remote_storage
│ │ │ │ └── RemoteStorageDataModule.kt
│ │ │ ├── review
│ │ │ │ └── ReviewDataModule.kt
│ │ │ ├── review_instruction
│ │ │ │ └── ReviewInstructionDataModule.kt
│ │ │ ├── review_session
│ │ │ │ └── ReviewSessionDataModule.kt
│ │ │ ├── rubric
│ │ │ │ └── RubricDataModule.kt
│ │ │ ├── search
│ │ │ │ ├── CatalogSearchSuggestionsPresentationModule.kt
│ │ │ │ ├── CourseSearchSuggestionsPresentationModule.kt
│ │ │ │ └── SearchDataModule.kt
│ │ │ ├── search_result
│ │ │ │ └── SearchResultDataModule.kt
│ │ │ ├── section
│ │ │ │ └── SectionDataModule.kt
│ │ │ ├── serialization
│ │ │ │ └── SerializationModule.kt
│ │ │ ├── settings
│ │ │ │ ├── SettingsComponent.kt
│ │ │ │ └── SettingsModule.kt
│ │ │ ├── social_profile
│ │ │ │ ├── SocialProfileComponent.kt
│ │ │ │ └── SocialProfileDataModule.kt
│ │ │ ├── solutions
│ │ │ │ ├── SolutionsBus.kt
│ │ │ │ ├── SolutionsBusModule.kt
│ │ │ │ ├── SolutionsComponent.kt
│ │ │ │ ├── SolutionsModule.kt
│ │ │ │ └── SolutionsSentBus.kt
│ │ │ ├── step
│ │ │ │ ├── StepComponent.kt
│ │ │ │ ├── StepDataModule.kt
│ │ │ │ ├── StepDiscussionBus.kt
│ │ │ │ ├── StepDiscussionBusModule.kt
│ │ │ │ ├── StepModule.kt
│ │ │ │ ├── StepScope.kt
│ │ │ │ └── StepWrapperBusModule.kt
│ │ │ ├── step_content
│ │ │ │ └── StepContentModule.kt
│ │ │ ├── step_content_text
│ │ │ │ ├── TextStepContentComponent.kt
│ │ │ │ └── TextStepContentModule.kt
│ │ │ ├── step_content_video
│ │ │ │ ├── VideoStepContentComponent.kt
│ │ │ │ └── VideoStepContentModule.kt
│ │ │ ├── step_quiz
│ │ │ │ ├── CodePreferenceBus.kt
│ │ │ │ ├── StepQuizBus.kt
│ │ │ │ ├── StepQuizBusModule.kt
│ │ │ │ ├── StepQuizModule.kt
│ │ │ │ └── StepQuizPresentationModule.kt
│ │ │ ├── step_source
│ │ │ │ ├── StepSourceDataModule.kt
│ │ │ │ └── StepSourceModule.kt
│ │ │ ├── stories
│ │ │ │ ├── StoriesComponent.kt
│ │ │ │ └── StoriesPresentationModule.kt
│ │ │ ├── story
│ │ │ │ ├── StoryComponent.kt
│ │ │ │ ├── StoryDataModule.kt
│ │ │ │ ├── StoryPresentationModule.kt
│ │ │ │ └── StoryReactionDataModule.kt
│ │ │ ├── story_deeplink
│ │ │ │ ├── StoryDeepLinkComponent.kt
│ │ │ │ └── StoryDeepLinkPresentationModule.kt
│ │ │ ├── submission
│ │ │ │ ├── SubmissionComponent.kt
│ │ │ │ ├── SubmissionDataModule.kt
│ │ │ │ └── SubmissionModule.kt
│ │ │ ├── unit
│ │ │ │ └── UnitDataModule.kt
│ │ │ ├── user
│ │ │ │ └── UserDataModule.kt
│ │ │ ├── user_activity
│ │ │ │ └── UserActivityDataModule.kt
│ │ │ ├── user_code_run
│ │ │ │ ├── UserCodeRunComponent.kt
│ │ │ │ └── UserCodeRunModule.kt
│ │ │ ├── user_courses
│ │ │ │ └── UserCoursesDataModule.kt
│ │ │ ├── user_profile
│ │ │ │ └── UserProfileDataModule.kt
│ │ │ ├── user_reviews
│ │ │ │ ├── LearningActionsScope.kt
│ │ │ │ ├── UserCourseReviewOperationBus.kt
│ │ │ │ ├── UserReviewsBusModule.kt
│ │ │ │ └── UserReviewsPresentationModule.kt
│ │ │ ├── video_player
│ │ │ │ ├── VideoPlayerComponent.kt
│ │ │ │ ├── VideoPlayerModule.kt
│ │ │ │ └── VideoTimestampDataModule.kt
│ │ │ ├── view_assignment
│ │ │ │ ├── ViewAssignmentBus.kt
│ │ │ │ ├── ViewAssignmentBusModule.kt
│ │ │ │ ├── ViewAssignmentComponent.kt
│ │ │ │ └── ViewAssignmentDataModule.kt
│ │ │ ├── visited_courses
│ │ │ │ └── VisitedCoursesDataModule.kt
│ │ │ ├── vote
│ │ │ │ └── VoteDataModule.kt
│ │ │ └── wishlist
│ │ │ │ ├── WishlistDataModule.kt
│ │ │ │ └── WishlistPresentationModule.kt
│ │ │ ├── latex
│ │ │ ├── js_interface
│ │ │ │ └── ModelViewerInterface.kt
│ │ │ ├── mapper
│ │ │ │ └── LatexWebViewMapper.kt
│ │ │ ├── model
│ │ │ │ ├── TextAttributes.kt
│ │ │ │ └── block
│ │ │ │ │ ├── BaseStyleBlock.kt
│ │ │ │ │ └── SelectionColorStyleBlock.kt
│ │ │ └── ui
│ │ │ │ └── widget
│ │ │ │ ├── LatexView.kt
│ │ │ │ ├── LatexWebView.kt
│ │ │ │ └── ProgressableWebViewClient.kt
│ │ │ ├── learning_actions
│ │ │ ├── model
│ │ │ │ └── LearningActionsItem.kt
│ │ │ └── ui
│ │ │ │ ├── adapter
│ │ │ │ └── delegate
│ │ │ │ │ ├── UserReviewsActionAdapterDelegate.kt
│ │ │ │ │ └── WishlistActionAdapterDelegate.kt
│ │ │ │ └── fragment
│ │ │ │ └── LearningActionsFragment.kt
│ │ │ ├── lesson
│ │ │ ├── routing
│ │ │ │ └── LessonDeepLinkHandler.kt
│ │ │ └── ui
│ │ │ │ ├── activity
│ │ │ │ └── LessonActivity.kt
│ │ │ │ ├── delegate
│ │ │ │ └── LessonInfoTooltipDelegate.kt
│ │ │ │ ├── dialog
│ │ │ │ └── SectionUnavailableDialogFragment.kt
│ │ │ │ ├── interfaces
│ │ │ │ ├── Moveable.kt
│ │ │ │ └── Playable.kt
│ │ │ │ └── mapper
│ │ │ │ └── LessonTitleMapper.kt
│ │ │ ├── lesson_demo
│ │ │ └── ui
│ │ │ │ └── dialog
│ │ │ │ └── LessonDemoCompleteBottomSheetDialogFragment.kt
│ │ │ ├── magic_links
│ │ │ └── ui
│ │ │ │ └── dialog
│ │ │ │ └── MagicLinkDialogFragment.kt
│ │ │ ├── notification
│ │ │ ├── FcmNotificationHandler.kt
│ │ │ ├── FcmNotificationHandlerImpl.kt
│ │ │ ├── NotificationDelegate.kt
│ │ │ ├── NotificationPublisher.kt
│ │ │ ├── NotificationPublisherImpl.kt
│ │ │ ├── StepikNotificationManager.kt
│ │ │ ├── StepikNotificationManagerImpl.kt
│ │ │ ├── extension
│ │ │ │ └── PendingIntentCompat.kt
│ │ │ ├── helpers
│ │ │ │ ├── NotificationHelper.kt
│ │ │ │ └── NotificationHelperImpl.kt
│ │ │ ├── receiver
│ │ │ │ ├── AlarmReceiver.kt
│ │ │ │ └── BootCompleteReceiver.kt
│ │ │ └── service
│ │ │ │ ├── BootCompleteService.kt
│ │ │ │ └── NotificationAlarmService.kt
│ │ │ ├── onboarding
│ │ │ ├── model
│ │ │ │ ├── IconBackground.kt
│ │ │ │ ├── OnboardingCourseList.kt
│ │ │ │ └── OnboardingGoal.kt
│ │ │ ├── resolver
│ │ │ │ └── OnboardingRemoteConfigResolver.kt
│ │ │ └── ui
│ │ │ │ └── activity
│ │ │ │ ├── OnboardingCourseListsActivity.kt
│ │ │ │ └── OnboardingGoalActivity.kt
│ │ │ ├── personal_deadlines
│ │ │ ├── notification
│ │ │ │ └── DeadlinesNotificationDelegate.kt
│ │ │ └── ui
│ │ │ │ ├── adapters
│ │ │ │ ├── EditDeadlinesAdapter.kt
│ │ │ │ └── LearningRateAdapter.kt
│ │ │ │ └── dialogs
│ │ │ │ ├── EditDeadlinesDialog.kt
│ │ │ │ └── LearningRateDialog.kt
│ │ │ ├── profile
│ │ │ └── ui
│ │ │ │ ├── activity
│ │ │ │ └── ProfileActivity.kt
│ │ │ │ ├── animation
│ │ │ │ └── ProfileHeaderAnimationDelegate.kt
│ │ │ │ ├── delegate
│ │ │ │ └── ProfileStatsDelegate.kt
│ │ │ │ └── fragment
│ │ │ │ └── ProfileFragment.kt
│ │ │ ├── profile_achievements
│ │ │ └── ui
│ │ │ │ └── fragment
│ │ │ │ └── ProfileAchievementsFragment.kt
│ │ │ ├── profile_activities
│ │ │ └── ui
│ │ │ │ └── fragment
│ │ │ │ └── ProfileActivitiesFragment.kt
│ │ │ ├── profile_certificates
│ │ │ └── ui
│ │ │ │ └── fragment
│ │ │ │ └── ProfileCertificatesFragment.kt
│ │ │ ├── profile_courses
│ │ │ └── ui
│ │ │ │ └── fragment
│ │ │ │ └── ProfileCoursesFragment.kt
│ │ │ ├── profile_detail
│ │ │ └── ui
│ │ │ │ └── fragment
│ │ │ │ └── ProfileDetailFragment.kt
│ │ │ ├── profile_edit
│ │ │ ├── model
│ │ │ │ └── ProfileEditItem.kt
│ │ │ └── ui
│ │ │ │ ├── activity
│ │ │ │ ├── ProfileEditActivity.kt
│ │ │ │ ├── ProfileEditInfoActivity.kt
│ │ │ │ └── ProfileEditPasswordActivity.kt
│ │ │ │ ├── adapter
│ │ │ │ └── delegates
│ │ │ │ │ └── ProfileEditTextDelegate.kt
│ │ │ │ └── util
│ │ │ │ └── ValidateUtil.kt
│ │ │ ├── profile_id
│ │ │ └── ui
│ │ │ │ └── fragment
│ │ │ │ └── ProfileIdFragment.kt
│ │ │ ├── profile_links
│ │ │ └── ui
│ │ │ │ ├── delegate
│ │ │ │ └── ProfileLinksAdapterDelegate.kt
│ │ │ │ └── fragment
│ │ │ │ └── ProfileLinksFragment.kt
│ │ │ ├── profile_notification
│ │ │ └── ui
│ │ │ │ └── fragment
│ │ │ │ └── ProfileNotificationFragment.kt
│ │ │ ├── progress
│ │ │ └── ui
│ │ │ │ └── mapper
│ │ │ │ └── ProgressTextMapper.kt
│ │ │ ├── purchase_notification
│ │ │ └── notification
│ │ │ │ └── PurchaseNotificationDelegate.kt
│ │ │ ├── routing
│ │ │ └── deeplink
│ │ │ │ ├── BranchDeepLinkParser.kt
│ │ │ │ ├── BranchDeepLinkRouter.kt
│ │ │ │ └── BranchRoute.kt
│ │ │ ├── settings
│ │ │ ├── mapper
│ │ │ │ └── StorageLocationDescriptionMapper.kt
│ │ │ ├── routing
│ │ │ │ └── DeleteAccountDeepLinkBuilder.kt
│ │ │ └── ui
│ │ │ │ ├── activity
│ │ │ │ └── SettingsActivity.kt
│ │ │ │ ├── dialog
│ │ │ │ └── NightModeSettingDialogFragment.kt
│ │ │ │ └── fragment
│ │ │ │ └── SettingsFragment.kt
│ │ │ ├── solutions
│ │ │ └── ui
│ │ │ │ ├── activity
│ │ │ │ └── SolutionsActivity.kt
│ │ │ │ ├── adapter
│ │ │ │ └── delegate
│ │ │ │ │ ├── SolutionDisclaimerAdapterDelegate.kt
│ │ │ │ │ ├── SolutionLessonAdapterDelegate.kt
│ │ │ │ │ ├── SolutionSectionAdapterDelegate.kt
│ │ │ │ │ └── SolutionSubmissionAdapterDelegate.kt
│ │ │ │ └── dialog
│ │ │ │ └── RemoveSolutionsDialog.kt
│ │ │ ├── splash
│ │ │ └── notification
│ │ │ │ ├── RemindRegistrationNotificationDelegate.kt
│ │ │ │ └── RetentionNotificationDelegate.kt
│ │ │ ├── step
│ │ │ ├── model
│ │ │ │ ├── SectionUnavailableAction.kt
│ │ │ │ └── StepNavigationAction.kt
│ │ │ ├── routing
│ │ │ │ └── StepDeepLinkBuilder.kt
│ │ │ └── ui
│ │ │ │ ├── delegate
│ │ │ │ ├── StepDiscussionsDelegate.kt
│ │ │ │ ├── StepNavigationDelegate.kt
│ │ │ │ └── StepSolutionStatsDelegate.kt
│ │ │ │ ├── fragment
│ │ │ │ └── StepFragment.kt
│ │ │ │ └── interfaces
│ │ │ │ └── StepMenuNavigator.kt
│ │ │ ├── step_content
│ │ │ └── ui
│ │ │ │ └── factory
│ │ │ │ ├── StepContentFragmentFactory.kt
│ │ │ │ └── StepContentFragmentFactoryImpl.kt
│ │ │ ├── step_content_text
│ │ │ └── ui
│ │ │ │ └── fragment
│ │ │ │ └── TextStepContentFragment.kt
│ │ │ ├── step_content_video
│ │ │ └── ui
│ │ │ │ └── fragment
│ │ │ │ └── VideoStepContentFragment.kt
│ │ │ ├── step_quiz
│ │ │ ├── mapper
│ │ │ │ └── StepQuizFeedbackMapper.kt
│ │ │ ├── model
│ │ │ │ └── StepQuizFeedbackState.kt
│ │ │ ├── resolver
│ │ │ │ └── StepQuizFormResolver.kt
│ │ │ └── ui
│ │ │ │ ├── delegate
│ │ │ │ ├── StepQuizDelegate.kt
│ │ │ │ ├── StepQuizFeedbackBlocksDelegate.kt
│ │ │ │ └── StepQuizFormDelegate.kt
│ │ │ │ ├── factory
│ │ │ │ ├── StepQuizFormFactory.kt
│ │ │ │ ├── StepQuizFragmentFactory.kt
│ │ │ │ ├── StepQuizFragmentFactoryImpl.kt
│ │ │ │ └── StepQuizViewStateDelegateFactory.kt
│ │ │ │ └── fragment
│ │ │ │ └── DefaultStepQuizFragment.kt
│ │ │ ├── step_quiz_choice
│ │ │ ├── mapper
│ │ │ │ └── ChoiceStepQuizOptionsMapper.kt
│ │ │ ├── model
│ │ │ │ └── Choice.kt
│ │ │ └── ui
│ │ │ │ ├── adapter
│ │ │ │ └── ChoicesAdapterDelegate.kt
│ │ │ │ ├── delegate
│ │ │ │ ├── ChoiceStepQuizFormDelegate.kt
│ │ │ │ └── LayerListDrawableDelegate.kt
│ │ │ │ ├── fragment
│ │ │ │ └── ChoiceStepQuizFragment.kt
│ │ │ │ └── view
│ │ │ │ └── QuizItemView.kt
│ │ │ ├── step_quiz_code
│ │ │ ├── mapper
│ │ │ │ ├── CodeStepQuizDetailsMapper.kt
│ │ │ │ └── CodeStepQuizFormStateMapper.kt
│ │ │ ├── model
│ │ │ │ ├── CodeDetail.kt
│ │ │ │ └── CodeStepQuizFormState.kt
│ │ │ └── ui
│ │ │ │ ├── adapter
│ │ │ │ └── delegate
│ │ │ │ │ ├── CodeDetailLimitAdapterDelegate.kt
│ │ │ │ │ ├── CodeDetailSampleAdapterDelegate.kt
│ │ │ │ │ └── CodeLangAdapterDelegate.kt
│ │ │ │ ├── delegate
│ │ │ │ ├── CodeLayoutDelegate.kt
│ │ │ │ ├── CodeQuizInstructionDelegate.kt
│ │ │ │ ├── CodeStepQuizFormDelegate.kt
│ │ │ │ └── CodeStepRunCodeDelegate.kt
│ │ │ │ └── fragment
│ │ │ │ └── CodeStepQuizFragment.kt
│ │ │ ├── step_quiz_fill_blanks
│ │ │ └── ui
│ │ │ │ ├── adapter
│ │ │ │ └── delegate
│ │ │ │ │ ├── FillBlanksItemInputAdapterDelegate.kt
│ │ │ │ │ ├── FillBlanksItemSelectAdapterDelegate.kt
│ │ │ │ │ └── FillBlanksItemTextAdapterDelegate.kt
│ │ │ │ ├── delegate
│ │ │ │ └── FillBlanksStepQuizFormDelegate.kt
│ │ │ │ ├── fragment
│ │ │ │ ├── FillBlanksInputBottomSheetDialogFragment.kt
│ │ │ │ └── FillBlanksStepQuizFragment.kt
│ │ │ │ ├── mapper
│ │ │ │ └── FillBlanksItemMapper.kt
│ │ │ │ └── model
│ │ │ │ └── FillBlanksItem.kt
│ │ │ ├── step_quiz_fullscreen_code
│ │ │ └── ui
│ │ │ │ ├── adapter
│ │ │ │ └── CodeStepQuizFullScreenPagerAdapter.kt
│ │ │ │ └── dialog
│ │ │ │ └── CodeStepQuizFullScreenDialogFragment.kt
│ │ │ ├── step_quiz_matching
│ │ │ └── ui
│ │ │ │ ├── adapter
│ │ │ │ └── delegate
│ │ │ │ │ ├── MatchingItemOptionAdapterDelegate.kt
│ │ │ │ │ └── MatchingItemTitleAdapterDelegate.kt
│ │ │ │ ├── delegate
│ │ │ │ └── MatchingStepQuizFormDelegate.kt
│ │ │ │ ├── fragment
│ │ │ │ └── MatchingStepQuizFragment.kt
│ │ │ │ ├── mapper
│ │ │ │ └── MatchingItemMapper.kt
│ │ │ │ ├── model
│ │ │ │ └── MatchingItem.kt
│ │ │ │ └── view
│ │ │ │ └── TableChoiceItemView.kt
│ │ │ ├── step_quiz_pycharm
│ │ │ └── ui
│ │ │ │ └── fragment
│ │ │ │ └── PyCharmStepQuizFragment.kt
│ │ │ ├── step_quiz_review
│ │ │ ├── routing
│ │ │ │ └── StepQuizReviewDeepLinkBuilder.kt
│ │ │ └── ui
│ │ │ │ ├── delegate
│ │ │ │ └── StepQuizReviewDelegate.kt
│ │ │ │ ├── factory
│ │ │ │ └── StepQuizFormReviewFactory.kt
│ │ │ │ ├── fragment
│ │ │ │ ├── StepQuizReviewFragment.kt
│ │ │ │ └── StepQuizReviewTeacherFragment.kt
│ │ │ │ └── widget
│ │ │ │ └── ReviewStatusView.kt
│ │ │ ├── step_quiz_sorting
│ │ │ └── ui
│ │ │ │ ├── adapter
│ │ │ │ └── delegate
│ │ │ │ │ └── SortingOptionAdapterDelegate.kt
│ │ │ │ ├── delegate
│ │ │ │ └── SortingStepQuizFormDelegate.kt
│ │ │ │ ├── fragment
│ │ │ │ └── SortingStepQuizFragment.kt
│ │ │ │ ├── mapper
│ │ │ │ └── SortingOptionMapper.kt
│ │ │ │ └── model
│ │ │ │ └── SortingOption.kt
│ │ │ ├── step_quiz_sql
│ │ │ └── ui
│ │ │ │ ├── delegate
│ │ │ │ └── SqlStepQuizFormDelegate.kt
│ │ │ │ └── fragment
│ │ │ │ └── SqlStepQuizFragment.kt
│ │ │ ├── step_quiz_table
│ │ │ └── ui
│ │ │ │ ├── adapter
│ │ │ │ └── delegate
│ │ │ │ │ ├── TableColumnMultipleSelectionItemAdapterDelegate.kt
│ │ │ │ │ ├── TableColumnSingleSelectionItemAdapterDelegate.kt
│ │ │ │ │ └── TableSelectionItemAdapterDelegate.kt
│ │ │ │ ├── delegate
│ │ │ │ └── TableStepQuizFormDelegate.kt
│ │ │ │ ├── fragment
│ │ │ │ ├── TableColumnSelectionBottomSheetDialogFragment.kt
│ │ │ │ └── TableStepQuizFragment.kt
│ │ │ │ ├── mapper
│ │ │ │ └── TableSelectionItemMapper.kt
│ │ │ │ └── model
│ │ │ │ └── TableSelectionItem.kt
│ │ │ ├── step_quiz_text
│ │ │ └── ui
│ │ │ │ ├── delegate
│ │ │ │ └── TextStepQuizFormDelegate.kt
│ │ │ │ └── fragment
│ │ │ │ └── TextStepQuizFragment.kt
│ │ │ ├── step_quiz_unsupported
│ │ │ └── ui
│ │ │ │ └── fragment
│ │ │ │ └── UnsupportedStepQuizFragment.kt
│ │ │ ├── step_source
│ │ │ └── ui
│ │ │ │ └── dialog
│ │ │ │ └── EditStepSourceDialogFragment.kt
│ │ │ ├── stories
│ │ │ ├── ui
│ │ │ │ └── fragment
│ │ │ │ │ └── StoriesFragment.kt
│ │ │ └── viewmodel
│ │ │ │ └── StoriesViewModel.kt
│ │ │ ├── story
│ │ │ └── viewmodel
│ │ │ │ └── StoryViewModel.kt
│ │ │ ├── story_deeplink
│ │ │ ├── routing
│ │ │ │ └── StoryDeepLinkHandler.kt
│ │ │ └── ui
│ │ │ │ └── dialog
│ │ │ │ └── StoryDeepLinkDialogFragment.kt
│ │ │ ├── streak
│ │ │ ├── model
│ │ │ │ └── StreakNotificationType.kt
│ │ │ ├── notification
│ │ │ │ └── StreakNotificationDelegate.kt
│ │ │ └── ui
│ │ │ │ └── dialog
│ │ │ │ └── StreakNotificationDialogFragment.kt
│ │ │ ├── submission
│ │ │ ├── routing
│ │ │ │ └── SubmissionDeepLinkBuilder.kt
│ │ │ └── ui
│ │ │ │ ├── adapter
│ │ │ │ └── delegate
│ │ │ │ │ └── SubmissionDataAdapterDelegate.kt
│ │ │ │ ├── delegate
│ │ │ │ └── SubmissionViewDelegate.kt
│ │ │ │ └── dialog
│ │ │ │ ├── SubmissionsDialogFragment.kt
│ │ │ │ └── SubmissionsQueryFilterDialogFragment.kt
│ │ │ ├── ui
│ │ │ ├── delegate
│ │ │ │ └── ViewStateDelegate.kt
│ │ │ ├── layout
│ │ │ │ └── VerticalDragLayout.kt
│ │ │ └── listener
│ │ │ │ └── FragmentViewPagerScrollStateListener.kt
│ │ │ ├── user_reviews
│ │ │ └── ui
│ │ │ │ ├── activity
│ │ │ │ └── UserReviewsActivity.kt
│ │ │ │ ├── adapter
│ │ │ │ ├── decorator
│ │ │ │ │ └── UserCourseReviewItemDecoration.kt
│ │ │ │ └── delegate
│ │ │ │ │ ├── UserReviewsPlaceholderAdapterDelegate.kt
│ │ │ │ │ ├── UserReviewsPotentialAdapterDelegate.kt
│ │ │ │ │ ├── UserReviewsPotentialHeaderAdapterDelegate.kt
│ │ │ │ │ ├── UserReviewsReviewedAdapterDelegate.kt
│ │ │ │ │ └── UserReviewsReviewedHeaderAdapterDelegate.kt
│ │ │ │ └── fragment
│ │ │ │ └── UserReviewsFragment.kt
│ │ │ └── video_player
│ │ │ ├── model
│ │ │ ├── VideoPlayerData.kt
│ │ │ └── VideoPlayerMediaData.kt
│ │ │ └── ui
│ │ │ ├── activity
│ │ │ └── VideoPlayerActivity.kt
│ │ │ ├── adapter
│ │ │ └── VideoPlayerMediaDescriptionAdapter.kt
│ │ │ ├── receiver
│ │ │ ├── HeadphonesReceiver.kt
│ │ │ └── InternetConnectionReceiverCompat.kt
│ │ │ └── service
│ │ │ └── VideoPlayerForegroundService.kt
│ └── res
│ │ ├── anim-ldrtl
│ │ ├── slide_in_from_end.xml
│ │ ├── slide_in_from_start.xml
│ │ ├── slide_out_to_end.xml
│ │ └── slide_out_to_start.xml
│ │ ├── anim
│ │ ├── adaptive_dialog_in.xml
│ │ ├── adaptive_dialog_out.xml
│ │ ├── fade_in.xml
│ │ ├── fade_out.xml
│ │ ├── no_transition.xml
│ │ ├── popup_enter.xml
│ │ ├── popup_exit.xml
│ │ ├── push_down.xml
│ │ ├── push_up.xml
│ │ ├── slide_in_from_bottom.xml
│ │ ├── slide_in_from_end.xml
│ │ ├── slide_in_from_start.xml
│ │ ├── slide_out_to_bottom.xml
│ │ ├── slide_out_to_end.xml
│ │ ├── slide_out_to_start.xml
│ │ └── slide_out_to_top.xml
│ │ ├── animator
│ │ ├── arrow_bottom_to_top.xml
│ │ └── arrow_top_to_bottom.xml
│ │ ├── color
│ │ ├── adaptive_rating_item_text_color.xml
│ │ ├── color_bottom_navigation_tint.xml
│ │ ├── color_control_selector.xml
│ │ ├── color_correct_arrow_down.xml
│ │ ├── color_enabled_arrow_down.xml
│ │ ├── color_login_edit_text.xml
│ │ ├── color_on_surface_alpha_12_selector.xml
│ │ ├── color_peer_review_step.xml
│ │ ├── color_peer_review_step_title.xml
│ │ ├── color_run_code_body.xml
│ │ ├── color_run_code_title.xml
│ │ ├── color_step_quiz_sorting_stroke.xml
│ │ ├── color_step_tab.xml
│ │ ├── color_story_reaction_tint.xml
│ │ ├── color_wrong_arrow_down.xml
│ │ └── material_outlined_stroke_color.xml
│ │ ├── drawable-hdpi
│ │ ├── general_placeholder.webp
│ │ ├── ic_action_done.webp
│ │ ├── ic_action_more_vert.webp
│ │ ├── ic_action_search.webp
│ │ ├── ic_animation.webp
│ │ ├── ic_close_dark.webp
│ │ ├── ic_close_white_24dp.webp
│ │ ├── ic_close_white_with_padding.webp
│ │ ├── ic_content_copy_material_24.webp
│ │ ├── ic_easy_quiz.webp
│ │ ├── ic_edit.webp
│ │ ├── ic_empty.webp
│ │ ├── ic_empty_downloads.webp
│ │ ├── ic_empty_login.webp
│ │ ├── ic_empty_notifications.webp
│ │ ├── ic_empty_search.webp
│ │ ├── ic_forward_10_white_48dp.webp
│ │ ├── ic_hard_quiz.webp
│ │ ├── ic_home.webp
│ │ ├── ic_lesson_info.webp
│ │ ├── ic_linkedin.webp
│ │ ├── ic_mobile_notifications.webp
│ │ ├── ic_more_without_padding.webp
│ │ ├── ic_nav_arrow_right.webp
│ │ ├── ic_no_wifi.webp
│ │ ├── ic_notification_icon_1.webp
│ │ ├── ic_open_in_browser_material_24px.webp
│ │ ├── ic_pause_circle_outline_white_72.webp
│ │ ├── ic_play_circle_outline_white_72.webp
│ │ ├── ic_playbackrate_0_5_light.webp
│ │ ├── ic_playbackrate_0_75_light.webp
│ │ ├── ic_playbackrate_1_25_light.webp
│ │ ├── ic_playbackrate_1_5_light.webp
│ │ ├── ic_playbackrate_1_75_light.webp
│ │ ├── ic_playbackrate_1_light.webp
│ │ ├── ic_playbackrate_2_0_light.webp
│ │ ├── ic_player_next.webp
│ │ ├── ic_player_notification.webp
│ │ ├── ic_profile.webp
│ │ ├── ic_profile_edit_save.webp
│ │ ├── ic_profile_edit_save_disabled.webp
│ │ ├── ic_progress_star_green_rastr.webp
│ │ ├── ic_progress_star_white_rastr.webp
│ │ ├── ic_rating.webp
│ │ ├── ic_replay_10_white_48dp.webp
│ │ ├── ic_search_menu.webp
│ │ ├── ic_settings_dark.webp
│ │ ├── ic_share_dark.webp
│ │ ├── ic_share_material_24px.webp
│ │ ├── ic_shortcut_find_courses.webp
│ │ ├── ic_shortcut_profile.webp
│ │ ├── ic_star_rate_gray.webp
│ │ ├── ic_star_rate_yellow.webp
│ │ ├── ic_stepik_logotype_square_black.webp
│ │ ├── ic_video_pin.webp
│ │ └── stepic_logo.webp
│ │ ├── drawable-mdpi
│ │ ├── general_placeholder.webp
│ │ ├── ic_action_done.webp
│ │ ├── ic_action_more_vert.webp
│ │ ├── ic_action_search.webp
│ │ ├── ic_animation.webp
│ │ ├── ic_close_dark.webp
│ │ ├── ic_close_white_24dp.webp
│ │ ├── ic_close_white_with_padding.webp
│ │ ├── ic_content_copy_material_24.webp
│ │ ├── ic_easy_quiz.webp
│ │ ├── ic_edit.webp
│ │ ├── ic_empty.webp
│ │ ├── ic_empty_downloads.webp
│ │ ├── ic_empty_login.webp
│ │ ├── ic_empty_notifications.webp
│ │ ├── ic_empty_search.webp
│ │ ├── ic_forward_10_white_48dp.webp
│ │ ├── ic_hard_quiz.webp
│ │ ├── ic_home.webp
│ │ ├── ic_lesson_info.webp
│ │ ├── ic_linkedin.webp
│ │ ├── ic_mobile_notifications.webp
│ │ ├── ic_more_without_padding.webp
│ │ ├── ic_nav_arrow_right.webp
│ │ ├── ic_no_wifi.webp
│ │ ├── ic_notification_icon_1.webp
│ │ ├── ic_open_in_browser_material_24px.webp
│ │ ├── ic_pause_circle_outline_white_72.webp
│ │ ├── ic_play_circle_outline_white_72.webp
│ │ ├── ic_playbackrate_0_5_light.webp
│ │ ├── ic_playbackrate_0_75_light.webp
│ │ ├── ic_playbackrate_1_25_light.webp
│ │ ├── ic_playbackrate_1_5_light.webp
│ │ ├── ic_playbackrate_1_75_light.webp
│ │ ├── ic_playbackrate_1_light.webp
│ │ ├── ic_playbackrate_2_0_light.webp
│ │ ├── ic_player_next.webp
│ │ ├── ic_player_notification.webp
│ │ ├── ic_profile.webp
│ │ ├── ic_profile_edit_save.webp
│ │ ├── ic_profile_edit_save_disabled.webp
│ │ ├── ic_progress_star_green_rastr.webp
│ │ ├── ic_progress_star_white_rastr.webp
│ │ ├── ic_rating.webp
│ │ ├── ic_replay_10_white_48dp.webp
│ │ ├── ic_search_menu.webp
│ │ ├── ic_settings_dark.webp
│ │ ├── ic_share_dark.webp
│ │ ├── ic_share_material_24px.webp
│ │ ├── ic_shortcut_find_courses.webp
│ │ ├── ic_shortcut_profile.webp
│ │ ├── ic_star_rate_gray.webp
│ │ ├── ic_star_rate_yellow.webp
│ │ ├── ic_stepik_logotype_square_black.webp
│ │ ├── ic_video_pin.webp
│ │ └── stepic_logo.webp
│ │ ├── drawable-night-hdpi
│ │ └── general_placeholder.webp
│ │ ├── drawable-night-mdpi
│ │ └── general_placeholder.webp
│ │ ├── drawable-night-xhdpi
│ │ └── general_placeholder.webp
│ │ ├── drawable-night-xxhdpi
│ │ └── general_placeholder.webp
│ │ ├── drawable-night-xxxhdpi
│ │ └── general_placeholder.webp
│ │ ├── drawable-night
│ │ ├── bg_academy_logo.xml
│ │ ├── bg_bottom_sheet_dialog.xml
│ │ ├── bg_fast_continue.xml
│ │ ├── bg_simple_course_list_grid_first.xml
│ │ ├── bg_user_course_list.xml
│ │ ├── ic_academy_illustration.xml
│ │ ├── ic_academy_logo.xml
│ │ └── onboarding_featured_background.xml
│ │ ├── drawable-xhdpi
│ │ ├── general_placeholder.webp
│ │ ├── ic_action_done.webp
│ │ ├── ic_action_more_vert.webp
│ │ ├── ic_action_search.webp
│ │ ├── ic_animation.webp
│ │ ├── ic_close_dark.webp
│ │ ├── ic_close_white_24dp.webp
│ │ ├── ic_close_white_with_padding.webp
│ │ ├── ic_content_copy_material_24.webp
│ │ ├── ic_easy_quiz.webp
│ │ ├── ic_edit.webp
│ │ ├── ic_empty.webp
│ │ ├── ic_empty_downloads.webp
│ │ ├── ic_empty_login.webp
│ │ ├── ic_empty_notifications.webp
│ │ ├── ic_empty_search.webp
│ │ ├── ic_forward_10_white_48dp.webp
│ │ ├── ic_hard_quiz.webp
│ │ ├── ic_home.webp
│ │ ├── ic_lesson_info.webp
│ │ ├── ic_linkedin.webp
│ │ ├── ic_mobile_notifications.webp
│ │ ├── ic_more_without_padding.webp
│ │ ├── ic_nav_arrow_right.webp
│ │ ├── ic_no_wifi.webp
│ │ ├── ic_notification_icon_1.webp
│ │ ├── ic_open_in_browser_material_24px.webp
│ │ ├── ic_pause_circle_outline_white_72.webp
│ │ ├── ic_play_circle_outline_white_72.webp
│ │ ├── ic_playbackrate_0_5_light.webp
│ │ ├── ic_playbackrate_0_75_light.webp
│ │ ├── ic_playbackrate_1_25_light.webp
│ │ ├── ic_playbackrate_1_5_light.webp
│ │ ├── ic_playbackrate_1_75_light.webp
│ │ ├── ic_playbackrate_1_light.webp
│ │ ├── ic_playbackrate_2_0_light.webp
│ │ ├── ic_player_next.webp
│ │ ├── ic_player_notification.webp
│ │ ├── ic_profile.webp
│ │ ├── ic_profile_edit_save.webp
│ │ ├── ic_profile_edit_save_disabled.webp
│ │ ├── ic_progress_star_green_rastr.webp
│ │ ├── ic_progress_star_white_rastr.webp
│ │ ├── ic_rating.webp
│ │ ├── ic_replay_10_white_48dp.webp
│ │ ├── ic_search_menu.webp
│ │ ├── ic_settings_dark.webp
│ │ ├── ic_share_dark.webp
│ │ ├── ic_share_material_24px.webp
│ │ ├── ic_shortcut_find_courses.webp
│ │ ├── ic_shortcut_profile.webp
│ │ ├── ic_star_rate_gray.webp
│ │ ├── ic_star_rate_yellow.webp
│ │ ├── ic_stepik_logotype_square_black.webp
│ │ ├── ic_video_pin.webp
│ │ └── stepic_logo.webp
│ │ ├── drawable-xxhdpi
│ │ ├── general_placeholder.webp
│ │ ├── ic_action_done.webp
│ │ ├── ic_action_more_vert.webp
│ │ ├── ic_action_search.webp
│ │ ├── ic_animation.webp
│ │ ├── ic_close_dark.webp
│ │ ├── ic_close_white_24dp.webp
│ │ ├── ic_close_white_with_padding.webp
│ │ ├── ic_content_copy_material_24.webp
│ │ ├── ic_easy_quiz.webp
│ │ ├── ic_edit.webp
│ │ ├── ic_empty.webp
│ │ ├── ic_empty_downloads.webp
│ │ ├── ic_empty_login.webp
│ │ ├── ic_empty_notifications.webp
│ │ ├── ic_empty_search.webp
│ │ ├── ic_forward_10_white_48dp.webp
│ │ ├── ic_hard_quiz.webp
│ │ ├── ic_home.webp
│ │ ├── ic_lesson_info.webp
│ │ ├── ic_linkedin.webp
│ │ ├── ic_mobile_notifications.webp
│ │ ├── ic_more_without_padding.webp
│ │ ├── ic_nav_arrow_right.webp
│ │ ├── ic_no_wifi.webp
│ │ ├── ic_notification_icon_1.webp
│ │ ├── ic_open_in_browser_material_24px.webp
│ │ ├── ic_pause_circle_outline_white_72.webp
│ │ ├── ic_play_circle_outline_white_72.webp
│ │ ├── ic_playbackrate_0_5_light.webp
│ │ ├── ic_playbackrate_0_75_light.webp
│ │ ├── ic_playbackrate_1_25_light.webp
│ │ ├── ic_playbackrate_1_5_light.webp
│ │ ├── ic_playbackrate_1_75_light.webp
│ │ ├── ic_playbackrate_1_light.webp
│ │ ├── ic_playbackrate_2_0_light.webp
│ │ ├── ic_player_next.webp
│ │ ├── ic_player_notification.webp
│ │ ├── ic_profile.webp
│ │ ├── ic_profile_edit_save.webp
│ │ ├── ic_profile_edit_save_disabled.webp
│ │ ├── ic_progress_star_green_rastr.webp
│ │ ├── ic_progress_star_white_rastr.webp
│ │ ├── ic_rating.webp
│ │ ├── ic_replay_10_white_48dp.webp
│ │ ├── ic_search_menu.webp
│ │ ├── ic_settings_dark.webp
│ │ ├── ic_share_dark.webp
│ │ ├── ic_share_material_24px.webp
│ │ ├── ic_shortcut_find_courses.webp
│ │ ├── ic_shortcut_profile.webp
│ │ ├── ic_star_rate_gray.webp
│ │ ├── ic_star_rate_yellow.webp
│ │ ├── ic_stepik_logotype_square_black.webp
│ │ ├── ic_video_pin.webp
│ │ └── stepic_logo.webp
│ │ ├── drawable-xxxhdpi
│ │ ├── general_placeholder.webp
│ │ ├── ic_action_done.webp
│ │ ├── ic_action_more_vert.webp
│ │ ├── ic_action_search.webp
│ │ ├── ic_animation.webp
│ │ ├── ic_close_dark.webp
│ │ ├── ic_close_white_24dp.webp
│ │ ├── ic_close_white_with_padding.webp
│ │ ├── ic_content_copy_material_24.webp
│ │ ├── ic_easy_quiz.webp
│ │ ├── ic_edit.webp
│ │ ├── ic_empty.webp
│ │ ├── ic_empty_downloads.webp
│ │ ├── ic_empty_login.webp
│ │ ├── ic_empty_notifications.webp
│ │ ├── ic_empty_search.webp
│ │ ├── ic_forward_10_white_48dp.webp
│ │ ├── ic_hard_quiz.webp
│ │ ├── ic_home.webp
│ │ ├── ic_lesson_info.webp
│ │ ├── ic_linkedin.webp
│ │ ├── ic_mobile_notifications.webp
│ │ ├── ic_more_without_padding.webp
│ │ ├── ic_nav_arrow_right.webp
│ │ ├── ic_no_wifi.webp
│ │ ├── ic_notification_icon_1.webp
│ │ ├── ic_open_in_browser_material_24px.webp
│ │ ├── ic_pause_circle_outline_white_72.webp
│ │ ├── ic_play_circle_outline_white_72.webp
│ │ ├── ic_playbackrate_0_5_light.webp
│ │ ├── ic_playbackrate_0_75_light.webp
│ │ ├── ic_playbackrate_1_25_light.webp
│ │ ├── ic_playbackrate_1_5_light.webp
│ │ ├── ic_playbackrate_1_75_light.webp
│ │ ├── ic_playbackrate_1_light.webp
│ │ ├── ic_playbackrate_2_0_light.webp
│ │ ├── ic_player_next.webp
│ │ ├── ic_player_notification.webp
│ │ ├── ic_profile.webp
│ │ ├── ic_profile_edit_save.webp
│ │ ├── ic_profile_edit_save_disabled.webp
│ │ ├── ic_progress_star_green_rastr.webp
│ │ ├── ic_progress_star_white_rastr.webp
│ │ ├── ic_rating.webp
│ │ ├── ic_replay_10_white_48dp.webp
│ │ ├── ic_search_menu.webp
│ │ ├── ic_settings_dark.webp
│ │ ├── ic_share_dark.webp
│ │ ├── ic_share_material_24px.webp
│ │ ├── ic_shortcut_find_courses.webp
│ │ ├── ic_shortcut_profile.webp
│ │ ├── ic_star_rate_gray.webp
│ │ ├── ic_star_rate_yellow.webp
│ │ ├── ic_stepik_logotype_square_black.webp
│ │ ├── ic_video_pin.webp
│ │ └── stepic_logo.webp
│ │ ├── drawable
│ │ ├── active_story_marker.xml
│ │ ├── avd_arrow_bottom_to_top.xml
│ │ ├── avd_arrow_top_to_bottom.xml
│ │ ├── background_home_streak_view.xml
│ │ ├── background_popup.xml
│ │ ├── background_popup_light.xml
│ │ ├── background_toolbar_translucent.xml
│ │ ├── bg_academy_logo.xml
│ │ ├── bg_adaptive_exp_bubble.xml
│ │ ├── bg_adaptive_stamp.xml
│ │ ├── bg_announcement_composing.xml
│ │ ├── bg_announcement_on_event.xml
│ │ ├── bg_announcement_scheduled.xml
│ │ ├── bg_announcement_sent.xml
│ │ ├── bg_attempt_submission_correct_item.xml
│ │ ├── bg_attempt_submission_incorrect_item.xml
│ │ ├── bg_attempt_submission_item.xml
│ │ ├── bg_attempt_submission_item_correct_ripple.xml
│ │ ├── bg_attempt_submission_item_incorrect_ripple.xml
│ │ ├── bg_attempt_submission_item_ripple.xml
│ │ ├── bg_bottom_sheet_dialog.xml
│ │ ├── bg_catalog_course_list_default.xml
│ │ ├── bg_catalog_course_list_grid.xml
│ │ ├── bg_catalog_search_bar.xml
│ │ ├── bg_certificate_profile_item.xml
│ │ ├── bg_comment_item.xml
│ │ ├── bg_comment_item_solution.xml
│ │ ├── bg_comment_tag_course_moderator.xml
│ │ ├── bg_comment_tag_course_team.xml
│ │ ├── bg_comment_tag_pinned.xml
│ │ ├── bg_course_item_placeholder.xml
│ │ ├── bg_course_purchase_promo_code_submit.xml
│ │ ├── bg_course_review_summary_progress.xml
│ │ ├── bg_divider_vertical.xml
│ │ ├── bg_divider_vertical_course_search.xml
│ │ ├── bg_fast_continue.xml
│ │ ├── bg_item_adaptive_rating.xml
│ │ ├── bg_item_course_news.xml
│ │ ├── bg_overlay_story.xml
│ │ ├── bg_peer_review_step_active.xml
│ │ ├── bg_peer_review_step_error.xml
│ │ ├── bg_peer_review_step_link.xml
│ │ ├── bg_peer_review_step_passed.xml
│ │ ├── bg_placeholder_blue.xml
│ │ ├── bg_placeholder_fire.xml
│ │ ├── bg_run_code.xml
│ │ ├── bg_shape_rounded.xml
│ │ ├── bg_shape_rounded_16dp.xml
│ │ ├── bg_shape_rounded_bottom.xml
│ │ ├── bg_shape_rounded_top.xml
│ │ ├── bg_shape_square.xml
│ │ ├── bg_simple_course_list_grid_first.xml
│ │ ├── bg_step_quiz_choice_item.xml
│ │ ├── bg_step_quiz_choice_item_feedback.xml
│ │ ├── bg_step_quiz_choice_ripple.xml
│ │ ├── bg_step_quiz_feedback_correct.xml
│ │ ├── bg_step_quiz_feedback_correct_ripple.xml
│ │ ├── bg_step_quiz_feedback_correct_with_hint.xml
│ │ ├── bg_step_quiz_feedback_correct_with_hint_ripple.xml
│ │ ├── bg_step_quiz_fill_blanks_item.xml
│ │ ├── bg_step_quiz_fill_blanks_ripple.xml
│ │ ├── bg_step_quiz_text_field.xml
│ │ ├── bg_submission_item_divider.xml
│ │ ├── bg_transparent_button.xml
│ │ ├── bg_user_course_list.xml
│ │ ├── branded_logo.xml
│ │ ├── continue_learning_cover.webp
│ │ ├── course_complete_blue_violet_gradient.xml
│ │ ├── course_complete_yellow_green_gradient.xml
│ │ ├── course_complete_yellow_red_gradient.xml
│ │ ├── course_review_rating_progress.xml
│ │ ├── demo_lesson_bottom_sheet_header_gradient.xml
│ │ ├── dialog_background.webp
│ │ ├── downloads_progress.xml
│ │ ├── exo_edit_mode_logo.xml
│ │ ├── fg_profile_cover.xml
│ │ ├── gradient_background.xml
│ │ ├── gradient_background_blue_squared.xml
│ │ ├── gradient_background_fire_squared.xml
│ │ ├── gray_circle_small.xml
│ │ ├── ic_academy_illustration.xml
│ │ ├── ic_academy_logo.xml
│ │ ├── ic_achievement_empty.xml
│ │ ├── ic_adaptive_correct.xml
│ │ ├── ic_adaptive_right_bracket.xml
│ │ ├── ic_adaptive_wrong.xml
│ │ ├── ic_announcement_badge_composing.xml
│ │ ├── ic_announcement_badge_scheduled.xml
│ │ ├── ic_announcement_badge_sending.xml
│ │ ├── ic_announcement_badge_sent.xml
│ │ ├── ic_arrow_back.xml
│ │ ├── ic_arrow_bottom.xml
│ │ ├── ic_arrow_forward.xml
│ │ ├── ic_arrow_top.xml
│ │ ├── ic_authors_info_course_count.xml
│ │ ├── ic_banner_blue.xml
│ │ ├── ic_banner_green.xml
│ │ ├── ic_banner_violet.xml
│ │ ├── ic_certificate.xml
│ │ ├── ic_certificate_distinct.xml
│ │ ├── ic_certificate_regular.xml
│ │ ├── ic_check_box.xml
│ │ ├── ic_check_box_filled.xml
│ │ ├── ic_check_rounded.xml
│ │ ├── ic_check_white.xml
│ │ ├── ic_checkmark.xml
│ │ ├── ic_chevron_forward.xml
│ │ ├── ic_clock.xml
│ │ ├── ic_close.xml
│ │ ├── ic_code_basic.xml
│ │ ├── ic_code_checked.xml
│ │ ├── ic_comment_basic.xml
│ │ ├── ic_comment_dislike.xml
│ │ ├── ic_comment_like.xml
│ │ ├── ic_comment_submit.xml
│ │ ├── ic_comment_tag_pinned.xml
│ │ ├── ic_comments_ordering.xml
│ │ ├── ic_course_content_date_dot.xml
│ │ ├── ic_course_content_dislike.xml
│ │ ├── ic_course_content_like.xml
│ │ ├── ic_course_info_about.xml
│ │ ├── ic_course_info_certificate.xml
│ │ ├── ic_course_info_details.xml
│ │ ├── ic_course_info_instructors.xml
│ │ ├── ic_course_info_language.xml
│ │ ├── ic_course_info_learners_count.xml
│ │ ├── ic_course_info_requirements.xml
│ │ ├── ic_course_info_target_audience.xml
│ │ ├── ic_course_info_time_to_complete.xml
│ │ ├── ic_course_list_archived.xml
│ │ ├── ic_course_list_favorite.xml
│ │ ├── ic_course_list_wishlist.xml
│ │ ├── ic_course_schedule.xml
│ │ ├── ic_course_search_idle.xml
│ │ ├── ic_course_solutions.xml
│ │ ├── ic_crown.xml
│ │ ├── ic_deadlines_banner.xml
│ │ ├── ic_deadlines_learning_rate_extreme.xml
│ │ ├── ic_deadlines_learning_rate_hobby.xml
│ │ ├── ic_deadlines_learning_rate_standard.xml
│ │ ├── ic_default_promo_info.xml
│ │ ├── ic_delete_vector.xml
│ │ ├── ic_dismiss_filter.xml
│ │ ├── ic_dots.xml
│ │ ├── ic_download.xml
│ │ ├── ic_download_cancel.xml
│ │ ├── ic_download_marker.xml
│ │ ├── ic_download_remove.xml
│ │ ├── ic_duration.xml
│ │ ├── ic_earnings_current.xml
│ │ ├── ic_earnings_empty.xml
│ │ ├── ic_earnings_total.xml
│ │ ├── ic_empty_disabled_step.xml
│ │ ├── ic_exam_finished.xml
│ │ ├── ic_exit.xml
│ │ ├── ic_external_link.xml
│ │ ├── ic_fast_continue_plus.xml
│ │ ├── ic_filter.xml
│ │ ├── ic_filter_active.xml
│ │ ├── ic_forward_10_24.xml
│ │ ├── ic_fullscreen.xml
│ │ ├── ic_fullscreen_exit.xml
│ │ ├── ic_general_placeholder_dark.xml
│ │ ├── ic_grip.xml
│ │ ├── ic_history.xml
│ │ ├── ic_launcher_foreground.xml
│ │ ├── ic_learning_action_user_reviews.xml
│ │ ├── ic_learning_action_wishlist.xml
│ │ ├── ic_login_social_fb.xml
│ │ ├── ic_login_social_github.xml
│ │ ├── ic_login_social_google.xml
│ │ ├── ic_login_social_twitter.xml
│ │ ├── ic_login_social_vk.xml
│ │ ├── ic_not_found.xml
│ │ ├── ic_notification_circle.xml
│ │ ├── ic_notification_state_unread.xml
│ │ ├── ic_notification_type_learning.xml
│ │ ├── ic_notification_type_other.xml
│ │ ├── ic_notification_type_review.xml
│ │ ├── ic_notification_type_teaching.xml
│ │ ├── ic_password_toggle.xml
│ │ ├── ic_password_toggle_hidden.xml
│ │ ├── ic_password_toggle_visible.xml
│ │ ├── ic_pause_24.xml
│ │ ├── ic_pip_open.xml
│ │ ├── ic_play_arrow_24.xml
│ │ ├── ic_player_play.xml
│ │ ├── ic_plus.xml
│ │ ├── ic_profile_activities_streak.xml
│ │ ├── ic_profile_courses.xml
│ │ ├── ic_profile_fb.xml
│ │ ├── ic_profile_instagram.xml
│ │ ├── ic_profile_knowledge.xml
│ │ ├── ic_profile_reputation.xml
│ │ ├── ic_profile_twitter.xml
│ │ ├── ic_profile_vk.xml
│ │ ├── ic_profile_web.xml
│ │ ├── ic_progress_star_green.xml
│ │ ├── ic_progress_star_green_filled.xml
│ │ ├── ic_progress_star_white.xml
│ │ ├── ic_progress_star_white_filled.xml
│ │ ├── ic_purchase_a_link.xml
│ │ ├── ic_purchase_error.xml
│ │ ├── ic_purchase_fail.xml
│ │ ├── ic_purchase_pending.xml
│ │ ├── ic_purchase_stepik.xml
│ │ ├── ic_purchase_success.xml
│ │ ├── ic_purchase_success_check.xml
│ │ ├── ic_question_basic.xml
│ │ ├── ic_question_checked.xml
│ │ ├── ic_radio_button.xml
│ │ ├── ic_radio_button_filled.xml
│ │ ├── ic_refund.xml
│ │ ├── ic_replay_10_24.xml
│ │ ├── ic_review_basic.xml
│ │ ├── ic_review_checked.xml
│ │ ├── ic_run_code_fab.xml
│ │ ├── ic_search_cancel.xml
│ │ ├── ic_search_mag.xml
│ │ ├── ic_seek_background.webp
│ │ ├── ic_seek_progress.webp
│ │ ├── ic_seek_secondary.webp
│ │ ├── ic_send_fab.xml
│ │ ├── ic_share.xml
│ │ ├── ic_simple_list_arrow_right.xml
│ │ ├── ic_skip_next_48dp.xml
│ │ ├── ic_skip_previous_48dp.xml
│ │ ├── ic_social_instagram.xml
│ │ ├── ic_step_discussion.xml
│ │ ├── ic_step_navigation_next.xml
│ │ ├── ic_step_navigation_prev.xml
│ │ ├── ic_step_passed_check.xml
│ │ ├── ic_step_quiz_choice_correct.xml
│ │ ├── ic_step_quiz_choice_wrong.xml
│ │ ├── ic_step_quiz_code_details.xml
│ │ ├── ic_step_quiz_code_lang.xml
│ │ ├── ic_step_quiz_code_sample_input.xml
│ │ ├── ic_step_quiz_code_sample_output.xml
│ │ ├── ic_step_quiz_correct.xml
│ │ ├── ic_step_quiz_evaluation_frame_1.xml
│ │ ├── ic_step_quiz_evaluation_frame_2.xml
│ │ ├── ic_step_quiz_evaluation_frame_3.xml
│ │ ├── ic_step_quiz_fullscreen.xml
│ │ ├── ic_step_quiz_partially_correct.xml
│ │ ├── ic_step_quiz_retry.xml
│ │ ├── ic_step_quiz_review_correct.xml
│ │ ├── ic_step_quiz_text_correct.xml
│ │ ├── ic_step_quiz_validation.xml
│ │ ├── ic_step_quiz_wrong.xml
│ │ ├── ic_step_quiz_wrong_wide.xml
│ │ ├── ic_step_run_code.xml
│ │ ├── ic_step_solutions.xml
│ │ ├── ic_story_feedback_dark.xml
│ │ ├── ic_story_feedback_light.xml
│ │ ├── ic_submission_status.xml
│ │ ├── ic_submit_code.xml
│ │ ├── ic_tak_demo_lesson.xml
│ │ ├── ic_tak_distinction_certificate.xml
│ │ ├── ic_tak_neutral.xml
│ │ ├── ic_tak_regular_certificate.xml
│ │ ├── ic_tak_success.xml
│ │ ├── ic_theory_basic.xml
│ │ ├── ic_theory_checked.xml
│ │ ├── ic_verified.xml
│ │ ├── ic_video_basic.xml
│ │ ├── ic_video_checked.xml
│ │ ├── ic_video_player_seek_bar_thumb.xml
│ │ ├── ic_wishlist_active.xml
│ │ ├── ic_wishlist_inactive.xml
│ │ ├── login_edit_text_stroke.xml
│ │ ├── onboarding_action_background.xml
│ │ ├── onboarding_background.xml
│ │ ├── onboarding_featured_background.xml
│ │ ├── onboarding_goal_blue_violet_gradient.xml
│ │ ├── onboarding_goal_yellow_green_gradient.xml
│ │ ├── onboarding_goal_yellow_red_gradient.xml
│ │ ├── popup_arrow_up.xml
│ │ ├── popup_arrow_up_light.xml
│ │ ├── rating_empty.xml
│ │ ├── rating_fill.xml
│ │ ├── rating_star.xml
│ │ ├── selectable_item_rounded_background.xml
│ │ ├── selectable_item_rounded_background_radius_24.xml
│ │ ├── selectable_item_rounded_bottom_background.xml
│ │ ├── selectable_item_rounded_top_background.xml
│ │ ├── story_view_foreground.xml
│ │ ├── story_view_tint_foreground.xml
│ │ ├── video_placeholder.webp
│ │ └── video_progressbar_layers.xml
│ │ ├── font
│ │ ├── pt_mono.ttf
│ │ ├── roboto.xml
│ │ ├── roboto_bold.ttf
│ │ ├── roboto_bolditalic.ttf
│ │ ├── roboto_italic.ttf
│ │ ├── roboto_light.ttf
│ │ ├── roboto_medium.ttf
│ │ ├── roboto_regular.ttf
│ │ ├── stories.xml
│ │ ├── stories_bold.ttf
│ │ └── stories_medium.otf
│ │ ├── layout-land
│ │ ├── dialog_achievement_details.xml
│ │ ├── empty_certificates.xml
│ │ ├── empty_comments.xml
│ │ ├── empty_courses.xml
│ │ ├── empty_default.xml
│ │ ├── empty_default_binding.xml
│ │ ├── empty_downloading.xml
│ │ ├── empty_lesson.xml
│ │ ├── empty_login.xml
│ │ ├── empty_notifications.xml
│ │ ├── empty_search.xml
│ │ ├── error_course_not_found.xml
│ │ ├── error_lesson_is_exam.xml
│ │ ├── error_lesson_not_found.xml
│ │ ├── error_no_connection.xml
│ │ ├── error_no_connection_binding.xml
│ │ ├── error_no_connection_with_button.xml
│ │ ├── error_no_connection_with_button_binding.xml
│ │ ├── error_user_not_found.xml
│ │ ├── fragment_feedback.xml
│ │ └── view_course_search_empty.xml
│ │ ├── layout-w360dp
│ │ ├── layout_author_properties.xml
│ │ └── layout_comment_actions.xml
│ │ ├── layout
│ │ ├── activity_adaptive_stats.xml
│ │ ├── activity_auth_credential.xml
│ │ ├── activity_auth_social.xml
│ │ ├── activity_certificates.xml
│ │ ├── activity_comments.xml
│ │ ├── activity_container_with_bar.xml
│ │ ├── activity_course.xml
│ │ ├── activity_course_benefits.xml
│ │ ├── activity_course_list_user.xml
│ │ ├── activity_download.xml
│ │ ├── activity_fragment.xml
│ │ ├── activity_lesson.xml
│ │ ├── activity_main_feed.xml
│ │ ├── activity_onboarding.xml
│ │ ├── activity_onboarding_course_lists.xml
│ │ ├── activity_onboarding_goal.xml
│ │ ├── activity_profile_edit.xml
│ │ ├── activity_profile_edit_info.xml
│ │ ├── activity_profile_edit_password.xml
│ │ ├── activity_registration.xml
│ │ ├── activity_search_courses.xml
│ │ ├── activity_solutions.xml
│ │ ├── activity_stories.xml
│ │ ├── activity_video_player.xml
│ │ ├── adaptive_header_stats.xml
│ │ ├── adaptive_item_rating_period.xml
│ │ ├── adaptive_item_week.xml
│ │ ├── adaptive_quiz_card_view.xml
│ │ ├── adaptive_ranks_separator.xml
│ │ ├── adaptive_rating_item.xml
│ │ ├── bottom_sheet_dialog_course_complete.xml
│ │ ├── bottom_sheet_dialog_course_purchase.xml
│ │ ├── bottom_sheet_dialog_fill_blanks_input.xml
│ │ ├── bottom_sheet_dialog_filter.xml
│ │ ├── bottom_sheet_dialog_lesson_demo_complete.xml
│ │ ├── bottom_sheet_dialog_submissions_filter.xml
│ │ ├── bottom_sheet_dialog_table_columns_selection.xml
│ │ ├── bottom_sheet_dialog_transaction.xml
│ │ ├── certificate_item.xml
│ │ ├── certificate_share_view.xml
│ │ ├── dialog_achievement_details.xml
│ │ ├── dialog_adaptive_level.xml
│ │ ├── dialog_certificate_name_change.xml
│ │ ├── dialog_comment_solution.xml
│ │ ├── dialog_compose_comment.xml
│ │ ├── dialog_compose_course_review.xml
│ │ ├── dialog_course_search.xml
│ │ ├── dialog_in_app_web_view.xml
│ │ ├── dialog_progress.xml
│ │ ├── dialog_rate_app.xml
│ │ ├── dialog_split_tests.xml
│ │ ├── dialog_step_quiz_code_fullscreen.xml
│ │ ├── dialog_step_source_edit.xml
│ │ ├── dialog_submissions.xml
│ │ ├── dialog_video_quality_detailed.xml
│ │ ├── downloaded_course_item.xml
│ │ ├── empty_certificates.xml
│ │ ├── empty_comments.xml
│ │ ├── empty_courses.xml
│ │ ├── empty_default.xml
│ │ ├── empty_default_binding.xml
│ │ ├── empty_downloading.xml
│ │ ├── empty_lesson.xml
│ │ ├── empty_login.xml
│ │ ├── empty_notifications.xml
│ │ ├── empty_purchase_refund.xml
│ │ ├── empty_search.xml
│ │ ├── error_course_not_found.xml
│ │ ├── error_lesson_is_exam.xml
│ │ ├── error_lesson_not_found.xml
│ │ ├── error_no_connection.xml
│ │ ├── error_no_connection_binding.xml
│ │ ├── error_no_connection_with_button.xml
│ │ ├── error_no_connection_with_button_binding.xml
│ │ ├── error_no_connection_with_button_small.xml
│ │ ├── error_user_not_found.xml
│ │ ├── exo_player_control_view.xml
│ │ ├── exo_simple_player_view.xml
│ │ ├── fragment_about_app.xml
│ │ ├── fragment_achievements_list.xml
│ │ ├── fragment_adaptive_onboarding.xml
│ │ ├── fragment_adaptive_rating.xml
│ │ ├── fragment_catalog.xml
│ │ ├── fragment_course_content.xml
│ │ ├── fragment_course_info.xml
│ │ ├── fragment_course_list.xml
│ │ ├── fragment_course_news.xml
│ │ ├── fragment_course_reviews.xml
│ │ ├── fragment_fast_continue.xml
│ │ ├── fragment_fast_continue_new_home.xml
│ │ ├── fragment_feedback.xml
│ │ ├── fragment_home.xml
│ │ ├── fragment_learning_actions.xml
│ │ ├── fragment_notification_list.xml
│ │ ├── fragment_notification_settings.xml
│ │ ├── fragment_notifications.xml
│ │ ├── fragment_onboarding_page.xml
│ │ ├── fragment_photo_view.xml
│ │ ├── fragment_profile.xml
│ │ ├── fragment_profile_achievements.xml
│ │ ├── fragment_profile_activities.xml
│ │ ├── fragment_profile_certificates.xml
│ │ ├── fragment_profile_courses.xml
│ │ ├── fragment_profile_detail.xml
│ │ ├── fragment_profile_links.xml
│ │ ├── fragment_profile_notification.xml
│ │ ├── fragment_recommendations.xml
│ │ ├── fragment_settings.xml
│ │ ├── fragment_space_management.xml
│ │ ├── fragment_step.xml
│ │ ├── fragment_step_content_video.xml
│ │ ├── fragment_step_quiz.xml
│ │ ├── fragment_step_quiz_pycharm.xml
│ │ ├── fragment_step_quiz_review.xml
│ │ ├── fragment_step_quiz_review_instructor.xml
│ │ ├── fragment_step_quiz_review_peer.xml
│ │ ├── fragment_step_quiz_review_teacher.xml
│ │ ├── fragment_step_quiz_unsupported.xml
│ │ ├── fragment_text_feedback.xml
│ │ ├── fragment_user_course_list.xml
│ │ ├── fragment_user_reviews.xml
│ │ ├── header_catalog_block.xml
│ │ ├── header_course.xml
│ │ ├── header_course_placeholder.xml
│ │ ├── header_personal_deadlines.xml
│ │ ├── header_profile.xml
│ │ ├── header_streak_suggestion_dialog.xml
│ │ ├── home_streak_view.xml
│ │ ├── item_announcement_badge.xml
│ │ ├── item_author.xml
│ │ ├── item_author_course_info.xml
│ │ ├── item_author_list.xml
│ │ ├── item_author_skeleton_course_info.xml
│ │ ├── item_banner.xml
│ │ ├── item_block_simple_course_list_grid.xml
│ │ ├── item_block_simple_course_list_grid_first.xml
│ │ ├── item_block_simple_course_lists_default.xml
│ │ ├── item_block_simple_course_lists_grid.xml
│ │ ├── item_certificate_profile.xml
│ │ ├── item_certificate_profile_skeleton.xml
│ │ ├── item_collection_horizontal_list.xml
│ │ ├── item_comment.xml
│ │ ├── item_comment_load_more_replies.xml
│ │ ├── item_comment_placeholder.xml
│ │ ├── item_comment_tag.xml
│ │ ├── item_course.xml
│ │ ├── item_course_benefit.xml
│ │ ├── item_course_benefit_by_month.xml
│ │ ├── item_course_benefit_by_month_skeleton.xml
│ │ ├── item_course_benefit_skeleton.xml
│ │ ├── item_course_benefits.xml
│ │ ├── item_course_collection_header.xml
│ │ ├── item_course_list.xml
│ │ ├── item_course_list_new.xml
│ │ ├── item_course_list_skeleton.xml
│ │ ├── item_course_loading_skeleton_container.xml
│ │ ├── item_course_news.xml
│ │ ├── item_course_news_placeholder.xml
│ │ ├── item_course_search_result.xml
│ │ ├── item_course_search_result_loading.xml
│ │ ├── item_course_view_all.xml
│ │ ├── item_fill_blanks_select_spinner.xml
│ │ ├── item_font_size.xml
│ │ ├── item_learning_action_user_reviews.xml
│ │ ├── item_learning_action_wishlist.xml
│ │ ├── item_onboarding.xml
│ │ ├── item_profile_edit_navigation.xml
│ │ ├── item_profile_link.xml
│ │ ├── item_simple_course_list_default.xml
│ │ ├── item_skill_course_info.xml
│ │ ├── item_social.xml
│ │ ├── item_solution_disclaimer.xml
│ │ ├── item_solution_lesson.xml
│ │ ├── item_solution_section.xml
│ │ ├── item_solution_submission.xml
│ │ ├── item_specialization.xml
│ │ ├── item_specialization_list.xml
│ │ ├── item_split_test_data.xml
│ │ ├── item_step_quiz_choice.xml
│ │ ├── item_step_quiz_code_detail_limit.xml
│ │ ├── item_step_quiz_code_detail_sample.xml
│ │ ├── item_step_quiz_code_lang.xml
│ │ ├── item_step_quiz_fill_blanks_input.xml
│ │ ├── item_step_quiz_fill_blanks_select.xml
│ │ ├── item_step_quiz_fill_blanks_text.xml
│ │ ├── item_step_quiz_sorting.xml
│ │ ├── item_submission_data.xml
│ │ ├── item_submission_placeholder.xml
│ │ ├── item_table_column_selection_checkbox.xml
│ │ ├── item_table_column_selection_radiobutton.xml
│ │ ├── item_table_selection.xml
│ │ ├── item_user_review_potential.xml
│ │ ├── item_user_review_potential_header.xml
│ │ ├── item_user_review_reviewed.xml
│ │ ├── item_user_review_reviewed_header.xml
│ │ ├── item_visited_course.xml
│ │ ├── item_visited_course_skeleton.xml
│ │ ├── layout_author_properties.xml
│ │ ├── layout_comment_actions.xml
│ │ ├── layout_course_progress.xml
│ │ ├── layout_course_properties.xml
│ │ ├── layout_course_stats.xml
│ │ ├── layout_latex_textview.xml
│ │ ├── layout_latex_webview.xml
│ │ ├── layout_profile_loading.xml
│ │ ├── layout_step_quiz_choice.xml
│ │ ├── layout_step_quiz_code.xml
│ │ ├── layout_step_quiz_code_fullscreen_instruction.xml
│ │ ├── layout_step_quiz_code_fullscreen_playground.xml
│ │ ├── layout_step_quiz_code_fullscreen_run_code.xml
│ │ ├── layout_step_quiz_code_keyboard_extension.xml
│ │ ├── layout_step_quiz_feedback_block.xml
│ │ ├── layout_step_quiz_fill_blanks.xml
│ │ ├── layout_step_quiz_review_footer.xml
│ │ ├── layout_step_quiz_review_header.xml
│ │ ├── layout_step_quiz_sorting.xml
│ │ ├── layout_step_quiz_sql.xml
│ │ ├── layout_step_quiz_table.xml
│ │ ├── layout_step_quiz_text.xml
│ │ ├── layout_step_tab_icon.xml
│ │ ├── loading_view.xml
│ │ ├── notification_date_header.xml
│ │ ├── notification_item.xml
│ │ ├── notification_list_header_item.xml
│ │ ├── popup_window.xml
│ │ ├── profile_details_loading_view.xml
│ │ ├── progress_bar_on_empty_screen.xml
│ │ ├── run_code_spinner_item.xml
│ │ ├── search_queries_recycler_view.xml
│ │ ├── search_query_item.xml
│ │ ├── step_share_view.xml
│ │ ├── step_text_header.xml
│ │ ├── stepic_compound_button.xml
│ │ ├── tooltip_lesson_info.xml
│ │ ├── view_achievement_item.xml
│ │ ├── view_achievement_item_placeholder.xml
│ │ ├── view_achievement_tile.xml
│ │ ├── view_achievement_tile_placeholder.xml
│ │ ├── view_catalog_no_internet_clickable.xml
│ │ ├── view_catalog_search_toolbar.xml
│ │ ├── view_centered_appbar.xml
│ │ ├── view_centered_appbar_binding.xml
│ │ ├── view_centered_toolbar.xml
│ │ ├── view_centered_toolbar_binding.xml
│ │ ├── view_choice_attempt.xml
│ │ ├── view_code_editor.xml
│ │ ├── view_code_toolbar_item.xml
│ │ ├── view_code_toolbar_separator.xml
│ │ ├── view_course_benefit_summary.xml
│ │ ├── view_course_content_control_bar.xml
│ │ ├── view_course_content_control_bar_item.xml
│ │ ├── view_course_content_section.xml
│ │ ├── view_course_content_section_date.xml
│ │ ├── view_course_content_section_placeholder.xml
│ │ ├── view_course_content_unit.xml
│ │ ├── view_course_content_unit_placeholder.xml
│ │ ├── view_course_info_about.xml
│ │ ├── view_course_info_authors.xml
│ │ ├── view_course_info_block.xml
│ │ ├── view_course_info_instructor_item.xml
│ │ ├── view_course_info_instructor_item_placeholder.xml
│ │ ├── view_course_info_instructors_block.xml
│ │ ├── view_course_info_skills.xml
│ │ ├── view_course_info_summary.xml
│ │ ├── view_course_info_text_block.xml
│ │ ├── view_course_info_text_block_placeholder.xml
│ │ ├── view_course_info_video.xml
│ │ ├── view_course_languages.xml
│ │ ├── view_course_review_compose_banner_item.xml
│ │ ├── view_course_review_summary_item.xml
│ │ ├── view_course_reviews_item.xml
│ │ ├── view_course_search_empty.xml
│ │ ├── view_course_search_idle.xml
│ │ ├── view_course_summary_loading.xml
│ │ ├── view_discounted_purchase_button.xml
│ │ ├── view_divider_vertical.xml
│ │ ├── view_download_status.xml
│ │ ├── view_edit_deadlines_item.xml
│ │ ├── view_fast_continue_empty.xml
│ │ ├── view_fast_continue_information.xml
│ │ ├── view_free_answer_attempt.xml
│ │ ├── view_learning_rate.xml
│ │ ├── view_length_video_thumbnail.xml
│ │ ├── view_notification_interval_chooser.xml
│ │ ├── view_notification_loading_footer.xml
│ │ ├── view_profile_user_id.xml
│ │ ├── view_remind_password.xml
│ │ ├── view_review_status.xml
│ │ ├── view_search_toolbar.xml
│ │ ├── view_search_toolbar_binding.xml
│ │ ├── view_step_content_next_button.xml
│ │ ├── view_step_disabled.xml
│ │ ├── view_step_disabled_teacher.xml
│ │ ├── view_step_discussion.xml
│ │ ├── view_step_navigation.xml
│ │ ├── view_step_placeholder.xml
│ │ ├── view_step_quiz_error.xml
│ │ ├── view_step_quiz_submit_button.xml
│ │ ├── view_step_solution_stats.xml
│ │ ├── view_stories_container.xml
│ │ ├── view_story_feedback.xml
│ │ ├── view_story_item.xml
│ │ ├── view_story_item_placeholder.xml
│ │ ├── view_story_plain_text_with_button.xml
│ │ ├── view_story_text_input.xml
│ │ ├── view_submission_review.xml
│ │ ├── view_submission_select.xml
│ │ ├── view_submissions_search_toolbar.xml
│ │ ├── view_subtitled_toolbar.xml
│ │ ├── view_user_course_list_empty.xml
│ │ └── view_user_course_list_network_error.xml
│ │ ├── menu
│ │ ├── attempts_menu.xml
│ │ ├── code_playground_menu.xml
│ │ ├── coment_list_menu.xml
│ │ ├── comment_compose_menu.xml
│ │ ├── comment_item_menu.xml
│ │ ├── compose_course_review_menu.xml
│ │ ├── course_activity_menu.xml
│ │ ├── course_content_control_bar_schedule_menu.xml
│ │ ├── course_content_control_bar_schedule_menu_no_personal.xml
│ │ ├── course_content_control_menu.xml
│ │ ├── course_list_menu.xml
│ │ ├── course_review_menu.xml
│ │ ├── drawer_menu.xml
│ │ ├── in_app_web_view_menu.xml
│ │ ├── lesson_menu.xml
│ │ ├── new_comment_menu.xml
│ │ ├── notification_center_menu.xml
│ │ ├── profile_edit_menu.xml
│ │ ├── profile_menu.xml
│ │ ├── step_edit_menu.xml
│ │ ├── step_menu.xml
│ │ ├── submission_item_menu.xml
│ │ ├── video_more_menu.xml
│ │ └── video_rate_menu.xml
│ │ ├── mipmap-anydpi-v26
│ │ └── ic_launcher_round.xml
│ │ ├── mipmap-hdpi
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ └── ic_launcher_round.png
│ │ ├── raw
│ │ └── default_sound.wav
│ │ ├── values-be
│ │ ├── achievements.xml
│ │ ├── arrays.xml
│ │ ├── plurals.xml
│ │ ├── rating_names_generator.xml
│ │ └── strings.xml
│ │ ├── values-h520dp-port
│ │ └── dimens.xml
│ │ ├── values-h640dp-port
│ │ └── dimens.xml
│ │ ├── values-hdpi
│ │ └── dimens.xml
│ │ ├── values-land
│ │ ├── dimens.xml
│ │ └── styles.xml
│ │ ├── values-night
│ │ ├── bools.xml
│ │ └── colors.xml
│ │ ├── values-ru
│ │ ├── achievements.xml
│ │ ├── arrays.xml
│ │ ├── plurals.xml
│ │ ├── rating_names_generator.xml
│ │ └── strings.xml
│ │ ├── values-sw360dp-land
│ │ └── dimens.xml
│ │ ├── values-sw430dp-land
│ │ └── dimens.xml
│ │ ├── values-sw520dp-land
│ │ └── dimens.xml
│ │ ├── values-sw600dp
│ │ └── dimens.xml
│ │ ├── values-v19
│ │ └── styles.xml
│ │ ├── values-v21
│ │ └── styles.xml
│ │ ├── values-v23
│ │ └── themes.xml
│ │ ├── values-v24
│ │ └── dimens.xml
│ │ ├── values-v26
│ │ └── notification_activity_bool.xml
│ │ ├── values-w368dp
│ │ ├── dimens.xml
│ │ └── integers.xml
│ │ ├── values-w388dp
│ │ └── dimens.xml
│ │ ├── values-w448dp
│ │ └── integers.xml
│ │ ├── values-w600dp
│ │ └── integers.xml
│ │ ├── values-w960dp
│ │ └── integers.xml
│ │ ├── values-xhdpi
│ │ └── dimens.xml
│ │ ├── values-xxhdpi
│ │ └── dimens.xml
│ │ ├── values-xxxhdpi
│ │ └── dimens.xml
│ │ ├── values
│ │ ├── achievements.xml
│ │ ├── arrays.xml
│ │ ├── attrs.xml
│ │ ├── autocomplete_words.xml
│ │ ├── bools.xml
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── frequent_symbols.xml
│ │ ├── github_code_theme.xml
│ │ ├── ids.xml
│ │ ├── integers.xml
│ │ ├── light_code_theme.xml
│ │ ├── loading_view_dimens.xml
│ │ ├── notification_activity_bool.xml
│ │ ├── plurals.xml
│ │ ├── rating_names_generator.xml
│ │ ├── shape.xml
│ │ ├── strings.xml
│ │ ├── styles.xml
│ │ ├── text-styles.xml
│ │ ├── themes.xml
│ │ ├── tomorrow_night_code_theme.xml
│ │ ├── tranquil_heart_code_theme.xml
│ │ ├── type.xml
│ │ └── view-attrs.xml
│ │ └── xml
│ │ ├── provider_paths.xml
│ │ ├── remote_config_defaults.xml
│ │ └── searchable.xml
│ ├── release
│ └── java
│ │ └── org
│ │ ├── stepic
│ │ └── droid
│ │ │ ├── configuration
│ │ │ └── EndpointResolverImpl.kt
│ │ │ └── util
│ │ │ └── DebugToolsHelper.kt
│ │ └── stepik
│ │ └── android
│ │ └── view
│ │ ├── debug
│ │ └── ui
│ │ │ └── fragment
│ │ │ └── DebugMenu.kt
│ │ └── injection
│ │ └── debug
│ │ ├── DebugComponent.kt
│ │ ├── InAppPurchasesComponent.kt
│ │ └── SplitTestsComponent.kt
│ ├── releaseOldKeys
│ └── java
│ │ └── org
│ │ ├── stepic
│ │ └── droid
│ │ │ ├── configuration
│ │ │ └── EndpointResolverImpl.kt
│ │ │ └── util
│ │ │ └── DebugToolsHelper.kt
│ │ └── stepik
│ │ └── android
│ │ └── view
│ │ ├── debug
│ │ └── ui
│ │ │ └── fragment
│ │ │ └── DebugMenu.kt
│ │ └── injection
│ │ └── debug
│ │ ├── DebugComponent.kt
│ │ ├── InAppPurchasesComponent.kt
│ │ └── SplitTestsComponent.kt
│ ├── sharedTest
│ └── java
│ │ └── org
│ │ └── stepik
│ │ └── android
│ │ └── migration_wrapper
│ │ ├── MigrationWrapper.kt
│ │ ├── MigrationWrapperFrom62To63.kt
│ │ ├── MigrationWrapperFrom68To69.kt
│ │ └── MigrationWrappers.kt
│ ├── stage
│ └── java
│ │ └── org
│ │ ├── stepic
│ │ └── droid
│ │ │ ├── configuration
│ │ │ └── EndpointResolverImpl.kt
│ │ │ └── util
│ │ │ └── DebugToolsHelper.kt
│ │ └── stepik
│ │ └── android
│ │ └── view
│ │ ├── debug
│ │ └── ui
│ │ │ └── fragment
│ │ │ └── DebugMenu.kt
│ │ └── injection
│ │ └── debug
│ │ ├── DebugComponent.kt
│ │ ├── InAppPurchasesComponent.kt
│ │ └── SplitTestsComponent.kt
│ ├── stageDebuggable
│ ├── assets
│ │ └── configs
│ │ │ ├── config_dev.json
│ │ │ ├── config_production.json
│ │ │ └── config_release.json
│ ├── java
│ │ └── org
│ │ │ ├── stepic
│ │ │ └── droid
│ │ │ │ ├── configuration
│ │ │ │ ├── EndpointInfo.kt
│ │ │ │ ├── EndpointInfoFactory.kt
│ │ │ │ └── EndpointResolverImpl.kt
│ │ │ │ └── util
│ │ │ │ └── DebugToolsHelper.kt
│ │ │ └── stepik
│ │ │ └── android
│ │ │ ├── domain
│ │ │ └── debug
│ │ │ │ ├── interactor
│ │ │ │ ├── DebugInteractor.kt
│ │ │ │ ├── InAppPurchasesInteractor.kt
│ │ │ │ └── SplitTestsInteractor.kt
│ │ │ │ └── model
│ │ │ │ ├── DebugSettings.kt
│ │ │ │ ├── EndpointConfig.kt
│ │ │ │ └── SplitTestData.kt
│ │ │ ├── presentation
│ │ │ └── debug
│ │ │ │ ├── DebugFeature.kt
│ │ │ │ ├── DebugViewModel.kt
│ │ │ │ ├── InAppPurchasesFeature.kt
│ │ │ │ ├── InAppPurchasesViewModel.kt
│ │ │ │ ├── SplitTestsFeature.kt
│ │ │ │ ├── SplitTestsViewModel.kt
│ │ │ │ ├── dispatcher
│ │ │ │ ├── DebugActionDispatcher.kt
│ │ │ │ ├── InAppPurchasesActionDispatcher.kt
│ │ │ │ └── SplitTestsActionDispatcher.kt
│ │ │ │ └── reducer
│ │ │ │ ├── DebugReducer.kt
│ │ │ │ ├── InAppPurchasesReducer.kt
│ │ │ │ └── SplitTestsReducer.kt
│ │ │ └── view
│ │ │ ├── debug
│ │ │ └── ui
│ │ │ │ ├── activity
│ │ │ │ └── InAppPurchasesActivity.kt
│ │ │ │ ├── adapter
│ │ │ │ └── delegate
│ │ │ │ │ ├── InAppPurchaseAdapterDelegate.kt
│ │ │ │ │ └── SplitTestDataAdapterDelegate.kt
│ │ │ │ ├── dialog
│ │ │ │ └── SplitTestsDialogFragment.kt
│ │ │ │ └── fragment
│ │ │ │ ├── DebugFragment.kt
│ │ │ │ └── DebugMenu.kt
│ │ │ └── injection
│ │ │ └── debug
│ │ │ ├── DebugComponent.kt
│ │ │ ├── DebugPresentationModule.kt
│ │ │ ├── InAppPurchasesComponent.kt
│ │ │ ├── InAppPurchasesPresentationModule.kt
│ │ │ ├── SplitTestsComponent.kt
│ │ │ └── SplitTestsPresentationModule.kt
│ └── res
│ │ └── layout
│ │ ├── activity_in_app_purchases.xml
│ │ ├── fragment_debug.xml
│ │ └── item_in_app_purchase.xml
│ └── test
│ ├── java
│ └── org
│ │ ├── stepic
│ │ └── droid
│ │ │ ├── jsonHelpers
│ │ │ ├── adapters
│ │ │ │ ├── CodeOptionsAdapterFactoryTest.kt
│ │ │ │ └── UTCDateAdapterTest.kt
│ │ │ └── deserializers
│ │ │ │ └── DatasetDeserializerTest.kt
│ │ │ ├── model
│ │ │ ├── CommentResponseTest.kt
│ │ │ ├── OnboardingTypeTest.kt
│ │ │ ├── SectionTest.kt
│ │ │ ├── StepTest.kt
│ │ │ └── code
│ │ │ │ ├── CodeOptionsTest.kt
│ │ │ │ └── ProgrammingLanguageTest.kt
│ │ │ ├── notifications
│ │ │ ├── NotificationActionsHelperTest.java
│ │ │ └── NotificationTimeCheckerImplTest.java
│ │ │ ├── persistence
│ │ │ └── content
│ │ │ │ └── processors
│ │ │ │ └── ImageStepContentProcessorTest.kt
│ │ │ ├── testUtils
│ │ │ ├── ConcurrencyUtilForTest.java
│ │ │ ├── ParcelableTester.kt
│ │ │ ├── ResponseGenerator.kt
│ │ │ ├── TestingGsonProvider.kt
│ │ │ └── generators
│ │ │ │ ├── ArrayHelper.kt
│ │ │ │ ├── FakeCourseGenerator.kt
│ │ │ │ ├── FakeLessonGenerator.kt
│ │ │ │ ├── FakeMetaGenerator.kt
│ │ │ │ ├── FakeProfileGenerator.kt
│ │ │ │ ├── FakeSectionGenerator.kt
│ │ │ │ ├── FakeStepGenerator.kt
│ │ │ │ ├── FakeUnitGenerator.kt
│ │ │ │ ├── FakeUserGenerator.kt
│ │ │ │ └── ListHelper.kt
│ │ │ └── util
│ │ │ ├── DateTimeHelperTest.kt
│ │ │ ├── HtmlHelperTest.kt
│ │ │ ├── StringExtensionsTest.kt
│ │ │ ├── StringUtilTest.kt
│ │ │ └── TextUtilTest.kt
│ │ └── stepik
│ │ └── android
│ │ ├── cache
│ │ └── base
│ │ │ └── database
│ │ │ └── MigrationUnitTest.kt
│ │ ├── data
│ │ ├── progress
│ │ │ └── ProgressRepositoryTest.kt
│ │ ├── search
│ │ │ └── SearchRepositoryTest.kt
│ │ └── section
│ │ │ └── SectionRepositoryTest.kt
│ │ ├── domain
│ │ ├── achievement
│ │ │ └── model
│ │ │ │ └── AchievementItemTest.kt
│ │ ├── calendar
│ │ │ └── model
│ │ │ │ └── CalendarItemTest.kt
│ │ ├── course
│ │ │ └── model
│ │ │ │ ├── CourseHeaderDataTest.kt
│ │ │ │ └── CourseStatsTest.kt
│ │ ├── course_info
│ │ │ └── model
│ │ │ │ └── CourseInfoTest.kt
│ │ ├── course_reviews
│ │ │ └── model
│ │ │ │ └── CourseReviewTest.kt
│ │ └── step
│ │ │ └── interactor
│ │ │ └── StepNavigationInteractorTest.kt
│ │ └── view
│ │ ├── course
│ │ └── routing
│ │ │ └── CourseDeepLinkHandlerTest.kt
│ │ ├── course_content
│ │ └── ui
│ │ │ └── adapter
│ │ │ └── CourseContentDiffCallbackTest.kt
│ │ ├── glide
│ │ └── mapper
│ │ │ └── RelativeLoaderTest.java
│ │ └── lesson
│ │ └── routing
│ │ └── LessonDeepLinkHandlerTest.kt
│ └── resources
│ └── mockito-extensions
│ └── org.mockito.plugins.MockMaker
├── billing
├── .gitignore
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── org
│ │ │ └── stepik
│ │ │ └── android
│ │ │ ├── data
│ │ │ └── billing
│ │ │ │ ├── repository
│ │ │ │ └── BillingRepositoryImpl.kt
│ │ │ │ └── source
│ │ │ │ └── BillingRemoteDataSource.kt
│ │ │ ├── domain
│ │ │ └── billing
│ │ │ │ ├── exception
│ │ │ │ ├── BillingNotSupportedException.kt
│ │ │ │ └── NoPurchasesToRestoreException.kt
│ │ │ │ └── repository
│ │ │ │ └── BillingRepository.kt
│ │ │ ├── remote
│ │ │ └── billing
│ │ │ │ └── BillingRemoteDataSourceImpl.kt
│ │ │ └── view
│ │ │ └── injection
│ │ │ └── billing
│ │ │ ├── BillingComponent.kt
│ │ │ ├── BillingDataModule.kt
│ │ │ ├── BillingModule.kt
│ │ │ ├── BillingSingleton.kt
│ │ │ └── PublicLicenseKey.kt
│ └── res
│ │ └── values
│ │ └── strings.xml
│ └── test
│ └── java
│ └── org
│ └── stepik
│ └── android
│ └── domain
│ └── billing
│ └── model
│ └── SkuSerializableWrapperTest.kt
├── build.gradle
├── buildsystem
├── cert
│ ├── debug.keystore
│ └── key_store.jks
├── secret.gradle
└── teamcity_init.sh
├── code_quality_tools
├── checkstyle.gradle
├── checkstyle.xml
├── findbugs-filter.xml
├── findbugs.gradle
├── jacoco.gradle
├── ktlint.gradle
├── pmd.gradle
└── pmd.xml
├── codecov.yml
├── dependencies.gradle
├── fastlane
├── Appfile
├── Fastfile
└── metadata
│ └── android
│ ├── en-US
│ ├── changelogs
│ │ ├── 1142.txt
│ │ ├── 1143.txt
│ │ ├── 1145.txt
│ │ ├── 1148.txt
│ │ └── 1149.txt
│ ├── full_description.txt
│ ├── short_description.txt
│ ├── title.txt
│ └── video.txt
│ └── ru-RU
│ ├── changelogs
│ ├── 1142.txt
│ ├── 1143.txt
│ ├── 1145.txt
│ ├── 1148.txt
│ └── 1149.txt
│ ├── full_description.txt
│ ├── images
│ └── icon.png
│ ├── short_description.txt
│ ├── title.txt
│ └── video.txt
├── googleplayprovider.json
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── lint.xml
├── model
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── main
│ ├── AndroidManifest.xml
│ └── java
│ │ └── org
│ │ └── stepik
│ │ └── android
│ │ └── model
│ │ ├── Actions.kt
│ │ ├── Assignment.kt
│ │ ├── Attachment.kt
│ │ ├── Block.kt
│ │ ├── Cell.kt
│ │ ├── Certificate.kt
│ │ ├── Course.kt
│ │ ├── CourseActions.kt
│ │ ├── CourseBuyAction.kt
│ │ ├── CourseCollection.kt
│ │ ├── CourseOptions.kt
│ │ ├── CoursePreview.kt
│ │ ├── CourseReviewSummary.kt
│ │ ├── DiscountingPolicyType.kt
│ │ ├── Enrollment.kt
│ │ ├── Lesson.kt
│ │ ├── LessonActions.kt
│ │ ├── Meta.kt
│ │ ├── PlatformType.kt
│ │ ├── Progress.kt
│ │ ├── Progressable.kt
│ │ ├── Reply.kt
│ │ ├── ReviewStrategyType.kt
│ │ ├── SearchResult.kt
│ │ ├── Section.kt
│ │ ├── SocialProfile.kt
│ │ ├── Step.kt
│ │ ├── StepSource.kt
│ │ ├── StoryTemplate.kt
│ │ ├── Submission.kt
│ │ ├── TableChoiceAnswer.kt
│ │ ├── Unit.kt
│ │ ├── UserRole.kt
│ │ ├── Video.kt
│ │ ├── ViewAssignment.kt
│ │ ├── ViewRevenue.kt
│ │ ├── achievements
│ │ ├── Achievement.kt
│ │ └── AchievementProgress.kt
│ │ ├── adaptive
│ │ ├── RatingItem.kt
│ │ ├── Reaction.kt
│ │ ├── Recommendation.kt
│ │ └── RecommendationReaction.kt
│ │ ├── attempts
│ │ ├── Attempt.kt
│ │ ├── Component.kt
│ │ ├── Dataset.kt
│ │ └── Pair.kt
│ │ ├── code
│ │ ├── CodeLimit.kt
│ │ ├── CodeOptions.kt
│ │ └── UserCodeRun.kt
│ │ ├── comments
│ │ ├── Comment.kt
│ │ ├── DiscussionProxy.kt
│ │ ├── DiscussionThread.kt
│ │ └── Vote.kt
│ │ ├── feedback
│ │ ├── BlanksFeedback.kt
│ │ ├── ChoiceFeedback.kt
│ │ ├── Feedback.kt
│ │ └── StringFeedback.kt
│ │ ├── user
│ │ ├── EmailAddress.kt
│ │ ├── Profile.kt
│ │ ├── ProfileWrapper.kt
│ │ ├── RegistrationCredentials.kt
│ │ ├── User.kt
│ │ └── UserActivity.kt
│ │ └── util
│ │ ├── ParcelableExtensions.kt
│ │ └── ParcelableStringList.kt
│ └── test
│ └── java
│ └── org
│ └── stepik
│ └── android
│ └── model
│ ├── AttemptTest.kt
│ ├── CommentTest.kt
│ ├── CourseTest.kt
│ ├── DatasetTest.kt
│ ├── ParcelizeTest.kt
│ ├── ProgressTest.kt
│ ├── ReplyTest.kt
│ ├── SectionTest.kt
│ ├── StepStatusTest.kt
│ ├── StepTest.kt
│ ├── SubmissionTest.kt
│ ├── UserTest.kt
│ ├── code
│ ├── CodeLimitTest.kt
│ └── CodeOptionsTest.kt
│ └── util
│ ├── ParcelableStringListTest.kt
│ └── ParcelableTester.kt
├── screenshots
├── 01.webp
├── 02.webp
└── 03.webp
└── settings.gradle
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | **YouTrack task**: [#](https://vyahhi.myjetbrains.com/youtrack/issue/)
2 |
3 | **Description List**:
4 | * ..
5 | * ..
6 |
7 |
--------------------------------------------------------------------------------
/CONTRIBUTING:
--------------------------------------------------------------------------------
1 | We are welcome your contribution in a form of pull requests. Thank you!
2 |
3 | # Copyright and Licensing
4 |
5 | By making pull request to this repo, you grant everybody all possible permissions to use your code freely and without any restrictions.
6 |
--------------------------------------------------------------------------------
/androidsvg/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/androidsvg/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/androidsvg/src/main/res/values/attrs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/app/google-services.json:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/google-services.json
--------------------------------------------------------------------------------
/app/libs/flexbox-release.aar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/libs/flexbox-release.aar
--------------------------------------------------------------------------------
/app/proguard-rules-dev.pro:
--------------------------------------------------------------------------------
1 | #keep names, but may shrink for reducing number of methods for avoiding 64K problem
2 | -dontobfuscate
--------------------------------------------------------------------------------
/app/src/debug/assets/configs/config_dev.json:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/debug/assets/configs/config_dev.json
--------------------------------------------------------------------------------
/app/src/debug/assets/configs/config_production.json:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/debug/assets/configs/config_production.json
--------------------------------------------------------------------------------
/app/src/debug/assets/configs/config_release.json:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/debug/assets/configs/config_release.json
--------------------------------------------------------------------------------
/app/src/debug/java/org/stepik/android/domain/debug/model/DebugSettings.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.debug.model
2 |
3 | data class DebugSettings(
4 | val fcmToken: String,
5 | val currentEndpointConfig: EndpointConfig,
6 | val endpointConfigSelection: Int
7 | )
8 |
--------------------------------------------------------------------------------
/app/src/debug/java/org/stepik/android/domain/debug/model/EndpointConfig.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.debug.model
2 |
3 | enum class EndpointConfig {
4 | DEV,
5 | PRODUCTION,
6 | RELEASE
7 | }
--------------------------------------------------------------------------------
/app/src/main/assets/configs/config.json:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/configs/config.json
--------------------------------------------------------------------------------
/app/src/main/assets/css/base-style-night.css:
--------------------------------------------------------------------------------
1 | blockquote {
2 | margin: 0;
3 | padding-left: 1em;
4 | border-left: 2px solid #ccc;
5 | color: rgba(255, 255, 255, 0.6);
6 | font-style: italic;
7 | }
--------------------------------------------------------------------------------
/app/src/main/assets/css/base-style.css:
--------------------------------------------------------------------------------
1 | blockquote {
2 | margin: 0;
3 | padding-left: 1em;
4 | border-left: 2px solid #ccc;
5 | color: rgba(0, 0, 0, 0.6);
6 | font-style: italic;
7 | }
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/pt_mono.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/fonts/pt_mono.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/roboto_bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/fonts/roboto_bold.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/roboto_bolditalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/fonts/roboto_bolditalic.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/roboto_italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/fonts/roboto_italic.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/roboto_light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/fonts/roboto_light.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/roboto_medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/fonts/roboto_medium.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/roboto_regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/fonts/roboto_regular.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/katex/fonts/KaTeX_AMS-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/katex/fonts/KaTeX_AMS-Regular.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/katex/fonts/KaTeX_Caligraphic-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/katex/fonts/KaTeX_Caligraphic-Bold.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/katex/fonts/KaTeX_Caligraphic-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/katex/fonts/KaTeX_Caligraphic-Regular.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/katex/fonts/KaTeX_Fraktur-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/katex/fonts/KaTeX_Fraktur-Bold.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/katex/fonts/KaTeX_Fraktur-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/katex/fonts/KaTeX_Fraktur-Regular.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/katex/fonts/KaTeX_Main-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/katex/fonts/KaTeX_Main-Bold.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/katex/fonts/KaTeX_Main-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/katex/fonts/KaTeX_Main-BoldItalic.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/katex/fonts/KaTeX_Main-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/katex/fonts/KaTeX_Main-Italic.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/katex/fonts/KaTeX_Main-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/katex/fonts/KaTeX_Main-Regular.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/katex/fonts/KaTeX_Math-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/katex/fonts/KaTeX_Math-BoldItalic.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/katex/fonts/KaTeX_Math-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/katex/fonts/KaTeX_Math-Italic.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/katex/fonts/KaTeX_Math-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/katex/fonts/KaTeX_Math-Regular.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/katex/fonts/KaTeX_SansSerif-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/katex/fonts/KaTeX_SansSerif-Bold.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/katex/fonts/KaTeX_SansSerif-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/katex/fonts/KaTeX_SansSerif-Italic.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/katex/fonts/KaTeX_SansSerif-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/katex/fonts/KaTeX_SansSerif-Regular.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/katex/fonts/KaTeX_Script-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/katex/fonts/KaTeX_Script-Regular.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/katex/fonts/KaTeX_Size1-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/katex/fonts/KaTeX_Size1-Regular.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/katex/fonts/KaTeX_Size2-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/katex/fonts/KaTeX_Size2-Regular.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/katex/fonts/KaTeX_Size3-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/katex/fonts/KaTeX_Size3-Regular.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/katex/fonts/KaTeX_Size4-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/katex/fonts/KaTeX_Size4-Regular.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/katex/fonts/KaTeX_Typewriter-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/assets/katex/fonts/KaTeX_Typewriter-Regular.ttf
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/adaptive/listeners/AdaptiveReactionListener.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.adaptive.listeners
2 |
3 | import org.stepik.android.model.adaptive.Reaction
4 |
5 | interface AdaptiveReactionListener {
6 | fun createReaction(lessonId: Long, reaction: Reaction)
7 | }
8 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/adaptive/listeners/AnswerListener.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.adaptive.listeners
2 |
3 | interface AnswerListener {
4 | fun onCorrectAnswer(submissionId: Long)
5 | fun onWrongAnswer(submissionId: Long)
6 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/adaptive/model/AdaptiveWeekProgress.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.adaptive.model
2 |
3 | import java.util.Calendar
4 |
5 | class AdaptiveWeekProgress(
6 | val start: Calendar,
7 | val end: Calendar,
8 | val total: Long
9 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/adaptive/model/LocalExpItem.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.adaptive.model
2 |
3 | class LocalExpItem (
4 | val exp: Long,
5 | val submissionId: Long,
6 | val courseId: Long
7 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/analytic/BranchParams.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.analytic
2 |
3 | object BranchParams {
4 | const val FIELD_CAMPAIGN = "~campaign"
5 | const val IS_FIRST_SESSION = "+is_first_session"
6 |
7 | const val FIELD_SCREEN = "screen"
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/analytic/LoginInteractionType.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.analytic
2 |
3 | enum class LoginInteractionType {
4 | ime, button;
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/analytic/StepikAnalytic.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.analytic
2 |
3 | import com.google.gson.JsonObject
4 |
5 | interface StepikAnalytic {
6 | fun flushEvents()
7 | fun logEvent(eventName: String, properties: Map)
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/analytic/experiments/SplitTestsHolder.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.analytic.experiments
2 |
3 | import javax.inject.Inject
4 |
5 | class SplitTestsHolder
6 | @Inject
7 | constructor(
8 | splitTests: Set<@JvmSuppressWildcards SplitTest<*>>
9 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/base/Client.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.base
2 |
3 | interface Client {
4 |
5 | fun subscribe(listener: T)
6 |
7 | fun unsubscribe(listener: T)
8 | }
9 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/base/ListenerContainer.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.base
2 |
3 | interface ListenerContainer{
4 |
5 | fun add(listener: T)
6 |
7 | fun remove(listener: T)
8 |
9 | fun asIterable(): Iterable
10 | }
11 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/code/data/AutocompleteState.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.code.data
2 |
3 | data class AutocompleteState(val prefix: String, val words: List)
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/concurrency/HandlerBaseDelegate.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.concurrency
2 |
3 | import android.os.Handler
4 |
5 | abstract class HandlerBaseDelegate : IHandler {
6 | override fun post(body: () -> Unit) = getHandler().post { body.invoke() }
7 | abstract fun getHandler() : Handler
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/concurrency/IHandler.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.concurrency
2 |
3 | interface IHandler {
4 | fun post(body : ()->Unit): Boolean
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/concurrency/MainHandler.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.concurrency
2 |
3 | interface MainHandler : IHandler
4 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/concurrency/SingleThreadExecutor.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.concurrency
2 |
3 | import java.util.concurrent.ExecutorService
4 |
5 | class SingleThreadExecutor(private val singleExecutor: ExecutorService) : ExecutorService by singleExecutor
6 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/core/DeadlineType.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.core
2 |
3 | import androidx.annotation.StringRes
4 | import org.stepic.droid.R
5 |
6 | enum class DeadlineType(@StringRes val deadlineTitle: Int) {
7 | softDeadline(R.string.soft_deadline),
8 | hardDeadline(R.string.hard_deadline)
9 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/core/DefaultFilter.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.core
2 |
3 | import org.stepic.droid.model.StepikFilter
4 |
5 | interface DefaultFilter {
6 | fun getDefaultFilter(filterValue: StepikFilter): Boolean
7 | }
8 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/core/GoogleApiChecker.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.core
2 |
3 | interface GoogleApiChecker {
4 | fun checkPlayServices() : Boolean
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/core/HasComponent.java:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.core;
2 |
3 | /**
4 | * Interface representing a contract for clients that contains a component for dependency injection.
5 | */
6 | public interface HasComponent {
7 | C getComponent();
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/core/ProgressHandler.java:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.core;
2 |
3 | public interface ProgressHandler {
4 | void activate();
5 | void dismiss();
6 | }
7 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/core/StepikDevicePoster.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.core
2 |
3 | import androidx.annotation.WorkerThread
4 |
5 | interface StepikDevicePoster {
6 | @WorkerThread
7 | fun registerDevice()
8 | }
9 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/core/earlystreak/contract/EarlyStreakListener.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.core.earlystreak.contract
2 |
3 | interface EarlyStreakListener {
4 | fun onShowStreakSuggestion()
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/core/earlystreak/contract/EarlyStreakPoster.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.core.earlystreak.contract
2 |
3 | interface EarlyStreakPoster {
4 | fun showStreakSuggestion()
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/core/internetstate/contract/InternetEnabledListener.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.core.internetstate.contract
2 |
3 | interface InternetEnabledListener {
4 | fun onInternetEnabled()
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/core/internetstate/contract/InternetEnabledPoster.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.core.internetstate.contract
2 |
3 | interface InternetEnabledPoster {
4 | fun internetEnabled()
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/core/presenters/PresenterContract.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.core.presenters
2 |
3 | interface PresenterContract {
4 | fun attachView(view: V)
5 | fun detachView(view: V)
6 | }
7 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/core/presenters/contracts/AdaptiveProgressView.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.core.presenters.contracts
2 |
3 | import org.stepic.droid.adaptive.ui.adapters.AdaptiveWeeksAdapter
4 |
5 | interface AdaptiveProgressView {
6 | fun onWeeksAdapter(adapter: AdaptiveWeeksAdapter)
7 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/core/presenters/contracts/HomeStreakView.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.core.presenters.contracts
2 |
3 |
4 | interface HomeStreakView {
5 | fun showStreak(streak: Int)
6 | fun onEmptyStreak()
7 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/core/presenters/contracts/ProfileMainFeedView.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.core.presenters.contracts
2 |
3 | interface ProfileMainFeedView
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/core/presenters/contracts/TextFeedbackView.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.core.presenters.contracts
2 |
3 | interface TextFeedbackView {
4 | fun onFeedbackSent()
5 |
6 | fun onServerFail()
7 |
8 | fun onInternetProblems()
9 | }
10 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/di/AppSingleton.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.di
2 |
3 | import javax.inject.Scope
4 |
5 | @Scope
6 | @Retention(AnnotationRetention.RUNTIME)
7 | annotation class AppSingleton
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/di/adaptive/AdaptiveCourseModule.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.di.adaptive
2 |
3 | import dagger.Module
4 |
5 | @Module
6 | interface AdaptiveCourseModule
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/di/adaptive/AdaptiveCourseScope.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.di.adaptive
2 |
3 | import javax.inject.Scope
4 |
5 | @Scope
6 | @Retention(AnnotationRetention.RUNTIME)
7 | annotation class AdaptiveCourseScope
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/di/home/HomeScope.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.di.home
2 |
3 | import javax.inject.Scope
4 |
5 | @Scope
6 | @Retention(AnnotationRetention.RUNTIME)
7 | annotation class HomeScope
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/di/mainscreen/MainScreenScope.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.di.mainscreen
2 |
3 | import javax.inject.Scope
4 |
5 | @Scope
6 | @Retention(AnnotationRetention.RUNTIME)
7 | annotation class MainScreenScope
8 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/di/notifications/NotificationsScope.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.di.notifications
2 |
3 | import javax.inject.Scope
4 |
5 | @Scope
6 | @Retention(AnnotationRetention.RUNTIME)
7 | annotation class NotificationsScope
8 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/di/qualifiers/BackgroundScheduler.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.di.qualifiers
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class BackgroundScheduler
7 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/di/qualifiers/CourseId.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.di.qualifiers
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class CourseId
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/di/qualifiers/MainScheduler.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.di.qualifiers
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class MainScheduler
7 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/di/qualifiers/PersistenceProgressStatusMapper.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.di.qualifiers
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class PersistenceProgressStatusMapper
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/di/qualifiers/PersonalOffersScheduler.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.di.qualifiers
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class PersonalOffersScheduler
7 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/di/qualifiers/WishlistScheduler.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.di.qualifiers
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class WishlistScheduler
7 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/di/splash/SplashScope.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.di.splash
2 |
3 | @Retention(AnnotationRetention.RUNTIME)
4 | annotation class SplashScope
5 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/di/storage/StorageSingleton.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.di.storage
2 |
3 | import javax.inject.Scope
4 |
5 | @Scope
6 | @Retention(AnnotationRetention.RUNTIME)
7 | annotation class StorageSingleton
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/features/stories/model/ViewedStoryTemplate.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.features.stories.model
2 |
3 | class ViewedStoryTemplate(val storyTemplateId: Long)
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/model/BlockPersistentWrapper.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.model
2 |
3 | import org.stepik.android.model.Block
4 |
5 | data class BlockPersistentWrapper(
6 | val block: Block,
7 | val stepId: Long
8 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/model/Credentials.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.model
2 |
3 | class Credentials(val login: String, val password: String)
4 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/model/CurrentStreakExtended.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.model
2 |
3 | data class CurrentStreakExtended(val currentStreak: Int, val isSolvedToday: Boolean)
4 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/model/Option.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.model
2 |
3 | data class Option(val value: String, val positionId: Int)
4 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/model/StepikFilter.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.model
2 |
3 | //do not rename fields, it will broke analytics
4 | enum class StepikFilter(val language: String) {
5 | RUSSIAN("ru"), ENGLISH("en")
6 | }
7 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/model/ViewedNotification.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.model
2 |
3 | class ViewedNotification(val notificationId: Long)
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/notifications/NotificationTimeChecker.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.notifications
2 |
3 | interface NotificationTimeChecker {
4 | fun isNight(nowMillis : Long): Boolean
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/notifications/badges/NotificationsBadgesListener.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.notifications.badges
2 |
3 | interface NotificationsBadgesListener {
4 | fun onBadgeShouldBeHidden()
5 | fun onBadgeCountChanged(count: Int)
6 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/notifications/handlers/RemoteMessageHandler.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.notifications.handlers
2 |
3 | import android.content.Context
4 |
5 | interface RemoteMessageHandler {
6 | fun handleMessage(context: Context, rawMessage: String?)
7 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/notifications/model/NotificationStatuses.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.notifications.model
2 |
3 | class NotificationStatuses(
4 | val total: Int = 0
5 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/persistence/di/FSLock.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.persistence.di
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class FSLock
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/persistence/di/PersistenceScope.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.persistence.di
2 |
3 | import org.stepic.droid.di.AppSingleton
4 |
5 | typealias PersistenceScope = AppSingleton
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/persistence/downloads/progress/ProgressHelper.kt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/java/org/stepic/droid/persistence/downloads/progress/ProgressHelper.kt
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/persistence/model/DownloadRequest.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.persistence.model
2 |
3 | data class DownloadRequest(
4 | val task: DownloadTask,
5 | val title: String,
6 | val configuration: DownloadConfiguration
7 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/persistence/model/DownloadTask.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.persistence.model
2 |
3 | class DownloadTask(
4 | val originalPath: String,
5 | val structure: Structure
6 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/persistence/model/Structure.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.persistence.model
2 |
3 | data class Structure(
4 | val course: Long,
5 | val section: Long,
6 | val unit: Long,
7 | val lesson: Long,
8 | val step: Long
9 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/persistence/providers/GenericFileProvider.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.persistence.providers
2 |
3 | import androidx.core.content.FileProvider
4 |
5 | class GenericFileProvider: FileProvider()
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/persistence/repository/DownloadsRepositoryImpl.kt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/java/org/stepic/droid/persistence/repository/DownloadsRepositoryImpl.kt
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/persistence/storage/PersistentItemObserver.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.persistence.storage
2 |
3 | import org.stepic.droid.persistence.model.PersistentItem
4 |
5 | interface PersistentItemObserver {
6 | fun update(item: PersistentItem)
7 | fun remove(item: PersistentItem)
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/receivers/InternetConnectionStateListener.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.receivers
2 |
3 | interface InternetConnectionStateListener {
4 | fun onInternetEnabled()
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/receivers/InternetConnectionStateNotifier.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.receivers
2 |
3 | class InternetConnectionStateNotifier {
4 |
5 |
6 | }
7 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/storage/dao/SearchQueryDao.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.storage.dao
2 |
3 | import org.stepic.droid.model.SearchQuery
4 |
5 | interface SearchQueryDao : IDao {
6 | fun getSearchQueries(courseId: Long, constraint: String, count: Int): List
7 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/storage/operations/ResultHandler.java:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.storage.operations;
2 |
3 | import android.database.Cursor;
4 | import android.database.SQLException;
5 |
6 | public interface ResultHandler {
7 | T handle(Cursor cursor) throws SQLException;
8 | }
9 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/ui/activities/contracts/OnNextClickedListener.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.ui.activities.contracts
2 |
3 | interface OnNextClickedListener {
4 | fun onNextClicked()
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/ui/activities/contracts/RootScreen.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.ui.activities.contracts
2 |
3 | interface RootScreen {
4 | fun showCatalog()
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/ui/listeners/OnItemClickListener.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.ui.listeners
2 |
3 | interface OnItemClickListener {
4 | fun onItemClick(position: Int)
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/ui/listeners/OnRootTouchedListener.java:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.ui.listeners;
2 |
3 | public interface OnRootTouchedListener {
4 | void makeBeforeChildren();
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/ui/util/CloseIconHolder.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.ui.util
2 |
3 | import androidx.annotation.DrawableRes
4 | import org.stepic.droid.R
5 |
6 | object CloseIconHolder {
7 | @DrawableRes
8 | fun getCloseIconDrawableRes(): Int = R.drawable.ic_close_dark
9 | }
10 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/util/AtomicBooleanExtension.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.util
2 |
3 | import java.util.concurrent.atomic.AtomicBoolean
4 |
5 | operator fun AtomicBoolean.not() = !this.get()
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/util/FileExtensions.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.util
2 |
3 | import java.io.File
4 |
5 | fun File.size(): Long =
6 | if (isDirectory) {
7 | listFiles()?.map(File::size)?.sum() ?: 0
8 | } else {
9 | length()
10 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/util/StepExtensions.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.util
2 |
3 | import org.stepik.android.model.Step
4 |
5 | fun Step?.getStepType(): String = this?.block?.name ?: AppConstants.TYPE_NULL
6 |
7 | fun Step.isCodeStepReady() =
8 | this.block?.options != null && this.status == Step.Status.READY
--------------------------------------------------------------------------------
/app/src/main/java/org/stepic/droid/util/resolvers/text/TextResult.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.util.resolvers.text
2 |
3 | data class TextResult(
4 | val text: CharSequence,
5 | val isNeedWebView: Boolean = false,
6 | val isNeedLaTeX: Boolean = false
7 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/cache/base/database/AnalyticDatabaseInfo.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.cache.base.database
2 |
3 | object AnalyticDatabaseInfo {
4 | const val DATABASE_NAME = "stepik_analytic.db"
5 | const val DATABASE_VERSION = 1
6 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/cache/personal_deadlines/dao/DeadlinesBannerDao.java:
--------------------------------------------------------------------------------
1 | package org.stepik.android.cache.personal_deadlines.dao;
2 |
3 | import org.stepic.droid.storage.dao.IDao;
4 |
5 | public interface DeadlinesBannerDao extends IDao { } // instead of qualifier
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/cache/personal_deadlines/model/DeadlineEntity.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.cache.personal_deadlines.model
2 |
3 | import java.util.Date
4 |
5 | class DeadlineEntity(
6 | val recordId: Long,
7 | val courseId: Long,
8 | val sectionId: Long,
9 | val deadline: Date
10 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/cache/video/dao/VideoDao.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.cache.video.dao
2 |
3 | import org.stepik.android.model.Video
4 |
5 | interface VideoDao {
6 | fun get(videoId: Long): Video?
7 | fun replace(video: Video)
8 | fun remove(videoId: Long)
9 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/cache/video/model/VideoEntity.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.cache.video.model
2 |
3 | class VideoEntity(
4 | val id: Long,
5 | val thumbnail: String?,
6 | val duration: Long
7 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/cache/video/model/VideoUrlEntity.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.cache.video.model
2 |
3 | class VideoUrlEntity(
4 | val videoId: Long,
5 | val url: String,
6 | val quality: String
7 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/cache/video_player/model/VideoTimestamp.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.cache.video_player.model
2 |
3 | class VideoTimestamp(
4 | val videoId: Long,
5 | val timestamp: Long
6 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/data/download/source/DownloadCacheDataSource.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.data.download.source
2 |
3 | import io.reactivex.Single
4 |
5 | interface DownloadCacheDataSource {
6 | fun getDownloadedCoursesIds(): Single>
7 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/data/feedback/source/FeedbackCacheDataSource.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.data.feedback.source
2 |
3 | import io.reactivex.Single
4 | import java.io.File
5 |
6 | interface FeedbackCacheDataSource {
7 | fun createSystemInfoData(fileName: String, fileContents: String): Single
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/data/lesson/source/LessonRemoteDataSource.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.data.lesson.source
2 |
3 | import io.reactivex.Single
4 | import org.stepik.android.model.Lesson
5 |
6 | interface LessonRemoteDataSource {
7 | fun getLessons(lessonIds: List): Single>
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/data/personal_deadlines/DeadlinesHelper.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.data.personal_deadlines
2 |
3 | fun getKindOfRecord(courseId: Long): String =
4 | "deadline_$courseId"
5 |
6 | fun getKindStartsWithOfRecord(): String =
7 | "deadline"
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/data/review/source/ReviewRemoteDataSource.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.data.review.source
2 |
3 | import org.stepik.android.domain.review.model.Review
4 | import io.reactivex.Single
5 |
6 | interface ReviewRemoteDataSource {
7 | fun createReview(sessionId: Long): Single
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/data/user/source/UserRemoteDataSource.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.data.user.source
2 |
3 | import io.reactivex.Single
4 | import org.stepik.android.model.user.User
5 |
6 | interface UserRemoteDataSource {
7 | fun getUsers(userIds: List): Single>
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/data/vote/source/VoteRemoteDataSource.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.data.vote.source
2 |
3 | import io.reactivex.Single
4 | import org.stepik.android.model.comments.Vote
5 |
6 | interface VoteRemoteDataSource {
7 | fun saveVote(vote: Vote): Single
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/auth/model/SocialAuthType.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.auth.model
2 |
3 | interface SocialAuthType {
4 | val identifier: String
5 | val isNeedUseAccessTokenInsteadOfCode: Boolean
6 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/base/DataSourceType.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.base
2 |
3 | enum class DataSourceType {
4 | REMOTE, CACHE
5 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/base/analytic/AnalyticSource.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.base.analytic
2 |
3 | enum class AnalyticSource {
4 | AMPLITUDE, YANDEX, FIREBASE, STEPIK_API
5 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/base/analytic/UserPropertySource.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.base.analytic
2 |
3 | enum class UserPropertySource {
4 | AMPLITUDE, YANDEX, FIREBASE
5 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/calendar/model/CalendarEventData.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.calendar.model
2 |
3 | import java.util.Date
4 |
5 | data class CalendarEventData(
6 | val title: String,
7 | val date: Date
8 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/code_preference/model/InitCodePreference.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.code_preference.model
2 |
3 | data class InitCodePreference(
4 | val sourceStepId: Long,
5 | val language: String,
6 | val codeTemplates: Map
7 | )
8 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/course_calendar/model/SectionDateEvent.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.course_calendar.model
2 |
3 | data class SectionDateEvent(
4 | val eventId: Long,
5 | val sectionId: Long
6 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/course_list/model/UserCoursesLoaded.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.course_list.model
2 |
3 | sealed class UserCoursesLoaded {
4 | object Empty : UserCoursesLoaded()
5 | class FirstCourse(val courseListItem: CourseListItem.Data) : UserCoursesLoaded()
6 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/course_news/exception/NotEnrolledException.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.course_news.exception
2 |
3 | class NotEnrolledException : Exception()
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/course_payments/exception/CourseAlreadyOwnedException.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.course_payments.exception
2 |
3 | class CourseAlreadyOwnedException(courseId: Long) : Exception("Course $courseId already owned")
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/course_payments/exception/CoursePurchaseVerificationException.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.course_payments.exception
2 |
3 | class CoursePurchaseVerificationException : Exception()
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/course_purchase/analytic/CoursePurchaseSource.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.course_purchase.analytic
2 |
3 | object CoursePurchaseSource {
4 | const val DEMO_LESSON_DIALOG_SOURCE = "demo_lesson_dialog"
5 | const val COURSE_SCREEN_SOURCE = "course_screen"
6 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/course_purchase/analytic/RestoreCoursePurchaseSource.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.course_purchase.analytic
2 |
3 | object RestoreCoursePurchaseSource {
4 | const val BUY_COURSE_DIALOG = "buy_course_dialog"
5 | const val COURSE_SCREEN = "course_screen"
6 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/course_purchase/error/BillingException.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.course_purchase.error
2 |
3 | data class BillingException(val responseCode: Int, val errorMessage: String) : Exception()
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/course_reviews/analytic/CourseReviewViewSource.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.course_reviews.analytic
2 |
3 | object CourseReviewViewSource {
4 | const val COURSE_REVIEWS_SOURCE = "course_reviews"
5 | const val USER_REVIEWS_SOURCE = "user_reviews"
6 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/discussion_proxy/model/DiscussionOrder.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.discussion_proxy.model
2 |
3 | enum class DiscussionOrder {
4 | LAST_DISCUSSION, MOST_LIKED, MOST_ACTIVE, RECENT_ACTIVITY
5 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/exam/model/ExamStatus.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.exam.model
2 |
3 | enum class ExamStatus {
4 | IS_CAN_START,
5 | CANNOT_START,
6 | IN_PROGRESS,
7 | FINISHED
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/feedback/model/SupportEmailData.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.feedback.model
2 |
3 | import java.io.File
4 |
5 | data class SupportEmailData(
6 | val mailTo: String,
7 | val subject: String,
8 | val body: File
9 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/latex/model/rule/ContentRule.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.latex.model.rule
2 |
3 | interface ContentRule {
4 | /**
5 | * Processes given [content] and return new one
6 | */
7 | fun process(content: String): String
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/network/exception/NetworkRequirementsNotSatisfiedException.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.network.exception
2 |
3 | import java.io.IOException
4 |
5 | class NetworkRequirementsNotSatisfiedException : IOException("Network requirements not satisfied")
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/personal_offers/model/PersonalOffers.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.personal_offers.model
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class PersonalOffers(
6 | @SerializedName("promo_stories")
7 | val promoStories: List?
8 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/profile/model/ProfileData.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.profile.model
2 |
3 | import org.stepik.android.model.user.User
4 |
5 | data class ProfileData(
6 | val user: User,
7 | val isCurrentUser: Boolean
8 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/profile_activities/model/ProfileActivitiesData.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.profile_activities.model
2 |
3 | data class ProfileActivitiesData(
4 | val pins: List,
5 | val streak: Int,
6 | val maxStreak: Int,
7 | val isSolvedToday: Boolean
8 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/review/model/Review.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.review.model
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class Review(
6 | @SerializedName("id")
7 | val id: Long,
8 | @SerializedName("session")
9 | val session: Long
10 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/review/repository/ReviewRepository.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.review.repository
2 |
3 | import org.stepik.android.domain.review.model.Review
4 | import io.reactivex.Single
5 |
6 | interface ReviewRepository {
7 | fun createReview(sessionId: Long): Single
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/step/model/StepNavigationDirection.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.step.model
2 |
3 | enum class StepNavigationDirection {
4 | PREV, NEXT
5 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/step_content_text/model/FontSize.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.step_content_text.model
2 |
3 | enum class FontSize(val size: Float) {
4 | SMALL(14f),
5 | MEDIUM(16f),
6 | LARGE(18f)
7 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/story/model/StoryReaction.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.story.model
2 |
3 | enum class StoryReaction {
4 | LIKE, DISLIKE
5 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/domain/vote/repository/VoteRepository.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.vote.repository
2 |
3 | import io.reactivex.Single
4 | import org.stepik.android.model.comments.Vote
5 |
6 | interface VoteRepository {
7 | fun saveVote(vote: Vote): Single
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/presentation/course_calendar/model/CalendarError.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.presentation.course_calendar.model
2 |
3 | enum class CalendarError {
4 | PERMISSION_ERROR,
5 | NO_CALENDARS_ERROR,
6 | GENERIC_ERROR
7 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/presentation/feedback/FeedbackView.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.presentation.feedback
2 |
3 | import org.stepik.android.domain.feedback.model.SupportEmailData
4 |
5 | interface FeedbackView {
6 | fun sendTextFeedback(supportEmailData: SupportEmailData)
7 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/presentation/filter/FilterQueryView.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.presentation.filter
2 |
3 | import org.stepik.android.domain.filter.model.CourseListFilterQuery
4 |
5 | interface FilterQueryView {
6 | fun showFilterDialog(filterQuery: CourseListFilterQuery)
7 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/presentation/font_size_settings/FontSizeView.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.presentation.font_size_settings
2 |
3 | import org.stepik.android.domain.step_content_text.model.FontSize
4 |
5 | interface FontSizeView {
6 | fun setCachedFontSize(fontSize: FontSize)
7 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/presentation/profile_detail/ProfileDetailView.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.presentation.profile_detail
2 |
3 | import org.stepik.android.domain.profile.model.ProfileData
4 |
5 | interface ProfileDetailView {
6 | fun setState(profileData: ProfileData?)
7 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/presentation/profile_id/ProfileIdView.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.presentation.profile_id
2 |
3 | import org.stepik.android.domain.profile.model.ProfileData
4 |
5 | interface ProfileIdView {
6 | fun setState(profileData: ProfileData?)
7 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/presentation/step_content_text/TextStepContentView.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.presentation.step_content_text
2 |
3 | import org.stepik.android.domain.step_content_text.model.FontSize
4 |
5 | interface TextStepContentView {
6 | fun setTextContentFontSize(fontSize: FontSize)
7 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/presentation/user_courses/model/UserCourseAction.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.presentation.user_courses.model
2 |
3 | enum class UserCourseAction {
4 | ADD_FAVORITE,
5 | REMOVE_FAVORITE,
6 | ADD_ARCHIVE,
7 | REMOVE_ARCHIVE
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/presentation/wishlist/model/WishlistAction.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.presentation.wishlist.model
2 |
3 | enum class WishlistAction {
4 | ADD,
5 | REMOVE
6 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/remote/auth/exception/FailRefreshException.java:
--------------------------------------------------------------------------------
1 | package org.stepik.android.remote.auth.exception;
2 |
3 | public class FailRefreshException extends RuntimeException {
4 |
5 | public FailRefreshException(String message){
6 | super(message);
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/remote/auth/model/TokenType.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.remote.auth.model
2 |
3 | enum class TokenType {
4 | SOCIAL, LOGIN_PASSWORD
5 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/remote/base/UserAgentProvider.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.remote.base
2 |
3 | interface UserAgentProvider {
4 | fun provideUserAgent(): String
5 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/remote/base/model/MetaResponse.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.remote.base.model
2 |
3 | import org.stepik.android.model.Meta
4 |
5 | interface MetaResponse {
6 | val meta: Meta
7 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/remote/rating/model/RatingRestoreResponse.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.remote.rating.model
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | class RatingRestoreResponse(
6 | @SerializedName("exp")
7 | val exp: Long
8 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/remote/vote/model/VoteRequest.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.remote.vote.model
2 |
3 | import com.google.gson.annotations.SerializedName
4 | import org.stepik.android.model.comments.Vote
5 |
6 | class VoteRequest(
7 | @SerializedName("vote")
8 | val vote: Vote
9 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/auth/model/AutoAuth.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.auth.model
2 |
3 | enum class AutoAuth {
4 | NONE, SMART_LOCK, REGISTRATION
5 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/course/model/CoursePromoCodeInfo.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.course.model
2 |
3 | data class CoursePromoCodeInfo(
4 | val name: String,
5 | val currencyCode: String,
6 | val price: String,
7 | val hasPromo: Boolean
8 | )
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/course/routing/CourseScreenBranchRoute.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.course.routing
2 |
3 | import org.stepik.android.view.routing.deeplink.BranchRoute
4 |
5 | class CourseScreenBranchRoute(
6 | val courseId: Long
7 | ) : BranchRoute()
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/fragment_pager/ActiveFragmentPagerAdapter.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.fragment_pager
2 |
3 | import androidx.fragment.app.Fragment
4 |
5 | interface ActiveFragmentPagerAdapter {
6 | val activeFragments: Map
7 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/base/Authorized.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.base
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class Authorized
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/catalog/FiltersBus.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.catalog
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class FiltersBus
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/course/CoursePresentationScope.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.course
2 |
3 | import javax.inject.Scope
4 |
5 | @Scope
6 | @Retention(AnnotationRetention.RUNTIME)
7 | annotation class CoursePresentationScope
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/course/CourseScope.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.course
2 |
3 | import javax.inject.Scope
4 |
5 | @Scope
6 | @Retention(AnnotationRetention.RUNTIME)
7 | annotation class CourseScope
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/course/EnrollmentCourseUpdates.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.course
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class EnrollmentCourseUpdates
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/course_list/UserCoursesLoadedBus.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.course_list
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class UserCoursesLoadedBus
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/course_list/UserCoursesOperationBus.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.course_list
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class UserCoursesOperationBus
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/course_list/UserCoursesUpdateBus.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.course_list
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class UserCoursesUpdateBus
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/course_list/WishlistOperationBus.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.course_list
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class WishlistOperationBus
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/course_list/collection/CourseListCollectionScope.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.course_list.collection
2 |
3 | import javax.inject.Scope
4 |
5 | @Scope
6 | @Retention(AnnotationRetention.RUNTIME)
7 | annotation class CourseListCollectionScope
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/course_list/query/CourseListQueryScope.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.course_list.query
2 |
3 | import javax.inject.Scope
4 |
5 | @Scope
6 | @Retention(AnnotationRetention.RUNTIME)
7 | annotation class CourseListQueryScope
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/course_list/search_result/CourseListSearchResultScope.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.course_list.search_result
2 |
3 | import javax.inject.Scope
4 |
5 | @Scope
6 | @Retention(AnnotationRetention.RUNTIME)
7 | annotation class CourseListSearchResultScope
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/course_list/user/CourseListUserScope.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.course_list.user
2 |
3 | import javax.inject.Scope
4 |
5 | @Scope
6 | @Retention(AnnotationRetention.RUNTIME)
7 | annotation class CourseListUserScope
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/course_list/visited/CourseListVisitedScope.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.course_list.visited
2 |
3 | import javax.inject.Scope
4 |
5 | @Scope
6 | @Retention(AnnotationRetention.RUNTIME)
7 | annotation class CourseListVisitedScope
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/course_list/wishlist/CourseListWishScope.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.course_list.wishlist
2 |
3 | annotation class CourseListWishScope()
4 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/download/DownloadsProgressStatusMapper.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.download
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class DownloadsProgressStatusMapper
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/fast_continue/FastContinueScope.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.fast_continue
2 |
3 | import javax.inject.Scope
4 |
5 | @Scope
6 | @Retention(AnnotationRetention.RUNTIME)
7 | annotation class FastContinueScope
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/profile/ProfileCoursesScope.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.profile
2 |
3 | import javax.inject.Scope
4 |
5 | @Scope
6 | @Retention(AnnotationRetention.RUNTIME)
7 | annotation class ProfileCoursesScope
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/profile/ProfileScope.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.profile
2 |
3 | import javax.inject.Scope
4 |
5 | @Scope
6 | @Retention(AnnotationRetention.RUNTIME)
7 | annotation class ProfileScope
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/profile/UserId.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.profile
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class UserId
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/qualifiers/AuthLock.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.qualifiers
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class AuthLock
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/qualifiers/DebugInterceptors.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.qualifiers
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class DebugInterceptors
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/solutions/SolutionsBus.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.solutions
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class SolutionsBus
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/solutions/SolutionsSentBus.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.solutions
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class SolutionsSentBus
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/step/StepDiscussionBus.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.step
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class StepDiscussionBus
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/step/StepScope.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.step
2 |
3 | import javax.inject.Scope
4 |
5 | @Scope
6 | @Retention(AnnotationRetention.RUNTIME)
7 | annotation class StepScope
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/step_quiz/CodePreferenceBus.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.step_quiz
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class CodePreferenceBus
7 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/step_quiz/StepQuizBus.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.step_quiz
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class StepQuizBus
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/user_reviews/LearningActionsScope.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.user_reviews
2 |
3 | import javax.inject.Scope
4 |
5 | @Scope
6 | @Retention(AnnotationRetention.RUNTIME)
7 | annotation class LearningActionsScope
8 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/user_reviews/UserCourseReviewOperationBus.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.user_reviews
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class UserCourseReviewOperationBus
7 |
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/injection/view_assignment/ViewAssignmentBus.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.view_assignment
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class ViewAssignmentBus
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/lesson/ui/interfaces/Playable.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.lesson.ui.interfaces
2 |
3 | interface Playable {
4 | /**
5 | * @return true if was handled
6 | */
7 | fun play(): Boolean
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/notification/NotificationPublisher.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.notification
2 |
3 | interface NotificationPublisher {
4 | fun onNeedShowNotificationWithId(id: String)
5 | }
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/routing/deeplink/BranchRoute.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.routing.deeplink
2 |
3 | abstract class BranchRoute
--------------------------------------------------------------------------------
/app/src/main/java/org/stepik/android/view/step/ui/interfaces/StepMenuNavigator.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.step.ui.interfaces
2 |
3 | interface StepMenuNavigator {
4 | fun showSubmissions()
5 | fun showShareDialog()
6 | }
--------------------------------------------------------------------------------
/app/src/main/res/anim-ldrtl/slide_out_to_end.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/fade_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/fade_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/no_transition.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/slide_in_from_bottom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/slide_in_from_end.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/slide_in_from_start.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/slide_out_to_bottom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/slide_out_to_end.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/slide_out_to_start.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/slide_out_to_top.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/color/adaptive_rating_item_text_color.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/color/color_control_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/color/color_login_edit_text.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/color/color_on_surface_alpha_12_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/general_placeholder.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/general_placeholder.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_action_done.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_action_done.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_action_more_vert.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_action_more_vert.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_action_search.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_action_search.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_animation.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_animation.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_close_dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_close_dark.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_close_white_24dp.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_close_white_24dp.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_close_white_with_padding.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_close_white_with_padding.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_content_copy_material_24.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_content_copy_material_24.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_easy_quiz.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_easy_quiz.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_edit.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_edit.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_empty.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_empty.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_empty_downloads.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_empty_downloads.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_empty_login.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_empty_login.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_empty_notifications.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_empty_notifications.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_empty_search.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_empty_search.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_forward_10_white_48dp.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_forward_10_white_48dp.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_hard_quiz.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_hard_quiz.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_home.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_home.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_lesson_info.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_lesson_info.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_linkedin.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_linkedin.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_mobile_notifications.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_mobile_notifications.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_more_without_padding.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_more_without_padding.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_nav_arrow_right.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_nav_arrow_right.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_no_wifi.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_no_wifi.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_notification_icon_1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_notification_icon_1.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_open_in_browser_material_24px.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_open_in_browser_material_24px.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_pause_circle_outline_white_72.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_pause_circle_outline_white_72.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_play_circle_outline_white_72.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_play_circle_outline_white_72.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_playbackrate_0_5_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_playbackrate_0_5_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_playbackrate_0_75_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_playbackrate_0_75_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_playbackrate_1_25_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_playbackrate_1_25_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_playbackrate_1_5_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_playbackrate_1_5_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_playbackrate_1_75_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_playbackrate_1_75_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_playbackrate_1_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_playbackrate_1_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_playbackrate_2_0_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_playbackrate_2_0_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_player_next.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_player_next.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_player_notification.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_player_notification.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_profile.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_profile.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_profile_edit_save.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_profile_edit_save.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_profile_edit_save_disabled.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_profile_edit_save_disabled.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_progress_star_green_rastr.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_progress_star_green_rastr.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_progress_star_white_rastr.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_progress_star_white_rastr.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_rating.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_rating.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_replay_10_white_48dp.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_replay_10_white_48dp.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_search_menu.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_search_menu.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_settings_dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_settings_dark.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_share_dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_share_dark.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_share_material_24px.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_share_material_24px.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_shortcut_find_courses.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_shortcut_find_courses.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_shortcut_profile.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_shortcut_profile.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_star_rate_gray.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_star_rate_gray.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_star_rate_yellow.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_star_rate_yellow.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_stepik_logotype_square_black.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_stepik_logotype_square_black.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_video_pin.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/ic_video_pin.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/stepic_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-hdpi/stepic_logo.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/general_placeholder.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/general_placeholder.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_action_done.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_action_done.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_action_more_vert.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_action_more_vert.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_action_search.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_action_search.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_animation.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_animation.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_close_dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_close_dark.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_close_white_24dp.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_close_white_24dp.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_close_white_with_padding.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_close_white_with_padding.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_content_copy_material_24.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_content_copy_material_24.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_easy_quiz.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_easy_quiz.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_edit.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_edit.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_empty.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_empty.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_empty_downloads.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_empty_downloads.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_empty_login.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_empty_login.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_empty_notifications.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_empty_notifications.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_empty_search.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_empty_search.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_forward_10_white_48dp.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_forward_10_white_48dp.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_hard_quiz.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_hard_quiz.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_home.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_home.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_lesson_info.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_lesson_info.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_linkedin.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_linkedin.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_mobile_notifications.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_mobile_notifications.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_more_without_padding.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_more_without_padding.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_nav_arrow_right.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_nav_arrow_right.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_no_wifi.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_no_wifi.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_notification_icon_1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_notification_icon_1.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_open_in_browser_material_24px.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_open_in_browser_material_24px.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_pause_circle_outline_white_72.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_pause_circle_outline_white_72.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_play_circle_outline_white_72.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_play_circle_outline_white_72.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_playbackrate_0_5_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_playbackrate_0_5_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_playbackrate_0_75_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_playbackrate_0_75_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_playbackrate_1_25_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_playbackrate_1_25_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_playbackrate_1_5_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_playbackrate_1_5_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_playbackrate_1_75_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_playbackrate_1_75_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_playbackrate_1_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_playbackrate_1_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_playbackrate_2_0_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_playbackrate_2_0_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_player_next.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_player_next.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_player_notification.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_player_notification.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_profile.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_profile.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_profile_edit_save.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_profile_edit_save.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_profile_edit_save_disabled.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_profile_edit_save_disabled.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_progress_star_green_rastr.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_progress_star_green_rastr.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_progress_star_white_rastr.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_progress_star_white_rastr.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_rating.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_rating.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_replay_10_white_48dp.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_replay_10_white_48dp.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_search_menu.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_search_menu.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_settings_dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_settings_dark.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_share_dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_share_dark.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_share_material_24px.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_share_material_24px.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_shortcut_find_courses.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_shortcut_find_courses.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_shortcut_profile.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_shortcut_profile.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_star_rate_gray.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_star_rate_gray.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_star_rate_yellow.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_star_rate_yellow.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_stepik_logotype_square_black.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_stepik_logotype_square_black.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_video_pin.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/ic_video_pin.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/stepic_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-mdpi/stepic_logo.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-hdpi/general_placeholder.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-night-hdpi/general_placeholder.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-mdpi/general_placeholder.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-night-mdpi/general_placeholder.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-xhdpi/general_placeholder.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-night-xhdpi/general_placeholder.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-xxhdpi/general_placeholder.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-night-xxhdpi/general_placeholder.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-xxxhdpi/general_placeholder.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-night-xxxhdpi/general_placeholder.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night/bg_user_course_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/general_placeholder.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/general_placeholder.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_action_done.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_action_done.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_action_more_vert.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_action_more_vert.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_action_search.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_action_search.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_animation.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_animation.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_close_dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_close_dark.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_close_white_24dp.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_close_white_24dp.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_close_white_with_padding.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_close_white_with_padding.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_content_copy_material_24.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_content_copy_material_24.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_easy_quiz.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_easy_quiz.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_edit.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_edit.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_empty.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_empty.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_empty_downloads.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_empty_downloads.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_empty_login.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_empty_login.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_empty_notifications.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_empty_notifications.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_empty_search.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_empty_search.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_forward_10_white_48dp.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_forward_10_white_48dp.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_hard_quiz.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_hard_quiz.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_home.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_home.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_lesson_info.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_lesson_info.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_linkedin.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_linkedin.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_mobile_notifications.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_mobile_notifications.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_more_without_padding.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_more_without_padding.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_nav_arrow_right.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_nav_arrow_right.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_no_wifi.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_no_wifi.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_notification_icon_1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_notification_icon_1.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_open_in_browser_material_24px.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_open_in_browser_material_24px.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_pause_circle_outline_white_72.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_pause_circle_outline_white_72.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_play_circle_outline_white_72.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_play_circle_outline_white_72.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_playbackrate_0_5_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_playbackrate_0_5_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_playbackrate_0_75_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_playbackrate_0_75_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_playbackrate_1_25_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_playbackrate_1_25_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_playbackrate_1_5_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_playbackrate_1_5_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_playbackrate_1_75_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_playbackrate_1_75_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_playbackrate_1_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_playbackrate_1_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_playbackrate_2_0_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_playbackrate_2_0_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_player_next.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_player_next.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_player_notification.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_player_notification.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_profile.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_profile.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_profile_edit_save.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_profile_edit_save.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_profile_edit_save_disabled.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_profile_edit_save_disabled.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_progress_star_green_rastr.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_progress_star_green_rastr.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_progress_star_white_rastr.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_progress_star_white_rastr.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_rating.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_rating.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_replay_10_white_48dp.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_replay_10_white_48dp.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_search_menu.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_search_menu.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_settings_dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_settings_dark.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_share_dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_share_dark.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_share_material_24px.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_share_material_24px.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_shortcut_find_courses.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_shortcut_find_courses.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_shortcut_profile.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_shortcut_profile.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_star_rate_gray.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_star_rate_gray.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_star_rate_yellow.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_star_rate_yellow.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_stepik_logotype_square_black.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_stepik_logotype_square_black.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_video_pin.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/ic_video_pin.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/stepic_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xhdpi/stepic_logo.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/general_placeholder.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/general_placeholder.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_action_done.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_action_done.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_action_more_vert.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_action_more_vert.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_action_search.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_action_search.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_animation.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_animation.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_close_dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_close_dark.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_close_white_24dp.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_close_white_24dp.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_close_white_with_padding.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_close_white_with_padding.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_content_copy_material_24.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_content_copy_material_24.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_easy_quiz.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_easy_quiz.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_edit.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_edit.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_empty.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_empty.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_empty_downloads.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_empty_downloads.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_empty_login.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_empty_login.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_empty_notifications.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_empty_notifications.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_empty_search.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_empty_search.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_forward_10_white_48dp.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_forward_10_white_48dp.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_hard_quiz.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_hard_quiz.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_home.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_home.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_lesson_info.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_lesson_info.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_linkedin.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_linkedin.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_mobile_notifications.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_mobile_notifications.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_more_without_padding.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_more_without_padding.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_nav_arrow_right.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_nav_arrow_right.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_no_wifi.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_no_wifi.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_notification_icon_1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_notification_icon_1.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_open_in_browser_material_24px.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_open_in_browser_material_24px.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_pause_circle_outline_white_72.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_pause_circle_outline_white_72.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_play_circle_outline_white_72.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_play_circle_outline_white_72.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_playbackrate_0_5_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_playbackrate_0_5_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_playbackrate_0_75_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_playbackrate_0_75_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_playbackrate_1_25_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_playbackrate_1_25_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_playbackrate_1_5_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_playbackrate_1_5_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_playbackrate_1_75_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_playbackrate_1_75_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_playbackrate_1_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_playbackrate_1_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_playbackrate_2_0_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_playbackrate_2_0_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_player_next.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_player_next.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_player_notification.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_player_notification.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_profile.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_profile.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_profile_edit_save.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_profile_edit_save.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_profile_edit_save_disabled.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_profile_edit_save_disabled.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_progress_star_green_rastr.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_progress_star_green_rastr.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_progress_star_white_rastr.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_progress_star_white_rastr.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_rating.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_rating.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_replay_10_white_48dp.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_replay_10_white_48dp.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_search_menu.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_search_menu.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_settings_dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_settings_dark.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_share_dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_share_dark.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_share_material_24px.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_share_material_24px.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_shortcut_find_courses.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_shortcut_find_courses.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_shortcut_profile.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_shortcut_profile.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_star_rate_gray.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_star_rate_gray.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_star_rate_yellow.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_star_rate_yellow.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_stepik_logotype_square_black.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_stepik_logotype_square_black.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_video_pin.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/ic_video_pin.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/stepic_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxhdpi/stepic_logo.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/general_placeholder.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/general_placeholder.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_action_done.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_action_done.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_action_more_vert.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_action_more_vert.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_action_search.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_action_search.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_animation.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_animation.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_close_dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_close_dark.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_close_white_24dp.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_close_white_24dp.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_close_white_with_padding.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_close_white_with_padding.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_content_copy_material_24.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_content_copy_material_24.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_easy_quiz.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_easy_quiz.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_edit.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_edit.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_empty.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_empty.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_empty_downloads.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_empty_downloads.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_empty_login.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_empty_login.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_empty_notifications.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_empty_notifications.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_empty_search.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_empty_search.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_forward_10_white_48dp.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_forward_10_white_48dp.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_hard_quiz.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_hard_quiz.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_home.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_home.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_lesson_info.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_lesson_info.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_linkedin.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_linkedin.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_mobile_notifications.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_mobile_notifications.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_more_without_padding.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_more_without_padding.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_nav_arrow_right.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_nav_arrow_right.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_no_wifi.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_no_wifi.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_notification_icon_1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_notification_icon_1.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_open_in_browser_material_24px.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_open_in_browser_material_24px.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_pause_circle_outline_white_72.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_pause_circle_outline_white_72.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_play_circle_outline_white_72.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_play_circle_outline_white_72.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_playbackrate_0_5_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_playbackrate_0_5_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_playbackrate_0_75_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_playbackrate_0_75_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_playbackrate_1_25_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_playbackrate_1_25_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_playbackrate_1_5_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_playbackrate_1_5_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_playbackrate_1_75_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_playbackrate_1_75_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_playbackrate_1_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_playbackrate_1_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_playbackrate_2_0_light.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_playbackrate_2_0_light.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_player_next.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_player_next.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_player_notification.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_player_notification.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_profile.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_profile.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_profile_edit_save.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_profile_edit_save.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_profile_edit_save_disabled.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_profile_edit_save_disabled.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_progress_star_green_rastr.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_progress_star_green_rastr.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_progress_star_white_rastr.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_progress_star_white_rastr.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_rating.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_rating.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_replay_10_white_48dp.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_replay_10_white_48dp.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_search_menu.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_search_menu.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_settings_dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_settings_dark.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_share_dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_share_dark.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_share_material_24px.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_share_material_24px.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_shortcut_find_courses.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_shortcut_find_courses.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_shortcut_profile.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_shortcut_profile.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_star_rate_gray.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_star_rate_gray.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_star_rate_yellow.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_star_rate_yellow.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_stepik_logotype_square_black.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_stepik_logotype_square_black.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_video_pin.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/ic_video_pin.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/stepic_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable-xxxhdpi/stepic_logo.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_announcement_composing.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_announcement_on_event.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_announcement_scheduled.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_announcement_sent.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_comment_tag_course_moderator.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_comment_tag_course_team.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_comment_tag_pinned.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_divider_vertical_course_search.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_peer_review_step_active.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_peer_review_step_error.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_peer_review_step_link.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_peer_review_step_passed.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_shape_rounded.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_shape_rounded_16dp.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_shape_square.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/continue_learning_cover.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable/continue_learning_cover.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable/dialog_background.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable/dialog_background.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_course_content_date_dot.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_notification_circle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_seek_background.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable/ic_seek_background.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_seek_progress.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable/ic_seek_progress.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_seek_secondary.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable/ic_seek_secondary.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable/video_placeholder.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/drawable/video_placeholder.webp
--------------------------------------------------------------------------------
/app/src/main/res/font/pt_mono.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/font/pt_mono.ttf
--------------------------------------------------------------------------------
/app/src/main/res/font/roboto_bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/font/roboto_bold.ttf
--------------------------------------------------------------------------------
/app/src/main/res/font/roboto_bolditalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/font/roboto_bolditalic.ttf
--------------------------------------------------------------------------------
/app/src/main/res/font/roboto_italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/font/roboto_italic.ttf
--------------------------------------------------------------------------------
/app/src/main/res/font/roboto_light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/font/roboto_light.ttf
--------------------------------------------------------------------------------
/app/src/main/res/font/roboto_medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/font/roboto_medium.ttf
--------------------------------------------------------------------------------
/app/src/main/res/font/roboto_regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/font/roboto_regular.ttf
--------------------------------------------------------------------------------
/app/src/main/res/font/stories.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/font/stories_bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/font/stories_bold.ttf
--------------------------------------------------------------------------------
/app/src/main/res/font/stories_medium.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/font/stories_medium.otf
--------------------------------------------------------------------------------
/app/src/main/res/layout/view_divider_vertical.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/course_content_control_bar_schedule_menu_no_personal.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/submission_item_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/video_more_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/raw/default_sound.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/main/res/raw/default_sound.wav
--------------------------------------------------------------------------------
/app/src/main/res/values-h520dp-port/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 200dp
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values-h640dp-port/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 250dp
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values-hdpi/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values-night/bools.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | true
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values-sw360dp-land/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 125dp
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values-sw430dp-land/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 187dp
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values-sw520dp-land/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 250dp
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values-sw600dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 112dp
4 | 140dp
5 | 80dp
6 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v23/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v24/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -12dp
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v26/notification_activity_bool.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | false
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values-w368dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 96dp
4 | 96dp
5 | 96dp
6 |
--------------------------------------------------------------------------------
/app/src/main/res/values-w368dp/integers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 2
4 |
5 | 4
6 |
--------------------------------------------------------------------------------
/app/src/main/res/values-w448dp/integers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 5
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values-xhdpi/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values-xxhdpi/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values-xxxhdpi/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values/bools.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | false
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values/loading_view_dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | @dimen/corner_radius
4 | 120dp
5 |
--------------------------------------------------------------------------------
/app/src/main/res/values/notification_activity_bool.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | true
4 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/provider_paths.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/searchable.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/stageDebuggable/assets/configs/config_dev.json:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/stageDebuggable/assets/configs/config_dev.json
--------------------------------------------------------------------------------
/app/src/stageDebuggable/assets/configs/config_production.json:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/stageDebuggable/assets/configs/config_production.json
--------------------------------------------------------------------------------
/app/src/stageDebuggable/assets/configs/config_release.json:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/app/src/stageDebuggable/assets/configs/config_release.json
--------------------------------------------------------------------------------
/app/src/stageDebuggable/java/org/stepik/android/domain/debug/model/DebugSettings.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.debug.model
2 |
3 | data class DebugSettings(
4 | val fcmToken: String,
5 | val currentEndpointConfig: EndpointConfig,
6 | val endpointConfigSelection: Int
7 | )
8 |
--------------------------------------------------------------------------------
/app/src/stageDebuggable/java/org/stepik/android/domain/debug/model/EndpointConfig.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.debug.model
2 |
3 | enum class EndpointConfig {
4 | DEV,
5 | PRODUCTION,
6 | RELEASE
7 | }
--------------------------------------------------------------------------------
/app/src/test/java/org/stepic/droid/testUtils/generators/ListHelper.kt:
--------------------------------------------------------------------------------
1 | package org.stepic.droid.testUtils.generators
2 |
3 | object ListHelper {
4 | fun listOf(vararg a: T): List = a.toList()
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker:
--------------------------------------------------------------------------------
1 | mock-maker-inline
--------------------------------------------------------------------------------
/billing/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/billing/consumer-rules.pro:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/billing/consumer-rules.pro
--------------------------------------------------------------------------------
/billing/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
--------------------------------------------------------------------------------
/billing/src/main/java/org/stepik/android/domain/billing/exception/NoPurchasesToRestoreException.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.domain.billing.exception
2 |
3 | class NoPurchasesToRestoreException : IllegalStateException("There is no purchases that can be restored")
--------------------------------------------------------------------------------
/billing/src/main/java/org/stepik/android/view/injection/billing/BillingSingleton.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.billing
2 |
3 | import javax.inject.Scope
4 |
5 | @Scope
6 | @Retention(AnnotationRetention.RUNTIME)
7 | annotation class BillingSingleton
8 |
--------------------------------------------------------------------------------
/billing/src/main/java/org/stepik/android/view/injection/billing/PublicLicenseKey.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.view.injection.billing
2 |
3 | import javax.inject.Qualifier
4 |
5 | @Qualifier
6 | annotation class PublicLicenseKey
--------------------------------------------------------------------------------
/billing/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | billing
3 |
4 |
--------------------------------------------------------------------------------
/buildsystem/cert/debug.keystore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/buildsystem/cert/debug.keystore
--------------------------------------------------------------------------------
/buildsystem/cert/key_store.jks:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/buildsystem/cert/key_store.jks
--------------------------------------------------------------------------------
/buildsystem/secret.gradle:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/buildsystem/secret.gradle
--------------------------------------------------------------------------------
/codecov.yml:
--------------------------------------------------------------------------------
1 | comment: false
2 |
--------------------------------------------------------------------------------
/fastlane/Appfile:
--------------------------------------------------------------------------------
1 | json_key_file "/Users/kirillmakarov/Dropbox/makarovAndroid/stepik/stepik-android/googleplayprovider.json" # Path to the json secret file - Follow https://github.com/fastlane/supply#setup to get one
2 | package_name "org.stepic.droid" # e.g. com.krausefx.app
3 |
--------------------------------------------------------------------------------
/fastlane/Fastfile:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/fastlane/Fastfile
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/1142.txt:
--------------------------------------------------------------------------------
1 | Zooming of images in steps is available now! Just click on image and it will open in full screen
2 |
3 | Yours,
4 | Stepik.org Team.
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/1143.txt:
--------------------------------------------------------------------------------
1 | Zooming of images in steps is available now! Just click on image and it will open in full screen
2 |
3 | Yours,
4 | Stepik.org Team.
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/1145.txt:
--------------------------------------------------------------------------------
1 | Zooming of images in steps is available now! Just click on image and it will open in full screen
2 |
3 | Yours,
4 | Stepik.org Team.
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/1148.txt:
--------------------------------------------------------------------------------
1 | Zooming of images in steps is available now! Just click on image and it will open in full screen
2 |
3 | Yours,
4 | Stepik.org Team.
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/1149.txt:
--------------------------------------------------------------------------------
1 | Zooming of images in steps is available now! Just click on image and it will open in full screen
2 |
3 | Yours,
4 | Stepik.org Team.
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/short_description.txt:
--------------------------------------------------------------------------------
1 | Learn from experts, together with thousands of other students.
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/title.txt:
--------------------------------------------------------------------------------
1 | Stepik.org: Free Courses
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/video.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/fastlane/metadata/android/en-US/video.txt
--------------------------------------------------------------------------------
/fastlane/metadata/android/ru-RU/images/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/fastlane/metadata/android/ru-RU/images/icon.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/ru-RU/short_description.txt:
--------------------------------------------------------------------------------
1 | Получайте полезные знания от профессионалов вместе с тысячами других студентов.
--------------------------------------------------------------------------------
/fastlane/metadata/android/ru-RU/title.txt:
--------------------------------------------------------------------------------
1 | Stepik.org: бесплатные курсы
--------------------------------------------------------------------------------
/fastlane/metadata/android/ru-RU/video.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/fastlane/metadata/android/ru-RU/video.txt
--------------------------------------------------------------------------------
/googleplayprovider.json:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/googleplayprovider.json
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Thu Oct 22 22:54:12 MSK 2020
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip
7 |
--------------------------------------------------------------------------------
/model/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/model/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/model/src/main/java/org/stepik/android/model/Enrollment.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.model
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | class Enrollment(
6 | @SerializedName("course")
7 | val course: Long
8 | )
9 |
--------------------------------------------------------------------------------
/model/src/main/java/org/stepik/android/model/Progressable.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.model
2 |
3 | interface Progressable {
4 | val progress: String?
5 | }
--------------------------------------------------------------------------------
/model/src/main/java/org/stepik/android/model/ReviewStrategyType.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.model
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | enum class ReviewStrategyType {
6 | @SerializedName("peer")
7 | PEER,
8 | @SerializedName("instructor")
9 | INSTRUCTOR
10 | }
--------------------------------------------------------------------------------
/model/src/main/java/org/stepik/android/model/adaptive/Reaction.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.model.adaptive
2 |
3 | enum class Reaction(val value: Int) {
4 | SOLVED(2), INTERESTING(1), MAYBE_LATER(0), NEVER_AGAIN(-1)
5 | }
--------------------------------------------------------------------------------
/model/src/main/java/org/stepik/android/model/adaptive/Recommendation.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.model.adaptive
2 |
3 | class Recommendation(
4 | val id: Long,
5 | val lesson: Long,
6 | val reasons: List?
7 | )
--------------------------------------------------------------------------------
/model/src/main/java/org/stepik/android/model/feedback/Feedback.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.model.feedback
2 |
3 | import java.io.Serializable
4 |
5 | interface Feedback : Serializable
--------------------------------------------------------------------------------
/model/src/main/java/org/stepik/android/model/feedback/StringFeedback.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.model.feedback
2 |
3 | import java.io.Serializable
4 |
5 | data class StringFeedback(
6 | val stringFeedback: String? = null
7 | ) : Feedback, Serializable
--------------------------------------------------------------------------------
/model/src/main/java/org/stepik/android/model/user/ProfileWrapper.kt:
--------------------------------------------------------------------------------
1 | package org.stepik.android.model.user
2 |
3 | data class ProfileWrapper(
4 | val profile: Profile,
5 | val primaryEmailAddress: EmailAddress? = null
6 | )
--------------------------------------------------------------------------------
/screenshots/01.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/screenshots/01.webp
--------------------------------------------------------------------------------
/screenshots/02.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/screenshots/02.webp
--------------------------------------------------------------------------------
/screenshots/03.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/StepicOrg/stepik-android/7a6b02a62299d4a1fc08ff6d13bce58d7abf07b4/screenshots/03.webp
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app', ':androidsvg', ':model', ':billing'
2 |
--------------------------------------------------------------------------------